Bootloader systemd-boot

Smalltalk
Antworten
KP97
Beiträge: 3442
Registriert: 01.02.2013 15:07:36

Bootloader systemd-boot

Beitrag von KP97 » 01.01.2024 09:40:39

Dieser Beitrag soll eine Alternative zum Grub aufzeigen.
Der Bootloader ist nur für EFI-Systeme gedacht, ohne Schnickschnack und tut, was er soll. Wer bunten Hintergrund bevorzugt, ist mit Grub besser bedient.
Um das mal zu testen, muß Grub nicht entfernt werden, systemd-boot läuft auch parallel.
Für meinen USB-Stick habe ich einen anderen Kernel installiert, da der besser mit dem Stick läuft und keine Warnungen ins Log schreibt.
Die Beschreibung ist natürlich auf meine Hardware abgestimmt und muß an die eigenen Vorgaben angepaßt werden.

So, hier geht es los:

Meine Hardware

/dev/sda1 EFI
/dev/sda2 Arbeitssystem
/dev/sda3 Testsystem

USB-Stick mit Debian Stable als Rettungs- und Backupsystem


1. Die efi-Partition muß nach /boot/efi gemounted sein (fstab).
2. Die Pakete systemd-boot und systemd-boot-efi müssen installiert sein.

bootctl update = nach jeder Änderung
bootctl status = Abfrage
bootctl remove = Bootloader entfernen


Befehl ausführen: bootctl install

Mit diesem Befehl wird der Bootloader initialisiert.
Es wird automatisch in /boot/efi ein Ordner mit der Maschinen-Nr. erstellt. Diese Maschinen-Nr. ist der Ordnungsbegriff für systemd-boot.
Damit werden auch weitere Partitions auf der HDD identifiziert. Die ID steht in /etc/machine-id.

In /boot/efi befindet sich nun der Ordner mit dem Namen der Maschinen-Nr., darin ein Verzeichnis mit dem installierten Kernel.
Im Verzeichnis 6.1.69 ist der Kernel und die initrd für die HDD.

Im Verzeichnis 5.10.200 ist der Kernel und die initrd für den USB-Stick, manuell erstellt und vom Stick dorthin kopiert,
vergleichbar mit einem chainloading. Wer externe USB-Geräte lieber über das Bootmenü (z.B. F11) startet, braucht diesen Eintrag nicht.

In /boot/efi/EFI werden von systemd ein eigener "Kernel" eingefügt, weiter die Unit für den Systemstart und ein Eintrag für den efibootmgr.

In /boot/efi/loader sind Programme und der Ordner "loader" mit dem Inhalt einer Datei "loader.conf" und ein Ordner "entries".
In entries werden die einzelnen Starteinträge eingestellt, die loader.conf enthält die Defaulteinstellungen.

Eventuelle zusätzliche Kernel werden ebenfalls automatisch in den Ordner "Maschinen-Nr" installiert.
Es wird auch in loader/entries ein passender Starteintrag erstellt namens xxx.conf (xxx=machine-id). Jeder Kernel muß einen separaten Starteintrag haben.
Beim Deinstallieren eines Kernels über den Paketmanager werden die Einträge automatisch wieder entfernt.
Die durch die zusätzliche Installation in /boot befindlichen vmlinuz-xxx Dateien können entfernt werden, im Verzeichnis /boot befindet sich dann nur noch /efi.

Das Testsystem auf /dev/sda3 braucht keinen installierten Kernel mehr. Hier wird auf den bereits vorhandenen Eintrag in /dev/sda2 zugegriffen
und das System darüber gestartet. Weitere Infos zum System stehen ja in den loader/entries.
Lediglich der Ordner modules aus /lib/modules muß in das Zielsystem kopiert werden.

Für den Start eines OS auf einem externen Medium (USB-Stick) reicht es, wenn in den Ordner "Maschinen-ID" der Kernel und die initrd
des jeweiligen Systems kopiert werden. Der Kernel selbst wurde ja auf dem Stick installiert und hat bereits die weiteren configs, s.o. Eintrag.


Einträge in der loader.conf:

timeout 3
console-mode 1 für größere Schrift
auto-firmware 0 oder 1 damit wird der Firmwareeintrag im Menü ausgeblendet
Wenn ausgeblendet, kann UEFI entweder über das Bootmenü F11 oder mit
systemctl reboot --firmware-setup aufgerufen werden.

editor 0 oder 1 den Menüeintrag mit e editieren, 1 ist Default

