Qemu 监控器是 QEMU与实现用户交互的一种控制台,一般用于为QEMU模拟器提供较为复杂的功能,包括如下:
要使用 Qemu monitor,首先要切换到 monitor窗口,然后才能使用命令操作
Ctrl + Alt +2 切换过去
Ctrl + Alt +1 切换回来
如果使用 SDL 显示,且在使用 qemu-kvm 命令行启动客户机时添加了 “-alt-grab" 或 ”-ctrl-grab" 参数,则会使该组合键被对应修改为
"Ctrl + Alt + Shift + 2" 或 "右Ctrl + 2"
如果所有的情况都有一定要到图形窗口才能操作 Qemu monitor,那么在某些完全不能使用图形界面的情况下将会受到一些限制,其实
Qemu 提供了如下的参数来灵活地控制 monitor 的重定向
-monitor dev 将 monitor 重定向到宿主机的 dev 设备上。这个设备写法有很多种
1) vc
不加 -monitor 默认使用该选项,即虚拟控制台,只有该模式下才能使用 “Ctrl+Alt+2” 切换,另外还可以指定宽度和长度,如 "vc:800*600"
表示宽度和长度分别是800像素和600像素。
2) /dev/XXX
使用宿主机的终端(tty), 如 “-monitor /dev/ttyS0" 是将 monitor 重定向到宿主机的 ttyS0 串口上去,而且 QEMU 会根据QEMU模拟器的配置
来自动设置该串口的一些参数。
3) null
空设备,表示不将 monitor 重定向到任何设备上,无论怎样也不能连接上 monitor.
4) pty
重定向到虚拟终端,系统默认自动创建一个新的虚拟终端。
5) none
不重定向到任何设备中
6) file:filename
重定向到 filename 这个文件中,只能保存串口输出,不能输入字符进行交互。
7) stdio
重定向到当前的标准输入输出。
8) pipe:filename
重定向到 filename 名字的管道
9) 其他
还可以将串口重定向到 TCP 或 UDP 建立的网络控制台中,还可以重定向到 Unix Domain Socket.
help 或 ? [ cmd ]
(qemu) help migrate
(qemu) help device_add
(qemu) ? savevm
(qemu) info version // 查看 QEMU 的版本信息
(qemu) info kvm // 查看 当前 QEMU 是否有 KVM的支持
(qemu) info name // 显示当前客户机的名字
(qemu) info stattus // 显示当前客户机的运行状态,可能为运行中或暂停状态。
(qemu) info cpus // 查看客户机各个 vCPU 的状态。
(qemu) info history // 查看当前的 monitor 中命令行执行的历史记录。
info 的相关命令可以通过 (qemu) help info 来查
1) (qemu) commit
提交修改部分的变化到磁盘镜像中(在使用了“-snapshot”启动参数),或提交变化部分到使用后端镜像文件。
2) (qemu) cont 或 c
恢复 QEMU 模拟器继续工作。另外,“stop” 是暂停 QEMU 模拟器的命令。
3) (qemu) change
改变一个设备的配置,如“change vnc localhost:2”改变VNC的配置
更改 VNC 连接的密码 "chage vnc passwd"
改变客户机中光驱加载的光盘 "change ide1-cd0 /path/to/some.iso"
4) (qemu) balloon 512
表示改变分配给客户机的内存大小为 512 MB
5) (qemu) savevm/loadvm/delvm
savevm mytag: 表示根据当前客户机状态创建标志位 mytag 的快照。
loadvn mytag: 表示加载客户机标志位 mytag 快照时的状态。
delvm mytag : 表示删除 mytag 标志的客户机快照。
设置默认的 CPU 为 index 数字指定的,在 info cpus 命令的输出中,星号标识的CPU就是系统默认的CPU,
几乎所有的中断请求都会优先发到默认CPU上去。如下命令行演示了 “cpu index”。
(qemu) info cpus
(qemu) cpu 1
(qemu) info cpus
log item1[,...] 将指定的 item1 项目的 log 保存到 /tmp/qemu.log 中;
logfile filename 命令设置 log 文件输出到 filename 文件中而不是默认的 /tmp/qemu.log 文件中。
向客户机发送 keys 按键(或组合键),就如同非虚拟化环境中那样的按键效果。如果同时发送的是多个按键的组合,则按键中间用 '-' 来连接。
(qemu) sendkey ctrl-alt-f2 // f2 就是将客户机的显示输出到 tty2 终端, f1 是tty1 。ssh 登录到虚拟机后可以查看当前系统中查看当前系统已登录用户的状态:who
(qemu) sendkey ctrl-alt-delete // 在文本模式的客户机 Linux系统中组合键会重启系统
(qemu) sendkey ctrl-alt-f2
system_powerdown: 向客户机发送关闭电源的事件通知,一般会让客户机执行关机操作。
system_reset: 让客户机系统重置,相当于直接拔掉电源,然后插上电源,按开机键开机。
system_wakeup: 将客户机从 暂停 中唤醒。
x /fmt addr 转存出从addr 开始的虚拟内存地址
xp /fmt addr 转存出从addr 开始的物理内存地址
fmt 格式的语法:/{count}{format}{size}
- count: 表示被转存出来的条目数。
- format: x(hex,16进制)、d(有符号的十进制)、u(无符号的十进制)、o(八进制)、c(字符)、i(asm 汇编指令)。
- size: b/h/w/g(分别是 8/16/32/64位)
例子:
x/10i $eip
xp/80xh 0xb8000
(qemu) p 100+200
(qemu) print 100+200
(qemu) p $ecx
执行 q 或 quit 命令,直接退出 QEMU 模拟器,QEMU进程会被杀掉。
https://en.wikibooks.org/wiki/QEMU/Monitor