全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

如何安装virtio驱动(Linux)

最近更新时间:2026-10-08 10:01:29

本文介绍 Linux 服务器 virtio 驱动的检查、临时文件系统修复及编译安装方法,帮助您确认系统是否已包含 virtio 块设备和网络驱动,并解决内核或 initramfs 中缺失 virtio 驱动的问题。适用于需要上传系统镜像前的驱动兼容性检查与修复场景。

检查内核是否支持 virtio 驱动

  1. 运行以下命令,检查内核配置中是否包含 virtio 相关驱动。

    grep -i virtio /boot/config-$(uname -r)
  2. 分析返回结果中参数取值,并根据实际情况,进行相应操作。

    参数

    取值

    说明

    CONFIG_VIRTIO_BLK 及 CONFIG_VIRTIO_NET

    y

    表示当前实例已正确安装virtio相关驱动,且编译至内核,无需进行本文内的任何操作。

    以下任意情况

    • 均为m

    • 一个y一个m

    表明virtio驱动可能已内核模块形式存在,则需进行临时文件系统的检查或修改操作。

    未输出相应参数

    表示该操作系统没有安装 virtio 相关驱动,需要手动安装驱动。

检查及修复临时文件系统

  1. 执行以下命令,确认 virtio 驱动是否包含在临时文件系统中。

    CentOS/Fedora:

    lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

    Ubuntu/Debian:

    lsinitrd /boot/initrd.img-$(uname -r) | grep virtio
    • 如上图所示,若输出中包含 virtio_blk.ko、virtio_pci.ko 和 virtio.ko,表明virtio驱动已添加至临时文件系统,则无需执行后续操作。

    • 若输出没有包含相应信息,则说明临时文件系统中没有包含 virtio 驱动,则继续后续操作,将virtio驱动添加至临时系统文件即可。

  2. 将virtio驱动添加至临时系统文件。

    • CentOS/RedHat 5:

      mkinitrd -f --allow-missing \
      --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)
    • CentOS/RedHat 6/7:

      mkinitrd -f --allow-missing \
      --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 'nvirtio_blk\nvirtio_pci\nvirtio_console' >> \
      /etc/initramfs-tools/modules
      mkinitramfs -o /boot/initrd.img-$(uname -r)

手动安装 virtio 驱动

如您发现当前设备其内核不支持 virtio 驱动,可以参考如下安装 virtio 驱动。此处以 CentOS 服务器为例,为您示范如何编译安装 virtio 驱动。

下载内核安装包

  1. 运行以下命令安装编译工具。

    yum install -y ncurses-devel gcc make wget
  2. 运行以下命令查询当前系统使用的内核版本,例如 2.6.32-696.18.7.el6.x86_64。

    uname -r
  3. 前往 Linux 内核列表页面 下载对应内核版本的源码包。例如 2.6.32 开头的内核源码包 linux-2.6.32.27.tar.gz 的下载地址为 linux-2.6.32.27.tar.gz。

  4. 运行以下命令切换目录。

    cd /usr/src
  5. 运行以下命令下载安装包。

    wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.27.tar.gz
  6. 运行以下命令解压安装包。

    tar -xvf linux-2.6.32.27.tar.gz
  7. 运行以下命令建立链接。

    ln -s linux-2.6.32.27 linux
  8. 运行以下命令切换目录。

    cd /usr/src/linux

编译内核

  1. 依次运行以下命令编译内核。

    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
  2. 在出现的配置界面中,打开 virtio 相关配置:

    a. 使用空格勾选 Virtualization 项,回车键进入详细列表。

    b. 在详细页面确认是否勾选了 KVM(Kernel-based Virtual Machine) 选项。

    选 * 配置表示编译到内核,选 m 配置表示编译为模块。

    c. 回退到主界面,上下键选择 Processor type and features,回车进入其详细界面,上下键选择 Paravirtualized guest support,回车进入其详细界面。确认是否选择了 KVM paravirtualized clock 和 KVM Guest support。

    d. 回到主界面,上下键选择 Device Drivers,回车进入其详细选项页,上下键选择 Block devices,回车进入其详细选项页。确认是否选上 Virtio block driver (EXPERIMENTAL)。

    e. 回到上一级界面,即 Device Drivers 的详细页,上下键选择 Network device support,回车进入其详细页,确认是否选上 Virtio network driver (EXPERIMENTAL)。

    f. 按 Esc 键退出内核配置界面并根据弹窗提示保存 .config 文件。

  3. 使用之前介绍的方法检查 virtio 相关配置是否已经正确配置。

  4. 可选:若检查后发现暂未设置 virtio 相关配置,运行以下命令手动编辑 .config 文件。

    make oldconfig
    make prepare
    make scripts
    make
    make install
  5. 运行以下命令查看 virtio 驱动的安装情况。如果任一命令输出 virtio_blk、virtio_pci、virtio_console 等文件列表,表明您已经正确安装了 virtio 驱动。

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

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