Chinaunix首页 | 论坛 | 博客
  • 博客访问: 594019
  • 博文数量: 99
  • 博客积分: 5128
  • 博客等级: 大校
  • 技术积分: 1538
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-27 19:40
文章分类

全部博文(99)

文章存档

2012年(3)

2011年(5)

2010年(4)

2009年(31)

2008年(56)

分类: LINUX

2011-02-28 10:59:11

本来以为VirtualBox安装挺简单的,不需要涉及内核的,后来发现安装这东东的时候还需要编译驱动,需要内核树,
因为 Fedora14安装的时候默认是没有安装源代码的,所以悲剧的折腾来好几天。主要是内核树版本问题引起的,
下面记录完整的处理过程。

我的机器以及linux版本
fedora 14 - 2.6.35.6-45.fc14.i686
AMD Althon X2 250
2G DDR

以下一些关于包管理 rpm yum 等,可以参考我之前到文章《fedora 14 从源代码编译安装软件》以及一些参考书
http://blogold.chinaunix.net/u1/52089/showart.php?id=2511658


1)用root来工作,因为部分命令是需要root权限的,也可以用sudo,也可以具体按照自己的需要处理吧。反正提示
permision deny 的话就表示权限不够需要用root了。
su root

2)下载 rpm 包和签名文件
到 virtualbox 到首页

其中选择 Fedora 14 ("Laughlin") i386 ,因为我安装到是 32位linux,兼容性好点。


下载签名文件 oracle_vbox.asc


3)安装签名
rpm --import oracle_vbox.asc

4)Virtualbox依赖于 dkms ,于是安装
yum install dkms.noarch

安装 virtual box ,进入刚下载的文件所在目录
rpm -ivh VirtualBox-4.0-4.0.4_70112_fedora14-1.i686.rpm

5)构建内核树

到这个时候,在 Application -> system tool 下面可以看到 virtual box 的图标,可以运行。
但是当你启动虚拟机的时候其实还是报错的,根据提示运行
/etc/init.d/vboxdrv setup

提示出错信息如下,分析原因,因为这是驱动,驱动编译的时候需要内核树,这个涉及到Linux驱动程序开发
方面的问题,可以不深入研究,以下阐述解决办法。

[root@Hikari Downloads]# /etc/init.d/vboxdrv setup
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Trying to register the VirtualBox kernel modules using DKMS
Error! Your kernel source for kernel 2.6.35.6-45.fc14.i686 cannot be found at
/lib/modules/2.6.35.6-45.fc14.i686/build or /lib/modules/2.6.35.6-45.fc14.i686/source.
                                                           [FAILED]
  (Failed, trying without DKMS)
Recompiling VirtualBox kernel modules                      [FAILED]
  (Look at /var/log/vbox-install.log to find out what went wrong)


于是提示找不到 linux到kernel,由于默认安装到时候没有源代码,所以先搞定源代码,否则罢工。

确认好系统到版本,例如当前运行的系统的版本号是:
uname -r
2.6.35.6-45.fc14.i686

那么要找到是 2.6.35.6-45.fc14.i686 ,于是到 fedora 到官方目录,例如 14 的是


下载这个文件
kernel-2.6.35.6-45.fc14.src.rpm   

如果你之前试过从源代码安装软件,那么可以跳过这一步,否则要建立一个编译的目录。
在用户根目录,例如我的是 /home/Etual/ 运行命令建立相关目录
cd ~
rpmdev-setuptree

然后处理一下依赖关系,否则编译过程中会有一堆依赖错误的
yum-builddep  kernel-2.6.35.6-45.fc14.src.rpm

接着是安装
rpm -Uvh kernel-2.6.35.6-45.fc14.src.rpm
提示缺少用户,可以不管他,或者自己创建一个用户就行来,默认用root来取代

接着进入刚才建立到 rpmbuild 目录下的 SPECS 子目录,其中参数 -bp 的意思是将 .src.rpm 包解压缩
到 /rpmbuild/SOURCE 目录,然后打补丁,target 是指定平台
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec

然后源代码树就已经放在rpmbuild 的 BUILD 目录下面了,例如我的是
/home/Etual/rpmbuild/BUILD/kernel-2.6.35.fc14/linux-2.6.35.i686

然后是配置内核,方法是生成 .config 配置文件,可以直接使用当前系统的配置,在/boot目录下
cd ~/rpmbuild/BUILD/kernel-2.6.35.fc14/linux-2.6.35.i686
cp /boot/config-2.6.35.6-45.fc14.i686 .config

然后运行 menuconfig 进入图形化配置,目前没有具体研究内核配置,所以不做修改。
make menuconfig
如果之前没有运行过 menuconfig 的话会提示缺库,那么安装 ncurses 就行了
yum install ncurses

修改 Makefile ,注意这步很重要,必须要做,否则之后到驱动运行的时候提示版本不对。
vim Makefile 运行 vim 来编辑 Makefile,当然可以使用 gedit 来编辑,方便一点
找到这个: 其实就在前几行而已
EXTRAVERSION = xxx
修改为当前到版本修改为和当前版本符合的:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 35
EXTRAVERSION = .6-45.fc14.i686

接着是编译内核和编译模块,因为之前已经解决来依赖问题,所以这步基本不会有其他问题的
make bzImage
make modules
make modules_install

那么在系统模块目录 /lib/modules/ 应该有刚安装了的模块
2.6.35.6-45.fc14.i686 这个目录就是模块所在目录
这个目录下到 build 目录就是需要指向源代码树的,要确认一下build是链接文件,确认指向是正确的
例如我的指向是:
/home/Etual/rpmbuild/BUILD/kernel-2.6.35.fc14/linux-2.6.35.i686
如果不对的话其实可以手动建立链接
rm build
ln -s /home/Etual/rpmbuild/BUILD/kernel-2.6.35.fc14/linux-2.6.35.i686 build

一切准备就绪来,重新编译 virtualbox 的内核驱动模块,可以按照提示的命令

[Etual@Hikari 2.6.35.6-45.fc14.i686]$ sudo /etc/init.d/vboxdrv setup
[sudo] password for Etual:
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Trying to register the VirtualBox kernel modules using DKMS[  OK  ]
Starting VirtualBox kernel modules                         [  OK  ]

可以看到提示,一切都 OK 了,这个时候就可以运行 virtualbox 了!

Etual
2011-2-28
阅读(2187) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-07-12 23:06:48

楼主很专业 学习了

chinaunix网友2011-05-23 09:43:56

有必要这么麻烦吗? 看到楼主的解决办法直接无语。

chinaunix网友2011-03-06 17:40:49

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2011-03-06 17:40:32

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com