VirtualBox บูทในเชลล์ UEFI Interactive เท่านั้น


49

ฉันติดตั้ง Ubuntu 14.10 ใน VirtualBox ด้วย UEFI แต่ตอนนี้ฉันได้รีบูตระบบปฏิบัติการนี้และตอนนี้มันบูทเป็น UEFI Interactive Shell v2.0 ฉันจะบูตเข้าสู่ Grub ได้อย่างไร?


ข่าวดีสำหรับทุกคนด้วย VirtualBox 5.1 ไม่จำเป็นต้องแก้ไขปัญหาอีกต่อไป คุณอาจต้องเพิ่มรายการ EFI ใหม่ (ด้วยตนเองโดยใช้efibootmgrหรือติดตั้งด้วงใหม่โดยอัตโนมัติ) เพื่อบู๊ต Ubuntu ทันทีอีกครั้ง
phk

2
แม้จะใช้กับ 5.1 การเปลี่ยนแปลงตัวแปร efi เช่นการตั้งค่าการบูตที่จำเป็นต้องใช้efibootmgrจะหายไปหลังจากปิดเครื่อง
chappjc

1
5.1.30 มันยังคงมีอยู่ แม้ว่าการแก้ไขนั้นง่าย แต่ฉันต้องแก้ไขทุกครั้งหลังจากติดตั้งเดเบียนและอูบุนตู
CallMeLaNN

คำตอบ:


52

ฉันพบปัญหาเดียวกันและพบว่าหากฉันออกคำสั่งต่อไปนี้ในเชลล์แบบโต้ตอบเครื่องเสมือนจะบูตเข้าสู่ Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(ใช้เครื่องหมายแบ็กสแลชเครื่องหมายสแลชไม่ทำงานคำสั่งในเชลล์แบบโต้ตอบ UEFI ไม่คำนึงถึงขนาดตัวพิมพ์)

เวอร์ชั่น VirtualBox ของฉันคือ 4.3.20 r96997, Ubuntu เวอร์ชั่น 14.10 AMD64 ฉันไม่รู้ว่าทำไมสิ่งนี้จึงเกิดขึ้นและจะแก้ไขได้อย่างไร เพิ่งพบสิ่งนี้ไม่หรูหราและยังคงมีวิธีแก้ปัญหาเล็กน้อย

อัปเดต 1:

ผมอ่านนี้ติดตามลงไปรายงานข้อผิดพลาดและพบวิธีแก้ปัญหาที่ดีกว่า

อัปเดต 2:

วิธีแก้ปัญหาในการอัปเดต 1 ล้มเหลว ฉันปิดเครื่องเสมือนเปิดตัว และมันก็บูทเข้าไปใน UEFI Interactive shell อีกครั้ง ตามนี้ปัญหาอาจเกิดจากข้อผิดพลาด VirtualBox ฉันยังคงมองหาวิธีการแก้ไขเพิ่มเติมนี้

อัปเดต 3:

ในที่สุดก็พบทางออก ตามนี้คุณต้องสร้างสคริปต์ startup.nsh ด้วยตนเอง ยกเว้นวิธีการในโพสต์ที่กล่าวถึงคุณสามารถทำได้:

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

3
"ขณะนี้ยังไม่สามารถจัดการตัวแปร EFI จากภายในแขกที่กำลังทำงานอยู่"โซลูชันในการอัปเดตครั้งที่สองของคุณเพื่อย้ายบูทโหลดเดอร์ใด ๆ ที่คุณต้องการใช้บน ESP เพื่อ\EFI\boot\bootx64.efiฟังดูเหมือนทางออกที่ดีกว่าสำหรับฉัน . หมายเหตุ: คุณสามารถกด F12 ระหว่างการบู๊ตหรือเข้าสู่exitเชลล์ EFI เพื่อเข้าถึงการตั้งค่าเฟิร์มแวร์และแก้ไขสิ่งต่าง ๆ รวมถึงความละเอียดเทอร์มินัล แต่การดัดแปลงเหล่านี้จะไม่ถูกจัดเก็บอย่างถาวร
LiveWireBT

หลังจากออกคำสั่งในเชลล์แบบโต้ตอบคุณสามารถติดตั้งrefindเพื่อแก้ไข EFI
Eduardo

1
เป็นการดีที่จะรู้ว่ามันเป็นข้อผิดพลาด edit startup.nshง่ายดาย +1 มันกำลังมองหาที่\EFI\boot\bootx64.efiจะข้าม 5sec
CallMeLaNN

1
คัดลอกและเปลี่ยนชื่อ\EFI\ubuntu\shimx64.efiไป\EFI\boot\bootx64.efiเป็นที่ดีที่สุด เครดิต
CallMeLaNN

อัปเดต 3 ทำได้สำหรับฉัน ....
cljk

32

