Verder Terug Inhoud

5. Compileren van de kernel

5.1 Opschonen en afhankelijkheden

Als het configuratiescript eindigt, geeft het ook aan een `make dep' en (mogelijk) `clean' uit te voeren. Dus, doe de `make dep'. Dit verzekert je dat alle afhankelijkheden, zoals de include bestanden, op hun plaats staan. Het duurt niet lang, tenzij je computer om te beginnen nogal langzaam is. Je zou voor oudere versies van de kernel een `make clean moeten doen, als je klaar bent. Hiermee worden alle object-bestanden en wat andere zaken verwijderd die door een oude versie achter worden gelaten. Vergeet deze stap in ieder geval niet voordat je een poging gaat ondernemen om een kernel te hercompileren.

5.2 Compileertijd

Na een make dep en een make clean, kun je nu een `make bzImage' of `make bzdisk' opstarten (dit is het onderdeel dat lang duurt). `make bzImage' zal de kernel compileren, en (onder andere) een bestand in arch/i386/boot met de naam `bzImage' achterlaten. Dit is de nieuw gecomprimeerde kernel. `make bzdisk' doet hetzelfde, maar het plaatst ook het nieuwe bzImage op een diskette, die je hopelijk in drive ``A:'' deed. `bzdisk' is nogal handig voor het testen van nieuwe kernels; als het totaal mislukt (of het gewoon niet goed werkt), verwijder dan gewoon de diskette en boot met je oude kernel. Als je per ongeluk je kernel verwijdert (of iets net zo vreselijks), kan het ook een handige manier zijn om te booten. Je kunt het ook gebruiken om nieuwe systemen te installeren als je de inhoud van de ene naar de andere disk dumpt. (``dit alles en meer! hoeveel zou je NU willen betalen?'').

Alle pas halverwege redelijk recente kernels zijn gecomprimeerd, hieruit volgt de `bz' aan het begin van de naam. Een gecomprimeerde kernel decomprimeert zichzelf als het wordt uitgevoerd.

In oudere kernels had je de optie niet om een bzImage te bouwen; het was gewoon een zImage. Die optie is op het moment nog steeds beschikbaar, het is echter, gegeven de grootte van de nieuwere kernels, min of meer verplicht om een bzImage te bouwen, omdat de oudere methoden niet met een al te grote kernel om kunnen gaan.

5.3 Andere ``make'' 's

Met `make mrproper' zal een grootser opgezette `schoonmaak worden uitgevoerd. Soms is het nodig; je wilt het misschien bij iedere patch doen. Met `make mrproper' zal ook je configuratiebestand worden verwijderd, dus misschien wil je een backup maken van (.config), als je het als waardevol beschouwd.

Met `make oldconfig' zal worden geprobeerd de kernel vanuit een oud configuratiebestand te configureren; het zal het `make config' proces voor je doorlopen. Als je nooit eerder een kernel hebt gecompileerd of je hebt geen oud configuratiebestand, dan zou je dit waarschijnlijk niet moeten doen, aangezien je zeer waarschijnlijk je standaardconfiguratie zal willen veranderen.

Zie de sectie over modules voor een beschrijving van `make modules'.

5.4 Installeren van de kernel

Nu dat je een kernel hebt die lijkt te werken zoals je het wilt, is het tijd om het te installeren. De meeste mensen gebruiken hiervoor LILO (Linux Loader). `make bzlilo' zal de kernel installeren, draai LILO, en je bent er helemaal klaar voor om te booten, MAAR ALLEEN als lilo op de volgende manier op je systeem is geconfigureerd: kernel is /vmlinuz, lilo is in /sbin, en je lilo config (/etc/lilo.conf) stemt daar mee overeen.

Anders moet je LILO op directe wijze gebruiken. Het is een tamelijk makkelijk package om te installeren en om mee te werken, maar het heeft de neiging om mensen met z'n configuratiebestand in de war te brengen. Zoek naar het configuratiebestand (/etc/lilo/config voor oudere versies of /etc/lilo.conf voor nieuwe versies), en bekijk de huidige setup. Het configuratiebestand ziet er ongeveer zo uit:

    image = /vmlinuz
        label = Linux
        root = /dev/hda1
        ...

De `image =' is op de huidige geïnstalleerde kernel ingesteld. De meeste mensen gebruiken /vmlinuz. `label' wordt door lilo gebruikt om vast te stellen welke kernel of welk besturingssysteem moet worden geboot, en `root' is de / van dat bepaalde besturingssysteem. Maak een backup van je oude kernel en kopieer het bzImage dat je net op z'n plaats hebt gezet (je zou hier `cp bzImage /vmlinuz' opgeven als je `/vmlinuz' gebruikt). Start lilo dan weer op, op nieuwere systemen kun je gewoon `lilo' opstarten, maar op oudere, kan het zijn dat je /etc/lilo/install of zelfs /etc/lilo/lilo -C /etc/lilo/config op moet geven.

Als je meer zou willen weten over de configuratie van LILO, of je hebt LILO niet, haal dan de nieuwste versie vanaf je favoriete ftp-site en volg de instructies op.

Om één van je oude kernels vanaf de harddisk te booten (een andere manier om jezelf te redden voor 't geval je de nieuwe kernel hebt verprutst), kopieer je de regels hieronder (en voeg ze in): `image = xxx' in het configuratiebestand van LILO onderaan het bestand, waarbij je `image = xxx' wijzigt in `image = yyy';hierbij staat `yyy' voor de volledige padnaam van het bestand, waarin je je backup van de kernel bewaarde.

Wijzig dan de regel `label = zzz' in `label = linux-backup' en herstart lilo. Misschien moet je nog een regel in het configuratiebestand plaatsen zoals `delay=x', waar x staat voor het aantal tienden seconden, dat LILO voor het booten moet wachten, zodat je het kunt onderbreken. (bijvoorbeeld met de shift-toets), en het label in kunt tikken van de backup boot-image (voor 't geval er onplezierige dingen gebeuren).


Verder Terug Inhoud