云服务器 Linux 系统安装 Virtio 驱动

云服务器系统内核需要支持 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:检查临时文件系统是否包含 Virtio 驱动。

·如果在返回结果中CONFIG_VIRTIO_BLK参数和CONFIG_VIRTIO_NET参数取值为y,表示该操作系统包含了 Virtio 驱动,你可以直接导入自定义的镜像到腾讯云,操作详情请参见 导入镜像。

·如果在返回结果中没有CONFIG_VIRTIO_BLK参数和CONFIG_VIRTIO_NET参数的信息,表示该操作系统不包含腾讯云需要的驱动,请 下载和编译内核。

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

当CONFIG_VIRTIO_BLK和CONFIG_VIRTIO_NET参数的取值均为m或一个为y一个为m时,运行以下命令,检查 Virtio 驱动是否已添加到临时文件系统。

CentOS/Red Hat 系列Debian/Ubuntu 系列OpenSUSE 系列CentOS5/Red Hat5lsinitrd /boot/initramfs-$(uname -r).img | grep virtiolsinitramfs /boot/initrd.img-$(uname -r) | grep virtiolsinitrd /boot/initrd-$(uname -r) | grep virtiomkdir -p /tmp/initrd && cd /tmp/initrdzcat /boot/initrd-$(uname -r).img | cpio -idmvfind . -name "virtio*"

返回类似如下结果:

·如果返回结果包含了virtio_blk和virtio_net,表示 Virtio 驱动已经添加到临时文件系统中,这篇下方内容你无需继续执行,可直接 导入镜像。

·如果CONFIG_VIRTIO_BLK和CONFIG_VIRTIO_NET参数的取值一个为y一个为m,则只需要判断取值为m的驱动是否已添加到临时文件系统。具体操作请参见:步骤3:将 Virtio 驱动添加到临时文件系统。

三、步骤3:将 Virtio 驱动添加到临时文件系统

通过检查,发现镜像内核支持 Virtio 驱动,但是未添加到临时文件系统中,需要手动添加。

CentOS/Red Hat 系列Debian/Ubuntu 系列OpenSUSE 系列CentOS5/Red Hat5mkinitrd -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)echo -e 'xen-blkfront\\nvirtio_blk\\nvirtio_pci\\nvirtio_console' >> /etc/initramfs-tools/modulesmkinitramfs -o /boot/initrd.img-$(uname -r)mkinitrd -m "virtio_blk virtio_net"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)

四、步骤1:下载内核安装包

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下载路径为:https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz。

·5.4.101-***.x86_64下载路径为:https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.101.tar.gz。

4. 执行以下命令,下载安装包。

cd /usr/src/wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz

5. 执行以下命令,解压安装包并且建立软连接。

tar -xzf linux-2.6.32.tar.gzln -s linux-2.6.32 linux

五、步骤2:编译内核

1. 执行以下命令,编译内核。

cd /usr/src/linuxmake mrpropercp /boot/config-$(uname -r) ./.configmake menuconfig

进入 Linux Kernel vX.X.XX Configuration 界面。如下:


注意:如果没有进入Linux Kernel vX.X.XX Configuration界面,请执行 步骤9。

2. 配置Virtualization。

2.1 按↓键将光标调到Virtualization,按空格键选中,并且按Enter进入详情界面。

2.2 在详情界面,确认是否勾选了Kernel-based Virtual Machine(KVM)support选项。如下:

注意:说明:

注意:若未勾选,请按空格键选中Kernel-based Virtual Machine(KVM)support选项。

3. 按Esc返回Linux Kernel vX.X.XX Configuration主界面。

4. 配置Processor type and features。

4.1 按↓键将光标调到 Processor type and features,按Enter,进入详情界面。

4.2 按↓键将光标调到 Paravirtualized guest support,按Enter,进入详情界面。

4.3 确认是否勾选了KVM paravirtualized clock和KVM Guest support。如下:

注意:说明:

注意:若未勾选,请按空格键选中KVM paravirtualized clock和KVM Guest support选项。

5. 按Esc返回Linux Kernel vX.X.XX Configuration主界面。

6. 配置Device Drivers。

6.1 按 ↓键将光标调到Device Drivers,按 Enter,进入详情界面。

6.2 启用磁盘驱动。

6.2.1 按 ↓键将光标调到Block devices,按Enter,进入详情界面。

6.2.2 确认是否勾选了Virtio block driver (EXPERIMENTAL)。如下:

注意:说明:

注意:若未勾选,请按空格键选中Virtio block driver (EXPERIMENTAL)选项。

6.3 按Esc返回 Device Drivers 详情界面。

6.4 启用网卡驱动。

6.4.1 按↓键将光标调到Network device support,按Enter,进入详情界面。

6.4.2 确认是否勾选了Virtio network driver (EXPERIMENTAL)。如下:

注意:说明:

注意:若未勾选,请按空格键选中Virtio network driver (EXPERIMENTAL)选项。

6.5 按Esc返回 Device Drivers 详情界面。

7. 按Esc退出内核配置界面,并根据弹窗提示,选择YES,保存 .config 文件。

8. 重新按照 步骤1:检查内核是否支持 Virtio 驱动,验证 Virtio 驱动是否已经正确配置,如果检查通过则代表安装成功,可以继续 导入镜像。

9. (可选)手动编辑 .config 文件。

注意:说明:

注意:如果你符合如下任一条件,建议执行此操作:

make oldconfigmake preparemake scriptsmakemake install

依次执行以下命令,查看 Virtio 驱动的安装情况。

find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*"grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin

如果任一命令的返回结果输出 virtio_blk、virtio_pci、virtio_console 等文件列表,即表明你已经正确安装了 Virtio 驱动。

赞 (0)
上一篇 4天前
下一篇 4天前