VirtualBox yalnızca UEFI Etkileşimli kabuğunda önyükleme yapar


49

Ubuntu 14.10'u VirtualBox'a UEFI ile yükledim. Ama şimdi bu işletim sistemini yeniden başlattım ve şimdi UEFI Interactive Shell v2.0'a önyükleme yapıyor. Normalde tekrar Grub'a nasıl başlatabilirim?


Herkese müjde, VirtualBox 5.1 ile bu geçici çözümlere ihtiyaç duyulmaz. Sadece yeni bir EFI girişi eklemeniz gerekebilir (grubunu kullanarak manuel efibootmgrveya otomatik olarak yeniden yükleme), böylece Ubuntu'yu hemen yeniden başlatır.
phk

2
5.1 ile bile, gerekli önyükleme ayarı ile birlikte efibootmgrkapattıktan sonra efi değişkenlerinde yapılan değişiklikler kaybolur (yeniden başlatmaya devam ederler).
chappjc

1
5.1.30 hala var. Düzeltme kolay olsa da, debian & ubuntu kurduktan sonra her zaman düzeltmem gerekiyor.
CallMeLaNN 26:17

Yanıtlar:


52

Aynı sorunla karşılaştım ve etkileşimli kabukta aşağıdaki komutu uygularsam sanal makinenin Ubuntu'ya önyükleneceğini öğrendim:

fs0:\efi\ubuntu\grubx64.efi

(Ters eğik çizgi kullanın, eğik çizgi çalışmıyor. UEFI etkileşimli kabuğundaki komutlar büyük / küçük harf duyarlı değildir.)

VirtualBox versiyonum 4.3.20 r96997, Ubuntu versiyonum 14.10 AMD64. Bunun neden olduğunu ve nasıl çözüleceğini bilmiyorum. Sadece bu zarif değil ve hala biraz sıkıcı geçici çözüm bulundu.

Güncelleme 1:

Okuduğum bu , aşağı izlenen bir hata raporuna ve bulunan daha iyi bir çözüm .

Güncelleme 2:

Güncelleştirme 1'deki geçici çözüm başarısız oldu. Sanal makineyi kapattım, başlattım. Ve yine UEFI Interactive kabuğuna açıldı. Göre bu sorun muhtemelen bir VirtualBox böcek tarafından neden oldu. Hala bunun için daha fazla çözüm arıyorum.

Güncelleme 3:

Sonunda bir çözüm buldum. Göre bu , elle startup.nsh komut dosyası oluşturmak gerekir. Belirtilen gönderideki yöntem dışında, bunu da yapabilirsiniz:

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

3
"Şu anda çalışan bir misafirin içinden EFI değişkenlerini değiştirmek mümkün değil" İkinci güncellemenizde,\EFI\boot\bootx64.efiESP'dekullanmak istediğiniz önyükleyiciyi, başlangıç ​​için isteyen5 harcı harcamaktan daha iyi bir çözüm gibi görünecekşekilde taşımak için kullandığınızçözüm. . Not: Önyükleme sırasında F12 tuşuna basabilir veyaexitürün yazılımı ayarlarına erişmek ve terminal çözünürlüğü dahil her türlü şeyi değiştirmek için EFI kabuğunagirebilirsiniz, ancak bu değişiklikler kalıcı olarak kaydedilmez.
LiveWireBT

Komutu etkileşimli kabukta verdikten sonra, EFI'yi refinddüzeltmek için kurabilirsiniz
Eduardo

1
Bunun bir hata olduğunu bilmek güzel. Basitçe edit startup.nsh. +1 \EFI\boot\bootx64.efi5sn atlamak için arıyor .
CallMeLaNN 26:17

1
Kopyala ve yeniden adlandırmak \EFI\ubuntu\shimx64.efiiçin \EFI\boot\bootx64.efien iyisidir. credit
CallMeLaNN

Güncelleme 3 benim için yaptı ....
cljk

