文档平台 云服务器 操作指南 镜像 导入镜像 Linux 系统检查 virtio 驱动

Linux 系统检查 virtio 驱动

最近更新时间:2018-08-03 16:54:34

查看pdf

云服务器系统内核需要支持virtio驱动(包括块设备驱动 virtio_blk 和网卡驱动 virtio_net)才能在腾讯云上正常运行,对于未编译进内核的virtio_blk 驱动,还需要包含在initramfs(或者initrd)文件中,云服务器才能正常工作,本文将说明导入镜像前如何检查以及修复镜像中对 virtio 驱动的支持。

内核支持virtio驱动检查

Centos7为例详细说明如何确定当前内核是否支持virtio驱动

(1)确认当前内核是否支持virtio驱动

grep -i virtio /boot/config-$(uname -r)

如下图所示:当前内核包含了virtio_blkvirtio_net驱动,并且是以模块形式编译的(CONFIG_VIRTIO_BLK=m,表示编译成为内核模块,等于y表示编译进内核),如果这一步没有找到virtio_netvirtio_blk的驱动信息,那么该镜像 不支持 导入腾讯云。

如果内核支持virtio驱动(virtio_blkvirtio_net都支持),且virtio_blk驱动编译进入了内核(即CONFIG_VIRTIO_BLK=y),则该内核支持导入,不需要后续确认,如果virtio_blk驱动是编译成内核模块的(即CONFIG_VIRTIO_BLK=m),则还需要继续后续确认步骤,确认virtio_blk驱动正确包含进了initramfs(或initrd)文件中。

(2)确认initramfs中是否包含virtio_blk驱动

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

如下图所示,initramfs中包含了virtio_blk驱动,以及其所依赖的virtio.kovirtio_pci.kovirtio_ring.ko,这样initramfs包含驱动正常,该镜像可以导入。

(3)如果initramfs中未找到相关的virtio信息,则需要重新制作initramfs文件

1) CentOS 7 操作方法

cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)

2) Redhat5/Centos5 操作方法
a. 通过如下方式确定initrd文件中是否包含驱动信息

mkdir -p /tmp/initrd && cd /tmp/initrd
zcat /boot/initrd-$(uname -r).img | cpio -idmv
find . -name "virtio*"

b. 如果需要重新制作initrd文件,执行以下命令

cp /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak
mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initrd-$(uname -r).img $(uname -r)

3) Debian/Ubuntu 操作方法
a. 检查virtio驱动情况

lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio

b. 如果initramfs中未包含,则执行以下步骤修复

echo -e "virtio_pci\nvirtio_blk" >> /etc/initramfs-tools/modules
update-initramfs  -u