Linux怎么解决virt-v2v迁移后虚拟机因为缺少VirtIO驱动蓝屏死机

云萱大大_5563

云萱大大_5563

2026-10-23

703人浏览

原创

virtio驱动缺失导致启动失败的根因是virtio_blk和virtio_net未进入initramfs:先用grep -i virtio /boot/config-$(uname -r)确认内核支持(config_virtio_blk/net为m),再用lsinitrd或lsinitramfs检查initramfs是否包含virtio_blk.ko、virtio_pci.ko、virtio_net.ko,若缺失则需按发行版修复initramfs并更新grub。

linux怎么解决virt-v2v迁移后虚拟机因为缺少virtio驱动蓝屏死机

迁移后虚拟机直接蓝屏或无法启动,基本就是 virtio_blk 和 virtio_net 驱动没进 initramfs —— 不是内核不支持,而是启动早期根本没加载进去。

怎么快速确认是不是 VirtIO 驱动缺失导致的启动失败

在源系统(迁移前的物理机或旧虚拟机)上执行以下检查,别等迁完再救火:

  • 运行 grep -i virtio /boot/config-$(uname -r),确认 CONFIG_VIRTIO_BLK 和 CONFIG_VIRTIO_NET 至少是 m(模块),不是 n 或完全没出现
  • 如果值为 m,必须进一步查 initramfs:
    — CentOS/RHEL 7+:用 lsinitrd /boot/initramfs-$(uname -r).img | grep -i "virtio"
    — Ubuntu/Debian:用 lsinitramfs /boot/initrd.img-$(uname -r) | grep -i "virtio"
  • 若输出为空,或只看到 virtio.ko 但没有 virtio_blk.ko、virtio_pci.ko、virtio_net.ko,说明驱动虽存在,但没打进启动镜像里 —— 这就是蓝屏的根因

不同发行版修复 initramfs 的实操命令

修复不是重装内核,而是把已有的 VirtIO 模块强制塞进 initramfs。注意路径和命令因发行版差异极大,错一个参数就白干:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • CentOS/RHEL 7/8:
    dracut -f -v --regenerate-all(推荐)
    或手动指定模块:dracut -f -v --force --include /lib/modules/$(uname -r)/kernel/drivers/virtio/ virtio
  • CentOS/RHEL 6:
    mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) -f --with=virtio_blk --with=virtio_pci --with=virtio_net
  • Ubuntu/Debian:
    先往配置里追加模块:echo -e "virtio_blk\nvirtio_pci\nvirtio_net" >> /etc/initramfs-tools/modules
    再重建:update-initramfs -u -k all(-k all 很关键,避免只更新当前运行内核)
  • 注意:不要用 mkinitrd 在新版 Ubuntu 上,它早已被弃用,会静默失败

为什么有些系统明明有 VirtIO 驱动还是蓝屏

常见但容易被忽略的三个硬坑:

  • initramfs 重建后没更新 GRUB 配置:某些老系统(如 CentOS 6)不会自动同步新镜像路径,需手动检查 /boot/grub/grub.conf 或 /boot/grub2/grub.cfg 中 initrd 行是否指向刚生成的文件名
  • 多内核共存时修错了版本:uname -r 显示的是当前运行内核,但迁移目标可能用的是另一个未启动过的内核(比如带 .el7.x86_64 后缀的旧版),得挨个检查并修复所有待用内核的 initramfs
  • 镜像打包时没包含 /lib/firmware 下的固件:部分 VirtIO 设备(如 virtio-pci)依赖 virtio_pci.ko + 对应固件,缺一不可;可查 ls /lib/firmware | grep -i virtio,空则需补全

最麻烦的不是驱动没装,而是驱动装了但没进 initramfs;最隐蔽的不是命令没跑,而是跑对了内核却没更新 GRUB 引导项 —— 迁移前务必在源系统里验证 lsinitrd 输出含完整 VirtIO 模块链,并且重启过一次确认能进系统。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4150

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3513

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2733

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6690

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6342

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3673

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3165

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3399

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习