32

Aynı problemi yaşadım ( EFI etkinken, aksi halde çalışmasını sağlayamadım). Garip; Ubuntu 14.04.2'nin kurulumu hata vermediyse de, Kubuntu 15.04'ün kurulumu tamamlanamadı. DVD'yi çıkarmanız istendiğinde en sonunda dondu. Sıfırlamadan sonra, iyi bir şekilde başlatıldı, ancak kapattıktan sonra kabuk çıkardı.

Yani, kabuk türünü önlemek için:

fs0:
Düzenle

ve açılan pencerede şu 2 satırı ekleyin:

FS0:
\ EFI \ ubuntu \ grubx64.efi

basın Ctrl+ sve Enterkaydetmek ve Ctrl+ qçıkmak için. Ardından VM'yi yeniden başlatın.

Alternatif olarak, kabuktan ve önyükleme işletim sisteminden çıkmak için her zaman bu 2 satırı kullanabilirsiniz. Ancak ikinci kez yeniden başlattığınızda tekrar bir kabuk olacaksınız ve düzenlemeden kaçınmak için startup.nsh.


Komutu yazmak işe yarıyor ancak sorun şu ki, bir sonraki yeniden başlatmada tekrar bu kabuğa gidiyor ve dosya startup.nsh kaydedilmemiş görünüyor.
Igor Čordaš

Startup.nsh dosyasını kaydetmek için, kaydetmek için Ctrl + S tuşlarını kullanmanız ve dosyaya yazmak için Enter tuşuna basmanız gerekir.
Willoczy

2
Ubuntu kullanmıyorsanız ls, UEFI kabuğunda kullanarak makineniz için doğru yolu belirleyebilirsiniz . Örneğin ls FS0:\EFI, daha sonra ls FS0:\EFI\redhat, yol öğrenmek için FS0:\EFI\redhat\grub.efiCentOS üzerinde.
ntc2

1
@ Ntc2 Teşekkürler, tam olarak aradığım şey buydu! Slackware kurulumum için öyleydi FS0:\EFI\Slackware\elilo.efi.
fabiomaia

11

Diğer bir seçenek de, VM'niz için 'Anakart' altındaki 'EFI'yi Etkinleştir' adlı Genişletilmiş Özellikler seçeneğinin işaretini kaldırmaktır.

Bu sorun Gnome Ubuntu 12.04.2 amd64bit kurulumu için ortaya çıkmıştı.

Donanım ivmesi ayarlarını değiştirmek zorunda kaldıktan sonra bunu keşfetti. VT-x / AMD-V, Nested Paging etkinleştirilmiş olarak bırakıldım. VM'mde referans için 2 CPU, 8 GB RAM var.

Kontrol tamamlandıktan sonra sorun tamamen atlandı Gnome Ubuntu hiç sorun yaratmadı. Sanal Kutu 4.3.18 r96516, Windows 7 64-bit Host'ta çalışıyor.


1
Bu sadece işe yarıyor, çünkü Grub aynı zamanda eski desteğe de (MBR) sahipti.
Paul Stelian

4

VirtualBox'a kopyala grubx64.efibunu başlatmak için /EFI/boot/bootx64.EFI
kullanın bootx64.efi.
Referans: Archlinux Virtualbox wiki


ta. Bu işe yarar, ancak grubx64.efi güncellenirse bootx64.efi tarihlenir. kaynak kodunun bir sürümüne bağlantı: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

Bu, startup.nsh yöntemini düzenlemekten daha sorunsuz , ancak gerçekten de otomatik olarak güncellenmeyecek ve bir FAT32 bölümü olduğu için sembolik bağlantı kullanamazsınız.
Giorgi Gzirishvili

1

Sanal kutu içindeki cdrom cihazını IDE'den SATA'ya değiştirerek bu sorunu çözebilirdim. Aygıt yapılandırmasında sanal cdrom sürücüsünün standart eşlemesini kaldırdım.

