第一步:去官方下载最新的内核源码包
官方网址:
www.kernel.org
当前最新版本:
2.6.31
,下载网址:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
您可使用
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
下载
第二步:解压源码包
(
这里有些人说要将源码解压到
/usr/src
目录下,实际上是不正确的,你能够解
压到任何目录
)
cd ~
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
tar -jxvf linux-2.6.31.tar.bz2
第三步:配置选项
cd linux-2.6.31
cp /boot/config-`uname -r` .config
make mrproper (
删除上次编译产生的垃圾,初次编译不须要
)
make menuconfig (
启动内核选项配置界面
)
说明一下
,make menuconfig
会寻找
linux-2.6.31
目录下的
.config
配置文件,若是找不到,则使用与
CPU
相关的
config
文件做为默认的配置。固然,咱们也能够拷贝当前系统的配置做为对照,如
cp /boot/config-`uname -r` .config (.config
是隐藏文件
ls -a
查看
)
注意:若是是同版本的内核编译,还须要备份下当前模块
cd /lib/modules
mv 2.6.31 2.6.31_old
指定内核识别码
vim Makefile
EXTRAVERSION = .custom-1 (
第
4
行
)
第四步
(1)
:传统方式编译
make all (2.6
之前版本须要手工运行以下命令
)
(
# make dep
<==
创建相依的属性关系!
# make clean
<==
将旧的资料去除掉!
# make bzImage
<==
开始编译核心!这个核心是通过压缩的
(30
分钟左右
)
# make modules
<==
开始编译模块!这个动做视您刚刚编译的模块数量!
(1
小时左右)
)
make modules_install (
安装模块到
/lib/modules/2.6.31)
make install (
系统将会把
vmlinuz
和
System.map
复制到
/boot
目录下同时修改
grub /boot/grub/menu.lst
,
2.6
之前版本须要手动拷贝
vmlinuz
和
System.map)
第四步
(2)
:
RPM
方式编译,会产生
RPM
包,方便提供给别人使用
make rpm
编译完成以后,在
~/rpmbuild /SRPMS/
目录发现一个新的
src.rpm
包
,
好比
. SRPMS/kernel-2.6.31.custom-1.src.rpm,
内核
rpm
包位于
~/rpmbuild/RPMS/i386/ (
或
RPMS/i586/, RPMS/i686/,
等
.
看你的平台类型
).
好比
. RPMS/i386/kernel-2.6.31.custom-1.i386.rpm.
能够看到内核识别码已添加到软件包的名字中
.
安装新内核
如今去新的
rpm
内核包存在的目录
(
基于你的平台类型
,
好比
. ~/rpmbuild/RPMS/i386/)
安装
rpm
包
cd ~/rpmbuild/RPMS/i386
rpm -ivh kernel-2.6.31.custom-1.i386.rpm
(
如今你甚至可以拷贝到其它的
Fedora
系统
,
经过上面的方式安装
.
你将再也不须要编译内核
.)
接下来咱们为新内核建立一个
ramdisk,
不然系统将不能引导新内核
:
mkinitrd /boot/initrd-2.6.31.custom-1.img 2.6.31.custom-1
而后编辑
/boot/grub/menu.lst
文件
,
看一下你系统上已经存在
(
正在工做的
)
引导内核信息
,
拷贝其中的一个实例
,
替换为你新的内核和
ramdisk:
vim /boot/grub/menu.lst
好比
,
个人
menu.lst,
在我添加新的内核信息前的状况
:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img
修改后的状况
:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-custom-2.6.18.2)
root (hd0,0)
kernel /vmlinuz-2.6.18-custom-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-custom-2.6.18.2.img
title Fedora Core (2.6.31.custom-1)
root (hd0,0)
kernel /vmlinuz-2.6.31.custom-1 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.31.custom-1.img
(
你能够经过下面命令发现正确的
vmlinuz
和
initrd
文件
:
ls -l /boot
)
第五步:重启系统,在
Grub
引导菜单中,选择
linux-2.6.31.custom-1
。
Reboot
,重启以后,大功告成,你的新内核已经安装好了。