1.启动安装在 VirtualBox 中的 CentOS 5.5 虚拟机,点击“设备” => “安装增强功能”。这个时候你就可以看到有一个“光盘”已经挂载到 CentOS 5.5 的桌面上了。它包含了安装 VirtualBox 客户端增强功能的组件。 注意:通常情况下我们直接运行挂载到系统中的 VirtualBox 客户端增强功能的组件就可以了,不过 CentOS 需要配置一下,如果你直接安装就会出现下面的错误。 Bulding the VirtualBox Guest Additions Kernel modules failed Your system does not seem to be set up to build kernel modules. Look at /var/log/vboxadd-install.log to find out what went worg. Once you have corrected it,you run /etc/init.d/vboxadd setup to build them 2.你需要安装编译内核的相关组件。 yum install kernel-devel gcc 3.在安装完成后,做一个连接 ln -s /usr/src/kernels/2.6.18-398.el5-i686 /usr/src/linux 其中,加粗部分,可以直接借助于“Tab”键补齐 注意:一定要进行这此项操作,否则 VirtualBox 客户端增强功能在安装的过程中同样会报错。其中“2.6.18-398.el5-i686”是内核的版本号,不同的版本可能会不一样,你要根据你自己的系统内核填入。 上述所有在终端中的操作,都可以在任何位置的终端中执行,为保证安全,在执行时,所有的终端都直接使用“应用系统”--“附件”--“终端”,打开终端,定位至“root”。 由于之前已经执行了virtualbox的“设备”--“安装增强功能”,在桌面上有一个名称 为:VBOXADDITIONS_4.3.12_93733的virtualbox的虚拟光驱(名称可能会根据不同的virtualbox版本而不同),双 击打开,发现很多文件(在执行完上述操作之后,直接双击autorun.sh文件应该可以自动执行安装操作了)。 4.安装 VirtualBox 客户端增强功能工具。 sh ./VBoxLinuxAdditions.run 虚拟机会自动安装好增强功能,重启虚拟机,鼠标再也不用来回手工切换了! 5. 设置共享文件夹 重启完成在VirtualBox的菜单点击"设备(Devices)" -> 分配数据空间(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。尽量使用英文名称。我这里用winshare. 6. 挂载共享文件夹 重新进入虚拟CentOs5.5,在命令行终端下输入: #sudo mkdir /root/Desktop/winshare #sudo mount -t vboxsf winshare /root/Desktop/winshare 如果提示 /sbin/mount.vboxsf: mounting failed with the error: No such device 可能是没有载入内核模块 vboxfs ,先查看下: #lsmod | grep vboxsf 如果没有结果返回,说明 vboxsf没有载入,执行 #sudo modprobe vboxsf 正常的话mount -t vboxsf winshare /mnt/share共享文件夹应该可以访问了 #cd /mnt/share #ls -al 假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项 share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0 这样就能够自动挂载了。 本人这样做了,但是每次启动都挂接不上,因此使用以下方法,在系统启动时执行挂接脚本,成功自动挂接 #vi /etc/rc.d/rc.local 在文件的最后加入上面手动挂接的命令,比如: mount -t vboxsf sharefolder /share 7. 取消挂载 #sudo umount -f /mnt/shared 注意:共享文件夹的名称千万不要和挂载点的名称相 同(这一点我并未实验,不过也无必要)。比如,上面的挂载点是/mnt/share,如果共享文件夹的名字也是share的话,在挂载的时候就会出现如下 的错误信息(http://www.virtualbox.org/ticket/2265): /sbin/mount.vboxsf: mounting failed with the error: Protocol error 原因分析可以看Tips on running Sun Virtualbox的Shared Folder on a Linux Guest节。
运行.run文件会出现modprobe vboxguest failed错误。这是因为内核的版本不一致。
运行rpm -qa | grep kernel | sort 检查内核版本
如果kernel 和kernel-devel版本不一直。运行yum -y upgrade kernel kernel-devel
重启再次运行.run文件应该就可以了
修改/usr/src/kernels/2.6.23.1-42.fc8-i686/include/linux/utsrelease.h文件中的宏定义
#define UTS_RELEASE "2.6.23.1"
为
#define UTS_RELEASE "2.6.23.1-42.fc8"
然后重新编译xxx.ko模块,这时候,它与内核的版本信息应该就是一致的了!试验下来确实如此,xxx.ko已经可以正常工作了!
VBoxLinuxAdditions.run
$MODPROBE vboxguest >/dev/null 2>&1 || {
fail "modprobe vboxguest failed"
}
modprobe /lib/modules/2.6.18-398.el5xen/misc/vboxsf.ko
not found
Invalid module format错误
5. 执行sudo /etc/init.d/vboxdrv setup,可以看到编译顺利通过
4. 处理Xen环境问题
这次仔细看了一下报错,才发现最后一句提示是系统运行在Xen环境中,找了一下Virtualbox启动脚本,发现就是一个很简单的判断:
begin_msg "Starting VirtualBox kernel modules"
if [ -d /proc/xen ]; then
failure "Running VirtualBox in a Xen environment is not supported"
fi
用xm list看了一下果然是跑在这个环境里面了,virtualbox不能在xen里面安装。显然我自己没有在服务器上安装过Xen虚拟机,这其实就是内核启动的时候选择了Xen内核模式而已。用uname -ar就可以看到目前的内核。
[root@localhost ~]# uname -ar
Linux localhost.localdomain 2.6.18-238.el5xen #1 SMP Thu Jan 13 16:41:45 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
这个很容易搞定,修改启动选用的内核:
[root@localhost ~]# vim /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-238.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-238.el5
module /boot/vmlinuz-2.6.18-238.el5xen ro root=LABEL=/ rhgb quiet
module /boot/initrd-2.6.18-238.el5xen.img
title CentOS-base (2.6.18-238.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-238.el5.img
每个内核从0开始排序,可以看到这里把default改成1就可以选用普通内核。然后reboot重启。