efibootmgr cria uma entrada na qual o DevPath é definido como Venhw istead de PciRoot

0

Olá, eu tenho um grande problema, porque você vê quando eu uso efibootmgr para criar uma entrada de boot que apenas faz 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 muito bem. O comando efibootmgr usado é: efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd" enquanto o bcfg um é: 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:

O DevPath para a entrada feita pelo bcfg é PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efi , enquanto que para a entrada feita do efiboomgr é apenas VenHw(99E275E7-75AO-4B37)

Você tem uma ideia de como fazer com que o efibootmgr funcione? Ou, como alternativa, qual opção na chamada de comando eu preciso usar para especificar os parâmetros do kernel com bcfg?

    
por ChiseledAbs 04.02.2016 / 11:57

2 respostas

0

Se efibootmgr estiver criando uma entrada como você descreve ( VenHw(99E275E7-75AO-4B37) ), isso soa como um erro em efibootmgr ou no firmware. Dito isso, considere o comando efibootmgr que você especificou:

efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"

Existem duas coisas que são incomuns sobre isso:

  • Dispositivo de disco - A maioria dos dispositivos de disco no Linux tem nomes no formato /dev/sd? , em que ? é uma letra de a up. Alguns dispositivos, como alguns cartões SSD, possuem nomes de arquivos que assumem outros formatos, como /dev/mmcblk0 (que vem da memória e pode não estar certo). Não me lembro de ver um nome de dispositivo como /dev/nvme0n1 . Isso não quer dizer que é errado, mas pelo menos é incomum, e você deve verificar novamente. Eu tomaria muito cuidado para não incluir o número da partição - é para isso que a opção -p para efibootmgr é.
  • Especificação de arquivo - Versões mais antigas de efibootmgr exigem que os arquivos sejam especificados usando a sintaxe EFI - ou seja, com barras invertidas ( \ ) em vez de barras ( / ) separando entradas de diretório. Como os shells do Linux geralmente tratam as barras invertidas de maneira única, isso também exige que o nome de caminho inteiro seja citado ou duplicado nas barras invertidas, portanto, você deve especificar -l \EFI\refind\refind_x64.efi ou -l "\EFI\refind\refind_x64.efi . Ouvi dizer que as versões mais recentes de efibootmgr aceitarão um formulário 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 de Ubuntu você está usando. Assim, eu recomendo que você use barras duplas invertidas ou citadas ao invés de barras.

Como uma questão prática, é claro, se você tem uma entrada de trabalho via bcfg , não deve fazer mais nada com efibootmgr . Eu suponho que você esteja perguntando, porque deve funcionar e porque você quer ser capaz de executar este tipo de manutenção do Ubuntu.

    
por Rod Smith 04.02.2016 / 15:46
-1

Você precisa editar o arquivo refind.conf e alterar o caminho de volta para o PciRoot. Anote toda a descrição do dispositivo, para que você possa inseri-lo no arquivo conf. Apenas certifique-se de escolher o PciRoot correto;)

    
por Kali 04.02.2016 / 12:45