最近更新时间:2024-08-28 10:27:29
1.运行命令grep -i virtio /boot/config-$(uname -r)
输出信息中没有找到 VIRTIO_BLK 及 VIRTIO_NET 的信息,表示该操作系统没有安装 virtio 相关驱动,需要安装驱动。
参数 CONFIG_VIRTIO_BLK 及 CONFIG_VIRTIO_NET 取值为 y,表示包含了 virtio 驱动,可以直接上传。
参数 CONFIG_VIRTIO_BLK 及 CONFIG_VIRTIO_NET 取值为 m时,进行步骤2。
2.执行命令lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
(CentOS、Fedora)或者lsinitrd /boot/initrd.img-$(uname -r) | grep virtio
(Ubuntu、Debian)确认 virtio 驱动是否包含在临时文件系统。
如下图,包含了”virtio_blk.ko”、”virtio_pci.ko”和”virtio.ko”,表明系统已经包含virtio_blk驱动,可以进行上传。如果临时文件系统中没有包含 virtio 驱动,则需要修复临时文件系统。
通过上边步骤检查内核是否包含virtio驱动,若发现内核支持virtio驱动,但是临时文件系统initramfs或者initrd中没有包含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驱动的例子。
此处以CentOS服务器为例子,为您示范如何编译安装virtio驱动。
1.运行命令yum install -y ncurses-devel gcc make wget
确保在编译前安装好要使用的工具。
2.运行uname -r
查询当前系统使用的内核版本,如示例中的2.6.32-696.18.7.el6.x86_64。
3.前往Linux内核列表页面
( https://mirrors.edge.kernel.org/pub/linux/kernel/?spm=a2c4g.11186623.2.10.pgVeYp )下载对应的内核版本的源码包,如实例中的2.6.32开头的内核源码包linux-2.6.32.27.tar.gz的网址为 https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/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)选项。
PS:选*配置表示编译到内核,选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)”。
G.按Esc键退出内核配置界面并根据弹窗提示保存.config文件。
3.使用之前讲到的方法检查virtio相关配置是否已经正确配置。
4.(可选)若检查后发现暂未设置virtio相关配置,运行以下命令手动编辑.config文件。
make oldconfig
make prepare
make scripts
make
make install
5.运行以下命令查看 virtio 驱动的安装情况。
find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*"
grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
PS:如果任一命令输出 virtio_blk、virtio_pci.virtio_console 等文件列表,表明您已经正确安装了 virtio 驱动。
纯净模式