2008/09/01

Ubuntu 上 VirtualBox 的 Host Key

在 Ubuntu 上安裝 VirtualBox 很容易,卻很容易遇到一個問題:Host Key 沒有作用。其實,正確的說法是:在 guest OS 上不能使用 keyboard。

這問題很容易解決,只要安裝 scim-bridge-client-qt 這個 package 就可以了。安裝完之後,記得重開機才會生效。

2008/08/31

VirtualBox 的三種網路型態

VMware Player 的 host OS 和 guest OS 之間有 三種網路型態。VirtualBox 同樣也有三種,而且功能很類似:
  • Host Interface Networking (HIF)
  • Internal Networking
  • Network Address Translation (NAT)
其中,Network Address Translation (NAT) 與 VMware 的名稱一樣,功能也完全相同。

Host Interface Networking (HIF) 除了名字不同之外,功能和 VMware 的 Bridged Networking 是一樣的。

Internal Networking 則和 WMware 的 Host-Only Networking 相近,但有以下不同:
  • Internal network 上沒有 DHCP server
  • 不能直接和 host OS 溝通
當然,如果你比較習慣 VMware 的 Host-Only Networking,已經有人試出設定的方法:

2008/08/30

用 VirtualBox 跑 Ubuntu Server

利用 VirtualBox 來安裝 Ubuntu 8.04.1 LTS Server Edition。過程很順利,不過安裝好了 Ubuntu 卻開不起來,開機時出現 CPU 缺少了一些 feature 的錯誤訊息:
This kernel requires the following features not present on the CPU:
0:6
Unable to boot - please use a kernel appropriate for your CPU.

原來 32bit 的 x86 最多只能支援到 4GB 的 RAM,但若有 PAE (Physical Address Extension) 的加持就能擴充到 64GB。因為 Ubuntu Server 的 32bit kernel 用到 PAE 這個特性,所以在 VirtualBox 上必須啟動這個 PAE:
Settings -> General -> Advanced -> Enable PAE/NX

2008/07/02

Ubuntu 的 Manpages

寫程式時發現有些標準的 C 函數 man 不到,查了一下才發現 manpage 是分散在三個 packages,需要自己安裝:
$ sudo apt-get install manpages
$ sudo apt-get install manpages-posix
$ sudo apt-get install manpages-posix-dev
其中:
  • manpages 包含 GNU/Linux 的基本操作,應該預設就會安裝到。
  • manpages-posix 則包含 POSIX 所定義公用程式的用法。
  • manpages-posix-dev 則包含 POSIX 的 header files 和 library calls 的用法。寫程式的人一定需要這一個。

2008/06/28

在 VirtualBox 的 NAT 底下開 port

VirtualBox 預設的網路模式是 NAT。換句話說,Guest OS 可以透過 Host OS 連到外界,但 Guest OS 受到 NAT 的保護,外界無法連進去。

因此,若要在 Guest OS 架設任何服務 (例如:sshd),就必須設定 VirtualBox 的 port forwarding。方法如下:
VMNAME="Ubuntu"
SVR=ssh

VBoxManage setextradata "$VMNAME" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/$SVR/HostPort" \
2222

VBoxManage setextradata "$VMNAME" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/$SVR/GuestPort" \
22

VBoxManage setextradata "$VMNAME" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/$SVR/Protocol" \
TCP
這樣,當外界連到 Host OS 的 port 2222,就等於連到 Guest OS 的 port 22。

當這種設定很多時,可以用以下的指令來列出所有的設定值:
VBoxManage getextradata "$VMNAME" enumerate
注意!做完上述設定之後,要重新啟動 VirtualBox 才會生效。

2008/06/27

在 Ubuntu 上安裝 VirtualBox OSE


貼後補充:亦可到 VirtualBox 官方網站 下載適合 Ubuntu 的最新版本,用 dpkg -i 即可安裝。


雖然 VMware Player 在 Windows 上用得很順手,我還是決定在 Ubuntu 上試試 VirtualBox。沒想到安裝和使用都出奇的簡單,而且操作介面和功能都令我驚艷。

安裝方法非常簡單,只要用 Synaptic 或 apt-get 安裝以下 package 即可:
  • virtualbox-ose
  • virtualbox-ose-modules-generic
安裝好了之後,在主選單會新增一組「系統工具」的選單,馬上就可以啟動 VirtualBox OSE。不過在你真正執行 virtual machine 之前,你必須先將自己加到 /etc/group 的 vboxusers group。

其實,我還是有遇到一點小麻煩。用此版的 VirtualBox,一旦將 keyboard 的控制權交給 virtual machine 之後,系統就卡住了:Host 和 Guest 都沒辦法控制,後來才找到解法:

2008/06/25

在 Ubuntu 上 mount USB drive

一般來說,在 Ubuntu Desktop 上掛 USB 碟並不需要特別處理,系統會自己處理。一插上去,就馬上可以使用。但有一些例外情況,需要自己手動 mount,例如從遠端 ssh 進去。

這時最麻煩的,就是怎麼知道這個 USB 碟的 device name。我發現最簡單的方法是:
ls /dev/disk/by-id/usb-*
搭配 lsusb 的輸出,很容易就可以找到可用來 mount 的 device name。