Verder Terug Inhoud

3. Bootdisks en het bootproces

Een bootdisk is eigenlijk een miniatuur, zelf-bevattend Linux-systeem op een diskette. Het moet veel dezelfde functies verrichten die door een volledig Linux-systeem worden verricht. Voordat men zijn eigen bootdisk gaat bouwen, zou men de basis van het Linux bootproces moeten begrijpen. We presenteren je hier de basis, wat voldoende is voor het begrijpen van de rest van het document. Veel details en alternatieve opties zijn achterwege gelaten.

3.1 Het bootproces

Alle PC-systemen starten het bootproces door het uitvoeren van code in ROM (in het bijzonder, de BIOS) om de sector vanaf sector 0, cylinder 0 van de bootdrive te laden. De bootdrive is meestal het eerste diskettestation (aangeduid als A: onder DOS en /dev/fd0 onder Linux). De BIOS probeert deze sector dan uit te voeren. Op de meeste opstartbare disks, bevat sector 0, cylinder 0 zowel:

Als een Linux-kernel raw naar een diskette is gekopieerd, zal de eerste sector van de disk de eerste sector van de Linux-kernel zelf zijn. De eerste sector zal het bootproces vervolgen door de rest van de kernel vanaf het bootdevice te laden.

Zodra de kernel volledig is geladen, neemt het een basisinitialisatie van devices door. Het probeert vervolgens vanaf een device een root-bestandssysteem te laden en mounten. Een root-bestandssysteem is gewoon een bestandssysteem dat als ``/'' is gemount. De kernel moet worden verteld waar het naar het root-bestandssysteem moet zoeken; als het daar geen laadbaar image kan vinden, stopt het.

In een aantal bootsituaties -- vaak wanneer vanaf een diskette wordt geboot --, wordt het root-bestandssysteem in een ramdisk geladen, RAM welke door het systeem wordt benaderd alsof het een disk is. Er zijn twee redenen waarom het systeem naar ramdisk laadt. Ten eerste is RAM verscheidene malen sneller dan een diskette, dus de werking van het systeem is snel; en ten tweede kan de kernel een gecomprimeerd bestandssysteem vanaf de diskette laden en het in de ramdisk decomprimeren, waardoor het mogelijk is meer bestanden op de diskette te persen.

Zodra het root-bestandssysteem is geladen en gemount, zie je een melding als:

        VFS: Mounted root (ext2 filesystem) readonly.

Op dit punt vindt het systeem het programma init op het root-bestandssysteem (in /bin of /sbin) en voert het uit. init leest zijn configuratiebestand /etc/inittab, zoekt naar een regel aangeduid met sysinit, en voert het genoemde script uit. Het sysinit script is meestal iets als /etc/rc of /etc/init.d/boot. Dit script bestaat uit een set shell-commando's waarmee basissysteemservices worden ingesteld, zoals:

Dit script roept vaak diverse andere scripts aan voor de modulaire initialisatie. Bijvoorbeeld: in de structuur van SysVinit bevat de directory /etc/rc.d/ een complexe structuur aan subdirectory's waarvan de bestanden aangeven hoe de meeste systeemservices te activeren en af te sluiten. Op een bootdisk is het sysinit-script vaak erg eenvoudig.

Wanneer het sysinit-script klaar is, wordt de controle aan init teruggegeven, die dan overgaat op het standaard runlevel, aangegeven in inittab door middel van het sleutelwoord initdefault. In de regel met het runlevel wordt meestal een programma als getty gespecifieerd, dat verantwoordelijk is voor het afhandelen van communicaties via de console en tty's. Het is het getty programma dat de bekende ``login:'' prompt afdrukt. Het getty roept op zijn beurt het programma login aan voor de afhandeling van de login-validatie en voor het instellen van gebruikerssessies.

3.2 Disktypen

Na het bootproces te hebben geïnspecteerd, kunnen we nu diverse daarbij betrokken soorten disks definiëren. We classificeren disks in vier typen. Bij de bespreking in dit gehele document maken we, tenzij anders is aangegeven, gebruik van de term ``disk'' om naar diskettes te refereren, alhoewel het meeste net zo goed ook voor harddisks zou kunnen gelden.

boot

Een disk met een kernel welke kan worden geboot. De disk kan worden gebruikt om de kernel te booten, waarmee dan een root-bestandssysteem op een andere disk kan worden laden. De kernel op een bootdisk moet gewoonlijk worden verteld waar het zijn root-bestandssysteem kan vinden.

Vaak wordt met een bootdisk een root bestandssysteem vanaf een andere diskette geladen, maar het is mogelijk een bootdisk zo in te stellen dat het in plaats daarvan een root bestandssysteem van een harddisk laadt. Dit wordt in het algemeen gedaan bij het testen van een nieuwe kernel. (in feite zal ``make zdisk'' een dergelijke bootdisk automatisch vanuit de kernel-source aanmaken).

root

Een disk met een bestandssysteem met bestanden die nodig zijn om een Linux-systeem te draaien. Een dergelijke disk hoeft niet noodzakelijkerwijs een kernel of een bootloader te bevatten.

Een root-disk kan worden gebruikt om het systeem onafhankelijk van enige andere disks te draaien, zodra de kernel is geboot. Meestal wordt de root-disk automatisch naar een ramdisk gekopieerd. Hierdoor wordt de toegang tot de root-disk veel sneller en geeft het 't diskettestation vrij voor een utility-disk.

boot/root

Een disk met zowel de kernel als een root-bestandssysteem. Met andere woorden: hierop staat alles dat nodig is om een Linux-systeem zonder harddisk te booten en draaien. Het voordeel van dit type disk is dat het compact is -- alles dat nodig is op een enkele disk. De van alles geleidelijk toenemende grootte betekent echter dat het, zelfs met compressie, in toenemende mate moeilijker wordt alles op een enkele diskette te passen.

utility

Een disk met een bestandssysteem, maar die niet is bedoeld om als een root-bestandssysteem te worden gemount. Het is een aanvullende gegevensdisk. Je zou dit type disk gebruiken om aanvullende utilities mee te vervoeren voor als je teveel hebt voor op je root-disk.

In het algemeen bedoelen we wanneer we het hebben over ``het bouwen van een bootdisk'' het aanmaken van zowel de boot (kernel) als de root (bestanden). Ze mogen zowel samen (een enkele boot/root disk) of apart (boot + root disks) voorkomen. De meest flexibele benadering voor rescue-diskettes is waarschijnlijk het gebruik van aparte boot- en rootdiskettes, en één of meer utility-diskettes voor datgene wat teveel is voor deze disks.


Verder Terug Inhoud