ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

EFI Nachbearbeitung

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

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

75px-Uefi_logo.png 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.

Hinweis:

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 ab dem Point-Release 12.04.2 für Ubuntu 12.04 sinnvoll/problemlos möglich.

EFI-Eintrag neu erstellen

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

Man setzt den für sein System passenden, mit z.B. UNetbootin erstellten USB-Stick ein und startet damit seinen Rechner. Am Desktop stellt man eine chroot-Umgebung von seinem System im Terminal [1] her. Da alle Befehle mit Rootrechten 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. Verlassen wird dieser Modus wieder mit:

exit 

Der Befehl

blkid 

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

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

    mount -o compress,ssd,subvol=@ /dev/sda4 /mnt 

  • Ergänzung bei getrennter /boot-Partition:

    mount /dev/sda3 /mnt/boot 

Nun erfolgt noch das Einbinden der EFI-Partition

mount /dev/sda1 /mnt/boot/efi 

Mit den folgenden Eingaben wird die chroot-Umgebung vorbereitet (am besten Kopieren -> Einfügen verwenden)

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 nun ohne Angabe einer Festplatte/Partition:

grub-install 

Nachdem man sich über die ausgeführten Aktionen informiert hat und diese für richtig befunden hat, kann man das System wieder verlassen mit

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.

Andere Distribution einbinden

Der Ubuntu-Installer erkennt während der Installation keine weiteren EFI-Installationen, deshalb muss man dieses in einem späteren Arbeitsgang nachholen. Entsprechende Beschreibungen und Vorgaben findet man unter

Hinweis:

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

Anderes Bootverzeichnis erstellen

Bei einem Mehrfach-Bootsystem führt die mehrfache Benutzung des Verzeichnisses (/boot/efi)/EFI/ubuntu dazu, dass dieses Verzeichnis und dessen Datei(en) bei der Installation eines weiteren Derivats überschrieben wird - insbesondere bei einem Update von GRUB 2-Paketen führt das dann zu unkontrollierten Startbedingungen.

Aus diesem Grund empfiehlt es sich, gleich nach der Installation ein gesondertes Verzeichnis mit einer markanten Bezeichnung zu erstellen.

Achtung!

Die folgende Beschreibung ist aufgeteilt nach ohne secure-boot und mit secure-boot. Ob die Änderung in der /etc/default/grub auch für ein System mit secure-boot dauerhaft funktioniert, ist abhängig vom technischen Layout des (U)EFI-BIOS und muss vorab getestet werden!

Systeme ohne secure-boot

Man kann in der Datei /etc/default/grub die Zeile mit

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

beispielhaft ändern in

GRUB_DISTRIBUTOR="Precise_Server"

Damit wird für diese Installation dauerhaft der Startpfad auf

  • (/boot/efi)/EFI/precise_server

gelegt und auch der Eintrag im NVRAM darauf fixiert.

Hinweis:

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

Systeme mit secure-boot

Man muss wie oben beschrieben, manuell im Terminal [1] ein Verzeichnis mit einer markanten Bezeichnung (je nach aktuellem Pfad) erstellen mit:

cd /boot/efi/EFI 

sudo mkdir precise_server 

und die Dateien shimx64.efi, grubx64.efi sowie grub.cfg aus dem Verzeichnis /ubuntu in das neu erstellte Verzeichnis kopieren mit:

cp ubuntu/* precise_server/ 

Dieses Kopieren sollte man nach jeder Veränderung an den grub-efi..-Paketen wiederholen.

Danach muss man die Datei shimx64.efi einschließlich seinem Verzeichnis wie nachfolgend beschrieben in das EFI-Menü eintragen.

Eintrag NVRAM erstellen

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

Secure-Boot nachrüsten

Will man eine bestehendes EFI-System ohne "secure-boot"-Eigenschaften in ein System umwandeln, welches sich auch auf einem EFI-BIOS mit aktiven "secure-boot" starten lässt, so ist das auch nachträglich möglich.

Achtung!

Man sollte die Fähigkeit des Bootens über eine EFI-Firmware mit secure-boot vorab mit einem dafür geeigneten USB-Stick von Ubuntu gleicher Version ausgiebig austesten! Alle Derivate (bis auf Ubuntu selbst) können nur auf diesem Wege auf secure-boot gebracht werden, weil die bisherigen Startmedien (*.iso-Dateien) nicht secure-boot-fähig sind.

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

Nachrüstung getestet für Ubuntu und Derivate
{*} Ubuntu {k} KUbuntu {l} LUbuntu {x} XUbuntu
Wiki/Icons/Tango/dialog-ok.png Wiki/Icons/Tango/dialog-ok.png Wiki/Icons/Tango/dialog-ok.png Wiki/Icons/Tango/dialog-ok.png Wiki/Icons/Tango/dialog-cancel.png

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

Hinweis:

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.

Ubuntu 12.04

  • linux-signed-generic-lts-quantal

  • grub-efi-amd64-signed

  • shim-signed

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

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

sudo aptitude install linux-signed-generic-lts-quantal grub-efi-amd64-signed shim-signed 

Ab Ubuntu 12.10

  • linux-signed-generic

  • grub-efi-amd64-signed

  • shim-signed

Wiki/Vorlagen/Installbutton/button.png 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" 

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 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:

Nach dem nächsten Start im EFI-secure-boot-Modus ist die Option uefi-secure-boot in der obigen Befehlsfolge 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.

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.

Weiteres (Test-)System einrichten

Allgemeine Hinweise

Der Bootloader-Eintrag für ein System erfolgt per Default in die Datei

  • /EFI/ubuntu

der ersten EFI-Partition auf dem System.

Man sollte daher sorgfältig bei der Installation darauf achten, dass auch jedes weitere System, das auf einer separaten Festplatte oder externen Medium (USB-Stick, USB- bzw. eSATA-Festplatte) installiert wird, eine eigene EFI-Partition erhält. Enthält der Hostrechner bereits eine eigene EFI-Partition (in der Regel /dev/sda1), so muss man vorübergehend dieser Partition die Eigenschaft EFI-Systempartition entziehen (Alternative 1) oder das Installieren eines Starteintrages unterbinden (Alternative 2).

Starteintrag Alternative 1

Das lässt sich am Besten über die Laufwerkverwaltung bewerkstelligen
Siehe Bilder -> EFI-Partition-Typ1.png EFI-Partition-Typ2.png (zur Darstellung rechte Maustaste)

  • Windows -Taste antippen -> ins Suchfeld

    • "Laufwerksverwaltung" bzw. "disks" eingeben ->

  • "Laufwerksverwaltung" -> Hostsystem "EFI-Partition" mit linke Maustaste auswählen

  • "Partition bearbeiten -> Partitionstyp" mit linke Maustaste öffnen

  • "Systemeigenschaft" abwählen

Auch wenn das Hostsystem weiter mit dieser Einstellung arbeiten kann, so wird das Zurückstellen am Ende der Installation dringend angeraten! Danach lässt sich die Installation eines weiteren Systems am Live-Desktop wie bisher vorbereiten und einrichten.

Starteintrag Alternative 2

Man ruft am Live-Desktop den Ubuntuinstaller ubiquity nicht aus dem Starter mit usb-creator-gtk.png auf, sondern öffnet mit der Tastenkombination

  • Strg + Alt + T

ein Benutzer-Terminal [1] und gibt dort ein

ubiquity -b 

Es wird die Installation gestartet und dabei keine Auswahl für das Anlegen eines Starteintrages angezeigt und auch keiner angelegt. Dieses muss man nach dem Ende der Installation nachholen und

  • anstelle -> "Rebooten" -> "Weiter ausprobieren"

wählen und wie oben unter EFI-Eintrag neu erstellen beschrieben, den erforderlichen Starteintrag erzeugen.

Achtung!

Ein derart auf einem externen Medium erstelltes System lässt sich ohne Nachbereitung nur auf dem Rechner starten, auf dem die Installation ausgeführt wurde.

Weiteres System autark machen

Um ein weiteres System auf einer zweiten Festplatte im gleichen Rechner auswählen zu können oder eine externe Festplatte von einem anderen Rechnern (mit EFI-Partition) einsetzen zu können, muss dazu nicht zwangsläufig ein Eintrag in das NVRAM des Hostrechners eingebracht werden. Man kann das alternativ über das GRUB_2-Menü regeln.

In der Regel erkennen die EFI-BIOS-Routinen beim Starten des Rechner Speichermedien, die extern angeschlossen werden und eine EFI-Partition (VFAT-Formatierung) haben. Diese werden im EFI-Menüeintrag angezeigt.

Nach der Auswahl im EFI-Menü prüft das EFI-BIOS dann das Vorhandensein eines Verzeichnisses

  • /EFI/Boot

wobei die Schreibweise (Groß- bzw. Kleinbuchstaben) ohne Belang sind. In diesem Verzeichnis wird nach einer Datei

  • bootx64.efi

gesucht und wenn vorhanden, zum Starten ausgewertet.

Um ein auf einem beliebigen Hostrechner vorbereitetes externes Medium die (U)EFI-Eigenschaft zuzuordnen, erstellt man auf der EFI-Partition des externen Mediums das Verzeichnis /EFI/Boot.

  • Ohne "secure-boot"

kopiert man die Datei /EFI/ubuntu/grubx64.efi in das neu erstellte Verzeichnis und benennt diese um in bootx64.efi.

  • Mit "secure-boot"

kopiert man die Dateien shimx64.efi, grubx64.efi sowie grub.cfg aus dem Verzeichnis /EFI/ubuntu in das neu erstellte Verzeichnis und benennt die Datei shimx64.efi um in bootx64.efi.

Hinweis:

Man kann nach der Umstellung sowie erfolgreichem Probestart den zugehörigen Eintrag im NVRAM wieder löschen. Angenommen wird als letzter Regeleintrag von ubuntu #0000. Dann kann man man im Terminal [1] mit:

sudo efibootmgr -b 0000 -B 

diesen Eintrag löschen (siehe auch efibootmgr).

Intern

Extern

  • UEFI - Unified Extensible Firmware Interface

  • NVRAM - Non-Volatile Random-Access Memory

ubuntuusers.local › WikiEFI Nachbearbeitung