O VirtualBox é inicializado apenas no shell UEFI Interactive

49

Eu instalei o Ubuntu 14.10 no VirtualBox com UEFI. Mas agora eu reiniciei este SO e agora ele inicializa em um UEFI Interactive Shell v2.0. Como posso inicializar normalmente no Grub novamente?

Benjamin Stütz
fonte
Boas notícias a todos, com o VirtualBox 5.1, as soluções alternativas não são mais necessárias. Você pode apenas precisar adicionar uma nova entrada EFI (manual usando efibootmgrou automaticamente reinstalando o grub) para inicializar o Ubuntu imediatamente novamente.
Ph16
2
Mesmo com o 5.1, as alterações nas variáveis ​​efi, como a configuração de inicialização necessária, efibootmgrsão perdidas após o desligamento (elas permanecem na reinicialização).
Chappjc
1
5.1.30 ainda existe. Mesmo que a correção seja fácil, mas eu tenho que corrigir sempre que instalar o debian e o ubuntu.
CallMeLaNN 26/11

Respostas:

52

Encontrei o mesmo problema e descobri que, se eu emitir o seguinte comando no shell interativo, a máquina virtual inicializaria no Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Use barra invertida, a barra não funciona. Os comandos no shell interativo UEFI não diferenciam maiúsculas de minúsculas.)

Minha versão do VirtualBox é 4.3.20 r96997, a versão do Ubuntu é 14.10 AMD64. Não sei por que isso acontece e como resolvê-lo. Só achei isso uma solução alternativa não elegante e ainda um pouco problemática.

Atualização 1:

Eu li isso , procurei um relatório de erro e encontrei uma solução melhor .

Atualização 2:

Solução alternativa na atualização 1 falhou. Desliguei a máquina virtual e a iniciei. E foi inicializado no shell UEFI Interactive novamente. De acordo com isso , o problema provavelmente foi causado por um bug do VirtualBox. Ainda estou procurando uma solução adicional para isso.

Atualização 3:

Finalmente encontrei uma solução. De acordo com isso , você precisa criar um script startup.nsh manualmente. Exceto pelo método no post mencionado, você também pode fazer isso:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"
Nairen Zheng
fonte
3
"No momento, não é possível manipular variáveis ​​EFI de um convidado em execução" A solução em sua segunda atualização para mover o gerenciador de inicialização que você deseja usar no ESP\EFI\boot\bootx64.efiparece ser a melhor solução para mim do que desperdiçar 5 segundos para a inicialização.nsh . Nota: Você pode pressionar F12 durante a inicialização ou entrarexitno shell EFI para acessar as configurações de firmware e modificar todos os tipos de coisas, incluindo a resolução do terminal, mas essas modificações não são armazenadas permanentemente.
LiveWireBT
Depois de emitir o comando no shell interativo que você pode instalar refindpara corrigir EFI
Eduardo
1
É bom saber que é um bug. Simplesmente edit startup.nsh. +1 Ele está procurando \EFI\boot\bootx64.efipular os 5seg.
CallMeLaNN
1
Copiar e renomear \EFI\ubuntu\shimx64.efipara \EFI\boot\bootx64.efié o melhor. crédito
CallMeLaNN
A atualização 3 fez isso por mim ...
cljk 26/03
32

Eu tive o mesmo problema (com o EFI ativado porque não consegui fazê-lo funcionar de outra maneira). Estranho; embora a instalação do Ubuntu 14.04.2 não tenha erros, a instalação do Kubuntu 15.04 falhou ao finalizar. Ele congelou no final quando solicitado a remover o DVD. Após a reinicialização, ele inicializou bem, mas após o desligamento, ele trouxe o shell.

Portanto, para evitar o tipo de shell:

fs0:
editar startup.nsh

e na janela aberta adicione estas 2 linhas:

FS0:
\ EFI \ ubuntu \ grubx64.efi

pressione Ctrl+ se Enterpara salvar e Ctrl+ qpara sair. Em seguida, reinicie a VM.

Como alternativa, você sempre pode usar essas 2 linhas para sair do shell e inicializar o SO. Mas na segunda vez que você reiniciar, você estará em um shell novamente e evitará editá-lo startup.nsh.

VRR
fonte
Digitar o comando funciona, mas o problema é que, na próxima reinicialização, ele voltará para o shell e o arquivo startup.nsh não parece ser salvo.
Igor Čordaš
Para salvar o arquivo startup.nsh, você precisa usar Ctrl + S para salvar e pressionar Enter para gravar no arquivo.
Willoczy
2
Caso você não esteja usando o Ubuntu, você pode descobrir o caminho correto para sua máquina usando lso shell UEFI. Por exemplo ls FS0:\EFI, então ls FS0:\EFI\redhat, para aprender o caminho está FS0:\EFI\redhat\grub.efino CentOS.
Ntc2 13/0218
1
@ ntc2 Obrigado, era exatamente o que eu estava procurando! Para a minha instalação do Slackware foi FS0:\EFI\Slackware\elilo.efi.
Fabiomaia
11

Outra opção é desmarcar a opção Recursos Estendidos chamada 'Ativar EFI' em 'Placa-mãe' para sua VM.

