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:
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
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.
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.
När allt är konfigurerat och klart: Dubbelkolla.
När allt är dubbelkollat och klart: Trippelkolla.
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.
När allt är quadrupel-kollat ... Naaah... Skojar bara.
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"
Dags för kompilering. En "make" rätt och slätt skall räcka långt.
Ta en kopp kaffe och gör något annat roligt under tiden. Detta kommer att ta en duktig stund.
Tillbaks redan? För tidigt. Den är inte klar ännu. Ta en kopp till... nej... ta hela kannan.
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!
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:
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:
Japp. Kompilering och/eller preparering av modulerna. Det är bra att köra detta även om man inte har konfigurerat några moduler.
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.
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
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.