"Fallback Boot Loader" von rEFInd kann nicht gefunden werden

796
nalzok

Ich habe FreeBSD auf meinem MacBook Air installiert und läuft reibungslos. Statt mit dem BSD-Daemon- Symbol zu erscheinen, muss es jedoch über den Eintrag "Fallback-Bootloader" gebootet werden, und ich möchte dieses Verhalten ändern.

Hier ist ein Screenshot, den ich beim Booten in FreeBSD über "Boot Fallback Bootloader von EFI" aufgenommen habe:

Seltsamerweise habe ich loader.efiauf meinem Gerät keine aufgerufenen Dateien gefunden :

sunqingyaos-MacBook-Air:~ sunqingyao$ sudo find / -name "*.efi" find: /dev/fd/sunqingyao: No such file or directory find: /dev/fd/sunqingyao: No such file or directory /System/Library/AccessoryUpdaterBundles/USBCAccessoryFirmwareUpdater.bundle/Contents/Resources/HPMUtil.efi /System/Library/CoreServices/backupd.bundle/Contents/Resources/tmbootpicker.efi /System/Library/CoreServices/boot.efi /usr/standalone/firmware/FUD/MultiUpdater/MultiUpdater.efi /usr/standalone/i386/apfs.efi /usr/standalone/i386/boot.efi /Volumes/ESP/EFI/APPLE/UPDATERS/SMC/SmcFlasher.efi /Volumes/ESP/EFI/refind/drivers_x64/btrfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._btrfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/ext2_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._ext2_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/ext4_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._ext4_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/hfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._hfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/iso9660_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._iso9660_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/ntfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._ntfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/reiserfs_x64.efi /Volumes/ESP/EFI/refind/drivers_x64/._reiserfs_x64.efi /Volumes/ESP/EFI/refind/._refind_x64.efi /Volumes/ESP/EFI/refind/refind_x64.efi /Volumes/ESP/EFI/refind/tools_x64/gptsync_x64.efi /Volumes/ESP/EFI/refind/tools_x64/._gptsync_x64.efi /Volumes/ESP/EFI/tools/gptsync_x64.efi /Volumes/ESP/EFI/tools/._gptsync_x64.efi 

Trotzdem habe ich versucht, den "Fallback-Bootloader" als Ziel festzulegen, indem ich die folgenden benutzerdefinierten Einträge hinzugefügt habe /EFI/refind/refind.conf:

menuentry "FreeBSD loader candidate 1" { icon \EFI\refind\icons\os_freebsd.png loader \EFI\boot\loader.efi }  menuentry "FreeBSD loader candidate 2" { icon \EFI\refind\icons\os_freebsd.png loader \EFI\BOOT\bootx64.efi } 

Aber beide haben nicht funktioniert. Der Einfachheit halber sende ich nur die Fehlermeldung für "FreeBSD Loader Kandidat 1":

Loader.efi wird gestartet Ladeoption
''
Ungültige Loader-Datei!
Fehler: Beim Laden von loader.efi nicht gefunden

* Drücken Sie eine beliebige Taste, um fortzufahren. *

0

1 Antwort auf die Frage

1
Rod Smith

Der Fallback-Bootloader befindet sich EFI/BOOT/bootx64.efiauf der EFI-Systempartition (ESP). Das letzte, was ich überprüft habe, ist, wo FreeBSD standardmäßig seinen Bootloader gespeichert hat. Dies ist ein bisschen seltsam und für andere Betriebssysteme möglicherweise rücksichtslos - wenn jedes Betriebssystem den Dateinamen des Fallback-Bootloaders verwendet, würden sie alle über die Boot-Loader der anderen laufen, ähnlich wie im BIOS. (Einer der Vorteile von EFI ist die explizite Unterstützung einer beliebig großen Anzahl von Bootloader-Dateien, wodurch das Problem des BIOS vermieden wird.)

In jedem Fall haben Sie mehrere Möglichkeiten:

  • Umbenennen des FreeBSD-Bootloaders oder seines Verzeichnisses - Wenn Sie EFI/BOOTauf dem ESP in umbenennen EFI/FreeBSD, sollte das Symbol in rEFInd geändert werden. Wenn Sie umbenennen Ebenso EFI/BOOT/bootx64.efiauf EFI/BOOT/freebsd.efi, sollten Sie das entsprechende Symbol ändern sehen. Beide Optionen haben den Vorteil, dass einige zukünftige Betriebssysteme oder Tools ihren eigenen Fallback-Bootloader installieren können, ohne den FreeBSD-Bootloader zu beschädigen. Wenn das Update des FreeBSD-Pakets jedoch dazu führt, dass ein verbesserter FreeBSD-Bootloader installiert wird, wird dieser als neuer Fallback-Eintrag in rEFInd angezeigt, und der Eintrag mit dem FreeBSD-Symbol in REFInd wird nicht aktualisiert. Sie müssen den neuen Bootloader genauso wie das Original manuell kopieren oder umbenennen, um das Update anzuwenden.
  • Anwenden eines Symbols auf den Fallback-Bootloader - Es gibt mehrere Möglichkeiten, Symbole auf den Fallback-Bootloader anzuwenden, ohne sie umzubenennen oder zu verschieben, wie hier in der Dokumentation zu rEFInd beschrieben. Am einfachsten ist es wahrscheinlich EFI/refind/icons/os_freebsd.png, EFI/BOOT/bootx64.pngauf das ESP zu kopieren . (Das heißt, um der Symboldatei den gleichen Namen wie den Bootloader selbst zu geben, jedoch mit einer .pngErweiterung.) Beachten Sie, dass dieser Ansatz zu einer Sicherheitsanfälligkeit führt: Sollte sich etwas anderes für den Fallback-Bootloader-Dateinamen entscheiden, wird Ihre FreeBSD-Installation verwendet können Sie nicht booten, bis Sie den FreeBSD-Bootloader erneut installieren. Bei OTOH sollten Updates für den FreeBSD-Bootloader nahtlos angewendet werden.

Beachten Sie, dass Sie für beide Optionen auf den ESP zugreifen müssen. Diese Partition ist in OS X nicht standardmäßig gemountet, aber das mountespSkript, das mit rEFInd geliefert wird, wird gemountet und zeigt an, wo sie gemountet ist. Ich weiß nicht, ob FreeBSD standardmäßig das ESP installiert. Wenn nicht, müssten Sie es mit dem mount_msdosfsBefehl mounten, wenn ich mich an den Befehlsnamen erinnere. Sie müssen Optionen angeben, um den ESP und einen Einhängepunkt zu identifizieren.

Das Erstellen einer manuellen Startzeilengruppe, wie Sie dies versuchen, kann ebenfalls funktionieren. Dann müssen Sie jedoch entweder die automatisch erkannten Bootloader ausblenden oder einen Eintrag für OS X erstellen. Das Erstellen einer manuellen Bootzeilengruppe erfordert ein relativ tiefes Verständnis der EFI-Bootloader-Dateien sowie der Syntax für diese Bootzeilengruppen. Es ist viel einfacher, einen Bootloader umzubenennen oder eine Symboldatei hinzuzufügen, wie ich vorgeschlagen habe.