Sida 1 av 1

Kompilera ny kernel - Snabbguide (2.6.31)

Postat: 14 sep 2009, 10:09
av webaake
Varför kompilera själv?:
* Ubuntus standardkärnor skall passa ALLA datorers hårdvara. Du och jag har inte all hårdvara så vi kan slänga ut mycket kod och drivrutiner från kärnan och få snabbare boot och lite snabbare dator.
* Det är kul
* Nya drivrutiner för bärbara, trådlöst och bättre stöd för Intel och ATI grafik m m (2.6.31)

Jag utgår från att du kompilerat något förut och därför har de rätta verktygen installerade.

Hämta källkoden. Här: http://packages.ubuntu.com/karmic/all/l ... 1/download
Borde egentligen finnas här: http://kernel.ubuntu.com/~kernel-ppa/mainline/ men source-paketen är felaktiga på de senaste kärnorna.

Installera och packa upp. Öppna en terminal i den nya kernelmappen och kör:
cp /boot/config-`uname -r` ./.config

make menuconfig
EDIT: Här finns oändliga möjligheter att ändra, ta bort och lägga till. Det gäller att fundera på vilken hårdvara man har, vad man använder datorn till m m. Som Emil S. rekommenderar är det bra att börja med att köra lspci för att få en bild av den hårdvara man har. Tips: för den hårdvara jag defintivt vet, ställer jag in så att den kompileras in i kärnan och inte som modul, t ex nätverkskort. Man gör det i menuconfig med spacebar så att det blir en asterisk - * -. M betyder modul och passar bra om man är osäker eller om det är en drivrutin/funktion man använder sällan., tomt betyder att det inte kompileras alls. Hjälp finns tillgänglig för de flesta val.

När du fixat alla inställningar i konfigurationen så är det dags att bygga kärnan. Det är inte svårt, men har du en äldre dator kan det ta tid (45 min). För att börja, skriv helt enkelt:
make

När det är klart, så lär du installera modulerna som byggts:
make modules_install && make headers_install

Och till sist, installera kärnan:
make install

Installera modulerna
mkinitramfs -v -o initrd.img-2.6.31 /lib/modules/2.6.31
Kommentar: man kan i menuconfig lägga in tillägg till kernelnamnet, t ex -new för att hålla isär olika versioner man gör.

Redigera /boot/grub/menu.lst och lägg till din nya kärna. EDIT:
Din senaste kernelrad såg ut ungefär såhär:
title Kernel 2.6.30-new
uuid afabfa9a-c18d-42e1-bfc3-bc087cdd9b89
kernel /boot/vmlinuz-2.6.30-new root=UUID=afabfa9a-c18d-42e1-bfc3-bc087cdd9b89 resume=UUID=c146d320-599e-4f9a-bae5-3922ef3c9514 ro video=vesafb vga=0x311
initrd /boot/initrd.img-2.6.30-new
quiet
savedefault
Kopiera den (alla dessa ca 5-6 rader) och klistra in ovanför och ändra till:
title Kernel 2.6.31
uuid afabfa9a-c18d-42e1-bfc3-bc087cdd9b89
kernel /boot/vmlinuz-2.6.31-new root=UUID=afabfa9a-c18d-42e1-bfc3-bc087cdd9b89 resume=UUID=c146d320-599e-4f9a-bae5-3922ef3c9514 ro video=vesafb vga=0x311
initrd /boot/initrd.img-2.6.31
quiet
savedefault
Spara. (video=vesafb vga=0x311 är mina egna små hack, kolla noga din egen kernelrad och använd den som utgångspunkt)

Stäng av datorn. Starta den igen. Att starta om den fungerar inte ännu.

Fungerar allt som det skall kan vi göra den sista ändringen så att även Omstart fungerar:
cd:a till / (root / Filsystem) och gör om de symboliska länkarna vmlinuz och initrd.img så att de pekar på din nya kärna och din nya initrd.img. EDIT:
cd /
sudo mv vmlinuz vmlinuz.bak
sudo mv initrd.img initrd.img.bak
sudo ln -s /boot/linux-2.6.31-new vmlinuz
sudo ln -s boot/initrd.img-2.6.31-new initrd.img
Nu skall även omstart (reboot) fungera.

Kommentar: anledningen att jag utgår från Ubuntus källkodspaket är att Canonical patchar kärnan bl a för Nvidia's drivrutiner. Jag testade vanilla 2.6.30 från kernel.org och det gick absolut inte att installera Nvidia på något enda sätt. Med Ubuntus källkod gick det. Man får vänta några dagar extra bara.

Ja, det blev en snabbguide och jag hoppas kunna fila lite till på den. Här är mer info:
http://sandnabba.se/kernel_howto
http://www.howtoforge.com/kernel_compilation_ubuntu_p2

Ytterligare tips: Kör en profil på uppstarten och snabba upp ytterligare; lägg till profile till kernelraden sålunda:
kernel /boot/vmlinuz-2.6.31-new root=UUID=afabfa9a-c18d-42e1-bfc3-bc087cdd9b89 resume=UUID=c146d320-599e-4f9a-bae5-3922ef3c9514 ro video=vesafb vga=0x311 profile

Nästa boot tar extra tid för att skapa profilen men efter den KAN uppstarten bli snabbare under de rätta omständigheterna. Ta sedan bort 'profile' från kernelraden, annars skapas en profil vid varje uppstart.

Tack till Emil S. och Rasmus

Re: Kompilera ny kernel - Snabbguide (2.6.31)

Postat: 25 sep 2009, 06:42
av webaake
But writing a kernel for everyone means making compromises. You can get better performance, and sometimes bug fixes, by building your own kernel.
En ny tutorial:
http://www.linuxplanet.com/linuxplanet/ ... ls/6853/1/