Defaultstart Menüeintrag selektieren mit d

Nicht vergessen: nach jeder Änderung bootctl update ausführen!
Unbedingt auch die manpage zu systemd-boot lesen, dort sind viele weitere Infos.


Hier noch ein Muster meiner Einstellungen:

1. /boot/efi/loader/loader.conf
timeout 3
console-mode 1
default b3aa19e2b70c4182a1409ae2859be9ff-*
auto-firmware 0

2. /boot/efi/b3aa19e2b70c4182a1409ae2859be9ff/6.1.69
Mein Kernel ist ein 6.1.69 nebst initrd, dieser befindet sich im gleichnamigen Ordner.
Ein weiterer Ordner /boot/efi/b3aa19e2b70c4182a1409ae2859be9ff/5.10.200 beinhaltet Kernel und initrd für den USB-Stick.

3.a /boot/efi/loader/entries
title MB
version 6.1.69
machine-id b3aa19e2b70c4182a1409ae2859be9ff
options root=LABEL=MB ro quiet loglevel=2 mce=0 mitigations=off fsck.mode=skip systemd.machine_id=b3aa19e2b70c4182a1409ae2859be9ff
linux /b3aa19e2b70c4182a1409ae2859be9ff/6.1.69/linux
initrd /b3aa19e2b70c4182a1409ae2859be9ff/6.1.69/initrd.img-6.1.69

In 3.a habe ich einen eigenen Titel erstellt, um einen eigenen Namen vorzugeben statt des Defaulteintrags.
Die Defaultdatei kann dann entfernt werden, damit beim Start kein doppelter Eintrag vorhanden ist.

3.b
title BackupStick
linux /b3aa19e2b70c4182a1409ae2859be9ff/5.10.200/vmlinuz-5.10.200
initrd /b3aa19e2b70c4182a1409ae2859be9ff/5.10.200/initrd.img-5.10.200
options root=UUID=fbb01a03-6e85-4c02-ae36-10e5f7f2f299 ro quiet loglevel=2 mce=0 fsck.mode=skip

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 01.01.2024 10:06:49

Heya, das macht mich jetzt auch neugierig! Vielleicht werke ich mal rum die nächsten Tage, danke!

KP97
Beiträge: 3442
Registriert: 01.02.2013 15:07:36

Re: Bootloader systemd-boot

Beitrag von KP97 » 01.01.2024 16:09:58

Da fällt mir grad noch was ein:
Die durch die zusätzliche Installation in /boot befindlichen vmlinuz-xxx Dateien können entfernt werden, im Verzeichnis /boot befindet sich dann nur noch /efi.
Wer nur mal testen will, parallel zum Grub, muß die Dateien natürlich stehen lassen, Grub sucht ja in dem Verzeichnis, während systemd-boot seine eigenen Pfade hat.

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 01.01.2024 17:22:14

Ich bin jetzt so ein bisschen am Lesen und Schauen... Was ist für dich der große Vorteil von systemd-boot gegenüber grub?

isabena
Beiträge: 263
Registriert: 26.04.2022 11:03:51

Re: Bootloader systemd-boot

Beitrag von isabena » 01.01.2024 20:29:47

der systemd-bootloader erscheint im efibootmgr als Linux Boot Manager

und sieht bei mir im Grubmenü so aus:

4574

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 04.01.2024 16:14:18

Ich möchte hier nochmal kurz ein positives Feedback geben:

Ich habe mittlerweile auf Debiansystemd-boot umgestellt und mich von Grub verabschiedet. Habe hier einen Single-Boot-Rechner mit den Standardkerneln ohne irgendwelche Sperenzchen.

Wie oben beschrieben geht das in meinem Fall auf die allereinfachste Art und Weise, im Wesentlichen

Code: Alles auswählen

apt install systemd-boot
bootctl install
Mehr ist es tatsächlich nicht. Nachdem man kontrolliert hat, ob alles funktioniert kann man, wenn man will noch ein beherztes

Code: Alles auswählen

apt purge grub-common
nachschieben und in /boot/efi aufräumen.

Spitze. Danke für die Anleitung.

isabena
Beiträge: 263
Registriert: 26.04.2022 11:03:51

Re: Bootloader systemd-boot

Beitrag von isabena » 05.01.2024 08:16:27

dasebastian hat geschrieben: ↑ zum Beitrag ↑
04.01.2024 16:14:18
Mehr ist es tatsächlich nicht. Nachdem man kontrolliert hat, ob alles funktioniert kann man, wenn man will noch ein beherztes

