VirtualBox는 UEFI Interactive 셸에서만 부팅


49

UEFI를 사용하여 VirtualBox에 Ubuntu 14.10을 설치했습니다. 그러나 이제이 OS를 재부팅하고 이제 UEFI Interactive Shell v2.0으로 부팅합니다. 정상적으로 Grub으로 다시 부팅하려면 어떻게해야합니까?


다행스럽게도 VirtualBox 5.1을 사용하면 해결 방법이 더 이상 필요하지 않습니다. 새로운 EFI 항목 ( efibootmgrgrub을 수동으로 사용 하거나 자동으로 다시 설치 하여)을 추가하면 Ubuntu를 즉시 다시 부팅 할 수 있습니다.
phk

2
5.1의 경우에도 efibootmgr종료 후 필요한 부팅 설정과 같은 efi 변수에 대한 변경 사항 은 손실됩니다 (다시 부팅해도 유지됨).
chappjc

1
5.1.30 여전히 존재합니다. 수정이 쉽지만 debian & ubuntu를 설치 한 후 매번 수정해야합니다.
CallMeLaNN

답변:


52

같은 문제가 발생하여 대화식 쉘에서 다음 명령을 실행하면 가상 머신이 Ubuntu로 부팅됩니다.

fs0:\efi\ubuntu\grubx64.efi

백 슬래시 사용, 슬래시가 작동하지 않습니다. UEFI 대화식 쉘의 명령은 대소 문자를 구분하지 않습니다.

내 VirtualBox 버전은 4.3.20 r96997이고 Ubuntu 버전은 14.10 AMD64입니다. 왜 이런 일이 발생하고 어떻게 해결해야하는지 모르겠습니다. 이것은 우아하지 않고 여전히 약간 번거로운 해결 방법이라는 것을 알았습니다.

업데이트 1 :

본인은 , 아래로 추적 버그 리포트 및 찾아 더 나은 해결 방법을 .

업데이트 2 :

업데이트 1의 해결 방법이 실패했습니다. 가상 머신을 끄고 시작했습니다. 그리고 UEFI Interactive 쉘로 다시 부팅되었습니다. 에 따르면 문제는 아마 버추얼 버그의 원인이되었다. 나는 여전히 이것에 대한 추가 해결책을 찾고 있습니다.

업데이트 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.efi5 개의 소스를 낭비하는 것보다 더 나은 솔루션 인 것처럼 들리도록합니다. . 참고 : 부팅 중에 F12 키를 누르거나exitEFI 셸에서Enter 키를 눌러펌웨어 설정에 액세스하고 터미널 해상도를 포함한 모든 종류의 항목을 수정할 수 있지만 이러한 수정 사항은 영구적으로 저장되지는 ​​않습니다.
LiveWireBT

대화식 쉘에서 명령을 실행 한 후 refind
Eduardo

1
그것이 버그라는 것을 아는 것이 좋습니다. 간단히 edit startup.nsh. +1 5 \EFI\boot\bootx64.efi초를 건너 뛰려고합니다.
CallMeLaNN

1
복사하고 이름 \EFI\ubuntu\shimx64.efi을 바꾸는 \EFI\boot\bootx64.efi것이 가장 좋습니다. 신용
CallMeLaNN

업데이트 3 저를 위해 그것을 ....
cljk 8:26에

32

나는 같은 문제가 있었다 ( EFI 가 다른 방식으로 실행될 수 없기 때문에 EFI가 활성화 되어 있음). 이상한; Ubuntu 14.04.2 설치에 오류가 없지만 Kubuntu 15.04 설치가 완료되지 않았습니다. DVD를 제거하라는 메시지가 표시되면 맨 끝에 멈췄습니다. 재설정 후 정상적으로 부팅되었지만 전원을 끈 후에는 셸이 나타납니다.

따라서 쉘 유형을 피하려면 다음을 수행하십시오.

fs0 :
편집 startup.nsh

열린 창에서 다음 두 줄을 추가하십시오.

FS0 :
\ EFI \ 우분투 \ grubx64.efi

언론 Ctrl+ sEnter저장하고 Ctrl+를 q종료합니다. 그런 다음 VM을 다시 시작하십시오.

또는이 두 줄을 사용하여 쉘을 종료하고 OS를 부팅 할 수 있습니다. 그러나 두 번째로 다시 시작하면 다시 쉘에 들어가 편집을 피하게 startup.nsh됩니다.


명령을 입력해도 작동하지만 문제는 다음에 다시 시작할 때 다시 해당 쉘로 이동하여 파일 startup.nsh가 저장되지 않은 것입니다.
Igor Čordaš

startup.nsh 파일을 저장하려면 Ctrl + S를 사용하여 저장하고 Enter를 눌러 파일에 쓰십시오.
Willoczy

2
Ubuntu를 사용하지 않는 경우 lsUEFI 셸에서 사용 하는 컴퓨터의 올바른 경로를 알아낼 수 있습니다 . 예를 들어 ls FS0:\EFI, ls FS0:\EFI\redhat경로를 배우는 것은 FS0:\EFI\redhat\grub.efiCentOS에 있습니다.
ntc2

1
@ ntc2 고마워요. 바로 내가 찾던 것이 었습니다! 내 슬랙웨어 설치의 경우 FS0:\EFI\Slackware\elilo.efi입니다.
fabiomaia 2019

