Hoe u uw Ubuntu-kernel kunt aanpassen
Aanpassing van de kernel is niet voor iedereen. Let op voordat je dit probeert, zodat het je systeem kan breken.
Er zijn een aantal redenen waarom je je kernel zou willen aanpassen. Misschien wil je je kernel inkorten tot alleen de benodigde services, vooral als je een server of een speciaal apparaat gebruikt dat alleen de essentie nodig heeft. Het kan ook nodig zijn om je kernel te patchen om hardware te ondersteunen die momenteel niet wordt ondersteund door de kernel waarop je draait.
Dit artikel legt niet uit hoe je je kernel moet patchen, maar hoe je je kernel kunt aanpassen. Ik heb nog een vervolgartikel waarin wordt uitgelegd hoe je je kernel kunt patchen en wat praktische redenen waarom je dit zou willen doen.
Om te beginnen, moeten we uitvinden welke versie van de kernel we momenteel gebruiken. We gebruiken hiervoor de opdracht uname
$ uname -r
2.6.17-10-generic
Nu moeten we de Linux-bron voor uw kernel installeren, merk op dat ik de 2.6.17-10-kernel gebruik, dus de installatie-regel weerspiegelt dat. Voor de doeleinden van dit artikel kunt u het kernelnummer vervangen door wat u ook gebruikt. We moeten ook de curses-bibliotheek en enkele andere tools installeren om ons te helpen compileren.
sudo apt-get installeer linux-source-2.6.17 kernel-pakket libncurses5-dev fakeroot
Als je nieuwsgierig bent naar waar de Linux-bron wordt geïnstalleerd, kun je de opdracht dpkg gebruiken om je de bestanden binnen een pakket te vertellen. Dit is de uitvoer op mijn systeem:
$ dpkg -L linux-source-2.6.17
/.
/ usr
/ Usr / src
/usr/src/linux-source-2.6.17.tar.bz2
/ Usr / share
/ Usr / share / doc
/usr/share/doc/linux-source-2.6.17
(Bijgesneden)
We kunnen zien dat de bron is geïnstalleerd in de map / usr / src in een gecomprimeerd bestand.
Om dingen gemakkelijker te maken, plaatsen we ons in de root-modus door sudo te gebruiken om een nieuwe shell te openen. Er zijn andere manieren om dit te doen, maar ik geef de voorkeur aan deze manier.
sudo / bin / bash
Verander nu de directory naar de bronlocatie zodat we deze kunnen installeren. Merk op dat je misschien het bunzip-hulpprogramma moet installeren als het niet is geïnstalleerd. (het was op de mijne)
cd / usr / src
bunzip2 linux-source-2.6.17.tar.bz2
tar xvf linux-source-2.6.17.tar
ln -s linux-source-2.6.17 linux
Maak een kopie van uw bestaande kernelconfiguratie om te gebruiken voor het aangepaste compilatieproces. Merk op dat het 'karakter dat is onder de tilde ~
cp / boot / config-'uname -r '/usr/src/linux/.config
Nu zullen we het hulpprogramma starten waarmee we de kernel kunnen aanpassen:
cd / usr / src / linux
maak menuconfig
Ga eerst naar Een geladen configuratiebestand laden en laad het .config-bestand. (druk op Enter)
Nu we ons in het hulpprogramma bevinden, kunnen we de opties voor onze aangepaste kernel instellen. Navigatie is vrij eenvoudig, er is een legende aan de top als je verdwaalt. Ik besloot om Netwerken te selecteren en druk op de Enter-toets om naar die categorie te gaan.
Ondersteuning voor amateurradio? Waarvoor is in godsnaam geïnstalleerd? U merkt op * dat het is ingebouwd in de kernel.
Door op de? Te drukken? sleutel, kunnen we de hulp voor dat specifieke item bekijken. Dit is de uitleg:
Welnu, ik zal dat onmiddellijk uitschakelen. Waarom is dat in vredesnaam eigenlijk in mijn kernel geïnstalleerd? Ik druk op Esc om het helpscherm te sluiten en druk op N om dat uit mijn kernel te verwijderen.
Wanneer u klaar bent met het maken van de gewenste keuzes, drukt u op Afsluiten en slaat u de configuratie op wanneer daarom wordt gevraagd.
Nu hebben we een configuratie klaar om te compileren. Eerst maken we een make-up schoon, gewoon om te zorgen dat alles klaar is voor het compileren.
make-kpkg schoon
Vervolgens zullen we de kernel compileren. Dit duurt een lange tijd, dus zoek iets interessants om te doen.
fakeroot make-kpkg -initrd -append-to-version = -custom kernel_image kernel_headers
Dit proces maakt twee .deb-bestanden in / usr / src die de kernel bevatten. Het Linux-image **** -bestand is de eigenlijke kernel-image en het andere bestand bevat de U kunt beide met dpkg installeren. De bestandsnamen zullen waarschijnlijk anders zijn op uw systeem.
Merk op dat wanneer u deze volgende opdrachten uitvoert, dit de nieuwe kernel als de nieuwe standaard kernel zal instellen. Dit kan dingen breken! Als je machine niet opstart, kun je op Esc drukken in het GRUB-laadmenu en je oude kernel selecteren. Je kunt dan de kernel in /boot/grub/menu.lst uitschakelen of proberen en opnieuw compileren.
dpkg -i linux-image-2.6.17.14-ubuntu1-custom_2.6.17.14-ubuntu1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.17.14-ubuntu1-custom_2.6.17.14-ubuntu1-custom-10.00.Custom_i386.deb
Start nu uw machine opnieuw op. Als alles werkt, zou u uw nieuwe aangepaste kernel moeten gebruiken. U kunt dit controleren met behulp van uname. Merk op dat het exacte aantal op uw machine anders zal zijn.
uname -r
2.6.17.14-ubuntu1 op maat
Ik ben van plan een reeks artikelen over kernelaanpassing te schrijven, dus abonneer u op de RSS-feed voor updates.
Ook, in het belang van volledige openbaarmaking, heb ik geleerd hoe dit te doen vanuit het artikel op HowtoForge, dat is een geweldige website voor een aantal zeer geavanceerde tutorials over Linux. U zult merken dat veel van de stappen in dit artikel vergelijkbaar zijn, hoewel ik geprobeerd heb dit artikel meer "Ubuntu" te maken.