Konfigurieren des UEFI-Bootloaders. Der kürzeste Reiseführer der Welt

  • Tutorial

Wie funktioniert das Laden eines modernen Betriebssystems? Wie kann beim Installieren des Systems das Booten über UEFI konfiguriert werden, ohne in Handbüchern zu ertrinken oder irgendetwas zu beschädigen?


Ich habe die "schnellste Anleitung" versprochen. Hier ist es:


  1. Erstellen Sie eine GPT-Partitionstabelle auf der Festplatte
  2. Erstellen Sie eine FAT32-Partition für ein paar hundert Megabyte
  3. Laden Sie einen UEFI-Loader aus dem Internet herunter
    (wir benötigen den Loader selbst, dies ist eine Binärdatei!)
  4. Benennen Sie diese Datei um und speichern Sie sie in der erstellten Partition unter /EFI/Boot/bootx64.efi
  5. Wir erstellen eine Textkonfiguration und platzieren sie dort, wo der Loader sie erwartet.
    (Die Konfiguration und der Speicherort der Konfiguration hängen von der spezifischen Implementierung des Loaders ab. Diese Informationen sind im Internet verfügbar.)
  6. Nach dem Neustart sehen wir das Bootloader-Menü
    (Wenn Windows 8 oder 10 auf der Festplatte installiert ist - mit hoher Wahrscheinlichkeit wird dieses Handbuch auf die Punkte 3 - 5 reduziert).

TL; DR muss den Pfad zum Bootloader nicht in den neuen UEFI-Booteinträgen registrieren - Sie müssen die Bootloader-Datei gemäß dem Standard- "Standardpfad" platzieren, in dem UEFI sie findet, und das Bootloader-Menü anstelle des UEFI-Bootmenüs verwenden, das viel einfacher und sicherer zu konfigurieren ist


Wie nicht zu tun


Tatsächlich gibt es mehrere Möglichkeiten, das Laden von UEFI zu konfigurieren. Ich werde zunächst andere Optionen beschreiben - damit klar ist, wie (und warum) Sie dies nicht tun müssen . Wenn Sie zur Führung gekommen sind - machen Sie es ruhiger.


Es ist nicht erforderlich, in den NVRAM einzusteigen und Efivars zu berühren


Das "beliebteste" Verfahren zum Installieren des Bootloaders im System lautet wie folgt: Das Betriebssystem-Installationsprogramm erstellt einen speziellen Abschnitt darauf - die Verzeichnisstruktur und speichert die Bootloader-Dateien. Anschließend interagiert er mit einem speziellen Dienstprogramm (efibootmgr unter Linux, bcdedit unter Windows) mit der Firmware des UEFI-Chips und fügt diesem einen Startdatensatz hinzu. Dieser Eintrag gibt den Pfad zur Bootloader-Datei (ausgehend vom Stammverzeichnis des Dateisystems) und ggf. Parameter an. Danach wird die Option zum Starten des Betriebssystems im Startmenü des Computers angezeigt. Unter Linux kann auf den Loader komplett verzichtet werden. Der Boot Record gibt den Pfad sofort zum Kernel mit allen Parametern an. Der Kernel muss mit der Option EFISTUB kompiliert werden (die seit langem der Standard für die meisten Distributionen ist). In diesem Fall enthält sie den Header "


Wenn das System gestartet wird und der Benutzer den von ihm benötigten Startdatensatz auswählt, sucht die UEFI-Firmware zuerst nach einer speziellen EFI-Partition auf der in diesem Datensatz angegebenen Festplatte, greift auf das Dateisystem auf dieser Partition zu (unbedingt FAT oder FAT32) und startet den Bootloader. Der Bootloader liest seine Konfiguration aus der Einstellungsdatei und lädt entweder das Betriebssystem oder stellt ein Bootmenü bereit. Merkst du etwas? Ja, wir haben zwei Startmenüs - eines auf der UEFI-Chip-Firmware-Ebene und eines auf der Bootloader-Ebene. In der Realität ahnen Benutzer möglicherweise nicht einmal, ob der zweite Eintrag vorhanden ist. Wenn nur ein Eintrag im Menü vorhanden ist, lädt der Windows-Bootloader ihn ohne unnötige Fragen. Sie können den Bildschirm mit diesem Menü sehen, wenn Sie eine zweite Kopie von Windows installieren oder es nur schief installieren.


