qemu 访客自动化

2024-05-18

我找不到任何文档说明存在可用于在 qemu guest 内部实现自动化操作的 API。

例如,我想从主机启动来宾计算机内部的进程。 Libvirt 似乎不包含此类功能。


[注意:无需使用任何虚拟化 API 即可实现自动化。从我的博客文章 http://db42.wordpress.com/2011/10/14/guest-automation-with-qemukvm/.]

Step 1:

默认情况下,QEMU 使用 SDL 显示 VGA 输出。因此,第一步是通过标准 I/O 与 QEMU 进行交互。 QEMU 为此提供了一个选项。

来自 QEMU 文档:

- 图形学通常,QEMU 使用 SDL 来显示 VGA 输出。使用此选项,您可以完全禁用图形输出,以便 QEMU 一个简单的命令行应用程序。仿真的串口是 在控制台上重定向。因此,仍然可以使用QEMU来调试 带有串行控制台的 Linux 内核。

因此,您所要做的就是调用 QEMU-nographic.

qemu -nographic -hda guest.disk

Step 2:

现在您可以通过命令行与来宾(或 QEMU 进程)进行交互,您必须自动执行此交互。在 python 中执行此操作的明显方法是启动 QEMU 进程(使用-nographic) with 子流程模块 http://jimmyg.org/blog/2009/working-with-python-subprocess.html然后与该进程进行通信。但令我惊讶的是,这对我来说不起作用。所以,我寻找其他方法。

后来我发现,做这类工作最棒的工具是Expect http://en.wikipedia.org/wiki/Expect。它是用 TCL 编写的交互式应用程序的自动化工具。

本指南 http://www.linuxjournal.com/article/3065应该可以帮助您开始使用 Expect。以下是使用 Expect 运行 QEMU 来宾的脚本。

#!/usr/bin/expect -f

#starts guest vm, run benchmarks, poweroff
set timeout -1

#Assign a variable to the log file
set log     [lindex $argv 0]

#Start the guest VM
spawn qemu -nographic -hda guest.disk

#Login process
expect "login: "
#Enter username
send "user\r"

#Enter Password
expect "Password: "
send "user\r"

#Do whatever you want to do with in the guest VM. ( Run a process and write result to log )

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

qemu 访客自动化 的相关文章

  • VirtIO实现原理——数据传输演示

    文章目录 初始化 示意图 代码分析 Guest第一次添加buffer 示意图 代码分析 Notify Host Host第一次处理buffer 示意图 代码分析 Guest第二次添加buffer Host第二次处理buffer 初始化 示意
  • 【转】KVM I/O虚拟化分析

    最近在看多队列的东西 看到下面两篇文章 记录下 以后自己也深入写个这方向的知识 0 背景 当今的I O虚拟化主要有几种模式 1 通过设备的模拟 设备的模拟主要分为两种 一种是直接在VMM中完成模拟 如xen vmware 一种是在另一个应用
  • qemu-guest-agent windows下的监控开发

    windows下的qemu guest agent 简称qga 的名字叫做qemu guest agent win32 目前最新版的版本号是qemu guest agent win32 0 12 1 2 2 355 el6 4 9 x86
  • QEMU-在内核中增加驱动(6)

    上面是我的微信和QQ群 欢迎新朋友的加入 进入linux源码目录 增加驱动 hello c include
  • 高性能本地存储设计

    本地存储常规架构 通用的云本地存储常规架构如下图所示 以MySQL数据库为例 它通过POSIX API与云主机内核交互 云主机内核包括一个标准文件系统和标准的块设备接口 云主机内核下面是云物理机内核 它自上而下由标准文件系统 标准块设备接口
  • 【安装篇】- 基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案

    作者 yanwei 来源 墨天轮 https www modb pro db 95684 大家好 我是 JiekeXu 很高兴又和大家见面了 今天和大家一起来看看 Linux7 9 安装 Oracle19c RAC 详细配置方案 欢迎点击上
  • 为什么macos(x86)可以运行docker arm容器arm64v8/alpine?

    我碰巧发现我的macos x86 可以为arm镜像arm64v8 alpine运行docker容器 但有以下警告 docker run it arm64v8 alpine uname a WARNING The requested imag
  • qemu-system-x86_64 :地址解析失败 ::1:46189:名称或服务未知

    我有以下问题 当我跑步时emulator avdname抛出以下错误 qemu system x86 64 chardev socket port 46189 host 1 nowait nodelay ipv6 id modem addr
  • Android Studio 模拟器卡在 Google 徽标上

    我正在尝试在 Android Studio 模拟器中运行我的应用程序 模拟器已打开但卡在 Google 徽标加载中 我能做些什么 我的电脑是低端的 如何才能快速运行模拟器 我还在模拟器设置中减小了 RAM 的大小 但这并不能解决我的问题 请
  • 如何用GDB调试交叉编译的QEMU程序?

    我在使用 GDB 调试 QEMU 中运行的简单程序时遇到问题 GDB似乎无法找到我在程序中的位置 因为它总是显示 作为我当前的位置 并且它永远不会达到我设置的任何断点 在一个终端中 我运行 QEMU cat add c int main i
  • Raspberry Pi Arch Linux 上的 qemu 最新 sd 映像

    我正在尝试设置一个 Arch 图像并使用 qemu 以便在将图像加载到 Pi 之前交叉编译一些东西 我认为最简单的方法是 qemu 最新的启动映像 准备我需要的任何东西 然后在完成后将其添加到 Pi 上 我从以下位置下载了 Arch 图像h
  • 为什么 ARM 内核在使用 ELF 和二进制文件时表现不同

    我正在 ARM 上进行裸机开发并在 QEMU 上模拟 Raspi 3 下面是我的最小汇编代码 section text boot global start start 1 wfe b 1b 下面是我的链接器脚本 SECTIONS 0x800
  • 为 Android 模拟器创建虚拟硬件、内核、qemu 以生成 OpenGL 图形

    我是 Android 新手 希望使用模拟器 我想做的是创建自己的虚拟硬件 可以收集 OpenGL 命令并生成 OpenGL 图形 有人告诉我 为了做到这一点 我需要编写一个 Linux 内核驱动程序来实现与硬件的通信 此外 我需要编写一个
  • 如何使用QEMU学习ARM Linux内核开发?

    我想学习它 比如开发一些设备驱动程序等 并为此使用 QEMU 因为我没有像 beagle 板这样的 ARM 硬件板 你们有什么建议 我可以使用 Qemu 模拟器来学习 ARM 目标上的 Linux 内核吗 或者我应该尝试的任何其他选择 这取
  • 了解 QEMU 的好来源是什么?

    您会推荐什么书或网站来了解 QEMU 我想查看一些使用示例以及如何使用 API 最佳资源 主要 QEMU 使用文档 http wiki qemu org Manual Qemu 手册页 http manpages ubuntu com ma
  • 如何在32位Linux上运行16位代码?

    我编写了一个小型 16 位汇编程序 该程序在某些内存位置写入一些值 有没有办法可以在 Linux 上的 32 位保护模式下测试它 qemu http wiki qemu org Main Page dosbox http www dosbo
  • 如何在 QEMU 中模拟 TrustZone?

    我正在尝试在 Qemu 中模拟 TrustZone 功能 我发现两个链接似乎解释了这个过程 第一个参考 http www linaro org blog core dump arm trustzone qemu 未附加支持 TrustZon
  • 如何编写 Sparc 程序集并在 Qemu 或 Simics 中运行其二进制文件?

    我正在尝试开始编写一些 Sparc 程序集 但我不知道如何汇编和运行代码 我已经用 arcTools 编写了 arc 但这就是我对汇编的了解 我已经下载了 simics 和 qemu 但我不知道从这里去哪里 有人能指出我正确的方向吗 谢谢
  • 将 IVSHMEM 与 libvirt virt-manager 结合使用

    Using ivshmem in qemu需要执行以下步骤 在主机中启动 ivshmem 服务器 ivshmem server这将创建一个unix域套接字 tmp ivshmem socket 使用以下命令行选项启动 qemu charde
  • qemu kvm:如何获取性能监控中断?

    我在操作系统内核中编写了一些函数 以便在指令计数器溢出时发出性能监控中断 PMI 它在我的机器 Intel core i5 上运行良好 但是当我使用 qemu 在 qemu 上运行它时 qemu system x86 64 enable k

随机推荐