[gelöst] grub und externe Festplatte?

  • -> Lösung


    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...?!

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

    Einmal editiert, zuletzt von habichthugo ()

  • 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)?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

    Einmal editiert, zuletzt von habichthugo ()

  • Hallo,


    bei meinem Ubuntu sieht ein Menüeintrag für grub2 wie folgt aus:

    Code
    menuentry "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

    server
    * Proxmox VE, yaVDR 2xDVBS2 (streamdev, live, vnsi, epg)
    clients
    * Mehre KODI Installationen :)

    3 Mal editiert, zuletzt von 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...

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • Code
    # grub-install --root-directory=x /dev/sda
    /dev/sda does not have any corresponding BIOS drive.


    Und nu?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • 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?

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • 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 ;)

    - HTPC mit zerbasteltem Yavdr 0.6 , Origen ae X15e, MCE Remote, Asus P5N7A-VM, 1x Digibit R1, Kodi und vdr an Pana 46PZ85E
    - Diverse HTPCs im Umfeld bei Familie und Freundenm die sich vor mir fürchten, mit allen möglichen gruseligen Konfigurationen.
    Auch gern Debian, aber wehe jemand kommt mir mit Suse.

    Einmal editiert, zuletzt von Hibbelharry ()

  • habichthugo


    Also IMHO ist die Platte von der Du bootest immer "/dev/sda", alle anderen werden danach "aufaddiert" "/dev/sdb" ...


    Der Befehl sollte so lauten:


    Code
    # grub-install --recheck --root-directory=/mnt /dev/sda

    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

    HowTo: APT pinning

    Einmal editiert, zuletzt von fnu ()

  • Ne, so geht das eben nicht:

    Zitat

    Original von habichthugo

    Code
    # grub-install --root-directory=x /dev/sda
    /dev/sda does not have any corresponding BIOS drive.


    Und nu?


    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...?!

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • 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

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()

  • Hi,


    mit fdisk das Boot-Attribut gesetzt?


    Grüße joker

    HW VDR: Thermaltake DH102 | Gigabyte GA-M720-US3 | AMD 270u | 8GB RAM | 120GB SSD System + 3TB HDD Daten | L4M Cine CT V6 + Flex S2 | Zotac GT630 | Futaba MDM166A | Atric IR-Einschalter Rev. 5 | NEC P553 | SEDU + 96 PIX | Pioneer SC-LX85 | Jamo S606
    SW VDR: Debian Wheezy | Kernel 3.2.0-4-amd64 | Mate 1.6 | VDR 2.2.0 | nVidia 331.79 | LIRC 0.9.0 | media_build_experimental | Plugins: permashift 1.0.3, softhddevice 0.6.1rc1-git, menuorg 0.5.1, skinnopacity 0.1.3, tvscraper 0.2.0-git, seduatmo 0.0.2-git, mplayer 0.10.2-hg, fritzbox 1.5.3, vdradmin-am 3.6.9, femon 1.7.19, targavfd 0.3.0, span 0.0.7, dvd 0.3.6-cvs, graphtftng 0.4.10-git, extrecmenu 1.2.4-git, epgsearch 1.0.1-git, block 0.1.2-git, cpumon 0.0.6a, ac3mode 0.1, HD-- 1.0.0-hg, u. v. a. ...

  • @joker4791


    Das setze ich aus alter Gewohnheit auch immer, ist aber heute eigentlich nicht mehr nötig.


    Gruß
    Frank

    HowTo: APT pinning

  • 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...

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • habichthugo


    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

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()

  • 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....

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

  • 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

    HowTo: APT pinning

  • 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.

    yaVDR 0.6.2; H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DuoFlex S2 / 120GB SSD (System; SATA>USB) + 3TB SATA 6Gb/s; LCD-TV Toshiba 42VL863G; AVR Yamaha RX-S600...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!