VirtualBox chỉ khởi động trong vỏ UEFI Interactive


49

Tôi đã cài đặt Ubuntu 14.10 trong VirtualBox với UEFI. Nhưng bây giờ tôi đã khởi động lại hệ điều hành này và bây giờ nó khởi động vào UEFI Interactive Shell v2.0. Làm thế nào tôi có thể khởi động bình thường vào Grub một lần nữa?


Tin tốt cho mọi người, với VirtualBox 5.1, cách giải quyết không còn cần thiết nữa. Bạn có thể chỉ cần thêm một mục EFI mới (sử dụng efibootmgrhoặc tự động bằng cách cài đặt lại grub) để nó khởi động lại Ubuntu ngay lập tức.
phk

2
Ngay cả với 5.1, các thay đổi đối với các biến efi, như cài đặt khởi động được yêu cầu efibootmgrbị mất sau khi tắt máy (mặc dù chúng vẫn khởi động lại).
chappjc

1
5.1.30 nó vẫn tồn tại. Mặc dù việc sửa chữa rất dễ dàng, nhưng tôi phải sửa mỗi lần sau khi cài đặt debian & ubfox.
CallMeLaNN

Câu trả lời:


52

Tôi gặp phải vấn đề tương tự và thấy rằng nếu tôi đưa ra lệnh sau trong trình vỏ tương tác, máy ảo sẽ khởi động vào Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Sử dụng dấu gạch chéo ngược, dấu gạch chéo về phía trước không hoạt động. Các lệnh trong vỏ tương tác UEFI không phân biệt chữ hoa chữ thường.)

Phiên bản VirtualBox của tôi là 4.3.20 r96997, phiên bản Ubuntu là 14.10 AMD64. Tôi không biết tại sao điều này xảy ra và làm thế nào để giải quyết nó. Chỉ thấy điều này không thanh lịch và vẫn còn một chút rắc rối.

Cập nhật 1:

Tôi đọc , theo dõi một báo cáo lỗi và tìm thấy một cách giải quyết tốt hơn .

Cập nhật 2:

Cách giải quyết trong Cập nhật 1 không thành công. Tôi tắt máy ảo, khởi chạy nó. Và nó đã khởi động lại vào vỏ UEFI Interactive. Theo đó , vấn đề có thể là do lỗi VirtualBox. Tôi vẫn đang tìm kiếm giải pháp hơn nữa cho điều này.

Cập nhật 3:

Cuối cùng tìm thấy một giải pháp. Theo đó , bạn cần tạo một kịch bản startup.nsh bằng tay. Ngoại trừ phương pháp trong bài được đề cập, bạn cũng có thể làm điều này:

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

3
"Hiện tại không thể điều khiển các biến EFI từ bên trong một khách đang chạy" Giải pháp trong bản cập nhật thứ hai của bạn để di chuyển bất kỳ bộ tải khởi động nào bạn muốn sử dụng trên ESP để\EFI\boot\bootx64.efinghe có vẻ như là giải pháp tốt hơn cho tôi so với việc lãng phí 5 soconds muốn khởi động. . Lưu ý: Bạn có thể nhấn F12 trong khi khởi động hoặc nhậpexitvào vỏ EFI để truy cập cài đặt chương trình cơ sở và sửa đổi tất cả mọi thứ, bao gồm cả độ phân giải đầu cuối, nhưng những sửa đổi này không được lưu trữ vĩnh viễn.
LiveWireBT

Sau khi ban hành lệnh trong trình vỏ tương tác, bạn có thể cài đặt refindđể sửa lỗi EFI
Eduardo

1
Thật tốt khi biết rằng đó là một lỗi. Đơn giản edit startup.nshthôi. +1 Nó đang tìm \EFI\boot\bootx64.eficách bỏ qua 5sec.
CallMeLaNN

1
Sao chép và đổi tên \EFI\ubuntu\shimx64.efiđể \EFI\boot\bootx64.efilà tốt nhất. tín dụng
CallMeLaNN

Cập nhật 3 đã làm điều đó cho tôi ....
cljk 26/03/18

32

