2012年2月29日 星期三

[經驗分享] 你用 VMware Workstation + Ubuntu + Bridged Mode,無法連上網路嗎?


這個問題很久之前就一直困擾我。基於一個「懶」字,我一直用其它方法迴避它。直到今天,我心一橫,上了 Google 查一個多小時,試過好多網友的方法無效後,自己無意中發現解答。而這個解答簡單到讓我大笑不止(喃喃自語:「早知這麼簡單,之前ㄍㄧㄥ一下不就解決了嗎?」)。不忍藏私,所以就為文分享,以饕讀者。



先描述一下我的問題:為了製作「嵌入式系統」的講義,我裝了如下的測試環境:

  • 實體機
    • 硬體:Lenovo X200 筆電,Intel Core 2 Duo, P8400, 2.26 GHz, 2GB RAM
    • 作業系統:Windows 7 SP1, 64 bits
    • 網路連線:無線網路 802.11 b/g(使用 192.168.11.x 網段)
  • 虛擬機
    • VMware: VMware Workstation 7.0
    • Ubuntu (@VMware): 10.04 LTS,消耗 512 MB 主記憶體
    • Ubuntu 虛擬機網路連線模式:NAT(使用 192.168.58.x 網段)
  • 開發板
    • 長高科技 DMA-6410L
    • 處理器:Samsung S3C6410
    • 記憶體:256 MB NAND Flash + 128 MB SDRAM
    • 安裝軟體:Android 2.1
    • 網路連線方式:固接網路(使用 192.168.11.x 網段,與實體機網段相同)

裝到這裡,都還算順利!在虛擬機內也可以用瀏覽器連上網路。若對 NAT 這個名詞不熟悉的讀者,可以參考維基百科中「NAT 的名詞解釋」。

後來,我的開發板需要執行一些與 Ubuntu 同網段才能測試的實驗。既然實體機與開發板都使用 192.168.11.x ,我就想乾脆把生存於 VMware 虛擬機內的 Ubuntu,從原來的 192.168.58.x 網段,轉換到 192.168.11.x ,比較一勞永逸。玩過 VMware 的朋友們或許知道,只要把虛擬機內的「網路連線模式」,從「NAT Mode」,換成「Bridged Mode」,就能讓虛擬機與實體機平起平坐,使用相同的 192.168.11.x 網段。

問題從此就開始了!我將虛擬機的網路連線模式,從 NAT 換成 Bridge 後,從此虛擬機就無法連上網路了!右上角會有個「無線網路」的圖示,加上紅色的驚嘆號,並出現「Wired Disconnected」字樣(如圖一所示)。無論我怎麼調整,就是無法網路連線。

VMware-Ubuntu Disconnected
圖一:VMware 使用 Bridged Mode,無法使 Ubuntu 連線

以前我遇到這種狀況,乾脆使用另一台桌機。那台桌機是直接安裝 Ubuntu 的,並非使用虛擬機,當然不會有什麼 NAT 或 Bridged 的問題。反正講義能做出來不就好了(我夠懶吧)?
但懶人也是有尊嚴的(哈哈),今天不知道哪根筋不對,就是想在我的筆電內的虛擬機,使用 Bridged Mode 連上網路(實情是,筆電可以拿著到處走,還能到客廳邊看電視邊做講義… 吐舌頭 )。所以 Google 了一下,大家說的解法都不脫下列幾點:

  • Ubuntu 內的無線網卡驅動程式太舊!更換一下就可以了。原 Po 還提供 Patch 檔讓人下載,並解說如何安裝。
  • 不要用 DHCP 自動取得 IP 位址。改用靜態網址,並增加「靜態路由(Static Routing)」設定,好讓它連上實體機的網路。
  • VMware Tools 設定不對,請執行 vmware-config.pl 重新設定。
  • 換掉 VMware,改用 VirtualBox(我就是喜歡 VMware,怎樣?你咬我啊!)

上述幾個方法,除了最後一個太白爛我不想做外,其它我都做過了。沒一個有效。後來某網友提到,VMware 的 NAT Mode 使用 VMnet8 這張虛擬網卡,而 Bridged Mode 使用 VMnet0 這張虛擬網卡(如圖二所示)。既然用 NAT可以連上網路,而 Bridged 不行,會不會是 VMnet0 的設定有問題?

VMware-Ubuntu VMnet8
圖二:NAT 所使用的 VMnet8 虛擬網卡(ipconfig 指令執行結果)

那位仁兄雖然沒有講出答案,不過倒是給我一個靈感:「VMware Workstation 內應該有 VMnet0 網卡的設定視窗,查查看說不定有什麼結果」。沒想到被我找到「VMware Workstation 選單 > Edit > Virtual Network Editor…」這個設定視窗(如圖三所示)。將 VMnet0 的 Bridged 設定,從「Automatic」改為「11b/g Wireless LAN Mini PCI Express Adapater III」(您的機器應該會出現您使用的固接或無線網卡名稱,不一定與我的相同),就…連上了(如圖四所示)!!!(內牛滿面哪~~)

VMware-Ubuntu VMnet0 Config
圖三:Virtual Network Editor 的畫面

VMware-Ubuntu Connected
圖四:VMware 內的 Ubuntu 終於使用 Bridged Mode 連上網路

靠!早知道這麼簡單,我就不用去下載什麼 Patch 檔、設定什麼靜態路由、還跑什麼 vmware-config.pl 了!好吧!我承認是我個人網路除錯能力太弱,怪不得別人… 害羞

2 則留言: