Fragen & Antworten: Linux & UEFI

Fragen & Antworten: Linux & UEFI

Praxis & Tipps | FAQ

UEFI hat bei vielen Linux-Usern keinen guten Ruf, denn die Technik zum Betriebssystemstart hat einige Tücken und stellt einen vor Rätsel. Diese FAQ liefert Antworten zu häufig auftretenden Problemen.

Das Windows meines neuen PCs startet per UEFI. Damit kenne ich mich aber nicht so recht aus. Kann ich Linux vielleicht so parallel einrichten, dass es bootet wie auf einem PC mit klassischem BIOS?

Verabschieden Sie sich besser von der Idee. Die UEFI-BIOSe vieler PCs enthalten zwar ein CSM (Compatibility Support Module), das Betriebssysteme klassisch startet. Es ist aber nicht vorgesehen, ein per CSM bootendes Betriebssystem parallel zu einem einzurichten, das per UEFI startet.

Technisch ist es auf manchen Systemen zwar möglich – das erfordert aber allerlei Tricks, die einem irgendwann um die Ohren fliegen. Diese Tricks zu lernen macht zudem viel mehr Arbeit, als sich in das Zusammenspiel von Linux und UEFI einzulesen. Eine gute Anlaufstelle dazu sind drei Artikel in c’t 23/2018 [1, 2, 3]. Früher oder später müssen Sie sich das Wissen ohnehin aneignen, denn einzelne PCs und Notebooks bringen bereits kein CSM mehr mit; das dürften bald mehr werden, denn Intel drängt Hardwarehersteller dazu, ab 2020 kein CSM mehr einzubauen.

Vereinzelt gibt es aber PCs, wo mit UEFI Probleme bei Dual-Boot im Allgemeinen oder Linux im Speziellen auftreten. Versuchen Sie dann ein BIOS-Update, vielleicht bessert sich das Verhalten dadurch. Wenn nicht, kann es das Beste sein, alle Betriebssysteme per CSM zu starten. Dazu müssen Sie das Windows auf klassischen Boot (auch „Legacy-BIOS-Modus“ genannt) umstellen, wozu Sie auch das Partitionierungsverfahren von GPT (GUID Partition Table) auf MBR (Master Boot Record) ändern müssen; das ist ziemlich aufwendig und gelingt etwa mit Datenauslagerung über Images, wie wir es in c’t 6/2019 beschrieben haben [4]. Denken Sie bei der Umstellung daran, gleich Platz für die Installation von Linux frei zu lassen.

Um Windows von einem internen Datenträger per UEFI zu starten, muss der Datenträger per GPT partitioniert sein, auf dem der Boot-Loader von Windows liegt; beim klassischen Start über ein CSM oder ein altes BIOS erzwingt Windows hingegen einen MBR. Ist das bei Linux-Distributionen auch so?

Nein, eine solche Zwangsabhängigkeit gibt es nicht. Einige Distributionen starten daher beispielsweise per UEFI auch von Datenträgern, die ein MBR einteilt. Das macht aber so gut wie niemand und wird somit kaum getestet, wodurch hier Probleme lauern. Wir raten von diesem Konstrukt daher ab.

Eine Reihe von Distributionen unterstützen auch den klassischen Start von GPT-Datenträgern, den der verbreitete Boot-Loader Grub mithilfe einer „BIOS Boot Partition“ ermöglicht. Dieser Ansatz ist beispielsweise interessant, um Linux klassisch von Datenträgern mit mehr als 2 TByte Speicherplatz zu booten, für die der MBR nicht ausgelegt ist. Dieser Boot-Weg ist etwas verbreiteter, aber auch ein wenig exotisch, daher gibt es auch mit ihm gelegentlich Schwierigkeiten.

Mein UEFI-BIOS aktiviert manchmal ungefragt das CSM. Wie kann ich sichergehen, dass mein Installationsmedium per UEFI gestartet wurde? Ich möchte sicherstellen, dass das darüber installierte Linux sauber neben meinem per UEFI bootenden Windows landet, wie c’t es nachdrücklich empfohlen hat [3]?

