我仅使用虚拟化将 OpenBSD 安装到裸硬件上,在安装过程中,未配置到串行端口的重定向,因此,我最终使系统运行,但无法登录并执行干净的操作关闭。
kvm -m 6144 -smp 4 -drive file=/dev/sda,if=ide \
-drive file=/dev/sdb,if=scsi -drive file=/dev/sdc,if=scsi \
-cdrom install52.iso -boot d -nographic
如何向此会话发送关闭事件? AFAIK,Ctrl-a x如图所示这里或者 apkill kvm
还不会完全关闭。
或者,如何从-nographic
模式切换到-curses
模式?
答案1
也许Ctrl-a c和system_powerdown
?
应该可以工作,尽管它在我的情况下似乎不起作用;也许 OpenBSD 和 QEMU ACPI 的交互不够好。
答案2
libvirt
知道如何处理这个问题。如果您不介意安装libvirtd
和virsh
,那么您可以使用:
virsh list
显示客人的姓名。并且,要正常关闭 name 的来宾guest_001
,请使用以下命令:
virsh shutdown guest_001
答案3
原则上:向 QEMU 监视器发送“system_powerdown”(请参阅其他答案)将向来宾操作系统发出关闭电源的信号(就像您按下电源按钮一样)。您需要进行设置powerdown=YES
才能/etc/rc.shutdown
真正完全关闭机器。
不幸的是,在我的实际设置中,虽然这对于真实的硬件机器来说效果很好,但虚拟机在接收事件时会冻结powerdown
。 (这是使用QEMU-KVM 1.1.2 on Debian Wheezy/amd64 and OpenBSD 5.5 amd64 GENERIC.SP
)所以您可以做的是将shutdown -h now
或发送halt -p
到(OpenBSD)控制台。
答案4
qemu 向 VM 发送 acpi 关闭事件,如果它无法解释此调用,则不会关闭。在Linux中这意味着你需要acpid运行,至于BSD,我想类似的东西一定存在