是否有可能编写qemu脚本?

时间:2011-03-11 10:20:27

标签: qemu

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

我看到this question建议使用python的方法,但我想知道qemu本身是否还有其他任何方式支持?

我不想做任何太花哨的事情。假设客户端自动登录到一个简单的shell,我想到了一个这样的脚本:

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

任何想法,否则我会尝试上面的python方法?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

QEMU Monitor可以使用自己的控制台在有限的范围内与来宾系统进行交互。这包括读取寄存器,控制鼠标/键盘以及获取屏幕转储。 有一个QEMU Monitor Protocol (QMP)允许您将JSON命令传递给来宾系统并从中读取值。

答案 2 :(得分:0)

您可以在主机上创建一个启动VM的脚本,等待一小段时间,然后执行ssh user@vm experiment来运行该程序。 stdout将最终出现在您的主机上,可以重定向到一个文件中以在本地捕获它,而不需要scp。

答案 3 :(得分:0)

全部取决于您使用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;&#39;和执行/ etc / profile脚本:

::sysinit:/bin/login -f root