歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 讓VirtualBox虛擬機實現開機自動後台運行

讓VirtualBox虛擬機實現開機自動後台運行

日期:2017/2/28 15:29:02   编辑:Linux教程

測試環境:
Host OS: Windows 7 x64

Guest OS: Ubuntu、Windows XP
開啟遠程登錄,並設置用戶密碼,XP用control userpasswords2設置自動登錄(取消“要使用本機,用戶必需輸入服務器密碼”)

虛擬機軟件:VirtualBox-4.0.2-69518-Win

目的:開機後自動後台運行虛擬機,只有進程,不顯示GUI界面。

由於VMware Server 2只支持到Windows 2008 Server系統,Windows 7系統不便使用,即使能安裝也可能會有問題。VMware Workstation不免費,本身也沒有後台運行虛擬機的功能,只能通過第三方軟件把啟動虛擬機做成系統服務,或者設置了“在關閉後在後台運行電源已打開的虛擬機”用批處理啟動虛擬機再殺進程,或者用計劃任務。因此選擇使用免費的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損壞。

Copyright © Linux教程網 All Rights Reserved