Virtual Box 背景啟動內部 Virtual Machine 的方式
在之前使用 VMWare Server 時對這樣的問題可以很簡單的用 vmware-cmd 來搞定, 但因效能的需求, 我把家裏主要的 WinXP 環境改用 VirtualBox, 前一陣子因為有個資料在這 WinXP 內, 必須回家啟動 VirtualBox 才讀到這個資料, 所以我就花了一點時間讀了一下 VirtualBox 使用手冊 - 1.6 UserManual.pdf, 看看 VirtualBox 可否遠端啟動. 以下就是最後試出來可以透過遠端啟動 VirtualBox 裡面的 Virtual Machine 程序.
- 使用 VBoxHeadless 命令
VBoxHeadless 主要參數介紹 | ||
---|---|---|
-s | -startvm, –startvm <name / uuid> | 要啟動的 VM 名稱或 uuid (必要參數) |
-p | -vrdpport, –vrdpport <port> | 指定 VRDP Port 編號 |
-a | -vrdpaddress, –vrdpaddress <ip> | 指定 VRDP 只用在哪個 IP |
-c | -capture, –capture | 將抓到的 VM 畫面寫到哪個檔案 |
-w | –width | 設定紀錄時的畫面寬度 |
-h | –height | 設定紀錄時的畫面高度 |
-r | –bitrate | 設定紀錄時的速率 bit rate |
-f | –filename | 指定紀錄時的檔名, 會自動依據副檔名選用相對應的編碼(codec)程式 |
- 以下範例是我要啟動 winxp-vbox02
VBoxHeadless -s winxp-vbox02 -p 3388 &
[jonathan@pd920 ~]$ VBoxHeadless -s winxp-vbox02 -p 3388 & [1] 11270 [jonathan@pd920 ~]$ VirtualBox Headless Interface 1.6.0 (C) 2008 Sun Microsystems, Inc. All rights reserved Listening on port 3388
- 確定一下是否 VRDP 正確 Listen 在 Port 3388
[jonathan@pd920 ~]$ netstat -na | grep 3388 tcp 0 0 0.0.0.0:3388 0.0.0.0:* LISTEN
- 如果沒有指定 VRDP Port, 會依據原本 Virtual Machine 定義內的 VRDP 是否啟動與 Port # 來決定
- Virtual Machine 的定義檔是 xml 格式, 可以自己編輯, Exp. /home/jonathan/.VirtualBox/Machines/winxp-vbox02/winxp-vbox02.xml
: <Display VRAMSize="16" MonitorCount="1"/> <RemoteDisplay enabled="true" port="3387" authType="Null" authTimeout="5000"/> :
表示預設啟用 VRDP Listen port 是 3387
- 透過 -p 參數指定 VRDP Listen port 之後就不會管設定檔內的 Listen port
- 在 VirtualBox 1.6 內的 VBoxVRDP 與 VBoxHeadless 是完全相同的檔案, 參考以下 md5sum 的結果
[jonathan@pd920 ~]$ md5sum /usr/bin/VBoxVRDP 4cc3c5030e11f5ba7d1511834e7172cd /usr/bin/VBoxVRDP [jonathan@pd920 ~]$ md5sum /usr/bin/VBoxHeadless 4cc3c5030e11f5ba7d1511834e7172cd /usr/bin/VBoxHeadless