ubuntuusers.de

EFI Grundlagen

Achtung!

Dieser Artikel wird aktuell in Baustelle/EFI Grundlagen überarbeitet. Daher kann es sein, dass diese Seite hier veraltete oder nicht (mehr) zutreffende Informationen enthält. Vergleiche beide Versionen und wende dich im Zweifelsfall mit deinem konkreten Anliegen an das Support-Forum. Änderungen am Artikel bitte nur in Baustelle/EFI Grundlagen!

Ausbaufähige Anleitung

Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.


Anmerkung: Siehe Hinweis

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 Rechner verfügen über eine Firmware, die über ein UEFI verfügt und die zuvor lange Zeit genutzte BIOS-Firmware abgelöst hat.

Dieser Artikel beschreibt die Grundlagen, die für das Installieren und Betreiben eines Rechners mit UEFI-Firmware unter Ubuntu und deren Derivate wichtig sind.
Weitere Informationen zur Historie, Aufbau, Benennung und Wirkungsweise können dem externen Artikels entnommen werden.

Bei UEFI handelt es sich um eine Schnittstelle, die so weit wie möglich von Hard- und Firmware abstrahiert definiert ist. Sie stellt ein vereinheitlichtes Bindeglied zwischen Hard- und Firmware auf der einen und dem Betriebssystem auf der anderen Seite dar.

UEFI sorgt so für eine einheitliche Startumgebung unabhängig von der Hardwareplattform auf der einen und unabhängig vom Betriebssystem auf der anderen Seite. Ist z.B. eine Betriebssystem-Loader UEFI-kompatibel programmiert, dann startet er auf allen Systemen, auf denen ein UEFI sauber implementiert ist, ohne dass der Entwickler dabei die genaue, unterhalb der UEFI-Schnittstelle liegende Firm- und Hardware kennen muss.

Wie der Begriff "erweiterbare" im Namen von UEFI schon anzeigt, ist die Schnittstelle von Anfang an so gestaltet worden, dass sie bei Bedarf erweitert werden kann, wenn zukünftige Entwicklungen dies erfordern. Deshalb ist UEFI-Version nicht gleich UEFI-Version.

Die auf dem Rechner verwendete UEFI-Version wird während des Starts von Ubuntu im Boot-Modus als Kernel-Meldung ausgegeben und kann daher über journalctl im Terminal[1] angezeigt werden:

journalctl -b -k --grep="EFI v" 

Hinweis:

Bei der Darstellung der UEFI-Version fehlt in der Regel der letzte Punkt. So wird z.B. auf einem System mit der UEFI-Version 2.3.1

...kernel: efi: EFI v2.31 ...

zurückgegeben. Wird hingegen das Ergebnis

-- No entries --

angezeigt, so wurde das System nicht im Boot-Modus gestartet!

Zusammen mit der Firmwareversion und dem Firmwaredatum, lässt sich so ziemlich genau sagen, welcher Generation Firmware und UEFI angehören und ob bei der betreffenden Generation mit Problemen gerechnet werden muss.

Firmwareversion und -datum lassen sich unter Ubuntu z.B. mit dmidecode anzeigen:

sudo dmidecode -s bios-version && sudo dmidecode -s bios-release-date 

Hinweis:

Im Normalfall muss man als Endanwender den Versionsstand der auf dem Rechner genutzten UEFI-Version zwar nicht kennen, treten trotz scheinbar richtiger Konfiguration Probleme oder Merkwürdigkeiten im Zusammenhang mit UEFI auf dem eigenen Rechner auf, so kann die UEFI-Version unter Umständen Hinweise darauf geben, ob für die betreffenden Version Probleme bekannt sind.

Mit Problemen mit der UEFI-Schnittstelle bzw. derer praktischen Implementierung ist in der Regel dabei dann zu rechnen, wenn die UEFI-Spezifikation durch das UEFI-Forum so erweitert wird, dass die System-Hersteller die Implementierung der UEFI-Schnittstelle in der Firmware weitreichender anpassen müssen. Dies war z.B. bei der Einführung von Secure Boot im Rahmen der Veröffentlichung von Windows 8 mit der UEFI-Version 2.3.1 Errata C der Fall.

Spezifikationen und Richtlinien

Die praktische Ausgestaltung der UEFI-Firmware eines PC-System wird in der Regel durch Spezifikationen und Richtlinien dreier Beteiligter bestimmt:

  1. Spezifikation des UEFI-Forums

  2. Spezifikationen Richtlinien zum Windows-Hardware-Kompatibilitätsprogramm

  3. Firmware-Implementierung durch Systemhersteller

Spezifikation des UEFI-Forums

UEFI wird durch die Spezifikationen des UEFI-Forums 🇬🇧 definiert. An dem Forum sind viele bedeutenden IT-Firmen in teils unterschiedlicher Form beteiligt 🇬🇧. Die UEFI-Versions-Historie kann dabei der folgenden Seite des UEFI-Forums entnommen werden:

https://uefi.org/specifications 🇬🇧

Bei den Spezifikationen des UEFI-Forums handelt es sich um reine Schnittstellen-Spezifikationen. Die Spezifikationen beziehen sich damit ausschließlich auf UEFI und nicht etwa auf die Firmware insgesamt.

Spezifikationen und Richtlinien zum Windows-Hardware-Kompatibilitätsprogramm

Darüber hinaus sind aber für PC-Systeme und Mainboards die ein Windows-Logo tragen – also zumeist mit Windows vorinstalliert verkauft werden – die von Microsoft festgelegten Spezifikationen und Richtlinien zum Windows-Hardware-Kompatibilitätsprogramm von praktisch wichtiger Bedeutung.

Mit diesen Richtlinien schreibt Microsoft Herstellern von Computersystemen vor, wie Hardware und Firmware gestaltet sein müssen, damit die jeweiligen Systeme für den Betrieb mit einer bestimmten Windows-Version zertifiziert werden können. Es handelt sich gegenüber der Spezifikation des UEFI-Forums nicht um eine reine Spezifikation der Schnittstelle, ist also dementsprechend weitreichender.