Sie können einfach nachsehen, ob das Verzeichnis /sys/firmware/efi/ existiert, denn das erscheint nur, wenn das System den Kernel per UEFI gestartet hat. Alternativ können Sie auf einer Kommandozeile auch den Befehl efibootmgr aufrufen. Bei einem per UEFI gestartete System zeigt es die UEFI-Boot-Einträge; beim klassischen Boot erscheint eine Fehlermeldung, dass der Zugriff auf EFI-Variablen nicht möglich sei.

Mein per UEFI gestarteter Ubuntu-Installer zeigt beim manuellen Partitionieren eine Option, über die ich den Zielort des Bootloaders festlegen kann; zur Auswahl stehen nicht nur Datenträger, sondern einzelne Partitionen. Was macht diese Option? Ich dachte, man braucht beim UEFI-Boot nur eine EFI System Partition (EPT) zu konfigurieren?

Soweit wir bei einigen Tests feststellen konnten, ist diese Option beim UEFI-Boot bedeutungslos: Die Ubuntu-Entwickler haben offenbar übersehen, diese für klassische Installationen relevante Option bei UEFI-Installation auszublenden. Lassen Sie diese Einstellmöglichkeit daher einfach in Ruhe.

Ich möchte die mit UEFI Secure Boot einhergehenden Einschränkungen loswerden, um selbst kompilierte Kernel und Kernel-Module einzusetzen. Außerdem will ich demnächst eine Distribution ausprobieren, die nicht für die Sicherheitstechnik ausgelegt ist. Nur finde ich in meinem BIOS-Setup leider keine Option, um UEFI Secure Boot auszuschalten. Was mache ich da?

Ihr akutes Problem können Sie vielfach recht einfach lösen: Für Secure Boot ausgelegte Distributionen booten typischerweise über den Secure-Boot-Loader „Shim“, bei dem sich mit der Sicherheitstechnik einhergehenden Einschränkungen leicht deaktivieren lassen. Das haben wir schon vor einer Weile etwas ausführlicher beschrieben [6]. Die Schritte sind immer noch dieselben. Im Kurzen: sudo mokutil --disable-validation aufrufen und nach der Passwort-Abfrage von sudo ein Einmalpasswort vergeben. Beim nächsten Neustart sollte dann ein Menü mit der Option „Change Secure Boot state“ erscheinen. Wählen Sie dieses aus, worauf einzelne Zeichen des Einmalpassworts abgefragt werden, bevor Sie die Einschränkungen deaktivieren können.

Anschließend können Sie dann selbstkompilierte Kernel oder Kernel-Module laden und einige andere Dinge tun, die Kernel vieler Distributionen untersagen, solange Secure Boot an ist. Im BIOS bleibt es aber aktiv, daher können Sie nach wie vor keine Distributionen installieren, die nicht für die Sicherheitstechnik ausgelegt wurden. Wenn das ihr Ziel ist, sollten Sie das BIOS aktualisieren und sich das BIOS-Setup danach noch mal genauer ansehen, denn bei nahezu allen PCs, Notebooks und Mainboards für gängige x86-Prozessoren von AMD und Intel lässt sich Secure Boot irgendwie ausschalten. Die dazu nötigen Optionen tauchen aber manchmal erst auf, wenn man andere Einstellungen ändert, die augenscheinlich nichts damit zu tun haben.

Bei vielen Boards muss man einfach nur das CSM aktivieren, denn das sollte Secure Boot immer lahmlegen. Auf einigen Boards von MSI muss man hingegen „Windows 10 WHQL Support“ deaktivieren, damit die Option zum Deaktivieren der Sicherheitstechnik überhaupt zu sehen ist. UEFI-BIOSe einiger anderer Hersteller zeigen die Einstellmöglichkeit erst an, wenn man bei der Angabe zum verwendeten Betriebssystem von „Windows 10“ auf „Other OS“ umschaltet. Bei einigen Workstations und Systemen von Acer muss man hingegen zuerst ein Admin-Passwort für das BIOS festlegen, um die Einstellmöglichkeit hervorzuzaubern. Das sind nur einige von oft herstellerspezifischen Tricks, die sich oft bei Internet-Suchen auftun.