Zur Verwaltung von Startaufzeichnungen empfehlen Handbücher im Internet in der Regel die Interaktion mit UEFI-Firmware. Hierfür gibt es bereits fünf grundlegende Optionen: efibootmgr unter Linux, bcdedit unter Windows, eine Art Software auf Macs, den Befehl bcfg des Dienstprogramms uefi shell (wird unter UEFI, Bare Metal und ohne Betriebssystem gestartet, weil in diesem speziellen Format kompiliert) und für besonders hochwertige Firmware - mit den grafischen UEFI-Tools (in der gängigen Sprache "in den BIOS-Einstellungen").


Bei allen oben beschriebenen „Multi-Books“ kann der folgende Gedanke leicht übersehen werden: Um die Einstellungen des Softwareteils zu ändern (z. B. den Startparameter des Betriebssystems hinzuzufügen), muss der Flash-Speicher der Mikroschaltung auf der Platine überschrieben werden. Gibt es hier Fallstricke? Oh ja! Windows ist manchmal in der Lage, einen Baustein aus einem Laptop zu machen , Linux auch in vielerlei Hinsicht. Die Qualität der Firmware lässt oft zu wünschen übrig - UEFI-Standards werden entweder schief oder gar nicht implementiert. Logischerweise muss die Firmware das vollständige Entfernen aller efivars-Variablen ohne Konsequenzen überstehen, keine für sie kritischen Daten speichern und die Standardwerte selbst wiederherstellen - einfach weil der Benutzer Zugriff darauf hat und die Wahrscheinlichkeit, dass sie vollständig entfernt werden, bei weitem nicht Null ist. Im Verlauf der Experimente habe ich mein Lenovo (glücklicherweise reversibel) wiederholt "gemauert" - alle Elemente aus dem Startmenü, einschließlich der Option "Gehe zu Einstellungen", sind verschwunden.


Die Arbeit mit UEFI-Startdatensätzen ist ebenfalls kein Problem. Das Dienstprogramm efibootmgr verfügt beispielsweise nicht über die Option "Vorhandenen Eintrag bearbeiten". Wenn Sie den Kernel-Parameter geringfügig ändern möchten, löschen Sie den gesamten Datensatz und fügen ihn erneut hinzu, der bereits geändert wurde. Die Zeichenfolge enthält doppelte und einfache Anführungszeichen sowie Vor- und Backslashes in einer nicht sehr offensichtlichen Reihenfolge. Als ich diese magische Arbeit endlich fertiggestellt habe, habe ich sie in Form von Bash-Skripten gespeichert, die immer noch in meinem Root-FS liegen:


efibootmgr -c -L "Archlinux (debug)" -l '\EFI\archlinux\vmlinuz-linux' -u "root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\initramfs-linux.img systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0"

GRUB muss nicht verwendet werden


Dies ist ein verdammter Mastodon, dessen Funktionalität zu 90% für Festplatten mit MBR gilt. Zum Konfigurieren müssen Sie eine Reihe von Dateien bearbeiten und anschließend den Befehl zum Generieren der Konfiguration ausführen. Die Ausgabe ist ein riesiges Blatt, das für eine normale Person undeutlich ist. Als Teil - ein Berg von ausführbaren Dateien. Es wird von einem Team geschrieben, das einem einfach nicht aus dem Kopf geht - Sie müssen auf jeden Fall in die Dokumentation gehen


grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub

Zum Vergleich wird der einfachste UEFI-Bootloader, der Teil des systemd-Pakets ist, durch den Befehl festgelegt


bootctl install --path=/boot

Dieser Befehl führt genau zwei Aktionen aus: Er kopiert den ausführbaren Bootloader auf die EFI-Partition und fügt den Boot-Datensatz der Firmware hinzu. Und die Konfiguration dafür braucht genau SIEBEN Zeilen.


"Der kürzeste Wegweiser" - ein bisschen detaillierter


Das Boot-Menü muss auf Bootloader-Ebene implementiert werden - das Bearbeiten von Textkonfigurationen ist viel einfacher und sicherer.


