
Olá, estou com um grande problema porque, quando uso efibootmgr
para criar uma entrada de inicialização, ele apenas cria um caractere japonês não inicializável no menu de inicialização EFI e isso é muito ruim.
Por outro lado, quando uso o bcfg no shell EFI, ele funciona perfeitamente. O comando efibootmgr usado é: efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"
enquanto o bcfg é:bcfg boot add 3 fs0:\EFI\refind\refind_x64.efi "rEFInd"
Quando faço bcfg boot dump -v
a diferença entre as entradas efibootmgr e bcfg é a seguinte:
A DevPath
entrada para a entrada feita pelo bcfg é PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efi
enquanto para a entrada feita pelo efiboomgr é apenas ditaVenHw(99E275E7-75AO-4B37)
Você tem uma idéia de como fazer o efibootmgr funcionar? Ou, alternativamente, qual opção na chamada de comando preciso usar para especificar parâmetros do kernel com bcfg ?
Responder1
Se efibootmgr
estiver criando uma entrada como você descreve ( VenHw(99E275E7-75AO-4B37)
), isso soa como um bug no efibootmgr
firmware. Dito isto, considere o efibootmgr
comando que você especificou:
efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"
Há duas coisas incomuns nisso:
- Dispositivo de disco- A maioria dos dispositivos de disco no Linux tem nomes no formato
/dev/sd?
, onde?
está uma letra dea
cima. Alguns dispositivos, como alguns cartões SSD, possuem nomes de arquivos que assumem outras formas, como/dev/mmcblk0
(isso vem da memória e pode não estar correto). Não me lembro de ter visto um nome de dispositivo como/dev/nvme0n1
. Isso não quer dizer que esteja errado, mas pelo menos é incomum e você deve verificar novamente. Eu teria um cuidado especial para não incluir o número da partição - é para isso que serve a-p
opção .efibootmgr
- Especificação de arquivo-- Versões mais antigas exigem
efibootmgr
que os arquivos sejam especificados usando a sintaxe EFI -- ou seja, com barras invertidas (\
) em vez de barras (/
) separando as entradas do diretório. Como os shells do Linux geralmente tratam as barras invertidas de maneira exclusiva, isso também requer a citação de todo o nome do caminho ou a duplicação das barras invertidas, portanto, você especificaria-l \\EFI\\refind\\refind_x64.efi
ou-l "\EFI\refind\refind_x64.efi
. Ouvi dizer que as versões mais recentesefibootmgr
aceitarão um formato Unix/Linux mais tradicional e "traduzirão" internamente, mas não sei exatamente quando esse recurso foi adicionado, e você não disse qual versão do Ubuntu você deseja. você está usando. Portanto, recomendo que você use barras invertidas duplicadas ou entre aspas em vez de barras.
Por uma questão prática, é claro, se você tiver uma entrada funcional via bcfg
, não deverá haver necessidade de fazer mais nada com efibootmgr
. Presumo que você esteja perguntando porquedevefunciona e porque deseja poder realizar este tipo de manutenção no Ubuntu.
Responder2
Eu tive exatamente o mesmo problema. Tentei criar uma entrada de inicialização com efibootmgr usando o disco nvme. Ele não inicializou e o menu de inicialização na BIOS mostrou apenas caracteres japoneses (ou chineses?) Para essa entrada. A inspeção das entradas de inicialização de outro sistema operacional mostrou que a entrada recém-criada era do tipo VenHw.
No entanto, o problema era que o número da partição estava incorreto. Eu tinha partição root e algumas outras em volumes lvm criptografados. Então especifiquei aquela partição criptografada para efibootmgr em vez da partição /boot que deveria especificar. Provavelmente este não é o seu caso, mas ainda escrevo isso caso alguém encontre esse problema pelo mesmo motivo. Verifique novamente o número da sua partição e outros parâmetros do efibootmgr.
Responder3
Você precisa editar o arquivo refind.conf e alterar o caminho de volta para PciRoot. Anote toda a descrição do dispositivo, para que você possa inseri-la no arquivo conf. Apenas certifique-se de escolher o PciRoot correto;)