Skip to main content

Bootloader GRUB auf USB Stick installieren (oostubs)

Da ich zur Zeit in dem Fach Betriebssysteme an der Uni selber ein Betriebssystem (oostubs) programmiere und dieses auch mal auf realer Hardware testen wollte, habe ich mir auf einem USB Stick den Bootloader GRUB installiert. Da viele Kommilitonen das auch machen wollen, erkläre ich es einfach mal.

Also als aller erstes braucht ihr ein Linux und müsst es gebootet haben (geht auch ohne, aber ich möchte diesen Weg erklären).

Als erstes wäre es interessant zu wissen, welche grub Version ihr installiert habt. Dafür gibt man in der Konsole einfach mal folgendes ein:

grub --version

Wenn dort irgend etwas von 0.9 steht, dann ist es GRUB Legacy und wenn dort etwas ähnliches wie 1.9 steht, dann ist es GRUB2. Dies ist zumindest wichtig für die spätere Erstellung der Booteinträge.

Nun fangen wird mit dem formatieren des USB Sticks an. Grub Legacy unterstützt in der aktuellsten Version folgende Dateisysteme:

ext2, ext3, UFS, UFS2, ReiserFS, FAT, NTFS, ISO9660, JFS, Minix, FFS, XFS

GRUB2 unterstützt zusätzlich noch ext4.

Da ich annehme, dass hier ein Windows User dies durchführen möchte, würde ich einfach mal FAT32 empfehlen.

Unter Linux rate ich dazu GParted für die Formatierung zu nutzen. Falls es nicht installiert ist, einfach im Paketmanager nachinstallieren. Um die Partitionen z.B. mit FAT formatieren zu können, wird meistens noch das Paket dosfstools benötigt. Danach einfach GParted starten, oben rechts den USB Stick auswählen und dann einfach weiter machen. Das Programm ist eigentlich recht leicht zu bedienen (bitte aufpassen, dass die richtige Festplatte ausgewählt ist und dran denken, dass beim Formatieren alle Daten verloren gehen). Das Boot Flag ist nicht nötig.

Dann bitte die formatierte Partition mounten (z.B. im Dateibrowser). Jetzt brauchen wir einmal die Adresse des USB Sticks. Dies steht z.B. bei GParted oben rechts (z.B. /dev/sdb). Ebenso wird der Mountpoint des USB Sticks benötigt. Dies sollte im Dateibrowser stehen - den Pfad kann man dort leicht über Strg+L anzeigen lassen. Alternativ gibt man in der Konsole

mount

ohne Optionen ein. Dort werden alle gemounteten Devices angezeigt. Dort guckt man bei dem USB Stick Device nach (also /dev/sdb oder was es bei euch ist). Es sollte meistens ein Unterordner von ‘/media/’ sein z.B. ‘/media/usbstick’.

Nun fahren wir fort und können gleich in der Konsole loslegen:

grub-install --no-floppy --root-directory=/media/usbstick /dev/sdb

Die Pfade sollte man natürlich anpassen. Bitte pass auf, dass es wirklich die richtigen Pfade/Geräte sind. Sonst überschreibst du evtl. noch irgendwas auf deiner Festplatte.

Bei diesem Befehl haben wir nun GRUB im Master Boot Record (MBR) und auf dem Dateisystem (unter /media/usbstick/boot/) des USB Sticks installiert. Wie das mit dem Bootloader funktioniert, kann man z.B. bei Wikipedia nachlesen.

Als nächstes müssen wir die Booteinträge anlegen. Dazu zeige ich, wie es funktioniert, wenn man oostubs starten will. Ich werde in den Beispieldateien mehrere Einträge angeben, da die Reihenfolge und Anzahl der Festplatten unterschiedlich ist. Solltest du noch mehr Festplatten haben, erstelle analog noch mehr Einträge. Bitte beachte, dass ich davon ausgehe, dass auf dem USB Stick nur eine Partition ist. Gegebenenfalls muss bei z.B. “(hd0,0)” die zweite Zahl erhöht werden (halt die wievielte Partition).

Ab jetzt wird es wichtig, welche GRUB Version installiert ist:

GRUB Legacy

Erstelle auf dem Dateisystem des USB Sticks unter “boot/grub/” die Datei “menu.lst” und trage folgendes ein:

title oostubs (1)
root (hd0,0)
kernel /oostubs

title oostubs (2)
root (hd1,0)
kernel /oostubs

Bitte ersetze “oostubs” mit dem Namen deiner Betriebssystemdatei. Hier ist es wichtig, dass alles klein geschrieben wird (also z.B. anstatt “DO9-23” schreibst du “do9-23”, auch wenn deine Datei groß geschrieben ist).

GRUB2

Erstelle auf dem Dateisystem des USB Sticks unter “boot/grub/” die Datei “grub.cfg” und trage folgendes ein:

menuentry "oostubs (1)" {
set root=(hd0,1)
linux /oostubs
}

menuentry "oostubs (2)" {
set root=(hd1,1)
linux /oostubs
}

Wie man hier sieht, hat sich die Datei und die Syntax geändert. Beachte bitte auch, dass die Partitionen nun ab “1” anstatt “0” gezählt werden.

Bitte hier wieder “oostubs” mit dem passenden Namen ersetzen.


Nun muss man nur noch die Betriebssystemdatei in das Rootverzeichnis des USB Sticks kopieren und fertig ist es. Probiere es doch einfach mal aus. Denke dran, dass der USB Stick im BIOS (meist über F2 oder “Entfernen” beim Booten zu erreichen) in der Boot Reihenfolge berücksichtigt wird (also vor allen anderen). Bei manchen BIOS Versionen ist es so, dass USB Sticks als Festplatten erkannt werden und nicht zu “Removable Devices” zählen.

Sollte dort das Booten mit dem ersten Booteintrag nicht funktionen einfach auf “Esc” drücken und nächsten auswählen. Falls mehr Festplatten installiert sind, kann man z.B. über “E” die Einträge (temporär) ändern.