Warum ist Grub nicht mit dem Himbeer-Pi kompatibel?


10

Ich habe mehrfach gelesen, dass der Himbeer-Pi Grub nicht unterstützt. Ich konnte keine Einzelheiten über die Inkompatibilität finden. Ich habe nur ziemlich stumpfe Aussagen der Form "es wird nicht unterstützt" gefunden.

Ich möchte genau verstehen, worum es geht und was neu geschrieben werden muss, damit es funktioniert.

Was ich bisher gefunden habe, ist, dass der Bootloader der Stufe 3 start.elf liest, was wiederum das Kernel-Image liest. Wenn grub funktionieren würde, würde es meiner Meinung nach (vollständig) start.elf ersetzen. Ich habe mir das Format von UEFI-Bootloadern angesehen und festgestellt, dass sie eine ausführbare Datei im PE-Format verwenden . Meine erste Hypothese ist also, dass die Inkompatibilität (nur) darin besteht, dass Grub als PE kompiliert wird und Stufe 3 nur ELF liest .

Habe ich eine andere größere Inkompatibilität verpasst? Habe ich eine andere wichtige Aufgabe verpasst, start.elfdie verloren gehen würde, wenn sie durch Maden ersetzt würde?


Ich bin nicht 100% davon überzeugt, aber ich denke, das Problem ist der ARM-Prozessor. AFAIK grubfunktioniert nur für Intel-Architekturen.
Seamus

@Seamus Danke für den Gedanken. Die Existenz des Debian-Pakets grub-efi-arm legt nahe, dass grub auf ARM verwendet werden kann.
Philip Couling

Siehe raspberrypi.org/documentation/configuration/boot_folder.md bezüglich der Funktionalität von start.elf.
Dirk

Wusste das nicht - danke! Haben Sie die ARM-Version von GRUB ausprobiert?
Seamus

4
Ich möchte einen Kommentar von Leuten erhalten, die dafür gestimmt haben, diese Frage als "nicht spezifisch für Raspberry Pi" zu schließen. Wie ist das Problem, dass etwas nicht mit einem Raspberry Pi kompatibel ist, nicht spezifisch dafür?
Dmitry Grigoryev

Antworten:


5

Eigentlich, wenn Sie Ubuntu mit einem generischen Kernel auf dem Raspberry Pi installieren möchten, Sie müssen grub2 verwenden, wie hier .

Die einzige Kompatibilitäts-Besonderheit besteht darin, dass grub2 möglicherweise das EFI-Flag auf der Boot-Partition setzt und der RPi-Bootloader sich weigert, eine Partition mit gesetztem EFI-Flag zu starten. Das Flag kann von jedem Partitionseditor manuell gelöscht werden, sodass sowohl der RPi-Bootloader als auch grub2 die Partition korrekt erkennen.


Das ist eine glänzende Verbindung, die ich nicht gefunden hatte. Ich frage mich, ob der EFI-Check deaktiviert werden kann.
Philip Couling

@PhilipCouling Ich glaube nicht, nach meinem Verständnis erfolgt die Überprüfung im Closed-Source-Teil der Bootloader-Kette.
Dmitry Grigoryev

2

Der Raspberry Pi zeichnet sich dadurch aus, dass der primäre (On-Chip-ROM), der sekundäre (bootcode.bin) und der dritte Bootloader (start.elf) auf seiner GPU ausgeführt werden , wobei einer den anderen verkettet . Der Befehlssatz ist nicht ordnungsgemäß dokumentiert und startet sich streng geheim.

Wie SuSE und Microsoft gezeigt haben , kann kernel.img nach Belieben ersetzt werden - auch durch eine benutzerdefinierte Version von TianoCore (eine Open-Source-UEFI-Implementierung) oder U-Boot. Dies kann dann verwendet werden, um eine UEFI-kompatible GRUB2- oder BOOTMGR-Binärdatei zu starten.


Tatsächlich. Der Raspberry Pi 3 verfügt derzeit über eine ausgereifte UEFI-Firmware. Derzeit wird daran gearbeitet, diese für den Pi 4 bereitzustellen. Mit dieser Funktion können Sie problemlos Vanilla Linux-Distributionen installieren und GRUB als Bootloader verwenden. Ein Beispiel für die Installation von Vanilla Debian mit GRUB finden Sie hier .
Akeo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.