ฉันมีปัญหาเดียวกัน (ด้วยการเปิดใช้งาน EFIเพราะฉันไม่สามารถให้มันทำงานได้) แปลก; แม้ว่าการติดตั้ง Ubuntu 14.04.2 จะไม่มีข้อผิดพลาด แต่การติดตั้ง Kubuntu 15.04 ไม่สามารถจบการทำงานได้ มันแข็งที่สุดเมื่อถูกขอให้เอา DVD ออก หลังจากรีเซ็ตแล้วมันก็สามารถบู๊ตได้ดี แต่หลังจากปิดเครื่องมันก็นำเปลือกขึ้นมา

ดังนั้นเพื่อหลีกเลี่ยงประเภทของเปลือก:

fs0:
แก้ไข startup.nsh

และในหน้าต่างที่เปิดเพิ่ม 2 บรรทัดเหล่านี้:

FS0:
\ EFI \ ubuntu \ grubx64.efi

กดCtrl+ sและEnterเพื่อบันทึกและCtrl+ qเพื่อออก จากนั้นรีสตาร์ท VM

หรือคุณสามารถใช้ 2 บรรทัดเหล่านี้เพื่อออกจาก shell และ boot OS ได้ตลอดเวลา startup.nshแต่ครั้งที่สองที่คุณเริ่มต้นคุณจะอยู่ในเปลือกอีกครั้งและจะหลีกเลี่ยงได้แก้ไข


การพิมพ์คำสั่งใช้งานได้ แต่ปัญหาคือเมื่อรีสตาร์ทครั้งถัดไปมันจะไปที่เชลล์และไฟล์ startup.nsh ดูเหมือนจะไม่ถูกบันทึกไว้
Igor Čordaš

ในการบันทึกไฟล์ startup.nsh คุณต้องใช้ Ctrl + S เพื่อบันทึกและกด Enter เพื่อเขียนไปยังไฟล์
Willoczy

2
ในกรณีที่คุณไม่ได้ใช้งาน Ubuntu คุณสามารถกำหนดเส้นทางที่ถูกต้องสำหรับเครื่องของคุณโดยใช้lsในเชลล์ UEFI เช่นls FS0:\EFIจากนั้นls FS0:\EFI\redhatเพื่อเรียนรู้เส้นทางที่อยู่FS0:\EFI\redhat\grub.efiบน CentOS
ntc2

1
@ ntc2 ขอบคุณนั่นคือสิ่งที่ฉันกำลังมองหา! สำหรับการติดตั้ง Slackware FS0:\EFI\Slackware\elilo.efiของฉันมันเป็น
fabiomaia

11

อีกตัวเลือกหนึ่งคือยกเลิกการตรวจสอบตัวเลือกคุณสมบัติเพิ่มเติมที่เรียกว่า 'เปิดใช้งาน EFI' ภายใต้ 'เมนบอร์ด' สำหรับ VM ของคุณ

มีปัญหานี้เกิดขึ้นสำหรับการติดตั้ง Gnome Ubuntu 12.04.2 amd64bit

ค้นพบสิ่งนี้หลังจากต้องเปลี่ยนการตั้งค่าสำหรับการเร่งด้วยฮาร์ดแวร์ ฉันถูกทิ้งไว้โดยมี VT-x / AMD-V เปิดใช้งานการซ้อนเพจ VM ของฉันมี 2 CPU, 8GB RAM สำหรับการอ้างอิง

หลังจากยกเลิกการตรวจสอบปัญหา Gnome Ubuntu ก็ไม่ผ่านการตรวจสอบโดยสมบูรณ์ ใช้งาน Virtual Box 4.3.18 r96516 บน Windows 7 64-bit Host


1
ใช้งานได้เพียงเพราะ Grub ยังมีการรองรับแบบเดิม (MBR)
Paul Stelian

4

คัดลอกgrubx64.efiไปยัง/EFI/boot/bootx64.EFI
VirtualBox ใช้bootx64.efiเพื่อบู๊ต
Ref .: Archlinux Virtualbox wiki


ขอบคุณ สิ่งนี้ใช้ได้ แต่ถ้า grubx64.efi อัพเดทแล้ว bootx64.efi จะถูกลงวันที่ เชื่อมโยงไปยังเวอร์ชั่นของซอร์สโค้ด: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

อันนี้ราบรื่นกว่าการแก้ไขวิธีstartup.nshแต่แน่นอนว่ามันจะไม่ถูกอัพเดตโดยอัตโนมัติและคุณไม่สามารถใช้ symlink ได้เพราะเป็นพาร์ติชัน FAT32
Giorgi Gzirishvili

1

ฉันสามารถแก้ปัญหานี้ได้โดยการเปลี่ยนอุปกรณ์ cdrom ภายใน virtualbox จาก IDE เป็น SATA ฉันลบการแมปมาตรฐานของไดรฟ์ซีดีรอมเสมือนภายในการกำหนดค่าอุปกรณ์

เพียงเพิ่มอุปกรณ์ cdrom ไปยังคอนโทรลเลอร์ SATA ที่มีอยู่ซึ่งจะใช้สำหรับสื่อการติดตั้งของคุณ