Code: Alles auswählen

apt purge grub-common
nachschieben und in /boot/efi aufräumen.
zur Anpassung an die eigenen Wünsche, zB das Bootmenü sichtbar machen, eine Kernelauswahl zu haben, usw
ist noch der loader zu konfigurieren.
Wenn der grub verbleibt, besteht über das BIOS die Möglichkeit, weiterhin damit zu booten......

KP97
Beiträge: 3442
Registriert: 01.02.2013 15:07:36

Re: Bootloader systemd-boot

Beitrag von KP97 » 08.02.2024 20:01:47

Noch ein wichtiger Nachtrag:
Es sollte unbedingt ein komplettes Backup von der EFI-Partition sda1 angefertigt werden.
Wenn aus irgendeinem Grund die EFI-Partition beschädigt wird, kann der Bootloader nicht starten, da er ja existentiell von EFI abhängt.

Benutzeravatar
cosinus
Beiträge: 3441
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Bootloader systemd-boot

Beitrag von cosinus » 08.02.2024 20:18:21

KP97 hat geschrieben: ↑ zum Beitrag ↑
08.02.2024 20:01:47
Wenn aus irgendeinem Grund die EFI-Partition beschädigt wird, kann der Bootloader nicht starten, da er ja existentiell von EFI abhängt.
Dann muss man aber auch alles sichern und nicht nicht nur den Inhalt der ESP. :wink:

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 09.02.2024 08:22:26

cosinus hat geschrieben: ↑ zum Beitrag ↑
08.02.2024 20:18:21
Dann muss man aber auch alles sichern und nicht nicht nur den Inhalt der ESP. :wink:
Zum besseren Verständnis, du meinst, ein (rekursives) Backup von /boot reicht nicht?? Weshalb nicht, da liegt doch alles drin? Was meinst du mit "alles"?

Benutzeravatar
cosinus
Beiträge: 3441
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Bootloader systemd-boot

Beitrag von cosinus » 09.02.2024 08:52:28

dasebastian hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 08:22:26
Zum besseren Verständnis, du meinst, ein (rekursives) Backup von /boot reicht nicht?? Weshalb nicht, da liegt doch alles drin? Was meinst du mit "alles"?
Ich meine, wenn schon Backup, dann richtig und alles :)
Im Zweifel nützt mir bei einem SSD-Ausfall nur das Verzeichnis /boot/efi ja nix :mrgreen:

niemand
Beiträge: 504
Registriert: 22.12.2023 16:35:53
Kontaktdaten:

Re: Bootloader systemd-boot

Beitrag von niemand » 09.02.2024 09:39:01

Vielleicht sollte die konkrete Ausgangssituation hier im Thread berücksichtigt werden: das Backup der EFI-Partition hier soll mögliche Fehler bei der konkret stattfindenden Konfiguration des Bootvorgangs abfangen – da ist’s vielleicht nicht übermäßig sinnvoll, bei jeder Änderung vor dem Reboot erstmal ein Vollbackup zu fahren.

Da ja sowieso jeder ein tägliches Backup seiner Daten sowie einen Plan zur schnellen Wiederherstellung des Systems in der Schublade liegen hat, würde ein Vollbackup vor dem Reboot hier auch kaum Vorteile bringen, im Gegenteil: wenn man dann das Backup der EFI-Partition benötigt, müsste man das, je nach Backupschema, erstmal mühsam aus dem Komplettbackup rauspopeln. Von ’nem Livesystem aus, denn das eigentliche System bootet ja nicht.

On-Topic:
KP97 hat geschrieben: ↑ zum Beitrag ↑
01.01.2024 09:40:39
Dieser Beitrag soll eine Alternative zum Grub aufzeigen.
Der Bootloader ist nur für EFI-Systeme gedacht, ohne Schnickschnack und tut, was er soll.
Ich find’s gut, dass du hier drauf aufmerksam machst.

Debiansystemd-boot kann ich nur empfehlen, nutze ich seit einigen Jahren ausschließlich. Damit lässt sich auch gut ein verschlüsseltes System einrichten – leider kann’s nicht mit verschlüsseltem /boot umgehen; wenn man das haben möchte, ist man derzeit noch auf Debiangrub2 angewiesen.
„I fought in the Vim-Emacs-War.“ Quelle

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 09.02.2024 11:10:16

