Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Seit mehreren Jahren kommen zunehmend Computer-Systeme auf den Markt, die mit einem Unified Extensible Firmware Interface (U)EFI statt dem 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 zur Zeit 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.
Alle Hinweise und Beschreibungen in diesem Artikel beziehen sich ausschließlich auf eine Installation auf einem Rechner mit einem (U)EFI-BIOS. Die Nutzung von secure-boot ist erst mit der Ausgabe von Ubuntu 12.04 LTS sinnvoll/problemlos möglich.
Sollte kein EFI-Eintrag vorhanden sein, muss dieser (neu) erstellt werden, wie es in EFI Problembehebung beschrieben ist.
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
GRUB 2/Skripte -> andere Betriebssysteme im EFI-Modus starten
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.
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.
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 seiner Wahl [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.
Der Befehl grub-install
verändert aus der Vorgabe in der Datei /etc/default/grub Großbuchstaben immer auf Kleinbuchstaben!
Bei Systemen ohne secure-boot-Fähigkeit wird hierbei nur die Datei grubx64.efi im Bootverzeichnis angelegt.
Bei Systemen mit secure-boot-Fähigkeit werden hierbei die Dateien grubx64.efi, grub.cfg sowie evtl. shimx64.efi angelegt. Ab Saucy Salamander noch evtl. zusätzlich die Datei MokManager.efi.
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 entprechenden /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!
Ubuntu versucht per Default 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-Menueintrag anlegen (bitte die jeweils doppelten "backslash" bei der Eingabe beachten).
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 ab Trusty Tahr für jede Installation auch die zutreffende Bezeichnung sich 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.
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.
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
Die folgende Nachinstallation ist erst ab Version 12.04.2 problemlos anwendbar. Die Pakete für Ubuntu 12.04 sind kernelbezogen, deshalb wurde eine Trennung für die Versionen vorgenommen.
linux-signed-generic-lts-trusty
grub-efi-amd64-signed
shim-signed
mit apturl
Paketliste zum Kopieren:
sudo apt-get install linux-signed-generic-lts-trusty grub-efi-amd64-signed shim-signed
sudo aptitude install linux-signed-generic-lts-trusty grub-efi-amd64-signed shim-signed
linux-signed-generic
grub-efi-amd64-signed
shim-signed
mit apturl
Paketliste zum Kopieren:
sudo apt-get install linux-signed-generic grub-efi-amd64-signed shim-signed
sudo aptitude install linux-signed-generic grub-efi-amd64-signed shim-signed
Es werden je nach der Ubuntuversion und dem Stand der Updates weitere Pakete automatisch der Installation 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"
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 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.
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!
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.
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.
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.
EFI_Bootmanagement Übersicht zur Artikelserie
EFI_Grundlagen - Alles Wissenwerte rund um Ubuntu mit einem (U)EFI-BIOS]
EFI_Installieren - Hinweise vor einer und zur Installation
EFI_Deinstallieren - Hinweise und Maßnahmen beim Entfernen eines Betriebssystemes
EFI Externer-Datenträger - Einzelnes System oder Multiboot auf externen Datenträger einrichten
EFI Modus umstellen - Umstellung der Boot-Modi von (U)EFI nach BIOS
Das EFI_Werkzeug - (U)EFI-Menü einstellen und prüfen
EFI USB-Stick - Einen USB-Stick für UEFI aufberieten
EFI_Problembehebung - eine Sammlung von Erfahrungen, Fragen und Abhilfen
Dualboot - Installation von Ubuntu neben Windows
System verschlüsseln - Verschlüsselte Installation von Ubuntu neben Windows
Laufwerksverwaltung - Eine ISO-Datei auf einen USB-Stick direkt übertragen
UEFI - Unified Extensible Firmware Interface
UEFI Spezifikation - Aufbau und Grundsätze
NVRAM - Non-Volatile Random-Access Memory
ACER Rechner - Bootreihenfolge ändern
Diese Revision wurde am 15. Dezember 2016 22:02 von UlfZibis erstellt.