我有 Ubuntu 10.10 并使用 VirtualBox 3.2。作为客户操作系统,我在 VirtualBox 中还有另一个 Ubuntu。
一旦我的主机 Ubuntu 启动,我将使用以下命令自动启动客户机 Ubuntu:
VBoxHeadless -startvm Ubuntu --vrdp on
然后我可以使用 ssh 或 tsclient 访问它。
现在我需要在关闭主机 Ubuntu 后自动关闭客户机 Ubuntu。有人知道使用命令行自动关闭客户机 Ubuntu 的安全方法吗?我发现了两种关闭客户机操作系统的方法,但我不确定它们是否安全。它们如下:
VBoxManage controlvm Ubuntu acpipowerbutton
或者
VBoxManage controlvm Ubuntu poweroff
答案1
如果您打开 Gnome 电源管理偏好设置,您可以设置按下电源按钮时要采取的操作。如果您将其设置为关机,则当您使用命令按下虚拟电源按钮时,它将正常关机VBoxManage controlvm Ubuntu acpipowerbutton
。
答案2
不要这样做:
VBoxManage controlvm Ubuntu poweroff
这相当于拔掉了真实计算机的电源插头。你不会想这么做的!
使用 ACPI 关机方法(按照 Egil 建议的检查电源管理设置)或者尝试保存状态方法(savestate
)。
答案3
如果您在服务器关闭虚拟机时也关闭虚拟机,则必须等待虚拟机
(在此 shellscript 中,“root”是调用者,“theuser”是“thevm”的所有者)
当命令输出VBoxManage list runningvms
返回空字符串时,我知道虚拟机已完成。
我在我的 shell 脚本中使用它
...
stop(){
su -c "VBoxManage controlvm thevm acpipowerbutton" -s /bin/bash theuser
while [ "`su -c 'VBoxManage list runningvms' -s /bin/bash theuser`" != "" ]
do
echo waiting for VMs to shutdown
sleep 3
done
}
...
答案4
使用 savestate 选项关闭虚拟机时的一个问题是,如果您必须将该虚拟机移至另一台计算机。如果新计算机使用不同的处理器,并且硬件可能存在其他差异,则可能会遇到问题。当虚拟机从保存的状态重新启动时,它需要恢复其环境,如果处理器不同,则不会发生这种情况。已正确关闭的虚拟机在重新启动时会查看当前硬件,并且通常会引入其所需的部分或全部新驱动程序。