VirtualBox tidak dapat menemukan file .efi untuk dimuat

1

Saya baru saja menginstal sistem Linux lain ke dalam VirtualBox. Tetapi dengan EFI. Kali ini Manjaro Linux, tetapi ini tidak terlalu penting.

Masalah

Bootloader EFI VirtualBox tidak melihat .efifile untuk melanjutkan memuat OS.

Shell EFI dan jadi apa?

Solusi saya adalah mem-boot dari CD / DVD dan kemudian pilih Detect EFI bootloader

Tetapi menggunakan solusi seperti itu terus-menerus bukanlah cara yang baik.

Pertanyaan

Bagaimana cara memperbaiki perilaku tidak nyaman tersebut - bagaimana cara memberitahu VirtualBox EFI di mana menemukan .efifile-bootloader.

Kyb
sumber

Jawaban:

2

Coba urutan ini:

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

Catatan \EFI\Manjaro\grubx64.efidapat berbeda tergantung pada sistem beton. Misalnya\EFI\ubuntu\grubx64.efi

Penyelesaian masalah

Jika Anda menerima edit: Access Denied- lepaskan semua CD dan DVD. Daripada itu seharusnya berhasil.
Perintah lsdapat membantu untuk memahami apa yang sudah terpasang fs0, dan mungkin Anda ingin mencoba yang lain fsX:.

Tautan

Konfigurasi boot EFI tidak dapat bertahan di forums.virtualbox.org
Cara Memulai EFI Vbox host untuk Ubuntu / Linux OS di youtube
Terima kasih kawan .

Kyb
sumber
2

Dalam konfigurasi normal, firmware EFI melacak bootloader EFI di NVRAM. Ketika Anda menginstal OS, itu seharusnya mendaftarkan boot loader-nya dengan firmware, dan hasilnya adalah entri NVRAM yang menunjuk ke boot loader, dan firmware dapat meluncurkan boot loader. Ini biasanya berfungsi OK, meskipun ada masalah dengan entri NVRAM yang dihapus atau menjadi rusak bahkan pada perangkat keras "nyata". VirtualBox, sayangnya, melakukan pekerjaan yang buruk untuk menyimpan data "NVRAM" antara penggunaan; cenderung memulai dengan set data default baru setiap kali Anda meluncurkannya. Ini akhirnya menimbulkan malapetaka dengan kemampuan untuk meluncurkan apa saja.

IMHO, solusi paling sederhana adalah dengan menyimpan bootloader menggunakan nama file fallback dari EFI/BOOT/bootx64.efi(case-insensitive) pada EFI System Partition (ESP) dari disk tervirtualisasi. Jika EFI tidak dapat melakukan boot apa pun, EFI akan mencoba menjalankan bootloader boot ini. Secara umum, jika Anda menginstal distribusi Linux, ada dua cara untuk melakukan ini:

  • Anda dapat menyimpan salinan bootloader reguler Anda di sana. Aku tidak tahu apa yang Manjaro menggunakan secara default atau di mana menyimpannya, tapi seandainya menggunakan EFI/manjaro/grubx64.efi, Anda akan menyalin atau mengubah nama EFI/manjarountuk EFI/BOOTkemudian mengubah nama grubx64.efidi direktori untuk bootx64.efi. Anda bisa menggunakan sesuatu selain boot loader default Manjaro, jika Anda mau. Lihat halaman saya pada subjek untuk informasi tentang apa yang tersedia.
  • Anda dapat menggunakan fallback.efiatau fbx64.efi(program yang sama, nama yang berbeda). Program EFI ini kemungkinan sudah diinstal entah di mana di ESP Anda atau setidaknya tersedia dalam beberapa paket dalam distribusi Anda (mungkin GRUB atau Shim). Anda akan menyalin file ini ke EFI/BOOT/bootx64.efidan kemudian membuat BOOT.CSVfile di direktori tempat boot loader nyata ada. File ini menyimpan data pada nama boot loader sebenarnya dan data terkait, seperti grubx64.efi,Manjaro,,This is the boot entry for Manjaro. Yang penting, file ini harus UCS-2 atau UTF-16 , bukan ASCII biasa. Ketika fallback.efi/ fbx64.efimeluncurkan (as bootx64.efi), ia mencari .CSVfile di subdirektori dariEFIdi ESP. Jika ditemukan, ia menggunakannya untuk menghasilkan entri NVRAM baru. Ini dimaksudkan untuk membantu memulihkan entri NVRAM yang hilang, jadi ini adalah salah satu cara untuk mengatasi masalah VirtualBox "NVRAM amnesia".

Pendekatan pertama cenderung lebih mudah untuk diatur, dengan peringatan bahwa konfigurasi GRUB dapat menjadi rumit. Jika Anda mencari grub.cfgdi ESP, Anda harus yakin itu tetap di tempat GRUB mengharapkannya, jadi Anda mungkin atau mungkin tidak perlu memindahkannya. Juga, jika sistem paket Anda memberikan GRUB yang diperbarui, Anda harus menyalinnya lagi untuk mendapatkan manfaat dari paket yang baru. Pendekatan kedua lebih sulit untuk dijelaskan dan sedikit lebih membosankan untuk diatur, tapi saya mulai lebih suka karena itu membuat pembaruan ke boot loader lebih mudah untuk diinstal.

Ada beberapa pendekatan lain untuk mengatasi masalah, juga, seperti menggunakan skrip startup shell EFI, seperti yang disarankan kyb (tetapi ini akan menghasilkan waktu startup yang lebih lama daripada solusi saya di atas). Juga, di masa lalu, dimungkinkan untuk membuat entri NVRAM baru menggunakan antarmuka firmware VirtualBox itu sendiri, dan ini akan tetap ada; tetapi ini tampaknya telah berhenti bekerja di beberapa titik - atau setidaknya, terakhir kali saya mencobanya, itu tidak berhasil.

Rod Smith
sumber