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/HowTos/Virtualization/VirtualBox/CentOSguest (last edited 2012-01-19 16:16:08 by TimothyLee)