V. Ik boot vanaf mijn boot/root-disks en er gebeurt niks. Wat kan ik doen?
Zie hiervoor de sectie Probleemoplossing.
V. Hoe werkt de Slackware/Debian/RedHat bootdisk?
Zie sectie Hoe de pro's het doen, above.
V. Hoe kan ik een bootdisk maken met een XYZ-driver?
De eenvoudigste manier is een Slackware kernel vanaf je dichtsbijzijnde Slackware mirror site te verkrijgen. Slackware kernels zijn algemene kernels waarin geprobeerd wordt drivers voor zoveel mogelijk devices op te nemen, dus als je een SCSI of IDE controller hebt, bestaat de kans dat er een driver voor in de Slackware kernel is opgenomen.
Ga naar de directory a1
en selecteer óf IDE óf een
SCSI-kernel afhankelijk van het type controller dat je hebt. Controleer het
bestand xxxxkern.cfg voor de geselecteerde kernel om de drivers die in die
kernel zijn opgenomen te zien. Als het device in die lijst voorkomt, dan zou
met de corresponderende kernel de computer moeten booten.
Download het bestand xxxxkern.tgz en kopieer het naar je bootdiskette zoals
in de sectie over het maken van bootdisks hiervoor is beschreven.
Je moet vervolgens met behulp van het commando rdev het root-device in de kernel controleren:
rdev zImage
rdev
zal dan het huidige root-device in de kernel weergeven.
Als dit niet hetzelfde is als het gewenste root-device, gebruik dan
rdev
om het te wijzigen.
De kernel die ik bijvoorbeeld probeerde was ingesteld op
/dev/sda2, maar mijn root SCSI-partitie is /dev/sda8.
Om een root-diskette te gebruiken, zou je het volgende commando hebben gebruikt:
rdev zImage /dev/fd0
Als je tevens wilt weten hoe je een Slackware root-disk in kunt stellen, nou ja, jammer dan, dat valt buiten het kader van deze HOWTO, dus raad ik je aan de Linux Install Guide te raadplegen of de Slackware distributie op te halen. Zie de sectie in deze HOWTO getiteld ``Referenties''.
V. Hoe update ik mijn boot-diskette met een nieuwe kerenl?
Kopieer de kernel voor een boot-diskette zonder bestandssysteem met het dd commando naar je boot-diskette of gebruik het cp commando voor een boot/root-disk. Raadpleeg in deze HOWTO de sectie getiteld ``Boot'' voor details over het aanmaken van een boot-disk. De beschrijving geldt evenzo voor het updaten van een kernel op een bootdisk.
V. Hoe werk ik mijn root-diskette bij met nieuwe bestanden?
De eenvoudigste manier is het bestandssysteem van de rootdisk naar het gebruikte DEVICE terug te kopiëren (vanuit de sectie Aanmaken van het bestandssysteem van hiervoor). Mount vervolgens het bestandssysteem en maak de wijzigingen. Je zult moeten onthouden waar je root-bestandssysteem begon en hoeveel blokken het in beslag nam:
dd if=/dev/fd0 bs=1k skip=ROOTBEGIN count=BLOCKS | gunzip > DEVICE mount -t ext2 DEVICE /mnt
Na het maken van de wijzigingen ga je verder als voorheen (in Sectie Het samenpakken) en transporteer het root-bestandssysteem terug naar de disk. Het is niet nodig de kernel te hertranspoteren of het ramdisk word te herberekenen als je de startpositie van het nieuwe root-bestandssysteem niet wijzigt.
V. Hoe verwijder ik LILO zodat ik DOS weer kan gebruiken om te booten?
Dit is niet echt een Bootdisk onderwerp, maar het wordt vaak gevraagd. Onder Linux, kun je opgeven:
/sbin/lilo -u
Je kunt ook het commando dd
gebruiken om de door LILO bewaarde
backup naar de bootsector te kopiëren.
Raadpleeg de LILO-documentatie als je dit wilt doen.
Onder DOS en Windows kun je het DOS-commando gebruiken:
FDISK /MBR
MBR staat voor Master Boot Record, en het vervangt de bootsector door een opgeschoond DOS-exemplaar, zonder effect te hebben op de partitie-tabel. Een aantal puristen zijn het hier niet mee eens, maar zelfs de auteur van LILO, Werner Almesberger raadt het aan. Het is eenvoudig en het werkt.
V. Hoe kan ik booten als ik mijn kernel en mijn bootdisk niet meer heb?
Als je geen bootdisk bij de hand hebt, is waarschijnlijk de eenvoudigste methode een Slackware kernel voor je type diskcontroller (IDE of SCSI) te verkrijgen zoals hiervoor is beschreven in ``Hoe maak ik een bootdisk met een XXX driver?''. Je kunt je computer dan met behulp van deze kernel booten, en de opgelopen schade herstellen.
De kernel die je krijgt is mogelijk niet ingesteld op het root-device voor het type disk en de partitie die je wilt. Slackware's algemene SCSI-kernel heeft het root-device bijvoorbeeld ingesteld op /dev/sda2, terwijl mijn root Linux-partitie zich bevindt op /dev/sda8. In dit geval zal het root-device in de kernel moeten worden gewijzigd.
Je kunt nog steed het root-device en de ramdisk instellingen in de kernel wijzigeen ook als heb je alleen een kernel en een ander besturingssysteem zoals DOS.
rdev
wijzigt kernel-instellingen door het wijzigen van de waarden op
vastgestelde offsets in het kernelbestand, dus je kunt hetzelfde doen als je
een hex-editor beschikbaar hebt onder welk systeem je dan ook draait
-- zoals bijvoorbeeld met de Norton Utilities Disk Editor onder DOS.
Je moet dan op de volgende offsets de waarden in de kernel controleren en
zonodig wijzigen:
HEX DEC DESCRIPTION
0x01F8 504 Low byte van RAMDISK word
0x01F9 505 High byte van RAMDISK word
0x01FC 508 Root minor device nummer - zie hieronder
0X01FD 509 Root major device nummer - zie hieronder
De interpretatie van het ramdisk is hiervoor beschreven in Sectie Instellen van het ramdisk word.
De major en minor device-nummers moeten worden ingesteld naar het device waarop je je root-bestandssysteem wilt mounten. Een aantal nuttige uit te kiezen waarden zijn:
DEVICE MAJOR MINOR
/dev/fd0 2 0 1e diskettestation
/dev/hda1 3 1 partitie 1 op 1e IDE-disk
/dev/sda1 8 1 partitie 1 op 1e SCSI-disk
/dev/sda8 8 8 partitie 8 op 1e SCSI-disk
Zodra je deze waarden hebt ingesteld, kun je het bestand naar een diskette
met behulp van óf de Norton Utilities Disk Editor, óf een
programma genaamd rawrite.exe
wegschrijven. Dit programma is in
alle distributies opgenomen. Het is een DOS-programma waarmee een bestand
naar ``raw'' disk wordt weggeschreven, te beginnen bij de bootsector,
in plaats dat het naar het bestandssysteem wordt weggeschreven.
Als je Norton Utilities gebruikt, moet je het bestand naar een fysieke disk
wegschrijven te beginnen aan het begin van de disk.
V. Hoe kan ik extra kopieën maken van boot/root-diskettes?
Omdat magnetiche media mettertijd verslechteren, zou je verscheidene kopiën van je rescue-disk moeten bewaren, voor het geval het origineel onleesbaar is.
De eenvoudigste wijze om kopiën van een diskette te maken, waaronder
opstarbare en utility-diskettes, is gebruik te maken van het commando
dd
om de inhoud van de oorspronkelijke diskette naar een bestand
op je harddisk te kopiëren en dan hetzelfde commando te gebruiken om
het bestand terug naar een nieuw diskette te kopiëren.
Het is niet nodig de diskettes te mounten en je zou dit ook niet moeten doen,
omdat dd
gebruik maakt van de raw device interface.
Typ voor het kopiëren van het origineel het commando:
dd if=DEVICENAME of=FILENAME
waar DEVICENAME is de device naam van de diskette drive
en FILENAME de naam is van het (hard-disk) uitvoerbestand
Het achterwege laten van de parameter count
zorgt ervoor dat dd
de gehele diskette kopieert (2880 blokken voor een high-density disk).
Doe de nieuwe diskette in het station en tik het omgekeerde commando in om het resulterende bestand naar een nieuwe diskette terug te kopiëren:
dd if=FILENAME of=DEVICENAME
In deze beschrijving wordt ervan uitgegaan dat je slechts één diskettestation hebt. Als je er twee van hetzelfde type hebt, kun je diskettes met een commando kopiëren als:
dd if=/dev/fd0 of=/dev/fd1
V. Hoe kan ik booten zonder ieder keer "ahaxxxx=nn,nn,nn" in te tikken?
Waar een diskdevice niet automatisch kan worden gedetecteerd is het nodig de kernel met een commando een device parameterstring op te geven, zoals:
aha152x=0x340,11,3,1
Deze parameterstring kan op verscheidene manieren met behulp van LILO
worden aangeleverd:
lock
'' sleutelwoord om
te maken dat de commandoregel als de standaard commandoregel wordt bewaard,
zodat LILO iedere keer dat het boot dezelfde opties zal gebruiken.
append=
statement in het LILO
configuratiebestand. De parameterstring moet worden omsloten door
aanhalingstekens.
Een voorbeeld van een commandoregel door gebruik te maken van de parameterstring van hierboven zou zijn:
zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock
Hiermee zou de parameterstring van het device worden doorgegeven, en ook de kernel worden gevraagd het rootdevice op /dev/sda1 in te stellen en de gehele commandoregel op te slaan en het voor alle toekomstige boots te hergebruiken.
Een voorbeeldopdracht van APPEND is:
APPEND = "aha152x=0x340,11,3,1"
De parameterstring moet op de commandoregel NIET door dubbele aanhalingstekens worden omsloten, maar in de APPEND-opdracht MOET het wel door dubbele aanhalingstekens worden omsloten.
Merk ook op dat de kernel de driver voor dat type disk moet bevatten waarop de parameterstring betrekking heeft. Als dit niet zo is, dan is er niets luisterend voor de parameterstring, en zal je de kernel opnieuw moeten bouwen waarbij je de benodigde driver insluit. cd naar /usr/src/linux en lees de README en lees de Linux FAQ en Installatie HOWTO voor details over het opnieuw bouwen van de kernel. Als alternatief zou je een algemene kernel voor het type disk kunnen verkrijgen en dat installeren.
Lezers worden sterk aangespoord de LILO documentatie te lezen voordat zij met
de LILO-installatie gaan experimenteren.
Onzorgvuldig gebruik van het BOOT
statement kan partities beschadigen.
V. Tijdens het booten krijg ik de fout "A: cannot execute B
". Waarom?
Er zijn verscheidene gevallen waarbij namen van programma's in diverse utilities
zijn ingeprogrammeerd (hardcoded). Deze gevallen vinden niet overal plaatst,
maar het kan een verklaring geven waarom een uitvoerbaar bestand blijkbaar niet
op je systeem is te vinden, zelfs al zie je dat het er is.
Je kunt er achter komen of een gegeven programma de naam van een ander programma
heeft ingeprogrammeerd door gebruik te maken van het commando strings
en de uitvoer door grep
te sturen.
Bekende voorbeelden van hardcoding zijn:
reboot
in de directory /etc
directory worden geplaatst.
init
heeft voor tenminste één persoon problemen
veroorzaakt, waarbij de kernel niet in staat is init
op te sporen.
Om deze problemen te herstellen, verplaats je deze programma's óf
naar de juiste directory, of wijzig je de configuratiebestanden
(b.v. /inittab
) dat ze naar de juiste directory verwijzen.
Plaats bij twijfel de programma's in dezelfde directory's als waar ze op
je harddisk staan, en gebruik dezelfde inittab
en
/etc/rc.d bestanden zoals ze op je harddisk voorkomen.
V. Mijn kernel heeft ondersteuning voor een ramdisk, maar initialiseert ramdisks van 0K
Waar dit plaatsvindt, zal tijdens het booten van de kernel een vergelijkbare melding als de volgende verschijnen:
Ramdisk driver initialized : 16 ramdisks of 0K size
Dit komt waarschijnlijk doordat de grootte tijdens de systeemstart door kernelparameters op 0 is ingesteld. Dit zou kunnen zijn veroorzaakt door een over het hoofd geziene parameter in het configuratiebestand van LILO:
ramdisk= 0
Dit kwam voor in voorbeelden van configuratiebestanden van LILO in een aantal oudere distributies, en was daar geplaatst om een eventuele voorgaande kernelinstelling te overschrijven. Verwijder een dergelijke regel als 't voorkomt.
Als je probeert een ramdisk te gebruiken die is ingesteld op 0K, het gedrag onvoorspelbaar kan zijn, en het in kernel panics kan resulteren.