Microsoft macht hier für UEFI unter anderem die folgende Vorgaben (die Aufzählung ist nur beispielhaft und nicht abschließend):

  • Bei Systemen die mindestens über ein UEFI mit der Version 2.3.1 Errata C verfügen, muss Secure Boot standardmäßig aktiv sein.

  • Wenn Secure Boot aktiv ist darf auf gar keinen Fall gleichzeitig das Compatibility Support Module aktivierbar sein.

  • Der UEFI-Boot-Modus sollte der Standard-Boot-Modus sein.

  • Der Zugriff auf das Compatibility Support Modul sollte erst auf Nutzeranforderung hin möglich sein.

  • Die Abschaltmöglichkeit von Secure Boot und die Aktivierungsmöglichkeit des Compatibility Support Modul ist aber durch die Microsoft-Spezifikationen bis heute (Stand: Januar 2024) nach wie vor gegeben.

Implementierung durch Systemhersteller

Systemhersteller stellen zum einen die Hardwarekomponenten einer Systemplattform zusammen und sind auch für die Firmware verantwortlich. Sie müssen zwar einerseits die beiden zuvor genannten Spezifikationen und Richtlinien zu einem bestimmten Teil befolgen, aber längst nicht alle Vorgaben sind dabei zwingend, so dass den Hardwareherstellern ein großer Gestaltungsspielraum bezüglich der Firmware insgesamt bleibt.

So ergibt sich in der Praxis ein bunter Strauß verschiedener Firmware-Setups, die von "auf das nötigste reduziert" bis hin zu "alles was geht" eine weite Bandbreite abdecken. Gestaltungsspielräume sind nun grundsätzlich nichts schlechtes, haben aber in dem Fall zur Folge, dass es nicht die eine Anleitung für das Konfigurieren der Firmware geben kann, so dass der Endanwender häufig selbst in Erfahrung bringen muss, wie er Änderungen an der Konfiguration der Firmware vornehmen kann.

Erste Anlaufstelle ist dabei das Benutzerhandbuch des betreffenden Rechners oder Mainboards. Leider sind dort aber nicht immer alle Funktionen erklärt, so dass dem Endanwender dann nur noch Ausprobieren bleibt.

Apple-Rechner

Das Apple-Geschäftsmodell besteht im Gegensatz zum Microsoft-Geschäftsmodell seit jeher darin, dem Kunden Betriebssystem und Hardware aus einer Hand zu liefern. Dementsprechend hat Apple auch andere Möglichkeiten Hardware im eigenen Interesse zu gestalten und kann damit auch das UEFI bei Bedarf so anpassen (lassen), wie es den eigenen Ansprüchen am besten gerecht wird.

Das hat praktisch zur Folge, dass UEFI-Firmware auf einem Apple-Rechner zwar Gemeinsamkeiten mit der UEFI-Firmware eines PC-Systems haben kann, es aber häufig auch Unterschiede gibt oder mit diesen mindestens gerechnet werden muss.

Hinweis:

Die Darstellung in diesem Artikel treffen in erster Linie auf PC-Systeme zu, die den Spezifikationen und Richtlinien zum Windows-Hardware-Kompatibilitätsprogramm folgen, weil diese die Mehrheit der im Handel erwerblichen Geräte darstellen. Auf PC-Systeme, die dem Windows-Hardware-Kompatibilitätsprogramm nicht folgen, treffen sie in aller Regel auch zu.

Auf Apple-Rechner können sie dagegen nur bedingt angewendet werden. Apple-spezifischen UEFI-Abweichungen sind derzeit nicht Gegenstand dieses Artikels.

Kernel-Unterstützung

Anzeige vom Kernel unterstützter EFI-Optionen

grep CONFIG_EFI /boot/config-`uname -r` 

Überprüfung des Setzens der Kerneloptionen beim letzten Systemstart

journalctl -b -k --grep="efivars" 

Boot-Modus

Eine der für Ubuntu bedeutsamsten Neuerungen der UEFI-Firmware ist der UEFI-Boot-Modus. Dieser zeichnet sich durch die folgenden Merkmale aus:

Technische Merkmale des Boot-Modus

  • Im Boot-Modus wird von der Firmware ein Bootmanager zur Verfügung gestellt, der es erlaubt, Betriebssystemloader direkt auf Dateisystemebene zu starten.

  • Damit Betriebssystemloader-Einträge in der Firmware durch den Anwender bzw. durch das Betriebssystem eingetragen werden können, verfügen UEFI-Systeme über NVRAM-Chips die das Setzen dauerhafter Einstellungen erlauben, so dass sie auch erhalten bleiben, falls der Rechner ein mal von der Stromzufuhr getrennt wird.

  • Im UEFI-Boot-Modus muss auf mindestens einem Datenträger im System eine EFI-Systempartition eingerichtet sein, welche die Loader-Dateien der einzelnen Betriebssysteme aufnimmt.

  • Datenträger von denen im UEFI-Boot-Modus gestartet werden soll, sollten vorzugsweise mit einer GUID-Partitions-Tabelle (kurz: GPT) ausgestattet sein.

Diese Struktur hat gegenüber des BIOS-Boot-Modus damit den Vorteil, dass Betriebssystemloader nebeneinander auf der EFI-Systempartition abgelegt werden können, ohne sich gegenseitig in die Quere zu kommen.

Experten-Info:

Es ist theoretisch grundsätzlich auch möglich, eine EFI-Systempartition auf einem Datenträger mit MBR-Schema einzurichten. Da das MBR-Schema gegenüber dem GPT-Schema aus heutiger Sicht (Stand: Januar 2024) aber nur Nachteile hat und es darüber hinaus von UEFI-Implementierung der Systemhersteller abhängt, ob praktisch dann auch tatsächlich von einem MBR-Datenträger gestartet werden kann, ist diese Art der Einrichtung bei Verwendung des UEFI-Boot-Modus nicht zu empfehlen.

Etwas anderes gilt nur, wenn man den eigenen Rechner im BIOS-Boot-Modus unter Verwendung des Compatibility Support Module betreibt oder wenn es sich um einen externen Datenträger handelt, der auch an einem Rechner starten soll, der den UEFI-Boot-Modus nicht unterstützt.

Startablauf

