Manjaro-Tutorial: BIOS, UEFI, MFB, GPT, GRUB, SED, LUKS

In Teil 1 – Welches Linux ist das beste für einen Java-Entwickler? – habe ich mich entschieden Manjaro-Linux auf einem DELL XPS 15 9570 zu installieren. In diesem Teil erkläre ich euch einige wichtige Grundlagen, die ihr kennen solltet, um Linux zu installieren.

Doch nicht so einfach

Nachdem ich Manjaro als VM auf meinem Windows-Rechner installiert habe und unzählige Forenbeiträge und How-Tos überflogen habe, stelle ich fest: ganz so einfach scheint das doch nicht zu sein. Es gibt verzweifelte User, die über 50 erfolglose Installationsversuche hinter sich haben. Die häufigsten Fragen sind:

  • Was ist der Unterschied zwischen BIOS und (U)EFI?
  • Soll ich einen MBR oder eine GPT installieren?
  • Was ist GRUB?
  • Brauche ich eine separate Boot-Partition?
  • Wie verschlüssele ich die Festplatte während der Installation? Soll ich LUKS oder Opal oder beides verwenden? Muss/darf ich die ganze Platte verschlüsseln oder muss die Boot-Partition unverschlüsselt bleiben?
  • Was ist der richtige Treiber für meine Grafikkarte und wie installiere und konfiguriere ich ihn richtig?
  • Was bedeuten die verschiedenen GRUB-Boot-Optionen, die meistens im Zusammenhang mit Grafikkartentreibern erwähnt werden? Und wie setze ich sie?

Die meisten dieser Fragen sind in den einschlägigen Foren beantwortet, doch in erster Linie von Linux-Profis, die die Antworten auf solch eine Art und Weise formulieren, dass sie einem Anfänger absolut nicht weiterhelfen. So wie:

„First just getting rid of intel nomodeset i915.modeset=0 then intel and the open source driver for nvidia [nouveau] nomodeset i915.modeset=0 nouveau.modeset=0 then all of it (and try to boot using vesa) nomodeset nvidia.modeset=0 i915.modeset=0 nouveau.modeset=0

Alles verstanden? Ich auch nicht. Daher werde ich versuchen die oben aufgezählten Fragen so zu beantworten, dass auch ein Linux-Neuling sie versteht. Im dritten Teil werde ich euch dann Schritt für Schritt durch die Installation von Manjaro auf dem DELL XPS 15 9570 führen. Ich werde hierbei nur soweit in die Details gehen, wie es für die Installation notwendig ist.

BIOS vs. UEFI / EFI

Was ist der Unterschied zwischen BIOS, UEFI und EFI?

Das BIOS (Basic Input Output System) ist dafür zuständig den PC in einen funktionsfähigen Zustand zu versetzen und danach das Betriebssystem zu laden. Es wurde in den 70er Jahren des letzten Jahrhunderts entwickelt und wurde seither immer wieder erweitert. Bei heutigen 64-Bit-Systemen stoßen die Erweiterungsmöglichkeiten allerdings an ihre Grenzen.

Daher wurden Nachfolger entwickelt: zunächst EFI (Extensible Firmware Interface) und danach UEFI (Unified Extensible Firmware Interface) mit Fokus auf 64-Bit-Systeme und Features wie „Secure Boot“, welches sicherstellt, dass nur bestimmte, vorher signierte Bootloader ausgeführt werden.

Alle modernen Mainboards und Betriebssysteme unterstützen UEFI. Daher gibt es absolut keinen Grund das Betriebssystem im BIOS-Modus (welcher vom Compatibility Support Module des UEFIs emuliert wird) zu installieren.

MBR vs. GPT

Soll ich einen MBR oder eine GPT installieren?

Hier haben wir einen ähnlichen Sachverhalt wie beim BIOS vs. UEFI:

Der MBR (Master Boot Record) ist ein Datensatz im ersten Sektor der Festplatte und enthält den Bootloader (bzw. die erste Stufe davon) sowie die Partitionstabelle. Der MBR wurde in den 80er Jahren des letzten Jahrhunderts entwickelt, und – so wie das BIOS – stößt auch der MBR immer mehr an seine Grenzen. So können maximal vier primäre Partitionen erstellt werden – oder drei primäre und eine erweiterte, die dann wiederum logische Partitionen enthalten kann. Eine Partition darf maximal 2 TB groß sein.

Im Zuge der UEFI-Entwicklung wurde die GPT (GUID-Partitionstabelle) als Nachfolger des MBR entwickelt. Das “G” steht für “GUID” (Globally Unique Identifier) und nicht für „GNU“, hat also nichts mit Linux zu tun.

