CentOS 作為 VirtualBox 的客端操作系統

把 CentOS 安裝為客端操作系統與在實體硬件上安裝非常相似。首先,請從一個 CentOS 鏡站下載你希望用來安裝的 ISO 檔。

建立一台虛擬機器

利用 Virtual Machine Wizard 建立一台的虛擬機器(VM),選擇 Linux 作為 OS Type 及 Red HatRed Hat (64 bit) 作為操作系統。記憶體最少要有 768MB 才能應用圖像化安裝。接著虛擬硬盤精靈便會運行。操作系統的碟盤最少要有 8GB。請為近乎完整的安裝分配最少 15GB,否則你可採用所有預設值。有需要的話,額外的碟盤可在日後添加。

建立 VM 後,選擇 Settings,進入 Storage,然後在 IDE Controller 部份點擊左方的 CD 圖示,接著選取位於右方的 CD 圖示並從選單中選取 Choose a virtual CD/DVD。請進入放置 ISO 映像檔的目錄並選取其中一個,例如 CentOS-5.7-x86_64-bin-DVD-1of2.isoCentOS-6.2-i386-bin-DVD1.iso。更改其他設定,例如:虛擬顯示卡的記憶體大小、採用 NAT 抑或橋接網絡等。首次安裝時把請盡量少改動預設值。

啟動 VM 並進行圖像化安裝,你也可選用文字模式安裝。安裝完成後,重新開機並進行 firstboot 設定。

安裝客端附加程式

你需成為 root 身份來進行下列步驟。請登入 root 指命殼或在一個終端機視窗執行 "su -"。

安裝 VB 將會須要建立內核模塊。如果 DKMS(動態內核模塊支援)已被安裝,它將會被應用,及簡化內核的更新。我們建議你先從 RPMforge 或 EPEL 安裝 DKMS,然後才安裝 VirtualBox。請不要忘記設定 yum-priorities 插件。視乎套件的來源,安裝 DKMS 或許會引入它所依賴的開發用套件。

yum --enablerepo rpmforge install dkms

如果你不採用 DKMS,客端附加程式必須在每次內核更新後重裝。

要是你仍未安裝開發環境及內核源代碼:

yum groupinstall "Development Tools"
yum install kernel-devel

你亦可選擇安裝個別的開發套件(除了 kernel-devel 外,至少需要 gcc 及 make),而不運用 groupinstall 這個被某些人視為殺雞用牛刀的方法。如果你在 CentOS-5 上採用 PAE 內核,請以 kernel-PAE-devel 替代 kernel-devel。要是你並非採用標準的 CentOS 內核,你必須從該內核的來源地取得及安裝它的源代碼。切勿嘗試在客端操作系統上安裝 Xen 內核,或執行 KVM 或其它虛擬化監督器。

從 VM 的 Devices 選單選取 Install Guest Additions...。要是圖像介面在執行中,客端附加程式的虛擬 CD 映像將會自動被掛載 —— 譬如在 CentOS-6 的 KDE 環境,它會被掛載於 /media/VBOXADDITIONS_4.1.8_75467。要是圖像介面的自動播放功能已開啟,它或許會透過視窗詢問你應否讓程式自動執行,及取得 root 的權限。採用全部預設值後,安裝便會完成。

要是圖像介面不存在,或者欠缺 autorun,請以 root 身份(視乎需要)把它掛載在 /dev/cdrom 並 cd 至掛載點。輸入 ./VBoxLinuxAdditions.run 來進行安裝。

CentOS 6.2 針對 VBOXADDITIONS_4.1.8 的修正

CentOS 6.2 內有一個錯誤導致 3D 客端驅動程式無法正確地被建立。有位論壇用戶提供了修正檔及連結至收錄了更多資料的 VB 論壇討論議題

請按上述步驟掛載客端附加程式的 ISO,但不要執行安裝程式。把以下的修正剪貼至一個檔案內,例如 el6.patch

--- vboxvideo_drm.c_orig        2011-12-19 08:05:26.000000000 -0500
+++ vboxvideo_drm.c     2012-01-03 15:04:11.181357021 -0500
@@ -112,7 +112,7 @@
         .poll = drm_poll,
         .fasync = drm_fasync,
     },
-#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39)
+#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39) && !defined(DRM_RHEL61)
     .pci_driver =
     {
         .name = DRIVER_NAME,
@@ -127,7 +127,7 @@
     .patchlevel = DRIVER_PATCHLEVEL,
 };
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 39)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 39) || defined(DRM_RHEL61)
 static struct pci_driver pci_driver =
 {
     .name = DRIVER_NAME,
@@ -137,7 +137,7 @@
 
 static int __init vboxvideo_init(void)
 {
-#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39)
+#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39) && !defined(DRM_RHEL61)
     return drm_init(&driver);
 #else
     return drm_pci_init(&driver, &pci_driver);
@@ -146,7 +146,7 @@
 
 static void __exit vboxvideo_exit(void)
 {
-#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39)
+#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 39) && !defined(DRM_RHEL61)
     drm_exit(&driver);
 #else
     drm_pci_exit(&driver, &pci_driver);

請執行以下步驟。這是 x86_64(又名為 amd64)的範例。

cd /media/VBOXADDITIONS_4.1.8_75467/
./VBoxLinuxAdditions.run --noexec --target ~/TMP/
cd ~/TMP/
mkdir ../TMP2
tar jxvf VBoxGuestAdditions-amd64.tar.bz2 -C ../TMP2/
cd ../TMP2/src/vboxguest-4.1.8/vboxvideo/
cat > el6.patch # copy/paste patch code above - end with <Ctrl-D>
patch -p0 < el6.patch
cd ~/TMP2/
tar jcvf ../TMP/VBoxGuestAdditions-amd64.tar.bz2 *
cd ~/TMP
./install.sh

針對 i386,請在上述步驟以 x86 替代 amd64


這頁的英文版本由 PhilSchaffner 建立及維護。歡迎其他 Wiki 用戶作出更正、添加、或修改。

Translation of revision 6

zh-tw/HowTos/Virtualization/VirtualBox/CentOSguest (last edited 2012-01-19 16:15:37 by TimothyLee)