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:
tegemoet te komen aan bijzondere noden op het gebied van hardware of omdat er een hardwareconflict optreedt met de ter beschikking staande kernels
kernelopties te gebruiken die in de ter beschikking staande kernels niet geactiveerd zijn (zoals ondersteuning voor het uitgebreid geheugengebied)
de kernel te optimaliseren door onnodige stuurprogramma's te verwijderen en de opstarttijd te versnellen
een monolithische in plaats van een modulaire kernel te creëren
een nieuwere of een ontwikkelingsversie van de kernel te gebruiken
meer inzicht te verwerven in linux-kernels
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-
. Het element subarchitectuur
_1.0.custom_ppc64el.debsubarchitectuur
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.