cosinus hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 08:52:28
... wenn schon Backup, dann richtig und alles ... Im Zweifel nützt mir bei einem SSD-Ausfall nur das Verzeichnis /boot/efi ja nix ...
Ach ja, ok.
niemand hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 09:39:01
Vielleicht sollte die konkrete Ausgangssituation hier im Thread berücksichtigt werden...
Danke für den ausführlichen Kommentar niemand.

Ich kann das nur unterschreiben, bin mit Debiansystemd-boot auch sehr zufrieden, irgendwie mehr straight-out-your-way.

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 09.02.2024 14:42:40

Ist mir gerade aufgefallen, in / habe ich noch Links zu den Kerneln stehen (die nach dem Aufräumen in /boot jetzt woanders liegen, die Links sind also defacto tot):

Code: Alles auswählen

# pwd
/
# ll (gekürzte Ausgabe)
lrwxrwxrwx   1 root root   30 2024-02-09 14:34 initrd.img -> boot/initrd.img-6.1.0-17-amd64
lrwxrwxrwx   1 root root   30 2024-02-09 14:34 initrd.img.old -> boot/initrd.img-6.1.0-15-amd64
lrwxrwxrwx   1 root root   27 2024-02-09 14:34 vmlinuz -> boot/vmlinuz-6.1.0-17-amd64
lrwxrwxrwx   1 root root   27 2024-02-09 14:34 vmlinuz.old -> boot/vmlinuz-6.1.0-15-amd64
# 
Die können eigentlich auch weg, weil die Kernel befinden sich jetzt ja in /boot/efi/MASCHINENNUMMER/ oder sehe ich das falsch? Bzw. braucht diese - jetzt - toten Links noch irgendein anderes Programm?

Ich stelle diese Frage nochmal in diesem Thread, gehört ja zum Thema Umstellung auf Systemd-boot.

PS: Ja, 6.1.0-15, ich weiß, warte aber einfach den Update-Automatismus ab, wird ja nicht mehr gebootet.

EDIT: Habe gerade gesehen, dass die automatisch angelegt werden von linux-update-symlinks. Also entweder ich editiere die /etc/kernel-img.conf auf "do_symlinks = no" oder die würden eh wieder angelegt werden. Ich lasse es jetzt einfach mal so stehen.

KP97
Beiträge: 3442
Registriert: 01.02.2013 15:07:36

Re: Bootloader systemd-boot

Beitrag von KP97 » 09.02.2024 16:13:15

dasebastian hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 14:42:40
Also entweder ich editiere die /etc/kernel-img.conf auf "do_symlinks = no".....
Ich habe in dieser Datei alles auf "no", da ich diese Links auch früher schon nicht gewollt habe.
Zum booten werden die nicht benötigt, die toten Links kannst Du also entfernen.

@cosinus
Wenn ich ein Backup der EFI-Partition sda1 erwähne, meine ich immer ein komplettes Backup. Die Größe der Partition ist verschwindend, was sollte da also anderes in Frage kommen.
Und dass jeder ein komplettes Backup seiner Daten bzw. seiner Partitions hat, setze ich einfach mal voraus. Falls nicht, sind die Daten dann auch unwichtig... wie man so schön sagt.
Aber @niemand hat das schon sehr gut geschildert.

dasebastian
Beiträge: 1886
Registriert: 12.07.2020 11:21:17

Re: Bootloader systemd-boot

Beitrag von dasebastian » 09.02.2024 16:25:18

KP97 hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 16:13:15
Ich habe in dieser Datei alles auf "no", da ich diese Links auch früher schon nicht gewollt habe.
Zum booten werden die nicht benötigt, die toten Links kannst Du also entfernen.
Danke. Ich hab die Links jetzt doch gelöscht.

Benutzeravatar
cosinus
Beiträge: 3441
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Bootloader systemd-boot

Beitrag von cosinus » 09.02.2024 20:11:40

KP97 hat geschrieben: ↑ zum Beitrag ↑
09.02.2024 16:13:15
Und dass jeder ein komplettes Backup seiner Daten bzw. seiner Partitions hat, setze ich einfach mal voraus.
Ja, du setzt das voraus, mir ist das auch klar, aber viele Laien/Anfänger wissen das nunmal nicht. Für den geübten Linux-User ist es auch selbstverständlich, dass man entsprechende Dateien/Bereiche der internen Disk sichert, bevor man den Bootloader GRUB durch Gummiboot austauscht :wink:

Antworten