Bei der GPT gibt es keine Unterscheidung in primäre, erweiterte und logische Partitionen, und die Anzahl der Partitionen ist nicht beschränkt (außer durch den verfügbaren Speicherplatz). Die maximale Partitionsgröße beträgt 18 EB (Exabyte), das sind 18 Millionen TB oder 18 Milliarden GB. Ich kann mir nicht vorstellen kann, wie diese Grenze jemals erreicht werden soll … allerdings haben das die MBR-Entwickler vor 35 Jahren auch über die 2 TB-Grenze gedacht.

Ein weiterer Vorteil der GPT ist, dass eine Sicherheitskopie der Partitionstabelle am Ende der Festplatte abgelegt wird.

→ Ebenso wie UEFI wird auf die GPT von allen modernen Mainboards und Betriebssystemen unterstützt. Die Wahl sollte also zweifelsfrei auf die GPT fallen.

Was ist GRUB?

Während UEFI und GPT bei Windows ebenso zum Einsatz kommen wie bei Linux, sind wir mit GRUB („Grand Unified Bootloader“) in der Linux-Welt angekommen.

GRUB ist wie der Name schon sagt ein Bootloader, der das eigentliche Linux-Betriebssystem lädt. Der Bootloader wird in eine gesonderte „EFI System Partition“ (ESP) installiert, wo er vom (U)EFI gestartet wird.

In dieser Partition können neben GRUB auch weitere Bootloader installiert werden, was das Setup eines Multiboot-Systems stark vereinfacht. Wurde bspw. zuvor Windows im UEFI-Modus installiert, dann ist die EFI-Partition bereits vorhanden und enthält den „Windows Boot Manager“. Wird nun GRUB hinzugefügt, dann fragt UEFI beim nächsten Boot-Vorgang automatisch, ob Windows oder Linux gestartet werden soll.

Damit die „EFI System Partition“ von allen Betriebssystemen erkannt wird, ist sie normalerweise mit dem FAT32-Dateisystem formatiert.

In der Windows 10-Datenträgerverwaltung sieht das so aus:

EFI-Systempartition (ESP) in der Windows 10 Datenträgerverwaltung
EFI-Systempartition (ESP) in der Windows 10 Datenträgerverwaltung

Ich habe versucht das ganze noch einmal anschaulich darzustellen. Im Folgenden seht ihr eine beispielhafte Aufteilung der Festplatte:

Festplatten-Partitionen: GPT und EFI System Partition (ESP)
Festplatten-Partitionen: GPT und EFI System Partition (ESP)

Die Partitionen sind im Größenverhältnis zueinander nicht korrekt dargestellt. GPT und ESP sind tatsächlich viel kleiner als die restlichen Partitionen.

  • Die GPT verweist auf die Partitionen der Festplatte.
  • Die ESP (zur Erinnerung: „EFI System Partition“) enthält in diesem Beispiel die Bootloader für Windows („Windows Boot Manager“) und Linux („GRUB“).
  • Wird beim Start des PCs der „Windows Boot Manager“ ausgewählt, bootet dieser Windows von der C:\-Partition.
  • Wird „GRUB“ ausgewählt, bootet dieser Linux von der Linux Root Partition.

Braucht man eine separate Linux-Boot-Partition?

Bei älteren PCs mit BIOS und Master Boot Record konnte in eben diesem aus Platzgründen nur ein Teil von GRUB (die sogenannte „Stage 1“) hinterlegt werden. Der größte Teil des Bootloaders lag hingegen im /boot-Verzeichnis.

Da „Stage 1“ nur auf einen beschränkten Teil der Festplatte zugreifen konnte und auch nur eine begrenzte Anzahl an Filesystemen lesen konnte, musste das /boot-Verzeichnis in einer eigenen Partition am Anfang der Festplatte liegen und mit einem von „Stage 1“ unterstützten Filesystem formatiert sein.

Bei neuen System mit UEFI und GPT passt GRUB problemlos komplett in die EFI-Partition und kann auch mit so ziemlich jedem Dateisystem umgehen, das von Linux unterstützt wird – einschließlich Software-RAIDs, LVMs und mit LUKS verschlüsselten Dateisystemen.

→ Eine separate Boot-Partition wird auf modernen System nicht benötigt.

Festplatte verschlüsseln

Wenn Deine Festplatte vertrauliche Daten enthält, solltest Du sie komplett verschlüsseln – insbesondere, wenn sie sich in einem Laptop befindet, den Du regelmäßig mit Dir umherträgst.

Es gibt grundsätzlich zwei Arten der Verschlüsselung:

  • Software-Verschlüsselung: unter Linux in Form von LUKS („Linux Unified Key Setup“) und unter Windows in Form von BitLocker (nur in der Professional-Version enthalten)
  • Hardware-Verschlüsselung durch „Self-Encrypting Devices“ (SEDs).

Software-Verschlüsselung mit LUKS

