staging.inyokaproject.org

GRUB 2 von BIOS nach EFI umstellen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

Wiki/Icons/Oxygen/view-refresh.png 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:

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 oder gdisk. 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“) beschrieben

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

  • 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 oder lsblk -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 oder efi 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:

  1. die / Partition mounten nach /mnt, falls nicht bereits oben erledigt.

  2. /boot/efi anlegen (siehe oben).

  3. die EFI Partition mounten nach /mnt/boot/efi.

  4. 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 
  5. 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ßendes

    update-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 arbeitenpkexec, sudo -H)

Überprüfung der prinzipiellen Bootfähigkeit

  • Wichtig ist jetzt die Überprüfung des NVRAM

    • dazu führt man sudo efibootmgr -v aus

    • ist 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 mit sudo 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 zur grub-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.

Diese Revision wurde am 16. Februar 2023 12:09 von DJKUhpisse erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: GRUB 2, EFI, Bootloader, System, BIOS