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?
Einfach die Ausgabe in eine Textdatei umleiten.
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.
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?
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.
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.
  • [gelöscht]

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?
  • [gelöscht]

fablab schrieb Kenn es evtl. am UEFI Bios von Virtualbox liegen?
Nein. Grub funktioniert auch in Virtualbox.
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.php?f=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
https://wiki.archlinux.org/index.php/EFISTUB#Using_a_startup.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?
  • [gelöscht]

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.
fablab schriebWie 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
Ubuntulösung Dez. 2014: https://uberubuntu.info/questions/2082/virtualbox-startet-nur-der-uefi-interactive-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
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/virtualbox-boots-only-in-uefi-interactive-shell#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
  • [gelöscht]

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 /
Kannst Du mir etwas zu der "/boot/startup.nsh" Datei sagen?

Jetzt dachte ich, die kann man nur im UEFI Menü editieren und erstellen.
  • [gelöscht]

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.
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?
  • [gelöscht]

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.