efibootmgr cria uma entrada na qual DevPath é definido como Venhw em vez de PciRoot

efibootmgr cria uma entrada na qual DevPath é definido como Venhw em vez de PciRoot

Olá, estou com um grande problema porque, quando uso efibootmgrpara 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 -va diferença entre as entradas efibootmgr e bcfg é a seguinte:

A DevPathentrada para a entrada feita pelo bcfg é PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efienquanto 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 efibootmgrestiver criando uma entrada como você descreve ( VenHw(99E275E7-75AO-4B37)), isso soa como um bug no efibootmgrfirmware. Dito isto, considere o efibootmgrcomando 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 de acima. 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 -popção .efibootmgr
  • Especificação de arquivo-- Versões mais antigas exigem efibootmgrque 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.efiou -l "\EFI\refind\refind_x64.efi. Ouvi dizer que as versões mais recentes efibootmgraceitarã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;)

informação relacionada