VirtualBox ne démarre que dans le shell UEFI Interactive

49

J'ai installé Ubuntu 14.10 dans VirtualBox avec UEFI. Mais maintenant, j'ai redémarré ce système d'exploitation et il démarre maintenant dans un UEFI Interactive Shell v2.0. Comment puis-je redémarrer normalement dans Grub?

Benjamin Stütz
la source
Bonne nouvelle à tous, avec VirtualBox 5.1, les solutions de contournement ne sont plus nécessaires. Vous devrez peut-être simplement ajouter une nouvelle entrée EFI (manuelle efibootmgrou automatiquement en réinstallant grub) pour redémarrer immédiatement Ubuntu.
phk
2
Même avec la version 5.1, les modifications apportées aux variables efi, telles que le paramètre de démarrage requis avec, efibootmgrsont perdues après l’arrêt (elles restent au redémarrage).
chappjc
1
5.1.30 il existe toujours. Même si la réparation est facile, je dois corriger chaque fois après avoir installé debian & ubuntu.
CallMeLaNN

Réponses:

52

J'ai rencontré le même problème et j'ai constaté que si j'émettais la commande suivante dans le shell interactif, la machine virtuelle démarrerait sous Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(L'utilisation de la barre oblique inversée, la barre oblique ne fonctionne pas. Les commandes du shell interactif UEFI sont sensibles à la casse.)

Ma version de VirtualBox est 4.3.20 r96997, la version Ubuntu est 14.10 AMD64. Je ne sais pas pourquoi cela se produit et comment le résoudre. Je viens de trouver cette solution de contournement pas élégante et toujours un peu gênante.

Mise à jour 1:

J'ai lu ceci , suivi un rapport de bogue et trouvé une meilleure solution de contournement .

Mise à jour 2:

La solution de contournement dans la mise à jour 1 a échoué. J'ai éteint la machine virtuelle, je l'ai lancée. Et il a de nouveau démarré dans le shell interactif UEFI. Selon cela , le problème était probablement dû à un bogue de VirtualBox. Je cherche toujours une solution supplémentaire à cela.

Mise à jour 3:

Enfin trouvé une solution. Selon cela , vous devez créer un script startup.nsh manuellement. À l'exception de la méthode mentionnée dans l'article suivant, vous pouvez également le faire:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"
Nairen Zheng
la source
3
« Il est actuellement impossible de manipuler des variables EFI à partir d'un invité en cours d' exécution » La solution dans votre deuxième misejour pour déplacer tout cebootloadervous voulez utiliser sur l'ESP\EFI\boot\bootx64.efisonne comme le mieux me solution queperdre 5 soconds wating pour startup.nsh . Remarque: vous pouvez appuyer sur la touche F12 pendant le démarrage ou entrerexitdans le shell EFI pour accéder aux paramètres du microprogramme et modifier toutes sortes d'éléments, y compris la résolution du terminal, mais ces modifications ne sont pas stockées de manière permanente.
LiveWireBT
Après avoir émis la commande dans le shell interactif, vous pouvez installer refindpour corriger EFI
Eduardo
1
Bon à savoir que c'est un bug. Simplement edit startup.nsh. +1 Il cherche \EFI\boot\bootx64.efià sauter les 5 secondes.
CallMeLaNN
1
Copier et renommer \EFI\ubuntu\shimx64.efien \EFI\boot\bootx64.efiest le meilleur. crédit
CallMeLaNN
La mise à jour 3 l'a fait pour moi ....
cljk
32

J'ai eu le même problème (avec le EFI activé parce que je ne pouvais pas le faire fonctionner autrement). Étrange; Bien que l'installation d'Ubuntu 14.04.2 ne génère pas d'erreur, l'installation de Kubuntu 15.04 n'a pas pu être finalisée. Il a gelé à la toute fin lorsqu'on lui a demandé de retirer le DVD. Après la réinitialisation, il a bien démarré, mais après la mise hors tension, il a amené shell.

Donc, pour éviter le type de shell:

fs0:
éditer startup.nsh

et sur la fenêtre ouverte ajoutez ces 2 lignes:

FS0:
\ EFI \ ubuntu \ grubx64.efi

appuyez sur Ctrl+ set Enterpour enregistrer et sur Ctrl+ qpour quitter. Puis redémarrez la VM.

Alternativement, vous pouvez toujours utiliser ces 2 lignes pour quitter shell et démarrer le système d'exploitation. Mais la deuxième fois que vous redémarrez, vous serez à nouveau dans un shell et vous éviterez de le modifier startup.nsh.

VRR
la source
Taper la commande fonctionne, mais le problème est que lors du prochain redémarrage, il retourne à ce shell et le fichier startup.nsh ne semble pas être enregistré.
Igor Čordaš
Pour enregistrer le fichier startup.nsh, vous devez utiliser Ctrl + S pour enregistrer et appuyer sur Entrée pour écrire dans le fichier.
Willoczy
2
Si vous n'utilisez pas Ubuntu, vous pouvez trouver le chemin correct pour votre machine à l'aide lsdu shell UEFI. Par exemple ls FS0:\EFI, ls FS0:\EFI\redhatpour apprendre que le chemin est FS0:\EFI\redhat\grub.efisur CentOS.
ntc2
1
@ ntc2 Merci, c'est exactement ce que je cherchais! Pour mon installation de Slackware, c’était FS0:\EFI\Slackware\elilo.efi.
fabiomaia
11

