ubuntuusers.de

EFI Problembehebung

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

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Heutige Computer haben ein Unified Extensible Firmware Interface (kurz (U)EFI), statt einem BIOS. Diese Umstellung fand ca. 2011/2012 statt, bei Apple bereits einige Jahre vorher. Um Abwärtskompatibilität zu erreichen, haben einige ältere Geräte ein CSM (Compatibility Support Module), welches den alten BIOS-Betrieb emuliert. Ob ein BIOS oder UEFI vorhanden ist und ob das CSM aktiv ist, hat Auswirkungen auf den Bootvorgang und die Installation des Betriebssystems.

Daraus ergeben sich eine Reihe von Fragen bis hin zu ernsthaften Problemen zur Integration in und von Ubuntu und dem Zusammenspiel mit Windows.

Dieser Artikel stellt eine Sammlung von Erfahrungen, Fragen und Abhilfen von den Autoren zusammen, die diese bei ihrer Arbeit gesammelt haben. Diese Sammlung erhebt keinen Anspruch auf Vollständigkeit - Erfahrungen kann man nicht lesen, die muss man selber machen!

Probleme bei der Installation

Gab es beim Versuch einer Installation Probleme, so sollte man das System mit einer Live-System gezielt untersuchen. Man sollte das Live-System im EFI-Modus starten und am Desktop die folgenden Maßnahmen ausführen.

NVRAM auslesen

Dazu öffnet man ein Terminal mit der Tastenkombination

  • Strg + Alt + T

und gibt in das Terminal [1] ein:

sudo apt-get install efibootmgr 

sudo efibootmgr -v 

Es wird eine Liste der Einträge im NVRAM angezeigt. Auch das Installations-Medium muss in dieser Liste sein. Eine typische Ausgabe ist beispielhaft

Boot0002* Ubuntu    HD(1,800,32000,34911255-cfd8-43ce-a600-fb43636a9c2c)File(\EFI\trusty\shimx64.efi)

Dabei bedeuten:

  • Boot0002*

    • lfd. Nummer des Eintrages im NVRAM

    • das Sternchen verweist auf einen "aktiven" Eintrag

  • Ubuntu

    • Bezeichnung vom Betriebssystem

  • 1,800,32000

    • lfd. Nummer der Partition auf Datenträger

    • Art der Partitionstabelle → hier GPT *)

    • Art der Formatierung → hier FAT32

*) Hinweis: Hier kann je nach Version vom efibootmgr statt 800 auch direkt GPT angezeigt werden.

  • 34911255-cfd8-43ce-a600-fb43636a9c2c

    • entspricht der PARTUUID der Abfrage mit sudo blkid

  • \EFI\trusty\shimx64.efi

    • Angabe zum Pfad und zur Startdatei

Informationen zum UEFI

Eine weitere Informationsquelle sind die Angaben zum UEFI im System. Dazu gibt man in das Terminal [1] ein:

sudo dmidecode -t0 | grep -Ei "BIOS boot|UEFI" 

Als Rückmeldung erhält man dann je nach System:

  • Computer verfügt über ein BIOS

    •      BIOS boot specification is supported

  • Computer verfügt über ein UEFI mit CSM

    •      BIOS boot specification is supported
           UEFI is supported

  • Computer verfügt nur über ein UEFI ohne CSM

    •      UEFI is supported

Informationen zum Rechner

Informationen zur Hardware erhält man durch die Eingabe in das Terminal [1]:

sudo dmidecode -t1  

Als Rückmeldung erhält man dann je nach Rechner - hier beispielhaft:

System Information
	Manufacturer: FUJITSU
	Product Name: ESPRIMO E710 E90+
	Version:                       
	Serial Number:                   
	UUID: 3867E5DB-D219-E211-BDF2-DA9ED2C03A59
	Wake-up Type: Power Switch
	SKU Number: S26361-Kxxx-Vyyy
	Family: 

Information zu den Datenträgern

Man kann sich eine Übersicht über die vorhandenen Festplatten machen. Dazu öffnet man die Laufwerksverwaltung mit

  • Super -Taste drücken → "Laufwerksverwaltung" ins Suchfeld eingeben →

Dann öffnet sich ein Fenster, in dem links angezeigt wird, welche Laufwerke im Rechner sind, dass ist schon mal die erste Kontrolle. Das Fenster auf Vollbild stellen → oben links.

Nun mit der linken linke Maustaste-Taste die Festplatte(n nacheinander) anklicken und sich die Aufteilung ansehen

  • Obere Hälfte: Angaben zur Festplatte

  • Untere Hälfte: welche Partitionen gibt es

  • ganz unten: nach dem Anklicken einer Partition kann man sich mit

    • "Partition bearbeiten"

weitere Details anzeigen lassen. Hierbei ist es bei einem vorhandenen Windows-EFI-System wichtig, dass folgende zwei Partitionen zu finden sind:

  • "EFI-Systempartition"

  • "Reservierte Microsoft-Partition"

Als Ergänzung sollte man sich noch die Formatierung und Aufteilung der Datenträger im Terminal [1] ansehen mit

sudo parted -l 

Eine hierbei auftretenden Fehlermeldungen muss man nun im Detail überprüfen - siehe dazu MischMasch-Partitions-Tabelle.

Probleme und Lösungen

Der Windows-Bootmanager

