google code-beautifer

星期三, 6月 27, 2007

安裝使用VirtualBox: 執行虛擬作業系統的新選擇

V 1.0

前言


對我們這種常在某一種Linux 上工作,但偶而要跑其他作業系統去測試一些事情的人,單一機器多重開機雖然效能最高,還是有他不便之處(切換當時就沒辦法同時在習慣的系統下工作)。在一個作業系統下跑虛擬機器去跑另一個作業系統有時會很重要。

之前有跑過 VMware player ,但VMplayer 2.0 在我的64bit機器上有問題。替wine作好設定的 wine-doors 又跑不起來。 最近發現了Virtual Box:
http://www.virtualbox.org/
覺得還不錯。以下是VirtualBox 詳細安裝使用說明。不像有些禿鷹公司把別人完全開放的英文文件作個勞什子的簡單翻譯文件,就要去跟政府要大筆錢,還用PDF...等種種小手段去限制干擾大家使用;也不像一些喜歡偷看我文章卻又喜歡批評我的基本教義派,除了嘴巴叫叫些歪理,往往對他批評的領域卻一點實際技術的東西都端不出來。下面是細節毫無保留全都錄,希望對關心開放軟體的朋友有所助益,也希望受益的朋友也能飲水思源,秉持copy left 的精神去回饋自由跟開放軟體社群。

各種虛擬機器軟體的基本比較,可以參考
http://en.wikipedia.org/wiki/Comparison_of_virtual_machines
之後我會另文發表VMware, VirtualBox 跟Qemu 三者的細節比較 。

下載安裝程式


VirtualBox目前最新的是1.4版 有支援32 bit
VirtualBox-1.4.0_21864_mdv2007.1-1.i586.rpm.run
跟64 bit 版
VirtualBox_1.4.0_Linux_amd64.run
Mandriva 2007.1 上的RPM是1.3.8版,我發現1.3.8 設定沒有 USB,VRDP(遠端顯示) 跟Share Folder(分享資料夾),此外裝完後1.4 版後,1.3 版介面文字也會變成中文,建議直接去官方下載PUEL (Personal Use and Evaluation License) 版1.4.0。下面是以 1.4.0為示範。

1.4.0 預設目錄在 /opt/VirtualBox-1.4.0
也可以自行選擇,然後執行以下指令,如:
mkdir /usr/local/VirtualBox1.4.0
chmod +x VirtualBox_1.3.2_Linux_x86.run
./VirtualBox_1.4.0_Linux_amd64.run install /usr/local/VirtualBox1.4.0

他會要你看同意書後,鍵入yes才能繼續安裝。

裝完後在Mandriva 的gnome選單中,他會在應用程式->更多應用程式>模擬器下出現 Inno Tek VirtualBox的選項

在起動Virtua Box後
在Gobal setting 裡,你可能會在General 選項裡想改掉下面的路徑設定
VDI ~/.VirtualBox/VDI
Machine ~/.VirtualBox/Machines

之後就可以在Vitural Machine Manager 下,按下左上方的"New"圖示,建立虛擬機器影像

建立虛擬機器影像


在虛擬機器環境上, host表示實體機器上執行的主端作業系統,guest表示虛擬的客端作業系統。一臺虛擬機器少要有一個虛擬磁碟影像。客系統的虛擬機器磁碟影像檔,是放在主作業系統的檔案系統上。如果是放在Linux 的原生ext3檔案系統分割區效能應該會好一點。萬一虛擬硬碟檔要放在 FAT/FAT32 分割區下,則會受限於單一檔案不能超過 4GB的限制。以下是以英文版介面說明:


  1. 出現圖M2的"建立虛擬機器法師"畫面,再按"Next"圖示到下一步。
  2. 出現圖M3的畫面,提供選擇虛擬機器名稱(在設定網路時很重要)跟作業系統型態,再按"Next"圖示到下一步。
  3. 出現圖M4的畫面,提供選擇虛擬機器分配記憶體大小,(預設是168M,大一點的系統建議384M以上),再按"Next"圖示到下一步。
  4. 出現圖M5的畫面,提供選擇虛擬磁碟(預設是沒有磁碟),可以選"Existing"圖示去選用之前建好的。選"New" 圖示去叫出建立虛擬機器影像法師
  5. 再按"Next"圖示結束設定,出現圖M6的新畫面,這時候可以看到會多出 Setting,Delete,跟Start的選項。