Este problema surgiu para a instalação do Gnome Ubuntu 12.04.2 amd64bit.

Descobriu isso depois de ter que alterar as configurações de aceleração de hardware. Fiquei com a opção VT-x / AMD-V, Nested Paging ativada. Minha VM tem 2 CPUs, 8 GB de RAM para referência.

Após desmarcar a questão, o Gnome Ubuntu é completamente ignorado. O Ubuntu não inicia nenhum problema. Executando o Virtual Box 4.3.18 r96516 no Windows 7 Host de 64 bits.

robocop
fonte
1
Isso só funciona porque o Grub também tinha suporte legado (MBR).
Paul Stelian
4

Copie grubx64.efipara o /EFI/boot/bootx64.EFI
VirtualBox e use-o bootx64.efipara inicializar.
Ref .: Wiki do Archlinux Virtualbox

cylgalad
fonte
ta. Isso funciona, mas se o grubx64.efi for atualizado, o bootx64.efi será datado. link para uma versão do código-fonte: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn
Este é mais fácil do que editar o método startup.nsh , mas, na verdade, não será atualizado automaticamente e você também não pode usar o link simbólico porque é uma partição FAT32.
Giorgi Gzirishvili
1

Eu poderia resolver esse problema alterando o dispositivo cdrom na caixa virtual do IDE para SATA. Eu removi o mapeamento padrão da unidade virtual de cdrom na configuração do dispositivo.

Simplesmente adicione um dispositivo cdrom ao SATA Controller existente, que será usado na mídia de instalação.

Et voila, sem mais problemas com EFI.

Laurent
fonte
1

Encontrei recentemente esse problema. Por favor, verifique as configurações do seu sistema operacional virtual. Clique com o botão direito do mouse em os-> sistema-> Recursos estendidos-> Ativar EFI (desmarque isso).insira a descrição da imagem aqui

Sudip7
fonte
8
Como isso é uma solução se alguém deseja usar UEFI?
Zygimantus
+1: Isso resolveu meu problema. Eu tinha verificado experimentalmente Ativar EFI e esqueci.
wallyk 4/03
1

para isso, você precisa escrevê-lo da seguinte maneira:

fs0:
cd EFI
cd ubuntu
grubx64

é assim que eu consegui que funcionasse se você escrevesse de outra maneira, não funcionará.

Dan Duncker
fonte
1

Outra solução:

No shell uefi, inicialize temporariamente no ubuntu usando:

fs0:
cd EFI
cd ubuntu
grubx64

Então, dentro do ubuntu, edite o arquivo startup.nsh como abaixo:

Abra o terminal Ctrl+ Alt+ T.

Tipo:

sudo nano /boot/efi/startup.nsh

Coloque sua senha.

Agora exclua tudo o que estiver lá usando a tecla del ou backspace.

Digite exatamente isso: ( FS0- esse é o numeral 0, não o alfabeto O)

FS0:
\EFI\ubuntu\grubx64.efi

Agora pressione Ctrl+ O(Isso é alfabeto O).

Depois, Alt+ D(Para alterar o texto para o formato msdos).

Então pressione Enter.

Então Ctrl+ X.

Agora reinicie.

sudo reboot

Tudo deve estar bem agora.

Ddm
fonte
1

Usando o Ubuntu 16.04.4 com a EFI ativada e ao iniciar a máquina virtual, descobri que ela não inicializa e permanece no shell interativo da EFI.

Foi assim que eu consertei a inicialização:

Primeiro, descobri que o grubx64.efi está localizado no BLK2; portanto, durante uma inicialização única, digitei o seguinte no shell interativo:

BLK2:/EFI/ubuntu/grubx64.efi

E viola, o Ubuntu está instalado e funcionando.

Para resolver esse problema permanentemente, depois que o sistema foi iniciado, ecoei a seguinte linha no /boot/efi/startup.nsh.

sudo echo 'BLK2:/EFI/ubuntu/grubx64.efi' > /boot/efi/startup.nsh

É isso, o sistema irá inicializar corretamente.

Yaron Morad
fonte
0

Após a instalação do Kubuntu15.10 no VirtualBox5 com UEFI, a reinicialização da VM falha.

Adicionando a linha

FS0: \ EFI \ ubuntu \ grubx64.efi
no UEFI-Shell não ajuda.

E a solução com a criação de um novo arquivo startup.nsh no Kubuntu15.10 no ambiente chroot com

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
também não melhora.

Eu encontrei a solução:

O problema era que o diretório / boot / efi / EFI / ubuntu com o arquivo grubx64.efi não existe.

Após inicializar um Live-CD e mudar para o ambiente chroot, instalei os pacotes ausentes e criei a entrada NVRAM necessária com:

sudo apt-get install grub-efi-amd64-assinado shim-assinado
sudo update-grub
sun312
fonte
0

Para definir ou alterar o diretório efi boot, primeiro é necessário executar este comando. Isso resolveu meu problema.

sudo grub-install /dev/sda --target=x86_64-efi --efi-directory=/boot/efi/

NOTA: /dev/sdaé o disco rígido do sistema.

user945376
fonte