Windows-Bootmanager.png
Auswahl Windows-Bootmanager

Meistens wird ein neues (U)EFI-Computer-System mit einem Windows 8 oder neuerem Betriebssystem ausgeliefert. In der Regel kennt man die Funktionstasten, um die verschiedenen Basis-Optionen zu erreichen. Sollte man diese nicht kennen oder ist man sich unsicher, so kann man diese Basis-Optionen auch über den Windows-Bootmanager erreichen.

Man startet das Windows (8 oder neuer) ganz normal und kann

  • in der Anmeldemaske (unten rechts)

  • am Desktop

das "Neustarten" einleiten / auswählen. Um damit in die für Ubuntu relevanten Optionen des Windows-Bootmanagers zu gelangen, muss dazu nur gleichzeitig die Umschalttaste gedrückt werden. In der folgenden Anzeige (siehe Abbildung) arbeitet man mit der linke Maustaste-Taste nacheinander die "Apps" ab

EFI-Eintrag wurde gelöscht oder zerstört

Falls man es mal geschafft hat, seinen Eintrag im EFI-Menü zu zerstören, im UEFI-Setup diesen aus Versehen zu löschen oder aus anderen Gründen das System nicht mehr starten will, so kann man diesen Eintrag neu erstellen.

Man braucht dazu einen für sein System mit den empfohlenen Erweiterungen erstellten EFI USB-Stick oder eine entsprechende DVD/CD. Für letztere muss die passende ISO-Datei darauf gebrannt werden und einen USB-Stick kann man nach dieser Anweisung erstellen.

Variante eigenes System fremdstarten

Man bootet im EFI-Modus von diesem Datenträger und bearbeitet den ersten Eintrag im GRUB 2-Menü.

Dazu wechselt man mittels E -Taste in den Bearbeitungsmodus, löscht alle Zeilen und gibt ein:

1
2
search --no-floppy --file --set=root /boot/grub/grubenv
configfile  /boot/grub/grub.cfg

Experten-Info:

Je nach Filesystem kann die Position der Datei grub.cfg bzw. grubenv auf dem eigenen Rechner abweichen.

Bei einem Btrfs-Dateisystem kann der relevante Pfad /@/boot/grub/ lauten bzw. bei einer getrennten Boot-Partition ist der verkürzte Pfad /grub/ einzusetzen.

Nach und mit dieser Ergänzung kann man nun sein System direkt mit der F10 Taste starten und ganz normal im Terminal [1] seine Einträge zum Starten neu setzen mit:

sudo grub-install
sudo update-grub 

Variante chroot-Methode

Mit dem oben erstellten Datenträger startet man seinen Rechner und stellt im Terminal [1] einen chroot-Zugang zu seinem System her. Da alle Befehle mit Root-Rechten ausgeführt werden müssen, kann man das Benutzer-Terminal auf ein Root-Terminal umstellen mit

sudo -s 

Ab jetzt werden alle Eingaben in das Terminal [1] ohne das voran gestellte sudo ausgeführt. Der Befehl

blkid 

informiert über die beteiligten Festplatten und Partitionen. Die nachfolgenden Angaben / Annahmen sind an den entsprechenden Stellen an das eigene System anzupassen. Die Root-Partition wird eingebunden mit:

mount /dev/sdXX /mnt 
  • Abweichung bei einem Btrfs-Dateisystem:

    mount -o compress,ssd,subvol=@ /dev/sdXX /mnt 
  • Ergänzung bei getrennter /boot-Partition:

    mount /dev/sdXX /mnt/boot 

Nun erfolgt noch das Einbinden der EFI-Partition (am besten Kopieren → Einfügen verwenden):

mount /dev/sdXX /mnt/boot/efi 

Mit den folgenden Eingaben wird die chroot-Umgebung vorbereitet:

for i in dev dev/pts proc sys sys/firmware; do mount --bind /$i /mnt/$i; done 

Nun kann man in das beschädigte System wechseln mit

chroot /mnt 

und repariert dort die Einstellungen für die Datei /boot/grub/grub.cfg und den Eintrag für das EFI-Menü mit

update-grub 

und installiert GRUB nun ohne Angabe einer Festplatte/Partition neu mit

grub-install  # Option = --verbose 

Die Option --verbose bzw. kurz -v zeigt die Aktionen während der Abarbeitung an und sollte nur benutzt werden, wenn man den korrekten Ablauf überprüfen will. Nachdem man sich über die ausgeführten Aktionen informiert hat und diese für richtig befunden hat, kann man das System wieder verlassen mit zweimaligen Eingabe von

exit 

Nach einem Reboot aus dem Livesystem sollte der Eintrag "ubuntu" ein Starten in das eigene System wieder erlauben. Am dortigen Desktop kann man dann, soweit erforderlich, weitere Informationen abfragen bzw. Korrekturen / Reparaturen ausführen.

Ubuntu startet nicht

Nach einer Ubuntu EFI Installation erfolgt der Start von Ubuntu in der Regel automatisch. Es wird dazu ein Eintrag im NVRAM benutzt, der mit der Installation angelegt wurde.

Hinweis:

In der Regel legt der Ubuntu-Installer den Ubuntu Starteintrag im NVRAM so an, dass damit nach einem Reboot automatisch GRUB ausgeführt und damit auch Ubuntu automatisch gestartet wird.

