Я установил FreeBSD на свой MacBook Air, и он работает без сбоев. Однако вместо появления значка BSD Daemon его необходимо загрузить с помощью записи "Резервный загрузчик", и я хочу изменить это поведение.

Вот скриншот, который я сделал при загрузке FreeBSD через "Boot Fallback boot loader from EFI":

Странно, я не нашел ни одного файла с именем loader.efi на моем устройстве:

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

Тем не менее я попытался настроить таргетинг на "загрузчик Fallback ", добавив следующие пользовательские записи в /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
}

Но оба не работали. Для краткости я публикую только сообщение об ошибке "Кандидат в загрузчик FreeBSD 1":

Начиная loader.efi
Использование опции загрузки ''
Неверный файл загрузчика!
Ошибка: не найден при загрузке loader.efi

* Нажмите любую клавишу, чтобы продолжить *

1 ответ1

1

Резервный загрузчик EFI/BOOT/bootx64.efi в системном разделе EFI (ESP). Последнее, что я проверял, это то, где FreeBSD по умолчанию хранит свой загрузчик. Это немного странно и потенциально невнимательно для других ОС - если бы каждая ОС использовала имя резервного файла загрузчика, они все попрали бы друг над другом, как в BIOS. (Одним из преимуществ EFI является то, что он явно поддерживает произвольно большое количество файлов загрузчика, что позволяет избежать этой проблемы BIOS.)

В любом случае у вас есть несколько вариантов:

  • Переименуйте загрузчик FreeBSD или его каталог. Если вы переименуете EFI/BOOT на ESP в EFI/FreeBSD , вы увидите изменение его значка в rEFInd. Аналогично, если вы переименуете EFI/BOOT/bootx64.efi в EFI/BOOT/freebsd.efi , вы должны увидеть изменение его значка. Обе эти опции имеют то преимущество, что некоторые будущие ОС или утилиты смогут установить собственный резервный загрузчик без перегрузки загрузчика FreeBSD; но по той же причине, если обновление пакета FreeBSD приводит к установке улучшенного загрузчика FreeBSD, оно будет отображаться как новая резервная запись в rEFInd, и запись со значком FreeBSD в rEFInd не будет обновляться. Вам нужно будет вручную скопировать или переименовать новый загрузчик так же, как вы делали оригинал, чтобы применить обновление.
  • Применение значка к резервному загрузчику. Существует довольно много способов применить значки к резервному загрузчику без переименования или перемещения, как описано здесь в документации по rEFInd. Самым простым, вероятно, будет копирование EFI/refind/icons/os_freebsd.png в EFI/BOOT/bootx64.png на ESP. (То есть, чтобы дать файлу значка то же имя, что и у самого загрузчика, но с расширением .png .) Обратите внимание, что этот подход приведет к уязвимости: если кто-то решит использовать резервное имя файла загрузчика, ваша установка FreeBSD будет не загружаться до тех пор, пока вы не переустановите загрузчик FreeBSD. OTOH, обновления для загрузчика FreeBSD должны применяться без проблем.

Обратите внимание, что для обеих этих опций требуется доступ к ESP. Этот раздел не монтируется по умолчанию в OS X, но скрипт mountesp , поставляемый с rEFInd, будет монтировать его и сообщать вам, где он монтируется. Я не знаю, если FreeBSD монтирует ESP по умолчанию. Если нет, вам нужно смонтировать его с помощью команды mount_msdosfs , если я правильно запомнил имя команды. Вам нужно будет указать параметры для определения ESP и точки монтирования.

Создание раздела загрузки вручную, как вы пытаетесь сделать, также может сработать; но тогда вам нужно будет либо скрыть автоматически обнаруженные загрузчики, либо создать запись для OS X, тоже. Создание раздела загрузки вручную требует относительно глубокого понимания файлов загрузчика EFI, а также синтаксиса этих разделов загрузки. Как я уже говорил, гораздо проще переименовать загрузчик или добавить файл значков.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .