26. Juni 2008
Ihr Vorhaben
Sie wollen von einem USB-Stick ein Linuxsystem booten.
Das Vorgehen
Partitionieren
Als Bootloader ist GRUB gut geeignet. Folgendes Vorgehen
illustriert, wie auf einem USB-Stick ein funktionsfähiger
Bootloader installiert werden kann:
Zunächst überschreiben wir den kompletten Stick
mit Nullbytes. Wenn im System keine SCSI-, SATA- oder andere
USB-Speichermedien hängen, ist das Gerät des USB-Sticks
in der Regel /dev/sda. Im Folgenden gehen wird davon aus,
dass /dev/sda dem USB-Stick entspricht.
Achtung: der folgende Befehl
löscht unwiederbringlich alle Daten auf diesem Gerät!
Verschaffen Sie sich vorher Sicherheit, welche Gerätedatei
ihr USB-Stick wirklich anspricht!
root@linux# cat /dev/zero > /dev/sda
cat: write error: No space left on device
Nun legen wir eine Partitionstabelle mit einer Partition
an und aktivieren diese (Bootable-Flag). Das geht
z.B. mit fdisk /dev/sda oder cfdisk /dev/sda.
Wichtig: Damit der Kernel die neue Partitionstabelle wirklich richtig
interpretiert, kann es notwendig sein, den USB-Stick einmal aus-
und wiedereinzustecken.
Dateisystem anlegen
Die neue Partition heißt /dev/sda1. Auf dieser
legen wir ein Dateisystem an, z.B. vom Typ ext2:
root@linux# mkfs.ext2 /dev/sda1
GRUB installieren
Nun bereiten wir eine Verzeichnisstruktur für GRUB vor
und installieren diesen auf dem USB-Stick. Dazu mounten wir
die neue Partition zunächst nach /mnt:
root@linux# mount /dev/sda1 /mnt
Grub legt im Verzeichnis /boot/grub. Diese legen
wir an und kopieren die Teil des Bootloaders hinein, am einfachsten
von der Festplatte unseres Enwticklungssystems, das hoffentlich
auch mit GRUB bootet:
root@linux# mkdir -p /mnt/boot/grub
root@linux# cp /boot/grub/*stage* /mnt/boot/grub
Da GRUB Festplatten anders benennt, als der Linuxkernel, müssen
wir eine Datei anlegen, in dem wir GRUB sagen, dass /dev/sda
seine erste Festplatte ist:
root@linux# echo '(hd0) /dev/sda' > /mnt/boot/grub/device.map
Nun kann man GRUB im MBR der USB-Platte installieren:
root@linux# grub-install --root-directory=/mnt /dev/sda
Wichtig: Das Unmounten nicht vergessen:
root@linux# umount /mnt
Test
Wenn Sie bisher alles richtig und nichts falsch gemacht haben,
müssen Sie jetzt einen PC von diesem USB-Stick booten
können. Im Erfolgsfall werden sie vom Prompt von GRUB
begrüsst:
GNU GRUB version 0.96 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub>
Jetzt fehlt natürlich noch der Kernel, eine initial Ramdisk und
eine Konfiguration für GRUB unter /boot/grub/menu.lst.
Das Vorgehen ist aber exakt wie bei der Festplatte. Die Bezeichnung
für die Partition /dev/sda1 ist bei Grub (hd0,0).
Hinweis: Manche USB-Sticks verhalten sich gegenüber Linux nicht transparent.
Sie missbrauchen scheinbar bestimmte Speicherbereiche, um Information
zur Verwaltung des Flashspeichers abzulegen. Dabei gehen sie z.B. implizit
davon aus, dass der USB-Stick mit einem Windows-Dateisystem
beschrieben wird, was man aus unserer Sicht durchaus als "Bug"
bezeichnen kann. Leider steht sowas nie auf der Packung...
Das oben beschriebene Verfahren kann dazu führen, dass es bei solchen USB-Sticks
zu Fehlern kommt. Unter Umständen muss der USB-Stick mit einem speziellen
Verfahren neu dann initialisiert werden. Uns ist nicht bekannt, dass es zu
einem permanenten Defekt kommen kann, schließen aber jede Haftung in so einem
Fall aus.
|