Permalänk
Inaktiv

Kompliera kärna debian?

Hej!
Har fått en skoluppgifter där man ska kompliera en kärna. Jag kopierar här hur långt jag kommit och vad jag gjort, men jag får inte till det sista.

Först ska man ladda ner kernel på kernel.org, jag väljer kernel 3.11.2 som är den senaste som är stabil. När jag väl laddat ner kernel gör jag följande.
Startar terminalen
Går till mappen där kernel är nerladdad i detta fall blir kommandot cd Hämtningar
Jag packar upp kernel med kommandot tar -xvf linux-3.11.2.tar.xz
Jag navigerar till mappen där kernel är upppackad i detta fall cd linux-3.11.2
Jag använder menuconfig för att kunna klicka i och ändra i kärnan via en menu som gör det lättare , till detta behöver du ncurses och det laddar du ner med kommandot sudo apt-get install libncurses5-dev och skriver i ditt lösenord.
Du behöver även paketen build-essential och fakeroot samt kernel-package. Du installerar dem med kommandot sudo apt-get install buildessential fakeroot kernel-package
Nu är det dax och skriva make menuconfig där du får upp en menu där du kan klicka i sånt du behöver och klicka ur sånt du inte behöver
Jag låter det vara som det är eftersom jag uppdaterar kernel från en äldre version så hårdvarustödet ökar genom att uppdatera kernel så jag lägger varken till eller tar bort någonting. Viktigt kan vara att man bläddrar med piltangenterna och går in i undermenyer med enter, man markerar dock med mellanslag och man vill lägga till eller ta bort den sak
Jag trycker på tab tills save är markerat och sedan enter, då kommer det fram en rutan där du kan välja vad du vill att konfigurationen ska sparas som. Använder tab tills ”save” är markerat igen och trycker enter
Då kommer det upp en ruta där det står att filen sparats med ditt namn du angav , du behöver bara trycka enter, sen kommer du tillbaka till menyn där du kan välja komponterer, använd tab tills exit är markerat och tryck enter
Nu ska du bygga .deb filerna så vi lätta kan avinstallera om det blir något fel det gör du med kommandona make-kpkg clean och fakeroot make-kpkg --initrd --append-to-version=-ny <- här börjar problemet. Överallt på internet jag läser står det att den .debfilen av kärnan sen ska finnas i usr/src men jag hittar ingen som innehåller ordet "ny" som jag valde för att kunna identifera min nya kärna och jag hittar inte heller någon .deb fil.

Någon som ser vad jag gjort för fel?

Permalänk
Medlem

Ska du inte köra make innan du gör paketet? Det kommer antagligen ta ett tag.
Sen kommer du inte få inställningar, moduler och annat från din gamla kärna då du har laddat ner en ren kärna.

Permalänk
Entusiast