Die Software-Verschlüsselung ist während der Installation des Betriebssystems problemlos zu aktivieren. Dazu muss bei der Installation von Manjaro im Schritt „Partitions“ lediglich ein Häkchen an der entsprechenden Stelle gesetzt und eine Passphrase (ein langes, vorzugsweise aus mehreren Wörten bestehendes Passwort) eingetragen werden. Der Installer kümmert sich um den Rest:

Software-Festplattenverschlüsslung mit LUKS
Software-Festplattenverschlüsslung mit LUKS

Achtung: bei alten System mit BIOS und MBR muss eine separate /boot-Partition angelegt werden (s. o. „Braucht man eine separate Linux-Boot-Partition?“), welche nicht verschlüsselt werden darf.

Sollen die Daten eines laufenden Systems verschlüsselt werden, wird es etwas aufwändiger. Hierfür gibt es keine grafische Oberfläche. Stattdessen muss man das Kommando cryptsetup-reencrypt mit der Option --new verwenden. Weitere Details dazu findet ihr hier: Arch Linux – Encrypt an unencrypted filesystem

Hardware-Verschlüsselung mit SEDs und Opal

Fast alle modernen SSD-Festplatten unterstützen Hardware-Verschlüsselung. Diese Geräte nennt man „Self-Encrypting Devices“ (SEDs), der Standard hierfür wird durch die „Opal Storage Specification“ festgelegt. Diese Variante hat den großen Vorteil, dass die CPU nicht belastet wird.

Die Verschlüsselung funktioniert mit zwei Keys: einem „Data Encryption Key“ (DEK), mit dem die Daten auf der Festplatte verschlüsselt werden (in der Zeichnung unten orange) und einem „Authentication Key“ (AK), mit dem wiederum der „Data Encryption Key“ verschlüsselt wird (blau in der Zeichnung):

Hardware-Festplattenverschlüsselung mit Self Encrypting Devices (SEDs)
Hardware-Festplattenverschlüsselung mit Self Encrypting Devices (SEDs)

Dieses zweistufige System hat den Vorteil, dass der Authentication Key jederzeit geändert werden kann. Dazu muss lediglich der Data Encryption Key mit dem alten Authentication Key entschlüsselt und danach mit dem neuen Authentication Key wieder verschlüsselt werden. In der Zeichnung würde das bedeuten, dass nur das Schloss links oben ausgetauscht werden muss.

Eine Änderung des Data Encryption Key hingegen würde eine erneute Verschlüsselung des kompletten Festplatteninhalts erfordern. Dies könnte je nach Größe der Festplatte mehrere Stunden dauern. In der Zeichnung hieße das, dass alle 16 Schlösser auf der rechten Seite ausgetauscht werden müssten.

Pre-Boot Authorization Image

Um die Verschlüsselung zu aktivieren (bzw. um die Entschlüsselung zu ermöglichen) muss auf die SSD ein sogenanntes „Pre-Boot Authorization“ (PBA) Image installiert werden, welches selbst nicht verschlüsselt wird. Das PBA wird in den sogenannten „Shadow MBR“ installiert – ein Bereich der SSD, der im regulären Betrieb nicht sichtbar ist. Ist die SSD hingegen gesperrt, sieht das System eben nur diesen „Shadow MBR“, sodass nach dem Einschalten ausschließlich das PBA gebootet werden kann.

Dieses fragt nun nach dem Authentication Key in Form einer Passphrase. Wird diese korrekt eingegeben, blendet die SSD den Shadow-MBR wieder aus und den eigentlichen Datenbereich ein. Daraufhin wird ein Reboot eingeleitet, durch den schließlich das eigentliche Betriebssystem gestartet wird.

Der Nachteil der Hardware-Verschlüsselung ist die ziemlich aufwändige Installation. Diese werde ich im dritten Teil der Serie, Installation von Manjaro Linux auf einem DELL XPS 15 9570, Schritt für Schritt erklären.

Grafiktreiber

Letztendlich kommen wir zu einer der größten Herausforderungen überhaupt: Welcher ist der richtige Treiber für meine Grafikkarte? Und wie konfiguriere ich ihn richtig? Dies kann ich leider nicht allgemein beantworten, da die Probleme nach meiner Recherche von Grafikkarte zu Grafikkarte und von einer Linux-Distribution zur anderen unterschiedlich sind.

Hier bspw. findet ihr die Dokumentation für die Grafiktreiber von Arch-Linux: https://wiki.archlinux.de/title/X

Es gibt einen allgemeinen VESA-Treiber („xf86-video-vesa“), der mit allen Grafikkarten funktionieren sollte. Allerdings funktioniert dieser maximal bis zu einer Auflösung von 1024 x 768 Punkten und bietet weder 2D-, noch 3D-Hardware-Beschleunigung (zumindest war das in meinen Tests so).

