O VirtualBox não pode encontrar o arquivo .efi para carregar

1

Eu instalei recentemente outro sistema Linux no VirtualBox. Mas com o EFI. Desta vez foi Manjaro Linux, mas isso não importa realmente.

O problema

O carregador de inicialização do VirtualBox EFI não vê .efi arquivos para continuar carregando o SO.

MinhasoluçãofoiinicializarapartirdoCD/DVDe,emseguida,selecionarDetectbootloadersEFI

Mas usar essa solução alternativa constantemente não é um bom caminho.

A questão

Como corrigir esse comportamento inconveniente - como dizer ao VirtualBox EFI onde encontrar .efi files-bootloaders.

    
por kyb 24.10.2017 / 22:20

2 respostas

2

Tente esta sequência:

Shell> fs0:
edit startup.nsh
\EFI\Manjaro\grubx64.efi
ctrl-s <cr>
<enter>
ctrl-q <cr>
reset

Nota \EFI\Manjaro\grubx64.efi pode diferir dependendo do sistema de concreto. Por exemplo. \EFI\ubuntu\grubx64.efi

Resolução de problemas

Se você receber edit: Access Denied - desmonte todos os CDs e DVDs. Do que deveria funcionar.
O comando ls pode ajudar a entender o que está montado como fs0 e pode ser que você queira experimentar outros fsX: .

Links

A configuração de inicialização EFI não pode ser persistente nos fóruns. virtualbox.org
Como iniciar o host EFI Vbox para o sistema operacional Ubuntu / Linux no youtube
Obrigado pessoal.

    
por 24.10.2017 / 22:51
2

Em uma configuração normal, o firmware EFI rastreia os carregadores de inicialização EFI na NVRAM. Quando você instala um sistema operacional, ele deve registrar seu carregador de boot com o firmware, e o resultado é uma entrada NVRAM que aponta para o carregador de boot, e o firmware pode iniciar o carregador de boot. Isso normalmente funciona bem, embora haja problemas com as entradas da NVRAM sendo apagadas ou danificadas mesmo em hardware "real". O VirtualBox, infelizmente, faz um trabalho ruim de armazenar seus dados "NVRAM" entre os usos; Ele tende a começar com um novo conjunto de dados padrão toda vez que você o inicia. Isso acaba causando estragos com a capacidade de lançar praticamente qualquer coisa.

IMHO, a solução mais simples é armazenar um carregador de boot usando o nome de arquivo de fallback de EFI/BOOT/bootx64.efi (sem distinção entre maiúsculas e minúsculas) na EFI Partição do Sistema (ESP) do disco virtualizado. Se um EFI não puder inicializar mais nada, ele tentará inicializar este gerenciador de inicialização. De modo geral, se você estiver instalando uma distribuição do Linux, existem duas maneiras de fazer isso:

  • Você pode armazenar uma cópia do seu gerenciador de inicialização normal lá. Não sei o que o Manjaro usa por padrão ou onde o armazena, mas supondo que ele use EFI/manjaro/grubx64.efi , você copia ou renomeia EFI/manjaro para EFI/BOOT e renomeia grubx64.efi nesse diretório para bootx64.efi . Você poderia usar algo diferente do carregador de inicialização padrão do Manjaro, se preferir. Consulte minha página sobre o assunto para obter informações sobre o que está disponível.
  • Você pode usar fallback.efi ou fbx64.efi (o mesmo programa, nomes diferentes). Este programa EFI provavelmente já está instalado em algum ponto do seu ESP ou, pelo menos, está disponível em algum pacote da sua distribuição (talvez GRUB ou Shim). Você copia esse arquivo para EFI/BOOT/bootx64.efi e, em seguida, cria um arquivo BOOT.CSV no diretório onde o carregador de inicialização real existe. Este arquivo contém dados sobre o nome do carregador de inicialização real e os dados relacionados, como grubx64.efi,Manjaro,,This is the boot entry for Manjaro . Importante, este arquivo deve ser UCS-2 ou UTF-16 , não simples ASCII. Quando fallback.efi / fbx64.efi é iniciado (como bootx64.efi ), ele procura por .CSV arquivos nos subdiretórios de EFI no ESP. Se encontrar algum, ele os usa para gerar novas entradas NVRAM. Isso se destina a ajudar na recuperação de entradas NVRAM perdidas, portanto, é uma maneira de contornar o problema de "amnésia NVRAM" do VirtualBox.

A primeira abordagem provavelmente será mais fácil de configurar, com a ressalva de que as configurações do GRUB podem ser complicadas. Se a sua procura por grub.cfg no ESP, você deve ter certeza de que permanece onde o GRUB espera, portanto você pode ou não precisar movê-la. Além disso, se o seu sistema de pacotes fornecer um GRUB atualizado, você precisará copiá-lo novamente para obter os benefícios do novo pacote. A segunda abordagem é mais difícil de explicar e um pouco mais tediosa de configurar, mas estou começando a preferir, porque facilita a instalação de atualizações no gerenciador de inicialização.

Existem outras abordagens para contornar o problema, como usar um script de inicialização do shell EFI, como o kyb sugere (mas isso resultará em tempos de inicialização maiores do que a minha solução acima). Além disso, no passado, era possível criar uma nova entrada NVRAM usando a própria interface de firmware do VirtualBox, e isso seria persistente; mas isso parece ter parado de funcionar em algum momento - ou pelo menos, da última vez que tentei, não funcionou.

    
por 30.10.2017 / 17:55