營造 Linux 學習環境的好用工具 VirtualBox(转)
作者:徐秉義(Albert Hsu)
在筆者教學 Linux 期間,常常遇到同學苦無 Linux 練習環境,主因是許多同學只有一台電腦而且已經裝了 Windows 系統,若是在早期的話會建議使用「多重開機」方式,但多重開機建置並非想像中的簡單,稍微不注意就很有可能『傷害』到已經存放資料的 Windows 系統,導致 Linux 還沒練到甚麼,卻被逼著要學會重灌 Windows 系統。
溫馨提示:這邊提到『傷害』在程度上也許是 Format 到 Windows 資料或造成 Windows 無法開機等等。
對於電腦不是很熟悉的新手們,會比較建議使用虛機的方式來快速營造 Linux 練習環境,雖然虛機有著執行速度較慢的缺點,所幸的是初期練習 Linux 基礎操作,事實上並不需要高速的硬體配備。筆者這次介紹 VirtualBox 虛機軟體,知名度雖然沒有 VMWare 那樣地高,她該有的功能其實也都有喔!話不多說就開始我們的 VirtualBox Windows 版安裝之旅吧!
軟體下載、安裝與中文化
至 http://www.virtualbox.org/ 下載 VirtualBox for Windows 編譯好的二進位執行檔(binary),點選左邊【Downloads】後,接著稍微向下捲動一些即可看到「VirtualBox for Windows hosts」軟體下載連結,筆者下載的是 1.5.2 Windows x86 版本。
安裝 VirtualBox Windows 版只要依照精靈一路走下去,裝到好應該是沒有太大的問題。
安裝完成後從【程式集】裡面【innotek VirtualBox】→【VirtualBox】來啟動 VirtualBox 主程式。
溫馨提示:VirtualBox 亦有給 Linux 及 Mac OS X 版本的二進位執行檔。
語系設定
新版 VirtualBox 提供繁體中文介面來使用,從【檔案】→【偏好設定】呼叫出設定對話框,對話框內左邊第三個「語系」選單,即可切換至繁體中文介面(先前的版本只有簡體中文介面)。
開始安裝虛擬機器
裝一台虛擬機器大致上要準備的有「給機器的名字」、「記憶體大小」及「硬碟大小」,至於安裝時候的開機媒介,一般使用 CD/DVD 開機(VirtualBox 亦支援 iso 檔案開機)筆者設定範例如下:
虛機名稱 | srv1 |
記憶體大小 | 256 MB |
硬碟大小 | 5 GB |
安裝光碟片 | DVD/CD |
緊接著就來安裝一台 RHEL5 虛擬機器吧!建立虛機的路上皆有精靈帶領著我們,大致上都是點選〔下一步〕按鈕,底下僅僅針對幾個比較有需要講解的畫面來做解說。
點選〔新增〕按鈕來呼叫出建立虛機精靈,來到下圖的這個步驟替虛機取個名稱,筆者範例取名為「srv1」(Server one 之意),至於作業系統類型的部份,筆者並沒有特別挑選別的,使用預設值的「Other/Unknown」即可。
溫馨提示:若「感到」因沒有特別挑選作業系統類型,導致虛機安裝失敗的話,可試著調整這部份的設定。
虛機的記憶體用量,給 256 MB 安裝 RHEL5 算是剛好而已。
溫馨提示:若少於 256 MB 的記憶體來安裝 RHEL5 可能會遭到強制使用文字模式安裝的情況。
虛機所使用的硬碟,是母系統的映像檔案。VirtualBox 映像檔案為 VDI(Virtaul Disk Image)首次安裝需要新增一顆,所以我們點選〔新增〕。
溫馨提示:若是以前曾經有建立過 VDI 檔案,建立虛機時亦可使用既有的 VDI 檔案。
來到新增硬碟精靈,磁碟預設採用「動態擴充映像檔」(實際拷貝資料進去才會佔用硬碟空間)另一種則是「固定大小映像檔」(先行佔用磁碟空間,資料有無拷貝進去,不會影響母系統磁碟空間用量)
溫馨提示:若「感到」因使用「動態擴充映像檔」,導致虛機安裝失敗的話,可試著改用「固定大小映像檔」方式。
設定映像檔案大小,筆者母系統的硬碟不大所以開給虛機 5 GB 的空間,預設的 RHEL5 安裝完成大概與 Windows XP 差不多,大約 2 GB 左右的空間。
在新增完成映像檔硬碟後,就回到先前的選取硬碟的畫面,接著按下〔下一步〕。
虛機硬體配備已經準備差不多了,下一步是要光碟開機安裝 RHEL5。針對光碟開機這部份有兩個選擇:一個是點選下圖右方「光碟機」調整;一個是直接開機讓「首次運行精靈」來引導我們使用光碟開機。
採用直接開機是比較直覺的方式,會有「首次運行精靈」如下圖,直覺方式使用「母系統光碟裝置開機」。
溫馨提示:亦可使用「安裝光碟映像檔案開機」(要先準備好 iso 檔案)。
下圖是筆者使用 RHEL5 光碟片開機的情況,緊接著就是安裝 Linux 的部份,相信這部份大家都會,比較要特別介紹的是 VirtualBox 離開虛機的方式是「Right Ctrl」(右 Ctrl 鍵;位於畫面右下方)
安裝客端額外功能
在虛機安裝好之後,若是再加上「安裝客端額外功能」的話,較明顯可得到兩個好處:一個是進出虛機不需再按右 Ctrl 鍵(稱為「滑鼠游標整合」);另一個是母系統「分享資料夾」給子系統功能。
虛擬磁碟管理器
VirtualBox 客端額外功能軟體放在虛擬磁碟裡面,預設位於 C:\Program Files\innotek VirtualBox\VBoxGuestAdditions.iso 建議先使用【檔案】→【虛擬磁碟管理器】呼叫出虛擬磁碟管理程式中〔光碟映像檔〕分頁加入後給虛機掛載起來。
溫馨提示:虛機使用光碟映像檔可在虛機設定頁面〔光碟機〕(虛機還沒啟動前);或於(虛機啟動後的視窗)【裝置】→【掛載光碟】來調整。
RHEL5 安裝 VirtualBox 客端額外功能
在 Linux 虛機安裝 VirtualBox 客端額外功能只要抓到幾個重點,要裝起來應該不是難事。
重點一:安裝編譯工具 gcc,因為 VirtualBox 給 Linux 的是原始碼,所以要編譯。以 RHEL5 配置好 yum 來說,只要下達指令「yum -y install gcc」即可。
重點二:安裝核心編譯相關套件 kernel-devel,因為 VirtualBox 給 Linux 的這兩個功能是用核心模組方式,要編譯成副檔名為 .ko 檔(Kernel Object)。以 RHEL5 配置好 yum 來說,只要下達指令「yum -y install kernel-devel」即可。
如下圖的步驟:
光碟映像檔案若沒有自動掛載就手動掛載吧!使用指令「mount /dev/cdrom /mnt」
內容有一個「VBoxLinuxAdditions.run」!使用指令「sh VBoxLinuxAdditions.run」執行即可,安裝好後依照指示重開虛機。
分享資料夾功能
在安裝好客端額外功能軟體後,「滑鼠游標整合」功能明顯感受出來,至於「分享資料夾」要到虛機執行視窗的【裝置】→【分享資料夾】開放母系統資料夾,如此子系統才能使用。
下圖是開放 C 槽給子系統命名為「C_DRIVE」(此名稱待會要用到)。
在子系統使用「mount -t vboxsf 分享資料夾名稱 掛載點」的類似命令來掛載分享資料夾,下圖是使用指令「mount -t vboxsf C_DRIVE /mnt」情況,掛載後可以看到母系統(Windows)資料。
快速複製虛機
灌好一台 Linux 虛機後,就可以開始練習 Linux 基本操作,以及大部分單機使用 Linux 所可以做到的事情,像是帳號密碼與群組管理、Software RAID 與 LVM 管理、Quota 設定與管理等等。持之以恆地練下去的話,不久之後就會來到網路服務,也就是架設各類 Server 的部份,像是 DNS、DHCP、Mail、Web、NFS、Samba 等等服務,此時難免需要「另一台」主機(甚至另兩台)來作互動及測試,這時候再虛一台 Linux 出來用,對練習的幫助頗大。
溫馨提示:Linux 兩大證照 RHCE 與 NCLP 不約而同地重視兩台 Linux 主機之間的互動操作。
VirtualBox 複製虛機
灌一台電腦通常會比對拷一台要花上較長的時間,既然虛機磁碟是個 VDI 檔案,何不就「拷貝」一份成為另一台虛機呢?這樣的想法理論上是可行,但因為 VirtualBox 有使用 UUID 方式紀錄 VDI 檔案,所以直接 VDI 檔對拷後給另一台虛機用會出問題的,出問題的原因在於「同一台有重複 UUID 的 VDI 檔案」。
下圖是使用「複製貼上」做出 VDI 檔,欲加入硬碟群時所出現的錯誤訊息。
溫馨提示:此 VDI 檔案拷貝到別台母系統卻是可以直接使用,因為別台沒有相同 UUID 的 VDI 檔案。
要複製虛機在同一台母系統上使用的話,就要用 VirtualBox 內建指令才不會有上述問題產生,關鍵在於執行 vboxmanage 指令搭配 clonevdi 參數(克隆 VDI 檔案)例「vboxmanage clonevdi srv1.vdi srv2.vdi」。
VBoxManage 執行檔案擺放位置 | C:\Program Files\innotek VirtualBox\VBoxManage.exe |
虛機磁碟 VDI 檔案預設路徑 | C:\Documents and Settings\Administrator\.VirtualBox\VDI |
開啟指令視窗,使用「cd "C:\Documents and Settings\Administrator\.VirtualBox\VDI"」切換至虛機磁碟 VDI 檔案預設路徑(筆者的 srv1.vdi 位於這裡)。
接著使用指令「"c:\Program Files\innotek VirtualBox\VBoxManage.exe" clonevdi srv1.vdi srv2.vdi」來將 srv1.vdi 克隆(clone)成 srv2.vdi。
溫馨提示:VBoxManage 指令在此需要使用完整的路徑名稱,要是之後經常使用這個指令的話,最好還是設定環境變數 path 包含 c:\Program Files\innotek VirtualBox\ 這個路徑會比較方便(類似 Linux $PATH)。
接下來創建虛機 srv2 使用現有的 srv2.vdi 就可以快速複製虛機,方便我們同時開啟兩台 Linux 虛機用來練習。
探討 VirtualBox 網路模式 NAT
當開啟兩台虛機 Linux 後,奇怪的是兩台 IP 一樣卻兩台都可以透過母系統 NAT 後存取外部網路,可是我們需要的功能「兩台 Linux 虛機互向存取」卻不通,就算是將這兩台 IP 錯開也一樣情況,原來是 VirtulBox 預設網路模式 NAT 運作特性與 Xen、VMWare 不太一樣,筆者稱呼 VirtualBox 的 NAT 模式為「AP Based NAT」(由應用程式 VirtualBox 提供的 NAT),單純的只是將內部虛機 NAT 成母系統 IP 存取外部網路。
這個 NAT 模式下,造成子系統可以存取母系統的外部 IP 位址,反過來若是母系統欲存取子系統的話,可利用母系統 Port Forwarding 達成,至於 Port Forwarding 的使用方法,請參考原廠的使用說明。
溫馨提示:Port Forwarding 一次 forward 一個埠,要多個埠 forward 就要多做幾次設定。
若要使得母系統與子系統、子系統與子系統之間相互網路存取更加方便的話,建議是使用橋接(Bridge)模式(後續介紹);若只是要解決子系統之間網路存取的話,可採用虛機各自新增一個內部網路介面即可。
虛機互通:各自新增內部網路介面
圖為 srv1 設定第二張配接卡(配接卡 1)的畫面,記得下拉選取「內部網路」,當然 srv2 也一併要設定第二張配接卡,這樣 srv1 的 eth1 與 srv2 的 eth1 感覺像是接在同一個 Switch 上。
溫馨提示:新版(1.6.X 版)有個新的欄位 Network Name(網路名稱)其網路名稱需設定一樣,虛機之間才能互相存取(例如都設定成 foo);Network Name 名稱若不同則視為兩個不同的網路。
下圖為兩台 Linux 虛機 eth0 皆為 10.0.2.15 可連上外部網路;eth1 分別為 192.168.2.3 與 192.168.2.4 由 srv2 使用 ssh 登入 srv1 的情況。
溫馨提示:若要母系統與子系統互通的話,建議使用橋接模式。
探討 VirtualBox 網路模式 Bridge
VirtualBox 類似 VMWare、Xen 這些虛擬機器軟體,因此母系統與子系統之間的架構除了 NAT 模式外,常用的還有 Bridge 模式,她的 Bridge 模式啟用方法較為特殊,方法是:
『虛機各自新增 VirtualBox 主端介面卡,然後再用 Windows 內建 Bridge 功能橋接起來。』
虛機新增 VirtualBox 主端介面卡
在 srv1 設定畫面中,筆者將原先設定成 NAT 模式的網路配接卡,附掛到「主端介面」後,下方主端介面方框右邊,有兩個小按鈕用來增減虛擬介面卡的(一個是新增、一個是移除)點選新增後加入「VirtualBox 主端介面 1」給 srv1 使用。
溫馨提示:虛機開啟時,很多設定都不能調整,請停虛機後再做設定。
下圖為設定成功後 srv1 使用「VirtualBox 主端介面 1」畫面。
將介面 Bridge 起來
在 Windows 網路設定畫面中,圈選需要被 Bridge 的介面卡(下圖為「母系統網路卡」以及「VirtualBox 主端介面 1」),按下滑鼠右鍵選擇【橋接】(Bridge)。
溫馨提示:橋接後 Windows 母系統 IP 要設定在橋接器上而不是在原來的網路介面。
下圖是 Windows bridge IP 顯示畫面。
srv2 若是也要加入這個 Bridge 成員主機的話,也要如法炮製一個「VirtualBox 主端介面 2」來使用。
srv2 「VirtualBox 主端介面 2」採用後續再加入這個 Bridge 的方式也行的通,使用右鍵選擇【加入橋接器】(Add to Bridge)。
最後母系統、srv1 與 srv2 就「感覺像是」接在同一個網路交換器上囉!
下圖為母系統 Windows 使用 putty 連接到 srv1 以及 srv1、srv2 同時開機的情況,一台電腦當三台用。
VirtualBox RDP 功能
RDP 全名 Remote Desktop Protocol 是 Windows 遠端桌面所使用的通訊方式,而 VirtualBox 用她來提供遠端控制虛機功能,方法是在設定虛機畫面中【遠端顯示】選項來做啟用即可。
RDP 預設使用埠號 3389,若是您的 Windows 有啟用遠端桌面功能就會先行佔用此連接埠,那虛機就避開即可(例如使用埠 3390)
溫馨提示:使用 VirtualBox RDP 功能時各台虛機埠號最好錯開,不然就避免同時啟動使用相同埠號的虛機。
下圖是在 Linux 使用 rdesktop 程式連接到 srv1 的畫面,請注意連線到的 IP 是母系統 Windows IP 位址。