在Arch宿主机的QEMU中安装Artix Linux时,GRUB安装与efivarfs挂载失败求助
在Arch宿主机的QEMU中安装Artix Linux时,GRUB安装与efivarfs挂载失败求助
看起来你遇到的问题核心是QEMU虚拟机没有以EFI模式启动,导致系统完全没有EFI相关的环境支持,所以才会出现EFI变量不支持、挂载点不存在这些报错。我来给你一步步梳理解决方法:
一、先明确问题根源
你执行mount -t efivarfs efivarfs /sys/firmware/efi/efivars失败,本质是因为当前虚拟机处于BIOS(传统启动)模式,系统里根本不存在/sys/firmware/efi这个目录,自然没法挂载efivarfs,GRUB的EFI安装命令也必然失效。
二、解决方法:让QEMU以EFI模式启动虚拟机
1. 在Arch宿主机上安装EFI固件(OVMF)
首先需要安装QEMU依赖的EFI固件包,在Arch系统中直接用pacman安装即可:
sudo pacman -S ovmf
2. 修改QEMU启动命令,添加EFI参数
你之前启动虚拟机的命令应该没指定EFI固件,现在要加上OVMF相关的参数。假设你的虚拟机磁盘文件是artix.img,可以用类似下面的命令启动:
qemu-system-x86_64 -enable-kvm -m 4G -cpu host \ -drive file=artix.img,format=raw \ -drive if=pflash,format=raw,readonly=on,file=/usr/share/ovmf/x64/OVMF_CODE.fd \ -drive if=pflash,format=raw,file=/usr/share/ovmf/x64/OVMF_VARS.fd
简单解释下参数:
- 两个
-drive if=pflash分别指定了EFI的只读固件程序(OVMF_CODE.fd)和保存EFI配置/启动项的变量镜像(OVMF_VARS.fd),加上这两个参数后,虚拟机就会以EFI模式启动。 - 如果你之前用了其他参数(比如光驱、网络),直接把这些EFI参数追加进去就行。
3. 重新进入安装环境,验证并完成GRUB安装
重启虚拟机进入Artix安装环境后,先确认EFI模式是否生效:
ls /sys/firmware/efi
如果能看到目录下的内容,说明已经切换到EFI模式了。这时候再执行挂载efivarfs的命令:
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
应该就能成功挂载,之后再运行你原本的GRUB安装命令:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
就不会再报错了。
三、备选方案:安装BIOS模式的GRUB
如果你不想用EFI模式,也可以直接安装BIOS版本的GRUB,不需要任何EFI相关操作,直接执行以下命令即可(注意把/dev/sda换成你的虚拟机磁盘设备名,比如第二个磁盘是/dev/sdb):
grub-install --target=i386-pc /dev/sda
备注:内容来源于stack exchange,提问作者redpz
相关产品推荐
相关产品推荐

