文档中心 镜像服务 Linux安装virtio驱动

Linux安装virtio驱动

更新时间:2022-08-17 16:23:25

检查镜像内核是否支持virtio驱动

  1. 执行grep -i virtio /boot/config-$(uname -r)检查系统内核是否支持virtio
    NGB指的是什么
    检查 CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NETCONFIG_SCSI_VIRTIOCONFIG_VIRTIO_PCI,他们分别表示virtio_blkvirtio_netvirtio_scsivirtio_pci驱动的配置。
  • 如果值为y,那么表示对应的驱动已经正确安装。
  • 如果为m,那么还需要对对应的驱动进行步骤2检查,以确认临时文件系统是否包含virtio驱动。
  1. CentOS执行lsinitrd /boot/initramfs-$(uname -r).img | grep virtioUbuntu执行lsinitrd /boot/initrd.img-$(uname -r) | grep virtio,确认上述四个驱动是否包含在临时文件系统中。
    NGB指的是什么
    如上面截图,表示系统以及包含了所需的四款virtio驱动,可以进行进行上传。
    如果临时文件系统没有包含virtio驱动,则需要修复临时文件系统。

修复临时文件系统

如果检查发现内核支持virtio但是临时文件系统又没有包含virtio驱动时,需要修复临时文件系统。

  • CentOS/RedHat 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_scsi --preload=virtio_scsi \
            --with=virtio_pci --preload=virtio_pci \
            --with=virtio_console --preload=virtio_console \

  • CentOS/RedHat 6/7
mkinitrd -f --allow-missing \
            --with=xen-blkfront --preload=xen-blkfront \
            --with=virtio_blk --preload=virtio_blk \
            --with=virtio_scsi --preload=virtio_scsi \
            --with=virtio_pci --preload=virtio_pci \
            --with=virtio_console --preload=virtio_console \
            /boot/initramfs-$(uname -r).img $(uname -r)

  • Debian/Ubuntu
echo -e 'xen-blkfront\nvirtio_blk\nvirtio_scsi\nvirtio_pci\nvirtio_console' >> \
/etc/initramfs-tools/modules
mkinitramfs -o /boot/initrd.img-$(uname -r)"

编译安装virtio驱动

如果检查发现当前内核不支持virtio驱动,可以参考以下方式进行安装。这里以CentOS为例。

1. 下载内核安装包
执行yum install -y ncurses-devel gcc make wget以安装编译所需的工具。
执行uname -r以确认当前内核版本。
Linux内核列表下载对应的内核版本源码。如3.10.10的源码下载地址为https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.10.tar.gz

NGB指的是什么

在这个例子中,通过wget下载内核包,解压到/usr/src/目录中。具体操作如下:

cd /usr/src wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.10.tar.gz tar -xzf linux-3.10.10.tar.gz ln -s linux-3.10.10 linux cd /usr/src/linux

2. 编译内核
依次执行以下指令编译内核:

make mrproper symvers_path=$(find /usr/src/ -name "Module.symvers") test -f $symvers_path && cp $symvers_path . cp /boot/config-$(uname -r) ./.config make menuconfig
出现以下界面,开始进行virtio相关配置(图中*表示编译到内核,m表示编译为模块):

  • 使用空格勾选Virtualization项。然后回车键进入详细列表
    NGB指的是什么

  • 在详细列表确认是否勾选了Kernel-based Virtual Machine选项。
    NGB指的是什么

  • 返回到主界面,再通过上下键选择“Processor type and features”,回车键进入详细列表,再选择“Paravirtualized guest support”并回车键进入详细列表。确认是否选择了“KVM paravirtualized clock”和“KVM Guest support”。
    NGB指的是什么

  • 返回到主界面,通过上下键选择“Device Drivers”,回车键进入详细列表,再选择“Block devices”并回车键进入详细列表。确认是否选择了“Virtio block driver (EXPERIMENTAL)”。
    NGB指的是什么

  • 回到上一级“Device Drivers”的详细列表界面,上下键选择“Network device support”并回车键进入详细列表,确认是否选择了“Virtio network driver (EXPERIMENTAL)”。
    NGB指的是什么

  • 最后按Esc键退出并根据弹窗提示保存.config文件。
    完成上述步骤再按照《检查镜像内核是否支持virtio驱动》方法检测virtio配置。
    (可选)如果还是未发现virtio相关配置,可以执行以下命令手动编辑.config文件:
    make oldconfig
    make prepare
    make scripts
    make
    make 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驱动的安装了。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!