Wenn Sie so trotzdem keine Möglichkeit finden, bleibt nur noch ein Weg: das Installationsmedium und das darüber aufgespielte System über den Boot-Loader einer für Secure Boot aufgelegten Distribution starten. Das erfordert allerdings fortgeschrittene Linux-Kenntnisse und geht bei jeder Distribution etwas anders. Eine ausführliche Beschreibung würde hier den Rahmen sprengen.

Ich habe einen USB-Stick präpariert, um Linux parallel zu Windows zu installieren. Mein BIOS bootet aber extrem schnell und zeigt nicht an, über welche Hotkeys ich BIOS-Setup oder Boot Menü (BIOS Boot Select/BBS) aufrufen kann. Gibt es noch einen anderen Weg, um vom Stick zu starten?

Windows kann Ihr UEFI-BIOS auffordern, beim nächsten Systemstart das BIOS-Setup zu öffnen.

Das Einfachste: Ein per UEFI startendes Windows kann das BIOS anweisen, das Gewünschte zu tun. Halten Sie dazu die Shift-Taste gedrückt, während Sie Windows über das Startmenü zum Neustart auffordern. Windows fährt dann herunter, zeigt vor dem Neustart aber ein simples Menü, in dem man eine „Option auswählen“ kann. Über den Punkt „Ein Gerät verwenden“ können Sie hier festlegen, welchen UEFI-Boot-Eintrag das BIOS beim nächsten Systemstart booten soll. Hier sollte Ihr Stick oder die DVD zur Linux-Installation erscheinen.

Bei manchen PCs scheitert dieser Boot-Weg jedoch an Fehlern im BIOS. Fahren Sie Windows dann erneut per Shift-Neustart herunter, um das BIOS dann via „Problembehandlung/Erweiterte Optionen/UEFI Firmwareeinstellung“ aufzufordern, beim nächsten Start das BIOS-Setup zu öffnen. Dort können Sie dann die Boot-Reihenfolge anpassen, wie Sie es von klassischen BIOSen kennen.

Einige weitere Hinweise zum Boot von USB-Sticks finden sie in der FAQ der c’t 24/2018 [5].

Ich möchte gerne Linux auf meinem Netbook installieren, bei dem das vorinstallierte 32-Bit-x86-Windows per UEFI startet. Ich habe unter anderem versucht, Ubuntu Desktop und Linux Mint zu booten, aber das UEFI-BIOS wollte keines der beiden starten. Was mache ich falsch?

Ihr Gerät nutzt ein 32-Bit-UEFI-BIOS. Solch eine Firmware versteht sich nicht mit 64-Bit-UEFI-Loadern, daher booten nur Distributionen, die einen 32-Bit-x86-UEFI-Boot-Loader mitbringen. Zu den wenigen, die das tun, gehören die für 32-Bit-x86-Prozessoren ausgelegten Varianten von Debian GNU/Linux 9 und die 64-Bit-x86-Ausführungen von Fedora Linux. Letztere funktionieren nur, wenn auch ein 64-Bit-x86-Prozessor unter der Haube sitzt – das ist bei solchen Geräten aber typischerweise der Fall.

Ich nutze normalerweise ein per UEFI startendes Linux, muss aber hin und wieder mein parallel installiertes Windows starten. Oftmals verpasse ich leider das Boot-Menü des von Linux eingerichteten Boot-Managers und lande dann wieder in Linux. Kann ich den vielleicht dazu bewegen, einmal Windows zu starten?

Über das Werkzeug Efibootmgr können Sie die Boot-Reihenfolge des BIOS verändern oder dieses anweisen, einmalig ein bestimmtes Betriebssystem zu starten.

Der typischerweise verwendete Boot-Manager Grub kann das, aber es gibt etwas Besseres: Sie können Ihr BIOS auffordern, direkt den UEFI-Boot-Eintrag zum Start von Windows anzuspringen. Dazu müssen Sie zuerst efibootmgr aufrufen, das alle UEFI-Boot-Einträge samt ihres vierstelligen Bezeichners auflistet. Wenn Windows dort den Eintrag „0001“ hat, können Sie das UEFI-BIOS mit folgendem Befehl anweisen, beim nächsten Systemstart einmalig Windows zu starten:

