next up previous contents index
Volgende: 9.3 Modules gebruiken Omhoog: 9 Kernel Vorige: 9.1 Wat is de   Inhoudsopgave   Index


9.2 Kernel compileren

De standaardlocatie voor de kernel source is /usr/src/linux. Als je van meerdere versies de source code bijhoudt, is het handig om ze in directories als /usr/src/linux-2.2.12 en /usr/src/linux-2.2.14 te zetten. Vervolgens kun je een symlink maken naar /usr/src/linux met een commando als ln -s /usr/src/linux-2.2.14 /usr/src/linux. Ga naar /usr/src/linux en type make menuconfig of make xconfig in om een tekst-gebaseerd respectievelijk X-gebaseerd configuratieprogramma te starten. Je kunt het configuratiebestand van een oude kernel gebruiken door make oldconfig. Je krijg dan nog alleen vragen te zien over zaken die nieuwe zijn in de kernel die je nu wilt gaan compileren. Bij zowat alles kun je help opvragen over de betekenis. Als je klaar bent met het configureren, type je make dep en vervolgens eventueel make clean (haalt eventuele zooi van de vorige compilatie weg). Nu kun je de kernel zelf maken met make zImage. Als de kernel te groot blijkt te zijn (je zult vanzelf een foutmelding krijgen bij het opstarten), kun je de kernel ook compileren met make bzImage. Dat zorgt er niet voor dat de kernel met bzip2 wordt ingepakt, zoals vaak wordt gedacht! De kernel is dan met gzip ingepakt, net zoals bij zImage. De b staat voor big. Met bzImage zorg je ervoor dat er ''staggerd loading mode'' gebruikt wordt. Normaal gesproken kan er slechts 512 kB geheugen geaddreseerd worden voor de kernel tijdens het opstarten. Met de nodige assembler-code kan er 1024 kB worden gebruikt. Daardoor zijn grotere kernels te gebruiken.

Maak de modules met make modules. Als je een aangepaste versie maakt van dezelfde kernelversie als die je al gebruikt, dan zullen de modules dalijk overschreven worden. Wil je ze bewaren, gebruik dan een commando als mv /lib/modules/2.2.14 /lib/modules/2.2.14-working. Installeer de modules met make modules_install.

Kopieer het bestand /usr/src/linux/arch/i386/boot/zImage naar /boot onder een andere naam dan de huidige kernel, zodat je de oude kernel nog bij de hand hebt voor als het fout gaat: cp /usr/src/arch/i386/boot/zImage /boot/vmlinuz-2.2.14-custom.

Nu moet je /etc/lilo.conf nog gaan aanpassen om de nieuwe kernel te kunnen gaan gebruiken. (Zie ook paragraaf 9.4.) Laat het stuk voor de oude kernel gewoon staan. De oude kernel staat nog steeds in /boot naast de nieuwe. Voeg een stuk toe voor de nieuwe kernel. Bijvoorbeeld:

image=/boot/zImage-2.2.14-custom
        label=custom
        root=/dev/hda5
        read-only

Voer vervolgens LILO uit met /sbin/lilo. Wat je achter label zet is het woord dat je bij LILO moet gebruiken om de kernel te starten. Zet achter root de partitie waar bij jou / onder gemount wordt. Gebruik je loadlin (om Linux op te starten vanuit DOS), kopieer de kernel dan naar je DOS-partitie.

Het is vrij simpel om naar de oude, werkende, kernel terug te keren als je die bewaard hebt. Start de oude kernel door bij LILO het woord te gebruiken dat achter label stond in /etc/lilo.conf voor de oude kernel.

Als je de oude kernel start zul je wel wat fouten zien doordat de benodigde modules niet in /lib/modules staan, maar die kun je zo weer terugzetten (als je die ook bewaard hebt tenminste).

Lees voor meer informatie de kernel HOWTO en de documentatie bij de kernel.


next up previous contents index
Volgende: 9.3 Modules gebruiken Omhoog: 9 Kernel Vorige: 9.1 Wat is de   Inhoudsopgave   Index
Jarkko Huijts 2002-08-17