ubuntuusers.de

EFI Nachbearbeitung

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

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Seit mehreren Jahren kommen zunehmend Computer-Systeme auf den Markt, die mit einem Unified Extensible Firmware Interface (U)EFI statt des lange Zeit genutzten BIOS ausgestattet sind. Deshalb soll in diesem Artikel die Aufmerksamkeit auf den durch diese Technik entstehenden Unterschied gelenkt werden.

Beschrieben wird das Konfigurieren eines Rechners nach der Installation, wie es zurzeit bei Ubuntu und deren Derivaten erforderlich werden kann. Es werden Hinweise und Problemlösungen gegeben, wie man Einstellungen vornimmt, die bei einer normal ablaufenden Installation nicht automatisch vorgenommen werden.

Dabei wird in diesem Unterabschnitt auf Besonderheiten eingegangen, die den ersten Start nach erfolgter Installation betreffen - sofern sie etwas mit der Nutzung von (U)EFI zu tun haben. Anderweitige Probleme mit Ubuntu auf EFI-Systemen, die eventuell nach längerer Laufzeit hervortreten, sind nicht Gegenstand dieses Artikels.

Hinweis:

Alle Hinweise und Beschreibungen in diesem Artikel beziehen sich ausschließlich auf eine Installation auf einem Rechner mit einem (U)EFI-BIOS.

EFI-Eintrag neu erstellen

Sollte kein EFI-Eintrag vorhanden sein, muss dieser (neu) erstellt werden, wie es in EFI Problembehebung (Abschnitt „EFI-Eintrag-wurde-geloescht-oder-zerstoert“) beschrieben ist.

Andere Distribution einbinden

Der Ubuntu-Installer erkennt während der Installation nicht immer andere, bereits vorhandene EFI-Installationen. Deshalb muss man bei Installationen bis Trusty Tahr (14.04 LTS) die Einträge anderer Betriebssysteme im GRUB 2-Menü in einem späteren Arbeitsgang nachholen. Entsprechende Beschreibungen und Vorgaben findet man unter

Andererseits sollte man bei einem Upgrade prüfen, ob der Windows-Eintrag im Grub-Menü, der über ein separates Skript eingebracht wurde, wieder entfernt werden kann.

Hinweis:

Dieses ist konzeptionell so vorgesehen und nicht als Fehler zu betrachten. EFI-Modus bedeutet eben, dass man das EFI-Menü zur Auswahl benutzen kann.

Für das Einbinden einer anderen Distribution auf einem externen Datenträger siehe diese separate Beschreibung.

Zusätzliches Bootverzeichnis erstellen

Bei einem Mehrfach-Bootsystem kann die mehrfache Benutzung des Bootverzeichnisses (/boot/efi)/EFI/ubuntu dazu führen, dass dieses Verzeichnis und dessen Datei(en) bei der Installation eines weiteren Derivats überschrieben werden - insbesondere bei einer Aktualisierung von GRUB_2:-Paketen führt das dann zu unkontrollierten Startbedingungen.

Aus diesem Grund empfiehlt es sich bei einem sekundären Betriebssystems, gleich nach der Installation und nachdem man sich vom allgemeinen funktionieren der neuen Installation überzeugt hat, ein gesondertes Verzeichnis mit einer markanten Bezeichnung zu erstellen, quasi als "Parkplatz" für die redundante nicht benötigte GRUB-Installation und deren automatische Aktualisierungen.

Dazu kann man in der Datei /etc/default/grub mit Root-Rechten in einem Editor [2] die Zeile mit

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

beispielhaft ändern in

GRUB_DISTRIBUTOR="Precise-Server"

und dann GRUB erneut installieren:

sudo grub-install 

Damit wird für diese Installation dauerhaft der GRUB-Installationspfad auf

  • (/boot/efi)/EFI/precise-server

gelegt und auch ein darauf fixierter Eintrag im NVRAM angelegt.

Hinweis:

Der Befehl grub-install verändert aus der Vorgabe in der Datei /etc/default/grub Großbuchstaben immer auf Kleinbuchstaben!

Systeme ohne secure-boot

Bei Systemen ohne secure-boot-Fähigkeit wird hierbei nur die Datei grubx64.efi im Bootverzeichnis angelegt.

