Antwoord: Zie paragraaf Probleemoplossing.
Antwoord: Zie paragraaf Hoe de pro's het doen.
Antwoord: De eenvoudigste manier is door aan een Slackware kernel vanaf je dichtsbijzijnde mirrorsite te komen. Slackware kernels zijn algemene kernels die voor zoveel mogelijk devices drivers op proberen 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, afhankelijk van het type controller dat je hebt, een IDE- of SCSI-kernel. Controleer het bestand xxxxkern.cfg voor de geselecteerde kernel om te bezien welke drivers in die kernel zijn opgenomen. Als het gewenste device in de lijst voorkomt, dan zou je met de corresponderende kernel je computer moeten kunnen booten. Download het bestand xxxxkern.tgz en kopieer het naar je bootdiskette zoals werd beschreven in de sectie over het maken van bootdisks.
Vervolgens moet je met behulp van de opdracht rdev zImage het rootdevice in de kernel controleren. Als deze niet hetzelfde is als het gewenste rootdevice, gebruik je rdev om het te wijzigen. De kernel die ik bijvoorbeeld probeerde was ingesteld op /dev/sda2, maar mijn root SCSI-partitie bevindt zich op /dev/sda8. Om het op een rootdiskette te gebruiken, zou je de opdracht rdev zImage /dev/fd0 uit moeten voeren.
Als je bovendien wilt weten hoe je een Slackware rootdisk in wilt stellen, dan raad ik je aan hiervoor de Linux Install Guide te lezen of aan de Slackware distributie te komen want dat valt buiten het kader van deze HOWTO. Zie in deze HOWTO de sectie getiteld ``Referenties''.
Antwoord: De gemakkelijkste manier is het bestandssysteem vanaf de rootdisk terug naar het eerder gebruikte DEVICE te kopiëren (zie paragraaf Aanmaken van het bestandssysteem). Mount vervolgens het bestandssysteem en maak de wijzigingen. Je zal moeten onthouden waar je rootbestandssysteem 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 |
Antwoord: Dit is niet echt een Bootdisk onderwerp, maar het wordt vaak gevraagd. Onder Linux doe je het volgende:
/sbin/lilo -u |
Je kunt ook gebruik maken van de opdracht dd waarbij je de door LILO opgeslagen backup naar de bootsector kopieert. Raadpleeg hiervoor de LILO documentatie als je het op deze manier wilt doen.
Onder DOS en Windows kun je de volgende DOS-opdracht gebruiken:
FDISK /MBR |
Antwoord: Als je geen bootdisk meer bij de hand hebt, is de eenvoudigste methode vermoedelijk voor te zorgen dat je aan een Slackware kernel voor je type diskcontroller (IDE of SCSI) komt zoals hiervoor werd beschreven in ``Hoe maak ik een bootdisk met een XXX driver?''. Je kunt je computer dan met behulp van deze kernel booten en vervolgens de opgelopen schade repareren.
Het kan zijn dat het rootdevice in deze kernel niet op het gewenste disktype en partitie is ingesteld. De algemene kernel van Slackware bijvoorbeeld heeft het rootdevice op /dev/sda2 ingesteld, terwijl mijn Linux rootpartitie op /dev/sda8 voorkomt. In dit geval zal het rootdevice in de kernel moeten worden gewijzigd.
Je kunt het root-device en de instellingen voor de ramdisk in de kernel nog steeds wijzigen zelfs al heb je alleen een kernel en een ander besturingssysteem zoals DOS.
rdev wijzigt de instellingen van de kernel door de waarden op vaste offsets in het kernelbestand aan te passen, dus je kunt hetzelfde doen als je een hex-editor tot je beschikking hebt. -- je kunt hierbij bijvoorbeeld gebruik maken van de Norton Utilities Disk Editor onder DOS. Je moet dan op de volgende offsets te 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 word werd hiervoor beschreven in paragraaf Instellen van het ramdisk word.
De major en minor devicenummers moeten worden ingesteld op het device waarop je het rootbestandssysteem wilt instellen. Een aantal nuttige waarden om te selecteren zijn:
DEVICE MAJOR MINOR /dev/fd0 2 0 1e diskettestation /dev/hda1 3 1 partitie 1 op 1e IDE-drive /dev/sda1 8 1 partitie 1 op 1e SCSI-drive /dev/sda8 8 8 partitie 8 op 1e SCSI-drive |
Antwoord: Omdat magnetische media mettertijd verslechtert, zou je verscheidene kopieën van je rescuedisk moeten bewaren, voor het geval het origineel onleesbaar wordt.
De eenvoudigste wijze om kopieën van een diskette te maken, waaronder opstartbare en utility-diskettes, is gebruik te maken van de opdracht dd om de inhoud van de oorspronkelijke diskette naar een bestand op je harddisk te kopiëren en dan dezelfde opdracht te gebruiken om het bestand terug naar een nieuwe 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 de opdracht:
dd if=DEVICENAME of=FILENAME |
Voor het kopiëren van het resulterende bestand naar een nieuwe diskette, doe je de nieuwe diskette in het diskettestation en geef je de opdracht omgekeerd:
dd if=FILENAME of=DEVICENAME |
In de uitleg hierboven wordt ervan uitgegaan dat je slechts één diskettestation hebt. Als je er twee van hetzelfde type hebt, kun je de diskettes kopiëren met een opdracht als:
dd if=/dev/fd0 of=/dev/fd1 |
Antwoord: Als een diskdevice niet automatisch kan worden gedetecteerd moeten er aan de kernel met een opdracht device parameterstrings worden opgegeven, zoals:
aha152x=0x340,11,3,1 |
Door het iedere keer dat het systeem wordt geboot via LILO op de opdrachtregel in te voeren. Dit is echter nogal vervelend.
Met behulp van LILO's lock keyword om ervoor te zorgen dat de opdrachtregel als de standaard opdrachtregel wordt opgeslagen, zodat LILO iedere keer dat het boot dezelfde opties gebruikt.
Met behulp van de opdracht append= in het configuratiebestand van LILO. De parameterstring moeten worden omsloten door aanhalingstekens.
Een voorbeeld van een opdrachtregel met de hiervoor genoemde parameterstring die zou worden gebruikt, zou zijn:
zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock |
Hiermee zou de parameterstring voor het device worden doorgegeven en zou de kernel ook worden gevraagd het rootdevice op /dev/sda1 in te stellen en de gehele opdrachtregel te bewaren en het voor alle toekomstige boots opnieuw te gebruiken.
Een voorbeeld van een APPEND opdracht is:
APPEND = “aha152x=0x340,11,3,1” |
De parameterstring moet op de opdrachtregel niet door aanhalingstekens worden omsloten, maar wel in de opdracht APPEND.
In de kernel moet de driver waarop de parameterstring betrekking heeft, zijn ingebouwd. Als dit niet zo is, dan is er niets wat er naar de parameterstring luistert, en zal je de kernel opnieuw moeten bouwen zodat het benodigde device erin is opgenomen. Ga naar /usr/src/linux en lees de README, de Linux FAQ en Installatie HOWTO voor het opnieuw bouwen van de kernel. Als alternatief kun je een algemene kernel voor het type disk ophalen en die installeren.
We raden je aan de LILO documentatie goed door te lezen voordat je met de LILO installatie gaat experimenteren. Onvoorzichtig gebruik van de BOOT opdracht kan partities beschadigen.
Antwoord: In een aantal situaties worden programmanamen in diverse utility's ingeprogrammeerd (hardcoded). Dit is niet altijd het geval, maar het geeft wel een verklaring waarom een uitvoerbaar bestand blijkbaar niet op je systeem kan worden gevonden zelfs al kun je zien dat het er is. Of een gegeven programma de naam van een andere programma heeft ingeprogrammeerd kun je achterhalen met behulp van de opdracht strings en door via een pipe de uitvoer door grep te laten gaan.
Bekende voorbeelden van hardcoding zijn:
In een aantal versies van shutdown is /etc/reboot hardcoded, dus moet reboot in de directory /etc worden geplaatst.
init heeft op z'n minst voor één persoon voor problemen gezorgd waarbij de kernel init niet kon vinden.
Verplaats de programma's óf naar de juiste directory, óf wijzig de configuratiebestanden (b.v. inittab) zodanig dat naar de juiste directory wordt verwezen. Plaats bij twijfel de programma's in dezelfde directory als waar ze op je harddisk staan, en gebruik dezelfde inittab en /etc/rc.d bestanden zoals die op je harddisk.
Antwoord: In die gevallen zal bij het booten een kernelmelding als de volgende worden weergegeven:
Ramdisk driver initialized : 16 ramdisks of 0K size |
Dit komt waarschijnlijk doordat de grootte door kernelparameters tijdens de systeemstart op 0 is ingesteld. Dit zou vermoedelijk kunnen zijn veroorzaakt door een over het hoofd geziene parameter in het configuratiebestand van LILO:
ramdisk= 0 |
Dit stond in een aantal oudere distributies in voorbeeldconfiguratiebestanden van LILO, en het werd hier geplaatst om eventuele voorgaande kernelinstellingen te overschrijven. Als er een dergelijke regel in voorkomt, verwijder je het.
Als je een ramdisk ter grootte van 0 probeert te gebruiken, kan de werking onvoorspelbaar zijn en in kernelpanics resulteren.