Verder Terug Inhoud

4. Hoe de kernel feitelijk te configureren

4.1 Verkrijgen van de source

Je kunt de source via anonieme ftp verkrijgen vanaf ftp.kernel.org in /pub/linux/kernel/vx.y, waar x.y voor de versie staat (bv 2.2), en zoals eerder genoemd, die met een oneven nummer eindigen, zijn development releases en kunnen onstabiel zijn. Ze zijn vaak gelabeld als linux-x.y.z.tar.gz, waarbij x.y.z voor het versienummer staat. Op de sites staan vaak ook bestanden met het toevoegsel .bz2, deze zijn met bzip2 gecomprimeerd (ze zullen kleiner zijn en nemen bij het transporteren minder tijd in beslag).

Je kunt het beste ftp.xx.kernel.org gebruiken, waar xx je landcode voorstelt; voorbeelden zijn ftp.at.kernel.org voor Australië, en ftp.us.kernel.org voor de United States.

4.2 Het uitpakken van de source

Log in als, of su naar, `root', en cd naar /usr/src. Als je de kernelsource installeerde toen je linux voor het eerst installeerde (zoals de meeste doen), zal er reeds een directory met de naam `linux' voorkomen, die de gehele oude sourcetree bevat. Als je de diskruimte hebt en het veilig wilt spelen, bewaar die directory dan. Het is een goed idee om er achter te komen welke versie nu op je systeem draait en de directory overeenkomstig te hernoemen. Het commando `uname -r' drukt de huidige kernelversie af. Daarom zou je (met `mv') `linux' in `linux-1.0.9' kunnen hernoemen, als `uname -r `1.0.9' aangeeft. Als je je daar niet zo om bekommert, verwijder dan gewoon de volledige directory. Zorg er in ieder geval voor dat er geen `linux' directory in /usr/src voorkomt, voordat je de volledige sourcecode uitpakt.

Pak nu in /usr/src de source uit met `tar zxpvf linux-x.y.z.tar.gz' (als je slechts een .tar bestand zonder .gz aan het einde hebt, werkt `tar xpvf linux-x.y.z.tar'). De inhoud van de source zal voorbij vliegen. Als 't klaar is, dan zal er een nieuwe `linux' directory in /usr/src voorkomen. cd naar linux en lees het bestand README door. Er zal een sectie in staan met het label `INSTALLING the kernel'. Voer de van toepassing zijnde instructies uit, symbolische links die op hun plaats zouden moeten staan, verwijdering van oude .o bestanden, enz.

Als je een .bz2 bestand en het bzip2 programma hebt (lees erover op http://www.muraroa.demon.co.uk/), doe dan het volgende:

     bz2cat linux-x.y.z.tar.bz2 | tar xvf -

4.3 Configureren van de kernel

Opmerking: Een deel hiervan is een herhaling/opheldering van een vergelijkbare sectie in het README bestand van Linux.

Het commando `make config' als je je in /usr/src/linux bevindt, start een configuratiescript, welke je vele vragen stelt. Het vereist bash, dus verifieer dat bash zich in /bin/bash, /bin/sh, of $BASH bevindt.

Er zijn echter wat plezieriger alternatieven voor `make config' en het kan heel goed zijn dat je ze makkelijker en comfortabeler in het gebruik vindt. `make menuconfig' is waarschijnlijk de meest gebruikte. Wat je ook kiest, het is het beste als je bekend raakt met de interface, omdat het heel goed mogelijk is dat je eerder terug zult keren, dan je zult denken. Voor degene die ``X draaien,'' kun je `make xconfig' proberen, als je Tk hebt geïnstalleerd `make menuconfig' is voor degene die (n)curses hebben en de voorkeur zouden geven aan een op tekst gebaseerd menu. Deze interfaces hebben een nogal duidelijk voordeel: Als je het verprutst en tijdens de configuratie een verkeerde keuze maakt, is het heel eenvoudig om terug te gaan en het te corrigeren.

De configuratie-opties zullen met `make menuconfig' en make xconfig' in hierarchiën verschijnen.

Je bent er klaar voor om de vragen te gaan beantwoorden, gewoonlijk met `y' (yes) of `n' (no). Device drivers hebben typisch een `m' optie. Dit betekent ``module,'' wat inhoudt dat het systeem ze niet direct in de kernel zal compileren, maar als een laadbare module. Een komischer manier om het te beschrijven is als ``misschien.'' Een aantal van de vanzelfsprekende en niet-kritieke opties is hier niet beschreven; zie de sectie ``Andere configuratie-opties'' voor beknopte beschrijvingen van een paar andere opties. Met `make menuconfig', verwissel je met de spatiebalk van selectie.

In 2.0.x en later, is er een `?' optie, die voorziet in een korte beschrijving van de configuratieparameter. Die informatie is waarschijnlijk het meest up-to-date. Hier is een opsomming van een aantal van de belangrijke faciliteiten, in welke hierarchie ze staan, en met een korte beschrijving.

Kernel math emulatie (Processor type and facilities)

Als je geen math processor hebt (je hebt een minimale 386 of 486SX), moet je hier met `y' antwoorden. Als je een coprocessor hebt en je zegt dan toch `y', maak je er dan niet te veel zorgen om, de coprocessor wordt nog steeds gebruikt en de emulatie wordt genegeerd. Voor iedere moderne computer, zal het antwoord `no' zijn, maar maak je geen zorgen als je hier per ongeluk `yes' hebt geantwoord; als het niet nodig is, wordt het niet gebruikt.

Enhanced (MFM/RLL) disk en IDE disk/cdrom support (Block Devices)

Je zult de ondersteuning waarschijnlijk nodig hebben; het betekent dat de kernel standaard PC harddisks, die de meeste mensen hebben, zal ondersteunen. Bij deze driver zijn SCSI-drivers niet inbegrepen; die komen later in de configuratie aan de orde.

Er zal dan worden gevraagd naar de ``old disk-only'' en ``new IDE'' drivers. Je zult er hier één van willen kiezen; het belangrijkste verschil is dat de oude driver alleen twee disks op een enkele interface ondersteunt, en de nieuwe een tweede interface en IDE/ATAPI cdromdrives ondersteunt. De nieuwe driver is 4k groter dan de oude en is, naar men mag aannemen, ook ``verbeterd,'' wat betekent dat het afgezien van een verschillend aantal bevattende fouten, het je diskperformance kan verbeteren, vooral als je nieuwere (EIDE-type) hardware hebt.

Netwerkondersteuning (General Setup)

In principe, zou je hier slechts `y' antwoorden, als je computer zich in een netwerk bevindt, zoals het internet, of je gebruik wilt maken van SLIP, PPP, term, enz. om in te bellen voor toegang tot het internet. Je zou hier echter `y' moeten antwoorden, want veel packages (zoals het X-windowsysteem) vereisen netwerkondersteuning, ook al is je computer niet op een echt netwerk aangesloten. Later zal je worden gevraagd of je ondersteuning wilt voor een TCP/IP netwerk; antwoord hier nogmaals `y', als je er niet helemaal zeker van bent.

System V IPC (General Setup)

Één van de beste definities van IPC (Interprocess Communication) staat in de verklarende woordenlijst van het Perl boek. Het is niet verwonderlijk dat een aantal Perl programmeurs het gebruikt om processen met elkaar te laten communiceren, evenals vele andere packages (in 't bijzonder DOOM), dus het is geen goed idee om hier n op te antwoorden, tenzij je precies weet wat je aan het doen bent.

Processor familie (Processor type en faciliteiten)

(in oudere kernels: Gebruik de -m486 flag voor 486-specifieke optimalisaties)

Volgens traditie werden hierdoor bepaalde optimalisaties voor een bepaalde processor meegecompileerd; de kernels draaide prima op andere chips, maar de kernel was misschien wat groter. In nieuwere kernels geldt dit echter niet meer, dus je zou op moeten geven voor welke processor je de kernel aan het compileren bent. Een ``386'' kernel werkt met alle computers.

SCSI-support

Als je SCSI-devices hebt, antwoord je `y'. Er zal je worden gevraagd naar meer informatie, zoals ondersteuning voor CD-ROM, disks, en wat voor soort SCSI-adapter je hebt. Zie de SCSI-HOWTO voor uitgebreidere details.

Network device support

Als je een netwerkkaart hebt, of je zou SLIP, PPP of een parallelle poortadapter wilen gebruiken om verbinding te maken met het Internet, antwoord je `y'. Het configuratiescript zal je vragen naar de soort kaart die je hebt, en welk protocol moet worden gebruikt.

Filesystems

Het configureerscript vraagt je vervolgens of je ondersteuning voor de volgende bestandssystemen wilt:

Standard (minix) - Nieuwere distributies maken geen minix bestandssystemen aan, en veel mensen gebruiken het niet, maar het kan nog steeds een goed idee zijn om deze te configureren. Een aantal ``rescue disk'' programma's maakt er gebruik van, en steeds meer diskettes kunnen een minix bestandssysteem hebben, aangezien het minix bestandssysteem minder moeizaam op een diskette is te gebruiken.

Second extended - Dit is het standaard Linux bestandssysteem. Het is bijna zeker dat je er hier één van hebt, en `y' moet antwoorden.

msdos - Als je je MS-DOS harddisk partities wilt gebruiken, of MS-DOS geformatteerde diskettes wilt gebruiken, antwoord je `y'.

Er zijn diverse andere externe soorten besturingssystemen beschikbaar.

/proc - (idee van Bell Labs, denk ik). Men maakt geen proc bestandssysteem op een disk; dit is een bestandssysteeminterface naar de kernel en de processen. Veel programma's die processen weergeven (zoals `ps') maken er gebruik van. Probeer eens een keer `cat /proc/meminfo' of `cat /proc/devices'. Een aantal shells (rc, in het bijzonder) gebruikt voor I/O /proc/self/fd (op andere systemen bekend als /dev/fd). Je zou hier bijna zeker `y' moeten antwoorden; veel belangrijke linux tools zijn ervan afhankelijk.

NFS - Als je computer op een netwerk is aangesloten, en je wilt bestandssystemen gebruiken die voorkomen op andere systemen met NFS, antwoord dan `y'.

ISO9660 - Wordt op de meeste CD-ROM's aangetroffen. Als je een CD-ROM drive hebt en je wilt het onder Linux gebruiken, geef je als antwoord `y'.

Maar ik weet niet welke bestandssystemen ik nodig heb!

Ok, typ `mount'. De uitvoer zal er ongeveer zo uitzien:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

Bekijk iedere regel; het woord naast `type' is het type bestandssysteem. In dit voorbeeld zijn mijn / en /usr bestandssystemen second extended, Ik gebruik /proc, en er is een diskette gemount door gebruik te maken van het msdos-bestandssysteem.

Je kunt `cat /proc/filesystems' proberen, als je /proc thans is geactiveerd; je huidige kernel's bestandssystemen zullen worden weergegeven.

De configuratie van zeldzaam gebruikte, niet kritieke bestandssystemen kunnen een bloat kernel veroorzaken; zie de sectie over modules voor een manier om dit te voorkomen en de sectie ``Valkuilen'' over waarom een bloat kernel niet wenselijk is.

Character devices

Hier activeer je de drivers voor je printer (dat wil zeggen, parallelle printer), busmouse, PS/2 mouse (veel notebooks gebruiken het PS/2 mouse protocol voor hun ingebouwde trackballs), een aantal tapedrives, en andere ``character'' devices. Antwoord `y' als dit van toepassing is.

Opmerking: gpm is een programma waarmee het gebruik van de muis buiten het X-windowsysteem voor knippen en plakken tussen virtuele consoles is toegestaan. Het is echt heel aardig als je een seriële muis hebt, omdat het goed naast X kan voortbestaan, maar je hebt voor andere muizen speciale foefjes nodig.

Sound

Als je een groot verlangen voelt om geklap en geblaf te horen, antwoord dan `y', en je kunt het configuratieprogramma alles over je geluidskaart laten weten. (Een opmerking over de configuratie van een geluidskaart: als je wordt gevraagd of je de volledige versie van de driver wilt installeren, kun je hier `n' antwoorden en wat kernelgeheugen besparen door alleen de faciliteiten eruit te pikken die je nodig acht).

Als de geluidsondersteuning je menens is, bekijk dan eens de vrij verkrijgbare drivers bij http://www.linux.org.uk/OSS/ en het commerciële Open Sound System bij http://www.opensound.com/.

Andere configuratie-opties

Niet alle configuratie-opties worden hier opgesomd, omdat ze te vaak wijzigen of tamelijk vanzelfsprekend zijn (bijvoorbeeld, 3Com 3C509 ondersteuning voor het compileren van de devicedriver voor deze speciale ethernetkaart). Er bestaat een tamelijk uitgebreide lijst met opties (plus een manier om ze in het Configure script te plaatsen) met inzet gestart en beheerd door Axel Boldt (boldt@math.ucsb.edu) en het is de online- help. Het is sinds versie 2.0 ook beschikbaar als één groot bestand als de Documentation/Configure.help in je Linux kernel source tree.

Kernel hacking

>Vanuit het README bestand van Linus:

de ``kernel hacking'' configuratie details resulteren meestal in een grotere of langzamere kernel (of beiden), en kan de kernel zelfs minder stabiel maken door een aantal routines te configureren die actief probeert slechte code aan de oppervlakte te laten komen om kernelproblemen op te sporen (kmalloc()). Dus je zou waarschijnlijk `n' moeten antwoorden op de vragen voor een ``production'' kernel.

4.4 Wat nu? (De Makefile)

Nadat je de configuratie hebt beëindigd, krijg je een bericht dat je kernel is geconfigureerd en de melding ``check the top-level Makefile for additional configuration,'' enz.

Dus bekijk Makefile. Je zult het waarschijnlijk niet hoeven wijzigen, maar het kan nooit kwaad het te bekijken. Je kunt de opties ervan ook wijzigen met het commando `rdev' zodra de nieuwe kernel op z'n plaats staat. Als het je ontgaat als je het bestand bekijkt, maak je er dan geen zorgen om.


Verder Terug Inhoud