Tôi gặp vấn đề tương tự (với EFI được bật vì tôi không thể chạy nó theo cách khác). Lạ thật; Mặc dù cài đặt Ubuntu 14.04.2 không có lỗi, nhưng cài đặt Kubfox 15.04 không thể hoàn tất. Nó bị đóng băng ở cuối khi được yêu cầu gỡ DVD. Sau khi thiết lập lại, nó khởi động tốt nhưng sau khi tắt nguồn, nó đưa lên vỏ.

Vì vậy, để tránh loại vỏ:

fs0:
chỉnh sửa startup.nsh

và trên cửa sổ mở thêm 2 dòng sau:

FS0:
\ EFI \ ub Ubuntu \ grubx64.efi

nhấn Ctrl+ sEnterđể lưu và Ctrl+ qđể thoát. Sau đó khởi động lại VM.

Ngoài ra, bạn luôn có thể sử dụng 2 dòng này để thoát shell và hệ điều hành khởi động. Nhưng lần thứ hai bạn khởi động lại, bạn sẽ ở trong vỏ một lần nữa và để tránh nó chỉnh sửa startup.nsh.


Nhập lệnh không hoạt động nhưng vấn đề là vào lần khởi động lại tiếp theo, nó lại chuyển sang trình bao và tập tin khởi động đó. Có vẻ như không được lưu.
Igor ordaš

Để lưu tệp startup.nsh, bạn cần sử dụng Ctrl + S để lưu và nhấn Enter để ghi vào tệp.
Willoczy

2
Trong trường hợp bạn không sử dụng Ubuntu, bạn có thể tìm ra đường dẫn chính xác cho máy của mình bằng lsvỏ UEFI. Ví dụ ls FS0:\EFI, sau đó ls FS0:\EFI\redhat, để tìm hiểu đường dẫn là FS0:\EFI\redhat\grub.efitrên CentOS.
ntc2

1
@ ntc2 Cảm ơn, đó chính xác là những gì tôi đang tìm kiếm! Để cài đặt Slackware của tôi, nó đã được FS0:\EFI\Slackware\elilo.efi.
fabiomaia

11

Một tùy chọn khác là bỏ chọn tùy chọn Tính năng mở rộng có tên 'Kích hoạt EFI' trong 'Bo mạch chủ' cho máy ảo của bạn.

Có vấn đề này xảy ra khi cài đặt Gnome Ubuntu 12.04.2 amd64bit.

Phát hiện ra điều này sau khi phải thay đổi cài đặt để tăng tốc phần cứng. Tôi bị bỏ lại khi bật VT-x / AMD-V, Nested Paging. VM của tôi có 2 CPU, RAM 8GB để tham khảo.

Sau khi không kiểm tra, vấn đề hoàn toàn được thông qua Gnome Ubuntu khởi động không có vấn đề gì. Chạy Hộp ảo 4.3.18 r96516 trên Máy chủ Windows 7 64 bit.


1
Điều này chỉ hoạt động vì Grub cũng có hỗ trợ kế thừa (MBR).
Paul Stelian

4

Sao chép grubx64.efivào /EFI/boot/bootx64.EFI
VirtualBox sử dụng bootx64.efiđể khởi động.
Tham khảo: wiki Archlinux Virtualbox


ta. Điều này hoạt động nhưng nếu grubx64.efi được cập nhật thì bootx64.efi sẽ được ghi ngày. liên kết đến một phiên bản của mã nguồn: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/
mẹo

Cái này liền mạch hơn so với chỉnh sửa phương thức startup.nsh , nhưng thực sự nó sẽ không được cập nhật tự động và bạn không thể sử dụng symlink vì đó là phân vùng FAT32.
Giorgi Gzirishvili

1

Tôi có thể giải quyết vấn đề này bằng cách thay đổi thiết bị cdrom trong hộp ảo từ IDE sang SATA. Tôi đã loại bỏ ánh xạ chuẩn của ổ đĩa cdrom ảo trong cấu hình thiết bị.

Chỉ cần thêm một thiết bị cdrom vào Bộ điều khiển SATA hiện có sẽ được sử dụng cho phương tiện cài đặt của bạn.

