Unter Windows bzw. MS-DOS eine Bootdiskette zu erstellen ist denkbar einfach. Die Option
-s
beim Formatieren überträgt anschließend die notwendigen Daten einfach auf die
Diskette – und schon ist die Bootdisk fertig.
Unter Linux ist das ein kleines Bischen komplizierter – aber wirklich nur ein kleines
Bischen.
Bevor man eine Bootdiskette erstellt, sollte man unbedingt die Diskette zuvor überprüfen. Das
kann man mit dem Befehl badblocks
erledigen:
/sbin/badblocks -vs /dev/fd0 1440 # HD Diskette (1,44 MB)
bzw.
/sbin/badblocks -vs /dev/fd0 720 # DD Diskette (720 kB)
Der hash »#« und der von mir danach angegebenen Text ist natürlich nicht
einzugeben.
badblocks
überprüft eine Diskette nach defekten Sektoren und gibt im verbose-Modus
Meldungen aus. Die Angabe der Blöcke ist bei Debian erforderlich. Bei anderen Distributionen
(SuSE, RedHat, Mandrake, etc.) ist diese Angabe nicht zwingend erforderlich.
Mit dem Schalter -s kann man sich zusätzlich den Fortschritt anzeigen lassen.
Nachdem man die Diskette überprüft hat, kann man eine Bootdiskette erstellen. Zunächst die
Variante einer Bootdisk, die für einen speziellen Rechner zugeschnitten wird.
Die Diskette, die zur Bootdiskette werden soll, muß nicht formatiert sein. Es wird der Kernel
direkt auf die Diskette geschrieben, es wird also ein sogenanntes »raw device« erstellt. Der
Aufruf lautet:
dd if=<kernel> of=<ziel>
Hierbei steht if
für »input file« und of
für »output file«. Bevor man
mit Enter den Befehl ausführen läßt, sollte man also tunlichst die Syntax nochmal anschauen.
Ein Datenverlust ist bei Fehlbedienung nicht auszuschließen.
Die Kernel (meist sind es mehrere) findet man im Verzeichnis /boot
. Wer selbst schon
Kernel erzeugt hat, wird dies ohnehin schon wissen. Die Kernel können eigentlich beliebig
benannt werden, allerdings hält man sich meistens an die folgende Bezeichnung:
vmlinuz-<kernelnummer>-<komentar>
. Es wird also die Kernelnummer
angegeben, evtl. folgt anschließend noch ein kleiner Kommentar wie »router« oder
»neu1«.
Beispiel:
dd if=/boot/vmlinuz-2.4.18 of=/dev/fd0
Jetzt wird der Kernel auf das Floppylaufwerk übertragen.
Der erste Block des Kernels entpackt beim Bootvorgang die weiteren Blöcke (dauert meist
länger).
Der Kernel befindet sich jetzt auf der Diskette, aber einige für den Start relevanten Angaben
fehlen noch. Im Kernel-Image sind an bestimmten Stellen Standardwerte gespeichert, welche mit
dem kleinen Hilfsprogramm rdev editiert werden müssen. rdev ist auf den meisten Systemen
installiert und somit sollte der folgende Aufruf eigentlich kein Problem darstellen:
rdev <ziellaufwerk> <rootpartition>
Auch hierfür ein kleines Beispiel:
rdev /dev/fd0 /dev/hdb1
Die Partition, die vom Kernel nach »/« gemountet werden soll, ist bei dem oben angegebenen
Beispiel /dev/hdb1, also die erste primäre Partition auf der zweiten IDE-Festplatte.
Es muß noch ein zweiter Wert mit rdev gesetzt werden:
rdev -R /dev/fd0 1
Dieser Aufruf sorgt dafür, dass das System zunächst im sog. »single user mode« gestartet
werden soll.
In diesem Modus finden notwendige Prüfungen statt, anschließend geht der Bootvorgang weiter.
Dies bedeutet, dass der Wechsel in den »default runlevel« (angegeben in
/etc/inittab
) stattfindet. rdev
steht übrigens für »root device«
Vorteile:
Nachteile:
So, die Bootdiskette ist jetzt fertig. Noch mal kurz der Ablauf:
1. Diskette überprüfen
2. Kernel übertragen
3. Festlegen, welche Partition als »/« gemountet werden soll
4. System soll im »single user mode« gebootet werden
Diese Diskette kann natürlich nur dann funktionieren, wenn /dev/hdb1
auch wirklich
»/« entspricht. Ansonsten funktioniert es nicht. Die Diskette würde auf meinem Rechner
beispielsweise funktionieren – allerdings nicht auf einem Rechner, bei dem die erste primäre
Partition der ersten IDE-Festplatte oder gar eine Partition auf einer SCSI-Platte »/«
ist.
Im Gegensatz zum ersten Variante muß bei einer Bootdisk mit LILO drauf erstmal das Medium formatiert werden. Der folgende Aufruf formatiert die Diskette im ersten Floppylaufwerk im Format »minix«.
mkfs minix -c /dev/fd0 1440
Der Schalter -c
steht für »check«, der Datenträger wird also vor dem
Formatieren überprüft.
Falls das Dateiformat »minix« nicht unterstützt werden sollte formatiert
mke2fs /dev/fd0
die Diskette im ersten Floppylaufwerk im Format »ext2«.
Anschließend wird die formatierte Diskette gemountet:
mount -t minix /dev/fd0 /floppy
bzw.
mount -t ext2 /dev/fd0 /floppy
Der mountpoint kann beliebig gewählt werden, man muß dann allerdings im weiteren
Verlauf dieser Anleitung den von mir verwendeten Mountpoint /floppy
durch den
eigenen Mountpoint ersetzen.
Eventuell befindet sich bereits ein Eintrag in der /etc/fstab
und man kann die
Floppy auch bequem über mount /floppy
ohne weitere Parameter mounten.
/boot/boot.b
/boot/map /boot/chain.b /etc/lilo.conf /etc/lilo.msg (nur eventuell) /boot/vmlinuz (Achtung: Der Name der Datei kann bzw. wird differieren. es handelt sich dabei um den Kernel.)
Und natürlich ein Kernel, welcher gestartet werden soll. Kernel sind für gewöhnlich in
/boot
zu finden. Weitere Angaben zu den Kernel-Dateien siehe oben bei der
Bootdisk ohne LILO.
Was sind das nun für Dateien?
boot.b =>
Maschinencode
map =>
enthält ein Verzeichnis der Kernel-Root-Devices
chain.b =>
Pseudo-MBR für Nicht-Linux-Systeme
lilo.conf =>
LILO-Konfigurationsdatei
lilo.msg =>
eventuell vorhandene Message-Datei (wird beim Start von LILO
aufgerufen und am Bildschirm angezeigt)
Die Datei mbr.b
(1. LILO Stufe) ist nicht für eine Bootdiskette
notwendig.
Die vermutlich einfachste Möglichkeit, die Daten auf die Diskette zu bekommen ist:
cd /boot cp -vi boot.b map chain.b /etc/lilo.* /floppy cp -vi vmlinuz /floppy
Dann spart man sich die Angabe von /boot
vor den ganzen Dateien beim
Kopieren.
Anschließend ist die auf die Floppy kopierte lilo.conf
editieren. Die originale
lilo.conf
braucht man nicht zu bearbeiten – im Gegenteil. Bearbeitet man diese
und führt lilo aus, hat man evtl. den LILO auf der Festplatte »verkonfiguriert«.
Zurück zur lilo.conf
auf der Floppy: Der erste Eintrag muß vom Pfad her von der
Festplatte auf fd0
, dem ersten Floppy im System, geändert werden.
Die weiteren Änderungen sind den Kommentaren der folgenden Beispiel-lilo.conf
zu
entnehmen.
Achtung: Den Mountpoint der Floppy anpassen wenn er nicht /floppy
sein
sollte.
# /etc/lilo.conf - See: `lilo(' and `lilo.conf(5)', # lba32 boot = /dev/fd0 # geändert auf erstes Floppy im System message = /floppy/lilo.msg # Achtung: der Pfad muß zur gemounteten # Floppy gehen install = /floppy/boot.b # neuer Eintrag map = /floppy/map # neuer Eintrag prompt #delay = 50 # neu (wartet 5 Sekunden) vga=normal image = /floppy/vmlinuz-2.2.17.ws # geändert auf Floppy, der Name des # Kernels kann bzw. wird sich # unterscheiden. root = /dev/hda5 label = ws_floppy read-only alias = 0 # append = "ether=0,0,eth1"
Nachdem man die Änderungen an der sich auf der Floppy befindlichen lilo.conf
gespeichert hat, ruft man folgenden Befehl auf:
/sbin/lilo -C /floppy/lilo.conf
Jetzt wird LILO auf der Floppy installiert. Es werden dabei die Daten verwendet, die
in der /floppy/lilo.conf
stehen.
Nun zu den Vorteilen und natürlich auch den Nachteilen einer solchen Bootdisk:
Vorteile:
Nachteil:
Als dritte und letzte Variante einer Diskette, mit der man ein Linux-System booten
kann, kommt eine Bootdisk mit loadlin
zum Zuge.
loadlin
ist bei den meisten Distributionen auf einem der CDs oder der DVD zu
finden. Man kann loadlin aber auch aus dem Web beziehen: http://elserv.ffm.fgan.de/~lermen/.
Mit loadlin kann man von einer DOS-Bootdiskette (natürlich auch von
Win9x-Bootdisketten) ein bereits installiertes Linux starten. Es muß lediglich ein
Kernel mit auf der Floppy oder zumindest nach dem Booten von der Floppy erreichbar
sein.
Der Aufruf von loadlin gestaltet sich denkbar einfach:
Beispiel:
loadlin <kernel> root=/dev/hdb1
Natürlich hat sich bei diesem Aufruf ein Kernel auf der DOS-Diskette zu befinden.
Der Name des Kernels wird in der oben angegebenen Zeile eingefügt.
Achtung: Da es sich um eine DOS-Diskette handelt: Immer an die
8+3-Norm für Dateinamen denken. Man sollte seinem Kernel also einen Namen geben, der
nicht länger als acht Zeichen ist.
Vorteile:
Nachteile: