前言
前些天接到了项工作,需要把虚拟机从VMware迁移到超融合,但操作过程当中发现没有vitio驱动,怎么办?所以就手动安装修复驱动。
检查镜像内核是否支持virtio驱动
检查系统内核是否支持virtio
grep -i virtio /boot/config-$(uname -r)
情况一:如果参数CONFIG_VIRTIO_BLK及CONFIG_VIRTIO_NET取值为 y,表示操作系统已经包含了virtio 驱动,可以直接上传。
情况二:如果参数CONFIG_VIRTIO_BLK及CONFIG_VIRTIO_NET取值为m时,进行一下步骤以确认临时文件系统是否包含virtio驱动。
确认临时文件系统是否包含virtio驱动
CentOS执行:
lsinitrd /boot/initramfs-$(uname -r).img | grep -i "virtio"
Ubuntu执行:
lsinitrd /boot/initrd.img-$(uname -r) | grep -i "virtio"
有驱动
如下截图,表示系统以及包含了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 /boot/initramfs-$(uname -r).img $(uname -r) -v -f --with=xen-blkfront --preload=xen-blkfront
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) -v -f --with=virtio_blk --preload=virtio_blk
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) -v -f --with=virtio_pci --preload=virtio_pci
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) -v -f --with=virtio_console --preload=virtio_console
Debian/Ubuntu
echo -e 'xen-blkfront\nvirtio_blk\nvirtio_pci\nvirtio_console' >> \ /etc/initramfs-tools/modules mkinitramfs -o /boot/initrd.img-$(uname -r)"
安装内核
如果检查发现当前内核不支持virtio驱动,可以参考以下方式进行安装。这里以CentOS为例。
下载内核安装包
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
下载内核包
通过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
编译内核
依次执行以下指令编译内核:
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
出现以下界面,开始进行virtio相关配置(图中*表示编译到内核,m表示编译为模块):
1、使用空格勾选Virtualization项,然后回车键进入详细列表。
2、在详细列表确认是否勾选了Kernel-based Virtual Machine选项。
3、返回到主界面,再通过上下键选择“Processor type and features”,回车键进入详细列表,再选择“Paravirtualized guest support”并回车键进入详细列表。确认是否选择了“KVM paravirtualized clock”和“KVM Guest support”。
4、返回到主界面,通过上下键选择“Device Drivers”,回车键进入详细列表,再选择“Block devices”并回车键进入详细列表。确认是否选择了“Virtio block driver (EXPERIMENTAL)”。
5、回到上一级“Device Drivers”的详细列表界面,上下键选择“Network device support”并回车键进入详细列表,确认是否选择了“Virtio network driver (EXPERIMENTAL)”。
6、最后按Esc键退出并根据弹窗提示保存.config文件。
7、完成上述步骤再检测virtio配置
grep -i virtio /boot/config-$(uname -r)
(可选)如果还是未发现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驱动的安装了。
以上就是关于V2V迁移的linux安装VITIO驱动的方法,希望读者朋友看完这篇文章后有所启发。