En liten guide att använda er av, om det tillåts.

  1. Ladda ner och packa upp kärnans källkod. Ett lämpligt ställe att packa upp källkoden för Linux-kärnan är /usr/src.
    Tex: /usr/src/linux-3.11.1 (Ändra namnet efter behag/aktuell version)
    Ställ er i den aktuella mappen:

    cd /usr/src/linux-3.11.1

  2. Under tiden: Använd kommandona lspci, lscpu, lsusb, lcpcmcia och notera vad för hårdvara som finns i datorn.

    lscpu > HW-lista.txt lspci >> HW-lista.txt lspcmcia >> HW-lista.txt lsusb >> HW-lista.txt

  3. Konfigurera kärnan via en valfri metod: config, menuconfig eller xconfig. (Den sistnämnda använder X-miljön och ger ett rätt trevligt GUI att klicka runt i.)

    make clean make mrproper make xconfig

    (Ersätt "xconfig" men er favorit-metod: config (Tidsödande, högst enkel), menuconfig, (trevlig text-baserad meny att bläddra runt i), xconfig (Om man redan har X-miljön uppstartad, varför inte använda ett GUI?)
    de två första raderna ser till att städa upp och rätar upp saker o ting. Det är i synnerhet bra om man har konfigurerat och kompilerat en massa innan. Gamkla saker tenderar att störa ut nya kompileringar. I en del fall kan även oönskade delar följa med in i kompileringen och ställa till med mystiska saker när man väl initierar/exekverar kärnan.
    Det är också bra att städa upp efter gamla misslyckade kompileringar. Det händer ibland att gammal konfiguration och/eller byggnationer orsakar kompileringfel.

  4. Se till att ni väljer rätt CPU-arkitektur.
    Använd listans som skapade tidigare (HW-Lista.txt) och fundera på hur ni vill ha systemet:
    En homogen kärna med allt inkompilerat. Välj då "Built in (*)" till de moduler ni vill använda.
    En modulär kärna som kan ladda in delar när de behövs. Välj då "Module (M)" till de moduler ni vill använda.
    Tips: Om ni inte vet vad något är, eller vet vad det gör, lämna det med sin standard-inställning.
    Filosofi: Om man inte vet vad det är, så behöver man inte ändra på det.

  5. När allt är konfigurerat och klart: Dubbelkolla.

  6. När allt är dubbelkollat och klart: Trippelkolla.

  7. När allt är trippelkollat, känns det fortfarande som om ni glömt något?
    Det är lättare att kolla igen, än att kompilera och komma på i efterhand vad som saknas.

  8. När allt är quadrupel-kollat ... Naaah... Skojar bara.

  9. Spara och se till att filen ".config" skapas. Ta en backup av den och lägg den någonstans utanför källkods-mappen. T.ex i er egen hem-mapp. Döp den gärna till något mer förklarande så att ni inte sitter och funderar på vad för en underlig fil det där är en period senare. T.ex: "My_First_Linux_Kernel_conf_-_Yey.config"

  10. Dags för kompilering. En "make" rätt och slätt skall räcka långt.

    make

    Ta en kopp kaffe och gör något annat roligt under tiden. Detta kommer att ta en duktig stund.

  11. Tillbaks redan? För tidigt. Den är inte klar ännu. Ta en kopp till... nej... ta hela kannan.

  12. Tillbaks igen? Värst vad otåliga ni är då. Ta en kanna till... va? ...slut?... koka mer kaffe då! ... Chas! ... Ut med er.
    Låt datorn jobba!

  13. Nu kan ni komma tillbaks. Och håll tummarna: Hittar ni några felmeddelanden?
    Om "ja":

    • Bläddra uppåt och försök att lokalisera det allra första felmeddelandet. I regel är det första felet som orsakar alla efterkommande fel. Det är lite av en kedje-effekt.
      Fixa felet, eller välj bort den del som strular i kärnans konfiguration.
      När felet är fixat, kör följande igen:

      make

      Systemet är smart nog att behålla de delar som lyckades kompileringen, och borde snart, efter lite checkar, återkomam till den punkt som den blev abruten vid.
      Ibland händer det att kompileringen fortsätter att strula, fastän man "fixade felet".
      Det är här "clean" och "mrproper" kommer in i bilden.
      Då "clean" kommer att ta bort .config, så är det bra att ni flyttar undan den först. Annars blir ni tvungna att göra om konfigurationen.

      mv .config /tmp/kernel.config make clean make mrproper mv /tmp/kernel.config .config

      Gå tilbaks till steg 10.

    Om "nej":

    • Trevligt. Grattis. Er första fullt kompilerade Linux-kärna.
      Det är ett steg till i proceduren:

      make modules

      Japp. Kompilering och/eller preparering av modulerna. Det är bra att köra detta även om man inte har konfigurerat några moduler.

  14. Då är det dags för ytterligare ett val: Hur vill ni använda kärnan?
    Direkt i det aktuella systemet eller manuellt kopiera image-filen till annan plats?
    För direkt användning:

    • Då är det bara att installera.
      Det finns redan ett steg i make-proceduren som automatiserar även den här biten. Bra för den late. Detta steg måste köras som Super User / root.
      Logga in som super user/root eller använd sudo.
      Montera boot-partitionen om så behövs. (Vissa system/distributioner har en separat boot-partition som inte monteras "per default". Kolla upp hur er distribution/installation fungerar)
      Kör sedan följande:

      make modules_install make install

      make kommer nu att leta upp systemets boot-partionen/boot-mappen, och kopiera in den aktuella kärnan, konfigurationen och symboltabellen. Oftast landar dessa filer under /boot. Kan variera beroende på distrubution.
      Eventuella fel i detta steg beror oftast på rättigheter och/eller avsaknade boot-partitioner.

    För manuell kopiering till annan maskin eller plats:

    • När allt är bakat och klart, är det dags att kopera den nybakade kärnan och de tillhörande modulerna till ett lämpligt ställe för nerpackning: (Anpassa "MLK_P" -variablen efter behag)

      MLK_P="${HOME}/MyLinuxKernel" MLK_V="$(./scripts/extract-ikconfig arch/x86/boot/bzImage | grep -e "3\.[0-9]*\.[0-9]*" | cut -d' ' -f3)" mkdir -p "${MLK_P}/boot" cp arch/x86/boot/bzImage ${MLK_P}/boot/vmlinuz-${MLK_V} make INSTALL_MOD_PATH=${MLK_P}/ modules_install cd $MLK_P tar -cjf ~/MyLinuxKernel-${MLK_V} *

      Kopiera gärna in innehållet ovan i en script-fil, spara den och gör den körbar. Då slipper ni skriva in kommandona varje gång ni genererar en ny kärna.
      Döp scriptet till något vettigt. T.ex: "Generate_Package"
      Lägg också till "#/bin/bash" (Utan " ) som allra första rad.

      Ni har nu en fil i er hem-mapp: MyLinuxKernel-3.11.1.tar.gz
      Den innehåller kärnan + moduler för upp-packning vartän ni behöver det. Packa sedan upp innehållet direkt till root. Filstrukturen är skapad för att passa i root-systemet. Annars kan ni även packa upp och flytta respektive mapp till de rätta platserna.

  15. Dags att uppdatera boot-menyn. Äldre system använder den något åldersdigna lilo, medans de flesta modernare distributioner använder grub. Kolla upp vilken er distrbution använder. Läs också på vilken metod som är lämpligast när man skall lägga till ya alterantiv till boot-menyn.
    Ubuntu t.ex föredrar att man redigerar filerna under mappen /etc/grub.d/, och generarar en ny bootmeny med hjälp av kommandot "grub-mkconfig".
    Redigera meny-konfigurationen, och lägg till den nya kärnan samt tillhörande extra-rader. Lär manualen till boot-hanteraren, eller använd de redan existerande raderna som exempel.
    Ett exempel på hur en "entry" i grub-cfg kan se ut:

    title Linux 3.11.1 root (hd0,0) kernel /boot/vmlinuz-3.11.1 root=/dev/sda1

  16. Dubbelkolla att alla filer är på plats.
    Starta om datorn och hoppas på det bästa.
    Högst troligt kommer ni att stöta på patrull, och något fel kommer att dyka upp. Det är ingen på den här planeten som lyckats helt felfritt med sin allra första Linux-konfiguration/kompilering. Om man trots allt lyckas allra första gången, och allt i systemet verkar fungera, så springer ni ner och köper en lastpall full med trisslotter omedelbums. Ni lär ha högsta vinst på samtliga.

Dold text
Visa signatur

Bästa programmen till Linux - v2.0
Linux-guide: Val av grafisk miljö. (Att välja distribution).
-
Everyone should have a SGoC in their systems (SGoC: SysGhost on a Chip)

Permalänk
Medlem
Skrivet av SysGhost:

En liten guide att använda er av, om det tillåts.
[...]

Inte riktigt så man gör på Debian (även om det naturligtvis fungerar), eller inte vad OP är ute efter i alla fall.

OP: Jag har för mig att .deb filerna hamnar i katalogen "ovanför", dvs om du laddade ner linux-3.11.2.tar.xz till /src så ligger även de färdiga .deb-filerna där.

Visa signatur

RIPE LIR