免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3770 | 回复: 1
打印 上一主题 下一主题

Linux内核裁剪方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-18 23:37 |只看该作者 |倒序浏览
Linux内核裁剪
Write by hzh
                 Data:2010-01-18
Linux内核裁剪方法
系统平台:CentOS 5.4

编译过程如下:
1. 到官方网站下载kernel,linux-2.6.18.tar.bz2
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2

2. 将文件放在/home/kernel/目录下,并解压得到linux-2.6.18.10,进入该目录开始

3. 编辑Makefile文件,修改“EXTRAVERSION = -1.i386”
-1.i386是内核的扩展名称,最后生成内核的名称为:2.6.18-1.i386,这个名字可以任意定

4. 配置内核
拷贝原来系统正常使用的.config做为我们的配置文件。
#cp /boot/config-2.6.18.8  /home/kernel/linux-2.6.18/.config
#make menuconfig
不对内核配置做修改直接退出,这里只是说明内核移植的方法。实际中,根据自己的项目在这一步配置更改自己的内核文件,裁剪出适合自己的内核文件。

5. 编译内核
#make

6. 编译内核模块
#make modules

7. 安装内核模块
#make modules_install
这时,在/lib/modules下会产生一个目录为,名称为内核版本+EXTRAVERSION。我的是:2.6.18-1.i386

8.安装内核
#make install
执行了这一步就不需要在执行第9、10、11、12项了,后面项是手动制作内核映像和启动文件。

注:如果确定内核的.config配置不会出错,可以将5-8项合并为一起编译:
make && make modules && make modules_install && make modules_install && make install && reboot

9. 拷贝bzImage文件到/boot目录
cp /usr/src/linux-2.6.18.10/arch/x86_64/boot/bzImage  /boot/vmlinuz-2.6.18-1.i386
注意:内核类型根据自己需求选择,因为内存为16GB,我选择arch/x86_64下的bzImage文件

10. 拷贝System.map文件到/boot目录
cp System.map  /boot/System.map-2.6.18-1.i386
添加软链接
# ln -s System.map-2.6.18-1.i386  System.map
11. 创建.img文件
mkinitrd /boot/initrd-2.6.18-1.i386.img  2.6.18-1.i386
其中第二个参数2.6.18-1.i386与/lib/modules目录名称一致

如果出错:
[root@localhost boot]# mkinitrd  /boot/initrd-2.6.18-1.i386.img 2.6.18-1.i386
No module ata_piix found for kernel 2.6.18-1.i386, aborting. //是由于 /etc/modprobe.conf 里设置了但 kernel module 没有编译(没有选择让其编译成模块)而导致
指定mkinitrd --builtin=ata_piix编译。参考:http://linux.chinaunix.net/bbs/thread-894933-1-1.html
[root@localhost boot]#  mkinitrd --builtin=ata_piix /boot/initrd-2.6.18-1.i386.img  2.6.18-1.i386
[root@localhost boot]
如果还是不行用下面这条命令试一下:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18-1.i386


12. 添加grub文件条目
#vim /boot/grub/grub.conf
添加如下几行:
title CentOS (2.6.18-1.i386)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-1.i386 root=/dev/VolGroup00/LogVol00 rhgb quie    t
    initrd /initrd-2.6.18-1.i386.img
其中/dev/VolGroup00/LogVol00根据自己情况配置,我使用的双硬盘,建立在LVM基础上

13. 重启系统
一定要保证kernel和initrd指定的文件名称无误,否则就要要跑到机房去重启机器了~
#reboot
重启之后通过一下命令查看内核版本:
#uname -r
若显示2.6.18-1.i386则新内核启动成功



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109487/showart_2152497.html

论坛徽章:
0
2 [报告]
发表于 2013-03-20 11:33 |只看该作者
回复 1# haozhui


     需要一本,内核裁剪的书。求推荐。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP