Kärnkompilering i Linux

Från Unix.se, den fria unixresursen.

Att kompilera en kärna (eng kernel) för första gången kan vara en svettig upplevelse. Det är oftast vid den punkten som den vanliga datoranvändaren längtar tillbaka till Windows.

Linux är ett operativsystem som är under ständig utveckling. Nya utvecklingsversioner av kärnan släpps ständigt (dessa är dock inte att rekommendera för de som vill ha ett stabilt system). Vanligtvis vill man kompilera om kärnan för att lägga till stöd för något eller för att trimma den genom att ta bort oönskad funktionalitet och drivrutiner man inte behöver.

Innehåll

Nedladdning och kompilering

Ladda ner källkoden

Kernel.org (http://www.kernel.org) är den officiella sidan för kärnkoden, där finns även en lista över speglingar.

Packa upp och konfigurera

Bli root, packa upp filen och skapa en symlänk:

$ su -
Password:
tar zxvf /där/du/la/linux-2.6.8.1.tar.gz -C /usr/src
ln -sf /usr/src/linux-2.6.8.1 /usr/src/linux

Nu går vi över till den lite svårare delen, nämligen konfigurationen av själva kärnan. Här gäller det att ha koll på vad man gör. Du kan använda den gamla hederliga konfigurationen (make config, som är ett skript som ställer en rad frågor, X-programmet (make xconfig) eller ncurses-programmet (make menuconfig). Vi väljer det sistnämnda.

make menuconfig

Svara noggrant på frågorna och läs hjälpen (annars kan du komma att ångra dig senare).

Kompilera kärnan

Det sista vi ska göra är att kompilera källkoden utifrån din konfiguration. Kör nedanstående kommando, luta dig tillbaka och ta en kopp kaffe (det kan ta ett tag eller gå rätt snabbt, beroende på din hårdvara).

2.6-kärnor:

# make all modules_install

2.4-kärnor:

# make dep && make bzImage modules modules_install

Om du inte fick några felmeddelanden är det bara att klappa dig själv på axeln. Du har kompilerat en kärna. Om du däremot fick något fel rekommenderar jag dig att ta en andra titt på din konfiguration, det är oftast där som felen ligger. Nu måste du bara kopiera den nya kärnan till exempelvis /boot och lägga till detta i din starthanterares konfigurationsfil. Kärnan kommer efter lyckad kompilering ligga i /usr/src/linux/arch/i386/boot/ (byt ut i386 mot den arkitektur du använder; exempelvis x86_64 för AMD64) och heta bzImage. Flytta denna med mv:

mv /usr/src/linux/arch/i386/boot/bzImage /boot/kernel-2.6.8.1

Efterkonfiguration

GRUB

Om du använder GRUB måste du nu redigera /boot/grub/grub.conf, och lägga till den nya kärnan med hjälp av följande rader:

title  2.6.8.1 # titeln bör förslagsvis spegla vilken version av kärnan det är
root (hd0,1) # hd0,1 motsvarar hda2 (0 för a och 1 för 2 -- grub börjar räkna från 0) och är den partition där kärnan ligger
kernel (hd0,1)/boot/kernel-2.6.8.1 root=/dev/sda3 # glöm inte att ändra till din /-partition

LILO

För de som använder LILO: Öppna /etc/lilo.conf i en texteditor och lägg till följande: (glöm inte att byta ut /dev/hda6 mot det som motsvarar din root (/))

image = /boot/kernel-2.6.8.1
root = /dev/hda6 # byt ut detta mot det som motsvarar din rotkatalog (kör mount för att se efter)
label = 2.6.8.1

Kör lilo:

/sbin/lilo
Added 2.6.8.1 *
Added 2.6.4

Ett tips i båda fallen är att låta den gamla kärnan ligga kvar i såväl filsystemet som i respektive konfigurationsfil, så att du kan boota denna istället om den nya kärnan inte fungerar.

Sådär! Allt som återstår är att starta om datorn och hålla tummarna. Lycka till!

Personliga verktyg