如何检查Linux系统下的Virtio 驱动
操作场景
云服务器系统内核需要支持 Virtio 驱动(包括块设备驱动 virtio_blk
和网卡驱动 virtio_net
)才能在腾讯云上正常运行。为避免导入自定义镜像后,创建的云服务器实例无法启动,您需要在导入镜像前,检查是否需要在源服务器中检查以及修复镜像中对 Virtio 驱动的支持。本文档以 CentOS 操作系统为例,指导您如何在导入镜像前进行检查以及修复镜像中对 Virtio 驱动的支持。
操作步骤
步骤1:检查内核是否支持 Virtio 驱动
执行以下命令,确认当前内核是否支持 Virtio 驱动。
grep -i virtio /boot/config-$(uname -r)
返回类似如下结果:
- 如果返回结果中
CONFIG_VIRTIO_BLK
参数和CONFIG_VIRTIO_NET
参数取值为m
,请执行 步骤2。 - 如果在返回结果中
CONFIG_VIRTIO_BLK
参数和CONFIG_VIRTIO_NET
参数取值为y
,表示该操作系统包含了 Virtio 驱动,您可以直接导入自定义的镜像到腾讯云。操作详情请参见 导入镜像概述。 - 如果在返回结果中没有
CONFIG_VIRTIO_BLK
参数和CONFIG_VIRTIO_NET
参数的信息,表示该操作系统不支持导入腾讯云,请 下载和编译内核。
步骤2:检查临时文件系统是否包含 Virtio 驱动
如果 步骤1 的执行结果参数取值为 m
,则需要进一步检查,确认临时文件系统 initramfs
或者 initrd
是否包含 virtio
驱动。请根据操作系统的不同,执行相应命令:
- CentOS 6/CentOS 7/CentOS 8/RedHat 6/RedHat 7 操作系统:
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
- RedHat 5/CentOS 5 操作系统:
mkdir -p /tmp/initrd && cd /tmp/initrd
zcat /boot/initrd-$(uname -r).img | cpio -idmv
find . -name "virtio*"
- Debian/Ubuntu 操作系统:
lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
返回类似如下结果:
可得知,initramfs
已经包含了virtio_blk
驱动,以及其所依赖的virtio.ko
、virtio_pci.ko
和virtio_ring.ko
,您可以直接导入自定义的镜像到腾讯云。
如果initramfs
或者initrd
没有包含virtio
驱动,请执行步骤3。
步骤3:重新配置临时文件系统
如果 步骤2 的执行结果显示临时文件系统 initramfs
或者 initrd
没有包含 virtio
驱动,则需要重新配置临时文件系统 initramfs
或者 initrd
,使其包含 virtio
驱动。请根据操作系统的不同,选择相应操作:
- CentOS 8/RedHat 8 操作系统:
mkinitrd -f --allow-missing --with=virtio_blk --preload=virtio_blk --with=virtio_net --preload=virtio_net --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r)
- CentOS 6/CentOS 7/RedHat 6/RedHat 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)
- RedHat 5/CentOS 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 /boot/initrd-$(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)
附录
下载和编译内核
下载内核安装包
- 执行以下命令,安装编译内核的必要组件。
yum install -y ncurses-devel gcc make wget
2. 执行以下命令,查询当前系统使用的内核版本。
uname -r
返回类似如下结果,当前系统使用的内核版本为2.6.32-642.6.2.el6.x86_64
。
3. 前往 Linux 内核下载页面,下载对应的内核版本源码。
例如,2.6.32-642.6.2.el6.x86_64
版本的内核下载 linux-2.6.32.tar.gz
的安装包,其下载路径为:https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
。
4. 执行以下命令,切换目录。
cd /usr/src/
5. 执行以下命令,下载安装包。
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
6. 执行以下命令,解压安装包。
tar -xzf linux-2.6.32.tar.gz
7. 执行以下命令,建立链接。
ln -s linux-2.6.32 linux
8. 执行以下命令,切换目录。
cd /usr/src/linux
编译内核
- 依次执行以下命令,编译内核。
make mrproper
cp /boot/config-$(uname -r) ./.config
make menuconfig
进入 “Linux Kernel vX.X.XX Configuration” 界面。如下图所示:
说明
如果没有进入 “Linux Kernel vX.X.XX Configuration” 界面,请执行 步骤18。
“Linux Kernel vX.X.XX Configuration” 界面:
- 按 “Tab” 或 “↑” “↓” 方向键移动光标。
- 按 “Enter” 选择或执行光标所选项目。
- 按空格键选中光标所选项目,“*” 表示编译到内核,“M” 表示编译为模块。
2.按 “↓” 键将光标调到 “Virtualization”,并按空格键选中 “Virtualization”。
3.在 “Virtualization” 处按 “Enter”,进入 Virtualization 详情界面。
4.在 Virtualization 详情界面,确认是否勾选了 Kernel-based Virtual Machine (KVM)support 选项。如下图所示:
若未勾选,请按空格键选中 “Kernel-based Virtual Machine (KVM)support” 选项。
5. 按 “Esc” 返回 “Linux Kernel vX.X.XX Configuration” 主界面。
6.按 “↓” 键将光标调到 “Processor type and features”,并按 “Enter”,进入 Processor type and features 详情界面。
7.按 “↓” 键将光标调到 “Paravirtualized guest support”,并按 “Enter”,进入 Paravirtualized guest support 详情界面。
8.在 Paravirtualized guest support 详情界面,确认是否勾选了 “KVM paravirtualized clock” 和 “KVM Guest support”。如下图所示:
若未勾选,请按空格键选中 “KVM paravirtualized clock” 和 “KVM Guest support” 选项。
9. 按 “Esc” 返回 “Linux Kernel vX.X.XX Configuration” 主界面。
10.按 “↓” 键将光标调到 “Device Drivers”,并按 “Enter”,进入 Device Drivers 详情界面。
11.按 “↓” 键将光标调到 “Block devices”,并按 “Enter”,进入 Block devices 详情界面。
12.在 Block devices 详情界面,确认是否勾选了 “Virtio block driver (EXPERIMENTAL)”。如下图所示:
若未勾选,请按空格键选中 “Virtio block driver (EXPERIMENTAL)” 选项。
13.按 “Esc” 返回 Device Drivers 详情界面。
14.按 “↓” 键将光标调到 “Network device support”,并按 “Enter”,进入 Network device support 详情界面。
15.在 Network device support 详情界面,确认是否勾选了 “Virtio network driver (EXPERIMENTAL)”。如下图所示:
若未勾选,请按空格键选中 “Virtio network driver (EXPERIMENTAL)” 选项。
16.按 “Esc” 退出内核配置界面,并根据弹窗提示,选择 “YES”,保存 .config
文件。
17.参考 步骤1:检查内核是否支持 Virtio 驱动,验证 Virtio 驱动是否已经正确配置。
18.(可选)执行以下命令,手动编辑.config
文件。
说明
如果您符合如下任一条件,建议执行此操作:
- 若检查后发现,内核仍无 Virtio 驱动的相关配置信息。
- 编译内核时,无法进入内核配置界面或者未成功保存
.config
文件。
make oldconfig
make prepare
make scripts
make
make install
19.依次执行以下命令,查看 Virtio 驱动的安装情况。
find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*"
grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
如何检查Linux系统下的Virtio 驱动相关推荐
- linux系统下编写I2C驱动
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...
- OK6410开发板linux系统下的SPI驱动和测试
OK6410下的SPI驱动是可以用的,但是飞凌把它作为其它用途了,我们修改一些代码才能在/dev目录下创建SPI的设备节点文件 Step1:打开arch/arm/mach_s3c64XX/mach_m ...
- linux系统能装什么显卡,Linux系统下安装显卡驱动
第一次使用Linux遇到的不是硬盘分区而是显卡驱动问题,因为Linux在图形界面方面作的不是很好,以后你安其它软件时就能感受到.好多时候看到图形界面出错不一定是软件出问题. Linux下安装显卡驱动 ...
- linux系统下的打印机驱动下载,方法论:Linux下如何驱动主流品牌打印机
薄荷站长浸淫 Linux 桌面领域十余年,一直致力于 Linux 桌面系统的推广.对于桌面用户办公中必需的打印功能,薄荷站长也是有所研究.为了使新手朋友们少走弯路,薄荷站长介绍一下常见品牌打印机的 L ...
- Linux 系统下 NVIDIA 显卡驱动,GNOME 桌面环境不兼容
NVIDIA 显卡驱动在 Windows 系统下的安装非常方便,大部分第三方软件都能直接自动检测型号,并从 NVIDIA 官网上下载驱动安装.但是在 Linux 操作系统下,NVIDIA 显卡的驱动需 ...
- linux系统下的打印机驱动下载,总结各大常见打印机品牌在Linux下的驱动方法
本文介绍常见打印机品牌在 Linux 系统中的驱动方法,这是一篇总结方向性的文章,不是教你在 Linux 下安装打印机驱动,而是看完本文后大致有所了解各大常见打印机品牌在 Linux 下的驱动方法,具 ...
- linux系统下安装2080ti驱动,CentOS 7.4 Nvidia GeForce RTX 2080 Ti 显卡驱动安装
环境描述 系统版本:CentOS Linux release 7.4.1708 (Core) 内核版本:3.10.0-693.el7.x86_64 显卡驱动版本: NVIDIA-Linux-x86_6 ...
- linux CFI接口,高手进阶 Linux系统下MTD/CFI驱动介绍
某些Intel的FLASH芯片(如StrataFlash系列)支持多分区,也就是各个分区可以同时进行操作.应该说这是不错的特性,但是也会带来些问题.记得当初移植Linux-2.4.21,挂JFFS2文 ...
- linux下的can驱动测试,linux系统下can的驱动测试
测试can需要ip,can-utils和libsocketcan库. 通过ip工具配置can,如速率,启用和禁用can等.不能用buildroot编译出来的ip,需要重新编译. 1. 编译ip: ip ...
最新文章
- JS中编写函数去除HTML标签,js函数获取html中className所在的内容并去除标签
- 昆虫大脑帮助AI解决导航难题
- JAVA网络编程:TCP/IP数据包结构
- 第十六届全国大学生智能车竞赛广东赛区线上竞赛方案
- mysql + Fluently NHibernate + WebAPI + Autofac
- ASCII、GB2312、GBK、Unicode、UTF-8介绍和转换
- 产品经理如何专业吐槽产品?友谊小船从此不再翻
- Google Analytics 跟踪代码安装后状态总是显示'未安装跟踪代码'
- c语言发牌思路,C语言发牌机程序求详细解析
- C++库(Google Breakpad)
- hive 开窗函数_Hive的架构剖析
- c语言小学生四则运算出题_软件工程第一次作业,小学生四则运算的出题程序...
- ssh 认证指定端口
- messagedigest 图片加密_通过MessageDigest实现简单的MD5加密
- Alien Skin ExposureX8专业图像编辑器全新版本
- LeetCode1619删除某些元素后的数组均值(java)
- JS判断当前页面是否在微信内打开
- STEM 是个怎样高大上的东西?
- Sass扫码点餐源码 单门店多门店餐饮连锁扫码点餐外卖自提系统源码
- asp.net core webAPI学习笔记(三)资源请求
热门文章
- 关联分析中的支持度、可信度和提升度
- FFmpeg使用X264编码参数
- layui分页功能在vue写的H5中实现
- 网管教程:如何使用HTTP压缩优化服务器(图)
- 关于Hantek6022BL虚拟示波器的在WIN10的安装(神坑)
- 3dmax+vray学习教程
- Android Ble蓝牙开发
- hmcl离线登陆_hmcl启动器下载
- java 杰表_【汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8哪个好用】汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8对比-ZOL下载...
- 网页显示不全(运行时网页pc端显示完全,手机端显示不全)