Grub bootable auf USB-Stick

November 22nd, 2007 at 11:35 by protokollfuehrer

Ich habe mir vor ein paar Tagen meinen Grub-Bootmanager zerschossen. Das geschah durch ein Update von “Rescue & Recovery”, einem Lenovo-Hilfstool. Offenbar bringt R&R einen eigenen Bootloader mit oder was auch immer. Auf jeden Fall zerschießt ein Update mal eben das System und nach dem Boot kommt nicht mehr der GRUB-Auswahlschirm, sondern eine Konsolenzeile in schwarz mit dem kurzen prägnanten Wort ‘GRUB’. Mehr kann passiert nicht. Keine Möglichkeit, irgendetwas einzugeben, noch irgendetwas anderes. Aber was soll man machen? Man will ja an sein System. Die übliche Googelei brachte mich zu der Erkenntnis, dass ich nicht der einzige mit durch R&R-Update zerschossenem System bin. Aber die anderen hatten einfach Linux neu installiert. Möglicherweise geht das auch, aber da auf meinem Rechner einige sehr wertvolle Daten lagen und ich zusätzlich kein CD-Rom-Laufwerk zur Hand hatte, mußte eine andere Lösung her: Das bestehende Linux auf der Platte mit einem Bootmanager auf dem USB-Stick booten und den Grub neu installieren.

Übersicht:

  1. USB-Stick mit Grub bespielen
  2. von USB booten
  3. die richtigen Partitionen auf der HD finden
  4. Grub neu installieren

Alle Beispiele beziehen sich auf meine Konfiguration: Lenovo ThinkPad T61p, Ubuntu 7.10 auf dritter Partition.

1. USB-Stick mit Grub versehen

Die Erstellung erfolgt unter Linux (z.B. von CD gestartet) folgendermaßen:

  1. USB-Stick löschen: cat /dev/zero > /dev/sda

    (Achtung! Natürlich kann man sich hier einiges kaputt machen. Es muss absolut sicher sein, dass man dass richtige Device /dev/xxx eingetragen hat. Der Vorgang kann einige Minuten in Anspruch nehmen.)

  2. Dann mit fdisk eine neue Partitionstabelle erstellen:

    fdisk /dev/sda -> o (create a new empty DOS partition table) -> n (add a new partition) -> FS-Type 83 (ext2) -> w (write to table and exit).

    Genauer:

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1009, default 1):
    Command (m for help): a
    Partition number (1-4): 1
    Command (m for help): w

  3. Rechner neu starten, damit das Linux den Stick mit der neuen Partition erkennt

  4. Dateisystem in die neue Partition schreiben: mkfs.ext2 /dev/sda1

  5. mounten:

    mkdir /media/stick
    mount /dev/sda /media/stick

  6. grub kopieren:
    linux:/media # mkdir -p /media/stick/boot/grub
    linux:/media # cp /boot/grub/*stage* /media/stick/boot/grub
    linux:/media # echo '(hd0)  /dev/sda' > /media/stick/boot/grub/device.map
    linux:/media # grub-install --root-directory=/media/stick /dev/sda
    linux:/media # umount /media/stick/
  7. mapping schreiben:

    linux:/media # echo '(hd0) /dev/sda' > /media/stick/boot/grub/device.map

    Das braucht der Grub um zu denken, der USB-Stick sei hd0,0. Warum auch immer.

So weit, so gut. All das ist nachzulesen unter [1].

2. Von USB booten

  • das BIOS auf usbboot stellen – hoffentlich vorhanden?!
  • den Rechner von USB booten. Es sollte die Grub-Console erscheinen

3. Richtige Partition finden

in der grub console folgendes eingeben:

  1. root (hd1,2)

    (hd0,0) ist der verdammte usbstick, bei mir war also auf Platte 2 in der dritten Partition das installierte Linux. Es sollte erkannt werden, dass es sich um eine ext2-Partition handelt

  2. kernel /vmlinuz root=/dev/sda3

    Die Information, was man als root= einträgt, kann man der Datei fstab entnehmen: cat /etc/fstab, bei SATA ist das /dev/sdaX

  3. initrd /initrd.img

  4. boot

  5. und die Kiste sollte starten!!! Jippie!

4. Grub neu installieren

Die Installation ist unter [2] beschrieben.

[1] Booten mit GRUB vom USB-Stick
[2] Grub neu installieren

Informative Links, die geholfen haben:

GNU GRUB – FAQ
Grub-Boot-Diskette – Gentoo Linux Wiki
grub boot root – Google-Suche
GRUB – LinuxWiki.org – Linux Wiki und Freie Software
LUG Krefeld: LinuxOhneBildschirm
Booten mit GRUB
grub broken – Google-Suche
“Kernel panic” beim booten Ubuntu->GRUB – Unixboard.de

4 Responses to “Grub bootable auf USB-Stick”

  1. volker Says:

    Hey,

    klasse! das hat mir geholfen (bei der Vorbereitung auf den GAU). Ich werde zwar R&R nicht updaten, aber WinXP von der Service Partition wieder herstellen (was angeblich den Bootloader nicht berührt… angeblich).

    Vielen Dank für die Veröffentlichung so einer spitzenmäßigen how-to Anleitung !

    Eine Anmerkung:
    in der grub console folgendes eingeben:

    1.
    root (hd1,2)

    (hd0,0) ist der verdammte usbstick, bei mir war also auf Platte 2 in der dritten Partition das installierte Linux. Es sollte erkannt werden, dass es sich um eine ext2-Partition handelt

    …hier stolperte ich am root Befehl… meine Linux-partition ist normalerweise hd0,4, was sich nach dem booten mit dem stick (hd0) aus Sicht von grub auf hd1,4 änderte, eben durch die weitere “hd” usbstick
    Vorschlag: den Mechanismus noch klarer darstellen oder Beispiel.

    ansonsten.. awesome

    Viele Grüße
    Volker

  2. protokollfuehrer Says:

    Jeah… Ich wurde gelesen!

  3. Zbigniew Says:

    Hi,

    I can not write german, so I replay in birhish. Sorry about that :)

    I did excacly the same ( usb disk boot able with grub ) but I also created a copy of thinkpad IBM_SERVICE partition ( to be able keep it for backup reason in case hard drive broken ).

    I’ve done it using “dd /dev/hda4 /dev/sda2″ .
    /dev/hda4 is the IBM_SERVICE
    /dev/sda2 is primary partionion number 2 on usb disk ( fat 32 ) created to bacukp IBM_SERVICE partition form orginal /dev/hda4.

    My problem is that i can not boot that (/dev/sda2) partion form usb disk.

    after boot form usb HDD, grub starts and I do:
    root (hd0,1)
    makeactive
    chainload +1
    boot

    and nothing happens??

    I have still this IBM_SERVICE on /dev/hda4 and I can boot from usb disk grub and then
    map (hd0) (hd1)
    map (hd1) (hd0)

    and then boot the IBM_SERVICE form hard drive (/dev/hda4) – and that’s work.

    My usb disk contains two fat partition /dev/sda0 (for /boot/grub/stage1 etc..) and /dev/sda1 ( a dd copy of IBM_SERVICE)

    Do you have any clue what might be the problem?

    Danke :)

  4. Johann Says:

    hi,
    hab das alles gemacht nur bootet der Rechner gar nicht. Also er findet grub nicht und sag dass kein “boot device” vorhanden ist. Irgendeine Idee?
    Der Rechner ist bootfähig! mit syslinux bootet er auch aber mit grub klappt es nicht!

    Gruß

Leave a Reply