CDN加速

Linux安装virtio驱动

更新时间:2021-05-19 16:33:22

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

  1. 执行grep -i virtio /boot/config-$(uname -r)检查系统内核是否支持virtio
    数据解读|网络攻击防不住 游戏怎么玩得爽?
    其中,如果参数CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET 取值为 y,表示包含了 virtio 驱动,可以直接上传。如果参数 CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET 取值为 m时,进行步骤2以确认临时文件系统是否包含virtio驱动。

  2. CentOS执行lsinitrd /boot/initramfs-$(uname -r).img | grep virtioUbuntu执行lsinitrd /boot/initrd.img-$(uname -r) | grep virtio,确认virtio是否包含在临时文件系统中。
    数据解读|网络攻击防不住 游戏怎么玩得爽?
    如上面截图,表示系统以及包含了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_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_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_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

数据解读|网络攻击防不住 游戏怎么玩得爽?

在这个例子中,通过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项。然后回车键进入详细列表
    数据解读|网络攻击防不住 游戏怎么玩得爽?

  • 在详细列表确认是否勾选了Kernel-based Virtual Machine选项。
    数据解读|网络攻击防不住 游戏怎么玩得爽?

  • 返回到主界面,再通过上下键选择“Processor type and features”,回车键进入详细列表,再选择“Paravirtualized guest support”并回车键进入详细列表。确认是否选择了“KVM paravirtualized clock”和“KVM Guest support”。
    数据解读|网络攻击防不住 游戏怎么玩得爽?

  • 返回到主界面,通过上下键选择“Device Drivers”,回车键进入详细列表,再选择“Block devices”并回车键进入详细列表。确认是否选择了“Virtio block driver (EXPERIMENTAL)”。
    数据解读|网络攻击防不住 游戏怎么玩得爽?

  • 回到上一级“Device Drivers”的详细列表界面,上下键选择“Network device support”并回车键进入详细列表,确认是否选择了“Virtio network driver (EXPERIMENTAL)”。
    数据解读|网络攻击防不住 游戏怎么玩得爽?

  • 最后按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驱动的安装了。