Ich bastle meinen VDR grade auf eine neue Basis um. Da sollen System+Daten dann auf eine externe Platte. Was mir noch nicht klar ist, wie findet grub bei den sich potentiell ändernden Devices (sd<xy>) dann das root-Verzeichnis? Eine statische device.map (und auch menu.lst) kann ich ja streng genommen nicht angeben, weil es könnte ja noch eine externe (Daten-) Platte dazu kommen...?!
[gelöst] grub und externe Festplatte?
- habichthugo
- Geschlossen
-
-
Einfach die UUID statt des (momentanen) Devicenamens benutzen. Um die UUID einer Partition zu ermitteln, gibt es die utilities blkid oder vol_id.
-
Zitat
Original von diedl2003
Einfach die UUID statt des (momentanen) Devicenamens benutzen. Um die UUID einer Partition zu ermitteln, gibt es die utilities blkid oder vol_id.
Aha, und wie sieht das dann konkret aus? Z.B.
# grub-install UUID=... root=UUID=
??p.s.: sowas wie <this> gibt's nicht? Also z.B. (this,1) = zweite Partition der aktuellen Platte (von deren MBR gebootet wird)?
-
Hi,
UUID kannst Du mit blkid auslesen:
http://wiki.ubuntuusers.de/blkid
Die Platte dann wenn Du manuell mountest mit noauto in die fstab eintragen:
So ungefähr:Gruß Axel
-
Hallo,
bei meinem Ubuntu sieht ein Menüeintrag für grub2 wie folgt aus:
Codemenuentry "Ubuntu Linux" { insmod ext2 set root=(hd0,1) search --no-floppy --fs-uuid --set b2b91e17-70a6-4104-bbc6-acd1224d7278 linux /vmlinuz-2.6.31-19-generic root=UUID=b008fd27-4027-4fe5-b6e7-8e06f1f41734 ro quiet splash initrd /initrd.img-2.6.31-19-generic }
Dabei ist der search --set die UUID der /boot partition und hinter linux die UUID der root Partition. Damit findet grub immer das richtige boot device. Allerdings muss auch die ftsab entsprechend aufgebaut werden, damit dort auch UUIDs statt der Devices verwendet werden.
Code# / on /dev/sdb6 UUID=b008fd27-4027-4fe5-b6e7-8e06f1f41734 / ext4 errors=remount-ro 0 1 # /boot on /dev/sdb1 UUID=b2b91e17-70a6-4104-bbc6-acd1224d7278 /boot ext4 defaults 0 2
Das funktioniert generell auch mit dem alten grub, aber leider kann ich nicht mehr nachsehen, denn ich habe jetzt komplett auf Ubuntu 9.10 inkl. grub 2 umgestellt.
Vielleicht hilft das ja weiter.
KiWiX
-
Alternativ kannst du auch eines der diversen Live-Linuxe verwenden, die finden dann ihr root-Device von selbst. Ich hab zum Beispiel ein Knoppix auf meiner USB-Platte, das sich dank persistentem Disk-Image wie ein ganz normales Linux-System verwenden lässt - und das sogar auf beliebigen Rechnern.
Gruß,
Udo
-
Zitat
Original von Urig
Alternativ kannst du auch eines der diversen Live-Linuxe verwenden, die finden dann ihr root-Device von selbst. Ich hab zum Beispiel ein Knoppix auf meiner USB-Platte, das sich dank persistentem Disk-Image wie ein ganz normales Linux-System verwenden lässt - und das sogar auf beliebigen Rechnern.
Ja, so ein Knoppix habe ich auch, u.a. um auf diversen Rechnern Sicherungen der Systempartitionen machen zu können. Aber wie ist das da eigentlich gelöst? Ein VDR auf Knoppix-Basis ist wohl eher daneben... -
-
Freunde, ich blick das einfach nicht. Eine externe Platte hat doch weder eine feste BIOS-Zuordnung, noch einen dauerhaften Gerätenamen. Wie zum Henker soll ich bei grub-install dann das root-directory angeben, wenn dort weder Label noch UUID erlaubt sind?
Also z.B.
# grub-install --root-directory=UUID=... /dev/sda
oder
# grub-install --root-directory=LABEL=... /dev/sda
mag grub nicht.Kann man grub nicht irgend wie beibiegen, die n-te Partition der Boot-Platte (deren MBR gebootet wird) als root zu nehmen?
-
für das root directory von grub: das mountest du einfach nach irgendwo und gibst dann als grub rootdir den pfad an. zweckmässig wäre also ein vorheriger mount des ganzen nach /boot.
edit: kann man ja sogar einfach erklären, er will ein rootdir, kein rootdevice
-
Also IMHO ist die Platte von der Du bootest immer "/dev/sda", alle anderen werden danach "aufaddiert" "/dev/sdb" ...
Der Befehl sollte so lauten:
Wobei "/mnt" der Mountpoint Deiner externen Platte und "/dev/sda" das Devicefile ist. "grub-install" benötigt "/mnt/boot" um "/mnt/boot/grub/device.map" anzulegen. Diese solltest Du nach der Installation an Deine Bedürfnisse anpassen, bevor Du die externe Platte demontierst. Empfehlenswerterweise steht da dann nur "/dev/sda" drin.
Ein gute Beschreibung gibt es auch hier.
Gruß
Frank -
Ne, so geht das eben nicht:
Zitat
Auf x hatte ich übrigens /dev/sda3 gemountet (mit /boot/grub etc. drauf).
Grub scheint sich die BIOS-Nummer der Platte in den MBR schreiben zu wollen. Aber die kann sich doch ändern, wenn ich z.B. 'ne zweite externe Platte dazu hänge...?! -
Zitat
Original von habichthugo
Auf x hatte ich übrigens /dev/sda3 gemountet (mit /boot/grub etc. drauf).
Grub scheint sich die BIOS-Nummer der Platte in den MBR schreiben zu wollen. Aber die kann sich doch ändern, wenn ich z.B. 'ne zweite externe Platte dazu hänge...?!Nein, das war früher der "lilo" der das gemacht hat.
Grub(2) schreibt einen unabhängigen Code in den MBR, wobei "grub-install" nur sicherstellen möchte, das die Konfiguration in "/mnt/boot/grub/device.map" korrekt ist. Der Parameter "--recheck" löst Dein Problem, Du mußt nur danach "/mnt/boot/grub/device.map" nach Deinen Wünschen anpassen, da er dort alle gefundenen HDD reinschreibt.
[EDIT] Natürlich prüft grub-install auch die menu.lst (grub) bzw. grub.cfg (grub2) [/EDIT]
Hast Du wenigstens mal einen Blick in den Grub-Artikel aus dem Ubuntuuser Wiki geworfen?
Gruß
Frank -
Hi,
mit fdisk das Boot-Attribut gesetzt?
Grüße joker
-
@joker4791
Das setze ich aus alter Gewohnheit auch immer, ist aber heute eigentlich nicht mehr nötig.
Gruß
Frank -
Zitat
Original von fnu
Grub(2) schreibt einen unabhängigen Code in den MBR, wobei "grub-install" nur sicherstellen möchte, das die Konfiguration in "/mnt/boot/grub/device.map" korrekt ist. Der Parameter "--recheck" löst Dein Problem, Du mußt nur danach "/mnt/boot/grub/device.map" nach Deinen Wünschen anpassen, da er dort alle gefundenen HDD reinschreibt.[EDIT] Natürlich prüft grub-install auch die menu.lst (grub) bzw. grub.cfg (grub2) [/EDIT]
Hast Du wenigstens mal einen Blick in den Grub-Artikel aus dem Ubuntuuser Wiki geworfen?
Ja, aber kappiert habe ich den ersten Schritt des Bootvorgangs (für variable/externe Platten) noch nicht. Welche Info genau schreibt grub in den MBR, um sicher die gewünschte Partition zu booten?
Parameter "--recheck" habe ich schon probiert. Das System bootet dann nicht von der Platte. Muss die Kiste mal an 'nen Monitor hängen, um zu sehen, warum.
Die Partition auf der externen Platte enthält übrigens eine Kopie meiner auf einer internen (IDE) Platte laufenden VDR-Version... -
GRUB ist manchmal nicht ganz einfach zu bändigen, vorallem die neue Version 2, aber relativ "intelligent".
Der von Device-Files unabhängige Code im MBR sucht "automatisch" nach "/boot/grub" und dort nach der menu.lst (grub-legacy) oder grub.cfg (grub2). Wenn man es genau nimmt ist Grub ein kleines Betriebssystem, das in der Lage ist die Dateisysteme auf den Platten zu öffnen/lesen. Sogar ein kleiner Editor ist enthalten, damit man im Grub-Menu Booteinträge direkt manipulieren könnte. Das ist im übrigen der Grund warum "/boot" bei einer verschlüsselten Platte in einem unverschlüsseltem Bereich stehen muß.
D.h. Deine "menu.lst" oder "grub.cfg" muß zingend passen, Du kannst nicht eine bestehende nicht angepasste nehmen, das wird nicht funktionieren. Du mußt also die Device-Files anpassen bzw. darauf achten das die richtigen UUIDs drinstehen. Die "device.map" muß natürlich auch passen.
Gruß
Frank -
Zitat
Original von fnu
GRUB ist manchmal nicht ganz einfach zu bändigen, vorallem die neue Version 2, aber relativ "intelligent".Der von Device-Files unabhängige Code im MBR sucht "automatisch" nach "/boot/grub" und dort nach der menu.lst (grub-legacy) oder grub.cfg (grub2). Wenn man es genau nimmt ist Grub ein kleines Betriebssystem, das in der Lage ist die Dateisysteme auf den Platten zu öffnen/lesen. Sogar ein kleiner Editor ist enthalten, damit man im Grub-Menu Booteinträge direkt manipulieren könnte. Das ist im übrigen der Grund warum "/boot" bei einer verschlüsselten Platte in einem unverschlüsseltem Bereich stehen muß.
D.h. Deine "menu.lst" oder "grub.cfg" muß zingend passen, Du kannst nicht eine bestehende nicht angepasste nehmen, das wird nicht funktionieren. Du mußt also die Device-Files anpassen bzw. darauf achten das die richtigen UUIDs drinstehen. Die "device.map" muß natürlich auch passen.
Ja, ja, alles schon klar. Mir bleibt aber nach wie vor unverständlich, welche Info. grub über die zu bootende Partition in den MBR schreibt. Das dürfte in einem System mit variablen/externen Platten eigentlich nur die UUID sein. Und die Meldung "/dev/sda does not have any corresponding BIOS drive." weist doch sehr deutlich darauf hin, dass grub mit BIOS-Nummern rum macht.
Auf /dev/sda3 (externe Platte) befindet sich eine Kopie (cp -rp ...)von /dev/hda2 (interne Platte). Die Installation auf hda2 ist produktiv. Die confs auf sda3 sind für root angepasst, alles Andere müsste ja unverändert sein.... -
Zitat
Original von habichthugo
Ja, ja, alles schon klar. Mir bleibt aber nach wie vor unverständlich, welche Info. grub über die zu bootende Partition in den MBR schreibt. Das dürfte in einem System mit variablen/externen Platten eigentlich nur die UUID sein. Und die Meldung "/dev/sda does not have any corresponding BIOS drive." weist doch sehr deutlich darauf hin, dass grub mit BIOS-Nummern rum macht.Du hast Dir null komma null irgendwelche Informationen zu Grub durchgelesen, oder?
Es ist nicht richtig, das mit dem Grub-Code irgendwelche Platten-Informationen, sei es UUID, Device-Files oder BIOS-Nummern, in den MBR geschrieben werden, das hat früher "lilo" gemacht. Der angegebene Fehler ist ein Fehler des Scripts "grub-install", das die Datei "device.map" erstellt. Im MBR landet ein generische Code, die spezifischen Information landen in "/boot/grub", auf welche der MBR-Code beim Start dann Zugriff haben muß.
Wenn Du von Deiner externen Platte nicht booten kannst ist die Konfiguration in "/boot/grub" nicht richtig. Evtl. suchst mal über die einschlägigen Suchportale nach entsprechenden Berichten zu USB Platten und liest Dir bitte das zur Verfügung stehende Material zu Grub durch. Einen Link zum Einstieg habe ich Dir oben gegeben, von dort aus kannst Du auf weitere Dokumentation zugreifen.
Gruß
Frank -
Zitat
Original von fnu
Du hast Dir null komma null irgendwelche Informationen zu Grub durchgelesen, oder?
... Im MBR landet ein generische Code, die spezifischen Information landen in "/boot/grub", auf welche der MBR-Code beim Start dann Zugriff haben muß.
Aber ja doooch!!!
Irgend eine Info zur Platte/Partition, in welcher /boot/grub liegt, muss in den MBR. Ich kann grub in den MBR von Platte A schreiben und von da aus die root (/boot/grub) von Platte B booten lassen. Wie soll das gehn, wenn im MBR keine entsprechende Info vorhanden ist?
In den Beschreibungen zu grub finde ich ja jede Menge Infos, aber keine, die mal klar sagt, wie Stage 1 (im MBR) tatsächlich Stage 2 (/boot/grub/stage2 bzw. Stage 1.5) tatsächlich auffindet.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!