Et voila, không có vấn đề gì thêm với EFI.


1

Gần đây tôi gặp phải vấn đề này. Vui lòng kiểm tra cài đặt hệ điều hành ảo của bạn. Nhấp chuột phải vào hệ điều hành ảo-> hệ thống-> Tính năng mở rộng-> Bật EFI (bỏ chọn này).nhập mô tả hình ảnh ở đây


8
Làm thế nào đây là một giải pháp nếu một người muốn sử dụng UEFI?
zygimantus

+1: Điều này đã giải quyết vấn đề của tôi. Tôi đã kiểm tra thử nghiệm Kích hoạt EFI và quên nó đi.
wallyk

1

Đối với điều này, bạn cần phải viết nó như sau:

fs0:
cd EFI
cd ubuntu
grubx64

đây là cách tôi làm cho nó hoạt động nếu bạn viết nó theo bất kỳ cách nào khác nó không hoạt động.


1

Một công việc khác xung quanh:

Trong trình bao uefi, khởi động tạm thời vào ubfox bằng cách sử dụng:

fs0:
cd EFI
cd ubuntu
grubx64

Sau đó, bên trong ubfox, chỉnh sửa tệp startup.nsh như bên dưới:

Mở thiết bị đầu cuối Ctrl+ Alt+ T.

Thể loại:

sudo nano /boot/efi/startup.nsh

Nhập mật khẩu của bạn.

Bây giờ xóa tất cả những gì có trong đó bằng phím del hoặc backspace.

Sau đó nhập chính xác: ( FS0- đó là chữ số 0, không phải bảng chữ cái O)

FS0:
\EFI\ubuntu\grubx64.efi

Bây giờ nhấn Ctrl+ O(Đó là bảng chữ cái O).

Sau đó, Alt+ D(Để thay đổi văn bản sang định dạng msdos).

Sau đó nhấn Enter.

Sau đó Ctrl+ X.

Bây giờ khởi động lại.

sudo reboot

Mọi thứ sẽ ổn ngay bây giờ.


1

Sử dụng Ubuntu 16.04.4 với EFI được bật và trong khi khởi động máy ảo, tôi thấy rằng nó sẽ không khởi động và chỉ ở trong vỏ tương tác EFI.

Đây là cách tôi sửa lỗi khởi động:

Đầu tiên, tôi thấy rằng grubx64.efi nằm trong BLK2, vì vậy để khởi động một lần, tôi chỉ cần gõ như sau trong trình vỏ tương tác:

BLK2:/EFI/ubuntu/grubx64.efi

Và viola, Ubuntu đang hoạt động.

Tôi yêu cầu khắc phục vĩnh viễn sự cố này, sau khi hệ thống hoạt động, tôi đã lặp lại dòng sau vào /boot/efi/startup.nsh.

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

Thế là xong, hệ thống sẽ khởi động chính xác.


0

Sau khi cài đặt Kubfox15.10 trong VirtualBox5 với UEFI, quá trình khởi động lại VM không thành công.

Thêm dòng

FS0: \ EFI \ ub Ubuntu \ grubx64.efi
trong UEFI-Shell không giúp được gì.

Và giải pháp với việc tạo một tệp startup.nsh mới trong Kubfox15.10 trong môi trường chroot với

sudo echo '\ EFI \ ub Ubuntu \ grubx64.efi'> startup.nsh 
cũng không cải thiện.

Tôi tìm thấy giải pháp:

Vấn đề là, thư mục / boot / efi / EFI / ubfox với tệp grubx64.efi không tồn tại.

Sau khi khởi động Live-CD và thay đổi môi trường chroot, tôi đã cài đặt các gói bị thiếu và tạo mục nhập NVRAM cần thiết với:

sudo apt-get install grub-efi-amd64 có chữ ký shim đã ký
sudo update-grub

0

Để xác định hoặc thay đổi thư mục khởi động efi trước tiên cần chạy lệnh này. Điều này đã giải quyết vấn đề của tôi.

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

LƯU Ý: /dev/sdalà đĩa cứng hệ thống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.