Não é possível localizar o “carregador de inicialização Fallback” de rEFInd

0

Instalei o FreeBSD no meu MacBook Air e ele funciona sem problemas. No entanto, em vez de aparecer com o ícone BSD Daemon , ele deve ser inicializado por meio de uma entrada "Fallback boot loader" e quer mudar esse comportamento.

AquiestáumacapturadetelaqueeutireiquandoinicializeinoFreeBSDatravésdo"Boot Boot boot loader do EFI":

Estranhamente,nãoencontreinenhumarquivochamadoloader.efinomeudispositivo:

sunqingyaos-MacBook-Air:~sunqingyao$sudofind/-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

Ainda assim, tentei segmentar o "carregador de inicialização Fallback" adicionando as seguintes entradas personalizadas a /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
}

Mas os dois não funcionaram. Por uma questão de brevidade, estou apenas postando a mensagem de erro "FreeBSD loader candidate 1":

Starting loader.efi
Using load option ''
Invalid loader file!
Error: Not Found while loading loader.efi

* Hit any key to continue *

    
por nalzok 09.06.2017 / 17:55

1 resposta

1

O carregador de inicialização substituto é EFI/BOOT/bootx64.efi na partição do sistema EFI (ESP) . A última vez que verifiquei isso é onde o FreeBSD armazena seu gerenciador de inicialização por padrão. Isso é um pouco estranho e potencialmente desatento a outros sistemas operacionais - se todos os sistemas operacionais usassem o nome do arquivo do carregador de boot, todos estariam atropelando os gerenciadores de inicialização, como acontece no BIOS. (Uma das vantagens da EFI é que ela suporta explicitamente um número arbitrariamente grande de arquivos do carregador de boot, evitando assim esse problema de BIOS.)

Em qualquer caso, você tem algumas opções:

  • Renomeie o gerenciador de partida do FreeBSD ou seu diretório - Se você renomear EFI/BOOT no ESP para EFI/FreeBSD , deverá ver seu ícone mudar em rEFInd. Da mesma forma, se você renomear EFI/BOOT/bootx64.efi para EFI/BOOT/freebsd.efi , deverá ver seu ícone mudar. Ambas as opções têm a vantagem de que algum sistema operacional ou ferramenta futura seria capaz de instalar seu próprio carregador de boot de fallback sem destruir o carregador de boot do FreeBSD; mas da mesma forma, se uma atualização do pacote do FreeBSD resultar em um carregador de boot melhorado do FreeBSD sendo instalado, ele aparecerá como uma nova entrada de fallback em rEFInd, e a entrada com o ícone do FreeBSD em rEFInd não ser atualizado. Você precisará copiar ou renomear manualmente o novo gerenciador de inicialização, assim como fez o original para aplicar a atualização.
  • Aplique um ícone ao carregador de inicialização substituto - Existem algumas maneiras de aplicar ícones ao carregador de inicialização substituto sem renomear ou movê-lo, conforme descrito aqui na documentação do rEFInd. O mais simples é copiar EFI/refind/icons/os_freebsd.png to EFI/BOOT/bootx64.png no ESP. (Ou seja, para dar ao arquivo de ícone o mesmo nome do próprio carregador de boot, mas com uma extensão .png .) Observe que essa abordagem resultará em uma vulnerabilidade: Caso algo mais decida usar o nome do arquivo do carregador de inicialização substituto, A instalação do FreeBSD se tornará não inicializável até que você reinstale o carregador de inicialização do FreeBSD. OTOH, atualizações para o gerenciador de inicialização do FreeBSD devem se aplicar de forma transparente.

Observe que essas duas opções exigem que você acesse o ESP. Esta partição não é montada por padrão no OS X, mas o script mountesp que vem com o rEFInd irá montá-lo e informar onde ele está montado. Eu não sei de improviso se o FreeBSD monta o ESP por padrão. Se não, você precisa montá-lo com o comando mount_msdosfs , se eu lembrar o nome do comando corretamente. Você precisaria fornecer opções para identificar o ESP e um ponto de montagem.

Criar uma sub-rotina de inicialização manual, como você está tentando fazer, também pode funcionar; mas, em seguida, você precisaria ocultar os carregadores de inicialização detectados automaticamente ou criar uma entrada para o OS X também. Criar uma sub-rotina de inicialização manual requer um entendimento relativamente profundo dos arquivos do carregador de boot EFI, bem como a sintaxe dessas sub-rotinas de inicialização. É muito mais fácil renomear um gerenciador de inicialização ou adicionar um arquivo de ícone, como eu sugeri.

    
por 10.06.2017 / 15:28