11

다른 옵션은 VM의 '마더 보드'에서 'Enable EFI'라는 확장 기능 옵션을 선택 취소하는 것입니다.

이 문제가 Gnome Ubuntu 12.04.2 amd64bit 설치에서 발생했습니다.

하드웨어 가속에 대한 설정을 변경 한 후이를 발견했습니다. VT-x / AMD-V, Nested Paging을 사용하도록 설정했습니다. 내 VM에는 2 개의 CPU, 8GB RAM이 있습니다.

체크를 해제하면 문제가 완전히 우회되어 Gnome Ubuntu가 아무런 문제없이 부팅됩니다. Windows 7 64 비트 호스트에서 Virtual Box 4.3.18 r96516 실행


1
Grub에 레거시 지원 (MBR)도 있었기 때문에 작동합니다.
Paul Stelian

4

VirtualBox로 복사 grubx64.efi하여 부팅합니다. 참조 : Archlinux Virtualbox Wiki/EFI/boot/bootx64.EFI
bootx64.efi


고마워. 이것은 작동하지만 grubx64.efi가 업데이트되면 bootx64.efi의 날짜가 표시됩니다. 소스 코드 버전으로 연결 : github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

이 방법은 startup.nsh 메소드를 편집하는 것보다 더 매끄럽지 만 실제로 자동으로 업데이트되지 않으며 FAT32 파티션이기 때문에 symlink를 사용할 수 없습니다.
Giorgi Gzirishvili 1

1

virtualbox 내의 cdrom 장치를 IDE에서 SATA로 변경하여이 문제를 해결할 수 있습니다. 장치 구성 내에서 가상 cdrom 드라이브의 표준 매핑을 제거했습니다.

설치 매체에 사용될 기존 SATA 컨트롤러에 cdrom 장치를 추가하기 만하면됩니다.

EFI에서는 더 이상 문제가 없습니다.


1

최근 에이 문제가 발생했습니다. 가상 OS 설정을 확인하십시오. 가상 OS-> 시스템-> 확장 기능-> EFI 사용을 마우스 오른쪽 버튼으로 클릭하십시오 (선택 취소).여기에 이미지 설명을 입력하십시오


8
UEFI를 사용하려면 어떻게해야합니까?
zygimantus

+1 : 이로 인해 내 문제가 해결되었습니다. EFI 활성화를 실험적으로 확인 하고 잊어 버렸습니다.
wallyk

1

이를 위해 다음과 같이 작성해야합니다.

fs0:
cd EFI
cd ubuntu
grubx64

이것이 작동하지 않는 다른 방법으로 작성하면 작동하도록하는 방법입니다.


1

다른 해결 방법 :

uefi 셸에서 다음을 사용하여 임시로 우분투로 부팅하십시오.

fs0:
cd EFI
cd ubuntu
grubx64

그런 다음 우분투 안에서 아래와 같이 startup.nsh 파일을 편집하십시오 :

터미널 Ctrl+ Alt+를 엽니 다 T.

유형:

sudo nano /boot/efi/startup.nsh

비밀번호를 입력하십시오.

이제 del 또는 backspace 키를 사용하여 거기에있는 모든 것을 삭제하십시오.

그런 다음 이것을 정확하게 입력하십시오 : ( FS0- 0알파벳이 아닌 숫자 O)

FS0:
\EFI\ubuntu\grubx64.efi

이제 Ctrl+를 누릅니다 O(알파벳입니다 O).

그런 다음 Alt+ D(텍스트를 msdos 형식으로 변경).

그런 다음를 누릅니다 Enter.

그런 다음 Ctrl+ X.

이제 재부팅하십시오.

sudo reboot

이제 모든 것이 괜찮을 것입니다.


1

EFI가 활성화 된 상태에서 Ubuntu 16.04.4를 사용하고 가상 컴퓨터를 시작하는 동안 부팅되지 않고 EFI 대화 형 셸에 그대로 남아 있습니다.

이것이 부팅을 수정 한 방법입니다.

먼저 grubx64.efi가 BLK2에 있다는 것을 알았습니다. 따라서 한 번 부팅하는 동안 대화 형 셸에 다음을 입력했습니다.

BLK2:/EFI/ubuntu/grubx64.efi

그리고 비올라, 우분투가 시작되었습니다.

시스템이 가동되면 다음 줄을 /boot/efi/startup.nsh에 반영했습니다.

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

그게 시스템이 올바르게 부팅됩니다.


0

UEFI를 사용하여 VirtualBox5에 Kubuntu15.10을 설치 한 후 VM 재부팅이 실패합니다.

라인 추가

FS0 : \ EFI \ 우분투 \ grubx64.efi
UEFI-Shell에서 도움이되지 않습니다.

chbun 환경에서 Kubuntu15.10에 새로운 startup.nsh 파일을 만드는 솔루션

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
또한 개선되지 않습니다.

해결책을 찾았습니다.

문제는 grubx64.efi 파일이있는 / boot / efi / EFI / ubuntu 디렉토리가 존재하지 않는다는 것입니다.

Live-CD를 부팅하고 chroot 환경으로 변경 한 후 누락 된 패킷을 설치하고 다음을 사용하여 필요한 NVRAM 항목을 만듭니다.

sudo apt-get 설치 grub-efi-amd64 서명 심 기호
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.