2015-01-02 180 views
-2

我有一臺虛擬機,我在Linux Debian上運行虛擬機。 它被放置在一個隱藏的Truecrypt容器中。用VirtualBox啓動虛擬機使用文件路徑

我喜歡儘可能減少虛擬機的存在。 因此,將虛擬機導入虛擬框,在其GUI GUI 中留下條目並不是我想要的。 (我可以每次都手動刪除它,但這是費力 以及在緊急停機不可能的情況下)。

有沒有辦法使用到的路徑在VirtualBox中啓動虛擬機,通過 。 vbox文件而不是導入文件,然後使用導入的VM的名稱?

所以不是:

vboxmanage startvm <Name_Of_VM_Here> 

喜歡的東西:

vboxmanage startvm <Path_to_VMDK_file> 
+0

那些至少投票給我的人解釋了爲什麼?我看不出有什麼問題。事實上,我認爲這是完全有效的,並被正確地問道。其他人甚至將它添加到她的最愛。 –

回答

0

您可以使用:

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 

這應該啓動VM。

第三......下一次檢查是thaet的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 
莫非
+0

謝謝,馬克!我會測試一下,然後決定我是否接受你的答案。 –

+0

它不適合我。我把這個命令放到一個帶有VMDK相對路徑的shell腳本中。 shell引導了我關於vbox命令的正確用法(如參數 - 類型gui | sdl |無頭文件)。我怎麼能使它工作? –

+0

製作腳本的第一行'#!/ bin/bash -xv'並再次運行。編輯你的問題並粘貼在輸出中。 –

相關問題