這時候可以針對不同虛擬機器影像做個別內部設定

建立虛擬磁碟法師



  1. 在Vitural Disk Manager 下,按下圖D1左上方的"New"圖示,
  2. 出現圖D2 的"建立虛擬磁碟法師"畫面。再按"Next"圖示到下一步。
  3. 出現圖D3的畫面,提供選擇虛擬磁碟檔案大小是動態配置還是固定,(預設是動態配置Dynamically),再按"Next"圖示到下一步。
  4. 出現圖D4 的畫面,提供選擇虛擬磁碟檔案路徑名,(預設是NewHardDisk1.vdi)跟大小,再按"Next"圖示到下一步。
  5. 出現圖D5要求確認畫面,再按"Next"圖示結束設定



虛擬機器影像做個別內部設定



在 VirtualBox 主畫面中針對某虛擬機器影像按下"設定值"(Settings)圖示

  • 一般(General)
  • 客端若是Windows ,要在(advanced) 進階分頁底下,把ACPI 跟IO APIC這兩個選項都啟用,會省掉一些問題。
  • 硬碟
  • 最多可以掛載3個硬碟
  • 軟碟
  • 可以使用實體軟碟或是影像檔,包括進行系統開機
  • 光碟機
  • 只能模擬一台光碟機,但可以切換,可以設定使用實體光碟機或是 ISO 檔模擬實體光碟機,包括進行系統開機
  • 音效
  • 選用Alsa音效驅動程式
  • 網路
  • VirtualBox 網路能模擬 4 張卡。可在網路卡0的分頁中勾選
    啟用網路卡,一但主端對外能上網,客端不需作任何調整就能以NAT+HDCP方式上網

以下設定是1.4 版才有,後詳

  • USB

  • 遠端顯示(VRDP)

  • 分享資料夾(Share Folder)



最後按 "OK" 圖示完成設定,這時就可以在主畫面中選擇一個虛擬機器,按下"Start"鍵圖示就會開始啟動虛擬機器系統

萬一遇到 vboxdrv 無法正確載入,
VirtualBox kernel driver not installed. VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).
查查 nmi是不是有問題,是的話要在 kernel參數加上nmi_watchdog=0

安裝 Guest Additions



因為是虛擬機器, 客端顯示硬體驅動程式不是顯示真正的硬體,也無法裝自己的驅動程式。以我見過的例子:測試XP 客端上的裝置管理員上面列有二個不明裝置: 一個是顯示卡一個是不明顯卡 (實體主機上是nvidia)另一個是不明基本系統裝置。不過顯示正常,至少切到1024x748解析度沒有問題。

但要是安裝 Guest Additions 會使虛擬機器的驅動解析度與滑鼠整合操控性更好,如此一來,就不需要多按一下快速鍵就能把滑鼠移出VirtualBox視窗外。而且至少可以解決 nvidia Gforce 的問題(又多了個理由不要用ATI顯示卡),讓虛擬機器支援了更高的解析度 。從比較虛擬機器開機聲音的延遲程度,我相信這跟其他模擬作業系統軟體的外掛如WMware-tools 一般,會使得客端虛擬機器的效能更接近主端系統的效能。在1G Ram的AMD64 4000+上測試,安裝前Guest Additions竟然 Virtual Box CPU承載一直逼近百分之百!雖然同時跑其他程式如emacs還是很順,但看得還是有點心驚膽顫。安裝後,虛擬機器螢幕解析度提高到1152x864,但CPU承載掉到合理的60%

這是只有包含於 PUEL edition (Personal Use and Evaluation License) 而開放原碼版沒有的。安裝完PUEL版之後會在對應目錄下找到 additions/VBoxGuestAdditions.iso 預設路徑在
/opt/VirtualBox/additions/VBoxGuestAdditions.iso

C:\Program Files\InnoTek VirtualBox\VBoxGuestAdditions.iso

安裝時如果有掛載其他實體光碟或虛擬光碟映像檔,可能會失敗,最好先卸載其他光碟。啟動虛擬機器後,把VBoxGuestAdditions.iso當成實體光碟掛載到虛擬機器上,可以從Virtual Box下拉選單的 Devices-> Install Guest-Additions 去安裝。

常用快速鍵



  • F12
  • 在開機時選擇boot的媒體
  • 滑鼠點 2 下
  • 啟動視窗:將畫面主控權切換成虛擬系統。
  • 以下需要配合主端控制鍵,預設是右 Ctrl 鍵,也可換成如左Ctrl 鍵給右撇子方便使用

    • 主端控制鍵按 1 下
    • 跳出客端系統視窗。
    • 主端控制鍵 + f 鍵
    • 全螢幕/視窗模式切換。
    • 主端控制鍵 + Backspace 鍵
    • 在客端系統中模擬Ctrl+Alt+Backspace (Unix系統重新起動X 視窗)。
    • 主端控制鍵 + Fn 鍵
    • 在客端系統中模擬Ctrl+Alt+Fn,... (Unix系統切換到第號文字console , 1 <= n <= 12)。
    • 主端控制鍵 + Delete 鍵
    • 在客端系統中模擬Ctrl+Alt+Del(Windows 系統叫出程式管理員或重開機)。
    • 主端控制鍵 + q 鍵
    • 關機
    • 主端控制鍵 + r 鍵
    • 立即重開機(如同硬體reset )。



進階使用



USB裝置要啟用時,到視窗主選單裝置->USB裝置把要啟用的裝置按左鼠鍵選取使用。跟VMware 一樣,同時間主客端間只能有一個存取 USB裝置,從VirtualBox客端卸載USB 裝置後,主端系統就可以抓到該 USB 裝置,這樣可以讓主客端之間作資料的傳遞分享。

分享檔案夾的設定



除了USB 儲存裝置,可以使用分享檔案夾(share Folder ) 在透過內部網路分享儲存媒體(類似NFS或網路芳鄰)的方式讓主客端之間分享檔案。

分享檔案夾的功能可以在關掉連接外部網路的狀態上使用,就算關掉客端系統的虛擬網路卡對外連線,主客端仍然可以由分享檔案夾分享檔案。這麼一來,當有人想灌個windows 客端系統只用來執行少數Linux下沒有的應用軟體,但又怕windows系統客端曝露在連外網路的危險之中,就可以不用顧慮分享檔案夾上的windows系統客端一旦接上網路,就會有被來自外部網路上病毒、木馬等等惡意程式攻擊的安全性風險。


  • 主端上的設定

  • 可以透過GUI 或命令列來達成:先把一個虛擬機器架起來,把作業系統裝完後

    • GUI :在設定裡指定"檔案夾路徑"與"名稱",詳見下面說明:
    • 命令列:
        先關閉虛擬機器。
      1. (只有windows host 需要)假設虛擬機器叫xp,命令列開一個 command prompt 終端機視窗(Windows 系統下用cmd 叫出),切換目錄到 VirtualBox 虛擬硬碟存放的目錄。路徑可以參看一下當初VirtualBox 的 File 選單中的 Global Settings 裡面指定的虛擬機器集目錄,比如說
        /home/run/VB/Machines/,在該目錄底下可以找到個別虛擬機器相對應的目錄。如虛擬機器xp就會建立對應的子目錄 /home/run/VB/Machines/xp
      2. 用下列形式執行命令
        VBoxManage sharedfolder add "VM Name" -name "Share Name" -hostpath "路徑"

        VBoxManage sharedfolder add "xp" -name "again" -hostpath /home/run/again
          其中
        • VM Name
        • 指的是虛擬機器的名稱,如xp。要注意虛擬機器名xp,跟使用的虛擬硬碟名稱XXXYYZZZ.dvi 可以不一致。這裡要用虛擬機器名。
        • Share Name
        • 指的是自己在虛擬機器中定義的分享檔案夾名稱,如again
        • 路徑
        • 指的是要分享給客端的主端實體路徑名稱,如/home/run/again

      3. 其實可以直接修改系統設定檔,在該 VM Name 的目錄下,有個 VM Name.xml 檔案,如/home/run/VB/Machines/xp/xp.xml 可以用文字編輯器直接打開來編輯

    • 要確認設定的話,可以在終端機裡執行
      VBoxManage list vms
      看看會不會出現類似下面的字眼:
      Shared folders:
      Name: 'again', Host path: '/home/run/again' (machine mapping)

  • 客端上的設定

  • 啟動虛擬機器,開機完後在虛擬機器中

    • Linux

    • mount -t vboxsf again /media/VM
      其中again要和主端指定的分享名"again"一致,/media/VM是你想掛載的目錄。這也可以用/etc/fstab 之類的方式來變通掛載。
    • Windows

    • 把 \\vboxsvr\again 當成網路分享來用。(注意:不見得能用檔案總管直接上samba 網路瀏覽),這也有好幾種方式。用檔案總管下的tool -> map network drives 是一個方式,或打開一個 command prompt 終端機視窗,執行:
      net use x: \\vboxsvr\ShareName
      其中x:是你想在windows下看到的磁碟代號,而ShareName要和主端的分享名稱要一致,如
      net use z: \\vboxsvr\again
      注意在x:和\\vboxsvr之間需要加空白。


之後在虛擬機器上用Krusader或Total commander 之類的檔案總管打開網路儲存媒體,就可以看到分享檔案夾了。

9 則留言:

weng 提到...

版主您好
小弟有個疑問想請教:
我的環境為:
OS: Mandriva 2007.1_spring
virtualbox版本為
virtualbox-1.5.0.24069-mdv 2007.1-2.i586

安裝很順利,我也作過
sudo /etc/init.d/vboxdrv setup
recompile 也全ok.
在建立完虛擬磁硬機之後,啟動要安裝winXP , 安裝進行到format磁碟時,卻會自動跳出,無法再安裝下去。

請問能否指點一下。感謝。

shelandy 提到...

什麼樣的"自動跳出"?

裝其他虛擬作業系統(如另一個Linux )也會這樣嘛?不會的話就是XP 的問題而不是 virtualbox的問題

weng 提到...

版主您好

1.從我的k選單中, 我的virtualbox 名稱為:
k選單->更多應用程式->模擬器->innotek virtualbox
2.我試過winXP 7.0 以及 win2k profressional 這兩個版本的OS。
3."自動跳出"就是
我試了好幾次安裝,有幾種結果
a.啟動 WinXP 虛擬磁碟,放入winXP自動安裝片, run 到 需要format 碟磁時,這時候就會 hang 住不動。過了一會,vixtualbox 會自動跳出來。這時候虛擬磁碟機會顯示一個 "紅色禁止"的符號。

b.不然就是會一直hang 住不動。
請問有比較好的解決方式?
感謝回覆 。

shelandy 提到...

你既然是 sudo ,顯然不是用 root 登入,那麼虛擬磁硬機是不是有開適當的權限?

我沒聽過 winXP 7.0 OS,不知你在講什麼。基本上你可以在 Linux 下用virtualbox跑 Linux做基本的測試 。
假如連這一步你都懶的話,對自己的系統設定又不熟,別人是很難幫忙的

weng 提到...

版主您好
針對我的問題,很抱歉造成您的困擾
首先先回答一下您的疑問
1.我是用windows 的super XP 7.0 的版本去安裝的。
2.再來,後來我再用fedora 去安裝一次,結果也是一樣。
3.我是用使用者登入,然後轉換成root 的權限,再進行安裝的。
4.virtual box 的權限,我加入了使用者與root 的這兩個。
5.您說的可以自行用linux 自行測試,這點我倒是不知道,感謝您的提醒,有關測試這個部份,我會在網路上找答案。
6.再說,小弟我不是懶! 雖然我是個新手!不過找答案這個能力還是有的。

也許您說的對,可能在某些設定上,我一時沒有想到。

感謝指教。

shelandy 提到...

winXP 7.0 OS不是標準的東西,就不回應了
但假如 Fedora 也是的話,問題出在 Mandriva Linux/virtualbox這一端

虛擬磁硬機檔最好不要放在 windows file system 上,假定你是把他放在 ext2/ett3 file system 上,先在MDV上試試這個:

su 之後
chmod 755 虛擬磁硬機檔完整路徑

執行看是不是可以。
再不然就是有啥基本的設定衝到,這我看不到機器就幫不上忙了

good luck

Jerry 提到...

嗨你好
請問比方說我要安裝osx
那裝了virtual box之後
要裝osx一定是要是osx的iso檔嗎?
如果是iso檔是不是要把osx安裝光碟先用虛擬光碟轉成iso檔?
謝囉

Jerry 提到...
作者已經移除這則留言。
Shelandy 提到...

我不確定virtualboxs能不能直接裝MacOSX,根據我的初步瞭解,有人是把MacOSX10.6 的DVD 內容裝到USB 碟再去直接安裝到硬碟,但中間還有一些設定的XXX,不是那麼簡單,所以我自己也還沒試。這得您自己先試了。