Bij het bouwen van bootdisks, zal het systeem bij de eerste pogingen waarschijnlijk niet booten. De algemene benadering bij het bouwen van een rootdisk is componenten vanuit je bestaande systeem te assembleren, en het op een diskette gebaseerd systeem te krijgen tot op het punt waar het berichten op de console weergeeft. Zodra het éénmaal met je begint te communiceren, is het halve leed geleden omdat je dan kunt zien waar het problemen mee heeft en kun je individuele problemen herstellen net zolang tot het systeem soepel werkt. Als het systeem zonder verklaring hangt, kan het uitzoeken van de oorzaak moeilijk zijn. Om een systeem geboot te krijgen tot die fase waarin het met je zal communiceren, is het vereist dat verscheidene componenten aanwezig zijn en dat deze correct zijn geconfigureerd. De aanbevolen procedure voor het onderzoeken van het probleem waar het systeem niet met je zal communiceren is als volgt:
Mogelijk zie je een melding als:
Kernel panic: VFS: Unable to mount root fs on XX:YY |
Als je foutmeldingen ziet als:
end_request: I/O error, dev 01:00 (ramdisk), sector NNN |
Ramdisk driver initialized : 16 ramdisks of 4096K size |
Controleer of de rootdisk echt die directory's bevat waarvan je denkt dat ze erop voorkomen. Het is heel eenvoudig op het onjuiste niveau iets te kopiëren, waardoor je op je rootdisk uiteindelijk uitkomt met iets als /rootdisk/bin in plaats van /bin.
Controleer of er een /lib/libc.so voorkomt met dezelfde link die in je /lib directory op je harddisk staat.
Controleer of alle symbolische links in je /dev directory van je bestaande systeem ook voorkomen op je rootbestandssysteem op de diskette, waar die links naar devices verwijzen die je op je rootdiskette hebt opgenomen. In het bijzonder zijn in veel gevallen de /dev/console links essentieel.
Controleer of je de bestanden /dev/tty1, /dev/null, /dev/zero, /dev/mem, /dev/ram en /dev/kmem niet bent vergeten.
Controleer je kernelconfiguratie -- ondersteuning voor alle bronnen die nodig zijn tot op het punt van inloggen mogen geen modules zijn, maar zijn ingebouwd. Dus ondersteuning voor een ramdisk en ext2 moeten zijn ingebouwd.
Controleer of je kernel rootdevice en ramdisk instellingen correct zijn.
Nu we deze algemene aspecten éénmaal hebben gehad, zijn hier nog een aantal specifieke bestanden te controleren:
Zorg ervoor dat init is opgenomen als /sbin/init of /bin/init. Wees er zeker van dat het uitvoerbaar is.
Voer ldd init uit om te controleren op de library's van init. Gewoonlijk is dit slechts libc.so, maar controleer het toch maar. Zorg ervoor dat je de benodigde library's en loaders hebt ingesloten.
Verzeker je jezelf ervan dat je de juiste loader voor je library's hebt -- ld.so voor a.out of ld-linux.so voor ELF.
Controleer /etc/inittab op het bestandssysteem van je bootdisk op aanroepen naar getty (of een op getty-lijkend programma, zoals agetty, mgetty of getty_ps). Controleer deze tweemaal met inittab op je harddisk. Controleer de manpages van het te gebruiken programma om er zeker van te zijn dat deze zin hebben. inittab is mogelijk het lastigste onderdeel omdat de syntax en inhoud ervan afhangen van het in gebruik zijnde init programma en de aard van het systeem. De enige manier om het aan te pakken is de manpages van init en inittab lezen en exact uit te werken wat je bestaande systeem doet wanneer het boot. Controleer voor de zekerheid of /etc/inittab een systeeminitialisatie-entry heeft. Hierin zou een opdracht moeten staan voor het uitvoeren van het systeem initialisatiescript, dat voor moet komen.
Pas net als bij getty ldd toe op getty om te zien wat het nodig heeft, en zorg ervoor dat de benodigde library bestanden en loaders in je rootbestandssysteem zijn opgenomen.
Wees er zeker van dat je een shell-programma hebt ingesloten (b.v., bash of ash) welke al je rc-scripts kan uitvoeren.
Als je een /etc/ld.so.cache bestand op je rescue-disk hebt, maak het dan opnieuw aan.
Als init start, maar je een melding krijgt als:
Id xxx respawning too fast: disabled for 5 minutes |
Als je een loginprompt krijgt en je een geldige loginnaam invoert, maar het systeem vraagt je onmiddellijk daarna om nog een andere loginnaam, kan het probleem te maken hebben met PAM of NSS. Zie paragraaf Voorziening voor PAM en NSS. Het probleem kan ook zijn dat je shadow passwords gebruikt en /etc/shadow niet naar je bootdisk kopieerde.
Als je één of ander uitvoerbaar bestand, zoals df probeert uit te voeren, wat zich op je rescue-disk bevindt, maar het levert je een bericht op als: df: not found, controleer dan op twee zaken: (1) Verzeker je ervan dat de directory met het binaire bestand zich in je PATH bevindt, en (2) zorg ervoor dat de library's (en loaders) die het programma nodig heeft er zijn.