Systeme mit secure-boot

Bei Systemen mit secure-boot-Fähigkeit werden hierbei die Dateien grubx64.efi, grub.cfg sowie evtl. shimx64.efi angelegt, seit Ubuntu 13.10 noch evtl. zusätzlich die Datei MokManager.efi.

Experten-Info:

Das Verzeichnis /boot/efi/EFI/ubuntu darf nie gelöscht werden - dieses wird immer von dem aktuellen primären Betriebssystem benutzt! Die sekundären Betriebssysteme werden dann über den GRUB 2 Menü-Eintrag im primären Betriebssystem aufgerufen / gestartet.

Nur im Fall eines unsignierten Bootloaders (nicht-secure-boot-fähig) ist der automatisch entstandene zusätzliche EFI-Menü-Eintrag mit der entsprechenden /boot/grub/grub.cfg des sekundären Betriebssystems verknüpft. Im Fall eines signierten GRUB-Bootloaders (secure-boot-fähig) ist dies nicht gegeben, sodass bei Benutzung immer wieder die /boot/grub/grub.cfg des primären Betriebssystems ausgeführt würde. Um dies zu ändern, müsste dafür in der z.B. EFI\precise-server\grubx64.efi die Zeichenkette "EFI\ubuntu" mittels eines Hex-Editors in "EFI\precise-server" manipuliert werden, wodurch jedoch wegen der dann ungültigen Signatur secure boot nicht mehr möglich ist.

Nachdem ein sekundäres Betriebssystem über das primäre Betriebssystem gestartet werden kann, sollte man deshalb den zusätzlichen Eintrag für das sekundäre Betriebssystem im NVRAM wieder löschen!

Eintrag NVRAM erstellen

Ubuntu versucht standardmäßig als Regeleintrag im NVRAM die nächste freie Position ab #0000 aufwärts zu belegen. Wird eine derartige Position aber vom EFI-BIOS für andere Zwecke gebraucht (Hardware- und Hersteller-abhängig), so wird dieser Eintrag nur flüchtig angelegt und wird dann bei einem Reboot nicht mehr angezeigt und damit das Ubuntu nicht mehr auswählbar.

Als Lösung wird die Bearbeitung des EFI-Menü empfohlen - indem man im Terminal [1]

sudo efibootmgr | grep ^Boot[0-9] | cut -b 5-8 

eingibt - es werden die benutzten Einträge im NVRAM angezeigt. Beispielhaft wird 000A als freier Platz angenommen, man kann im Terminal [1] mit

sudo efibootmgr -c --bootnum 000A -d /dev/sda -p 1 -L "Precise Server" -l \\EFI\\precise-server\\grubx64.efi 

einen neuen EFI-Menüeintrag anlegen (bitte die jeweils doppelten 'backslash' bei der Eingabe beachten).

Anzeige Grubmenü anpassen

Für Ubuntu wird aufgrund der System-ID als Anzeige im Grubmenü immer "Ubuntu" verwendet, auch wenn es sich z.B. um das Derivat "Lubuntu" handelt. Dieser Umstand als solches ist für viele Benutzer unbefriedigend. Damit diese Anzeige auf das jeweils wirkliche Derivat in einer Installation mit mehreren Derivaten hinweist, kann man sich ab Trusty Tahr für jede Installation auch die zutreffende Bezeichnung anzeigen lassen.

Dazu muss für jede Installation diese Maßnahmen ausgeführt werden. Nach einem

sudo update-grub 

im primären System werden dann auch die Bezeichnungen aus den sekundären Systemen übernommen.

Secure-Boot nachrüsten

Hat man Ubuntu auf einem Rechner mit UEFI ohne secure-boot-Eigenschaften installiert, so kann man diese Schutzmaßnahme auch nachträglich in ein bestehendes System einbringen.

Experten-Info:

Alle ISO-Dateien der verschiedenen Ubuntu-Derivate werden erst nach und nach mit der secure-boot-Eigenschaft ausgestattet, um damit auch gleich in diesem Modus installieren zu können. Man sollte die Fähigkeit des Bootens über eine EFI-Firmware mit aktiven secure-boot vorab mit Ubuntu bzw. einem Derivat seiner Wahl auf z.B. einem USB-Stick ausgiebig testen!

