如何从 Windows 7 VirtualBox 客户机中关闭 Ubuntu 11.10 主机?

如何从 Windows 7 VirtualBox 客户机中关闭 Ubuntu 11.10 主机?

我已经在 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,请使用psshutdownSysInternals 提供的实用程序。

您还需要向主机发出信号以关闭主机。最好的方法是使用安全外壳远程触发它。

在 Ubuntu 机器上:

您应该专门为此任务创建一个用户,并为此用户创建一个 SSH 密钥。此用户将以提升的权限运行脚本,并且对该脚本的访问权限应为最低限度。

在 Windows 计算机上:

您需要一种通过 SSH 在主机上运行脚本的方法。Cygwin 版本的 OpenSSH 可能是最佳选择。

所以你的 Windows 脚本应该

  • 使用 SSH 在主机上启动脚本
  • 跑步psshutdown -t 0 -k

Ubuntu 脚本应该

  • 由 root 拥有
  • 启用 setuid 属性,以便以 root 权限运行
  • sleep持续时间大于 Windows 机器关闭的时间
  • 执行/sbin/poweroff

至于另一件事 - 如果您不想随时看到 Ubuntu 桌面,您可以不加载它。添加仅以全屏模式启动 VirtualBox 实例的用户 X 会话。

相关内容