Der Startablauf im UEFI-Boot-Modus ist dann grob betrachtet wie folgt:

  1. Initialisierung der Firmware nach dem Einschalten des Systems und Einrichten der Pre-Boot-Umgebung.

  2. Start der EFI-Boot-Services 🇬🇧.

  3. Dynamisches Bereitstellen der Pfade /EFI/BOOT von der jeweils ersten EFI-Systempartition angeschlossener Datenträger im Bootmanager durch die UEFI-Boot-Services.

  4. Entweder automatisches Laden des im EFI-Bootmanager definierten Standardeintrages oder es wird aufgrund von Benutzerinteraktion mit dem EFI-Bootmanager der vom Benutzer im EFI-Startmenü ausgewählte Eintrag von der Firmware versucht zu laden. Scheitert das Laden eines Eintrags, so wird der nächste Eintrag gemäß der UEFI-Startreihenfolge versucht zu laden.

  5. Ausführen der durch den Eintrag im EFI-Bootmanager repräsentierten App – also im Falle des Eintrags für ein bestimmtes Betriebssystems in der Regel eine EFI-Bootloader-App – durch die Firmware.

  6. Laden des Betriebssystem-Kernels durch die EFI-Bootloader-App.

  7. Bereitstellung aller oder von Teilen der UEFI-Runtime-Services durch den Kernel an das Betriebssystem.

Bootmanager

Eine Firmware mit einem UEFI verfügt über einen integrierten Bootmanager, der auf Dateisystemebene das direkte Laden von Betriebssystemloadern und -Kerneln erlaubt, sofern diese als EFI-Anwendung auf einem angeschlossenen Datenträger auf einer EFI-Systempartition vorliegen.

Startmenü

In der Praxis stellt die Firmware eines Rechners dem Anwender dafür ein EFI-Startmenü bereit, welches sich beim Systemstart durch Drücken einer bestimmten Taste aufrufen lässt. Zum Aufruf des EFI-Start-Menüs siehe im Detail Howto/Aufruf des Startmenüs und Firmware-Setups.

Das EFI-Startmenü enthält zum einen statische Einträge, die entweder vom Setup-Programm des jeweiligen Betriebssystems oder aber vom Anwender generiert werden. Daneben werden Einträge vom UEFI aber auch dynamisch durch Einlesen von dazu in der EFI-Spezifikation festgelegten Gerätepfaden erzeugt. Siehe dazu unten auch zum Verzeichnis BOOT.

uefi-boot-menu.webp

Bearbeitung des EFI-Bootmanagers

Die Einträge des EFI-Bootmanagers lassen sich - sofern das Betriebssystem im UEFI-Boot-Modus gestartet wurde - über die vom UEFI bereitgestellten Variablen-Dienste vom jeweiligen Betriebssystem aus erstellen und bearbeiten. Auch Standard-Starteintrag, Reihenfolge der Einträge und Startbetriebssystem für den nächsten Neustart lassen sich so manipulieren:

  • Unter Ubuntu existiert zu diesem Zweck das Programm efibootmgr.

  • Unter Windows kann man Einträge mit dem vorinstallierten Programm bcdedit oder aber auch mit Programmen von Drittherstellern bearbeiten.

Hinweis:

Bei der Installation eines Betriebssystems erzeugt das Setup-Programm einen statischen Starteintrag für das jeweilige Betriebssystem im EFI-Bootmanager und legt diesen standardmäßig zugleich auch als Standard-Starteintrag für künftige Systemstarts fest. Dieses Verhalten kann auf einem Multibootsystem unerwünscht sein, so dass der Anwender gegebenenfalls nacharbeiten muss, indem er den gewünschten Standard-Starteintrag korrigiert.

Apps

Bei EFI-Anwendungen (kurz: Apps) handelt es sich um binären, ausführbaren Code. Damit die Apps vom UEFI geladen werden können, müssen sie im PE32+ Format mit angepasster Header-Signatur vorliegen. Zu den Details siehe den Abschnitt "Overview - Boot Manager" der UEFI-Spezifikation 🇬🇧.

Anwendungsprogramme können in die Firmware der Systemplattform implementiert sein oder von einer EFI-Systempartition geladen werden. Typische Apps sind z.B.:

  • Betriebssystemloader

  • Anwendungen zur Aktualisierung der Plattform-Firmware

  • Hardware-Diagnose-Programme

  • etc.

Anders als bei manchen Betriebssystemen möglich, kann eine Firmware mit UEFI nur Anwendung der selben Architektur ausführen. Eine 64-bit-Firmware kann also nur EFI-Apps ausführen, die für 64-bit-Architektur gebaut wurden, eine 32-bit-Firmware führt nur 32-bit-Anwendungen aus.

Die Architektur der Firmware lässt sich unter Ubuntu wie folgt im Terminal[1] ausgeben:

cat /sys/firmware/efi/fw_platform_size 

EFI-Systempartition

Voraussetzung für den Zugriff durch den UEFI-Boot-Modus auf Betriebssystemloader auf Dateisystemebene ist, dass mindestens ein Datenträger im System dafür eine spezielle Partition bereitstellt. Diese nennt man EFI-Systempartition (kurz: ESP) und hat in der Regel auf einem Datenträger mit GPT = GUID Partitions Tabelle die folgenden technischen Eigenschaften:

Technische Merkmale

  • Partitionsnummer: 1 (Empfehlung!)

  • Kennung: ef00

  • Name: EFI System

  • Dateisystem: FAT (Standard 32 bit)

  • GUID: C12A7328-F81F-11D2-BA4B-00A0C93EC93B

  • Größe: 100-200 MiB

  • Mountpunkt: /boot/efi

Hinweis:

Es stehen verschiedene Werkzeuge zum Erstellen einer ESP zur Verfügung, u.a. GParted oder gdisk. Das Vorgehen für beide Anwendungen ist z.B. in Universal stand-alone grub für BIOS und EFI auf USB flashkey und internen HDD und SSD (Abschnitt „Partitionieren-des-flashkey“) beschrieben.

Verzeichnisstruktur

Die EFI-Systempartition verfügt über eine bestimmte Verzeichnisstruktur. Im Wurzelverzeichnis befindet sich nur das Verzeichnis EFI. Unterhalb von EFI existiert immer das Verzeichnis BOOT. Daneben existiert in der Regel mindestens ein Hersteller-Verzeichnis.

BOOT

Dem Verzeichnis /EFI/BOOT kommt auf der EFI-Systempartition eine spezielle Bedeutung zu: Die dort enthaltene Bootloader-Datei BOOTX64.efi wird während der Startphase automatisch in das EFI-Menü aufgenommen und steht damit für den Endanwender zur Auswahl bereit. Das dient in erster Linie der automatischen Bereitstellung von Betriebssystem-Loadern auf Wechsel-Datenträgern. Dies kann aber auch als Notfall-Starteintrag genutzt werden, falls sich z.B. keine Starteinträge für Hersteller-Verzeichnisse zum NVRAM der Firmware hinzufügen lassen.