Passiert dies nicht, kann das durch eine ungünstige Boot-Reihenfolge oder das gänzliche Fehlen des Starteintrags im NVRAM verursacht werden. Ersteres kann über das EFI-Menü umgangen werden und beides kann im EFI-BIOS-Setup korrigiert werden. Ist dieses aber nicht möglich, z.B. weil man nicht die zum Aufruf richtige Tastenkombination kennt, so kann man dies auch über Windows durchführen.

Ubuntu im Windows-Bootmanager starten

Nach dem Aufruf des Windows-Bootmanagers wählt man in der Auswahl der Optionen (siehe Abbildung) nacheinander die Apps

  • "Ein Gerät verwenden"

  • "ubuntu"

Nach der Auswahl mit einem linke Maustaste-Klick sollte das Ubuntu starten.

Anzeige des NVRAM

EasyBCD_Auswahl_alle.png
EasyBCD Anzeige EFI-Partition

Mit der Windows Anwendung EasyBCD 🇬🇧 kann man sich u.a. die Einträge im NVRAM anzeigen lassen, jedoch ist damit keine Ergänzung mit einem EFI-Eintrag um diese Bootoption im Windows Bootmanager möglich. Aber man erkennt, dass das Ubuntu auf dieser Partition eingerichtet wurde. Nun kann man den erforderlichen Booteintrag manuell generieren. Dazu ruft man am Windows Desktop die "Eingabeaufforderung" (bcdedit funktioniert mit anderen Terminals nicht korrekt.) mit Adminrechten auf und gibt dort ein:

bcdedit /create /d "Mein Linux" /application bootsector 

Ausgegeben wird eine Zeichenkette / UUID innerhalb geschweifter Klammern, zum Beispiel:

 {ef8119c2-86bc-11dc-99e3-0019dbeb3cb3} 

Diese UUID muss man bei dem nächsten Befehl einmal sorgfältig von Hand zwischen die geschweiften Klammern eingeben.

bcdedit /set {UUID} device partition=\Device\HarddiskVolume1 

Danach mit den vorherigen Eintrag wieder zurückrufen und dann die Parameter korrigieren auf

bcdedit_efi_ubuntu.png
ERGEBNIS MANUELLER EINTRAG

bcdedit /set {UUID} path \EFI\ubuntu\grubx64.efi # oder shimx64.efi 

bcdedit /displayorder {UUID} /addlast  # oder /addfirst 

Am Ende lässt man sich das Ergebnis anzeigen mit

bcdedit /enum 

und es sollte dann wie in der Abbildung aussehen. Damit erscheint dieses im Windows 7 als Auswahlzeile bzw. in Windows 8 als App, die dann (hoffentlich) das Ubuntu startet.

Hinweis:

Das secure-boot muss deaktiviert sein, weil ansonsten das Nachladen der erforderlichen Dateien abgeblockt wird.

Eingestellte BootOrder im NVRAM wird von Firmware wieder überschrieben

Bei manchen Rechnern kann der Grund daher rühren, dass der Ubuntu-Eintrag immer wieder aus der BootOrder entfernt wird, und dadurch statt GRUB immer der Windows-Bootloader bevorzugt wird. Dies ist bei manchen HP-Laptop-Modellen aufgefallen. Dies kann in manchen Fällen dadurch verhindert werden, indem man den Windows-Eintrag inaktiv setzt:

sudo efibootmgr -b 0000 -A
sudo efibootmgr -o 0001,0000,0002,0003,0004 

BootOrder: 0001,0000,0002,0003,0004
Boot0000  Windows Boot Manager  HD(1,800,32000,34911255...
Boot0001* ubuntu  HD(1,800,32000,34911255......
Boot0002* ...

UEFI nicht erreichbar

Nach dem Aufruf des Windows-Bootmanagers wählt man in der Auswahl der Optionen nacheinander die Apps

  • "Problembehandlung"

  • "Erweiterte Optionen"

  • "UEFI-Firmwareeinstellungen" → Button "Neu Starten"

Danach startet Windows 8 in das Firmware-Setup (UEFI).

Mit DVD/CD oder USB-Stick

Man kann alternativ versuchen, das Firmware-Setup auch mit dem Ubuntu Installations-Medium aufzurufen - sofern dieses nicht von den Einstellungen im Setup abgeblockt wird. Bei einer CD/DVD oder einen mit der Laufwerksverwaltung bzw. dd erstellten USB-Stick wählt man am GRUB-2-Menü nach dem Start

  • mit zum Eintrag "Check disc for defects"

  • mit E den Editor aufrufen

  • und löscht mit alle Zeilen

  • ergänzt dafür mit "fwsetup"

  • startet mit F10

und gelangt nach dem Reboot in das Firmware-Setup.

Ubuntu auf USB-Festplatte

Hat man bereits ein Ubuntu-Betriebssystem im EFI-Modus auf einer (externen) Festplatte, so kann man die direkte Auswahl im GRUB-2-Menü benutzen. Diese Option ist allerdings erst seit Trusty Tahr gegeben.

Kurzes Aufflackern eines fallback.efi Fehlers

Bei manchen EFI-Geräten kann es passieren, dass das Gerät beim Booten nur die Grub-2-Shell anzeigt. Dies kann mehrere Ursachen haben, jedoch flackert kurz zuvor die Fehlermeldung Could not open "\EFI\BOOT\fallback.efi" auf, welche man eventuell nur erkennen kann, wenn man den Bildschirm mit einer Kamera abfilmt (z.B. dem Handy).

Diese Meldung deutet darauf hin, dass ein EFI-Fallback-Modus benötigt wird. Dazu reicht es bei vielen Geräten aus, die Datei(en) des normalen Modus in den Fallback-Modus zu kopieren. Dazu führt man folgende Befehle von einer Live-CD aus:

EFI-Partition ermitteln:

sudo parted -l 

EFI-Partition einhängen:

sudo mount /dev/sdXY /mnt
ls -l /mnt/EFI 

sdXY muss durch die ermittelte EFI-Partition angepasst werden, z.B. sda1 - mit dem zweiten Befehl ermittelt man die Schreibweise vom Verzeichnis Boot.

  • Wenn secure-boot aktiviert ist:

    sudo cp -a /mnt/EFI/ubuntu/shimx64.efi /mnt/EFI/Boot/fallback.efi 

  • Ohne secure-boot:

    sudo cp -a /mnt/EFI/ubuntu/grubx64.efi /mnt/EFI/Boot/fallback.efi 

Danach startet man neu, um den Erfolg der Maßnahme zu testen.

32-bit-UEFI - kein Start von USB möglich, Error 0xc000000f

Alle modernen Rechner besitzen heutzutage einen 64-bit-fähigen Prozessor. Bei einigen günstigen Tablets und Convertibles kann es jedoch vorkommen, dass trotz einer 64-bit-CPU nur ein 32-bit-UEFI installiert ist (Stand: 2017). Ein bereits vorinstalliertes Windows läuft dann ebenfalls als 32-bit-Version (zu erkennen in der Systemsteuerung bei den Systeminformationen).

Beim Versuch, einen USB-Stick mit der eigentlich passenden amd64.iso-Variante zu starten, erhält man aber eine der folgenden Fehlermeldungen. (Die i386.iso-Dateien funktionieren auf einem 64-bit-Prozessor nicht. Also muss man zur amd64.iso greifen.)

  • No USB-Boot (oder ähnlich)

  • USB Boot failed (oder ähnlich)

  • Error 0xc000000f (beim Windows Start)

  • ubnldr.mbr kann nicht geladen werden (UNetbootin nach Installation der ISO auf lokaler Festplatte)

  • g2ldr.mbr kann nicht geladen werden (Debian win32-loader)

In diesem Fall benötigt man noch eine zusätzliche bootia32.efi-Datei ⮷, welche auf den USB-Stick ins Verzeichnis /EFI/BOOT/ kopiert werden muss. Also: USB-LAUFWERK/EFI/BOOT/bootia32.efi

Danach kann von USB-Stick gestartet werden und die Installation beginnen. Die Installation sollte mit bestehender Internetverbindung stattfinden, damit auch der passende Bootloader (Paket grub-efi-ia32) nachgeladen werden kann

Hinweis:

  • Es ist über Umwege auch möglich, eine 32-bit-Version von Ubuntu unter EFI zu installieren. Details findet man im entsprechenden Artikel.

  • Der Entwickler Ian Morission bietet auf seiner Seite Linuxium.com.au 🇬🇧 ein Shellskript (isorespin.sh) an, mit dem man eine 64-bit-ISO-Datei für Tablets und Convertibles umwandeln kann. Dabei werden die fehlenden 32-bit-Boot-Dateien und einige Treiber für WLAN, CPU, Soundkarte und Bluetooth hinzugefügt.

Probleme mit Windows

Es kann passieren, dass das Windows nach einer Installation von Ubuntu bzw. nach Arbeiten mit Ubuntu nicht mehr richtig arbeitet. Das kann verschiedene Gründe haben. Andererseits gibt es auch Firmware (EFI), die das Starten vom installierten Windows erzwingt - und somit andere Betriebssysteme ignoriert.

Einige markante Probleme werden nachfolgend beschrieben.

EFI-Partition

Windows und auch Ubuntu starten scheinbar ohne Probleme - und doch erscheinen nicht erklärbare Probleme im laufenden Betrieb. Dazu wird unter Windows u.a. folgendes Fehlverhalten festgestellt bei der:

  • "Systemsicherung" , diese bricht mit einer Fehlermeldung ab

  • "Eingabeaufforderung" , diese verweigert Administratorrechte

parameter-efi-partition.png
Einstellungen Parameter einer EFI-Partition

Dann sollte man unter Ubuntu die Einstellungen der EFI-Partition zu

  • "Partitionstyp, Bezeichnung und Flags"

überprüfen. Dazu ruft man durch Drücken der Super -Taste und der Eingabe in das Suchfeld von

  • "Laufwerksverwaltung"

diese Anwendung auf und fragt die Festplatte, auf der sich die EFI-Partition befindet, nach den Parametern der EFI-Partition ab unter

  • "Partition bearbeiten"

Das Ergebnis muss (abgesehen von der Partitionsbezeichnung) die abgebildeten Einstellungen aufweisen. Diese sind, sofern erforderlich, anzupassen.

Hinweis:

Mit dem Werkzeug GParted lassen sich diese Parameter zwar abfragen, nicht jedoch korrekt setzen / einstellen!

Acer-Rechner

Um auf einem Acer-Rechner ein (weiteres) Betriebssystem installieren zu können, sind einige Änderungen erforderlich. Je nach Voreinstellung muss man die folgenden Schritte abarbeiten:

Vor der ersten Installation:

  1. Das UEFI aufrufen (fälschlich wird dies oft als BIOS bezeichnet).

    • Funktionstaste siehe Handbuch

  2. Mit den Menüpunkt "Security" auswählen.

  3. Mit das Submenü "Set Supervisor Password:" auswählen.

  4. Mit diese Einstellung aufrufen.

  5. Ein Password eingeben. Wichtig:

    • merken bzw. aufschreiben

    • oder nach der Installation wieder entfernen.

  6. Mit den Menüpunkt "Boot" auswählen.

  7. "Boot Mode:" auf "[UEFI]" setzen

  8. "Secure Boot" auf "[Enabled]" setzen

  9. Das Installationsmedium (z.B. USB) auf die erste Position setzen

  10. Mit den Menüpunkt "Exit" auswählen.

  11. UEFI über "Save Changes and Exit" verlassen.

Jetzt kann man das Installationsmedium einlegen (DVD/CD) bzw. einstecken (USB-Stick), auf der sich das zu installierende Betriebssystem befindet und den Rechner neu starten.

Auf Acer-Rechnern wird nach einer korrekten UEFI-Installation Ubuntu bzw. der GRUB-2-Bootloader nicht angezeigt. Das ist unabhängig davon, ob noch ein weiteres Betriebssystem (z.B. Windows) installiert ist oder nicht.

Arbeitschritte nach der Installation:

  1. In das UEFI wechseln.

    • Funktionstaste siehe Handbuch.

  2. Mit den Menüpunkt "Boot" (alternativ Bereich "Security") auswählen.

  3. Mit das Submenü "EFI File" auswählen.

  4. Mit diese Einstellung aufrufen.

    • Die folgenden Vorgaben sind je Rechner verschieden - also sinngemäß arbeiten.

    • z.B. auch → "Select an UEFI file as trusted for executing".

  5. "HDD0" wird angezeigt →

  6. "EFI" wird angezeigt →

  7. Mit bzw. "ubuntu" auswählen →

  8. Den Eintrag "shimx64.efi ..." auswählen →

  9. Eine Bezeichnung dafür eingeben →

  10. Mit den Menüpunkt Exit" auswählen.

  11. UEFI über "Save Changes and Exit" verlassen.

Nun kann man nach dem Reboot im GRUB-2-Menü Ubuntu auswählen. Wird nichts angezeigt, weil ausschließlich Ubuntu installiert worden ist, so muss man die Einstellungen in der /etc/default/grub entsprechend nachbearbeiten.

Anmerkung/Neuerung:

Sollten oben genannte Maßnahmen nicht helfen, können folgende Schritte helfen:

1. SecureBoot im UEFI vorsichtshalber deaktivieren, anschließend booten mit Ubuntu Live DVD/USB und "Ubuntu ausprobieren" wählen.

2. ein Terminal öffen und eingeben:

1
sudo ubiquity -b

→ dient dazu dass der Installer nicht den Bootloader installiert (was ja sonst Fehler verursacht)

3. Die Installation sollte ohne Probleme verlaufen sein → Testmodus fortsetzen!

4. Jetzt wird das neu installierte System im Terminal gemountet:

1
2
3
4
sudo mount /dev/sda2 /mnt
sudo mkdir /mnt/boot/efi
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done

→ sda2 ist die root partition und sda1 ist die EFI system partition (anpassen)

Hinweis: Um herauszufinden welche Laufwerke/Partitionen inkl. Bezeichnungen vorhanden sind:

1
sudo efibootmgr 

5. Evivars laden:

1
sudo modprobe efivars

→ es kann eine Fehlermeldung erscheinen, diese ist aber nicht weiter von Belang. Seit Ubuntu 22.04. ist evivars standardmässig installiert und aktiv.

6. Jetzt wird Grub neu installiert (bsp. für 64 Bit)

1
2
sudo apt-get install --reinstall grub-efi-amd64
sudo grub-install --no-nvram --root-directory=/mnt

Erläuterung:

--no-nvram → Diese teilt grub-install mit, dass NVRAM nicht genutzt werden soll für EFI Variablen

--root-directory → spezifiziert den Root ordner zum mounten

7. Jetzt wird root als Mount festgelegt und Grub geupdated:

1
2
sudo chroot /mnt
update-grub

8. Zum Schluss wird der Bootloader verschoben und umbenannt:

1
2
3
4
cd /boot/efi/EFI
cp -R ubuntu/* BOOT/
cd BOOT
cp grubx64.efi bootx64.efi

→ Anschliessend den Rechner neustarten (ohne Bootmedium) Ubuntu sollte jetzt ohne Probleme starten. Es spielt auch keine Rolle ob SecureBoot aktiv ist oder nicht oder ob ihr im UEFI grubx64.efi als "Trusted" markiert.

Fehlerbehebung

Wenn bei den oben genannten Schritten Probleme auftreten, kannst du versuchen das rEFInd-Live-System zu booten (z. B. von einem USB-Stick), die UEFI-Shell öffnen und den erforderlichen UEFI-Eintrag mit bcfg generieren:

1
bcfg boot add 2 fs0:\EFI\ubuntu\grubx64.efi "GRUB Loader"

Dieser Befehl fügt einen Boot-Eintrag für GRUB an Position 2 hinzu, sodass beim Neustart und Drücken von F12 zwischen dem Booten von GRUB (und dann Ubuntu) oder Windows gewählt werden kann.

Ubuntu startet nur einmal

Nach der Installation bzw. nach einer Reparatur vom GRUB 2 wird das Grubmenü angezeigt und man kann alle angezeigten Optionen auch starten.

Sobald man Windows aufruft, startet es. Beim nächsten Start jedoch erscheint der Windows-Bootmanager - das Grubmenü kann nicht mehr ausgewählt werden.

Eine Überprüfung vom NVRAM ergibt dann, dass der Windows-Eintrag in der Bootreihenfolge an erster Stelle steht und meist, dass der Eintrag von Ubuntu gelöscht wurde.

Experten-Info:

Bei einigen Rechner geschieht dabei folgendes: Die Firmware löscht den Windows-Eintrag, wenn dieser nicht an erster Stelle in der Bootreihenfolge steht. Dies beeinträchtigt den Start von Grub nicht. Sobald Windows startet, bemerkt es den fehlenden Eintrag im NVRAM, erstellt ihn neu und setzt ihn an die erste Stelle in der Bootreihenfolge. Dabei kommt es vor, dass der Ubuntu-Eintrag gelöscht wird. Wenn man den Windows-Booteintrag an erster Stelle belässt, aber auf inaktiv setzt, umgeht man das Problem.

Um das zu korrigieren, startet man ein Ubuntu-Livesystem und arbeitet eine dieser Anleitungen zur Reparatur ab. Nun sollten sowohl für Windows als auch für Ubuntu Einträge vorhanden sein, die Ausgabe mittels efibootmgr kann beispielhaft wie folgt aussehen:

BootOrder: 0004,0000,0001,0002,0003
Boot0000* Windows Boot Manager  HD(1,800,32000,34911255...
Boot0001* ...
Boot0002* ...
Boot0003* ...
Boot0004* ubuntu  HD(1,800,32000,34911255......

Nun muss man die Bootreihenfolge (Zeile BootOrder) überprüfen, Windows muss hierbei an erster Stelle stehen, der Eintrag sollte aber deaktiviert sein. Dies ist in unserem Beispiel nicht der Fall, daher wird das wie folgt, korrigiert:

sudo efibootmgr -b 0000 -A
sudo efibootmgr -o 0000,0004,0001,0002,0003 
BootOrder: 0000,0004,0001,0002,0003
Boot0000 Windows Boot Manager  HD(1,800,32000,34911255...
Boot0001* ...

Da jetzt ein Eintrag - wenn auch deaktiviert - für das Windows an der ersten Stelle vorhanden ist, wird dieser zwar für den Aufruf im EFI-Menü ignoriert bzw. gar nicht angezeigt, aber von der Firmware als vorhanden anerkannt und damit kein neuer Eintrag generiert und das NVRAM beim Start vom Windows nicht mehr überschrieben.

Experten-Info:

Falls zwischen dem Eintrag für das Windows noch andere Einträge sind, kann man versuchen, auch diese zu deaktivieren. Damit wird die Anzeige von GRUB 2 etwas beschleunigt.

Das Setzen von Einträgen im Terminal muss wie folgt ausgeführt werden (alternativ):

  • sudo efibootmgr -o 0000,0004,0001,0002,0003

  • sudo efibootmgr -o 0,4,1,2,3,

Bei der Variante für den letzten Befehl muss das abschließende Komma immer gesetzt sein, da ansonsten die Auswertung (als HEX-Zahl) zu falschen Werten beim Setzen für das NVRAM führt.

Aufheben kann man das, sofern die Umstände das erfordern im Terminal [1] mit:

sudo efibootmgr -b 0000 -a 

Danach kann man das Windows auch wieder über das EFI-Menü aufrufen

Booten aus dem Grubmenü

Nicht auf allen Rechnern mit aktiven secure-boot kann man aus dem GRUB-2-Menü das Windows direkt zum Booten aufrufen, obwohl der generierte Eintrag korrekt ist. Dabei sieht man die folgende bzw. eine sinngemäße Ausgabe auf dem Monitor:

/EndEntire
file path: /ACPI(a0341d0,0)/PCI(2,1f)/UnknownMessaging(12)/HD (1,800,3200,55129134d8cfce43,a6,0)/ File (\efi\microsoft\boot)/ File (bootmgfw.efi)
/EndEntire

Dieses ist begründet in der Hersteller-spezifischen Aufbereitung des UEFI. Man kann dann nur

  • den Rechner ohne secure-boot benutzen (im UEFI deaktivieren - eingeschränkte Sicherheit)

  • das Windows direkt über das EFI-Menü booten

  • im Terminal [1] das Windows voreinstellen

  • ein Skript in die /boot/grub/grub.cfg einbringen

Experten-Info:

Man sollte, da der Windows-Eintrag auf diesen Rechnern im GRUB-2-Menü ohnehin nicht korrekt arbeitet, diesen in der /etc/default/grub über das Einbringen der zusätzlichen Zeile

  • GRUB_DISABLE_OS_PROBER=true

deaktivieren!

Eine Alternative für betroffene Rechner, um das secure-boot weiterhin zu nutzen, ist das Setzen der Option --bootnext in einem Terminal [1] vor dem Herunterfahren aus dem Ubuntu, um so das Windows automatisch als nächstes zu starten.

Alternative 1

Experten-Info:

Ist man gezwungen, den Wechsel öfter auszuführen, kann man ein Skript erstellen, dass das EFI-Menü aufruft. Das nachfolgende Skript wurde z.B. auf einem SAMSUNG-Rechner mit obiger Fehlermeldung erfolgreich getestet.

Man kopiert die Datei /etc/grub.d/40_custom nach /etc/grub.d/30_efi-menu im Terminal [1] mit:

sudo cp -f /etc/grub.d/40_custom /etc/grub.d/30_efi-menu 

und ergänzt die Kopie /etc/grub.d/30_efi-menu mit Rootrechten wie folgt (Zeilen 6 bis 8):

1
2
3
4
5
6
7
8
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'EFI-Bootmenü aufrufen' {
exit
}

Danach kann man das EFI-Menü über die GRUB-2-Auswahl und anschließend dort dann den "Windows Boot Manager" auswählen.

Alternative 2

Will man den Wechsel zum Windows direkt auszuführen, kann man die beispielhaften Skripte erstellen und in den beschriebenen Bereichen ablegen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh

# Diese Datei als 
#     'restart-windows'
# ausführbar machen (unter 'Eigenschaften') und nach
# ~/usr/local/sbin/' kopieren

if ! mount | grep 'efivars' 2>/dev/null ; then
    notify-send "Achtung - kein EFI-Betriebssystem" "Diese Anwendung kann auf diesem Ubuntu nicht eingesetzt werden!"
    exit;
fi

if ! which gksu 2>/dev/null; then
    notify-send "'gksu' ist nicht vorhanden!" "Benutzen Sie 'sudo apt-get install gksu', um diese Anwendung zu installieren!";
    exit;
else
    [ ! `ls -la /bin | grep efibootmgr | cut -c 4` = 's' ] && gksu chmod +s /bin/efibootmgr 2>/dev/null;
fi

NEXTBOOT=$( efibootmgr | grep 'Windows' | cut -c 5-8 ) 2>/dev/null;
if [ 'x${NEXTBOOT}' != 'x' ]; then
   efibootmgr -n ${NEXTBOOT} 2>/dev/null;
   gnome-session-quit --power-off;
   else
   notify-send "Abbruch - kein EFI Eintrag" "Das Windows kann nur direkt über das BIOS gestartet werden"
fi

exit;

In Verbindung mit dem obigen Skript kann folgende Startdatei nützlich sein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
### **** Desktop-File ****
# die folgende Sequenz in eine Datei kopieren und 
# z.B. als   'win-reboot.desktop'
# nach '/.local/share/applications/' im Homeverzeichnis kopieren

[Desktop Entry]
Name[de]=Ins Windows booten
Comment=Von Ubuntu direkt ins EFI Windows starten
Exec=/usr/local/sbin/restart-windows
Icon=Windows-Icon.png
Terminal=false
Type=Application
Categories=System;Settings;
MimeType=application;
StartupNotify=true
Keywords=Reboot;Windows

Unter Verwendung eines Windows-Icon (nach ~/.icons im Homeverzeichnis kopiert) kann man das dann im Unity-Launcher platzieren oder über die Super -Taste aufrufen - bei den anderen Derivaten ist entsprechend den dortigen Vorgaben zu verfahren.

Spezialfall MBR-GPT-Mischmasch

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Ein "GPT-MBR-Mischmasch" entsteht ganz leicht beim Herumprobieren von verschiedenen Installationen auf einem EFI-System. Dieses Herumprobieren wird dadurch provoziert, dass der Ubuntu-Installer - genauer gesagt das Paket os-prober - derzeit keine EFI-Installationen erkennt.

Beim Herumprobieren - sprich beim erneuten Installieren - werden dann in der Regel, Partitionstabellen nur neu angelegt. Beim Neuanlegen werden aber Strukturen einer alten anderen Partitionstabelle nicht gelöscht - zumindest sehr häufig nicht.

D.h. wenn man z.B. auf dem Datenträger bisher ein msdos-Partitionierungs-Schema hatte und legt dann ein GPT-Partitionierungs-Schema an, dann können Reste des msdos-Schemas erhalten bleiben, obwohl das neue GPT-Schema eingerichtet wird und an sich auch funktioniert. Das gilt noch mehr für den umgekehrten Fall, dass man erst ein GPT-Schema hatte und dann zum msdos-Schema wechselt.

Problem für den "normalen Nutzer" ist dabei, dass sowohl im Windows-Setup als auch im Ubuntu-Installer gar nicht oder nicht ausreichend transparent wird, welches Schema verwendet bzw. neu angelegt wird.

Erkennen eines MBR-GPT-Mischmasches

Das Vorliegen von msdos- und GPT-Strukturen auf ein und dem selben Datenträger erkennt man an der Ausgabe von GNU Parted:

ubuntu@ubuntu:~$ sudo parted -l
Warning: /dev/sda contains GPT signatures, indicating that it has a GPT table.
However, it does not have a valid fake msdos partition table, as it should.
Perhaps it was corrupted -- possibly by a program that doesn't understand GPT
partition tables.  Or perhaps you deleted the GPT table, and are now using an
msdos partition table.  Is this a GPT partition table?
Yes/No?   

In GParted erkennt man es daran, dass keine Partitionen auf dem Datenträger angezeigt werden.

Auflösen des MBR-GPT-Mischmasches vor vollständiger Neuinstallation

Den MBR-GPT-Mischmasch kann man bei Neuinstallation auflösen indem man vor der Installation beide Strukturen vollständig entfernt. Das geht von Linux aus wie folgt:

Löschen des msdos-Schemas

sudo dd if=/dev/zero of=/dev/sdX count=2048 

/dev/sdX ist dabei durch den Datenträger zu ersetzen, den man bereinigen möchte. Mit diesem Befehl wird der MBR und der dahinterliegende verborgene Bereich genullt, was für das Löschen des msdos-Schemas ausreichend ist.

Löschen des GPT-Schemas

Obwohl die primären GPT-Informationen auch innerhalb der ersten 2048 Sektoren liegen, reicht hier für ein sauberes Löschen der GPT-Struktur ein Nullen dieses Bereiches nicht aus. Ein vollständiges Löschen ist effizient nur mittels gdisk möglich:

  1. sudo gdisk /dev/sdX 

    /dev/sdX durch die zu bereinigende Platte ersetzen.

  2. gdisk präsentiert daraufhin wahrscheinlich die folgende Abfrage:

    GPT fdisk (gdisk) version 0.8.1
    
    Partition table scan:
      MBR: MBR only
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid MBR and GPT. Which do you want to use?
     1 - MBR
     2 - GPT
     3 - Create blank GPT
    
    Your answer: 

Da man hier ohnehin alle Strukturen vom Datenträger löschen möchte, ist es in dem Fall egal, ob man 1 , 2 oder 3 drückt.

  1. X drücken, um in das extra-functionality-Menü zu gelangen.

  2. Z drücken, um etwaige Reste eines GPT-Schemas zu löschen.

  3. Dabei beide Nachfragen mit Y bestätigen gdisk sollte anschließend selbständig schließen.

Alternativ könnte man auch den vollständigen Datenträger mit Nullen überschreiben lassen, was dann aber im Verhältnis viel länger dauern würde.

Wenn beide Strukturen gelöscht wurden, dann kann man wieder sauber neu installieren, wobei man dabei unbedingt die Hintergründe einer Installation auf einem EFI-System beachten muss. Siehe dazu oben ab Vorbemerkung).

Auflösen des MBR-GPT-Mischmasches im bereits installierten und an sich lauffähigen System

Auch wenn das System bereits installiert ist, kann man den Mischmasch aus msdos- und GPT-Strukturen beseitigen. Voraussetzung ist, dass man sich zunächst gdisk auf dem System installiert.

Achtung!

Auch wenn gdisk in aller Regel zuverlässig arbeitet, stellen Operationen am Partitionierungs-Schema einen sehr risikoreichen Vorgang dar, bei dem es im schlimmsten Fall zu Datenverlust kommen kann. Wichtige Daten müssen daher vor der Operation unbedingt extern gesichert werden!

Löschen von nicht benötigten verbliebenen GPT-Strukturen

Nutzt man auf dem System aktuell ein msdos-Schema und möchte übriggebliebene GPT-Strukturen löschen, so geht man wie folgt vor:

  1. sudo gdisk /dev/sdX 

    /dev/sdX durch die zu bereinigende Platte ersetzen.

  2. gdisk präsentiert daraufhin wahrscheinlich die folgende Abfrage:

    GPT fdisk (gdisk) version 0.8.1
    
    Partition table scan:
      MBR: MBR only
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid MBR and GPT. Which do you want to use?
     1 - MBR
     2 - GPT
     3 - Create blank GPT
    
    Your answer: 

    Hier muss man mit 1 antworten!

  3. X drücken, um in das extra-functionality-Menü zu gelangen.

  4. Z drücken, um etwaige Reste eines GPT-Schemas zu löschen.

  5. Achtung: Nach Drücken von Z stellt gdisk zwei Fragen. Die erste bezüglich des Löschens des GPT-Schemas beantwortet man mit Y . Die zweite Frage bezüglich des MBR muss man unbedingt mit N beantworten, da man andernfalls das bestehende, funktionstüchtige msdos-Schema löscht!

Löschen von nicht benötigten verbliebenen msdos-Strukturen

Setzt man aktuell eine GPT-Struktur ein und muss Reste einer msdos-Struktur entfernen, so erfolgt dies ebenfalls mittels gdisk:

  1. sudo gdisk /dev/sdX 

    /dev/sdX durch die zu bereinigende Platte ersetzen.

  2. gdisk präsentiert daraufhin wahrscheinlich die folgende Abfrage:

    GPT fdisk (gdisk) version 0.8.1
    
    Partition table scan:
      MBR: MBR only
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid MBR and GPT. Which do you want to use?
     1 - MBR
     2 - GPT
     3 - Create blank GPT
    
    Your answer: 

    Hier muss man mit 2 antworten!

  3. X drücken, um in das extra-functionality-Menü zu gelangen.

  4. N drücken, um einen sauberen Protectiv-MBR zu erzeugen und damit Reste eines msdos-Schemas zu löschen.

  5. W drücken, um die Veränderungen zu übernehmen und gdisk zu verlassen.

  6. Die Nachfrage mit Y bestätigen.

Diese Revision wurde am 15. September 2023 13:18 von DJKUhpisse erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Ubuntu, Installation, System, BIOS, EFI