และ, ไม่มีปัญหาเพิ่มเติมกับ EFI


1

ฉันเพิ่งพบปัญหานี้ โปรดตรวจสอบการตั้งค่าระบบปฏิบัติการเสมือนของคุณ คลิกขวาที่ระบบปฏิบัติการเสมือน -> ระบบ -> คุณสมบัติเพิ่มเติม -> เปิดใช้งาน EFI (ยกเลิกการเลือกนี้)ป้อนคำอธิบายรูปภาพที่นี่


8
นี่เป็นวิธีการแก้ปัญหาหากต้องการใช้ UEFI ได้อย่างไร
zygimantus

+1: นี่แก้ปัญหาของฉันได้ ฉันตรวจสอบการทดลองเปิดใช้งาน EFIแล้วลืมมันไป
wallyk

1

สำหรับสิ่งนี้คุณต้องเขียนเหมือนดังต่อไปนี้:

fs0:
cd EFI
cd ubuntu
grubx64

นี่คือวิธีที่ฉันได้มันไปทำงานถ้าคุณเขียนมันด้วยวิธีอื่นมันจะไม่ทำงาน


1

งานอื่นรอบ ๆ :

ในเชลล์ uefi ให้บูตชั่วคราวไปที่ ubuntu โดยใช้:

fs0:
cd EFI
cd ubuntu
grubx64

จากนั้นในอูบุนตูให้แก้ไขไฟล์ startup.nsh ดังนี้

เปิด terminal Ctrl+ +AltT

ประเภท:

sudo nano /boot/efi/startup.nsh

ใส่รหัสผ่านของคุณ

ตอนนี้ลบทั้งหมดที่อยู่ในนั้นโดยใช้ปุ่ม del หรือ backspace

จากนั้นให้พิมพ์สิ่งนี้อย่างแน่นอน: ( FS0- นั่นคือตัวเลข0ไม่ใช่ตัวอักษรO)

FS0:
\EFI\ubuntu\grubx64.efi

ตอนนี้กดCtrl+ O(นั่นคือตัวอักษรO)

จากนั้น, Alt+ D(หากต้องการเปลี่ยนข้อความเป็นรูปแบบ msdos)

Enterจากนั้นกดปุ่ม

แล้ว+CtrlX

รีบูตตอนนี้

sudo reboot

ตอนนี้ทุกอย่างควรจะดี


1

การใช้ Ubuntu 16.04.4 เมื่อเปิดใช้งาน EFI และในขณะที่เริ่มต้นเครื่องเสมือนฉันพบว่ามันไม่สามารถบู๊ตได้และยังคงอยู่ในเชลล์เชิงโต้ตอบของ EFI

นี่คือวิธีที่ฉันแก้ไขการบู๊ต:

ก่อนอื่นฉันพบว่า grubx64.efi ตั้งอยู่ใน BLK2 ดังนั้นสำหรับการบู๊ตครั้งเดียวฉันเพิ่งพิมพ์สิ่งต่อไปนี้ในเชลล์เชิงโต้ตอบ:

BLK2:/EFI/ubuntu/grubx64.efi

และวิโอลา Ubuntu ก็เปิดใช้งานแล้ว

ฉันจะสั่งซื้อเพื่อแก้ไขปัญหานี้อย่างถาวรเมื่อระบบของฉันขึ้นฉันสะท้อนบรรทัดต่อไปนี้เป็น /boot/efi/startup.nsh

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

เพียงเท่านี้ระบบจะบู๊ตอย่างถูกต้อง


0

หลังจากติดตั้ง Kubuntu15.10 ใน VirtualBox5 ด้วย UEFI การรีบูตของ VM ล้มเหลว

การเพิ่มสาย

FS0: \ EFI \ อูบุนตู \ grubx64.efi
ใน UEFI-Shell ไม่ได้ช่วยอะไร

และวิธีแก้ปัญหาด้วยการสร้างไฟล์ startup.nsh ใหม่ใน Kubuntu15.10 ในสภาพแวดล้อม chroot ด้วย

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
ทำให้ยังไม่มีการปรับปรุง

ฉันพบวิธีแก้ปัญหา:

ปัญหาคือว่าไม่มีไดเรกทอรี / boot / efi / EFI / ubuntu พร้อมไฟล์ grubx64.efi

หลังจากบูท Live-CD และเปลี่ยนเป็นสภาพแวดล้อม chroot ฉันติดตั้งแพ็กเก็ตที่หายไปและสร้างรายการ NVRAM ที่ต้องการด้วย:

sudo apt-get install shub-efi-amd64-shim-signed
sudo update-grub

0

สำหรับการกำหนดหรือเปลี่ยนแปลงไดเร็กทอรีบูต efi จำเป็นต้องรันคำสั่งนี้ก่อน นี่เป็นการแก้ไขปัญหาของฉัน

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

หมายเหตุ: /dev/sdaเป็นฮาร์ดดิสก์ระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.