在之前使用 VMWare Server 時對這樣的問題可以很簡單的用 vmware-cmd 來搞定, 但因效能的需求, 我把家裏主要的 WinXP 環境改用 VirtualBox, 前一陣子因為有個資料在這 WinXP 內, 必須回家啟動 VirtualBox 才讀到這個資料, 所以我就花了一點時間讀了一下 VirtualBox 使用手冊 - 1.6 UserManual.pdf, 看看 VirtualBox 可否遠端啟動. 以下就是最後試出來可以透過遠端啟動 VirtualBox 裡面的 Virtual Machine 程序.

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

  • 如果頻寬太慢, 就調一下解析度, 應該可以改善不少
  • tech/vm_handless.txt
  • 上一次變更: 2009/03/03 00:58
  • jonathan