tencent cloud

云服务器

动态与公告
产品动态
公共镜像更新动态
操作系统官方停止维护计划
产品公告
产品简介
云服务器概述
产品优势
基本概念
地域和可用区
新手指引
Service Regions and Service Providers
产品计费
计费概述
计费方式
计费项
转换计费方式
购买实例
变配费用说明
欠费说明
快速入门
通过自定义配置购买 Linux 云服务器
通过自定义配置购买 Windows 云服务器
用户指南
操作指南总览
使用限制总览
实例
竞价实例
预留实例
镜像
存储
备份与恢复
网络
安全
密码/密钥
监控与告警
运维管理
便捷功能
迁移服务器
在线迁移
迁移咨询
故障处理
无法登录云服务器问题处理思路
Windows 实例登录相关故障
Linux 实例登录相关故障
其他实例登录相关故障
实例运行故障
Linux 实例内存故障
网络故障
实践教程
云服务器选型建议
搭建环境
搭建网站
搭建应用
搭建可视化界面
本地文件上传到云服务器
网络性能测试
其他实践教程
API 文档
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
安全与合规
访问管理
网络
常见问题
地域和可用区相关
计费相关
实例相关
存储相关
镜像相关
服务器迁移相关
网络相关
安全相关
操作系统相关
运维和监控相关
访问管理相关
NTP 服务相关
应用场景相关
服务协议
CVM Service Level Agreements
Red Hat Enterprise Linux 镜像服务协议
Public IP Service Level Agreement
词汇表
文档云服务器用户指南镜像制作镜像Linux 系统检查 Virtio 驱动

Linux 系统检查 Virtio 驱动

PDF
聚焦模式
字号
最后更新时间: 2025-08-25 15:58:45

操作场景

云服务器系统内核需要支持 Virtio 驱动(包括块设备驱动 virtio_blk 和网卡驱动 virtio_net)才能在腾讯云上正常运行。为避免导入自定义镜像后,创建的云服务器实例无法启动,您需要在导入镜像前,检查是否需要在源服务器中检查以及修复镜像中对 Virtio 驱动的支持。本文档以 CentOS 操作系统为例,指导您如何在导入镜像前进行检查以及修复镜像中对 Virtio 驱动的支持。

操作步骤

步骤1:检查内核是否支持 Virtio 驱动

执行以下命令,确认当前内核是否支持 Virtio 驱动。
grep -i virtio /boot/config-$(uname -r)
返回类似如下结果:


如果返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 m,请执行 步骤2
如果在返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 y,表示该操作系统包含了 Virtio 驱动,您可以直接导入自定义的镜像到腾讯云。操作详情请参见 导入镜像概述
如果在返回结果中没有CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数的信息,表示该操作系统不支持导入腾讯云,请 下载和编译内核

步骤2:检查临时文件系统是否包含 Virtio 驱动

如果 步骤1 的执行结果参数取值为 m,则需要进一步检查,确认临时文件系统 initramfs 或者 initrd 是否包含 virtio 驱动。请根据操作系统的不同,执行相应命令:
CentOS Stream 操作系统:
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
CentOS 6/CentOS 7/CentOS 8/RedHat 6/RedHat 7 操作系统:
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
RedHat 5/CentOS 5 操作系统:
mkdir -p /tmp/initrd && cd /tmp/initrd
zcat /boot/initrd-$(uname -r).img | cpio -idmv
find . -name "virtio*"
Debian/Ubuntu 操作系统:
lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
OpenSUSE Leap 操作系统:
lsinitrd /boot/initrd-$(uname -r) | grep virtio
返回类似如下结果:

可得知,initramfs 已经包含了 virtio_blk 驱动,以及其所依赖的 virtio.ko、virtio_pci.ko 和 virtio_ring.ko,您可以直接导入自定义的镜像到腾讯云。操作详情请参见导入镜像概述
如果 initramfs 或者 initrd 没有包含 virtio 驱动,请执行 步骤3

步骤3:重新配置临时文件系统

如果 步骤2 的执行结果显示临时文件系统 initramfs 或者 initrd 没有包含 virtio 驱动,则需要重新配置临时文件系统 initramfs 或者 initrd,使其包含 virtio 驱动。请根据操作系统的不同,选择相应操作:
CentOS Stream 操作系统:
mkinitrd -f --allow-missing --with=virtio_blk --preload=virtio_blk --with=virtio_net --preload=virtio_net --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r)
CentOS 8/RedHat 8 操作系统:
mkinitrd -f --allow-missing --with=virtio_blk --preload=virtio_blk --with=virtio_net --preload=virtio_net --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r)
CentOS 6/CentOS 7/RedHat 6/RedHat 7 操作系统:
mkinitrd -f --allow-missing --with=xen-blkfront --preload=xen-blkfront --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r)
RedHat 5/CentOS 5 操作系统:
mkinitrd -f --allow-missing --with=xen-vbd --preload=xen-vbd --with=xen-platform-pci --preload=xen-platform-pci --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console /boot/initrd-$(uname -r).img $(uname -r)
Debian/Ubuntu 操作系统:
echo -e 'xen-blkfront\\nvirtio_blk\\nvirtio_pci\\nvirtio_console' >> /etc/initramfs-tools/modules
mkinitramfs -o /boot/initrd.img-$(uname -r)
OpenSUSE Leap 操作系统:
mkinitrd -m "virtio_blk virtio_net"

