QEMU虚拟机中如何安装Virtio驱动

2023-11-04

在计算机虚拟化中,Virtio是一种半虚拟化解决方案,即需要对Guest OS进行一定的修改(安装相应的驱动程序),能够对虚拟机的I/O性能进行大幅的提升。在QEMU+KVM的环境中,Virtio的后端驱动由QEMU程序提供,不需要额外的安装,而前端驱动则位于Guest OS中,需要将相应OS类型的驱动程序安装到Guest OS中。

本文以QEMU+KVM为VMM,以Win 7为Guest OS,展示如何在Guest OS上安装Virtio SCSI驱动。

由于在Guest OS在没有安装Virtio驱动的时候,无法使用Virtio设备,同时Guest OS在没有VIrtio设备的时候,也可能无法正确安装Virtio驱动,故需要一定的方法绕过该问题,即先给虚拟机一个空的Virtio SCSI设备用于安装Virtio SCSI驱动程序,等安装完毕后,再将虚拟机镜像绑定到Virtio SCSI控制器上。如果在虚拟机没有安装Virtio SCSI驱动的情况下,直接将虚拟机镜像绑定到Virtio SCSI设备上的话,将会导致虚拟机无法启动。

 

1. 按照正常的步骤创建虚拟机,并启动。

执行下列命令创建一个容量为40GB的磁盘文件,用作虚拟机的磁盘

qemu-img create -f qcow2 win7.img 40G

执行下列命令启动虚拟机,并将win7系统安装到win.img所制定的虚拟机磁盘中。

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

2. 下载virtio驱动

下载地址页面:https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html
如:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

3. 利用下列命令启动虚拟机,虚拟机镜像先还是以传统的hda形式传进去,并且将下载的virtio-win.iso以cdrom的形式传进虚拟机,最后还得给虚拟机创建一个virtio的设备那样windows才能正确安装virtio驱动(好像,如果没有virtio设备,windows是无法正确安装virtio驱动的,这点很重要)

这里以virtio-blk-pci设备为例(virtio是一类I/O设备的统称,可以有很多中,如block、net、serial等),并且virtio-blk-pci设备在传进虚拟机的时候,得有个对应的磁盘文件,这里就创建一个10GB的空的磁盘文件。

qemu-img create -f qcow2 fake.img 10G

然后执行下列命令

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom virtio-win.iso -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=fake.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

启动虚拟机后发现在CDROM中已经自动加载了virtio-win.iso镜像

同时在设备管理器中找到了带感叹号的SCSI控制器

右击该设备,选择更新驱动程序,然后选择“浏览计算机以查找驱动程序软件”,在搜索位置上选择加载的CDROM(可以发现,在该iso镜像中包含了很多种I/O设备的virtio驱动,并且每种virtio驱动的目录下都对应有不同的OS类型),这里不需要自己手动选择这些,只需要选择“CD驱动器”即可,让系统自动搜索合适的驱动程序。

然后下一步,自动搜索到了Virtio SCSI controller的驱动程序了,选择安装。

至此驱动程序安装完毕

关闭虚拟机。

4. 将虚拟机镜像win7.img绑定到Virtio SCSI设备上,重新启动虚拟机,执行如下命令(不需要cdrom和fake.img了):

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=win7.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

会发现,虚拟机启动快多了,这是因为虚拟机使用了半虚拟化的Virtio SCSI控制器,大大加快了虚拟机磁盘读写的速度。

 

欢迎关注同名微信公众号“河马虚拟化”第一时间获取最新文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QEMU虚拟机中如何安装Virtio驱动 的相关文章

