1. 程式人生 > >開機後臺啟動virtualbox虛擬機器

開機後臺啟動virtualbox虛擬機器

一、命令說明:

後臺啟動VirtualBox虛擬機器的命令有2個:

VBoxHeadless -s|--startvm <uuid>|<name> [--vrde=on|off|config]

VirtualBox 1.6後的版本里,VBoxVRDP只是VBoxHeadless的快捷方式,不再是單獨的命令。
防止VRDP埠(虛擬機器設定裡的遠端桌面)被外界訪問到,用引數--vrde=off,虛擬機器用橋接
網路時,虛擬機器系統自帶的遠端桌面不受此引數影響。

VBoxManage [-q|--nologo] startvm <uuid>|<name> [--type gui|sdl|headless]
The following values are allowed:
gui - Starts a VM showing a GUI window. This is the default.
headless - Starts a VM without a window for remote display only.


啟動虛擬機器的指令碼(虛擬機器的名稱為XP):
@echo off
:: by oicu
cd /d "D:\Program Files\Oracle\VirtualBox"
VBoxHeadless --startvm "XP"
:: VBoxManage startvm "XP" --type headless


直接啟動批處理指令碼的話(包括指令碼放到“啟動”裡),無論用哪條命令啟動虛擬機器都會有
一個headless的cmd視窗,用start ""也不能消去,關閉了該cmd視窗後虛擬機器也退出了,而
且屬於不正常關閉。可以一次啟動多個虛擬機器系統。

關閉虛擬機器的指令碼:
@echo off
:: by oicu
cd /d "D:\Program Files\Oracle\VirtualBox"
VBoxManage controlvm "XP" acpipowerbutton
:: send {Enter} to VM, for Windows Guest OS only.
VBoxManage controlvm "XP" keyboardputscancode 1c


開啟gpedit.msc組策略,在使用者的登入/登出腳本里,分別新增上面2個指令碼。這裡不能使用
計算機的啟動/關機指令碼,測試過是不能啟動虛擬機器的,可能和SYSTEM使用者執行的指令碼不能
訪問網路等許可權有關。使用登入指令碼啟動虛擬機器不會顯示headless的cmd視窗(系統組策略
裡預設是隱藏執行指令碼),未測試計劃任務的方式。

遠端登入Windows系統的虛擬機器後,如果遠端未登出,用關閉虛擬機器的指令碼就無法關閉虛擬
機,原因是關閉計算機時會提示“其他使用者登入到這臺計算機,關閉WINDOWS會使他們丟失
資料,您要繼續關機嗎?”造成acpi關機方式失敗。在Guest系統裡設定關機/登出指令碼,用
shutdown -s -t 0也無效。解決方法是向虛擬機發送回車鍵,模擬“確定”操作,當然也可
以用shutdown遠端關閉系統,但設定和操作更麻煩了。

虛擬機器是Linux時,避免用VboxHeadless.exe和VirtualBox.exe交替登入,兩者的不同步可

能會造成虛擬機器的filesystem損壞。

二、我的命令:

第一次,

@ECHO OFF
start D:\dev\VirtualBox\VirtualBox.exe -startvm ubuntu12.04
EXIT
第二次,

@echo off

startC:\"Program Files"\Oracle\VirtualBox\VBoxHeadless.exe --startvm"ubuntu-64"

exit


第三次,

@echo off

start C:\"ProgramFiles"\Oracle\VirtualBox\VBoxManage.exe -q startvm "ubuntu-64"--type headless


最後按照第三次的命令列寫了一個bat檔案,名字:virtualbox.bat,注意,命令列中的start一定要有,在win7 64位系統上,否則,報錯,說“virtualbox line tool error”啥的。

三、開機啟動

剛開始,是想新增一個服務的,即“sc create virtualbox binpath= "....",沒有實現,不知道為什麼,就是實現不了。所以,最後是把virtualbox.bat檔案新增到了:開始->所有程式->啟動 中,搞定。