《KVM虚拟化技术:实战与原理解析》

本页面是为了《KVM虚拟化技术:实战与原理解析》这本KVM书而构建的,主要讨论和该书中涉及的相关技术和勘误说明,也欢迎任何关于KVM虚拟化技术的讨论,谢谢!

《KVM虚拟化技术:实战与原理解析》已经由机械工业出版社于2013年10月出版,博主是该书的主要作者,请大家支持,也请批评指教 ^_^

如果您喜欢KVM虚拟化技术,可以在各大购书网站搜索“KVM虚拟化”来购买

您也可以考直接通过如下的任何一个链接去购买该书:

当当网:http://product.dangdang.com/23341742.html

京东:http://item.jd.com/11325760.html

亚马逊:http://www.amazon.cn/KVM虚拟化技术-实战与原理解析-任永杰/dp/B00FDHKZ9Q/

天猫:http://detail.tmall.com/item.htm?id=35263644390

书评在豆瓣
豆瓣:http://book.douban.com/subject/25743939/

'the picture of the KVM book'

如果您想看一下本书初稿中的一些连载,请访问如下连接(部分内容连载):

《KVM虚拟化技术:实战与原理解析》(连载):http://smilejay.com/kvm_theory_practice/

本书勘误表: (update: 2015.05.15 已修正是指最新的版本-第1版第5次印刷 中已修正)
备注:由于出本社印刷时的一点小问题,书中有多处命令中间的空格被不小心遗漏了,如 -m 2048-balloon virtio 应该为 -m 2048 -balloon virtio。望广大读者谅解,谢谢~

页码 原文 改为 状态
5 第3行 其中相当流行的是有Apache基金会的用Java语言开发的开源的Hadoop。 其中相当流行的是由Apache基金会用Java语言开发的开源的Hadoop。 已修正
5 第12行 VMware自由 VMware自有 已修正
13 第6行 隔离型 隔离性 已修正
14 倒数第6行 生命管理周期 生命周期管理 已修正
15 第4行 远端桌面协定 远程桌面协议 已修正
15 第5行 USB的支援 USB的支持 已修正
15 第16行 VSC、VSP VSC(Virtualization Service Client )、VSP(Virtualization Service Provider) 已修正
23 第3行 成为VT-d 称为VT-d 已修正
23 倒数第1行 也可以让在读者阅读 也可以让读者在阅读 已修正
33 倒数第1个命令 makevmlinux -j 20 make vmlinux -j 20 已修正
41 第3个命令 -smp 4-boot -smp 4 -boot 已修正
41 第9行 order=cd是指定系统的启动顺序为光驱(c:CD-ROM)、硬盘(d: hard disk), order=cd是指定系统的启动顺序为硬盘(c: hard disk)、光驱(d:CD-ROM), 待修正
82 倒数第12行 真正的物理存储放在初始端(initiator),而使用iSCSI磁盘的是目标端(target) 真正的物理存储放在目标端(target),而使用iSCSI磁盘的是初始端(initiator) 已修正
84 倒数第6行 vectors=v,设置该网卡设备的MSI-X向量的数量为n vectors=v,设置该网卡设备的MSI-X向量的数量为v 已修正
84 第10行 macaddr=mac,….防止MAC地址冲突。 添加一句话:请大家在实际使用中最好配置自己的MAC地址,否则QEMU会默认分配一个相同的MAC地址,几个虚拟机同时运行则可能会通过DHCP分配到相同的IP,从而引发IP地址冲突。 已修正
85 第6行 -nettap -net tap(添加一个空格) 已修正
87 倒数第2行 /etc/qemuif-up /etc/qemu-ifup 已修正
99 第5行 “hostfw=…” “hostfwd=…” 已修正
99 倒数第8行 smb=dir 这句话之前,用小方块的格式,保持与前面的排列一致 已修正
115 倒数第8行 它的彩色是16位的,分辨率也很高 它的彩色是16位的,分辨率也不高 待修正
121 第3行 并通知用户控件的 并通知用户空间的 待修正
131 第8行 -m 2048-balloon virtio -m 2048 -balloon virtio 待修正
153 倒数第4行 2)用如下命令将STAT硬盘分配(实际是分配STAT Controller)给客户机使用。 2)用如下命令将SATA硬盘分配(实际是分配SATA Controller)给客户机使用。 已修正
166 倒数第7行 [root@jay-linux kvm_demo]# qemu-system-x86_64 rhel6u3.img -smp 2 -m 1024 -device pci-assign,host=08:00.0 -net none [root@jay-linux kvm_demo]# qemu-system-x86_64 rhel6u3.img -smp 2 -m 1024 -device pci-assign,host=06:10.1 -net none 已修正
183 第3行 mount vt-nfs:/rw-images/ /mnt/ mount my-nfs:/rw-images/ /mnt/ 待修正
183 倒数第4行 用 Ctrl+Alt+F2 快捷键 用 Ctrl+Alt+2 快捷键 已修正
335 倒数第10行 (1)libvirt官方网站上关于libvirt AP的详细描述 (1)libvirt官方网站上关于libvirt API的详细描述 已修正

 

 