GRUB-Boot-Optionen

In den diversen Foren-Beiträgen tauchen unter den Antworten immer wieder kryptische GRUB-Boot-Optionen auf. Was hat es damit auf sich?

Die Boot-Optionen kann man generell, aber auch direkt vor dem Booten des Betriebssystems ändern und damit den Boot-Vorgang beeinflussen. Beispielsweise, wenn die Grafikkarte durch den Kernel nicht richtig unterstützt wird oder ein fehlerhafter Grafikkartentreiber installiert wurde und das System während des Bootens mit einem schwarzen Bildschirm einfriert.

Setzen der Boot-Optionen

Boot-Optionen werden in der Datei /etc/default/grub in den folgenden zwei Zeilen festgelegt (hier am Beispiel einer Manjaro-Installation in einer Hyper-V-VM).

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

Die Optionen werden durch Leerzeichen getrennt hintereinander geschrieben. Die hinter GRUB_CMDLINE_LINUX gelisteten Optionen werden bei jedem Start berücksichtigt, die unter GRUB_CMDLINE_LINUX_DEFAULT aufgelisteten Optionen nur im Standardmodus, nicht jedoch im Wiederherstellungsmodus.

Nach Änderungen an der Datei muss das Kommando update-grub ausgeführt werden.

Um die Boot-Optionen für einen einzelnen Boot-Vorgang zu ändern, müsst ihr, wenn nach dem Anschalten des Rechners GRUB angezeigt wird, die Taste „E“ (für „Edit“) drücken. In Manjaro sieht das wie folgt aus:

Manjaro GRUB Bootloader
Manjaro GRUB Bootloader

Nach dem Drücken von „E“ erscheint der Editor:

Manjaro GRUB Bootloader im "Edit"-Modus
Manjaro GRUB Bootloader im „Edit“-Modus

Die Boot-Optionen sind hier in der Zeile, die mit linux beginnt, hinter dem Boot-Image aufgelistet und können dort auch direkt verändert werden.

Die wichtigsten Boot-Optionen

Folgende Boot-Optionen solltet ihr kennen, da sie in Foren-Beiträgen und How-tos immer wieder auftauchen:

  • quiet – wenn diese Option gesetzt ist, werden die Kernel-Meldungen beim Bootvorgang nicht angezeigt.
  • splash – diese Option soll einen Splash-Screen anzeigen, in meiner Manjaro-Testinstallation hat sie allerdings keine Auswirkung.
  • nomodeset – in neueren Kerneln wird der Grafikmodus bereits früh im Bootvorgang durch den Kernel aktiviert. Dies geschieht in erster Linie, um während des Bootvorgangs hochauflösende Splash-Screens anzeigen zu können. Da dies nicht mit allen Grafikkarten funktioniert, kann diese Option dazu verwendet werden, den Video-Modus erst beim Start des X Window Systems zu aktivieren.
  • nouveau.modeset=1 (oder 0) – aktiviert/deaktiviert Kernel Mode Setting (das vorab erwähnte Aktivieren des Grafikmodus durch den Kernel) für Nvidia Grafikkarten.
  • i915.modeset=1 (oder 0) – aktiviert/deaktiviert Kernel Mode Setting für Intel Grafikkarten.
  • radeon.modeset=1 (oder 0) – aktiviert/deaktiviert Kernel Mode Setting für AMD Radeon Grafikkarten.
  • xforcevesa – für die Grafikanzeige wird ausschließlich der VESA-Modus verwendet. Dieser benötigt keinen besonderen Grafiktreiber und sollte auf allen Grafikkarten laufen – allerdings nur in begrenzter Auflösung und ohne Hardware-Beschleunigung.

Was ich leider nicht herausfinden konnte, ist welche der „modeset“-Optionen Vorrang haben. Also ob bspw. „nomodeset“ alle anderen „modeset“-Optionen überschreibt oder nicht.

Zusammenfassung

In diesem Artikel habe ich die Unterschiede zwischen BIOS/MBR und (U)EFI/GPT erläutert. Auf aktuellen Systemen solltet ihr immer letztere Kombination einsetzen.

Ich habe euch erklärt, wie GRUB funktioniert, wie ihr euer System verschlüsselt, wofür Boot-Optionen benötigt werden und wie ihr sie sowohl permanent als auch für einen einzelnen Boot-Vorgang setzt.

Damit sind meine Vorbereitungen abgeschlossen. Im nächsten Teil beschreibe ich schließlich Schritt für Schritt, wie ich Manjaro auf dem DELL XPS 15 9570 installiere.

Habe ich alles soweit verständlich erklärt? Ich freue mich auf Euer Feedback, Eure Fragen und – falls ein Linux-Profi mitliest – auch auch Hinweise, falls an einer Stelle etwas nicht hunderprozentig korrekt ist.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.