VirtualBox mem-boot hanya dalam UEFI Interactive shell


49

Saya menginstal Ubuntu 14.10 di VirtualBox dengan UEFI. Tapi sekarang saya telah reboot OS ini dan sekarang boot ke UEFI Interactive Shell v2.0. Bagaimana saya bisa boot secara normal ke Grub lagi?


Berita baik semua orang, dengan VirtualBox 5.1 solusi tidak diperlukan lagi. Anda mungkin harus menambahkan entri EFI baru (menggunakan manual efibootmgratau secara otomatis dengan menginstal ulang grub) sehingga boot Ubuntu segera.
phk

2
Bahkan dengan 5.1, perubahan pada variabel efi, seperti pengaturan boot yang diperlukan efibootmgrhilang setelah shutdown (mereka tetap di reboot).
chappjc

1
5.1.30 itu masih ada. Meskipun perbaikannya mudah, tetapi saya harus memperbaiki setiap kali setelah menginstal debian & ubuntu.
CallMeLaNN

Jawaban:


52

Saya mengalami masalah yang sama dan menemukan bahwa jika saya mengeluarkan perintah berikut dalam shell interaktif, mesin virtual akan boot ke Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Gunakan backslash, forward slash tidak berfungsi. Perintah di shell interaktif UEFI tidak sensitif huruf.)

Versi VirtualBox saya adalah 4.3.20 r96997, versi Ubuntu adalah 14.10 AMD64. Saya tidak tahu mengapa ini terjadi dan bagaimana menyelesaikannya. Hanya menemukan ini tidak elegan dan masih sedikit merepotkan.

Pembaruan 1:

Saya membaca ini , melacak laporan bug dan menemukan solusi yang lebih baik .

Pembaruan 2:

Penyelesaian dalam Pembaruan 1 gagal. Saya mematikan mesin virtual, meluncurkannya. Dan itu boot ke shell UEFI Interactive lagi. Menurut ini , masalah itu mungkin disebabkan oleh bug VirtualBox. Saya masih mencari solusi lebih lanjut untuk ini.

Pembaruan 3:

Akhirnya ditemukan solusinya. Menurut ini , Anda perlu membuat skrip startup.nsh secara manual. Kecuali untuk metode dalam posting yang disebutkan, Anda juga dapat melakukan ini:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"

3
"Saat ini tidak mungkin untuk memanipulasi variabel EFI dari dalam tamu yang sedang berjalan" Solusi dalam pembaruan kedua Anda untuk memindahkan bootloader apa pun yang ingin Anda gunakan pada ESP agar\EFI\boot\bootx64.efiterdengar seperti solusi yang lebih baik bagi saya daripada membuang 5 socond yang digunakan untuk startup.nsh . Catatan: Anda dapat menekan F12 saat boot atau masukexitke shell EFI untuk mengakses pengaturan firmware dan memodifikasi semua hal, termasuk resolusi terminal, tetapi modifikasi ini tidak disimpan secara permanen.
LiveWireBT

Setelah mengeluarkan perintah dalam shell interaktif, Anda dapat menginstal refinduntuk memperbaiki EFI
Eduardo

1
Senang mengetahui bahwa itu adalah bug. Cukup edit startup.nsh. +1 \EFI\boot\bootx64.efiSedang mencari untuk melewati 5sec.
CallMeLaNN

1
Salin dan ganti nama \EFI\ubuntu\shimx64.efimenjadi \EFI\boot\bootx64.efiyang terbaik. kredit
CallMeLaNN

Pembaruan 3 melakukannya untuk saya ....
cljk

32

Saya memiliki masalah yang sama (dengan EFI diaktifkan karena saya tidak bisa menjalankannya sebaliknya). Aneh; Meskipun instalasi Ubuntu 14.04.2 tidak mendapatkan kesalahan, menginstal Kubuntu 15.04 gagal diselesaikan. Itu membeku di bagian paling akhir ketika diminta untuk menghapus DVD. Setelah reset, itu boot baik-baik saja tetapi setelah dimatikan itu membawa shell.

Jadi, untuk menghindari jenis shell:

fs0:
edit startup.nsh

dan pada jendela yang terbuka tambahkan 2 baris ini:

FS0:
\ EFI \ ubuntu \ grubx64.efi

tekan Ctrl+ sdan Enteruntuk menyimpan dan Ctrl+ quntuk keluar. Kemudian restart VM.

Atau, Anda selalu dapat menggunakan 2 baris ini untuk keluar dari shell dan boot OS. Tetapi kedua kali Anda me-restart Anda akan di shell lagi dan untuk menghindari mengedit startup.nsh.


Mengetik perintah tidak bekerja tetapi masalahnya adalah bahwa pada restart berikutnya lagi pergi ke shell itu dan file startup.nsh tampaknya tidak disimpan.
Igor Čordaš

Untuk menyimpan file startup.nsh Anda perlu menggunakan Ctrl + S untuk menyimpan dan tekan Enter untuk menulis ke file.
Willoczy

2
Jika Anda tidak menggunakan Ubuntu, Anda bisa mengetahui jalur yang benar untuk mesin Anda gunakan lsdi shell UEFI. Misalnya ls FS0:\EFI, ls FS0:\EFI\redhatuntuk mengetahui path ada FS0:\EFI\redhat\grub.efidi CentOS.
ntc2

1
@ ntc2 Terima kasih, itulah yang saya cari! Untuk instalasi Slackware saya FS0:\EFI\Slackware\elilo.efi.
fabiomaia