78 Comments

  1. 我擦勒!在亚马逊安卓客户端上搜索“KVM虚拟化技术:实战与原理解析”,出来的是《jQuery权威指南(第2版)》,不过好在搜索“KVM”,第一条结果就是,已经付款了,大概周三能到。从四月份发现楼主博客开始看这个连载,一直在等着出书呢!今天无意间打开,才发现已经上架了。以前都是工作种用KVM,现在笔记本上双系统,Ubuntu里也装了KVM了,刚好可以好好学学。博主能否给发个邮件,我保存下楼主的邮箱账号,以后看书遇到问题邮件交流下?

    PS:现在才发现配合手机,招商银行信用卡可以在Ubuntu上完成支付,而且不会在亚马逊上留下自己的信用卡信息。如果Ubuntu桌面和应用能在稳定一些,就可以彻底抛弃Windows勒。另,强烈推荐去亚马逊购买此书。

    • 谢谢关注! 书中前言我提到了email,在本博客交流也可以,呵呵。
      偶尔网银我暂时是在Ubuntu中安装windows虚拟机来使用的。。 为了方便,也直接用手机银行得了

      • 我擦勒!刚看“关于本博客”,里面有你的邮箱……嗯……一些技巧性质的小问题就在博客提问了,如果比较复杂的,到时候给你发邮件啊。

      • 书到了,可能我这是个例吧……翻开封皮第一页就给我了个惊喜啊……左上角给折页切割了,书胶就没沾上……还有比较多的页面应该是印刷时候页面没干就封装了,墨渍很多啊,虽然不影响阅读,但是总觉得不舒服。希望再版的时候,博主能多多监督一下出版社,不要让后来买的再遇到我这情况了。

  2. 呵呵,刚刚接触kvm虚拟化的时候 网上查了N多资料,我查阅时间中有近十分之一在你这个网站上,既然出书了 怎么可能不顶呢?现在去下单了!

  3. 买了2个星期,大致看完第一遍,相当的好!

  4. 今天去书店,猛的一台头就看到了这本书,现在在学习中,缘分啦!!!!!!

  5. 期待了很久,今天知道已经出版,马上就在当当买了。呵呵。

  6. P41页第三个命令:qemu-system-x86_64……,输完后出现“drive with bus=0,unit=0 (index=0) exists”,试了多次仍旧如此,求解答。

    • 我上面的勘误表中说了,差一个空格哦,“-smp 4 -boot”是在正确的。
      你确认这个问题后,如果还有问题,把你完整命令发过来看看吧。。

  7. 完整命令是:qemu-system-x86_64 -m 2048 -smp 4 -boot order=cd -hda /root/kvm_demo/rhel6u3.img -cdrom /root/kvm_demo/RHEL6.3-Server-x86_64-DVD1.iso VNC server running on ‘::1:5900’;照做的,kvm_demo下文件都上传了,错误提示是:qemu-system-x86_64: -cdrom /root/kvm_demo/RHEL6.3-Server-x86-DVD1.iso: drive with bus=0, unit=0 (index=0) exists。

    • 不好意思,书中我没明确区分,那个“ VNC server running on ‘::1:5900’”不是命令的一部分,前面命令的输出;请使用:qemu-system-x86_64 -m 2048 -smp 4 -boot order=cd -hda /root/kvm_demo/rhel6u3.img -cdrom /root/kvm_demo/RHEL6.3-Server-x86_64-DVD1.iso

  8. 创建客户端正常 vncviewer端口出 TIGVNC的屏幕是黑色的 请问是哪里的问题

    • rhel6.x 一般照我书上那样基本就可以了;不知你用的哪个版本,自己可以google一下吧~ 和kvm没啥关系;另外,你如果启动了桌面,不用vnc也是可以的~
      vnc可参考:http://wiki.centos.org/HowTos/VNC-Server

  9. 我用得是 centos6 参考VNC 更新了点东西 现在出图了 谢谢 现在用win下得VNC也连上了

  10. 创建完了虚拟机之后,一直都显示VNC server running on ‘::1:5900这一行,而且客户端的vnc连不上,什么原因?

    • 一般情况下就是应该一直停在那一行;连不上,可能是防火墙、SELinux等问题,见我的书中105页4.6.2节。

  11. 第33页编译kernel的命令为
    #makevmlinux -j 20 应空格为 #make vmlinux -j 20

    • 谢谢指出~ 原本我书稿中是正常的格式,在最后出版前的格式转换中,把一些空格给转化乱了。书中确实有部分空格遗漏的情况,对读者带来的不变,我比较抱歉。

  12. 第41页创建镜像文件#dd if=/dev/zero—–bs=1M\ count=8192

    • 谢谢啊~ 这个\是因为我原本的书稿中这里时换行,Linux命令分行输入就用了\符号,不过后来编辑排版之时,又刚好在一行就够了(不许换行),所以\是不需要的 (不过,就算加上也不影响功能~~)

  13. qemu-system-x86_64 -m 2048 -smp 4 -boot order=cd -hda /root/kvm_demo/rhel6u3.img -cdrom /root/kvm_demo/RHEL6.3-Server-x86_64-DVD1.iso

    Could not initialize SDL(No available video device) – exiting

    我的机器没有光驱,有什么办法呢?

    • 这个 -cdrom是值客户机的cdrom,没光驱没关系的。你这里报的错误,在书中103页中提到了。另外,你可以用VNC来显示,见书中105页内容。

    • 在84页找到了你说的问题,谢谢你的细心指出,v和n是写混了。

  14. 我遇到这样的一个问题,就是在一个物理机中,比如 有一个win7 镜像; 我用这个镜像使用不同的端口号启动了6-8个虚拟机。
    虚拟机里面有相同的服务需要运行,在这个时候 我怎么让外面的机子,比如另一个物理机去访问这些启动的虚拟机里的服务?
    看了你的nat模式下的网络配置,是否感觉应该是可以配置的,通过端口映射,但是这里有一个问题 是不是你那说的是一个镜像启动一个虚拟机的时候?
    我不如何才能让另一台物理机能够清楚的访问某一个虚拟机的服务?

    • 用这个镜像使用不同的端口号启动了6-8个虚拟机? 这个看不懂啊,就是你又6-8个win7虚拟机?
      你可以直接用桥接,而不用NAT;当然如果你win7虚拟机中服务的端口是固定的,那么可以用NAT,做端口映射即可,比如:宿主机中8001端口对应win7-1中的80端口,8002->win7-2的80端口;外网访问的地址就是host_ip:8001这样的。

      • 你好,其实是这样的,我们有一个基础 kvm_ntfs.empty,每次从这个需要虚拟机的时候,通过kvm_ntfs.empty这个镜像构造出需要的差异化镜像,比如 win7镜像或者winXP镜像(里面安装了需要的应用服务,可以是统一端口),然后用构造出来的 这一个差异化镜像(如win7)通过KVM 不同端口启动8-10配置一模一样的虚拟机。现在就是其他物理机访问不同的虚拟机的应用。

  15. 项目中要用KVM,刚刚订购了一本作为老师啦,谢谢作者的贡献!

  16. 请问我KVM中的客户机每次关机再启动时间就不对了,宿主机和客户机都是CentOS 6.4.

  17. 谁能帮解决一下!!!奇怪了,装一个软件 ,明明有Python 2.4 环境 ,装的时候老提示我requires:python(abi)=2.4 ,求教!!!!

  18. 你好,

    我看到最后一章节,有关spec cpu2006这工具现在是收费的吗?

    • 嗯 是的 要收费的,具体可以google一下,查看它官网的说明~ 我当时用的是公司购买的版本。。。

  19. 老师,你好。 我在启动虚拟机时出现下面错误。
    qemu-system-x86_64 -m 4096 -smp 4 -hda /root/kvm_demo/rhel58-test.img -net nic,model=e1000,addr=08 -net tap,ifname=tap0,script=/etc/qemu-ifup downscript=no -vnc 172.28.18.244:1:5901
    qemu-system-x86_64: -net tap,ifname=tap0,script=/etc/qemu-ifup: drive with bus=0, unit=0 (index=0) exists

    • 没遇到你这里的情况,不过建议你将ifname=tap1试一下,或者不要ifname=tap0这个参数,我一般都是使用tap1之类的,没用tap0

    • 谢谢指正!是我的笔误,确实应该是:Ctrl+Alt+2 (在书中241页专门将QEMU monitor时,写的快捷键没有笔误。。)

  20. 99頁hostfwd裡的第五行最後面”hostfw=…”似乎少了一個”d”

  21. 永杰大哥,请教一下如何查看某一个进程是否使用内存大页和使用内存大页多大呢?

    1:判断系统是否使用内存大页的方法: 目前可以通过/proc/meminfo 里面的HugePages_Rsvd的值是否为零来判断系统层面是否有使用到内存大页,可以通过停启某一个进程来判断这个值的变化情况,

    2:计算某个进程使用透明大页大小的方法:在/proc/pid【具体的进程号】/smaps文件里面,通过累加AnonHugePages的值来算出该进程使用了多少的透明大页

    3:问题:有没有类似计算进程使用透明大页使用量的方法一样,来计算某一个进程使用内存大页的量。

    ———————————————————————————————

    透明大页的触发机制的疑问?

    1: 在您的书中,201页,说只有在没有普通大页可供使用时,才使用透明大页,是不是指把/sys/kernel/mm/transparent_hugepage/enbled 设置为madvise这种情况呢,因为我测试过,如果把/sys/kernel/mm/transparent_hugepage/enbled设置为always,那么把mysql设置为支持内存大页的情况下,就算内存大页还有很多空余(也就是/proc/meminfo里面 HugePages_Free的值大于0),也会使用到透明大页。

    2:如果把/sys/kernel/mm/transparent_hugepage/enbled 的值设置为always,同时进程的内存映射方式是匿名映射,也就是mmap映射函数中通过标示符MAP_ANONYMOUS来表明是匿名映射,那么如果进程需要内存的时候,就会触发使用透明大页了呢?如果不是的话,那么怎么才会触发呢?如何来判断呢?

    3:如何控制程序使用透明大页: 如果把/sys/kernel/mm/transparent_hugepage/enbled 的值设置为madvise,您在书中说只有在“MADV-HUGEPAGE”标示的内存区域使用透明大页,这个是不是系统自动分配呢?是分配机制是怎么样呢?比如说64G的内存,会分配多少MADV-HUGEPAGE的内存区域。当设置为madvise的时候,我们怎么来控制程序来使用透明大页呢?

    问题比较多,谢谢您,永杰大哥,盼答复。

  22. 153 倒数第4行 用如下命令行将STAT 用如下命令行将SATA

      • 不用客气
        我在尝试P144绑定设备到pci_stub的时候出现一些问题(无法写入/sys/bus/pci/drivers/pci-stub下的文件),还请Jay哥指导:

        #vendor ID, Device ID无法写入new_id文件
        [root@localhost /]# echo -n “14e4:1657” > /sys/bus/pci/drivers/pci-stub/new_id
        -bash: echo: write error: Invalid argument
        #BDF无法写入pci-stub/bind文件,但写入设备的unbind文件是成功的
        [root@localhost /]# echo 0000:03:00.2 > /sys/bus/pci/drivers/pci-stub/bind
        -bash: echo: write error: No such device

        我做了如下检查:
        #CONFIG_PCI_STUB已编译进内核
        [root@localhost /]# cat /boot/config-3.10.0-123.el7.x86_64 | grep PCI_STUB
        CONFIG_PCI_STUB=y

        #pci-stub目录也是存在的
        [root@localhost /]# ls /sys/bus/pci/drivers/pci-stub/
        bind new_id remove_id uevent unbind

        #设备信息
        [root@localhost /]# lspci -k -s 03:00.2
        03:00.2 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01)
        Subsystem: Hewlett-Packard Company Device 169d
        Kernel driver in use: tg3

        #目录信息
        [root@localhost /]# ll /sys/bus/pci/drivers/pci-stub
        total 0
        –w——-. 1 root root 4096 Sep 15 13:55 bind
        –w——-. 1 root root 4096 Sep 15 13:57 new_id
        –w——-. 1 root root 4096 Sep 15 13:44 remove_id
        –w——-. 1 root root 4096 Sep 15 09:34 uevent
        –w——-. 1 root root 4096 Sep 15 13:44 unbind

        • 不好意思 回复有点晚了 对于网卡,我做实验和平时一般用的是Intel的网卡,对于Boradcom的,我有弄成功过,也又失败过,也发现过驱动有什么问题的时候。你可考虑买个Intel网卡,淘宝上便宜的100元以内。

          • 谢谢,我找机会换个网卡再试试
            另外 183 第三行 mount vt-nfs 好像应该是 mount my-nfs (主机名前后不一致)

          • 恩 那是个笔误,谢谢指出。下一次重印时,我纠正它。

  23. 你好,我使用Libvirt 创建了一个镜像A,然后基于这个镜像创建了 一个差异镜像A1, 这个时候 我用A1 只读开启虚拟机,是否可以开启多个?

    • 我不确定,你试试就知道了~~ 只读开启虚拟机是不靠谱的啊,你在A1的基础上还得再弄一个差异镜像?
      我的想法是,都基于镜像A,然后创建A1、A2、A3等多个差异镜像开启多个虚拟机。

      • 现在是按照这样去开启的,但是这样占用磁盘空间,一个差异镜像就得有200M多的空间,而我每次创建这些临时虚拟机(为了做测试机)数量都在200多以上。这个时候空间占用很大。而且一个测试任务就得这么多,我们现有测试任务上百个,目前虚拟机有时候的并发高峰也有上千个以上。而且使用完了 下次运行就不需要这个镜像了。
        以前用KVM+QUME的时候 是只需要一个差异镜像,然后只读开启多个。这样测试任务完成之后,关闭就自动没有,多好啊。

  24. 您好,按照这本书3.3.4节将到执行make install时提示模块找不到,我查询后实际是有的,重新加载还是报这个错

    [root@zabbix_agent_188 kvm.git]# make install
    sh ./arch/x86/boot/install.sh 3.18.0-rc2+ arch/x86/boot/bzImage \
    System.map “/boot”
    ERROR: modinfo: could not find module ipt_MASQUERADE
    ERROR: modinfo: could not find module iptable_nat
    ERROR: modinfo: could not find module nf_nat
    ERROR: modinfo: could not find module scsi_tgt
    ERROR: modinfo: could not find module vmhgfs
    ERROR: modinfo: could not find module vsock
    ERROR: modinfo: could not find module snd_page_alloc
    ERROR: modinfo: could not find module vmware_balloon
    ERROR: modinfo: could not find module vmci
    ERROR: modinfo: could not find module crc_t10dif
    ERROR: modinfo: could not find module vmxnet
    查询后是有的[root@zabbix_agent_188 kvm.git]# lsmod |grep ipt_MASQUERADE
    ipt_MASQUERADE 2400 3
    nf_nat 22788 2 ipt_MASQUERADE,iptable_nat
    nf_conntrack 79643 6 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
    [root@zabbix_agent_188 kvm.git]# lsmod |grep iptable_nat
    iptable_nat 6124 1
    nf_nat 22788 2 ipt_MASQUERADE,iptable_nat
    nf_conntrack_ipv4 9440 6 iptable_nat,nf_nat
    ip_tables 17733 3 iptable_nat,iptable_mangle,iptable_filter
    nf_conntrack 79643 6 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
    ,重建加载

    [root@zabbix_agent_188 kvm.git]# modprobe ipt_MASQUERADE
    [root@zabbix_agent_188 kvm.git]# modprobe iptable_nat
    [root@zabbix_agent_188 kvm.git]# modprobe nf_nat
    [root@zabbix_agent_188 kvm.git]# modprobe scsi_tgt
    [root@zabbix_agent_188 kvm.git]# modprobe vmhgfs
    [root@zabbix_agent_188 kvm.git]# modprobe vsock
    [root@zabbix_agent_188 kvm.git]# modprobe snd_page_alloc
    [root@zabbix_agent_188 kvm.git]# modprobe vmware_balloon
    [root@zabbix_agent_188 kvm.git]# modprobe vmci
    [root@zabbix_agent_188 kvm.git]# modprobe crc_t10dif
    [root@zabbix_agent_188 kvm.git]# modprobe vmxnet
    还是报上面的错,怎么解决呢,望指点,谢谢了

    • 这个没啥的,我写过一篇博客:http://smilejay.com/2013/11/kernel-install-error-could-not-find-module/

  25. 另一个问题,忽略这一步,编译qemu-kvm,执行./configure,只输出一条
    glib-2.12 required to compile QEMU
    ,怎么解决呢

    • 这种比较明显就是缺少glib这个软件包,自己安装即可。

    • 平时比较忙,QQ不能及时回复。已开通博客和对应的咨询邮箱供大家参考。如果有读者建立Q群,可以拉我进去 ^_^

  26. 大哥您好,我參考您在書中4.2.5節的描述來實驗處理器的親和性和vCPU的綁定。
    先創建了一個Win7的VM,並將CPU設定為 “-cpu SMP=2”, 這樣應該只會有兩個vCPU,
    但是當VM運行起來之後,在宿主機使用ps -eLo ruser,pid,ppidmlwp,psr,args | grep qemu | grep -v grep 觀察process的狀態時,會發現會有多個vCPU的線程出現,且線程會被動態的創建或刪除,目前看到最多會有6個線程。

    這跟您書中的描述不太相同,請問這是什麼問題呢?望您指點,謝謝

    • 嗯 有时候你看到的qemu线程时多于vCPU的,是因为可能其中有几个时guest中I/O操作(如磁盘读写)的线程,不过那些线程时在做完相应的操作就会消失的,长期存在的就是vCPU的线程和一个QEMU主线程。谢谢

  27. 你好,我在p89配置网桥中输入如下命令
    [root@localhost kvm_demo]# qemu-system-x86_64 centost1.img -smp 1 -m 1024 -net nic -net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no -vnc :0 daemonize

    出现问题:
    qemu-system-x86_64: -vnc :0: drive with bus=0, unit=0 (index=0) exists,应该怎么解决,望指点,谢谢

    • 不好意思,发现问题了,daemonize前少了一个“-”

  28. 您好,您的QQ多少,方便探讨技术,如果这里不方便可发到我邮箱:yhq72315@163.com,谢谢了

  29. 你好 如何使用libvirt xml配置文件 设置需要开启的虚拟机的分辨率呢?

      • 就是说XML配置我文件 添加 VGA这个属性 然后虚拟机启动后,进去设置一下 虚拟机的分辨率?不能自动的去设置是吧?

      • 只是我的虚拟机是动态开启,而且是批量开启,并且根据任务运行,自动关闭,频繁的开启和关闭。没有自动吃设置的话,很麻烦。

        • 你先自己手动设置成功;然后你的Base镜像中设置好分辨率即可呀,每次启动的镜像都是基于某个分辨率。要多种分辨率,你可以根据分辨率不同准备不同的base镜像。

          • 哦 我是想根据我需要的需求,同一个系统,能够根据配置文件不同,开启差异镜像的时候 形成不同的分辨率,下次的时候 任务自动运行的时候,再根据任务配置的不同 设置不同的分辨率,不需要人工设置。已经找到替代办法了,3Q。

  30. 老师您好,我是个学习虚拟化技术的新手。想请教您一个问题,你书中指出的 VMM 和 KVM 模块之间有什么关系么?

    • VMM有很多啊,比如:xen、kvm、vmware都是的。书中第6页提了VMM的概念,直接叫hypervisor好了。kvm是一种VMM。

  31. 你好,
    安装你的书上操作,到39页,RHEL 6.5, 无法使用qemu-system命令。只有qemu-img/qemu-io/qemu-ga

    • 一般是在 x86_64-softmmu 目录中。你甚至可以用命令:find . -name “qemu-system*” 找一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注