Fedora15 内核编译安装手记
摘要----
初学linux内核编程,硬盘安装了Fedora15,找了两本教程想一步步的照葫芦画瓢编译内核,结果发现内容太旧,不是介绍2.4内核环境下编译2.6内核,就是基于ARM平台的,看的一头雾水。网上找了两篇介绍ferdora12的内核编译方法的文章以及内核源码树的README文件成功编译并安装。在此记录整个过程,供和我一样的初学者参考。
正文----
对于学习linux内核编程来说,一个标准的内核源码树以及基于此内核的系统是必备的。对于Fedora15这样的发行版本,其内核源码是经过特殊修补的,不利于学习。因此尝试将Fedora15的内核:2.6.38.6-26.rc1.fc15.i686 替换为标准版内核2.6.38.8。
1.下载内核源码
Fedora15 安装后有两个内核版本,一个是 2.6.40.6-26.rc1.fc15.i686,这个2.6.40版本据说是Fedora15专用版本,在kernel.org上找不到该版本,另一个版本是2.6.38.6-26.rc1.fc15.i686 ,为了尽量避免兼容问题,我选择kernel.org的2.6.38.8版本替换2.6.38.6-26.rc1.fc15.i686。
下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.bz2
2.安装源码
解压源码包到/usr/src目录下(也可以解压到其他目录)
在压缩包所在目录以root权限执行以下命令:
tar -jxvf linux-2.6.38.tar.bz2 -C /usr/src
网上有文章指出在编译安装内核后,出现由于该内核没有权限导致而启动失败的情况,需要手动赋予该内核文件权限。而我并没有遇到这个问题,我猜测出现没有权限问题可能与解压目录以及某些操作未使用root账户操作所致。为避免这些麻烦,建议大家登录root账户再执行所有操作,同时将内核源码解压到/usr/src 目录下。
3.配置内核选项
内核源码包解压后生成 “/usr/src/linux-2.6.38.8/” 目录,这里就是内核源码了。
进入这个目录:
cd /usr/src/linux-2.6.38.8
将当前系统的内核配置文件COPY到当前目录下,对于初学者而言,Fedora15的内核配置文件可以省去很多麻烦
2.6.38.6-26.rc1.fc15.i686cp /boot/config-
.config
上面的命令是将当前运行内核的配置文件
2.6.38.6-26.rc1.fc15.i686config-
cd /usr/src/linux-2.6.38.8,并更名为 .config 复制到当前目录
接下来执行这个配置文件,根据内核README文档,可以采用make oldconfig命令,出现选择时能选y的就选y,没有Y的就选m
make mrproper (删除上次编译产生的垃圾,初次编译不需要)
make oldconfig
注意:尝试过 make menuconfig 出现未按装某库的错误,解决方法:安装缺失库:yum install xxxx (xxxx为提示的库名)
指定内核识别码,修改Makefile文件的EXTRAVERSION
vi Makefile
EXTRAVERSION = .custom-1 (第4行)
4.编译内核
make -j2
直接make也可以,但是速度太慢(大约1个半小时),-j2是make命令的选项,如果你的电脑是双核处理器,你可以用make -j2 加速编译
5.安装模块。安装模块到/lib/modules/
sudo make modules_install
6.安装内核。把make 生成的vmlinuz和System.map复制到/boot目录下同时修改grub /boot/grub/menu.lst.执行下面的命令就可自动完成上述操作。 sudo make install
7.重启,大功告成
由于时间仓促,可能过程描述的不够细致,本次实验成功主要是参阅了以下文章,给出链接:
http://www.cnblogs.com/wishmiss/archive/2010/09/21/1832821.html
http://tech.it168.com/a2009/1204/819/000000819629.shtml
源码自带的README(个人感觉这个README写的不够细致,但还是可以看看的)