zoukankan      html  css  js  c++  java
  • 利用QMP和QEMU虚拟机交互的几种方式

    QMP是一种基于JSON格式的传输协议,我们能利用它与一个QEMU虚拟机实例进行交互,例如查询,更改虚拟机的状态,获取设备信息等等。下面是几种创建QMP的方法以及对其它的一些基本命令的使用:

    1、基于Telnet创建QMP

    首先利用如下命令启动一个QEMU虚拟机实例

    qemu-system-x86_64 linux-0.2.img -qmp tcp:localhost:4444,server --monitor stdio
    

      

    然后启动Telnet连接localhost的4444端口

    telnet localhost 4444
    

      

    这时会在Telnet所在的目录下显示如下内容:

    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    {"QMP": {"version": {"qemu": {"micro": 0, "minor": 0, "major": 2}, "package": " (Debian 2.0.0+dfsg-2ubuntu1.21)"}, "capabilities": []}}
    

      

    2、基于UNIX socket 创建QMP

    依然先启动一个QEMU虚拟机实例

    qemu-system-x86_64 linux-0.2.img -qmp unix:qmp-sock,server
    

      其中qmp-sock文件会在命令执行之后自动在本地目录创建,当然也可以指定一个sock文件

    然后在qmp-sock所在目录下,利用如下命令与QMP建立连接

    nc -U qmp-sock
    

      

    3、QMP基本命令

    (1)在创建了QMP之后,在输入其他命令之前,首先要输入如下命令:

    { "execute": "qmp_capabilities" }
    

      

    只有在返回下面的指令之后,我们才能使用其他命令:

    { "return": {}}
    

      

    (2)查询虚拟机状态:

    { "execute": "query-status" }
    

      

    当虚拟机正常运行时,会返回如下指令:

    {"return": {"status": "running", "singlestep": false, "running": true}}
    

      

    当虚拟机处于热迁移的监听状态时,返回如下指令:

    {"return": {"status": "inmigrate", "singlestep": false, "running": false}}
    

      

    其他指令利用类似于上述的方式交互即可。

  • 相关阅读:
    SVN: repository browser 库浏览器
    创业泡沫真他妈的大出血来了 --个人需要创业以谋生,行业需要创业以求变,国家需要创业以维稳
    判断输入的是否是大于0的正整数
    linux开放或限制端口和ip访问
    linux模糊删除es索引脚本
    ssh免密登录
    DES加密解密
    SpringBoot 单元测试
    SpringContextHolder 工具类
    fiddler抓包 443 请求不到数据
  • 原文地址:https://www.cnblogs.com/YaoDD/p/5328088.html
Copyright © 2011-2022 走看看