GRUB umziehen

Peter Voigt peter.voigt1 at gmx.net
Sun Jan 27 10:19:26 CET 2008


Es ist nicht zwingend erforderlich, mit chroot zu arbeiten, um
Grub auf einer anderen Platte bzw. auf einem anderem System,
als dem gerade laufenden Linuxsystem zu installieren. 

Grub setzt gar nicht voraus, in einem Linux-System installiert
zu werden, Grub benötigt nur eine Partition, die vom Bios aus
ansprechbar ist und genug Platz für seine Startdateien bietet. 
Und der Platzbedarf ist gering (wenige MByte).

Deshalb empfiehlt es sich ja, auf auf jeder Platte die ersten
paar Zylinder für die erste Partition zu verwenden, die nichts
anderes enthält, als die Bootloader-Dateien (und eventuell noch
einige Kernel und initrds, wenn man will). Dafür reichen 50
MByte idR locker aus.

Wenn man die Sache perfektionieren will, kann man auf dieser
Partition zusätzlich eine LiveCD installieren, die man aus-
schließlich als Wartungssystem nutzt. Diese LiveCD braucht 
nicht viel zu können, PuppyLinux oder DamnSmallLinux (DSL) wären
dafür eine gute Wahl. Die brauchen kaum mehr als weitere 50
bzw. 135 MByte Platz.

Zurück zur Fragestellung.

Die Probleme und Folgeprobleme aufgrund des Mountens von /dev/proc
in der chroot kann man vermeiden.

grub-install kennt für diese Zwecke den Parameter --root-directory

Der Parameter wird einfach auf das Wurzelverzeichnis der (gemounteten!)
Zielpartition gesetzt.

Vorsichtshalber wählt man gleichzeitig den Parameter --recheck.

Das ganze funktioniert am einfachsten unter einer LiveCD. (Und wenn
eine solche LiveCD schon installiert ist, vgl oben, ist das 
wunderbar einfach).

Beispiel:

Hat man die Platte von hdc auf hda physikalisch umgesteckt, lautet
der Aufruf, um grub auf der umgesteckten hda zu installieren, um
grub anschliessend von der umgesteckten hda zu starten, unter der 
laufenden livecd wie folgt:

mkdir /mnt/hda1
mount /dev/hda1 /mnt/hda1
grub-install --root-directory /mnt/hda1 --recheck /dev/hda

Damit wird im obersten Verzeichnis von /dev/hda1 ein neues Verzeichnis
/boot mit dem Unterverzeichnis /boot/grub angelegt und gleichzeitig
der mbr von hda passend angepasst, um davon zu booten.

Falls es Fehlermeldungen geben soll, könnte es daran liegen, dass 
/boot schon vorhanden ist. Dann das alte /boot auf /dev/hda1 einfach
umbenennen.

Achtung: Fehlerfalle!

Im Prinzip spielt es keine Rolle, welche LiveCD eingesetzt wird.
Aber es gibt eine Ausnahme.

Problematisch kann es werden, wenn ein altes Linux-System mit einer 
LiveCD neueren Datums bearbeitet wird, die bereits alle Platten hda 
... hdd auf sda ... sdd  ummappen (z.B. neuere [K]ubuntu-Versionen). 

Wenn IDE-Platten auf dem alten installierten Linux-System noch als hda 
(und noch nicht als sda) angesehen werden, einfach eine alte LiveCD 
verwenden. 

Oder eine neue LiveCD, die noch nicht ummappt, z.B. GRML 1.0.

Achtung: Fehlerfalle!

Und nicht vergessen, vor dem reboot die Datei ../boot/grub/menu.lst
anzupassen, weil sich der Standort der Platte verändert hat (in 
dem genannten Beispiel von (hd2,0) auf (hd0,0).

Falls man das alte .../boot umbenennen mußte (s.o), einfach die
die menu.lst aus dem alten ../boot verzeichnis rüberkopieren, bevor
man sie editiert.

pv







More information about the Linux mailing list