Als Lilo het systeem opstart, gebruikt het BIOS calls om de Linux kernel van de disk (IDE drive, floppy of wat dan ook) te laden. Daarom moet de kernel staan op een plek waar het BIOS bij kan.
Tijdens het opstarten is Lilo niet in staat om filesystem gegevens te lezen en
iedere padnaam die in /etc/lilo.conf
staat wordt gevonden tijdens het
installeren (als je /sbin/lilo draait). Tijdens het installeren bouwt
het programma de tabellen waarin de sectoren staan die gebruikt worden door de
bestanden die het operating systeem laden. Een consequentie hiervan is, dat al
deze bestanden in een partitie moeten staan die toegankelijk is voor het BIOS
(de bestanden staan meestal in de /boot
directory, wat betekent dat
alleen de root partitie van je Linux systeem door het BIOS benaderbaar moet
zijn).
Een andere consequentie van het BIOS gebaseerd zijn is dat je de lader moet her-installeren (d.w.z, /sbin/lilo draaien) telkens als je de Lilo setup wijzigt. Telkens als je een nieuwe kernel compileert en hem over je oude image heen zet, moet je Lilo opnieuw installeren.
De boot=
opdracht in /etc/lilo.conf
vertelt Lilo waar het de
primaire boot loader moet neerzetten. In het algemeen kun je hier het master
boot record (/dev/hda
) of de root partitie van je Linux installatie
(is normaal gesproken /dev/hda1
) aangeven.
Als je nog een ander operating systeem op je harde schijf hebt geinstalleerd, kun je Lilo beter in de root partitie zetten in plaats van het MBR. In dat geval moet je de partitie als ``bootable'' markeren door het ``a'' commando van fdisk of het ``b'' commando van cfdisk te gebruiken. Als je het master boot record niet overschrijft is het makkelijker om Linux en Lilo te de-installeren als dat nodig is.
Persoonlijk gebruik ik geen LBA of LARGE instellingen in het BIOS (maar ik draai enkel Linux); het is een enorm knullige oplossing, veroorzaakt door ontwerpfouten in de PC wereld. Hierdoor moet de kernel in de eerste 1024 cylinders staan, maar dat is geen probleem zolang je je harddisks partitioneert en je de root partitie klein houdt (wat je toch al moet doen).
Als je harddisk al een ander operating systeem bevat kun je de BIOS instellingen niet aanpassen, anders draait het oude systeem niet meer. Alle recente Lilo distributies kunnen met LBA en LARGE disk instellingen overweg.
Merk op dat de "linear
" variabele in /etc/lilo.conf
kan helpen
tegen afmetings problemen. De variabele instrueert Lilo om lineaire sector
adressen te gebruiken in plaats van sector/head/cylinder tupels.
De conversie naar 3D adressen is vertraagd naar run-time en maakt zodoende de
setup beter bestand tegen afmetings problemen.
Als je meer dan een harddisk hebt en sommigen hiervan alleen door Linux gebruikt worden, maar niet betrokken zijn bij het boot proces, kan je je BIOS vertellen dat ze niet geinstalleerd zijn. Je systeem zal sneller opstarten en Linux zal de disks zelf heel snel detecteren. Ik wissel vaak disks in mijn computers, maar kom nooit aan de BIOS configuratie.
Als je de Lilo prompt ziet, kan je door op de <Tab> toets te drukken een lijst met mogelijke keuzes te voorschijn halen. Als Lilo niet geconfigureerd is om interactief te zijn, moet je de <Alt> of de <Shift> toets ingedrukt houden voordat de ``LILO'' melding verschijnt.
Als je kiest om een Linux kernel op te starten, kun je command-line argumenten toevoegen achter de naam van het systeem dat je kiest. De kernel accepteert vele command-line argumenten. Alle argumenten worden opgesomt in de ``BootPrompt-HOWTO'' van Paul Gortmaker en ik zal ze hier niet herhalen. Een paar command-line argumenten zijn echter bijzonder belangrijk en zullen hier beschreven worden:
root=
: je kunt de Linux kernel vertellen als root een andere partitie
te mounten dan degene die in lilo.conf
staat.
Mijn systeem bijvoorbeeld heeft een hele kleine partite met een minimale
Linux installatie erop en ik kan het systeem ermee opstarten als ik per
ongeluk mijn root partitie vernield heb.init=
: kernel versie 1.3.43 en nieuwer kan in plaats van
/sbin/init
, het gespecificeerde commando uitvoeren. Als je
vervelende problemen tijdens het opstarten ondervindt, kun je het kale
systeem benaderen door init=/bin/sh
op te geven (als je dan de
shell prompt krijgt zul je hoogst waarschijnlijk zelf je disks moeten
mounten: probeer ``mount -w -n -o remount /; mount -a
'' en
onthoud om ``umount -a
'' te doen voordat je de computer uit
doet./etc/inittab
en
/etc/rc*.d
na om dit verder uit te zoeken.Als Lilo de boot sector overschrijft, bewaart het een kopie in
/boot/boot.
xxyy, waar xxyy de major en minor getallen van het
device zijn in hexadecimale notatie. Je kunt de major en minor getallen van je
disk of partitie zien door ``ls -l /dev/
device'' te draaien.
Bijvoorbeeld, de eerste sector van /dev/hda
(major 3, minor 0) zal
bewaard worden in /boot/boot.0300
, als je Lilo installeert op
/dev/fd0
wordt /boot/boot.0200
aangemaakt en als je Lilo op
/dev/sdb3
(major 8, minor 19) installeert, wordt
/boot/boot.0819
aangemaakt. Merk op dat Lilo het bestand niet aan zal
maken als er al een is. Je hoeft je dus geen zorgen te maken over de reserve
kopie als je Lilo her-installeert (bijvoorbeeld nadat je een nieuwe kernel hebt
gecompileerd). De reserve kopieen in /boot/
zijn altijd een
momentopname van de situatie voor de installatie van Lilo.
Als je ooit Lilo wilt verwijderen (bijvoorbeeld in het jammerlijke geval dat je
Linux wilt de-installeren), dan hoef je alleen de originele boot sector te
herstellen. Als Lilo geinstalleerd is op /dev/hda
, dan hoef je alleen
``dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
'' te doen (Ik doe
zelf gewoon ``cat /boot/boot.0300 > /dev/hda
'', maar dat is niet
veilig, omdat het tevens de originele partitie tabel herstelt, terwijl je die
intussen ook aangepast zou kunnen hebben). Dit commando is veel eenvoudiger
te draaien dan ``fdisk /mbr
'' in een DOS shell te draaien: het staat
je toe Linux netjes van een disk te verwijderen zonder ook maar iets anders op
te starten dan Linux. Nadat Lilo verwijderd is kunnen met Linux' fdisk
alle Linux partities vernietigd worden (DOS' fdisk kan dat niet)
Als je Lilo op je root partitie hebt geinstalleerd (bv. /dev/hda2
),
hoeft je niets speciaals te doen om Lilo te verwijderen. Draai Linux'
fdisk om de Linux partities te verwijderen uit de partitie tabel. Je
moet ook de DOS partitie als ``bootable'' markeren.