编译一个 RHEL 定制的内核 rpm 包

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2010/03/14/compiling-custom-kernel-rhel-centos.html

普通的编译内核我想大家可能常常玩.但如果要大量的应用,还有下次备用的话,打成 rpm 包还是会方便很多.
在07年就写过一个内核编译笔记,http://www.php-oa.com/2007/10/17/linux-make.html,但基本没有认真写什么,就记了一下如下.
下面我们来个实际点的.真实编译,我现在是给 RHEL4 或者 RHEL5 的默认 2.6.9 升级到 2.6.24 来做操作.这次主要是做怎么做内核的 rpm 包.

准备 RHEL 中 Linux 内核编译环境

1. 可以到 kernel 的网站下载最新的内核,目前我用的是2.6.24,我30也用过一下,现在最新的好象到了 2.6.33 .下载tar包以后解压到/usr/src/中

wget http: //www .kernel.org /pub/linux/kernel/v2 .6 /linux-2 .6.24.5. tar .bz2
tar jxvf linux-2.6.24.5. tar .bz2 -C /usr/src

2. 先建个软链到 Linux 的目录

?
ln -sf /root/kernel/linux-2 .6.24.5 linux
cd /usr/src/linux

 

开始 RHEL 中 Linux 编译

1. 安装编译前需要的编译环境

?
yum install  gcc make  bison ncurses-devel rpm-build

2. 开始 Centos RedHat 系统的内核编译,先清掉以前的编译的内容,注意.config也会清掉

?
make mrproper
cp /boot/config- ` uname -r` .config

3. 然后拿现在的内核配置的基础上在编译(建议这个,很我必须的硬件支持之类都有了).当然,可以先make oldconfig后在自己选择自己要和不要的内容.我喜欢在 Ubuntu 中编译,所以我常用make xconfig来配置,图形界面也很好配置.

?
make oldconfig
make menuconfig  #或者如果有xwindows时,用make xconfig

4. 加入自己喜欢的名字,到 Linux 内核中.(这步可以不做^v^)
在menuconfig时,有个选项
General setup  —>Select Local version – append to kernel release
我加了一个fukai,呵呵,到时编译出来名字会变成 kernel-2.6.24.5fukai-1.i386.rpm

编译和安装 Linux 内核

1. 好了可以开始编译安装了,make -j 是加速编译的,好象会并发的跑.下面一步是做三样事,在shell中&&的意思可以理解为,只要前面一个任务返回是正常,就运行后面的命令.

?
make -j 8 && make modules_install && make install

2. 如果你想要rpm包,就用make rpm.记的rpm包在安装是使用i的命令来安装,不要用U来升级,不然老的内核就没了,得给自己多一次机会

?
make rpm
rpm -ivh  /usr/src/redhat/RPMS/i386/kernel-2 .6.24.5fukai-1.i386.rpm

 

为 Redhat Centos 系统中的新内核建立 initrd 文件.

initrd 的作用和技巧我在下一个文章中写.哈哈
如果是 rpm 包安装的话,需要自己建 initrd 文件,如果是make 在make modules_install …. 的方法安装.就会自动生成 initrd 的文件.如果是 rpm 包的话,就需要自己来生成.
象我,喜欢修改 spec 的文件,来打包 rpm,这样 rpm 安装完自动做下面的步骤.

 查找模块的依赖关系,这步可以不做.

?
depmod kernel-2.6.24.5fukai

安装做 initrd 文件,我们使用的是 mkinitrd 命令,注意 Ubuntu 中没有这个命令用的别的命令

?
mkinitrd - v  /boot/initrd-2 .6.24.5fukai-.img 2.6.24.5-fukai

这一步其实非常有技巧的,很多人的内核起不起来,启动时提示,都是因为这个部分有问题.我下一个文件讲讲这个部分.关注www.php-oa.com吧.哈哈

为 Redhat Centos 系统中的新内核修改 Grub.conf 文件

我们对原来的 grub 备份一下,然后使用 grubby 的命令来修改 Grub 的文件. 这些也可以做成 rpm  中去,就不要自己来运行了.

?
cp /boot/grub/grub .conf /boot/grub/grub .conf.pre-2.6.24.bak
grubby --add-kernel= /boot/vmlinux-2 .6.24.5 \
                 --title= "Linux Kernel 2.6.24 By Fukai" \
                 --copy-default  -- make -default \
                 --initrd= /boot/initrd-2 .6.24.5.img \

这样会在 /boot/grub/grup.conf 中生成新的的配置,检查一下.然后重起.

你可能感兴趣的:(职场,内核,编译,休闲)