Hinweis:

Da das Verzeichnis /EFI/BOOT nur ein mal auf der EFI-Systempartition existiert, gibt es um die Besetzung der Datei BOOTX64.efi eine Konkurrenz. Standardverhalten der Installationsroutinen von Betriebssystem-Loadern wie z.B. auch GRUB 2 ist es, den eigenen Loader sowohl im Hersteller-Verzeichnis, als auch als /EFI/BOOT/BOOTX64.efi auf dem System verfügbar zu machen.

Auf Systemen mit mehreren Betriebssystemen sollte man diese Konkurrenzsituation im Auge behalten. In aller Regel erlauben die Wartungsprogramme der Bootloader, die Installation des Bootloaders im Verzeichnis /EFI/BOOT zu unterlassen.

Hersteller-Verzeichnisse

Fest auf dem System installierte Betriebssysteme sollten Ihren Bootloader in erster Linie in einem eigenen Hersteller-Verzeichnis 🇬🇧

ablegen. So ist für Microsoft das Verzeichnis /EFI/Microsoft registriert und Canonical verwendet für Ubuntu bzw. deren Derivate wie KUbuntu, LUbuntu, XUbuntu das Verzeichnis

  • /EFI/ubuntu

Damit wird sichergestellt, dass sich die Bootloader – abgesehen von der Konkurrenz um das Verzeichnis /EFI/BOOT – nicht gegenseitig stören.

So sieht die Verzeichnisstruktur nach einer Standard-Ubuntu-Installation dann wie folgt aus:

 ── EFI
    ├── BOOT
    │   ├── BOOTX64.EFI
    │   ├── fbx64.efi
    │   └── mmx64.efi
    └── ubuntu
        ├── BOOTX64.CSV
        ├── grub.cfg
        ├── grubx64.efi
        ├── mmx64.efi
        └── shimx64.efi

Systemsicherung unter Windows

Achtung!

Die Windows-interne Systemsicherung kann auf einem Rechner mit UEFI möglicherweise die Ubuntu-Installation beeinflussen.

Bei einer Systemsicherung unter einem UEFI]-Windows werden in der Regel alle Verzeichnisse und Dateien auf der EFI-Partition in das Backup mit aufgenommen. Dieses beinhaltet also auch das Verzeichnis EFI/ubuntu mit seinen Startdateien (siehe oben).

Das ist einerseits von Vorteil, falls man diese Dateien zur Wiederherstellung braucht - birgt aber andererseits die Gefahr, dass nach einer Reparatur von Windows ggf. veraltete Verzeichnisse sowie Dateien zurück geladen werden und damit dann das Ubuntu nicht mehr gestartet werden kann oder unerwartete Reaktionen zeigt.

In einem solchen Fall kann man durch Reparatur der GRUB-Installation das Verzeichnis /EFI/ubuntu wieder auf den aktuellen Stand bringen.

Variablen

Wenn das System im UEFI-Boot-Modus gestartet wird, dann stellt das UEFI als Bestandteil der UEFI-Laufzeit-Dienste (engl. UEFI-Runtime-Services) den Variablen-Dienst für das Betriebssystem bereit.

Für Details siehe dazu die folgenden Kapitel der jeweiligen UEFI-Spezifikation:

  • "Gloably Defined Variables" (Unterkapitel von "Boot Manager")

  • "Services – Runtime Services"

  • "Variable Services" (Unterkaptitel von "Services – Runtime Services")

Variables-File-System

Unter Ubuntu werden die vom UEFI bereitgestellten EFI-Variablen über das im Kernel integrierte EFI-Variable-File-System-Modul (kurz efivarfs) im Verzeichnis /sys/firmware/efi/efivars während des Systemstarts bereitgestellt und stehen damit grundsätzlich zum Auslesen und Bearbeiten zur Verfügung. Siehe auch https://docs.kernel.org/filesystems/efivarfs.html 🇬🇧.

Die entsprechende Kerneloption CONFIG_EFI_VAR_FS ist im Ubuntu-Kernel standardmäßig aktiviert, wie man wie folgt überprüfen kann:

grep CONFIG_EFIVAR_FS /boot/config-`uname -r` 
CONFIG_EFIVAR_FS=y

Entsprechend wird beim Systemstart eine Kernelmeldung bei erfolgreicher Bereitstellung ausgegeben:

journalctl -b -k --grep="efivars" 
... kernel: ... Registered efivars operations

Struktur von /sys/firmware/efi/efivars

Bei den in /sys/firmware/efi/efivars bereitgestellten Variablen handelt es sich um die durch die global definierten Variablen. Der exakte Ort variiert leicht von Spezifikation zu Spezifikation.

Nicht alle in der Spezifikation aufgeführten Variablen müssen zwangsläufig auf allen Systemen zur Verfügung stehen.

Sofern auf dem System Secure Boot aktiviert ist, findet man unterhalb von /sys/firmware/efi/efivars z.B. außerdem die von Shim angelegten und genutzten Variablen für die Machine Owner Keys.

Daneben können dort je nach Hersteller und System weitere, spezifische Variablen vorzufinden sein.

Variablen-Format

Die Variablen bestehen aus einem auf einer GUID basierenden Namen, dem Inhalt und Attributen, welche angeben, wann auf die Variablen zugegriffen werden kann. Die Variablen liegen zudem in hexadezimaler Form vor.

Die Bezeichnung setzt sich dabei wie folgt zusammen:

Die jeweiligen GUID-Namensräume können sich dabei von System zu System unterscheiden.

Beispiel:

  • BootCurrent-8be4cf61-93ca-11d2-aa1d-00b098032b7c

Die Attribute der Variablen und deren Inhalt kann man sich mittels des Programms efivar anzeigen lassen, wobei efivar bei der Variable zuerst die GUID und dann den Namen verwendet:

efivar -p -n GUID-NAME

Beispiel:
efivar -p -n 8be4cf61-93ca-11d2-aa1d-00b098032b7c-BootCurrent 

Weitere Details zu den EFI-Variablen kann man der jeweiligen UEFI-Spezifikation entnehmen.

