Linux虚拟机改virtio之后进紧急模式解决方法
Linux虚拟机改virtio之后进紧急模式解决方法
如果改回 IDE 能正常进系统,这是最安全、最便捷的修复方式,步骤如下:
1. 先将虚拟机磁盘接口改回 IDE
在虚拟机管理界面(如 VMware/VirtualBox/Proxmox),把磁盘控制器从 virtio 改回 IDE,然后启动系统,正常登录。
2. 在系统内重新生成 initramfs(核心步骤)
打开终端,执行以下命令,强制将 virtio 驱动打包进 initramfs:
# 备份原有 initramfs(防止意外)
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# 重新生成 initramfs,包含 virtio 驱动
dracut -f -v --add-drivers "virtio_blk virtio_pci" /boot/initramfs-$(uname -r).img $(uname -r)
-f:强制覆盖现有 initramfs-v:显示详细输出--add-drivers:明确添加virtio_blk和virtio_pci驱动
3. (可选)更新 grub 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
这一步能确保 grub 识别到新的 initramfs 文件。
4. 关机,切换回 virtio 接口
- 正常关机
- 在虚拟机设置里,将磁盘接口改回
virtio - 启动虚拟机,系统将能正常识别 virtio 磁盘并启动
💡 预防措施
-
以后修改磁盘接口前,先执行
dracut -f --add-drivers "virtio_blk virtio_pci"预先生成包含对应驱动的 initramfs,可避免此类问题。 -
也可以在
/etc/dracut.conf.d/virtio.conf中添加:-
add_drivers+="virtio_blk virtio_pci" - 让后续所有 initramfs 都自动包含 virtio 驱动。
-
📌 关键说明
- 之所以之前在 dracut shell 里加载
virtio_blk失败,是因为 initramfs 本身就没包含这个驱动,必须在完整系统环境下重新生成 initramfs 才能解决。 - 改回 IDE 是为了进入完整系统,完成驱动打包,这是最稳妥的路径。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 FengLee