GRUB 2 von BIOS nach EFI umstellen

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

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:

  1. Installation von Programmen

  2. Im Terminal arbeiten

  3. Mit dem Texteditor arbeiten

  4. Einbinden von Dateisystemen

  5. change root einrichten

  6. mit Root-Rechten arbeiten

Inhaltsverzeichnis
  1. Zweck
  2. Voraussetzungen
  3. Ausführung
    1. Vorbereitung
    2. System von BIOS auf EFI umstellen
    3. Vom LiveSystem mit chroot ins installier...
      1. grub-pc Dateien deinstallieren
      2. grub-efi Dateien installieren
      3. grub installieren
    4. Nacharbeiten
      1. Anpassen der /etc/fstab
      2. Überprüfung der prinzipiellen Bootfähi...
      3. Kein Eintrag im NVRAM
  4. Nachbemerkung
  5. Stolperfallen
  6. Links
    1. intern

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

Ausführung

Eine Terminalausgabe kann hier eingesehen werden: Doku-Test_mit_16.04.5.txt

Vorbereitung

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.

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.

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

  3. 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 
  4. 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. 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)

Hinweis:

Seit 18.04 ist das Paket gksu nicht mehr installiert und kann auch nicht mehr nachinstalliert werden, so dass mit einem grafischen Editor nicht mehr unter Verwendung von gksudo editorname gearbeitet werden kann.

Überprüfung der prinzipiellen Bootfähigkeit

  • Wichtig ist jetzt die Überprüfung des NVRAM

    • dazu installiert man den efibootmgr und führt 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

intern