Laden Sie zwei Grub2-Installationen in die Kette

14

Das bringt mich wirklich runter. Ich habe Gentoo und Ubuntu, beide mit Grub2. Gentoo hat eine dedizierte /bootPartition, Ubuntu nicht. Ich habe ein menuentryin Gentoo /etc/grub.d/40_custom, um Ubuntu zu booten (und Ubuntu bootet OK).

Da Ubuntu mit Grub geliefert wird, möchte ich einen Chainload in diesen ausführen, anstatt meinen Eintrag zu pflegen, der Root, Kernel, Initrd und so weiter festlegt. Folgendes habe ich für den Chainloader (Ubuntu ist aktiviert /dev/sda4und ich habe Grub dort bereits installiert):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

Es gibt mir error: Invalid signatureund ich fand keine Lösung zur Verfügung. Kann jemand auf etwas hinweisen?

Dies ist das Ergebnis von </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Dies ist das Ergebnis von fdisk -l. /dev/sda1ist /bootvon Gentoo, Gentoo ist in /dev/sda2, Ubuntu ist in /dev/sda4. Ubuntu /bootist /dev/sda4auch dabei.

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

Es liegt kein Fehler bei grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
phunehehe
quelle
Offensichtlich haben Sie keinen Bootloader installiert /dev/sda4. Haben Sie mehr als eine Festplatte? Was ist Ihre Partitionstabelle? Bitte posten Sie die Ausgabe von fdisk -lund die Nachrichten von grub-install /dev/sda4 --no-floppy --force.
Gilles 'SO- hör auf böse zu sein'
ja, ich habe die
frage

Antworten:

4

Sie können GRUB2 von GRUB2 in einer Kette laden. Ich habe es so ausprobiert, wie Sie es beschrieben haben, und es funktioniert. Die von Ihnen angegebenen Informationen lassen jedoch den Eindruck entstehen, dass das Startabbild nicht in den MBR der Festplatte eingebettet wurde (oder dass es sich nicht nur um Nullen handelt).

Ich würde dies versuchen, obwohl es nicht genau den GRUB2 von Ubuntu verwendet (nur die Konfigurationsdatei). Sie können einen Menüeintrag in der Gentoo GRUB2-Konfigurationsdatei erstellen, der die Ubuntu-Konfigurationsdatei lädt. Ich sehe zwei Möglichkeiten, dies zu tun.

Das , was ich verwenden würde, ist mit dem normalen Befehl, mit dem Sie eine Konfigurationsdatei angeben können, die für den normalen Modus geladen werden soll. Wenn Sie diesen Weg gehen, gibt es einen Befehl namens normal_exit , den Sie als benutzerdefiniertes Element in Ihrer Ubuntu-Konfiguration hinzufügen können, um zu Ihrer Gentoo-Konfiguration zurückzukehren.

Die andere Option ist der Befehl configfile , mit dem Sie eine alternative Konfigurationsdatei zum Laden angeben können. Es scheint jedoch schwieriger zu sein, von dieser Option zurückzutreten.

Weitere Informationen zu diesen Befehlen finden Sie hier .

silvein
quelle
3

Der erste Teil des Startvorgangs besteht aus dem Laden von Code aus dem ersten Sektor der Festplatte, dem sogenannten Master Boot Record (MBR) . Normalerweise wird Grub in diesen ersten Festplattensektor geschrieben und nicht in den ersten Sektor der Partition, die / den bootet. Normalerweise können Sie dies während der Linux-Installation ändern. In modernen Installationsroutinen wird dies jedoch häufig ausgeblendet.

Sie sagen, dass Sie Grub in / dev / sda4 installiert haben, Ihre Konfiguration jedoch korrekt aussieht und die Fehlermeldung, die Sie veröffentlicht haben, darauf hinweist, dass Grub möglicherweise nicht korrekt in der Partition installiert ist, die Sie verketten möchten. Sie sollten Gentoo starten und dann die Ubuntu-Partition chrooten. Stellen Sie sicher, dass / boot jetzt korrekt auf Ubuntu- / boot und nicht auf Gentoo verweist! Jetzt installieren Graben 2 in den ersten Sektor der Ubuntu-Partition / dev / sda4: grub-install /dev/sda4 --no-floppy.

Stellen Sie, wie immer beim Umgang mit MBR und Partitionen, sicher, dass Sie über ein funktionierendes, aktuelles Backup verfügen, bevor Sie beginnen.

fschmitt
quelle
macht es einen Unterschied, ob ich Ubuntu starte und die Grub-Installation starte?
Weil
Ich dachte, Sie können nicht in Ubuntu booten, weil das Chainloading nicht funktioniert? Aber nein, es sollte keinen Unterschied machen, ob Sie Ubuntu starten oder chroot starten.
Fschmitt
@phunehehe: Die Fehlermeldung bedeutet, dass Grub im ersten Sektor von keine Bootloader-Signatur gefunden hat /dev/sda4(die letzten beiden Bytes müssen sein 0x55 0xaa). Könnten Sie die Ausgabe von posten </dev/sda4 head -c 512 | hd?
Gilles 'SO- hör auf böse zu sein'
@ Gilles: Ich habe das Ergebnis der Frage hinzugefügt. Sieht nicht richtig aus, oder?
Phunehehe
eigentlich muss ich laufen grub-install /dev/sda4 --no-floppy --force, sonst wird es ein paar beschwerden über blocklisten geben
phunehehe
-1

Wird sda4 nicht in grub (hd0,3) sein, oder hat sich so etwas in grub2 geändert?

Neal
quelle
yep, ich bin mir sicher, dass / dev / sda4 (hd0,4) wird, weil ich damit Ubuntu
phunehehe
3
Ja, Grub 0.97 begann mit dem Zählen von Festplatten und Partitionen mit 0. Grub 2 beginnt weiterhin mit dem Zählen von Festplatten mit 0, aber mit 1. Also ist / dev / sda4 in Grub 0.97 hd0,3 und in Grub 2
hd0,4