随机推荐

  • 什么是oc门

    什么是oc门 oc门电路及符号 oc门电路应用 实际使用中 有时需要两个或两个以上与非门的输出端连接在同一条导线上 将这些与非门上的数据 状况 用同一条导线输送出去 因此 需要一种新的与非门 电路来实现线与逻辑 这种门 电路就是集电极开路与
  • FPGA时序约束分享03_input delay约束

    第一章 FPGA时序约束分享03 input delay约束 作者 潘文明 本文章探讨一下FPGA的时序input delay约束 本文章内容 来源于配置的明德扬时序约束专题课视频 FPGA时序约束分享01 约束四大步骤 概括性地介绍 了时
  • 【火炉炼AI】机器学习040-NLP性别判断分类器

    火炉炼AI 机器学习040 NLP性别判断分类器 本文所使用的Python库和版本号 Python 3 6 Numpy 1 14 scikit learn 0 19 matplotlib 2 2 NLTK 3 3 本文的目标是构建一个分类器
  • C++1949到2022的闰年

    include
  • 2012年CSDN高校俱乐部秋季巡讲结案报告

    2012年CSDN高校俱乐部巡讲已经结束 并且得到了来自各地专家的支持 在此对他们深表谢意 同时欢迎更多的讲师加入巡讲 参与到我们的大学生公益组织中 为大学生提供技术知识和人生经验 以下是2012年高校俱乐部秋季巡讲结案报告 巡讲数据及过程
  • SystemVerilog and Verilog X Optimism – Hardware-like X Propagation with Xprop

    原文链接 http www verilogpro com x propagation with vcs xprop August 30 2015 by Jason Yu In part 2 of this series SystemVeri
  • jquery 对象不支持此属性或方法

    本来调用 和jQuery没问题 控制台也可以打印出 和jQuery 但是调用了document write后 出错 对象不支持此属性或方法 控制台也打印不出 了 报同样的错 原因 document write把整个网页重写了 当然就消失了
  • 鸿蒙系统包括8x吗,华为荣耀8X可以升级鸿蒙系统吗?

    开发者大会上 余总表示会逐步在各种设备上部署鸿蒙包括pc 那么目前有没有具体的时间 EMUI 发展到EMUI10 0这一代的时候 基本上跟安卓没了关系 唯一算的上跟安卓有关的就是安卓的内核 除了安卓这个内核 其他的东西全是华为自己的 编译器
  • 计算a+b多组

    计算a b 很多的题目测试数据会有很多组的 一般我们的在线系统没写具体要求的时候 输入是以EOF为结束的 这题的基本框架如下 int main int a b while scanf d d a b EOF 特别注意这行的写法 求和 输出
  • 移动端调试工具vConsole

    安利一款好用的移动端调试工具vConsole vConsole 是腾讯推出的一个轻量 可拓展 针对手机网页的前端开发者调试面板 官网 https alloyteam github io AlloyLever 特性 查看 console 日志
  • 安装虚拟机提示未启动服务器,Hyper-V虚拟机未启动,并触发0x80070057错误

    Hyper V虚拟机未启动 并触发0x80070057错误 09 17 2020 本文内容 本文提供了一个解决方案0x80070057尝试启动虚拟机时发生的错误 适用于 Windows Server 2012R2 原始 KB 编号 3084
  • VSCode 与 WebStorm 横向对比

    https segmentfault com a 1190000020244810
  • Outlook定时/延时发送邮件

    打开邮件撰写界面 需要进入邮件全屏界面 点开Option 选择Delay Delivery 设置需要发送的时间点 该时间与系统时间一致 最后一定要点击发送 使邮件进入待发送箱 否则就delay了一个寂寞 将会在待发送列表里看到这封邮件 以上
  • scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“

    scp或者ssh报错 no matching host key type found Their offer ssh rsa ssh dss 原因 OpenSSH 7 0以后的版本不再支持ssh dss DSA 算法 查看ssh版本 ssh
  • 2022年CCCC天梯赛题解

    L1 1今天我要赢 原题链接 代码 include
  • Java中计时函数

    Java计时函数currentTimeMills System currentTimeMills 计时精确到毫秒级 跟计算机以1970年1月1日0时为计时起点一样 该函数方法统计的也是从1970年1月1日0时开始 到程序运行到该函数时刻的毫
  • Parameter 1 of constructor in xxx required a bean of type xxx‘ that could not be found.已经解决

    使用Mybatis Plus 时遇到问题Parameter 1 of constructor in xxx required a bean of type xxx that could not be found 已经解决 错误截图 错误原因
  • FPGA图像处理系列——乒乓球追踪设计实例

    注 本博文将讲解一个FPGA设计图像处理系统实例 此实例的功能为高速追踪乒乓球 读者可以参考本博文的算法思路 工程框架 但博主并不提供工程 当前 实用的图像处理系统都要求高速处理 目前广泛采用软件进行处理 但软件处理存在速度 成本的问题 近
  • MFC中CListCtrl改变选中行(选中列)的颜色实现选中高亮的效果

    在项目中遇到了这样的需求 需要对选中行进行高亮 查了一下相关的资料 记录一下自己采用的方法 先在List控件所在类中 这里是CListshow 继承于CListCtrl 添加两个变量SelectRow和SelectCol 用于保存鼠标点击的
  • QEMU虚拟机中如何安装Virtio驱动

    在计算机虚拟化中 Virtio是一种半虚拟化解决方案 即需要对Guest OS进行一定的修改 安装相应的驱动程序 能够对虚拟机的I O性能进行大幅的提升 在QEMU KVM的环境中 Virtio的后端驱动由QEMU程序提供 不需要额外的安装