Beispielhafte Einstellungen von secure-boot sind diesen Bildern zu entnehmen. Diese Einstellungen sind im eigenen System sinngemäß aufzusuchen und soweit erforderlich einzustellen.

Bevor man mit der Nachinstallation der Pakete beginnt, sollte man sein System - zumindest aber die Paketlisten - auf den aktuellen Stand bringen. Dazu gibt man in ein Terminal [1] ein:

sudo apt-get update 

Pakete installieren

  • linux-signed-generic

  • grub-efi-amd64-signed

  • shim-signed

Paketliste zum Kopieren:

sudo apt-get install linux-signed-generic  grub-efi-amd64-signed  shim-signed 

Oder mit apturl installieren, Link: ,grub-efi-amd64-signed ,shim-signed

Es werden, je nach der Ubuntuversion und dem Stand der Updates, weitere Pakete der Installation automatisch hinzugefügt. Mit der Installation der Pakete wird automatisch die GRUB 2-Datei /boot/grub/grub.cfg auf den neuesten Stand gebracht. Bis hierhin ist diese Maßnahme leicht wieder rückgängig zu machen. Man kann diese Pakete in einem Terminal [1] wieder aus dem System entfernen mit

sudo apt-get purge "Liste installierte Pakete" 

Hinweis:

Es wird nur der aktuelle Kernel umgestellt! Bei dem update-grub wird im Submenü-Verzeichnis ab der zweiten Kernelgruppe die bisherigen, nicht signierten Kernel weiter verwendet. Erkennbar ist dies daran, dass der Zeile mit

linux	/boot/vmlinuz-3.8.0-0-generic root=UUID=2eea1ed3-a715-4722-8aba-7dc4a7f99e9b ro   quiet splash $vt_handof 

hinter der Kernelbezeichnung das .efi.signed fehlt! Dieser Kernel kann aber im normalen EFI-Modus gestartet und weiterhin als Notstarter verwendet werden.

Nun muss man nur noch in das EFI-BIOS (NVRAM) die neuen Gegebenheiten im Terminal [1] eintragen mit

sudo grub-install --uefi-secure-boot # --force 

Die hierbei erfolgte Anzeige sowie die /boot/grub/grub.cfg sollte man danach erst einmal auf Plausibilität überprüfen, bevor man das System rebootet. Die Option --force wird nur angewendet, wenn je nach der Fehlermeldung ein weiterer Versuch ausgeführt werden soll.

Hinweis:

Wird das System nach der Umstellung im EFI-secure-boot-Modus gestartet, so ist die Option --uefi-secure-boot bei einem erneuten grub-install nicht mehr erforderlich!

Start ohne secure-boot

Ein derart umgestelltes System kann jederzeit auch über den normale EFI-Modus ohne secure-boot-Einstellung gestartet werden - es erfolgt dann auf dem Monitor der (kurze) Hinweis:

secure boot not enabled

auf dem Bildschirm, was aber keinen Einfluss auf das nachfolgende Starten hat.

Hinweis:

Man sollte beachten, dass - sofern in diesem Zustand ein Kernelupdate ausgeführt wird - das relevante Paket linux-signed-generic entfernt wird und danach mit diesem Kernel kein secure-boot mehr möglich ist. Auch werden nachfolgende Updates ohne die entsprechenden -signed- Pakete ausgeführt. Man muss dann die obige Nachinstallation wiederholen.

Secure-Boot wieder entfernen

Es ist zwar nicht zwingend erforderlich, aber man kann das System durch Entfernen des Paketes grub-efi-amd64-signed wieder auf den normalen EFI-Modus umstellen. Dazu gibt man in das Terminal [1] ein:

sudo apt-get purge grub-efi-amd64-signed 

Zu beachten ist dabei, dass die Einträge im Verzeichnis (/boot/efi)EFI/ubuntu bzw. in einem selbst erstellten Verzeichnis gemäß Anderes Bootverzeichnis von Hand gelöscht werden müssen.

Diese Revision wurde am 12. August 2019 19:45 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: EFI, BIOS, System, Installation, Ubuntu