本文写于2022年05月17日,阅读时请注意时效。
问题复现
问题出现在将一台AMD电脑上的Arch Linux虚拟机导出为.ova
格式后迁移到一台Intel电脑时无法通过bootloader(grub)进入系统而是出现EFI Shell界面。后续查明为grub的问题,所以该方案对于其他发行版、CPU、VirtualBox版本大概也适用。
问题截图如下:
efi-shell问题解决
无需重装grub,只要在问题系统中重新设置一遍grub即可。步骤如下
-
使用系统镜像启动,将各硬盘分区
mount
好 -
使用
arch-chroot
进入问题系统(其他发行版使用自己特定的命令即可,大多是chroot
) -
执行如下命令重新配置grub:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg
-
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
网友评论