Kurulum medyanız için kullanılacak olan SATA Denetleyicisine bir cdrom cihazı eklemeniz yeterli.

Et voila, EFI ile başka sorun yok.


1

Son zamanlarda bu sorunla karşılaştım. Lütfen sanal işletim sistemi ayarlarınızı kontrol edin. Sanal os-> sistem-> Genişletilmiş özellikler-> EFI'yi etkinleştir'i sağ tıklayın (işaretini kaldırın).görüntü tanımını buraya girin


8
UEFI kullanmak isterse bu nasıl bir çözümdür?
zygimantus

+1: Bu benim sorunumu çözdü. EFI'yi etkinleştirmeyi deneysel olarak kontrol etmiştim ve unutmuştum.
wallyk

1

Bunun için aşağıdaki gibi yazmanız gerekir:

fs0:
cd EFI
cd ubuntu
grubx64

bu işe yaramayacak başka bir şekilde yazarsanız, çalışmamı sağladım.


1

Etrafında başka bir çalışma:

Uefi kabuğunda aşağıdakileri kullanarak ubuntu'da geçici olarak önyükleme yapın:

fs0:
cd EFI
cd ubuntu
grubx64

Ardından, ubuntu içinde, startup.nsh dosyasını aşağıdaki gibi düzenleyin:

Ctrl+ Alt+ Terminalini açın T.

Tür:

sudo nano /boot/efi/startup.nsh

Şifrenizi girin.

Şimdi orda olanları del veya backspace tuşuyla silin.

Sonra tam olarak şunu yazın: ( FS0- bu rakam 0, alfabe değil O)

FS0:
\EFI\ubuntu\grubx64.efi

Şimdi Ctrl+ O(Alfabe O) tuşuna basın .

Ardından, Alt+ D(Metni msdos biçiminde değiştirmek için).

Ardından tuşuna basın Enter.

Sonra Ctrl+ X.

Şimdi yeniden başlat.

sudo reboot

Şimdi her şey yolunda olmalı.


1

Ubuntu 16.04.4'ü EFI etkinken kullanmak ve sanal makineyi başlatırken önyüklemeyeceğini ve sadece EFI etkileşimli kabuğunda kaldığını gördüm.

Önyüklemeyi böyle düzelttim:

İlk önce, grubx64.efi'nin BLK2'de bulunduğunu öğrendim, bu yüzden bir defalık önyükleme için etkileşimli kabuğa şunu yazdım:

BLK2:/EFI/ubuntu/grubx64.efi

Ve viyola, Ubuntu çalışıyor ve çalışıyor.

Bu sorunu kalıcı olarak düzeltmek için sipariş verdim, sistem bir kez açıldıktan sonra /boot/efi/startup.nsh içine şu satırı tekrar ettim:

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

İşte bu, sistem düzgün bir şekilde açılacak.


0

Kubuntu15.10'u VirtualBox5'e UEFI ile yükledikten sonra, VM yeniden başlatılamaz.

Satır ekleme

FS0: \ EFI \ ubuntu \ grubx64.efi
UEFI-Shell'de yardımcı olmuyor.

Kubuntu15.10’da chroot ortamında yeni bir startup.nsh dosyası oluşturma çözümü

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
ayrıca hiçbir gelişme sağlar.

Çözümü buldum:

Sorun, / boot / efi / EFI / ubuntu dizinindeki grubx64.efi dosyasıyla mevcut değildi.

Live-CD'yi başlattıktan ve chroot ortamına geçtikten sonra, eksik paketleri kurdum ve gerekli NVRAM girişini oluşturdum:

sudo apt-get install grub-efi-amd64 imzalı shim imzalı
sudo güncelleme grubu

0

Efi boot dizinini tanımlamak veya değiştirmek için önce bu komutu çalıştırmanız gerekir. Bu benim sorunumu çözdü.

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

NOT: /dev/sdasistem sabit diskidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.