Bearbeitung der EFI-Variablen

Achtung!

Für die Bearbeitung der EFI-Variablen sollte man unbedingt auf die im Abschnitt Werkzeuge genannten Programme zurückgreifen und nicht etwa auf GNU-Dateisystem-Werkzeuge wie touch oder rm! Auch wenn es eigentlich nicht passieren sollte, ist es in der Vergangenheit in Einzelfällen unter UEFI-Versionen der Generation 2.3.1 bei Bearbeitungsversuchen von Linux aus zu NVRAM-Schäden gekommen, die die komplette Firmware des Systems und damit die betroffenen Rechner insgesamt irreparabel beschädigt haben.

Wer noch einen Rechner mit der UEFI-Version 2.3.1 im Einsatz hat, sollte sich vor der Bearbeitung der Variablen informieren, ob für das betreffende Modell Probleme mit dem NVRAM bekannt sind!

Nicht alle Variablen sind zur Bearbeitung vorgesehen, sondern eine ganze Reihe ist nur zum Auslesen bestimmt. Schon in der EFI-Spezifikation steht im übrigen, dass das Bearbeiten der Variablen sparsam gehandhabt werden sollte. Deswegen werden einige Variablen bei der Bereitstellung über das efivarfs-Modul mit dem immutable-Attribut (i) versehen, so dass sie vor versehentlicher Veränderung geschützt sind. Mit dem Befehl lsattr kann man sich anzeigen lassen, welche der Variablen auf diese Weise geschützt sind:

lsattr /sys/firmware/efi/efivars 

In der Regel gibt es auch nicht viele Anlässe, die Variablen überhaupt zu bearbeiten. Ausnahme bilden hier insbesondere die Variablen, die mit dem EFI-Bootmanagement zusammenhängen. Deren Bearbeitung ist im Normalfall unkritisch.

Werkzeuge

Da das Arbeiten mit hexadezimalen Variablen für Menschen unhandlich ist, existieren unter Ubuntu eine Reihe von Werkzeugen zum Anzeigen und Bearbeiten der Variablen:

  • efibootmgr - Das Programm efibootmgr ist Bestandteil des gleichnamigen Paketes, welches unter einem Ubuntu, das im UEFI-Boot-Modus installiert wurde in der Regel bereits vorinstalliert ist. efibootmgr erlaubt die Bearbeitung aller mit dem EFI-Bootmanager im Zusammenhang stehender Variablen (siehe efibootmgr).

  • efivar - Werkzeug allgemein zur Bearbeitung und zum Anzeigen von EFI-Variablen. Bestandteil des gleichnamigen Paketes, welches unter Ubuntu bei Bedarf installiert werden muss.

  • efitools - Das Programmpaket efitools stellt eine Reihen von Werkzeugen zur Verfügung, die das Anzeigen und Bearbeiten der im NVRAM der Firmware existierenden Secure-Boot-Datenbanken ermöglicht. Das Pakte muss bei Bedarf erst installiert werden.

  • mokutil - Das Programm mokutil dient zum Einrichten und Bearbeiten unter Ubuntu für die Nutzung von Secure Boot im NVRAM eingerichteten Machine Owner-Key-Datenbanken. Daneben kann es auch die vom UEFI für Secure Boot bereitgestellten Variablen auslesen und anzeigen.

Nutzungsmöglichkeiten

Die EFI-Variablen bieten einige bequeme Nutzungsmöglichkeiten aus dem laufenden Betriebssystem heraus. Die folgende Liste ist beispielhaft und keinesfalls abschließend:

Bootmanager-Konfiguration

Von Ubuntu aus lässt sich der UEFI-Bootmanager recht komfortabel mittels des Programms efibootmgr konfigurieren. Dabei könne in aller Regel die folgenden Variablen bearbeitet werden:

  • BootXXXX-{GUID}: Jede Variable diese Formats – die vier X repräsentieren dabei die hexadezimale Nummerierung des Booteintrags – repräsentieren dabei einen Starteintrag im EFI-Bootmanager. Die von der Firmware vorgegebenen Einträge sollten dabei unberührt bleiben. Das Hinzufügen, Ändern oder Löschen selbst erstellter Einträge ist dagegen unkritisch.

  • BootCurrent-{GUID}: Diese Variable legt den Standard-Starteintrag im EFI-Bootmanager fest.

  • BootOrder-{GUID}: Mit dieser Variablen lässt sich festlegen, in welcher Reihenfolge die Starteinträge von der Firmware abgearbeitet werden.

  • BootNext-{GUID}: Mit dieser Varialen lässt sich der Start eines bestimmten Betriebssystems nur für den nächsten Neustart bestimmen. Diese Variable wird nur auf Anforderung durch Routinen des Betriebssystems oder den Anwender angelegt. Sie ist daher nicht dauerhaft unter /sys/firmware/efi/efivars gelistet, sondern nur temporär ab Anforderung bis hin zum nächsten Neustart. Nach dem Neustart ist sie dann wieder verschwunden und muss bei Bedarf erneut gesetzt werden.

Für weitere Details zum Vorgehen zur Bearbeitung der Variablen siehe efibootmgr.

Aufruf des Firmwaresetups

Eine sehr nützliche Funktion ist, dass man im UEFI-Boot-Modus aus dem laufenden System heraus veranlassen kann, dass beim nächsten Neustart das Firmwaresetup aufgerufen wird. Dies geht einfach mittels des Befehls systemctl:

systemctl reboot --firmware-setup 

Aktualisierung der Secure-Boot-Blacklist

Wenn man auf dem System Secure Boot aktiviert hat, dann sollte man die Blacklist-Datenbank von Secure Boot regelmäßig aktualisieren. Dies ist unter Ubuntu grundsätzlich mittels des Programms fwupdmgr möglich.

Secure Boot

Mit der Version 2.3.1 Errata C von 2011 wurde UEFI um die Secure-Boot-Funktionalität erweitert. Secure Boot versetzt die UEFI-Firmware in die Lage, die am Systemstart beteiligten Systemkomponenten vor Ihrer Ausführung auf Vorliegen einer gültigen Signatur zu prüfen. Verfügt eine Systemkomponente nicht über eine gültige Signatur, so verhindert Secure Boot deren Ausführung. Damit soll verhindert werden, dass Schadcode während des Systemstarts vor dem Laden des Betriebsystems ausgeführt wird und damit den Start des Betriebssystems so manipuliert, dass der Schadcode aus dem dann laufenden Betriebssystem nicht erkennbar ist.

Insbesondere Manipulationsversuche eines Angreifers aus der Ferne sollen dabei verhindert werden und zwar selbst dann, wenn der Angreifer auf dem betreffenden System an Root-Rechte gelangt.

Allgemeine Funktionsweise

Secure Boot definiert eine Public-Key-Infrastruktur, die es erlaubt, EFI-Anwendungen vor Ihrer Ausführung auf Vertrauenswürdigkeit auf Grundlage eines Paares von privaten und öffentlichen Schlüsseln oder anhand von Microsoft-Authenticode-Hashwerten zu überprüfen. Öffentliche Schlüssel werden dabei innerhalb eines Zertifikats abgelegt, dass neben dem Schlüssel selbst auch Informationen über den Einsatzzweck und den Zertifikats-Inhaber enthält und werden dann in der Firmware geschützt hinterlegt. Der private Schlüssel muss sicher vom Inhaber verwahrt werden und wird ausschließlich zum Signieren von EFI-Anwendungen, Betriebssystemkerneln oder Kernel-Modulen (Geräte-Treibern) verwendet.

Zur Ablage öffentlicher Zertifikate werden im NVRAM der Systemplattform zum einen die beiden Variablen db und dbx bereitgestellt:

  • db: Bei der Variablen db handelt es sich um eine Datenbank, in der zum einen öffentliche Zertifikate verzeichnet sind, die zur Authentifizierung der Signaturen von EFI-Anwendungen, Betriebssystemkerneln und Kernelmodulen bzw. Treibern berechtigt sind. Daneben können dort auch Hash-Werte von vertrauenswürdigen Komponenten hinterlegt sein, die über keine Signatur verfügen.

  • dbx: Bei der Variablen dbx handelt es sich um eine Blacklist-Datenbank. Hier können Hash-Werte von ausführbaren Dateien hinterlegt werden, die nicht als vertrauenswürdig gelten, weil z.B. Sicherheitslücken in ihnen entdeckt wurden und deren Ausführung deshalb explizit unterbunden werden soll. Oder es können öffentliche Zertifikate dort hinterlegt wurden, wenn ein Zertifikat widerrufen wurde.

Unter Ubuntu lässt sich der Inhalt der beiden Variablen mittels der beiden folgenden Kommandos anzeigen:

mokutil --db
mokutil --dbx 

Um die beiden Variablen db und dbx vor unerwünschter Manipulation zu schützen, implementiert Secure Boot außerdem noch eine Authentifizierungs-Infrastruktur:

  • Platform Key: Der Platform Key (kurz: PK) begründet die Vertrauensstellung zwischen dem Platformbesitzer und der Firmware. Der Platform Key kennzeichnet die oberste Autorität in der Authentifizierungs-Infrastruktur. Praktisch schützt der PK den Zugriff auf den PK selbst und auf die Key Exchange Keys. Der Inhaber des PK ist dazu berechtigt,

    • den PK selbst zu aktualisieren oder zu löschen

    • Key Exchange Keys hinzuzufügen oder zu löschen

  • Key Exchange Key: Der Key Exchange Key (kurz: KEK) begründet die Vertrauensstellung zwischen dem Betriebssystem und der Firmware. Der Inhaber eines KEK ist dazu berechtigt,

    • Änderungen an den Einträgen der db oder dbx vorzunehmen

PK und KEKs lassen sich unter Ubuntu mittels der beiden folgenden Befehle anzeigen:

mokutil --pk
mokutil --kek 

Beim Systemstart kann die Firmware so über die UEFI-Boot-Services, die Signatur der zu ladenden EFI-App - meist eine Betriebssystem-Loader-App - mit der dbx und der db vergleichen. Nur wenn die Signatur oder der Hash-Wert der App

  • nicht in der dbx gelistet ist

  • und in der db gelistet ist

dann führt die Firmware die EFI-App auch aus. Andernfalls verweigert die Firmware mit entsprechender Fehlermeldung die Ausführung.

Sobald der Betriebssystemloader oder der Betriebssystem-Kernel die Kontrolle übernimmt, indem er das Kommando zum Verlassen der UEFI-Boot-Services absetzt, aktiviert das UEFI die UEFI-Runtime-Services. Über die UEFI-Runtime-Services erhält der Betriebssystemloader bzw. -Kernel und alle folgenden Anwendungen und Dienste mittels der EFI-Varialbe-Services Zugriff auf die db- und dbx-Datenbanken.

Hinweis:

Ob die Folge-Anwendungen von den beiden Datenbanken dann auch Gebrauch machen und die im folgenden zu ladenden Komponenten auch auf Vertrauenswürdigkeit gegen die beiden Datenbanken prüfen, liegt in der Verantwortung des Betriebssystemherstellers bzw. der Anwendungsentwickler.

Die Firmware der Systemplattform kann ab dem Zeitpunkt, ab dem die Kontrolle an den Betriebssystemloader abgegeben wurde nicht mehr selbständig überprüfen!

Secure Boot im MS-Windows-Ökosystem

Wer einen Rechner erwirbt, dessen Hardware für den Betrieb von Microsoft Windows zertifiziert wurde und auf dem Windows vorinstalliert ist, trifft in aller Regel auf die folgende Secure-Boot-Infrastruktur:

  • Der PK stammt vom Systemhersteller

  • Es sind die folgenden KEKs eingrichtet

    • Microsoft Corporation KEK CA 2011

    • Microsoft Corporation KEK 2k CA 2023

    • Ein oder mehrere KEKs des Systemherstellers

In der Praxis sind in der db von PC-Systemen standardmäßig die folgenden öffentlichen Zertifikate hinterlegt:

  • Microsoft Windows Production PCA 2011: Mit dem privaten Gegenstück dieses Zertifikats signiert Microsoft Windows und dessen von Microsoft bereitgestellten Komponenten.

  • Microsoft Corporation UEFI CA 2011: Dies ist das öffentliche Gegenstück des Microsoft Corporation Third Party Marketplace Zertifikats. Über den Thrid Party Marketplace ist es für andere Firmen - wie z.B. auch Canonical - möglich, sich EFI-Anwendungen signieren zu lassen, so dass diese dann auf Rechnern mit vorinstallierten Windows auch ohne Eingriff des Endanwenders bei aktiviertem Secure Boot ausgeführt werden können.

  • Ein oder mehrere Zertifikate des Rechner-Herstellers: Diese Zertifikate werden von den Herstellern für das Signieren von EFI-Anwendungen wie z.B. in das UEFI integrierte Wiederherstellungs-, Hardware-Diagnose-Anwendungen oder Firmware-Update-Anwendungen genutzt.

