【问题标题】:Start Virtual Machines with Virtualbox Using File Path使用文件路径使用 Virtualbox 启动虚拟机
【发布时间】:2015-01-02 13:12:58
【问题描述】:

我有一台在 Linux Debian 上使用 virtual box 运行的虚拟机。 它被放置在一个隐藏的 Truecrypt 容器中。

我喜欢尽可能减少该虚拟机的存在。 因此,将 VM 导入虚拟框会在其 GUI 中留下一个条目 不是我想要的。 (我可以每次手动删除它,但这很费力 并且在无法紧急关闭的情况下。)

有没有办法用 virtualbox 启动虚拟机,通过 使用 .vbox 文件的路径而不是导入文件然后使用导入的 VM 的名称?

所以而不是:

vboxmanage startvm <Name_Of_VM_Here>

类似:

vboxmanage startvm <Path_to_VMDK_file>

【问题讨论】:

  • 那些投票给我的人至少能解释一下为什么吗?我看不出我的问题有什么问题。事实上,我认为它是完全有效的,而且是正确的。其他人甚至将其添加到她的收藏夹中。

标签: shell virtual-machine virtualbox


【解决方案1】:

你可以使用:

vboxmanage showhdinfo "PathToYourVMDK"

它将在输出的最后一行显示它的 UUID。

然后您可以使用 UUID 而不是其名称来启动该虚拟机

vboxmanage startvm YourUUID

所以,基本上你需要的命令是:

vboxmanage startvm $(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')

如果您不使用bash,则需要将$() 替换为这样的反引号:

vboxmanage startvm `vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'`

更新

如果您在编写脚本和调试脚本时遇到问题,请按照以下步骤操作。

首先...让基本的showhdinfo 命令正常工作。所以试试这个:

vboxmanage showhdinfo "PathToYourVMDK"

UUID:           c3166b8a-3c21-4531-927c-030f3cfb9728
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       ...
Storage format: VDI
Format variant: fixed default
Capacity:       8192 MBytes
Size on disk:   8192 MBytes
In use by VMs:  UbuntuVM (UUID: 77743eca-e338-471c-b824-60c5c5c22b6f)   <-- THIS ONE

其次...现在看最后一行,该 UUID 可以与 vboxmanage startvm 一起使用,因此请尝试将其复制并粘贴如下:

vboxmanage startvm 77743eca-e338-471c-b824-60c5c5c22b6f

这应该会启动虚拟机。

第三...下一个检查是 awk 正在正确提取 UUID,所以让我们尝试一下

vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'

77743eca-e338-471c-b824-60c5c5c22b6f

看起来是对的,现在把它全部放到一个脚本中:

#!/bin/bash -xv
UUID=$(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')
echo UUID:$UUID
vboxmanage startvm $UUID

【讨论】:

  • 谢谢,马克!我会测试一下,然后决定是否接受你的回答。
  • 它对我不起作用。我将命令放入带有 VMDK 相对路径的 shell 脚本中。 shell 指导我正确使用 vbox 命令(如参数 --type gui|sdl|headless)。我怎样才能让它工作?
  • 将脚本的第一行设为#!/bin/bash -xv 并再次运行。编辑您的问题并粘贴到输出中。
  • 我添加了一些额外的信息来帮助您调试它 - 请告诉我它是怎么回事。
猜你喜欢
  • 2016-06-17
  • 1970-01-01
  • 2019-01-01
  • 2016-12-10
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多