VirtualBox导入虚拟机后无法进入系统问题解决

本文写于2022年05月17日,阅读时请注意时效。

问题复现

问题出现在将一台AMD电脑上的Arch Linux虚拟机导出为.ova格式后迁移到一台Intel电脑时无法通过bootloader(grub)进入系统而是出现EFI Shell界面。后续查明为grub的问题,所以该方案对于其他发行版、CPU、VirtualBox版本大概也适用。

问题截图如下:

efi-shell

问题解决

无需重装grub,只要在问题系统中重新设置一遍grub即可。步骤如下

  1. 使用系统镜像启动,将各硬盘分区mount

  2. 使用arch-chroot进入问题系统(其他发行版使用自己特定的命令即可,大多是chroot

  3. 执行如下命令重新配置grub:

    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
    grub-mkconfig -o /boot/grub/grub.cfg
    
  4. umount之后重启即可

解决过程的命令行如下:

root@archiso ~ # mount /dev/sda2 /mnt
root@archiso ~ # mount /dev/sda1 /mnt/boot
root@archiso ~ # arch-chroot /mnt
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Installing for x86_64-efi platform.
Installation finished. No error reported.
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot:  amd-ucode.img initramfs-linux-fallback.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
[root@archiso /]# exit
exit
root@archiso ~ # umount -R /mnt
root@archiso ~ # reboot now

可以看到我系统里安装了amd-ucode,是不影响的。我还尝试了安装intel-ucode,问题并没有得到解决。

在虚拟机中是无法使用*-ucode的,可以参考Microcode - ArchWiki

你可能感兴趣的:(VirtualBox导入虚拟机后无法进入系统问题解决)