Tidak dapat menemukan "Fallback boot loader" dari rEFInd

0

Saya telah menginstal FreeBSD di MacBook Air saya, dan itu berjalan dengan lancar. Namun, alih-alih muncul dengan ikon Daemon BSD , ikon itu harus di-boot melalui entri "Fallback boot loader", dan saya ingin mengubah perilaku ini.

masukkan deskripsi gambar di sini

Ini adalah screenshot yang saya ambil ketika mem-boot ke FreeBSD melalui "Boot Fallback boot loader dari EFI":

masukkan deskripsi gambar di sini

Anehnya, saya tidak menemukan file yang dipanggil loader.efidi perangkat saya:

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

Namun, saya mencoba menargetkan "Fallload boot loader" dengan menambahkan entri khusus berikut ke /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
}

Namun keduanya tidak berhasil. Untuk singkatnya, saya hanya memposting pesan kesalahan untuk "kandidat pemuat FreeBSD 1":

Memulai loader.efi
Menggunakan opsi muat ''
File loader tidak valid!
Kesalahan: Tidak Ditemukan saat memuat loader.efi

* Tekan tombol apa saja untuk melanjutkan *

nalzok
sumber

Jawaban:

1

Pemuat boot cadangan ada EFI/BOOT/bootx64.efidi EFI System Partition (ESP). Terakhir saya cek, ini adalah tempat FreeBSD menyimpan bootloader-nya secara default. Ini agak aneh, dan berpotensi tidak mempertimbangkan OS lain - jika setiap OS menggunakan nama file boot loader cadangan, mereka semua akan menginjak-injak boot loader masing-masing, seperti di bawah BIOS. (Salah satu kelebihan EFI adalah secara eksplisit mendukung sejumlah besar file boot loader, sehingga menghindari masalah BIOS ini.)

Dalam hal apa pun, Anda memiliki beberapa opsi:

  • Ganti nama boot loader FreeBSD atau direktori - Jika Anda mengganti nama EFI/BOOTmenjadi ESP EFI/FreeBSD, Anda akan melihat ikonnya berubah di rEFInd. Demikian juga, jika Anda mengganti nama EFI/BOOT/bootx64.efimenjadi EFI/BOOT/freebsd.efi, Anda akan melihat ikonnya berubah. Kedua opsi ini memiliki keuntungan bahwa beberapa OS atau alat di masa depan akan dapat menginstal boot loader fallback sendiri tanpa merusak bootloader FreeBSD; tetapi dengan cara yang sama, jika pembaruan paket FreeBSD menghasilkan bootloader FreeBSD yang ditingkatkan sedang diinstal, itu akan muncul sebagai entri fallback baru di rEFInd, dan entri dengan ikon FreeBSD di rEFInd tidak akan diperbarui. Anda akan perlu menyalin atau mengganti nama boot loader baru secara manual sama seperti Anda melakukan yang asli untuk menerapkan pembaruan.
  • Menerapkan ikon ke pemuat boot cadangan - Ada beberapa cara untuk menerapkan ikon pada pemuat boot cadangan tanpa mengubah nama atau memindahkannya, seperti dijelaskan di sini dalam dokumentasi rEFInd. Yang paling sederhana adalah menyalin EFI/refind/icons/os_freebsd.pngke EFI/BOOT/bootx64.pngESP. (Yaitu, untuk memberi file ikon nama yang sama dengan boot loader itu sendiri, tetapi dengan .pngekstensi.) Perhatikan bahwa pendekatan ini akan menghasilkan kerentanan: Jika ada hal lain yang memutuskan untuk menggunakan nama file boot loader fallback, instalasi FreeBSD Anda akan menjadi unbootable hingga Anda menginstal ulang bootloader FreeBSD. OTOH, pembaruan untuk boot loader FreeBSD harus diterapkan sendiri dengan mulus.

Perhatikan bahwa kedua opsi ini mengharuskan Anda untuk mengakses ESP. Partisi ini tidak dipasang secara default di OS X, tetapi mountespskrip yang datang dengan rEFInd akan memasangnya, dan memberi tahu Anda di mana ia dipasang. Saya tidak tahu jika FreeBSD me-mount ESP secara default. Jika tidak, Anda harus memasangnya dengan mount_msdosfsperintah, jika saya mengingat nama perintah dengan benar. Anda harus memberikan opsi untuk mengidentifikasi ESP dan titik pemasangan.

Membuat bait boot manual, seperti yang Anda coba lakukan, juga bisa berfungsi; tetapi kemudian Anda harus menyembunyikan bootloader yang terdeteksi secara otomatis atau membuat entri untuk OS X juga. Membuat bait boot manual memerlukan pemahaman yang relatif mendalam tentang file loader boot EFI, serta sintaksis untuk bait boot ini. Jauh lebih mudah untuk mengganti nama boot loader atau menambahkan file ikon, seperti yang saya sarankan.

Rod Smith
sumber