Systemd-boot: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Truemmerer (Diskussion | Beiträge)
→‎Konfiguration: == Konfiguration == überarbeitet
PyDario (Diskussion | Beiträge)
K Eintrag ergänzt
 
(15 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
Systemd-boot (ehemals Gummiboot) ist ein schlanker EFISTUB-Bootloader, der einfach zu konfigurieren ist. Er wendet das EFISTUB-Verfahren an, bei dem der Linux-Kernel als ausführbare Datei (Executable) von der EFI-Firmware des Rechners geladen wird. Dies sorgt für einen schnelleren Bootvorgang, auf mancher Hardware treten dabei allerdings Probleme auf. In diesem Fall sollte man einen anderen Bootloader wie [[GRUB]] verwenden.
Systemd-boot (ehemals Gummiboot) ist ein schlanker EFISTUB-Bootloader, der einfach zu konfigurieren ist. Er wendet das EFISTUB-Verfahren an, bei dem der Linux-Kernel als ausführbare Datei (Executable) von der EFI-Firmware des Rechners geladen wird. Dies sorgt für einen schnelleren Bootvorgang, auf mancher Hardware treten dabei allerdings Probleme auf. In diesem Fall sollte man einen anderen Bootloader wie [[GRUB]] verwenden.


{{Hinweis|In dem Artikel wird nachfolgend {{ic|$esp}} für den Pfad der EFI-Partition verwendet und muss dann entsprechend ersetzt werden. Es empfielt sich, die EFI-Partition nach {{ic|/boot}} zu mounten.}}
{{Hinweis|In dem Artikel wird nachfolgend {{ic|$esp}} für den Pfad der EFI-Partition verwendet und muss dann entsprechend ersetzt werden. Es empfielt sich, die EFI-Partition nach {{ic|/boot}} zu mounten.}}
{{Hinweis|Damit Systemd-boot funktioniert, muss '''Secure Boot''' deaktiviert sein!}}


== Installation - Vorbereitung==
== Installation - Vorbereitung==
Zeile 10: Zeile 7:
Zuerst installiert man die benötigten EFI Werkzeuge:
Zuerst installiert man die benötigten EFI Werkzeuge:
  pacman -S efibootmgr dosfstools gptfdisk
  pacman -S efibootmgr dosfstools gptfdisk
Der Bootloader an sich sollte bereits installiert sein, da er in [[Systemd]] vorhanden ist.


=== Installation ===
=== Installation ===
Zeile 15: Zeile 13:
  # bootctl install
  # bootctl install


  '''Hinweis:''' Im folgenden ist '''INHALT ROOT''' zu ersetzen durch:
  '''Hinweis:''' Im folgenden ist '''INHALT_ROOT''' zu ersetzen durch:
   
   
  * LABEL=NAME-DER-ROOT-PARTITION zB. p_arch
  * LABEL=NAME-DER-ROOT-PARTITION zB. LABEL=p_arch
  oder
  oder
  * /dev/BEZEICHNUNG-DER-ROOT-PARTIOTION /dev/sda1
  * /dev/BEZEICHNUNG-DER-ROOT-PARTITION /dev/sda1
oder
* UUID=UUID-DER-ROOT-PARTITION
   
   
  und '''INHALT SWAP''' zu ersetzen durch:
  und '''INHALT_SWAP''' zu ersetzen durch:
   
   
  * LABEL=NAME-DER-SWAP-PARTITION zB. p_swap
  * LABEL=NAME-DER-SWAP-PARTITION zB. LABEL=p_swap
  oder
  oder
  * /dev/BEZEICHNUNG-DER-SWAP-PARTIOTION zB. /dev/sda2
  * /dev/BEZEICHNUNG-DER-SWAP-PARTIOTION zB. /dev/sda2
oder
* UUID=UUID-DER-SWAP-PARTITION


Anschließend die Datei {{ic|/boot/loader/entries/arch-uefi.conf}} mit folgendem Inhalt erstellen:
Anschließend die Datei {{ic|/boot/loader/entries/arch-uefi.conf}} mit folgendem Inhalt erstellen:
Zeile 31: Zeile 33:
  linux    /vmlinuz-linux
  linux    /vmlinuz-linux
  initrd  /initramfs-linux.img
  initrd  /initramfs-linux.img
  options  root=INHALT rw resume=INHALT SWAP
  options  root=INHALT_ROOT rw resume=INHALT_SWAP


Das Gleiche noch für Arch Linux fallback die Datei {{ic|/boot/loader/entries/arch-uefi-fallback.conf}} mit folgendem Inhalt erstellen:
Das Gleiche noch für Arch Linux fallback die Datei {{ic|/boot/loader/entries/arch-uefi-fallback.conf}} mit folgendem Inhalt erstellen:
Zeile 37: Zeile 39:
  linux    /vmlinuz-linux
  linux    /vmlinuz-linux
  initrd  /initramfs-linux-fallback.img
  initrd  /initramfs-linux-fallback.img
  options  root=INHALT rw resume=INAHLT SWAP
  options  root=INHALT_ROOT rw resume=INHALT_SWAP


Nun die Datei {{ic|/boot/loader/loader.conf}} bearbeiten:
Nun die Datei {{ic|/boot/loader/loader.conf}} bearbeiten:
  default  arch-uefi
  default  arch-uefi.conf
  timeout  1
  timeout  1
Das timeout (in Sekunden) kann natürlich frei gewählt werden.
Das timeout (in Sekunden) kann natürlich frei gewählt werden.


== Update ==
== Update ==
Falls man etwas an der Konfiguration geändert hat muss folgendes ausgeführt werden:
Falls man etwas an der Konfiguration geändert hat, muss folgendes ausgeführt werden:
  bootctl update
  bootctl update


Falls vorher der {{ic|path}} Parameter nicht spezifiziert wurde, wird nacheinander {{ic|/efi}}, {{ic|/boot}} und {{ic|/boot/efi}} überprüft.
Falls vorher der {{ic|path}} Parameter nicht spezifiziert wurde, werden nacheinander {{ic|/efi}}, {{ic|/boot}} und {{ic|/boot/efi}} überprüft.


Hat man die EFI-Partition nicht nach diesen Orten eingehängt kann man den {{ic|path}} Parameter wie folgt setzen:
Hat man die EFI-Partition nicht nach diesen Orten eingehängt, kann man den {{ic|path}} Parameter wie folgt setzen:
  bootctl --path=$esp update
  bootctl --path=$esp update


== Konfiguration ==
== Konfiguration ==
Die Konfiguration erfolgt über die Datei {{ic|$esp/loader/loader.conf}}. Existiert sie nicht, muss man sie neu anlegen.
Die Konfiguration erfolgt über die Datei {{ic|$esp/loader/loader.conf}}. Existiert sie nicht, muss man sie neu anlegen.
* {{ic|default}} - der Standarteintrag von dem automatisch gebootet wird. Der Name richtet sich nach der zugehörigen Datei (siehe unten) ohne die Endung {{ic|.conf}}.
* {{ic|default}} - der Standardeintrag, von dem automatisch gebootet wird. Der Name richtet sich nach der zugehörigen Datei (siehe unten) ohne die Endung {{ic|.conf}}.
* {{ic|timeout}} - die Zeitspanne, nach der der Standarteintrag automatisch gebootet wird. Beträgt es 0 oder existiert kein entsprechender Eintrag, wird automatisch '''ohne Nachfrage''' gebootet. In diesem Fall kommt man nur durch Drücken der Leertaste zum Auswahlmenü.
* {{ic|timeout}} - die Zeitspanne, nach der der Standardeintrag automatisch gebootet wird. Beträgt es 0 oder existiert kein entsprechender Eintrag, wird automatisch '''ohne Nachfrage''' gebootet. In diesem Fall kommt man nur durch Drücken der Leertaste zum Auswahlmenü.
* {{ic|console-mode}} – ändert den UEFI-Konsolenmodus: {{ic|0}} für 80x25, {{ic|1}} für 80x50, {{ic|2}} und höher für keine Standard Optionen unterstützt durch der UEFI-Firmware, {{ic|auto}} wählt automatisch einen geeigneten Modus aus, {{ic|max}} für den höchsten verfügbaren Modus, {{ic|keep}} (standart) für den Firmware-Modus.
* {{ic|console-mode}} – ändert den UEFI-Konsolenmodus: {{ic|0}} für 80x25, {{ic|1}} für 80x50, {{ic|2}} und höher für keine Standard Optionen unterstützt durch der UEFI-Firmware, {{ic|auto}} wählt automatisch einen geeigneten Modus aus, {{ic|max}} für den höchsten verfügbaren Modus, {{ic|keep}} (standart) für den Firmware-Modus.
* {{ic|editor}} - ob der Kernelparameter-Editor aktiviert werden soll oder nicht. {{ic|yes}} ist Standard und der Editor ist aktiviert. {{ic|no}} heist deaktiviert und wird empfohlen da duch das hinzufügen von {{ic|init{{=}}/bin/bash}} das root Passwort umgangen werden kann.
* {{ic|editor}} - ob der Kernelparameter-Editor aktiviert werden soll oder nicht. {{ic|yes}} ist Standard und der Editor ist aktiviert. {{ic|no}} heißt deaktiviert und wird empfohlen, da durch das Hinzufügen von {{ic|init{{=}}/bin/bash}} das root-Passwort umgangen werden kann.
* {{ic|auto-entries}} - Zeigt automatische Einträge für Windows, EFI Shell und dem Standart Loader an, wenn sie auf {{ic|1}} (Standard) gesetzt sind, {{ic|0}} zum Ausblenden.
* {{ic|auto-entries}} - Zeigt automatische Einträge für Windows, EFI Shell und den Standard-Loader an, wenn sie auf {{ic|1}} (Standard) gesetzt sind, {{ic|0}} zum Ausblenden.
* {{ic|auto-firmware}}- Zeigt den Eintrag für den Neustart in die UEFI-Firmwareeinstellungen an, wenn er auf {{ic|1}} (Standard) gesetzt ist, {{ic|0}} zum Ausblenden;
* {{ic|auto-firmware}}- Zeigt den Eintrag für den Neustart in die UEFI-Firmwareeinstellungen an, wenn er auf {{ic|1}} (Standard) gesetzt ist, {{ic|0}} zum Ausblenden;




Die Datei könnte zum Beispiel so aussehen:
Die Datei könnte zum Beispiel so aussehen:
   default  arch-uefi
   default  arch-uefi.conf
   timeout  4
   timeout  4
   console-mode max
   console-mode max
Zeile 75: Zeile 77:


Daneben können optional noch angegeben werden:
Daneben können optional noch angegeben werden:
* {{ic|options}} Kommandozeilenparameter, die an das EFI-Programm weitergegeben werden. Hier sollten die root-Partition, sowie die swap-Partition (Eintrag ''resume'') für hilbernate angegeben werden.
* {{ic|options}} Kommandozeilenparameter, die an das EFI-Programm weitergegeben werden. Hier sollten die root-Partition sowie die swap-Partition (Eintrag ''resume'') für hibernate angegeben werden. Außerdem muss für Btrfs File-Systeme das Subvolume (Eintrag ''subvol="subvolume"'') angegeben werden.
* {{ic|version}} Kernelversion – wird nur bei gleichen Namen angezeigt
* {{ic|version}} Kernelversion – wird nur bei gleichen Namen angezeigt


Zeile 82: Zeile 84:
  linux    /vmlinuz-linux
  linux    /vmlinuz-linux
  initrd  /initramfs-linux.img
  initrd  /initramfs-linux.img
  options  root=/dev/sda2 rw resume=/dev/sda4
  options  root=LABEL=p_arch rw resume=LABEL=p_swap


Statt den Partitionsnamen kann man auch die UUIDs angeben.
Statt dem LABEL=LABEL kann man auch die UUIDs oder Partitionsnamen angeben.  


[[Kategorie:Bootloader]]
[[Kategorie:Bootloader]]

Aktuelle Version vom 9. Oktober 2021, 09:11 Uhr

Systemd-boot (ehemals Gummiboot) ist ein schlanker EFISTUB-Bootloader, der einfach zu konfigurieren ist. Er wendet das EFISTUB-Verfahren an, bei dem der Linux-Kernel als ausführbare Datei (Executable) von der EFI-Firmware des Rechners geladen wird. Dies sorgt für einen schnelleren Bootvorgang, auf mancher Hardware treten dabei allerdings Probleme auf. In diesem Fall sollte man einen anderen Bootloader wie GRUB verwenden.

Hinweis: In dem Artikel wird nachfolgend $esp für den Pfad der EFI-Partition verwendet und muss dann entsprechend ersetzt werden. Es empfielt sich, die EFI-Partition nach /boot zu mounten.

Installation - Vorbereitung

Hinweis: Es ist sinnvoll, die EFI-Partition nach /boot zu mounten.

Zuerst installiert man die benötigten EFI Werkzeuge:

pacman -S efibootmgr dosfstools gptfdisk

Der Bootloader an sich sollte bereits installiert sein, da er in Systemd vorhanden ist.

Installation

Zuerst den EFI-Booteintrag installieren und einrichten:

# bootctl install
Hinweis: Im folgenden ist INHALT_ROOT zu ersetzen durch:

* LABEL=NAME-DER-ROOT-PARTITION zB. LABEL=p_arch
oder
* /dev/BEZEICHNUNG-DER-ROOT-PARTITION /dev/sda1
oder 
* UUID=UUID-DER-ROOT-PARTITION

und INHALT_SWAP zu ersetzen durch:

* LABEL=NAME-DER-SWAP-PARTITION zB. LABEL=p_swap
oder
* /dev/BEZEICHNUNG-DER-SWAP-PARTIOTION zB. /dev/sda2
oder
* UUID=UUID-DER-SWAP-PARTITION

Anschließend die Datei /boot/loader/entries/arch-uefi.conf mit folgendem Inhalt erstellen:

title    Arch Linux
linux    /vmlinuz-linux
initrd   /initramfs-linux.img
options  root=INHALT_ROOT rw resume=INHALT_SWAP

Das Gleiche noch für Arch Linux fallback die Datei /boot/loader/entries/arch-uefi-fallback.conf mit folgendem Inhalt erstellen:

title    Arch Linux Fallback
linux    /vmlinuz-linux
initrd   /initramfs-linux-fallback.img
options  root=INHALT_ROOT rw resume=INHALT_SWAP

Nun die Datei /boot/loader/loader.conf bearbeiten:

default   arch-uefi.conf
timeout   1

Das timeout (in Sekunden) kann natürlich frei gewählt werden.

Update

Falls man etwas an der Konfiguration geändert hat, muss folgendes ausgeführt werden:

bootctl update

Falls vorher der path Parameter nicht spezifiziert wurde, werden nacheinander /efi, /boot und /boot/efi überprüft.

Hat man die EFI-Partition nicht nach diesen Orten eingehängt, kann man den path Parameter wie folgt setzen:

bootctl --path=$esp update

Konfiguration

Die Konfiguration erfolgt über die Datei $esp/loader/loader.conf. Existiert sie nicht, muss man sie neu anlegen.

  • default - der Standardeintrag, von dem automatisch gebootet wird. Der Name richtet sich nach der zugehörigen Datei (siehe unten) ohne die Endung .conf.
  • timeout - die Zeitspanne, nach der der Standardeintrag automatisch gebootet wird. Beträgt es 0 oder existiert kein entsprechender Eintrag, wird automatisch ohne Nachfrage gebootet. In diesem Fall kommt man nur durch Drücken der Leertaste zum Auswahlmenü.
  • console-mode – ändert den UEFI-Konsolenmodus: 0 für 80x25, 1 für 80x50, 2 und höher für keine Standard Optionen unterstützt durch der UEFI-Firmware, auto wählt automatisch einen geeigneten Modus aus, max für den höchsten verfügbaren Modus, keep (standart) für den Firmware-Modus.
  • editor - ob der Kernelparameter-Editor aktiviert werden soll oder nicht. yes ist Standard und der Editor ist aktiviert. no heißt deaktiviert und wird empfohlen, da durch das Hinzufügen von init=/bin/bash das root-Passwort umgangen werden kann.
  • auto-entries - Zeigt automatische Einträge für Windows, EFI Shell und den Standard-Loader an, wenn sie auf 1 (Standard) gesetzt sind, 0 zum Ausblenden.
  • auto-firmware- Zeigt den Eintrag für den Neustart in die UEFI-Firmwareeinstellungen an, wenn er auf 1 (Standard) gesetzt ist, 0 zum Ausblenden;


Die Datei könnte zum Beispiel so aussehen:

  default  arch-uefi.conf
  timeout  4
  console-mode max
  editor   no

Booteinträge hinzufügen

Damit gebootet werden kann, muss ein entsprechender Eintrag erstellt werden. Dazu legt man eine Datei mit der Endung .conf in $esp/loader/entries/ an. Folgende Angaben müssen enthalten sein:

  • title Der Name des Eintrags im Auswahlmenü
  • efi oder linux Die EFI-Datei, die ausgeführt werden soll (Pfadangabe relativ zur EFI-Partition). Standardmäßig sollte das bei Arch Linux /vmlinuz-linux sein.

Daneben können optional noch angegeben werden:

  • options Kommandozeilenparameter, die an das EFI-Programm weitergegeben werden. Hier sollten die root-Partition sowie die swap-Partition (Eintrag resume) für hibernate angegeben werden. Außerdem muss für Btrfs File-Systeme das Subvolume (Eintrag subvol="subvolume") angegeben werden.
  • version Kernelversion – wird nur bei gleichen Namen angezeigt

Ein Eintrag für Arch Linux könnte zum Beispiel so aussehen:

title    Arch Linux
linux    /vmlinuz-linux
initrd   /initramfs-linux.img
options  root=LABEL=p_arch rw resume=LABEL=p_swap

Statt dem LABEL=LABEL kann man auch die UUIDs oder Partitionsnamen angeben.