11

Opsi lain adalah untuk tidak mencentang opsi Fitur yang diperluas yang disebut 'Aktifkan EFI' di bawah 'Motherboard' untuk VM Anda.

Apakah masalah ini muncul untuk instalasi Gnome Ubuntu 12.04.2 amd64bit.

Menemukan ini setelah harus mengubah pengaturan untuk akselerasi perangkat keras. Saya memiliki VT-x / AMD-V, Nested Paging diaktifkan. VM saya memiliki 2 CPU, 8GB RAM untuk referensi.

Setelah tidak memeriksa masalah, Gnome Ubuntu benar-benar lolos tanpa ada masalah. Menjalankan Virtual Box 4.3.18 r96516 pada Windows 7 64-bit Host.


1
Ini hanya berfungsi karena Grub juga memiliki dukungan legacy (MBR).
Paul Stelian

4

Salin grubx64.efike /EFI/boot/bootx64.EFI
VirtualBox gunakan itu bootx64.efiuntuk boot.
Ref .: Archlinux Virtualbox wiki


ta. Ini berfungsi tetapi jika grubx64.efi diperbarui maka bootx64.efi akan diberi tanggal. tautan ke versi kode sumber: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

Yang ini lebih mulus daripada mengedit metode startup.nsh , tetapi memang itu tidak akan diperbarui secara otomatis dan Anda tidak dapat menggunakan symlink karena itu adalah partisi FAT32.
Giorgi Gzirishvili

1

Saya bisa mengatasi masalah ini dengan mengubah perangkat cdrom dalam virtualbox dari IDE ke SATA. Saya menghapus pemetaan standar drive cdrom virtual dalam konfigurasi perangkat.

Cukup tambahkan perangkat cdrom ke SATA Controller yang ada yang akan digunakan untuk media instalasi Anda.

Et voila, tidak ada masalah lebih lanjut dengan EFI.


1

Saya baru-baru ini mengalami masalah ini. Silakan periksa pengaturan OS virtual Anda. Klik kanan pada virtual os-> system-> Extended features-> Enable EFI (hapus centang ini).masukkan deskripsi gambar di sini


8
Bagaimana ini solusi jika seseorang ingin menggunakan UEFI?
zygimantus

+1: Ini menyelesaikan masalah saya. Saya telah secara eksperimental memeriksa Aktifkan EFI dan lupa tentangnya.
wallyk

1

untuk ini, Anda perlu menulis seperti berikut:

fs0:
cd EFI
cd ubuntu
grubx64

ini adalah bagaimana saya membuatnya bekerja jika Anda menulisnya dengan cara lain itu tidak akan berhasil.


1

Pekerjaan lain di sekitar:

Di shell uefi, boot sementara ke ubuntu menggunakan:

fs0:
cd EFI
cd ubuntu
grubx64

Kemudian, di dalam ubuntu, edit file startup.nsh seperti di bawah ini:

Buka terminal Ctrl+ Alt+ T.

Tipe:

sudo nano /boot/efi/startup.nsh

Masukkan kata sandi Anda.

Sekarang hapus semua yang ada di sana menggunakan tombol del atau backspace.

Kemudian ketikkan ini persis: ( FS0- yaitu angka 0, bukan alfabet O)

FS0:
\EFI\ubuntu\grubx64.efi

Sekarang tekan Ctrl+ O(Itu alfabet O).

Kemudian, Alt+ D(Untuk mengubah teks ke format msdos).

Lalu tekan Enter.

Kemudian Ctrl+ X.

Sekarang reboot.

sudo reboot

Semuanya harus baik-baik saja sekarang.


1

Menggunakan Ubuntu 16.04.4 dengan EFI diaktifkan dan ketika memulai mesin virtual saya menemukan bahwa itu tidak akan boot dan hanya tinggal di shell interaktif EFI.

Inilah cara saya memperbaiki boot:

Pertama, saya menemukan bahwa grubx64.efi terletak di BLK2, jadi untuk satu kali boot saya baru saja mengetik yang berikut di shell interaktif:

BLK2:/EFI/ubuntu/grubx64.efi

Dan viola, Ubuntu sudah aktif.

Saya memesan untuk memperbaiki masalah ini secara permanen, setelah sistem dinyalakan, saya menggemakan baris berikut ke /boot/efi/startup.nsh.

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

Itu saja, sistem akan boot dengan benar.


0

Setelah menginstal Kubuntu15.10 di VirtualBox5 dengan UEFI, reboot VM gagal.

Menambahkan garis

FS0: \ EFI \ ubuntu \ grubx64.efi
di UEFI-Shell tidak membantu.

Dan solusinya dengan membuat file startup.nsh baru di Kubuntu15.10 di lingkungan chroot bersama

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
memberi juga tidak ada perbaikan.

Saya menemukan solusinya:

Masalahnya adalah, bahwa direktori / boot / efi / EFI / ubuntu dengan file grubx64.efi tidak ada.

Setelah mem-boot Live-CD dan mengubah ke lingkungan chroot, saya menginstal paket yang hilang dan membuat entri NVRAM yang diperlukan dengan:

sudo apt-get install grub-efi-amd64-shim-signed
sudo perbarui-grub

0

Untuk mendefinisikan atau mengubah direktori boot efi perlu terlebih dahulu menjalankan perintah ini. Ini menyelesaikan masalah saya.

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

CATATAN: /dev/sdaadalah hard disk sistem.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.