GRUB 2 von BIOS nach EFI umstellen
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Achtung!
An verschiedenen Stellen sind explizit Werte/Platzhalter angegeben (z.B.: #, x, y, z). Bei Verwendung der hier genannten Befehle sind unbedingt die jeweils den eigenen Gegebenheiten entsprechenden Werte zu wählen und einzufügen.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Der Bootvorgang in EFI-Systemen unterscheidet sich im Wesentlichen von dem im BIOS/MBR System durch die esp
= EFI-System-Partition. In dieser können, anders als in einem BIOS-System mit MBR mehr als nur ein Bootloader gespeichert und zur Ausführung gebracht werden. Um ein System umzustellen, müssen die entsprechenden grub
Dateien in die dafür vorgesehenen Verzeichnisse geschrieben werden.
Unter bestimmten Umständen kann es erforderlich sein, ein im legacy/CSM/BIOS-Modus installiertes Ubuntu auf den EFI-Modus umzustellen. Beispiele dafür sind:
zu einem vorhandenen Windows 10 (im EFI-Modus auf GPT) soll eine HDD mit einem im legacy-Modus installiertes Ubuntu hinzugefügt werden:
eine Ubuntu legacy-Installation wird um eine > 2TB Platte für Windows 10 ergänzt (d.h., GPT ist erforderlich, und damit Windows 10 nur im EFI Modus möglich).
Sicherheitsaspekte
Je nach Firmware Setup kann man zwar durch Modus-Umstellung und Boot-Device-Wahl das jeweils andere OS starten, aber das ist nicht wirklich praktikabel.
Zweck¶
Im Artikel wird beschrieben, wie man ein im legacy-Modus (auch CSM oder BIOS-Kompatibilitäts-Modus genannt) installiertes Ubuntu auf EFI-Modus umstellen kann.
Hinweis:
Die im Folgenden beschriebene Vorgehensweise enthält eine größere Anzahl von einzelnen Schritten und erfordert das Auslesen einiger Parameter für die erfolgreiche Durchführung. Da ein kleiner Flüchtigkeitsfehler schon ausreicht, um den Erfolg der Umstellung des GRUB 2 komplett zu verhindern, sollte die gesamte Aktion vorher Schritt für Schritt genau geplant und dann Punkt für Punkt akkurat abgearbeitet werden.
Voraussetzungen¶
LiveUSB Stick (oder DVD) mit der installierten Version.
System läuft im EFI-Modus (Prüfung s. weiter unten). Die Bezeichnungen dafür sind leider von Hersteller zu Hersteller nicht einheitlich.
Vorhandensein einer
esp
Partition.Hinweis:
Es stehen verschiedene Werkzeuge zum Erstellen einer
esp
zur Verfügung, u.a.gparted
odergdisk
. Das Vorgehen für beide Anwendungen ist z.B. in Universal stand-alone grub für BIOS und EFI auf USB flashkey und internen HDD und SSD (Abschnitt „Partitionieren-des-flashkey“) beschriebenDas erforderliche Verzeichnis /boot/efi ist nicht vorhanden und wird mit
sudo mkdir /mnt/boot/efi
nach dem mounten der / Partition nach /mnt angelegt.
Ausführung¶
Eine Terminalausgabe kann hier eingesehen werden:
Vorbereitung¶
Zuerst prüft man, ob im NVRAM bereits ein Eintrag für "ubuntu" aus einem anderen Zusammenhang existiert.
Dieser ist zu löschen (efibootmgr), da er die korrekte Installation von grub behindert.
efibootmgr
ist nicht vorhanden und wird mitsudo apt install efibootmgr
nachinstalliert.Bezieht sich der Eintrag auf eine bereits anderweitig bestehenden Ubuntu-Installation im EFI-Modus, ist anders vorzugehen, z.B. ▶ EFI Nachbearbeitung (Abschnitt „Zusaetzliches-Bootverzeichnis-erstellen“).
Sollte keine
esp
-Partition im System existieren - z.B. ohne Windows - muss diese zuerst angelegt werden. Hinweise dazu findet man in GRUB 2/Grundlagen.Die UUID dieser Partition ermittelt man mit
sudo blkid
oderlsblk -f
.
System von BIOS auf EFI umstellen¶
Dafür wird zunächst im Setup auf EFI-Modus umgestellt, und ein geeignetes (→ z.B. EFI USB-Stick) Live-System gestartet.
Dabei ist darauf zu achten, dass durch die richtige Einstellung ausschließlich im EFI-Modus gebootet werden kann.
Richtig:
efi
oderefi only
.Falsch:
efi or legacy
,both
,first boot
oder ähnliche, mehrdeutige Einstellungen.
Ob man im EFI-Modus "fährt" prüft man im Terminal mit:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Vom LiveSystem mit chroot ins installierte (BIOS) System¶
Um per chroot in das installierte System zu wechseln, stehen Wiki-Seiten mit entsprechenden Befehlsabläufen zur Verfügung. ▶ chroot, chroot/Live-CD. Der Ablauf wird im Terminal durchgeführt und sieht wie folgt aus:
die / Partition mounten nach /mnt, falls nicht bereits oben erledigt.
/boot/efi anlegen (siehe oben).
die EFI Partition mounten nach /mnt/boot/efi.
die üblichen chroot-Befehle, z.B. mit dem Einzeiler:
for dir in /dev /dev/pts /proc /sys /run; do sudo mount --bind $dir /mnt/$dir; done
jetzt wechselt man in das zu bearbeitende System mit
sudo chroot /mnt /bin/bash
. In diesem System ist man dann "root" und führt alle Befehle mit ebendiesen Rechten aus.
grub-pc Dateien deinstallieren¶
Zunächst werden die nicht mehr benötigten grub-Bestandteile entfernt,
apt-get purge grub-common grub-pc os-prober
die Frage "Wollen Sie alle Daten von GRUB 2 aus /boot/grub entfernen lassen?" kann mit "<Nein>" belassen werden, da im chroot ohnehin nicht alles deinstalliert werden kann.
grub-efi Dateien installieren¶
und durch die neu benötigten EFI-Versionen ersetzt.
apt-get install grub-common grub-efi-amd64 os-prober
Wenn das alles fehlerfrei durchgelaufen ist, kann grub
installiert werden.
grub installieren¶
grub-install
ohne weitere Zielangabe installiert grub automatisch in die ESP (Partition mit der Markierung
esp
). Ein anschließendesupdate-grub
erzeugt die erforderliche Konfigurationsdatei /boot/grub/grub.cfg.
Nacharbeiten¶
Anpassen der /etc/fstab¶
Wer möchte, kann auch gleich die /etc/fstab z.B. mittels sudoedit /etc/fstab
editieren (Achtung beim Speichern).
Die erforderliche Zeile
UUID=5A8E-000B /boot/efi vfat umask=0077 0 1
am Ende einfügen und mit einer weiteren Leerzeile abschließen. Die richtige UUID hat man schon weiter oben mit blkid ermittelt und ist hier einzusetzen anstelle von 5A8E-000B
.
Möglich ist das aber auch nach Verlassen der chroot-Umgebung
root@ubuntu:/# exit
und womöglich einfacher mit einem GUI-Editor zu bewerkstelligen. (mit Root-Rechten arbeiten → pkexec
, sudo -H
)
Überprüfung der prinzipiellen Bootfähigkeit¶
Wichtig ist jetzt die Überprüfung des NVRAM
dazu führt man
sudo efibootmgr -v
ausist alles richtig abgelaufen, steht in der Liste am Ende ein neuer Eintrag mit "Ubuntu"
sudo efibootmgr -v BootCurrent: 000C Timeout: 0 [...] Boot001F* ubuntu HD(2,GPT,ed0b16ce-22ae-407e-97f7-27c5a3802210,0xfa000,0x32000)/File(\EFI\ubuntu\grubx64.efi)
und das Setzen der richtigen Bootreihenfolge, z.B. mit
sudo efibootmgr -n ####
, oder anpassen der Reihenfolge mitsudo efibootmgr -o xxxx,yyyy,zzzz,...
ggf. kann man auch im Setup die Reihenfolge wählen und verändern.
Kein Eintrag im NVRAM¶
Sollte kein neuer Eintrag für *ubuntu im NVRAM vorhanden sein, überprüft man das /boot/efi-Verzeichnis ob die Grub2-Dateien vorhanden sind.
### Einhängen der EFI-Boot-Partition auf /mnt sudo mount /dev/sdxy /mnt ### Abfrage der Ordner und Dateien sudo ls -aR /mnt
Die Ausgabe für die Verzeichnisse von Ubuntu sieht dann in etwa so aus.
/mnt: . .. EFI /mnt/EFI: . .. BOOT ubuntu /mnt/EFI/BOOT: . .. BOOTX64.EFI fbx64.efi /mnt/EFI/ubuntu: . .. BOOTX64.CSV grub.cfg grubx64.efi mmx64.efi shimx64.efi
Wichtig sind die Dateien, welche hier in der letzten Zeile der o.g. Abfrage erscheinen und im Verzeichnis /mnt/EFI/ubuntu liegen. Sind diese vorhanden, aber kein Eintrag im NVRAM, kann versucht werden mit efibootmgr einen Eintrag im NVRAM herzustellen.
Bei signierten Kerneln, welche auch mit aktiviertem Secureboot booten können, ist die shimx64.efi die maßgebende Datei, auf die der Eintrag im NVRAM verweisen muss. Ist diese Datei im Verzeichnis vorhanden, sollte der Eintrag im NVRAM auf diese Datei verweisen, sonst kann das OS u.U. nicht gebootet werden - unabhängig davon ob Secureboot aktiviert ist oder nicht.
sudo efibootmgr -v
BootCurrent: 000C Timeout: 0 [...] Boot001F* ubuntu HD(2,GPT,ed0b16ce-22ae-407e-97f7-27c5a3802210,0xfa000,0x32000)/File(\EFI\ubuntu\shimx64.efi)
Fehlen diese Dateien, ist die Umstellung nicht geglückt und muss wiederholt werden.
Nachbemerkung¶
Ein wie oben beschriebener Wechsel ist zwingend erforderlich, falls kein anderer Bootloader bereits vorhanden ist. Ein EFI-Windows bootmgr
- erweitert mit EasyUEFI - ist nicht in der Lage, ein "BIOS"-Linux zu starten, ein EFI-Linux kann das aber sehr wohl.
Stolperfallen¶
efi
-Verzeichnis vergessen oder falsches Dateisystem: Fällt beim Versuch zu mounten auf.Falscher Pfad beim Speichern der /etc/fstab nach Änderung mit einem Editor: System bootet bis zur
grub
-Konsole. siehe unten.Fehler in der UUID der
esp
beim Eintrag in die /etc/fstab: System bootet bis zurgrub
-Konsole, macht man dann einen Boot mit Hilfe der SymLinks, bleibt der Bootvorgang stecken wegen Fehlers in der /etc/fstab. Live-System booten und korrigieren.Festplattencontroller unterstützt kein UEFI: Bei der Nutzung älterer Festplattencontroller (meist Steckkarten) kann es vorkommen, dass diese kein UEFI unterstützen und nicht von diesen im EFI-Modus gebootet werden kann. In diesem Fall darf sich weder die
esp
-Partition noch /boot auf einer Festplatte befinden, die an diesem Controller angeschlossen ist.
Links¶