Wenn Lilo das System bootet, kann er nur die Daten-Sektoren laden, die
über das BIOS erreichbar sind. Jeder Pfadname in /etc/lilo.conf
wird zum Installationszeitpunkt ausgewertet, d.h. beim Aufruf von lilo
.
Dies ist auch der Zeitpunkt, bei dem das Programm die Zuordnungs-Tabelle (map)
erstellt. Diese Tabelle gibt an, welche Sektoren von den Dateien
benutzt werden.
Daraus folgt als Konsequenz, daß die Dateien in einer Partition liegen müssen,
welche über das BIOS ansprechbar ist. Außerdem muß jedesmal der Lader
neu-installiert werden (d.h. Aufruf von lilo
), sobald man die Files
ändert. Nach jeder Kernel-Kompilierung und erfolgreicher Installation ist
auch Lilo neu zu installieren.
Die boot =
Anweisung in /etc/lilo.conf
sagt dem Lilo, wohin
er den Haupt-Boot-Lader zu installieren hat. Im allgemeinen kann man den
Master-Boot-Record (z.B. /dev/hda
) oder die Root-Partition der
Linux Installation angeben (z.B. /dev/hda1
oder /dev/hda2
).
Wenn ein anderes Betriebssystem auf der Platte installiert ist,
sollte man Lilo besser in der Root-Partition unterbringen. In diesem
Fall ist diese Partition als ``bootable'' (bootbar) zu markieren. Das erreicht
man mit dem ``a'' Kommando von fdisk
oder mit dem ``b'' Kommando
von cfdisk
. Es ist einfacher Lilo und Linux (bei Bedarf) zu
entfernen, wenn Lilo nicht im Master Boot Record (MBR)
installiert wird.
Da ich nur Linux benutze, benötige ich die LBA- oder LARGE-Einstellung im BIOS nicht. Diese Einstellungen sind fürchterliche Krücken um Design-Schwächen der PCs zu umgehen. Diese fordern, daß der Kernel in den ersten 1024 Zylindern liegen muß; das ist kein Problem, so lange man seine Platte partitioniert und die Root-Partition klein hält. (Dies sollte man sowieso immer beachten)
Wenn auf der Platte aber schon ein anderes Betriebssystem installiert ist, kann es unter Umständen unmöglich sein, die BIOS-Einstellungen zu modifizieren, da sonst das alte System nicht mehr lauffähig wäre. Alle neueren Lilo-Distributionen sind jedoch fähig, mit den Einstellungen für LBA- und LARGE-Disk umzugehen.
Die Festplatten, die auschließlich unter Linux benutzt werden und von denen auch nicht gebootet wird, können aus dem BIOS ausgetragen werden. Dadurch bootet das System schneller und Linux erkennt diese Platten später trotzdem automatisch und ohne Zeitverlust. Ich schließe z.B. öfter zusätzlich Festplatten an meinen Rechner an, ohne die BIOS-Einstellung zu verändern.
Wenn der Lilo-Prompt erscheint, ist es durch Drücken der <Tab> Taste möglich eine Auswahlliste anzuzeigen. Sollte Lilo dafür nicht konfiguriert sein, so hilft das Drücken und Halten der <Alt> oder <Shift> Taste bevor ``LILO'' angezeigt wird.
Wenn man einen Kernel zum Booten auswählt, kann man nach dem ausgewählten Kernelnamen noch zusätzliche Kommandozeilen-Parameter angeben. Der Kernel akzeptiert umfangreiche Kommandozeilen-Parameter; dies ist aber nicht der richtige Ort, um sie alle aufzulisten. Einige sind aber meiner Meinung nach interessant:
root=
diese Partition soll als root gemountet werden, sie
kann unterschiedlich sein zu dem Eintrag in lilo.conf
.
Zum Beispiel, habe ich eine kleine Parition mit einem Minimal-Linux,
die es mir ermöglicht das System zu booten, sollte durch einen Fehler
meine Root-Partition zerstört werden.
init=
Version 1.3.43 und neuere Linux-Kernel akzeptieren das
Ausführen von anderen Programmen als /sbin/init
.
Wenn beim Booten kritische Probleme auftreten, ist es durch
init=/bin/sh
möglich ein spartanisches System zu starten.
Nach Erscheinen des Shell-Prompts ist es in den meisten Fällen nötig,
erstmal die Partitionen zu mounten:
/sbin/mount -w -n -o remount /; mount -a
Vor dem Ausschalten des Computers nicht vergessen,
/sbin/umount -a
aufzurufen.
eine Nummer in der Kernel-Kommandozeile veranlaßt
init den gewünschten Run-Level einzunehmen.
Der Default ist normalerweise 3. Bitte genaueres in der Dokumentation
zu init, /etc/inittab
und /etc/rc.d
nachlesen.
Wenn Lilo einen Boot-Sektor überschreibt, sichert er ihn in
/boot/boot.
xxyy. Dabei ist xxyy die Major- und
Minor-Device-Nummer in Hexadezimal.
ls -l /dev/device
zeigt einem die Major- und Minor-Nummern an. Zum Beispiel, der erste
Sektor von /dev/hda
(Major 3, Minor 0) wird in
/boot/boot.0300
gespeichert; installiert man Lilo auf
/dev/fd0
wird ein /boot/boot.0200
angelegt; die
Installation von Lilo auf /dev/sdb3
(Major 8, Minor 19)
sichert eine Kopie in /boot/boot.0819
.
Achtung: Sollte ein solches File schon existieren, wird von Lilo keine Kopie generiert. Darüber muß man sich bei der Installation von Lilo, z.B. nach einer Kernel-Kompilierung, aber nicht sorgen.
Sollte man in die Verlegenheit geraten, Lilo entfernen zu müssen, z.B.
bei der De-Installation von Linux, braucht nur der ursprüngliche Boot-Sektor
wieder hergestellt werden. Ist Lilo in /dev/hda
installiert,
genügt es,
dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
aufzurufen. Ich benutze einfach:
cat /boot/boot.0300 > /dev/hda
Dies ist aber nicht ganz sicher, da auch die ursprüngliche Partitionstabelle
mitrestauriert wird; diese könnte aber in der Zwischenzeit geändert
worden sein. Diese Kommando ist aber viel einfacher zu handhaben als ein
fdisk /mbr
in einer DOS shell, denn es erlaubt einem, sauber
Linux von der Platte zu entfernen, ohne ein anderes Betriebssystem zu
benötigen. Nachdem Entfernen von Lilo sollte man nicht vergessen, mit
dem Linux fdisk alle Linux-Partitionen zu löschen, da es mit dem
DOS fdisk nicht möglich ist diese zu löschen.
Ist Lilo auf der Root-Partition installiert, z.B. auf /dev/hda2
,
so ist keinerlei Aktion notwendig, um Lilo zu de-installieren. Nur das Linux
fdisk aufrufen und alle Linux-Partitionen aus der Paritionstabelle
entfernen. Nicht vergessen, die DOS-Partition als Boot-Partition zu markieren.