grub2-install: "Diese GPT-Partitionsbezeichnung enthält keine BIOS-Startpartition"

41

Es scheint eine ziemliche Diskussion darüber zu geben, aber ich kann keine einfache Antwort finden.

Wenn ich versuche, grub2 zu installieren, erhalte ich folgende Fehlermeldung:

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

Hier ist das Layout von / dev / sda:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

Gibt es eine einfache Möglichkeit, dieses Problem zu umgehen? Ich verstehe, dass ich am Anfang der Festplatte eine winzige Partition als "BIOS-Boot-Partition" erstellen muss. Ich nehme an, eine Möglichkeit wäre, den Swap auf / dev / sda4 als logisches Volume zu verschieben und / dev / sda2 als / boot zu verwenden.

Alternativ könnte ich einfach zu Grub-Legacy zurückkehren und mich nicht darum kümmern (gibt es wirklich einen Vorteil beim Upgrade auf Grub2, wenn dies so viele Probleme verursacht?).

Gedanken?

Robert S
quelle

Antworten:

23

Sie sollten zunächst festlegen, ob Sie einen BIOS / CSM / Legacy-Modus-Start oder einen EFI / UEFI-Modus-Start verwenden möchten. Ersteres ist die Art und Weise, wie PCs seit den 1980er Jahren gebootet werden, aber es ist ein hässliches und hackiges System, das in Kürze den Weg des Dodos gehen wird. Windows verknüpft das Booten im BIOS-Modus mit der MBR-Partitionstabelle, die Sie nicht verwenden (aber möglicherweise verwenden). Ihre Festplatte ist bei weitem nicht groß genug, um GPT zu erfordern. Linux, FreeBSD und die meisten anderen modernen Betriebssysteme sind flexibler und unterstützen das Booten im BIOS-Modus über GPT. Es kann jedoch vorkommen, dass durch die Firmware verursachte Probleme auftreten. Wenn Sie später Windows in einem Dual-Boot-Setup installieren, müssen Sie Änderungen oder Kompromisse eingehen.

Das Booten im EFI / UEFI-Modus ist weniger anstrengend. Die Qualität der EFI-Implementierungen ist jedoch sehr unterschiedlich, und das allgemeine Know-how und der Support im Web für EFI sind geringer als für BIOS. Windows verbindet die Verwendung von GPT mit dem Booten im EFI-Modus. Wenn Sie also erwarten, Windows jemals auf Ihrem Computer zu installieren, ist EFI definitiv der richtige Weg. Ältere Computer sind nur BIOS. EFI ist seit Mitte 2011 auf dem Markt. Wenn Ihr Computer also älter ist, können Sie EFI möglicherweise nicht verwenden.

Wenn Sie im BIOS-Modus booten, sollten Sie eine BIOS-Boot-Partition auf der Festplatte erstellen . Am Anfang Ihrer Festplatte ist genügend Speicherplatz für diese Partition vorhanden, Sie müssen jedoch den Sektorausrichtungswert auf 1 setzen (von den üblichen 2048), damit dies funktioniert. Ich weiß nicht ohne weiteres, ob das möglich ist parted, aber Sie können es schaffen gdisk. (Beachten Sie, dass der Speicherplatz am Anfang Ihrer Festplatte geringfügig unter der empfohlenen Größe von 1 MB für eine BIOS-Boot-Partition liegt, jedoch nur um einige Sektoren. Er wird wahrscheinlich einwandfrei funktionieren, könnte aber möglicherweise zu einem späteren Zeitpunkt ausfallen.) Alternativ können Sie jede Ihrer Partitionen um 1 bis 2 MB verkleinern, um Platz für die BIOS-Boot-Partition zu schaffen. Diese Partition muss nicht die erste Partition auf der Festplatte sein, obwohl dies der herkömmliche Speicherort ist.

Wenn Sie im EFI / UEFI-Modus booten, müssen Sie eine EFI-Systempartition (ESP) erstellen . Diese Partition muss im FAT-Format vorliegen und erheblich größer sein als eine BIOS-Boot-Partition. Sie müssen also die Größe ändern, um sie zu erstellen. Ich empfehle eine Größe von 550 MB, obwohl ein Zehntel davon im Notfall funktionieren könnte.

Um GRUB zu installieren, müssen Sie zunächst sicherstellen, dass Sie das richtige GRUB-Paket installiert haben. Ich bin mir nicht sicher, ob ich alle Distributionen benennen soll, aber in Ubuntu wäre es grub-pcfür den BIOS / CSM / Legacy-Modus und grub-efi-amd64für den EFI / UEFI-Modus. Bei einer Installation im EFI-Modus muss auch gestartet werden, was auch immer Sie verwenden, um GRUB (vermutlich eine Live-CD / USB) im EFI-Modus zu installieren. Hierzu muss möglicherweise der integrierte Boot-Manager Ihres Computers verwendet werden, auf den normalerweise über eine Funktionstaste zugegriffen wird. Die Details sind jedoch von Computer zu Computer unterschiedlich.

Rod Smith
quelle
Vielen Dank für Ihre sehr hilfreiche Antwort. Ich habe Dinge auf einer virtuellen Maschine zum Laufen gebracht und ein bisschen rumgespielt. Wenn ich versuche, dies auf meiner "Produktionsmaschine" (die zwei Festplatten hat) zu tun, habe ich eine Reihe von Problemen: grub2-install grub-setup=/bin/true /dev/sdagibt grub2-install: error: More than one install device?.. Auf meiner Arbeits-VM ist der Startsektor mit 32 markiert, auf der Produktionsmaschine mit 2048. Ich weiß nicht, ob dies relevant ist.
Robert S
Wie Flow in seiner Antwort vorschlägt, muss der Partitionstyp der BIOS-Boot-Partition auf 0x04 gesetzt werden. Dies ist "BIOS-Boot", andernfalls schlägt die Installation von grub fehl. Dies kann zum Beispiel mit dem Befehl "t" von fdisk eingestellt werden.
user1225999
Gibt es eine Möglichkeit, die Installation von Grub 2 ohne eine BIOS-Boot-Partition durchzuführen? Ich möchte nur UEFI verwenden.
CMCDragonkai
1
Bei einer Installation im EFI-Modus verwendet GRUB 2 keine BIOS-Boot-Partition. Wenn GRUB nach einem fragt, haben Sie wahrscheinlich im BIOS-Modus und nicht im EFI-Modus gebootet. Überprüfen Sie Ihre Startoptionen, um sicherzustellen, dass Ihr CSM deaktiviert ist, wie auf meiner Webseite zum Thema beschrieben: rodbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith
6

Wenn Sie GPT-Partitionen mit dem alten BIOS-Startmodus verwenden möchten, müssen Sie auf dem Gerät, mit dem Sie grub installieren möchten, eine BIOS-Partition von wenigen Megabyte (16 MB sollten in Ordnung und zukunftssicher sein) erstellen grub-install.

Verwenden Sie zB fdisk, um die Partition vom Typ "BIOS-Boot" irgendwo auf Ihrer Festplatte anzulegen. Beispielausgabe:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM
Fließen
quelle
3

Die Boot-Partition muss mit fat32 formatiert sein, damit sie funktioniert

mkfs.vfat -F32 /dev/sdXY

Sollte es für Sie beheben

Auch das Boot Flag muss an sein:

set 1 boot on
Kevin Huntly
quelle