阿里云知识

阿里云服务器如何安装virtio驱动(Linux)

1 virtio驱动 1.1 检查内核是否支持virtio驱动 1.运行命令”grep -i virtio /boot/config-$(uname -r)”输出信息中没有找到 VIRTIO_BLK 及 VIRTIO_NET 的信息,表示该操作系统没有安装 virtio 相关驱动,需要安装驱动。 参数 CONFIG_VIRTIO_BLK 及 CONFIG_VI


1 virtio驱动
1.1 检查内核是否支持virtio驱动

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 驱动,则需要修复临时文件系统。


1.2 修复临时文件系统

通过上边步骤检查内核是否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 virtio_pci virtio_console' >>

/etc/initramfs-tools/modulesmkinitramfs -o /boot/initrd.img-$(uname -r)


2 编译安装virtio驱动

如您发现当前设备其内核不支持virtio驱动,可以参考如下安装virtio驱动的例子。

此处以CentOS服务器为例子,为您示范如何编译安装virtio驱动。


2.1 下载内核安装包

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”切换目录。


2.2 编译内核

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

make mrpropersymvers_path=$(find /usr/src/ -name "Module.symvers")test -f $symvers_path && cp $symvers_path .cp /boot/config-$(uname -r) ./.configmake 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 驱动。



上一篇:阿里云竞价实例常见问题 下一篇:阿里云备案常见问题

精彩导读