![Virtualbox 虚拟机克隆后无法启动](https://linux22.com/image/1046201/Virtualbox%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%85%8B%E9%9A%86%E5%90%8E%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8.png)
我正在使用来自 Oracle 存储库的当前版本的 VirtualBox(如果重要的话,带有扩展)运行 Ubuntu Trusty。
当我使用 UEFI 模式创建 Debian Wheezy 客户机时,安装工作正常,安装后首次启动成功。然后我通过“poweroff”命令关闭它,使用 VirtualBox GUI 克隆虚拟机。
此后,机器将无法启动,无论是原始机器还是克隆机器。当我启动它们时,我得到的是 VirtualBox EFI shell,而不是 GRUB。
所需的 EFI 分区是当然存在(机器将启动至少一次)所以我知道这不是问题,这也排除了“GRUB 未安装”之类的问题。
我希望这些机器能够启动,但我更好奇为什么在 UEFI 模式下克隆虚拟机会阻止原来的机器无法启动。我可能看到磁盘 UUID 的改变影响了克隆,但我不明白为什么原始机器也无法启动。
答案1
问题并不是克隆造成的,而是虚拟机被关闭了。不幸的是,efibootmgr
客户机中的 Linux 实用程序所做的更改在 VirtualBox 下不会保留很长时间。由于这些更改是启动所必需的,因此一旦 VirtualBox 忘记了这些更改,您就无法再启动了。针对此问题有两大类解决方案:
- 您可以将所选的启动管理器或启动加载程序重命名为
EFI/BOOT/bootx64.efi
。这将对虚拟机的EFI 系统分区 (ESP),通常是/dev/sda1
。对于原始 Ubuntu 安装,您需要重命名EFI/ubuntu
为EFI/BOOT
,然后重命名grubx64.efi
为bootx64.efi
才能使其正常工作。 - 您可以使用其他工具来调整虚拟 NVRAM 设置。VirtualBox EFI 用户界面有一种方法可以做到这一点,但步骤相当麻烦。您也可以使用
bcfg
命令在 EFI shell 中。无论哪种情况,您都必须为您选择的引导加载程序/管理器创建一个条目,例如EFI/ubuntu/grubx64.efi
Ubuntu 安装程序放在硬盘上的二进制文件。