8.6. Een nieuwe kernel compileren

Waarom zou iemand een nieuwe kernel willen compileren? Vaak is dit niet nodig, aangezien de kernel die met Debian geleverd wordt, met de meeste configuraties overweg kan. Bovendien stelt Debian vaak verschillende alternatieve kernels ter beschikking. Wellicht wilt u dus eerst nagaan of er een pakket bestaat met een alternatief kernel-image dat beter geschikt is voor uw hardware. Toch kan het nuttig zijn om een nieuwe kernel te compileren om:

8.6.1. Kernelimagebeheer

Wees niet bang om te proberen een kernel te compileren. Het is leuk en lonend.

Om een kernel te compileren op de manier waarop Debian dat doet, heeft u enkele pakketten nodig: fakeroot, kernel-package, linux-source-2.6 en enkele andere pakketten die wellicht reeds geïnstalleerd zijn (raadpleeg /usr/share/doc/kernel-package/README.gz voor de volledige lijst).

Met deze methode zult u een .deb-bestand aanmaken op basis van uw kernelbroncode en, indien u bijzondere modules gebruikt, ook daarvoor een gesynchroniseerd en ondergeschikt .deb-bestand. Dit is de beste manier om kernelimages te beheren. De kernel, het bestand System.map en een log van het configuratiebestand dat bij het compileren geactiveerd was, zullen in /boot terug te vinden zijn.

Merk op dat u niet verplicht bent om uw kernel te compileren volgens de Debian methode. Maar wij zijn van oordeel dat gebruik maken van het pakketbeheersysteem om uw kernel te beheren, veiliger en makkelijker is. In feite kunt u de broncode van de kernel rechtstreeks ophalen bij Linus in plaats van linux-source-2.6 te gebruiken en toch nog steeds de compilatiemethode van kernel-package toepassen.

Merk op dat u de volledige documentatie over het gebruik van kernel-package kunt vinden onder /usr/share/doc/kernel-package. Dit onderdeel bevat enkel een beknopte beginnershandleiding.

Vanaf nu nemen we aan dat u de volledige controle heeft over uw computer en dat u de kernelbroncode ergens in uw persoonlijke map[19] zult uitpakken. We gaan er ook vanuit dat de versie van uw kernel 3.16 is. Vergewis u ervan dat u zich in de map bevindt waarin u de kernelbroncode wilt uitpakken. Pak ze uit met tar xf /usr/src/linux-source-3.16.tar.xz en ga dan naar de map linux-source-3.16 die door dat commando aangemaakt zal zijn.

Nu kunt u uw kernel configureren. Voer het commando make xconfig uit als X11 geïnstalleerd, geconfigureerd en actief is. Voer anders het commando make menuconfig uit (het pakket libncurses5-dev moet geïnstalleerd zijn). Neem uw tijd om de onlinehulp te lezen en maak uw keuzes zorgvuldig. Als u twijfelt, doet u er gewoonlijk goed aan om het apparaatstuurprogramma (de software die randapparatuur zoals ethernetkaarten, SCSI-controllers, enz. aanstuurt) waarover u twijfelt, op te nemen. Wees voorzichtig: andere opties, die niet in verband staan met een specifiek hardwareonderdeel, moet u op hun standaardwaarde laten staan als u niet precies weet waarvoor ze dienen. Vergeet niet in Loadable module support de optie Kernel module loader te selecteren (die optie is standaard niet geselecteerd). Indien u deze niet opneemt, zal uw Debian-installatie problemen ondervinden.

Schoon uw broncodeboom op en stel de parameters van kernel-package terug op hun oorspronkelijke waarden in. U doet dit met de opdracht make-kpkg clean.

Compiler nu de kernel: fakeroot make-kpkg --initrd --revision=1.0.custom kernel_image. Het versienummer 1.0 kunt u naar believen aanpassen. Het is enkel een versienummer dat u gebruikt om het overzicht over uw kernelcompilaties te behouden. Evenzeer kunt u in plaats van custom om het even welk ander woord dat u verkiest, gebruiken (bijv. een computernaam). Het compileren van de kernel kan enige tijd in beslag nemen, afhankelijk van hoe krachtig uw computer is.

Nadat de compilatie voltooid is, kunt u uw aangepaste kernel installeren zoals om het even welk ander pakket. Als root (systeembeheerder) geeft u het commando dpkg -i ../linux-image-3.16-subarchitectuur_1.0.custom_mips64el.deb. Het element subarchitectuur is een facultatieve onder-architectuur, afhankelijk van welke kernelopties u instelde. dpkg -i installeert de kernel samen met een aantal andere ondersteunende bestanden. Zo zal bijvoorbeeld het bestand System.map correct geïnstalleerd worden (nuttig bij het debuggen van kernelproblemen) evenals het bestand /boot/config-3.16 dat de huidige kernelconfiguratie bevat. Uw nieuwe kernelpakket is ook zo slim dat het in staat is uw opstartlader automatisch bij te werken, zodat deze uw nieuwe kernel zal gebruiken. Indien u een pakket met modules creëerde, zult u ook dat pakket moeten installeren.

Het is nu tijd om uw systeem opnieuw op te starten: lees aandachtig eventuele waarschuwingen die u in de voorgaande stap te zien kreeg en voer nadien het commando shutdown -r now uit.

Meer informatie over Debian kernels en het compileren van een kernel is te vinden in het Debian Linux Kernel Handbook. Voor meer informatie over kernel-package moet u de documentatie uit /usr/share/doc/kernel-package lezen.



[19] U kunt de kernelbroncode ook op andere plaatsen uitpakken en daar uw aangepaste kernel compileren, maar de hier gebruikte werkwijze is het makkelijkst, aangezien ze geen speciale voorrechten vereist.