Du bist nicht angemeldet.

#1 18.11.2019 15:09:32

fablab
Mitglied

UEFI - von systemd-boot zu Grub .

20. November 2019
Threadtitel geändert, von efistub zu systemd-boot
Ich hatte gar kein efistub boot, kein, sondern ein systemd-boot.



Hallo Forum,

ich möchte von Efistub auf Grub umstellen.
Grub ist installiert.
Bei mir wird das Grub Menü nicht angezeigt.


efibootmgr --verbose
BootCurrent: 0001
BootOrder: 0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive        PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell    MemoryMapped(11,0x2100000,0x28fffff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)

Wo setze ich an um Grub angezeigt zu bekommen?

Das habe ich versucht:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub
x86_64-efi wird für Ihre Plattform installiert.
installation beendet. Keine Fehler aufgetreten.
[root@arch ~]# grub-mkconfig -o /boot/grub/grub.cfgGenerating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
[root@arch ~]# efibootmgr --verbose
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive        PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell    MemoryMapped(11,0x2100000,0x28fffff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0003* Arch-Linux-grub       HD(1,GPT,ecefe053-7b28-4c47-80cb-fe0358dd08df,0x800,0x7d000)/File(\EFI\Arch-Linux-grub\grubx64.efi)
[root@arch ~]# 

Das Bootmenü wird mir trotzdem nicht angezeigt, Archlinux ist als Guest in Virtualbox installiert.

Gibt es eine Lösung?


MfG

fablab

Beitrag geändert von fablab (22.11.2019 12:25:24)

Offline

#2 18.11.2019 15:18:34

Selber lesen
Gast

Re: UEFI - von systemd-boot zu Grub .

#3 18.11.2019 15:39:03

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Oh, ich war bei der Anleitung für Einsteiger.

[root@arch ~]# grub-install /dev/sda
x86_64-efi wird für Ihre Plattform installiert.
grub-install: Fehler: EFI-Verzeichnis kann nicht gefunden werden.
[root@arch ~]# 
grub-install --target=i386-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

Wie kann ich mir den debug in einer txt Datei darstellen?

Welche Informationen werden für die Hilfe noch benötigt?

Beitrag geändert von fablab (19.11.2019 11:13:28)

Offline

#4 18.11.2019 17:39:38

skull-y
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Einfach die Ausgabe in eine Textdatei umleiten.

Offline

#5 18.11.2019 18:18:34

Greg
Mitglied

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

...grub-install: Fehler: EFI-Verzeichnis kann nicht gefunden werden.
grub-install --target=i386-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

Wo ist denn dein EFI Verzeichnis?
Warum --target=i386-efi ?
Lies dir das Kapitel https://wiki.archlinux.de/title/UEFI_Installation   durch.

Offline

#6 18.11.2019 19:43:14

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Super, danke für die Hinweise.

[root@arch ~]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub
x86_64-efi wird für Ihre Plattform installiert.
installation beendet. Keine Fehler aufgetreten.
[root@arch ~]# mkdir -p /boot/grub/locale
[root@arch ~]# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
[root@arch ~]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done                                                                                                                                                
[root@arch ~]#

Trotzdem bekomme ich den Grub nicht zu sehen, was mache ich evtl. noch falsch?

Beitrag geändert von fablab (18.11.2019 19:50:53)

Offline

#7 18.11.2019 20:33:53

Greg
Mitglied

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

..Trotzdem bekomme ich den Grub nicht zu sehen, was mache ich evtl. noch falsch?

Mach mal ein efibbotmgr
Dann poste mal den Inhalt von /boot
und den Inhalt von /boot/EFI

So nebenbei, ich bekomme grub in qemu auch nicht zu sehen. Merkwürdigerweise wird in qemu das nicht übernommen. Aber systemd-boot funktioniert immer. Von daher wüßte ich  nicht warum ich bei Uefi überhaupt einen grub benutzen sollte.
EFISTUB ist natürlich nochmal was schneller. Der funktioniert in qemu auch.

Beitrag geändert von Greg (18.11.2019 20:38:27)

Offline

#8 18.11.2019 22:15:49

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Wie kommst Du dann auf die weitere Kernelauswahl oder den Notmodus?

"efibootmgr --verbose" siehe erstes Posting, an weitere Daten komme ich zur Zeit nicht.

Grub bietet mehr Möglichkeiten zur Konfiguration, Multiboot, Isoboot fällt mir dazu ein.

Man kann Grub und UEFI-Boot zusammen auf einem System nutzen, das weiß ich von einem Notebook.

Kenn es evtl. am UEFI Bios von Virtualbox liegen?

Soweit ich weiß, baut Virtualbox auf Qemu-KVM auf.

Beitrag geändert von fablab (18.11.2019 22:22:56)

Offline

#9 19.11.2019 09:18:14

Baldr-nologin
Gast

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:
[root@arch ~]# efibootmgr --verbose
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive        PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell    MemoryMapped(11,0x2100000,0x28fffff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0003* Arch-Linux-grub       HD(1,GPT,ecefe053-7b28-4c47-80cb-fe0358dd08df,0x800,0x7d000)/File(\EFI\Arch-Linux-grub\grubx64.efi)
[root@arch ~]# 

Die BootOrder auf 0003 einstellen?

#10 19.11.2019 09:19:48

Baldr-nologin
Gast

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

Kenn es evtl. am UEFI Bios von Virtualbox liegen?

Nein. Grub funktioniert auch in Virtualbox.

#11 19.11.2019 09:39:45

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Hi, danke, es funktioniert stimmt, meine Lösung bzw. mein Fehler:

https://wiki.archlinux.de/title/GRUB

Booten per UEFI: GRUB ins UEFI eintragen.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub

Grub hatte ich nicht ins UEFI eingetragen.

[root@arch ~]# efibootmgr --verbose
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive        PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell    MemoryMapped(11,0x2100000,0x28fffff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0003* Arch-Linux-grub       HD(1,GPT,ecefe053-7b28-4c47-80cb-fe0358dd08df,0x800,0x7d000)/File(\EFI\Arch-Linux-grub\grubx64.efi)
[root@arch ~]# 

Leider geht der Eintrag nach weiterem Booten verloren.

Meine Version:
Package: virtualbox-6.0
Version: 6.0.14-133895~Ubuntu~bionic

[root@arch ~]# blkid
/dev/sda1: LABEL_FATBOOT="EFI" LABEL="EFI" UUID="8680-6E66" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="ecefe053-7b28-4c47-80cb-fe0358dd08df"
/dev/sda2: LABEL="ROOT" UUID="77bf17f0-4f69-4c85-ae7e-8d040192e9ab" UUID_SUB="5ce6695e-9ab5-4eff-a7d1-7127d5645579" TYPE="btrfs" PARTLABEL="Linux filesystem" PARTUUID="f8478830-ca27-462a-84c2-8f50762c0756"
/dev/sda3: LABEL="SWAP" UUID="57ec4edd-124a-4c14-a787-4956d9863b7b" TYPE="swap" PARTLABEL="Linux swap" PARTUUID="e681da02-3d8b-4f32-89e5-505a8d9e41d1"
[root@arch ~]# 
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: DD00CF4E-B262-4E82-89AA-95513E01586A

Gerät        Anfang      Ende Sektoren Größe Typ
/dev/sda1      2048    514047   512000  250M EFI-System
/dev/sda2    514048  92788735 92274688   44G Linux-Dateisystem
/dev/sda3  92788736 125829086 33040351 15,8G Linux Swap

/dev/sda2 enthält ein btrfs Filesystem.


Grub wird bei einem Reboot von dem Guest Arch nach dem Eintrag immer angezeigt,
Fahre ich die Arch VM kompett runter und starte neu, startet das System wieder ohne Grub.
Der "Boot0003* Arch-Linux-grub" UEFI Eintrag fehlt wieder.

https://www.virtualbox.org/manual/ch03.html#efi

Note that the Oracle VM VirtualBox EFI support is experimental and will be enhanced as EFI matures and becomes more widespread. Mac OS X, Linux, and newer Windows guests are known to work fine. Windows 7 guests are unable to boot with the Oracle VM VirtualBox EFI implementation.


Info:

https://forums.virtualbox.org/viewtopic … 15&t=95300

EFI: Switch to newer firmware code base and add NVRAM support, should improve compatibility with OSes significantly


@Baldr
Bei dir funktioniert es zuverlässig, wenn ja, mit welcher Software, Releaseständen?



MfG

fablab

Beitrag geändert von fablab (19.11.2019 12:19:10)

Offline

#12 19.11.2019 12:54:44

Baldr-nologin
Gast

Re: UEFI - von systemd-boot zu Grub .

Tschuldige ... eine Sache hatte ich noch vergessen.

Siehe mal hier:
https://wiki.archlinux.org/index.php/Vi … n_EFI_mode
und hier:
https://forums.virtualbox.org/viewtopic.php?t=61970

Mit startup.nsh kannst du die Einstellung das Grub automatisch gestartet wird persistent machen.

#13 19.11.2019 13:31:32

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

https://wiki.archlinux.org/index.php/EF … nsh_script

startup.nsh

vmlinuz-linux rw root=/dev/sdX [rootfs=myfs] [rootflags=myrootflags] [kernel.flag=foo] [mymodule.flag=bar] [initrd=\intel-code.img] initrd=\initramfs-linux.img

Danke, die Sache war, ist ja nicht ganz unerheblich, aber wie setze ich das um?
Wie finde ich /dev/sdX ?

Gehört das Script in den Guest oder in den Host?

Ist das ein Bug oder so gewollt von Archlinux bzw. Virtualbox?

@Greg
Behebt das dein qemu-kvm Problem auch?

Beitrag geändert von fablab (19.11.2019 13:45:35)

Offline

#14 19.11.2019 14:16:16

Baldr-noligin
Gast

Re: UEFI - von systemd-boot zu Grub .

Das Skript gehört in Guest auf die EFI-Partition.

Du trägst hier nicht die Kernel ein, sondern nur den Pfad zur grubx64.efi-Datei. Wichtig hierbei Backslash im Pfad zu verwenden. Dann sollte das EFI-BIOS von VirtualBox die Datei beim Einschalten ausführen und Grub starten. Alles andere wird dann in Grub selbst konfiguriert (grub.cfg).

Schau dir mal den Eintrag von Perryg vom 31.05.2014 in dem von mir verlinkten Forum-Thread an. Da findest du ein Beispiel.

#15 19.11.2019 14:34:37

Greg
Mitglied

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

Wie kommst Du dann auf die weitere Kernelauswahl oder den Notmodus?

Per systemd-boot gibt es eine zu konfigurierende Datei /boot/loader/loader.conf
Dort in der Einstellung timeout3 den Kommentator vorne entfernen.
Zeile hinzufügen mit default uefi_arch.
Eine weitere Datei editieren:
/nano /boot/loader/entries/uefi_arch.conf
Mit den Eintragungen
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=LABEL=p_arch rw

Eine weitere Datei editieren:
/nano /boot/loader/entries/uefi_arch_fallback.conf
Mit den Eintragungen
title Arch Linux fallback
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options root=LABEL=p_arch rw

So hat man mit systemd-boot 2 Bootmöglichkeiten innerhalb von 3 Sekunden auszuwählen.

Das Gleiche kann man auch mit efistub machen:
efibootmgr -c -d /dev/sda -p 1 -l \vmlinuz-linux -L "Arch Linux efistub" -u "initrd=/initramfs-linux.img root=LABEL=p_arch rw"
efibootmgr -c -d /dev/sda -p 1 -l \vmlinuz-linux -L "Arch Linux fallback efistub" -u "initrd=/initramfs-linux-fallback.img root=LABEL=p_arch rw"

Wobei die Auswahl dann aber mit dem Uefi des PCs ausgewählt werden muß.
Mit efibootmgr kann man die Bootreihenfolge nachträglich verändern, löschen, was auch immer.

Was virtualbox und qemu-KVM gemeinsam haben, weiß ich nicht.

Nachtrag:
Habe eben mal mit virtualbox Arch installiert.
systemd-boot funktioniert. grub ist nach dem Reboot nicht drin.
Ich verfolge das nicht weiter, da ich systemd-boot und efistub vorziehe.
Wer konfortabel einen Bootloader benutzen will, dem könnte ich noch refind empfehlen.
Gruß aus DN (nicht DK)
Greg

Beitrag geändert von Greg (19.11.2019 15:09:40)

Offline

#16 19.11.2019 20:26:00

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Ubuntulösung Dez. 2014: https://uberubuntu.info/questions/2082/ … tive-shell

Hallo Forum,

mit den Eintrag "Eintrag von Perryg vom 31.05.2014" https://forums.virtualbox.org/viewtopic.php?t=61970 , kann ich nichts anfangen, das sagt mir nichts.
Ich kanne nicht umsetzen.


Jetzt habe ich im Arch Guest getan:

nano /boot/efi/startup.nsh 
cat /boot/efi/startup.nsh 
vmlinuz-linux rw root=/dev/sda1 [rootfs=myfs] [rootflags=myrootflags] \
 [kernel.flag=foo] [mymodule.flag=bar] \
 [initrd=\intel-ucode.img] initrd=\initramfs-linux.img
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub

So sieht boot bei mir aus:

https://nopaste.linux-dev.org/?1277111

Partitionen:

Gerät           Typ
/dev/sda1     EFI-System
/dev/sda2     Linux-Dateisystem, btrfs
/dev/sda3     Swap

Das Problem besteht weiterhin, was fehlt, was habe ich falsch gemacht?

Fehlen noch Informationen von meinem System?



MfG

fablab

Beitrag geändert von fablab (20.11.2019 08:26:38)

Offline

#17 20.11.2019 09:21:19

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Mittwoch, 20. Nov. 2019

Mein neues startup.nsh  Script:
cat /boot/efi/startup.nsh

Shell> fs0:
edit startup.nsh
\EFI\Arch-Linux-grub\grubx64.efi
ctrl-s <cr>
<enter>
ctrl-q <cr>
reset

Ausführbar gemacht mit:

chmod +x /boot/efi/startup.nsh

Warum hast das Script die Endung "nsh"?
Wie wird das Script ausgeführt?


Info, der Eintrag Boot0003 wird vergessen, wenn das System ausgeschaltet wird, ein reboot funktioniert:

efibootmgr --verbose
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive        PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell    MemoryMapped(11,0x2100000,0x28fffff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0003* Arch-Linux-grub       HD(1,GPT,ecefe053-7b28-4c47-80cb-fe0358dd08df,0x800,0x7d000)/File(\EFI\Arch-Linux-grub\grubx64.efi)

Nicht mal mein Script funktioniert richtig:

[root@arch efi]# sh ./startup.nsh
./startup.nsh: Zeile 1: fs0:: Das Argument ist ungültig
./startup.nsh: Zeile 2: edit: Kommando nicht gefunden.
./startup.nsh: Zeile 3: EFIArch-Linux-grubgrubx64.efi: Kommando nicht gefunden.
./startup.nsh: Zeile 4: Syntaxfehler beim unerwarteten Wort `newline'
./startup.nsh: Zeile 4: `ctrl-s <cr>'
[root@arch efi]# 

Von Scripten habe ich auch keine Ahnung, ich kann zur Zeit nur nachmachen. :-(


Ok, jetzt Verstanden, in der EFI ist es einzugeben. *wow


Einfachste Lösung:

https://askubuntu.com/questions/566315/ … ell#573672

Copy and rename \EFI\ubuntu\shimx64.efi to \EFI\boot\bootx64.efi is the best. credit – CallMeLaNN Nov 26 '17 at 18:46


Nur auf Arch übertragen und schon funktioniert es.

Danke

MfG

fablab

Beitrag geändert von fablab (20.11.2019 16:51:07)

Offline

#18 20.11.2019 16:46:31

blub
Gast

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

...
Kann es evtl. am UEFI Bios von Virtualbox liegen?

Ich hatte gestern Abend an dem gleichen Problem gesessen, die Antwort ist: Ja!
VirtualBox speichert beim Ausschalten der VM keine efivars, die von innerhalb der VM geändert wurden (sprich mit efibootmgr usw). Ein Reboot funktioniert noch, aber ein Shutdown überlebt die Konfiguration leider nicht.

Meine Lösung:
/boot/startup.nsh

vmlinuz-linux root=/dev/sda2 rw initrd=\initramfs-linux.img

und das war auch schon alles. Bootmanager wie Grub benutze ich nicht.
* Standardkernel von Arch
* /dev/sda1 EFI, Fat32, Mountpoint /boot
* /dev/sda2 Linux Filesystem, ext4, Mountpoint /

#19 20.11.2019 16:57:43

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Kannst Du mir etwas zu der "/boot/startup.nsh" Datei sagen?

Jetzt dachte ich, die kann man nur im UEFI Menü editieren und erstellen.

Offline

#20 20.11.2019 17:35:38

blub
Gast

Re: UEFI - von systemd-boot zu Grub .

Da gibt es eigentlich nicht viel zu dieser Datei zu sagen, kann man schon während der Installation im Livesystem anlegen.
Man sollte nur beachten, dass /boot auch gleichzeitig die EFI-Partition ist, wenn man nicht noch irgendwelche Kernel- oder efi-Dateien hin und her kopieren will.
Alles, was man wissen muss, steht im Wiki-Eintrag zu EFISTUB.

#21 20.11.2019 17:45:31

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Hast Du auch im UEFI Bios rumgefummelt?
Dort habe ich eine startup.nsh auch mal testweise angelegt. angelegt.

Bei mir war es vermutlich etwas schwieriger weil ich ein /@ Subvolume habe.

Wie groß ist deine /dev/sda1?

Was gibt "efibootmgr --verbose" bei dir aus?

Beitrag geändert von fablab (20.11.2019 17:48:32)

Offline

#22 20.11.2019 19:23:09

blub
Gast

Re: UEFI - von systemd-boot zu Grub .

Ja, ich habe auch im UEFI Bios rumgefummelt. Bis ich merkte, dass das nichts bringt. Daher auch völlig irrelevant, was efibootmgr ausgibt, für die Lösung mit startup.nsh müssen keine efivars geändert werden.
/dev/sda1 ist bei mir 512MB. Ist bei den meisten Anleitungen eine Art Standardgröße. Geht aber auch deutlich kleiner, müssen ja nur initrd und Kernel-Image drauf.

Was bei dir schwieriger sein sollte, erschließt sich mir nicht so ganz. Anstatt root=/dev/sda2 kannst du auch root=UUID=... in startup.nsh eintragen, oder wie auch immer du deine Root-Partition identifizierst. Für ein btrfs Subvolume musst du noch zusätzlich den Parameter rootflags=subvol=... einfügen.

#23 21.11.2019 10:27:31

fablab
Mitglied

Re: UEFI - von systemd-boot zu Grub .

Hallo Forum,

handelt es sich bei der "startup.nsh im UEFI Bios" erstellte um die gleiche, wie die mit "startup.nsh  mit nano /boot/efi/startup.nsh" erstellte?

Warum wird die Datei als Script bezeichnet, für sieht die startup.nsh  eher nach einer Konfigurationsdatei?

Muss die Datei als ausführbar gekennzeichnet werden, davon habe ich bisher nichts gelesen?

Wird der systemd-boot Bootloader bei Arch in einem UEFI System immer automatisch installiert?

MfG

fablab

Beitrag geändert von fablab (21.11.2019 10:33:53)

Offline

#24 21.11.2019 11:57:03

Greg
Mitglied

Re: UEFI - von systemd-boot zu Grub .

fablab schrieb:

...Wird der systemd-boot Bootloader bei Arch in einem UEFI System immer automatisch installiert?

Nein.  Systemd-boot ist im Paket systemd enthalten. Muß mit pacman nicht gesondert installiert werden. Um den ins UEFI zu installieren siehe Post #15

Beitrag geändert von Greg (21.11.2019 16:47:36)

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums