efibootmgr erstellt einen Eintrag, in dem DevPath auf Venhw statt auf PciRoot gesetzt ist

efibootmgr erstellt einen Eintrag, in dem DevPath auf Venhw statt auf PciRoot gesetzt ist

Hallo, ich habe ein großes Problem. Wenn ich nämlich efibootmgreinen Boot-Eintrag erstelle, erscheint im EFI-Boot-Menü nur ein nicht bootfähiges japanisches Zeichen, und das ist sehr schlimm.

Wenn ich dagegen bcfg in der EFI-Shell verwende, funktioniert es einwandfrei. Der verwendete efibootmgr-Befehl lautet: efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"während der bcfg-Befehl lautet:bcfg boot add 3 fs0:\EFI\refind\refind_x64.efi "rEFInd"

Wenn ich das mache, bcfg boot dump -vist der Unterschied zwischen den Einträgen von efibootmgr und bcfg der folgende:

Der DevPathfür den BCFG-Eintrag erstellte Eintrag lautet PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efi, während für den Efiboomgr-Eintrag nur stehtVenHw(99E275E7-75AO-4B37)

Haben Sie eine Idee, wie ich efibootmgr zum Laufen bekomme? Oder welche Option im Befehlsaufruf ich alternativ verwenden muss, um Kernelparameter mit bcfg anzugeben?

Antwort1

Wenn efibootmgrein Eintrag wie von Ihnen beschrieben erstellt wird ( VenHw(99E275E7-75AO-4B37)), klingt das nach einem Fehler in efibootmgrder Firmware. Denken Sie jedoch an den efibootmgrvon Ihnen angegebenen Befehl:

efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"

Zwei Dinge sind dabei ungewöhnlich:

  • Festplattengerät-- Die Namen der meisten Festplattengeräte in Linux haben die Form /dev/sd?, wobei ?ein Buchstabe von aoben ist. Einige Geräte, wie z. B. einige SSD-Karten, haben Dateinamen in anderen Formen, wie /dev/mmcblk0(das ist aus dem Gedächtnis und könnte nicht ganz richtig sein). Ich kann mich nicht erinnern, jemals einen Gerätenamen wie gesehen zu haben /dev/nvme0n1. Das heißt nicht, dass es falsch ist, aber es ist zumindest ungewöhnlich und Sie sollten es noch einmal überprüfen. Ich würde besonders darauf achten, die Partitionsnummer nicht anzugeben – dafür ist die -pOption to efibootmgrda.
  • Dateispezifikation-- Ältere Versionen von efibootmgrerfordern, dass Dateien mit EFI-Syntax angegeben werden -- das heißt, mit Backslashes ( \) statt Schrägstrichen ( /), die Verzeichniseinträge trennen. Da Linux-Shells Backslashes im Allgemeinen eindeutig behandeln, erfordert dies auch, entweder den gesamten Pfadnamen in Anführungszeichen zu setzen oder die Backslashes zu verdoppeln, sodass Sie -l \\EFI\\refind\\refind_x64.efioder angeben würden -l "\EFI\refind\refind_x64.efi. Ich habe gehört, dass die neuesten Versionen von efibootmgreine traditionellere Unix/Linux-Form akzeptieren und intern „übersetzen“, aber ich weiß nicht genau, wann diese Funktion hinzugefügt wurde, und Sie haben nicht gesagt, welche Version von Ubuntu Sie verwenden. Daher empfehle ich Ihnen, doppelte oder in Anführungszeichen gesetzte Backslashes statt Schrägstriche zu verwenden.

bcfgWenn Sie einen funktionierenden Eintrag über haben , sollte es praktisch gesehen natürlich nicht nötig sein, irgendetwas anderes mit zu tun efibootmgr. Ich nehme an, Sie fragen, weil essollenarbeiten und weil Sie diese Art von Wartung von Ubuntu aus durchführen möchten.

Antwort2

Ich hatte genau dasselbe Problem. Habe versucht, mit efibootmgr einen Boot-Eintrag mithilfe einer NVMe-Festplatte zu erstellen. Er wurde nicht gebootet und das Boot-Menü im BIOS zeigte für diesen Eintrag nur japanische (oder chinesische?) Zeichen an. Bei der Überprüfung der Boot-Einträge von einem anderen Betriebssystem wurde angezeigt, dass der neu erstellte Eintrag vom Typ VenHw war.

Das Problem war jedoch, dass die Partitionsnummer falsch war. Ich hatte eine Root-Partition und einige andere in verschlüsselten LVM-Volumes. Also habe ich diese verschlüsselte Partition für efibootmgr angegeben, anstatt der /boot-Partition, die angegeben werden sollte. Das ist wahrscheinlich nicht Ihr Fall, aber ich schreibe dies trotzdem für den Fall, dass jemand anderes aus demselben Grund auf dieses Problem stößt. Überprüfen Sie Ihre Partitionsnummer und andere Parameter für efibootmgr noch einmal.

Antwort3

Sie müssen die Datei refind.conf bearbeiten und den Pfad zurück zu PciRoot ändern. Notieren Sie sich die vollständige Beschreibung des Geräts, damit Sie sie in die conf-Datei eingeben können. Achten Sie nur darauf, das richtige PciRoot auszuwählen ;)

verwandte Informationen