Welche Zertifikate jeweils konkret auf einem Rechner vorinstalliert sind, kann unter Ubuntu mit mokutil überprüft werden:

mokutil --db 

Hinweis:

In der Regel ist es auch möglich, dass der Endanwender die Kontrolle der Secure Boot Infrastruktur in der Firmware übernimmt und dann eigene Zertifikate nutzen und gleichzeitig bei Bedarf die vorinstallierten Zertifikate aus der Datenbank in der Firmware verbannen kann.

Wie Microsoft signiert

Zum Laden eines Bootloaders oder Betriebssystemskernel auf einem für Microsoft Windows zertifizierten Systems mit aktiviertem Secure Boot müssen diese theoretisch einfach nur mit dem privaten Schlüssel des oben genannten Microsoft Corporation UEFI CA 2011 von Microsoft signiert werden.

Allerdings müssten sich die Distributoren dann bei jeder Änderung an den von Ihnen ausgerollten Bootloadern, Kerneln und Kernelmodulen diese immer wieder neu von Microsoft signieren lassen. Das ist auf Dauer unpraktikabel, weil dadurch z.B. die Bereitstellung wichtiger Sicherheitsupdates weiter verzögert wird.

Daher werden die Startkomponenten von Linux-Distributionen wie Bootloader, Kernel und Kernel-Module in der Praxis im Secure-Boot-Kontext nicht direkt von Microsoft signiert.

Shim-Bootloader und Machine Owner Key (MOK)

Um eine Linux-Distribution nun dennoch auf einem Windows-zertifizierten Rechner mit aktiviertem Secure Boot weitestgehend ohne Zutun Dritter - sei es durch Microsoft und Systemhersteller auf der einen Seite oder aber auch dem technisch weniger versierten Endanwender auf der anderen Seite - starten zu können, hat Matthew Garret das Konzept von Shim (engl.: Distanz- oder Unterlegscheibe) und den Machine Owner Keys (kurz: MOK) erdacht.

Shim ist eine ganz simple EFI-Bootloader-App, die nichts anderes macht, als die eigentlichen Distributions eigenen Bootloader aus den dafür vorgehsehen Herstellerverzeichnissen auf der EFI-Systempartition beim Systemstart zur Ausführung zu bringen.

Die Distributoren lassen sich nun jeweils ihren eigenen Shim-Loader von Microsoft signieren, aber nur eben diesen. Damit müssen die Distributoren Shim künftig nur erneut signieren lassen, falls Shim selbst verändert werden muss - was aufgrund der Einfachheit seiner Aufgabe viel seltner vorkommen wird.

Der signierte Bootloader Shim alleine sorgt aber erst mal nur dafür, dass die betreffende Linux-Distribution auf einem Rechner mit aktivierten Secure Boot überhaupt starten kann. Eine Nutzung von Secure Boot durch die Distribution ist damit aber noch nicht möglich, weil die öffentlichen Zertifikate der Distributoren nicht ohne Zutun der dafür Berechtigten in der Zertifikatsdatenbank der Rechner-Firmware hinterlegt werden können.

Deswegen wird bei einer Linux-Distribution die Shim nutzt neben Shim selbst noch die Machine-Owner-Key-Infrastruktur eingerichtet. Hierbei handelt es sich um authentifizierte EFI-Variablen analog zu den Secure-Boot-Datenbank-Variablen der Firmware.

In den MOK-Datenbanken kann nun der Distributor einerseits und der "Machine Owner" - also der Endanwender - andererseits, Zertifikate ablegen und widerrufen, ohne dass es dabei auf die Berechtigungen aus der Secure-Boot-Datenbank in der Rechner-Firmware ankommt.

Damit ist dann die Lücke zwischen aktiviertem Secure Boot und dem Interesse von Linux-Distributoren, nämlich ihre Distributionen weitestgehend ohne Zutun Dritter störungsfrei zur Ausführung bringen zu können, überbrückt.

Secure-Boot-Umsetzung von Ubuntu

Da Linux-Distributionen und damit auch Ubuntu in einer Vielzahl von Fällen auf Computern installiert werden, auf denen die im vorhergehenden Abschnitt genannten Gegebenheiten zutreffen, stehen Distributoren vor der Herausforderung, wie Ihre Distributionen und die Medien zur Installation Ihrer Distributionen auf Systemen mit aktivierten Secure Boot ohne Eingriff seitens des Endanwenders starten können.

