我已经在 Ubuntu 11.10 主机上安装了 Virtual Box 4.2。
我唯一的客户操作系统是 Windows 7。
我可以在 Ubuntu 启动时自动启动 Windows 7 虚拟,通过在命令选项中使用命令“VBoxMange startvm Win7”将其添加到启动应用程序中。
现在,当我关闭 Windows 7 时,virtualbox 程序也会关闭,但是当我返回 Ubuntu 时,我想在 Virtualbox 中的 Windows 7 中单击“关机”时也关闭 Ubuntu。
这是我的作业。有人能帮我完成吗?
此外,当虚拟盒自动启动时,Ubuntu 的桌面应该不可见。
答案1
执行此操作的方法是编写一个脚本来启动您的虚拟机,等到它终止,然后发出关闭命令。
在您的主文件夹中创建一个文件夹bin
(如果它尚不存在)。
现在创建一个包含以下内容的文件。我们将其命名为win7vmshutdown
,并将其保存在您的bin
文件夹中。
#!/bin/bash
VBoxManage startvm 'Win7' # Start the VM.
sleep 10s # Give it time to start up.
while pgrep VirtualBox >/dev/null # As long as the VM is running...
do
sleep 5s # Wait a bit before trying again.
done
gnome-session-quit --power-off # Issue the command to shut down.
使脚本可执行;在终端中输入以下内容。
chmod +x ~/bin/win7vmshutdown
在启动应用程序中,删除该VBoxManage ...
命令并将其替换为win7vmshutdown
。
关机命令会提示您关机;如果您不回答,它将在 60 秒内关机。这样,您就可以在出现意外问题时中断关机。
重新启动计算机进行测试。
你说:
此外,当虚拟盒自动启动时,Ubuntu 的桌面应该不可见。
为此,您需要全屏运行虚拟机。在虚拟机中安装 Guest Additions,重新启动虚拟机,然后全屏运行。
答案2
您需要创建一个在 Windows 系统上运行的脚本,用于执行系统的协调关闭。
据我所知,您想从 Windows 7 VM 内部触发此功能。
要编写脚本关闭 Windows 7,请使用psshutdown
SysInternals 提供的实用程序。
您还需要向主机发出信号以关闭主机。最好的方法是使用安全外壳远程触发它。
在 Ubuntu 机器上:
您应该专门为此任务创建一个用户,并为此用户创建一个 SSH 密钥。此用户将以提升的权限运行脚本,并且对该脚本的访问权限应为最低限度。
在 Windows 计算机上:
您需要一种通过 SSH 在主机上运行脚本的方法。Cygwin 版本的 OpenSSH 可能是最佳选择。
所以你的 Windows 脚本应该
- 使用 SSH 在主机上启动脚本
- 跑步
psshutdown -t 0 -k
Ubuntu 脚本应该
- 由 root 拥有
- 启用 setuid 属性,以便以 root 权限运行
sleep
持续时间大于 Windows 机器关闭的时间- 执行
/sbin/poweroff
至于另一件事 - 如果您不想随时看到 Ubuntu 桌面,您可以不加载它。添加仅以全屏模式启动 VirtualBox 实例的用户 X 会话。