技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> [Linux]编译一个 RHEL 定制的内核 rpm 包

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

浏览:2836次  出处信息

普通的编译内核我想大家可能常常玩.但如果要大量的应用,还有下次备用的话,打成 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 中生成新的的配置,检查一下.然后重起.

建议继续学习:

  1. linux内核研究笔记(一)内存管理 – page介绍    (阅读:8763)
  2. PHP内核介绍及扩展开发指南―Extensions 的编写    (阅读:4734)
  3. 如何解压rpm文件    (阅读:4022)
  4. rpm删除出现”error: %preun( ) scriptlet failed, exit status 1解决方法    (阅读:3771)
  5. 我的内核配置文件    (阅读:3783)
  6. Linux内核协议栈对于timewait状态的处理    (阅读:3812)
  7. PHP内核介绍及扩展开发指南―高级主题    (阅读:3682)
  8. PHP内核介绍及扩展开发指南―基础知识    (阅读:3473)
  9. 在 Dell PowerEdge 1950 上安装 Linux 2.6.32-rc8 内核的问题与解决    (阅读:3087)
  10. 在Ubuntu上使用SystemTap    (阅读:3076)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1