上云无忧 > 文档中心 > 腾讯云云服务器CVM - Linux 系统检查 Virtio 驱动
云服务器CVM
腾讯云云服务器CVM - Linux 系统检查 Virtio 驱动

文档简介:
操作场景: 云服务器系统内核需要支持 Virtio 驱动(包括块设备驱动 virtio_blk 和网卡驱动 virtio_net)才能在腾讯云上正常运行。为避免导入自定义镜像后,创建的云服务器实例无法启动,您需要在导入镜像前,检查是否需要在源服务器中检查以及修复镜像中对 Virtio 驱动的支持。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

云服务器系统内核需要支持 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 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
返回类似如下结果:

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

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

如果 步骤2 的执行结果显示临时文件系统 initramfs 或者 initrd 没有包含 virtio 驱动,则需要重新配置临时文件系统 initramfs 或者 initrd,使其包含 virtio 驱动。请根据操作系统的不同,选择相应操作:
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)

附录

下载和编译内核

下载内核安装包

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 驱动。
相似文档
  • 操作场景: Cloudbase-Init 是一种在 Windows 操作系统中安装的工具,它的作用是帮助用户在云环境中自动化地配置和初始化 Windows 虚拟机。在云环境中,用户需要快速创建和部署虚拟机,而 Cloudbase-Init 可以帮助用户在创建虚拟机时自动完成一些初始化工作,例如配置网络、安装软件、执行脚本等。
  • 操作场景: Cloud-init 主要提供实例首次初始化时自定义配置的能力。如果导入的镜像没有安装 cloud-init 服务,基于该镜像启动的实例将无法被正常初始化,导致该镜像正常导入失败。本文档指导您安装 cloud-init 服务。
  • 操作场景: 目前腾讯云云服务器支持导入镜像文件格式为:RAW、VHD、QCOW2、VMDK。其他格式的镜像文件需进行转换才可导入。本文介绍通过 qemu-img 工具将其他格式的镜像文件转换为 VHD 或 RAW 格式。
  • 操作场景: 如果用户的 Linux 镜像无法 安装 cloudinit ,可以使用强制导入镜像功能完成导入。但由于强制导入的镜像没有安装 cloudinit,腾讯云无法初始化配置云服务器。因此,用户需要根据腾讯云提供的配置文件,自行设置脚本来配置云服务器。本文档将指导用户在强制导入镜像的前提下进行配置。
  • 操作场景: 腾讯云支持将已创建的自定义镜像导出至 对象存储 COS 的存储桶内,您可通过该功能导出所需镜像。 前提条件: 已前往 对象存储控制台 开通对象存储服务。 已在自定义镜像所在地域创建存储桶,详情请参见 创建存储桶。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部