附录

下载和编译内核

下载内核安装包

1. 执行以下命令,安装编译内核的必要组件。
yum install -y ncurses-devel gcc make wget
2. 执行以下命令,查询当前系统使用的内核版本。
uname -r
返回类似如下结果,当前系统使用的内核版本为2.6.32-642.6.2.el6.x86_64


3. 前往 Linux 内核下载页面,下载对应的或最接近的内核版本源码。 例如,2.6.32-642.6.2.el6.x86_64版本的内核下载 linux-2.6.32.tar.gz 的安装包,其下载路径为:https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
4. 执行以下命令,切换目录。
cd /usr/src/
5. 执行以下命令,下载安装包。
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
6. 执行以下命令,解压安装包。
tar -xzf linux-2.6.32.tar.gz
7. 执行以下命令,建立链接。
ln -s linux-2.6.32 linux
8. 执行以下命令,切换目录。
cd /usr/src/linux

编译内核

1. 依次执行以下命令,编译内核。
make mrproper
cp /boot/config-$(uname -r) ./.config
make menuconfig
进入 “Linux Kernel vX.X.XX Configuration” 界面。如下图所示:

说明:
如果没有进入 “Linux Kernel vX.X.XX Configuration” 界面,请执行 步骤18
“Linux Kernel vX.X.XX Configuration” 界面:
按 “Tab” 或 “↑” “↓” 方向键移动光标。
按 “Enter” 选择或执行光标所选项目。
按空格键选中光标所选项目,“*” 表示编译到内核,“M” 表示编译为模块。
2. 按 “↓” 键将光标调到 “Virtualization”,并按空格键选中 “Virtualization”。
3. 在 “Virtualization” 处按 “Enter”,进入 Virtualization 详情界面。
4. 在 Virtualization 详情界面,确认是否勾选了 Kernel-based Virtual Machine (KVM)support 选项。如下图所示:

若未勾选,请按空格键选中 “Kernel-based Virtual Machine (KVM)support” 选项。
5. 按 “Esc” 返回 “Linux Kernel vX.X.XX Configuration” 主界面。
6. 按 “↓” 键将光标调到 “Processor type and features”,并按 “Enter”,进入 Processor type and features 详情界面。
7. 按 “↓” 键将光标调到 “Paravirtualized guest support”,并按 “Enter”,进入 Paravirtualized guest support 详情界面。
8. 在 Paravirtualized guest support 详情界面,确认是否勾选了 “KVM paravirtualized clock” 和 “KVM Guest support”。如下图所示:

若未勾选,请按空格键选中 “KVM paravirtualized clock” 和 “KVM Guest support” 选项。
9. 按 “Esc” 返回 “Linux Kernel vX.X.XX Configuration” 主界面。
10. 按 “↓” 键将光标调到 “Device Drivers”,并按 “Enter”,进入 Device Drivers 详情界面。
11. 按 “↓” 键将光标调到 “Block devices”,并按 “Enter”,进入 Block devices 详情界面。
12. 在 Block devices 详情界面,确认是否勾选了 “Virtio block driver (EXPERIMENTAL)”。如下图所示:

若未勾选,请按空格键选中 “Virtio block driver (EXPERIMENTAL)” 选项。
13. 按 “Esc” 返回 Device Drivers 详情界面。
14. 按 “↓” 键将光标调到 “Network device support”,并按 “Enter”,进入 Network device support 详情界面。
15. 在 Network device support 详情界面,确认是否勾选了 “Virtio network driver (EXPERIMENTAL)”。如下图所示:

若未勾选,请按空格键选中 “Virtio network driver (EXPERIMENTAL)” 选项。
16. 按 “Esc” 退出内核配置界面,并根据弹窗提示,选择 “YES”,保存 .config 文件。
17. 参考 步骤1:检查内核是否支持 Virtio 驱动,验证 Virtio 驱动是否已经正确配置。
18. 
(可选)执行以下命令,手动编辑 .config 文件。

说明:
如果您符合如下任一条件,建议执行此操作:
若检查后发现,内核仍无 Virtio 驱动的相关配置信息。
编译内核时,无法进入内核配置界面或者未成功保存 .config 文件。
make oldconfig
make prepare
make scripts
make
make install
19. 依次执行以下命令,查看 Virtio 驱动的安装情况。
find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*"
grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
如果任一命令的返回结果输出 virtio_blkvirtio_pci.virtio_console 等文件列表,即表明您已经正确安装了 Virtio 驱动。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