Linux镜像如何添加驱动,安装virtio驱动(Linux)

为了确保私有镜像能正常创建启动云服务器,您需要在导入之前检查virtio驱动是否已经安装。

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

执行grep -i virtio /boot/config-$(uname -r)检查系统内核是否支持virtio。

9cb3154179ccf6a85adf8cc92bf185fb.png

其中,如果参数CONFIG_VIRTIO_BLK 及CONFIG_VIRTIO_NET 取值为 y,表示包含了 virtio 驱动,可以直接上传。如果参数 CONFIG_VIRTIO_BLK 及CONFIG_VIRTIO_NET 取值为 m时,进行步骤2以确认临时文件系统是否包含virtio驱动。

CentOS执行lsinitrd /boot/initramfs-$(uname -r).img | grep virtio,Ubuntu执行lsinitrd /boot/initrd.img-$(uname -r) | grep virtio,确认virtio是否包含在临时文件系统中。

57745850db446c1b75f3f811b4734cf9.png

如上面截图,表示系统以及包含了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

44016b5e7993c1f4d0a5f4c8b4102bc7.png

在这个例子中,通过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项。然后回车键进入详细列表

b8e7865e0b9553c928738ca8be6613c8.png

在详细列表确认是否勾选了Kernel-based Virtual Machine选项。

fd8e09f9b0f0d3280d6194ef70bf0199.png

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

5f273945fdec166bff6c2ab7417b734f.png

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

c1903975100b8b8a5b528134890b2906.png

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

87062128c06d5b0b1ab227a607432aa9.png

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值