Une autre option consiste à décocher l'option Options étendues appelée "Activer EFI" sous "Carte mère" pour votre VM.

Si ce problème était apparu lors de l’installation de Gnome Ubuntu 12.04.2 amd64bit.

Découvert après avoir modifié les paramètres d'accélération matérielle. Il me restait à avoir VT-x / AMD-V, pagination imbriquée activée. Ma machine virtuelle a 2 processeurs, 8 Go de RAM pour référence.

Une fois la vérification effectuée, le problème est complètement ignoré. Gnome Ubuntu ne démarre pas. Exécution de Virtual Box 4.3.18 r96516 sur un hôte Windows 7 64 bits.

robocop
la source
1
Cela ne fonctionne que parce que Grub avait également un support hérité (MBR).
Paul Stelian
4

Copier grubx64.efivers /EFI/boot/bootx64.EFI
VirtualBox utilisez-le bootx64.efipour démarrer.
Réf .: Archlinux Virtualbox wiki

Cylgalad
la source
ta. Cela fonctionne, mais si grubx64.efi est mis à jour, bootx64.efi sera daté. lien vers une version du code source: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn le
Celui-ci est plus transparent que l'édition de la méthode startup.nsh , mais en réalité il ne sera pas mis à jour automatiquement et vous ne pouvez pas utiliser symlink non plus car il s'agit d'une partition FAT32.
Giorgi Gzirishvili
1

Je pourrais résoudre ce problème en modifiant le périphérique cdrom dans virtualbox d'IDE en SATA. J'ai supprimé le mappage standard du lecteur de cdrom virtuel dans la configuration du périphérique.

Ajoutez simplement un périphérique cdrom au contrôleur SATA existant à utiliser pour votre support d'installation.

Et voila, pas d'autres problèmes avec EFI.

Laurent
la source
1

J'ai récemment rencontré ce problème. Veuillez vérifier les paramètres de votre système d'exploitation virtuel. Faites un clic droit sur os virtuel-> système-> Fonctions étendues-> Activer EFI (décochez cette case).entrez la description de l'image ici

Sudip7
la source
8
Comment est-ce une solution si on veut utiliser UEFI?
Zygimantus
+1: Cela a résolu mon problème. J'avais vérifié expérimentalement Activer EFI et je l'avais oublié.
Wallyk
1

pour cela, vous devez l'écrire comme suit:

fs0:
cd EFI
cd ubuntu
grubx64

C'est comme ça que je l'ai fait fonctionner si vous l'écrivez d'une autre manière, cela ne fonctionnera pas.

Dan Duncker
la source
1

Un autre travail autour de:

Dans le shell uefi, démarrez temporairement Ubuntu en utilisant:

fs0:
cd EFI
cd ubuntu
grubx64

Ensuite, dans Ubuntu, éditez le fichier startup.nsh comme ci-dessous:

Terminal ouvert Ctrl+ Alt+ T.

Type:

sudo nano /boot/efi/startup.nsh

Tapez votre mot de passe.

Supprimez maintenant tout ce qui se trouve à l’aide de la touche del ou backspace.

Puis tapez ceci exactement: ( FS0- c'est le chiffre 0, pas l'alphabet O)

FS0:
\EFI\ubuntu\grubx64.efi

Maintenant, appuyez sur Ctrl+ O(c'est l'alphabet O).

Ensuite, Alt+ D(pour changer le texte au format msdos).

Puis appuyez sur Enter.

Alors Ctrl+ X.

Maintenant, redémarrez.

sudo reboot

Tout devrait bien se passer maintenant.

Ddm
la source
1

En utilisant Ubuntu 16.04.4 avec EFI activé et en démarrant la machine virtuelle, j’ai constaté qu’elle ne démarre pas et reste dans le shell interactif EFI.

Voici comment j'ai corrigé le démarrage:

Tout d’abord, j’ai trouvé que le fichier grubx64.efi se trouve dans BLK2. C’est pourquoi, pour un démarrage unique, j’ai tapé ce qui suit dans le shell interactif:

BLK2:/EFI/ubuntu/grubx64.efi

Et alto, Ubuntu est opérationnel.

J'ordonne de régler ce problème de façon permanente. Une fois le système installé, j'ai repris la ligne suivante dans /boot/efi/startup.nsh.

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

Ça y est, le système va démarrer correctement.

Yaron Morad
la source
0

Après avoir installé Kubuntu15.10 dans VirtualBox5 avec UEFI, le redémarrage de la machine virtuelle échoue.

Ajout de la ligne

FS0: \ EFI \ ubuntu \ grubx64.efi
dans l'UEFI-Shell ne aide pas.

Et la solution avec la création d’un nouveau fichier startup.nsh dans Kubuntu15.10 dans l’environnement chroot avec

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
ne donne également aucune amélioration.

J'ai trouvé la solution:

Le problème était que le répertoire / boot / efi / EFI / Ubuntu avec le fichier grubx64.efi n'existe pas.

Après avoir démarré un Live-CD et passé dans l'environnement chroot, j'ai installé les paquets manquants et créé l'entrée NVRAM requise avec:

sudo apt-get install grub-efi-amd64-signed shim-signed
sudo update-grub
sun312
la source
0

Pour définir ou modifier le répertoire de démarrage efi, vous devez d’abord exécuter cette commande. Cela a résolu mon problème.

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

REMARQUE: /dev/sdaest le disque dur du système.

utilisateur945376
la source