Auf diese Weise können Sie das BIOS auch dazu bewegen, einmalig von einem USB-Stick oder einem DVD-Laufwerk zu booten. Manche BIOSe implementieren diese Funktion aber nicht sauber und booten, als sei nichts gewesen. Selbiges gilt für das via --timeout in Sekunden definierbare Zeitfenster, in dem das BIOS das Boot-Menü zeigen soll. Das Werkzeug efiboomgr bieten zudem keine Möglichkeit, das System zum Aufruf des BIOS-Setup zu bewegen; bei einigen Distributionen findet sich im Grub-Menü aber ganz unten eine Option, um das Setup aufzurufen.

Was nahezu immer klappt, ist die Boot-Reihenfolge von Linux aus zu verändern. Der folgende Befehl sorgt etwa dafür, dass das BIOS zuerst den Boot-Eintrag mit dem Bezeichner 0002 zu starten versucht, aber mit jenem unter 0001 weiter macht, falls das nicht klappt:

Ich möchte eine Linux-Distribution installieren, die per UEFI booten soll. Dazu muss ja schon das Installationsmedium per UEFI starten. Das tut der von mir mit Unetbootin präparierte USB-Stick aber partout nicht, obwohl er per CSM durchaus bootet. Liegt es an meinem Stick?

Der Datenträger hat bei solchen Problemen so gut wie nie Schuld – insbesondere nicht, wenn der Stick wie in diesem Fall normal zu funktionieren scheint. In den allermeisten Fällen liegt die Ursache in der Art, wie Sie den Stick präpariert haben. Dazu gibt es im Netz viele verschiedene Programme. Diese erzeugen unserer Erfahrung nach gelegentlich Sticks, die auf UEFI-Systemen nicht starten. Das ist auch kein Wunder, denn die Programme müssen hin und wieder angepasst werden, wenn Linux-Distribtutionen irgendwas am Boot-Prozess verändern. Nutzen Sie daher zum Präparieren des USB-Sticks besser das Programm, das der jeweilige Distributor in seiner Dokumentation empfiehlt. Für nahezu alle PC-Linux-Distributionen können Sie die ISO-Datei alternativ auch bitweise auf den Stick transferieren. Unter Linux gelingt das beispielsweise mit dem Kommandozeilenprogrammen dd, unter Windows mit dem Win32 Disk Imager.

Womöglich übergeht ihr UEFI-BIOS den Stick auch ohne irgendeinen Hinweis, weil es das darauf befindliche Betriebssystem als nicht vertrauenswürdig einstuft, da ihm eine Secure-Boot-Signatur fehlt. In diesem Fall müssen Sie die Sicherheitstechnik im BIOS-Setup deaktivieren oder zu einer Distribution mit Secure-Boot-Unterstützung wechseln.

Achten Sie zudem darauf, dass die Linux-Distribution einen Boot-Loader mitbringt, der zur Prozessorarchitektur und der verwendeten Firmware passt (siehe Antwort auf die letzte Frage). Vereinzelt gibt es zudem UEFI-BIOSe, die mit den UEFI-Boot-Loadern von Linux einfach nicht zurechtkommen. Das dürfte der Fall sein, wenn Sie die anderen Eventualitäten ausgeschlossen haben und der Stick an anderen Systemen problemlos per UEFI bootet. Mit etwas Glück hilft dann ein BIOS-Update. (thl)

[1] Thorsten Leemhuis, Im Einklang, Stolperfallen bei der Linux-Installation auf UEFI-PCs vermeiden, c’t 23/2018, S. 140

[2] Thorsten Leemhuis, Startprozedere, Den UEFI-Start von Linux im Griff, c’t 23/2018, S.146

[3] Thorsten Leemhuis, Gemeinsam und doch für sich, Windows und Linux per UEFI parallel installieren, c’t 23/2018, S. 150

[4] Axel Vahldiek, Windows-Umzug, So gelingt der Rechnerwechsel ohne Neukonfiguration, c’t 6/2019, S. 14 und die beiden darauffolgenden Artikel

[5] Axel Vahldiek, FAQ, Booten von USB-Laufwerken, c’t 24/2018, S. 172

[6] Thorsten Leemhuis, Ausgehebelt, Secure-Boot-Einschränkungen bei Fedora und Ubuntu loswerden, c’t 14/2016, S. 176

Kommentare

Anzeige