Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3404047
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2008-09-04 16:27:51

=================================
概述
本攻略详细讲述了如何在Fedora Core 4的环境下编译内核。
其中需要注意的是,在进行以下操作前请做好备份。

提示:
完成这些操作你可能需要有大约350-400MB的空闲空间。
具体时间视你的机器速度和编译配置而定.
所有操作需要在root身份登录下完成

0.备份重要文件
备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。
备份内核和启动文件
# cd /
# tar cvzf boot.tar.gz boot

备份系统函数头文件
# cd /usr/include
# tar cvzf linux.tar.gz linux

备份模块中的库文件
# cd /lib/modules
# tar cvzf 2.6.11-1.1369_FC4.tar.gz 2.6.11-1.1369_FC4

备份linux源码(如果有的话)
# cd /usr/src
# tar cvzf linux-2.x.x-x.tar.gz linux-2.x.x-x

备份重要配置目录
# cd /
# tar cvzf etc.tar.gz etc

1.准备工作
为了备份现有kernel源代码并获得目前的配置文件,我们需要把Fedora Core 4 kernel源代码安装到我们的机器上.
用root登录
找出源码盘第4张,找到kernel-2.6.11-1.1369_FC4.src.rpm并复制到 /usr/src/下.
[root@Tony src]# uname -r
2.6.11-1.1369_FC4
[root@Tony src]# rpm -ivh kernel-2.6.11-1.1369_FC4.src.rpm
   1:kernel                 ########################################### [100%]
[root@Tony src]# rpmbuild -bp --target=noarch  /usr/src/redhat/SPECS/kernel-2.6.spec
这样原代码就放在 /usr/src/redhat/BUILD/kernel-2.6.11/

做以上操作的目的是得到原.config 文件,作为重新编译内核的配置基础.

2.下载新内核
假设你想重新编译基于2.6.15.1的内核(目前最新的稳定版本)
从下载,注意要下载full版本不要path版本
大小约为39M
拷贝到 /usr/src/下(以linux-2.6.15.1.tar.bz2为例)
[root@Tony src]# tar -jxvf linux-2.6.15.1.tar.bz2
[root@Tony src]# cd linux-2.6.15.1
如需要打path执行
[root@Tony linux-2.6.15.1]# patch -p0 < kernel.patch
如需要清除之前的编译信息
[root@Tony linux-2.6.15.1]# make mrproper

3.建立软联接linux
[root@Tony src]# ln -s linux-2.6.15.1 linux

4.获得初始.config文件
.config文件包含了你所编译的内核的所有的特定配置。你必须有一个可以开始配置的.config文件,否则,这将会使对不同的选项进行正确的设定变得非常的困难。
可以使用在先前在fedora的kernel.src.rpm中的.config文件,它将成为你自定义内核的起点。
[root@Tony src]# ls /usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11/configs/
看到如下显示:
kernel-2.6.11-i586.config       kernel-2.6.11-ppc64iseries.config
kernel-2.6.11-i686.config       kernel-2.6.11-ppc.config
kernel-2.6.11-i686-smp.config   kernel-2.6.11-ppc-smp.config
kernel-2.6.11-i686-xen0.config  kernel-2.6.11-s390.config
kernel-2.6.11-i686-xenU.config  kernel-2.6.11-s390x.config
kernel-2.6.11-ia64.config       kernel-2.6.11-x86_64.config
kernel-2.6.11-ppc64.config      kernel-2.6.11-x86_64-smp.config
[root@Tony src]#  uname -m
显示:
i686
[root@Tony src]# cd /usr/src/linux
[root@Tony linux]# cp /usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11/configs/kernel-2.6.11-i686.config .config

5.(可选)修改自己编译内核的版本名
打开 /usr/src/linux/Makefile
看到:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 15
EXTRAVERSION = .1
NAME=Sliding Snow Leopard

可修改为(例子)
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 15
EXTRAVERSION = 1.tony.FC4
NAME=Sliding Snow Leopard
这样新内核将被命名为2.6.151.tony.FC4


6.配置内核
可使用的命令包括:
text based questions:   make config
text based GUI:         make menuconfig
GTK based GUI:          make gconfig
QT based GUI:           make xconfig    (推荐)
注意:要运行make xconfig,你必须安装有qt-devel的RPM包。
禁用或启用任何你不想要或者你想要的特征.当你对你不熟悉的选项作出改变的时候,你一定要“非常小心”.如果你不知道你修改的时什么,请保持其默认值.
保存.config文件.

7.编译和安装
[root@Tony src]# cd linux
[root@Tony linux]# make all
如果这样没有用,请重新检查错误,试着在上面的配置步骤中禁用一些惹麻烦的模块.如果一切顺利,你就可以安装了.
如果配置的可加载模块,你需要执行
[root@Tony linux]#  make modules_install
最后
[root@Tony linux]# make install

8. 用新kernel引导系统
顺利完成以上步骤后我们可以执行
[root@Tony src]# ls /boot/
看到显示:
config-2.6.11-1.1369_FC4      System.map
grub                          System.map-2.6.11-1.1369_FC4
initrd-2.6.11-1.1369_FC4.img  System.map-2.6.151.tony.FC4
initrd-2.6.151.tony.FC4.img   vmlinuz
lost+found                    vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1             vmlinuz-2.6.151.tony.FC4
其中System.map-2.6.151.tony.FC4和vmlinuz-2.6.151.tony.FC4就是新内核启动文件和bzImage文件的映射.
另外你还可以查看/boot/grub/grub.conf
看到在引导列表中新增加了如下几行:
title Fedora Core (2.6.15.1.tony.FC4)
        root (hd0,6)
        kernel /vmlinuz-2.6.151.tony.FC4 ro root="LABEL"=/ rhgb quiet
        initrd /initrd-2.6.151.tony.FC4.img

如果有多系统引导(如默认为windows)的情况.你可以根据实际情况修改default的值.
例外我的windows为默认系统,现在排在第3个

default=2
存盘退出

阅读(893) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~