Ubuntu setzt für den problemfreien Start des Ubuntu-Installations-Mediums und eines installierten Ubuntu auf einem Rechner mit aktivierten Secure Boot auf Shim und dessen MOK-Infrastruktur (siehe #Shim-und-MOK---Distanzscheibe-zwischen-Microsoft-Secure-Boot-und-Linux-Distributionen). Das spiegelt auch der Verzeichnisinhalt der EFI-Systempartition wieder:

└── ubuntu
    ├── BOOTX64.CSV
    ├── grub.cfg
    ├── grubx64.efi
    ├── mmx64.efi
    └── shimx64.efi

Bei shimx64.efi handelt es sich dabei um die explizit für Canonical von Microsoft signierte Shim-Loader-EFI-App, die dann den eigentlichen Ubuntu Bootloader GRUB 2 /EFI/ubuntu/grubx64.efi zur Ausführung bringt. Die /EFI/ubuntu/grubx64.efi ist dabei dann nicht mehr von Microsoft signiert, sondern von Canonical. Das öffentliche Canonical Zertifikat wird bei der Intallation von Ubuntu in der von Shim im NVRAM der Firmware eingerichteten MOK-Infrastruktur hinterlegt, so dass es zum sicheren Abgleich der in den Systemstart involvierten Elemente genutzt werden kann. Dies betrifft standardmäßig momentan (Stand 2024):

  • Den Bootloader GRUB 2

  • Die Ubuntu Kernel-Images

  • Unter Ubuntu gentutzte Kernel-Module

Dies betrifft aber derzeit (Stand 2024) nicht:

  • Die in den Systemstart ebenfalls eingebundene initrd.

Überprüfung des Secure-Boot-Status

mokutil --sb-state 
bootctl status --no-pager 2>&1 | grep -E 'Secure Boot|Setup Mode|TPM2 Support|Boot into FW' 

Secure Boot aktiviert/deaktiviert

od --address-radix=n --skip-bytes=4 --format=u1 /sys/firmware/efi/efivars/SecureBoot-* 

Setup-Modus aktiviert/deaktiviert

od --address-radix=n --skip-bytes=4 --format=u1 /sys/firmware/efi/efivars/SetupMode-* 

Auswirkungen von Secure Boot auf Ubuntu

Wenn Secure Boot aktiviert ist, dann führt das unter Ubuntu ab Version 21.10 dazu, dass

Compatibility Support Module

Eines der wesentlichen Ziele der UEFI-Spezifikation war es von Anfang an, den Systemherstellern einen möglichst problemfreien Übergang von BIOS-Firmware zur UEFI-Firmware zu ebnen. Zu diesem Zweck definiert die UEFI-Spezifikation auch den Umgang mit Betriebssystemen und Option-Roms, die mit UEFI-Firmware bzw. dem UEFI-Bootmodus noch nicht kompatibel sind.

Gerätepfade nach BIOS-Boot-Spezifikation

UEFI-Firmware kann daher grundsätzlich auch Gerätepfade nach BIOS-Boot-Spezifikation ⮷ 🇬🇧 bereitstellen. Siehe dazu den Abschnitt "BIOS Boot Specification Device Path" der jeweiligen UEFI-Spezifikation.

Zu beachten ist dabei unbedingt, dass die Bereitstellung von Gerätepfaden nach BIOS-Boot-Spezifikation durch das UEFI nur erfolgen darf, sofern Secure Boot deaktiviert ist! Die gleichzeitige Nutzung von Secure Boot und Gerätepfaden nach BIOS-Boot-Spezifikation ist sinnvollerweise also ausgeschlossen! Siehe dazu den Abschnitt "BIOS Boot Specification Device Path" der jeweiligen Spezifikation im Zusammenhang mit den Abschnitt "System.Fundamentals.Firmware.UEFILegacyFallback".

Deshalb wird in der Praxis die Bereitstellung von Gerätepfaden nach BIOS-Boot-Spezifikation innerhalb der UEFI-Firmware durch ein separat zuschaltbares Modul realisiert, welches in der Regel als Compatibility Support Module (kurz: CSM) bezeichnet wird. Da das Bereitstellen von Gerätepfaden nach BIOS-Boot-Spezifikation aus UEFI-Sicht das Verwenden der alten Bootmethode bedeutet, werden die so eingefügten Gerätepfade - angelehnt an den englischen Begriff "legacy" (deutsch: alt) - häufig auch als "Legacy Boot Options" tituliert.

Ist das CSM erfolgreich aktiviert, dann verhält sich die Firmware beim Systemstart, wie BIOS-Firmware, d.h.:

  • Es werden Gerätepfade nach BIOS-Boot-Spezifikation für den Systemstart bereitgestellt.

  • Datenträger von denen im BIOS-Boot-Modus gestartet werden soll, sollten im MBR-Partitions-Schema eingerichtet sein.

  • Es wird eine 16-bit-Umgebung (Protected Mode) während der Systemstartphase emuliert.

  • Es können Betriebssysteme installiert und gestartet werden, die mit dem UEFI-Boot-Modus nicht kompatibel sind.

  • Der in den Startsektoren der ausgewählten Startdatenträger enthaltene Code wird ohne jedwede Prüfung ausgeführt.

Hinweis:

Die UEFI-Laufzeitdienste die beim Start über den UEFI-Boot-Modus bereitgestellten werden, stehen in einem im BIOS-Boot-Modus gestarteten Betriebssystem nicht zur Verfügung! Damit kann z.B. ein Aufruf des Firmware-Setups aus dem Betriebssystem heraus nicht erfolgen. Ebenso wenig können Änderungen am EFI-Bootmanager aus dem Betriebssystem heraus vorgenommen werden.

Bereitstellung neben dem UEFI-Bootmodus

Die Bereitstellung der Gerätepfade nach BIOS-Boot-Spezifikation erfolgt bei Aktivierung des CSM häufig neben der Bereitstellung der UEFI-kompatiblen Gerätepfade für den UEFI-Bootmodus.

Unterstützt ein Datenträger den Start sowohl im UEFI-Bootmodus als auch im BIOS-Bootmodus - was auf viele Betriebssystem-Installationsdatenträger und auch auf das Ubuntu-Installations-Medium zutrifft -, so werden im EFI-Menü für den betreffenden Datenträger auch zwei Starteinträge erzeugt.

Der Anwender muss hier also bei der Startauswahl unter Umständen darauf achten, dass er den Eintrag für den gewünschten Modus (UEFI-Boot oder BIOS-Boot) ausdrücklich auswählt, andernfalls installiert er das Betriebssystem im falschen Modus. Wie die Unterscheidung der Einträge im EFI-Startmenü dabei gestaltet ist, ist leider von Firmware zu Firmware unterschiedlich. Im folgenden Beispiel:

CSM_SUB_MENU.JPG
Compatibility Support Module American Megatrends Inc. (AMI)

Unterscheidung von UEFI-Boot-Modus und BIOS-Boot-Modus

Ob das jeweilige Betriebssystem oder das Live-Medium im UEFI-Boot- oder BIOS-Boot-Modus gestartet wurde, lässt unter Ubuntu unter anderem mit einem Blick in das Verzeichnis /sys/firmware feststellen:

  • Ist das Verzeichnis /sys/firmware/efi vorhanden, so wurde das System im UEFI-Boot-Modus gestartet.

  • Ist das Verzeichnis /sys/firmware/efi nicht vorhanden, so wurde das System im BIOS-Boot-Modus gestartet.

Mit folgendem Terminal-Kommando lässt sich diese Aufgabe in einem Rutsch erledigen:

test -d /sys/firmware/efi && echo UEFI-Modus || echo BIOS-Modus 

Intern

Extern

Diese Revision wurde am 29. Dezember 2025 08:06 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, ausbaufaehig, Installation, BIOS, EFI, Ubuntu