
Hallo, ich habe ein großes Problem. Wenn ich nämlich efibootmgr
einen 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 -v
ist der Unterschied zwischen den Einträgen von efibootmgr und bcfg der folgende:
Der DevPath
fü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 efibootmgr
ein Eintrag wie von Ihnen beschrieben erstellt wird ( VenHw(99E275E7-75AO-4B37)
), klingt das nach einem Fehler in efibootmgr
der Firmware. Denken Sie jedoch an den efibootmgr
von 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 vona
oben 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-p
Option toefibootmgr
da. - Dateispezifikation-- Ältere Versionen von
efibootmgr
erfordern, 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.efi
oder angeben würden-l "\EFI\refind\refind_x64.efi
. Ich habe gehört, dass die neuesten Versionen vonefibootmgr
eine 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.
bcfg
Wenn 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 ;)