qemu-ga windows下的安装及监控开发
windows安装qemu-ga
虚拟机配置里添加virtio serial端口
#virsh edit instance-name
devices里添加下面这段配置,
1 <channel type='unix'>
2 <source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0.instance-name.sock'/>
3 <target type='virtio' name='org.qemu.guest_agent.0'/>
4 <address type='virtio-serial' controller='0' bus='0' port='1'/>
5 </channel>
安装Qemu Guest Agent服务
#wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
#yum install virtio-win
安装virtio-win包,virtio-win里包含windows virtio设备驱动,及qemu-ga的安装包。

将msi安装文件和virtio-win.iso拷贝到windows下。
virtio-win.iso包含各个windows版本下的virtio serial驱动,安装对应版本的驱动。

安装对应版本qemu-ga.msi,至此,qga安装完毕。
qga功能扩展
搭建编译环境:
rpm -ivh epel-release
下载 Microsoft VSS SDK: http://www.microsoft.com/en-us/download/details.aspx?id=23490
提取Microsoft VSS SDK的源文件(qemu/scripts下提供了extract-vsssdk-headers,也可以在windows下解压后拷贝到linux上)
wget http://wiki.qemu-project.org/download/qemu-2.6.0-rc1.tar.bz2
yum install -y mingw64-pixman
yum install -y mingw64-glib2
yum install -y mingw64-gmp
yum install -y mingw64-SDL
yum install -y mingw64-pkg-config
./configure --enable-guest-agent --with-vss-sdk=/vss_path --cross-prefix=x86_64-w64-mingw32-
make qemu-ga.exe
添加功能示例(添加内存使用率检测)
编辑qapi-schema.json,添加自定义结构体及命令声明。
1 ## 结构体声明
2 # @GuestMemInfo
3 #
4 # Information about Memory usage.
5 #
6 # @total: total size of Memory
7 #
8 # @usage: Memory usage
9 #
10 # Since 2.6
11 ##
12 { 'struct': 'GuestMemInfo',
13 'data': { 'total': 'int', 'usage': 'int' } }
14
15 ## 命令声明
16 # @guest-get-mem-usage:
17 #
18 # Get the memory utilization rate.
19 #
20 # Returns: @GuestMemInfo on success.
21 #
22 # Since 2.6
23 ##
24 { 'command': 'guest-get-mem-usage',
25 'returns': 'GuestMemInfo' }
在commands-win32.c中添加命令实现:
1 GuestMemInfo *qmp_guest_get_mem_usage(Error **errp)
2 {
3 MEMORYSTATUS ms;
4 GuestMemInfo *meminfo = g_new0(GuestMemInfo, 1);
5 GlobalMemoryStatus(&ms);
6 meminfo->usage = (int64_t)ms.dwMemoryLoad;
7 meminfo->total = (int64_t)ms.dwTotalPhys;
8 return meminfo;
9 }
在commands-posix.c中添加命令实现(直接返回QERR_UNSUPPORTED错误):
1 GuestMemInfo *qmp_guest_get_mem_usage(Error **errp)
2 {
3 error_setg(errp, QERR_UNSUPPORTED);
4 }
重新编译qemu-ga.exe,替换C:\Program Files\qemu-ga下的qemu-ga.exe,重启服务即可。
(dll依赖,在/usr/x86_64-w64-mingw32/sys-root/mingw/bin/下可找到。)

参考文献:
http://wiki.qemu.org/Features/QAPI/GuestAgent
http://wiki.libvirt.org/page/Qemu_guest_agent
http://fedoraproject.org/wiki/Windows_Virtio_Drivers
http://lists.gnu.org/archive/html/qemu-discuss/2014-11/msg00027.html
qemu-ga windows下的安装及监控开发的更多相关文章
- Ruby入门--Linux/Windows下的安装、代码开发及Rails实战
Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...
- Windows下快速安装CACTI流量监控
Windows下快速安装CACTI流量监控 原文 http://os.51cto.com/art/201111/300977.htm CACTI是一套PHP程序,它利用SNMPGET采集数据,使用R ...
- flume 1.7在windows下的安装与运行
flume 1.7在windows下的安装与运行 一.安装 安装java,配置环境变量. 安装flume,flume的官网http://flume.apache.org/,下载地址,下载后直接解压即可 ...
- memcache的windows下的安装和简单使用
原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...
- Windows下pry安装和配置
Windows下pry安装和配置 pry是一个增强型的交互式命令行工具,比irb强大. 有自动完成功能,自动缩进,有颜色.有更强大的调试功能. pry 安装很简单. 在终端输入: gem instal ...
- Windows下虚拟机安装Mac OS X ----- VM12安装Mac OS X 10.11
Windows下虚拟机安装Mac OS X -– VM12安装Mac OS X 10.11 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WI ...
- Windows下memcache安装使用
Windows下Memcache安装 随着时间的推移,网上现在能找到的在 Windows下安装 Memcache 的文档大多已经过时.雪峰这里再简要介绍一下当下最新版的安装和配置方法. Memcach ...
- Windows 下如何安装配置Snort视频教程
Windows 下如何安装配置Snort视频教程: 第一步: http://www.tudou.com/programs/view/UUbIQCng360/ 第二部: http://www.tudou ...
- 在windows下完美安装GitHub
笔者最近在Windows下安装GitHub,过程中遇到不少问题.现在把安装的详细步骤分享给大家,免得大家走弯路. 笔者安装了GitHub for Windows程序,一切都运行顺利.但事情没有结束,首 ...
随机推荐
- mysql整型后面的()宽度
int(5)这个5表示显示宽度 如果超出宽度则正常显示,所以人为指定显示宽度意义不大
- java集合-哈希表HashMap
一.简介 HashMap是一个散列表,是一种用于存储key-value的数据结构. 二.类图 public class HashMap<K,V> extends AbstractMap&l ...
- [bug] HMaster启动后几秒消失
参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...
- linux进程间通信-(转自 临水)
一.进程间通信概述进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别 ...
- Navigation activity回退到fragment失败
我有一个activity--MainActivity, 布局中设置了一个 <androidx.fragment.app.FragmentContainerView android:layout_ ...
- C#基础之GetType 与 typeof的区别
C#中GetType 与 typeof的区别 在实际开发中经常需要了解具体对象的类型,所以经常会使用GetType()和typeof().尽管可以得到相应的类型.但两者之间也存在一些差别,接下来我 ...
- Java List去重以及效率分析
List去重无非几种方法: 下面文章提供的两种: https://blog.csdn.net/u012156163/article/details/78338574, 以及使用List.stream. ...
- Django框架中logging的使用
Django框架中logging的使用 日志是我们在项目开发中必不可少的一个环节,Python中内置的logging已经足够优秀到可以直接在项目中使用. 本文介绍了如何在DJango项目中配置日志. ...
- GO语言练习---对切片进行排序
对整型切片进行选择排序 package main import "fmt" /*对切片排序*/ func SortSlice(slice []int) { for i := 0; ...
- TVM将深度学习模型编译为WebGL
使用TVM将深度学习模型编译为WebGL TVM带有全新的OpenGL / WebGL后端! OpenGL / WebGL后端 TVM已经瞄准了涵盖各种平台的大量后端:CPU,GPU,移动设备等.这次 ...