5

我想知道是否可以编写 qemu 脚本,以便您可以启动它并自动让它在来宾操作系统中运行程序?就我而言,这就是 Linux。基本上,我想避免与客人互动,这样我就可以用秃鹰或类似的东西进行一批实验。

我看到了这个问题,它提出了一种使用 python 的方法,但我想知道 qemu 本身是否支持任何其他方法?

我不想做任何太花哨的事情。假设来宾自动登录到一个简单的 shell,我正在考虑这样的脚本:

cd <some_dir>
./experiment
scp result me@my.machine.com:

有什么想法,否则我会尝试上面的python方法?

4

4 回答 4

5

QEMU Monitor可以使用自己的控制台在有限的范围内与来宾系统交互。这包括读取寄存器、控制鼠标/键盘和获取屏幕转储。有一个QEMU 监控协议 (QMP),可让您将 JSON 命令传递到客户机系统并从客户机系统读取值。

于 2013-01-26T19:28:26.057 回答
2

您放入 /etc/rc.local 的任何内容都会在启动时运行。在运行命令之前,您需要确保环境配置充分。将脚本的最后一行设为“shutdown -h now”,虚拟机甚至会干净利落地关闭。

于 2011-03-29T23:00:55.000 回答
0

你可以在你的主机上有一个脚本来启动虚拟机,等待一小段时间,然后ssh user@vm experiment运行程序。标准输出最终会出现在您的主机上,并且可以重定向到一个文件中以在本地捕获它,而不需要 scp。

于 2011-08-27T06:17:02.160 回答
-1

一切都取决于您使用 QEMU 加载的 VM 映像。例如,就我而言,我只是将所需的命令添加到 /etc/profile

但它需要在脚本执行之前登录。为了进行自动登录,我对 /etc/inittab 进行了以下更改:

# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
::sysinit:/bin/login -f root

# Put a getty on the serial port
ttyAMA0::respawn:/sbin/getty -L  ttyAMA0 0 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

以下命令强制使用用户名“root”登录并执行 /etc/profile 脚本:

::sysinit:/bin/login -f root
于 2016-10-07T15:08:28.073 回答