如果我們把 Windows 開在背景中執行,這時得用遠端桌面連線來控制它的。
但如果我們臨時想要為 Windows 加入一 usb 設備的話,該如何處理? 原本若依正常的使用方法,在 VirtualBox 程式中開出 Guest OS 時,它在右下角視窗外會有添加 usb /光碟/硬碟…的按鈕,但在背景中執行時,這些按鈕則見不到了。
其實很簡單。首先查出你要添加的 usb 設備的 uuid 。
# VBoxManage list usbhost
UUID: aead9d43-12fb-4faa-8c83-8e810217210c
VendorId: 0x0ca6 (0CA6)
ProductId: 0x0010 (0010)
Revision: 0.5 (0005)
Manufacturer: CASTLES
Product: EZ100PU Smart Card Reader
Address: /proc/bus/usb/001/003
Current State: Captured
接下來,在指定的 guest os 中啟用它。
# VBoxManage controlvm {{YOUR_GUEST_OS_NAME}} usbattach aead9d43-12fb-4faa-8c83-8e810217210c
你就會在 Windows 中,看到一 usb 設備被找到了。
而移除它的方法則是如下:
# VBoxManage controlvm {{YOUR_GUEST_OS_NAME}} usbdetach aead9d43-12fb-4faa-8c83-8e810217210c
有時候,就是很無奈,得裝上一個自己不喜歡的東西來討人歡心,要不然生不出人家想要,且是一模一樣的封閉格式檔案。所以只好在 Linux Server 上裝個 VirtualBox 來跑 XP 。但問題是,它沒有 X window 耶,怎麼辦? 很簡單,照下面指令一樣畫個胡蘆就成了。
# 製作一個近 6g 的硬碟檔案(virtualbox用的vdi檔)
VBoxManage createvdi -filename GuestOSName.VDI -size 6000 -register
# 註冊你要使用的 WinXP 光碟檔
VBoxManage registerimage dvd /home/hoamon/WinXP.iso
# 創建一個虛擬機器,名稱是 GuestOSName
VBoxManage createvm -name GuestOSName -register
# 設定 GuestOSName 所用的記憶體為 768MB 、使用 dvd 、使用 nat 、
# 使用 GuestOSName.VDI 為 hda 硬碟、並在 3389 port 上使用「遠端桌面連線」來作控制虛擬機器、
# 在光碟機中放入 WinXP.iso
VBoxManage modifyvm GuestOSName -memory 768MB -acpi on -boot1 dvd -nic1 nat -hda GuestOSName.VDI -vrdpport 3389 -dvd /home/hoamon/WinXP.iso
# 開啟虛擬機器,然後你就可以連入 XXX.YYY.ZZZ.WWW:3389 去安裝 Windows XP 了。
VBoxVRDP -startvm GuestOSName &
# 強制關機
VBoxManage controlvm GuestOSName poweroff
在這個過程中,有一個非常棒的設計,那就是這個遠端桌面連線並不是 Windows XP 的遠端桌面連線,它是 VirtualBox 所提供的遠端桌面連線,所以當我們一打開 GuestOSName 時,以 3389 連線進去是可以看到 BIOS 畫面,但此時 Windows 都還沒啟動。
因為是 VirtualBox 所提供的桌面連線,所以如果你的 Guest OS 裝的是 GNU/Linux 、 *BSD 之類的作業系統,一樣都是用遠端桌面連線來控制。
另外針對從外部 ip 如何穿過防火牆來連線 3389 請看用 iptables 來開防火牆的洞!,若是要開放 Guest OS 連線則參照用 VirtualBox 讓 Windows Server 偷偷(背景執行)跑在 Linux Server 上。
自從接觸到 VirtualBox 後,一直想要把它的 Guest OS 當成 Host OS 中的服務來使用,因為這樣子,我就可以在 Linux Server 中再跑一個 Windows Server 。會這麼作的原因是要使用 MS Office API 來出 .doc 檔。
那麼該如何在 Linux Server 中,令它在一啟動時,即啟動 Windows Server Service 呢?其實很簡單,在你的 /etc/rc.local 中加入一行
VBoxVRDP -startvm WinXP &
這樣就夠了, WinXP 是 Guest OS 的名稱。這種啟動方式,讓你不須要跑一個 X window 環境來秀出 Windows Server 的視窗,它會啟動在背景中,如果你有設定 Guest OS(WinXP) 可以遠端顯示的話,你可以在別台電腦以 rdp 連線來控制 Guest OS(WinXP) 。
設定好了以背景方式啟動 Guest OS 後,再設定外部連線可以轉到 Guest OS port 。設定指令如下:
# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol" TCP
# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80
# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 8080
上述指令只須設定一次即可,設定後,請重新開啟 VirtualBox 軟體。這樣別人就可以從 http://x.x.x.x:8080/ 來瀏覽你的 Windows Server 的網頁伺服器了。
之前從來沒有中過毒,要不就是我沒發現過。
還好我已經用了 VirtualBox 了。中毒的解決之道,就是 cp -rf /backup/XXX.vdi ~/.VirtualBox/XXX.vdi , 8 分鐘就復原了。
這陣子,我老婆的學校一直飽受病毒肆虐之苦。沒想到,現在也延燒到家裡了。
要重灌 IBM R51,好累!所以想用另一個方法來解決。
最近有一項 Open Source 軟體很紅: VirtualBox 虛擬軟體,它的目的就是讓你在一個作業系統上再安裝多個作業系統,這類型軟體的領導者曾經是 VMWare ,但漸漸地有其他商業的、自由的軟體追上來了。
大家都說 VirtualBox 的效率十分高,幾乎快等於直接執行 Guest OS(就是多灌的那個 OS) 了。
況且如果是用 Levono Recover CD 重灌的話,無助於我桌上型電腦的 Windows ,我的 CoreDuo2 也是要重灌的。然而如果我使用的是 VirtualBox 的安裝方式,那麼只要在 CoreDuo2 上安裝一次,就可以把那個安裝完成的 .vdi 檔複製到 R51 來,這樣可以省下一次 OS 、 Application 安裝時間,同時也是另一型式的 Ghost/Clone 。
於是爬了爬文,看看如何安裝使用,結果相當簡單, Ubuntu 的方法如下:
# sudo vim /etc/apt/source.list
加入 deb http://www.virtualbox.org/debian feisty non-free。
# sudo apt-get update
# sudo apt-get install virtualbox
會出現選單讓你選擇,挑預設值即可。
# sudo groupadd --gid 1111 usbfs
# sudo vim /etc/group
在 group 中的 vboxusers, usbfs 群組後面加入可以使用 virtualbox 的帳號,如:
usbfs:x:1111:hoamon
最後在 /etc/fstab 中加入 none /proc/bus/usb usbfs devgid=1111,devmode=664 0 0
這樣才可以在 Guest OS 中使用 usb 裝置。如果你還是有 usb 裝置的權限使用問題,請編輯 /etc/udev/rules.d/40-permissions.rules 檔案,把
SUBSYSTEM=="usb_device", MODE="0664"
改成
SUBSYSTEM=="usb_device", MODE="0666"
接著重開機一次。開機後請點選選單的「應用程式」->「系統工具」->「Innotek VirtualBox」,這樣就可以開始 Guest OS 的安裝。
所以我在 CoreDuo2 上安裝了一個 Windows Guest OS ,更新它的 Patch ,並設定好 WebATM 的各項要求,就把這個設定好的 WinXP.vdi copy 到 R51 上,什麼額外的動作都不需要,我的 R51 直接就可以開 IE 看我寫的網頁、線上報稅、使用 WebATM 了。而且速度真的與直接在 R51 上跑一個 Windows 差不多(甚至比較快,不過有可能是 Levono 的 XP 裝了一堆有得沒有得,造成的開機速慢,更何況這個 Win Guest OS 也才剛灌,這樣比不厚道)。
VirtualBox 真棒。

如何感動!還是看圖容易。請看!
IE 及 MSN 是活在 Ubuntu 當中的。
這樣我又都多了個好理由來鼓勵大家轉到 Linux 陣營了。
呀~~我都快哭了。
快上 http://www.virtualbox.org/了解實情。







