Virtualbox 开机进入UEFI shell

背景

  • 好久之前在虚拟机里面装的 parrot 发现启动之后没有进入引导界面,而是到了下面的奇怪界面。按英文就是也就是 UEFI shell 界面 。
    一直想修复一下又比较懒,用实机比较多,毕竟虚拟机性能还是差点,刚好今天有空。
    PS:当时装的好像是是 parrot 3.7 ,而且其他小伙伴貌似也没翻车。。

原因分析

  • 貌似 Virtualbox 用 EFI 引导方式安装的系统 有时候就会识别不到 系统EFI启动项 即grubx64.efi 这个文件没有成功载入。

    简单启动

  • 在 UEFI shell 下直接输入如下命令就可以回到正常的引导步骤,不过治标不治本,再次重启还是会识别不到。下面提供两种方案
    PS:
    1.之前我都是一点点 cd 到 efi文件的位置的 ( ̄_, ̄ ) 因为要找在FS0: 还是 FS1: ,下面这个命令就直接不用找了
    2.斜杠别弄反 是 \
    1
    \EFI\parrot\grubx64.efi

方案一

  • 按照 简单启动 进入系统之后输入如下两条命令
    1
    2
    sudo mkdir /boot/efi/EFI/boot
    sudo cp /boot/efi/EFI/parrot/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

PS:/boot 文件夹再往里就需要root用户才能看了,不过上面的两步操作可以正常操作,如果想确定有没有修改成功,请切换到root用户

方案二

  • 直接在 UEFI shell 界面进行操作,省去了进去系统的步骤。
    这里有个前提,需要知道自己EFI文件夹在 FS0: 还是 FS1:,emmm一个个试吧,没有找到合适的命令一下子显示。
    具体参照下图,找到之后执行如下命令
1
2
mkdir \EFI\boot
cp \EFI\parrot\grubx64.efi \EFI\boot\bootx64.efi
  • 执行成功如下图,再输入 exit 回车再回车就正常引导啦。(。・∀・)ノ゙

结果分析

  • 可以看到其实只是做了个文件复制而已, EFI/boot/bootx64.efi 这个文件夹是 VirtualBox 的默认文件夹,如果正常启动没有找到或者识别,就会自动选用这个。
    最后附上成功引导的截图

参考链接

UEFI boot in virtualbox

如需转载请标明出处 Sephiroth 的博客
本文链接:https://phpszhdyy.github.io/2018/05/28/Virtualbox 开机进入UEFI shell/