Wir brauchen keinen Boot-Record - die UEFI-Firmware sucht beim Einrichten des BIOS zum Laden von der Festplatte zuerst nach einer EFI-Partition und versucht dann, die Datei unter einer streng festgelegten Adresse in diesem Abschnitt auszuführen: /EFI/Boot/BOOTX64.EFI


Was ist eine "EFI-Partition"? In der Theorie sollte es eine spezielle Art von "EFI-System" (EF00) haben. In der Praxis ist die erste Partition auf einer mit FAT32 formatierten GPT-Festplatte geeignet, die über genügend Speicherplatz für den Bootloader und die Zusatzdateien (falls vorhanden) verfügt.


Punkt 3: "Laden Sie einen UEFI-Bootloader aus dem Internet herunter . " Was bedeutet das? Der Bootloader ist einfach eine ausführbare Datei eines bestimmten Formats, zu dem die Konfiguration im Kit gehört. Wenn Sie beispielsweise ein Paket mit systemd installiert haben, finden Sie die Bootloader-Datei unter /usr/lib/systemd/boot/efi/systemd-bootx64.efi. Benennen Sie sie in bootx64.efi um und kopieren Sie sie nach / EFI / Boot / auf der EFI-Partition. Kein System zur Hand? Laden Sie das Archiv von der Archlinux-Website herunter. Oder aus dem Ubuntu-Repository. Oder Debian. Gibt es ein Windows-System zur Hand? Nehmen Sie den Windows-Bootloader von dort, es wird auch funktionieren)) Wenn Sie es konfigurieren können, habe ich es ehrlich gesagt nicht ausprobiert.


Punkt 4: "Configure Config" . Wie bei einem normalen Programm werden beim Start des Bootloaders Konfigurationsdateien auf bestimmten Pfaden erwartet. Normalerweise sind diese Informationen im Internet leicht zu finden. Für den Systemd-Bootloader müssen wir das Verzeichnis "loader" im Stammverzeichnis der EFI-Partition erstellen und darin die Datei "loader.conf" mit drei Zeilen (hier meine eigenen):


default     archlinux
timeout     10
editor      1

Der Editor-Parameter ist dafür verantwortlich, dass der Boot-Menüpunkt vor dem Start bearbeitet werden kann.


Neben loader.conf müssen Sie ein Verzeichnis für Einträge erstellen. Eine Datei in dieser Datei ist für einen Starteintrag im Startmenü verantwortlich. Ich habe eine arch.conf-Datei mit folgendem Inhalt:


title          Arch Linux
linux          /efi/archlinux/vmlinuz-linux
initrd         /efi/archlinux/initramfs-linux.img
options        root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\intel-ucode.img

Ich habe es nicht erwähnt, aber es ist ziemlich offensichtlich - Kernel und initramfs müssen sich auf demselben Dateisystem befinden wie der Bootloader, dh auf der EFI-Partition. Die Pfade zu ihnen in den Configs werden vom Stamm dieses FS gezählt.


Andere Bootloader


systemd-boot ist sehr einfach und bietet ein spartanisch aussehendes Schwarz-Weiß-Menü. Es gibt schönere Möglichkeiten, wenn die Seele nach Schönheit fragt.


rEFind ist ein sehr schöner Bootloader. Sie können es hier als Deb-Paket herunterladen . Ich benutze es auf meinem Laptop. Es ist möglich, ein Startmenü automatisch ohne Konfiguration zu erstellen - nur durch Scannen von Dateien.


Klee . Es ermöglicht Ihnen, die native Bildschirmauflösung einzustellen, hat Mausunterstützung auf dem Startbildschirm, verschiedene Themen. Das Standarddesign ist fürchterlich, die XML-Konfiguration ist nicht lesbar, konnte nicht konfiguriert werden.


Verschiedene nicht offensichtliche Konsequenzen


Sie können diese Schaltung in der Arbeit leicht versuchen. Nehmen Sie ein USB-Flash-Laufwerk, formatieren Sie es in der GPT-Partitionstabelle, erstellen Sie eine FAT-Partition und kopieren Sie den Bootloader dorthin. Comp kann davon ausgehen.


Wenn Sie einfach den Boot-Bereich des installierten Linux auf ein solches USB-Flash-Laufwerk kopieren, bootet das System ohne Unterschied vom USB-Flash-Laufwerk.


Jetzt auch beliebt: