Hallo liebes Forum,
Ich habe mir wohl bei dem Versuch einen Multi boot usb Stick zu bauen, irgentwie meinen bootloader zerschossen.

Wenn ich boote komme ich direkt in die grub rescue Shell. Und bekomme den Fehler /boot/grub/x86_64-efi/normal.mod file not found

Ich habe die ganzen Tipps im Internet von wegen mit ls alle partitionen absuchen und root und prefix setzen schon probiert. Bei meiner EFI Partition kommt dann der unknown Filesystem Fehler. Entsprechend komm ich da nicht weiter.
Zum Glück hatte ich noch einen AntiX live usb stick über dessen grub Menü ich meine grub cfg finden konnte. Ich damit also normal mein System starten. Allerdings kann ich auch dann nicht über

sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo grub-install --target=x86_64-efi --efi-direcrory=/boot/EFI --root-directory=/ --bootloader-id=grub_uefi --recheck /dev/nvme0n1

meine Grub Installation reparieren..
Weiß jmd wie ich der grub rescue shell 'beibringen' kann wie er eine EFI Partition liest ohne ein Modul zu laden oder wie ich über arch mein Grub wieder repariert bekomme?

Viele Grüße und Danke im Voraus
Janosch

Wenn du einen Multi-boot-USB-Stick bauen willst, ist es normalerweise sinnvoll, den Bootloader auf dem USB-Stick mit der Option --removable zu installieren.

Aber vielleicht willst du das gar nicht, sondern ein Arch Linux auf dem USB-Stick betreiben?

Generell zerschiesst man sich auch nicht "irgendwie den Bootloader". Wenn selbst du nicht weisst, was du da machst, dann kann man dir auch "irgendwie" nicht helfen.

Zu deinem grub-install Befehl:

  • Die Option --efi-direcrory gibt es nicht. Am ähnlichsten ist wohl noch --efi-directory. Und der angegebene Pfad ist derjenige, auf den die ESP eingehängt wurde. Der Pfad /boot/EFI sieht also schon mal falsch aus. Üblicherweise verwendet man dafür /boot/efi.
  • Die Option --root-directory gibt es nicht. Am ähnlichsten ist wohl noch --boot-directory. Wenn dafür /boot verwendet wird, muss es nicht angegeben werden.
  • Wie kommst du auf die Idee, dass /dev/nvme0n1 (also die ganze Festplatte) der richtige Ort für den Bootloader ist? Bei UEFI-Installation muss man kein Installationsgerät angeben. Grub findet anhand Option --efi-directory automatisch die richtige ESP, falls sie denn auch korrekt angegeben wurde.

Um dein System zu reparieren, solltest du arch-chroot verwenden. Anleitungen dafür findet man im Wiki. Und wenn du schon mal im chroot bist, dann verschaff dir (oder besser den Helfern hier im Forum) einen Überblick, wo welche Partition warum eingebunden wird, indem du die Informationen mitteilst.

Als Ergänzung, weil ich vorhin keine Zeit mehr hatte:

Wenn du dich im chroot befindest (also alle nötigen Partitionen richtig eingehängt und reingechrootet), dann überprüfe mal deine /etc/fstab. Im Minimalfall enthält sie zwei Einträge: Deine Partition mit dem Wurzelverzeichnis und die ESP.

Dann überprüfst du mit lsblk -f, ob die in der /etc/fstab angegebenen Partitionen den richtigen/gewünschten Einhängepunkt haben.

Anschliessend schaust du dir die Einträge im NVRAM an: efibootmgr -v

Am besten zeigst du dann die kompletten Ein- und Ausgaben von

cat /etc/fstab
lsblk -f
efibootmgr -v

hier im Forum.
Da du keine graphische Oberfläche hast, solltest du die Ausgaben in Textdateien umleiten (z.B: cat /etc/fstab > /root/fstab.txt) oder du nutzt ein Programm (https://wiki.archlinux.org/title/List_of_applications#Pastebin_services), um die Ausgaben ins Internet hochzuladen und merkst dir die URL, damit du sie später im Browser wieder findest und sie hier zur Verfügung stellen kannst.

Hallo Gerry, danke für deine Antworten!

Ja ich möchte einen Multiboot USB-stick bauen. Ich bin diesem Wiki-Eintrag gefolgt. Hier wird die --removable Flag auch nicht verwendet. Und hab mich schon gefragt ob das nicht Sinnvoll wäre.

Ich weiß dass man sich Grub nicht irgendwie zerschießt, aber ich weiß halt leider auch nicht was das Problem ist ^^' - deswegen diese Beschreibung

Die Flag --efi-direcrory ist ein typo hier im Post gewesen. Ich habe im Befehl --efi-directory verwendet. Der Pfad /boot/EFI ist wahrscheinlich ein Überbleibsel meiner Problematischen Erstinstallation. Ich werde dann jetzt versuchen unter /boot/efi zu installieren.

Bei der Flag --root-directory war ich mir so sicher, dass ich das angeben muss. Ich weiß allerdings nicht mehr woher ich diese Info habe ^^'

Danke für den Hinweis, dass ich als installationsmedium nicht die ganze Festplatte nehmen kann. Ich glaube ich hab das einfach so angenommen, da das so bei der BIOS installation gemacht wird.
Seh ich das richtig, dass wenn ich die Flag --efi-directory=/boot/efi setze und alles richtig gemounted ist, dann brauch ich gar kein installationsmedium angeben?

Hier die Informationen die Og. Befehle:

janosch@Adrastea ~ $ efibootmgr -v
BootCurrent: 001A
Timeout: 0 seconds
BootOrder: 0002,0001,001A,0003,0000,001B,0018,0017,0016,0019
Boot0000  Windows Boot Manager	HD(1,GPT,3b0cf1aa-9d82-45d0-a469-e39b737fdd69,0x800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...s................
Boot0001* arch	HD(1,GPT,3b0cf1aa-9d82-45d0-a469-e39b737fdd69,0x800,0x82000)/File(\EFI\arch\grubx64.efi)
Boot0002* grub_uefi	HD(1,GPT,3b0cf1aa-9d82-45d0-a469-e39b737fdd69,0x800,0x82000)/File(\EFI\grub_uefi\grubx64.efi)
Boot0003* ubuntu	HD(1,GPT,3b0cf1aa-9d82-45d0-a469-e39b737fdd69,0x800,0x82000)/File(\EFI\ubuntu\shimx64.efi)
Boot0010  Setup	FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
Boot0011  Boot Menu	FvFile(126a762d-5758-4fca-8531-201a7f57f850)
Boot0012  Diagnostic Splash Screen	FvFile(a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380)
Boot0013  Lenovo Diagnostics	FvFile(3f7e615b-0d45-4f80-88dc-26b234958560)
Boot0014  Startup Interrupt Menu	FvFile(f46ee6f4-4785-43a3-923d-7f786c3c8479)
Boot0015  Rescue and Recovery	FvFile(665d3f60-ad3e-4cad-8e26-db46eee9f1b5)
Boot0016* USB CD	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,86701296aa5a7848b66cd49dd3ba6a55)
Boot0017* USB FDD	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,6ff015a28830b543a8b8641009461e49)
Boot0018* NVMe0	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,001c199932d94c4eae9aa0b6e98eb8a400)
Boot0019* ATA HDD0	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f600)
Boot001A* USB HDD	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,33e821aaaf33bc4789bd419f88c50803)
Boot001B  PCI LAN	VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)
Boot001C  Regulatory Information	FvFile(e4a83242-deee-f12e-15ff-0102036cc3ce)
janosch@Adrastea ~ $ lsblk -f
NAME        FSTYPE  FSVER            LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda         iso9660 Joliet Extension antiX-Live 2020-03-29-13-24-46-00
├─sda1      iso9660 Joliet Extension antiX-Live 2020-03-29-13-24-46-00
└─sda2      vfat    FAT12            EFI-LIVE   6CFD-B910
mmcblk0
└─mmcblk0p1 ext4    1.0              JUPITER    bd9b8837-71d4-4486-a0c6-0b9434c6bfbd
nvme0n1
├─nvme0n1p1 vfat    FAT32            SYSTEM     9829-2294                             115,8M    55% /boot/efi
├─nvme0n1p2 swap    1                           a9d2b97e-df83-4749-b834-6bb2b481a2a1                [SWAP]
└─nvme0n1p3 ext4    1.0                         3f795d30-55aa-49fb-9a84-42b18f05ba4f   24,2G    90% /run/timeshift/backup
                                                                                                    /
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/nvme0n1p3
UUID=3f795d30-55aa-49fb-9a84-42b18f05ba4f	/         	ext4      	rw,relatime	0 1

# /dev/nvme0n1p1 LABEL=SYSTEM
UUID=9829-2294      	/boot/efi     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/nvme0n1p2
UUID=a9d2b97e-df83-4749-b834-6bb2b481a2a1	none      	swap      	defaults  	0 0

Ich habe seit dem ein bisschen herum probiert und bin bisher nicht weiter gekommen

Ausserdem: ich weiß nicht in wiefern das wichtig ist. ich mach das ganze gerade nicht über arch-chroot Da, und das habe ich glaube ich nicht gut erklärt, dieser Antix-Live-usbstick eine Grub-rescue funktion hat. welche funktionierende Teile einer Grub installation finden kann und diese starten kann. ich kann über diese funktion ganz normal mein Arch system starten. Verständlicher weise kann das kein Dauerzustand sein.

Vielen dank nochmal für deine Antworten
Janosch

    MrDoode Ja ich möchte einen Multiboot USB-stick bauen. Ich bin diesem Wiki-Eintrag gefolgt. Hier wird die --removable Flag auch nicht verwendet. Und hab mich schon gefragt ob das nicht Sinnvoll wäre.

    Wenn man mehrere ISOs auf einem Stick haben will, hat das mit einer richtigen Installation nichts zu tun. Die verlinkte Anleitung bezieht sich darauf, wie man ISOs auf einen Stick packt und davon booten kann.
    Und die Anleitung ist im Übrigen für Legacy Systeme (im BIOS Modus installierte Systeme) ausgelegt. Die Option --removable ist jedoch nur im EFI-Modus vorhanden und folgerichtig auch nicht in der Anleitung erwähnt. Ein Hinweis im Wiki auf diese entscheidende Tatsache wäre aber sicherlich nicht falsch.

    Wenn ich dich richtig verstehe, möchtest du aber mehrere Linux-Systeme richtig auf dem Stick installieren (und die Anleitung dazu war die falsche). In diesem Fall ist die Frage, ob du den Stick immer nur am gleichen Gerät verwenden willst. Dann wäre die interne ESP der richtige Ort, also so wie es laut deinen Angaben eingerichtet ist.
    Wenn du den Stick aber auch an anderen UEFI-fähigen Geräten verwenden willst, müsstest du auf dem Stick eine ESP einrichten. Je nach Firmware (UEFI) verschwinden dann vielleicht die Booteinträge für den Stick, falls er mal nicht angesteckt sein sollte.

    MrDoode Seh ich das richtig, dass wenn ich die Flag --efi-directory=/boot/efi setze und alles richtig gemounted ist, dann brauch ich gar kein installationsmedium angeben?

    Ja, im Idealfall beschränkt sich der Befehl dann nur noch auf [sudo] grub-install --efi-directory=/boot/efi (falls die ESP nach /boot/efi eingehängt wird).

    An deiner Stelle würde ich einen USB mit dem Arch ISO aufsetzen und einen zweiten USB für die eigentliche Installation. Dazu solltest du der Anleitung für Einsteiger folgen und dir die wichtigen/richtigen Teile zusammensuchen.

    Habe im Moment aber keine Zeit, um da ausführlicher zu werden.

    Hallo Gerry,
    Danke für die Antwort.

    Ich versuch es dann tatsächlich mal mit nem Arch-ISO USB-Stick zu chrooten.

    Das sind jetzt die Befehle die ich ausgeführt habe, nachdem ich den neuen Stick gebootet habe:

    loadkeys de-latin1
    lsblk
    mount /dev/nvme0n1p3 /mnt
    mount /dev/nvme0n1p1 /mnt/boot/efi
    arch-chroot /mnt
    
    grub-install --efi-directory=/boot/efi --bootloader-id=grub_uefi --recheck
    grub-mkconfig -o /boot/grub/grub.cfg
    exit
    
    reboot

    Leider bootet mein system wieder nicht von alleine

    btw. meinst du das mit Einsteiger Anleitung?

    Janosch

    • MrDoode hat auf diesen Beitrag geantwortet.

      Hey, kurzer nachtrag:

      Als ich jetzt weiter durch die Wiki einträge gegangen bin ist mir aufgefallen, dass ich das Paket amd-ucode nicht installier hat.

      Das ist notwendig um Microcode Updates für meine CPU anzuwenden. Danach muss die grub.cfg bearbeitet werden.

      Als ich mir die nochmal angeguckt habe ist mir aufgefallen, dass dort gar nicht mein kernel und initramfs dateien eingetragen waren. anscheinend dürfen die nicht auf der ESP sein. Ich hab die also wieder in meinen /boot ordner kopiert und diese schritte wieder ausgeführt.

      MrDoode loadkeys de-latin1
      lsblk
      mount /dev/nvme0n1p3 /mnt
      mount /dev/nvme0n1p1 /mnt/boot/efi
      arch-chroot /mnt

      grub-install --efi-directory=/boot/efi --bootloader-id=grub_uefi --recheck
      grub-mkconfig -o /boot/grub/grub.cfg
      exit

      reboot

      Jetzt startet wieder alles ohne externer Grub Hilfsprogramme
      Danke nochmal für die Hilfe und die vielen Tipps für einen Multiboot USB-Stick

      Janosch

        MrDoode Als ich mir die nochmal angeguckt habe ist mir aufgefallen, dass dort gar nicht mein kernel und initramfs dateien eingetragen waren. anscheinend dürfen die nicht auf der ESP sein.

        Dürfen schon. Es kommt darauf an, wie du die ESP einbindest. Am einfachsten, sichersten und verbreitetsten ist bei Grub die Variante, die ESP nach /boot/efi einzuhängen. Das heisst dann, dass /boot auf einer anderen Partition liegt (normalerweise die mit dem Wurzelverzeichnis). Dort müssen natürlich die Kerneldateien liegen, die normalerweise auch erstellt werden.

        Wenn du allerdings die ESP nach /boot eingehängt hast, dann werden die Kerneldateien eben auch dort angelegt. Und je nach Verwendung läufst du dann in das eine oder andere Problem hinein oder auch nicht.

        Wenn du zu Beginn die ESP nach /boot einhängst und dich dann aber umentscheidest, dann liegen die Kerneldateien immer noch auf der ESP, werden vom System aber dort nicht gesucht und im eigentlichen /boot Verzeichnis liegen keine.