Linux内核裁减

http://blog.sina.com.cn/s/blog_490168e50100dw9r.html

一、内核编译

1、准备工作

1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。

2)建议用命令unamer 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。

3)下载并解压linux内核,建议从http://www.kernel.org/pub/linux/kernel/ 下载内核,因为安装系统时所安装的源代码默认情况下支持很多设备,这样给内核裁减增加了难度。以下假设你已经下载了内核的为linux-x-y-z.tar.gz。一般都将linux内核源代码放在/usr/src下,这里仍然遵守这个习惯,如果你的这个路径下已经存在这个版本的内核,建议将已有的改个名称。

2、开始编译

1make mrproper

确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作

2make menuconfig

以文本菜单方式选择内核选项(与它功能相同的命令还有make configmake xconfigmake oldconfig),不同版本的内核,选项可能会有一些差异。这一步是内核编译的关键,根据需要支持的硬件、文件系统和协议等内容,选择不同的选项。配置选项时,有三种选择方式,它们代表的含义如下:

Y-将该功能编译进内核

N-不添加功能

M-将该功能编译成模块,在需要时动态加载到内核

选择的原则是与内核关心紧密而且经常使用的部分功能代码直接编译到内核中;将与内核系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选。

我们使用空格键进行选取。根据选项的不同,按下空格键的结果也有所不同:选项后有”―――>”符号的,进入下一级菜单;选项前有中括号的,则在空和"*"之间切换;选项前有尖括号的,在空、"*""M"之间切换;选项前有圆括号的,需要在所提供的几个选项中选择一项,或者需要输入数值等符号。咦,什么?要我详细介绍具体该怎么选择这些选项?大汗!这可是个大问题,需要根据不同的需求进行选择,比如需要支持USB键盘、鼠标或/和存储器,支持多CPU,支持网卡,串口,支持TCP协议,ext2文件系统,nfs文件系统等等。后面我将就内核选项做详细的介绍。

3make dep

根据上一步所选择的选项,建立文件的依赖关系。

4make clean

清理一些不必要的文件,如果你在上次编译的基础上,删去了一些选项,建议你执行这一步操作,否则,就没有必要了。

5make bzImage

生成内核压缩文件。如果你确认你的内核在640K以下,你可以用make zImage来代替 make bzImage。这一步相当费时,你可以在命令后加上&,让其在后台执行,或者重定向到/dev/null中,这样你就什么也看不见屏幕上闪过不停的字符啦。编译出的内核在 ./arch/i386/boot/ 下,文件名为bzImage

6copy "/usr/src/linux/arch/i386/boot/bzImage  /boot/vmlinuz-x.y.z

7make modules

编译可加载模块(即内核选项中选择为M的选项),编译时间跟M选项的数量有关。

8make modules_install

将编译好的modules拷贝到/lib/modules下,这就是为什么在“准备工作”的第三步提醒你备份的原因了。

9cp /usr/src/linux/System.map /boot/ System-x.y.z.map

3、修改启动配置文件

现在大多数使用的都是grub启动,需要修改/boot/grub/grub.conf,添加相应的启动信息,添加内容的最简单格式如下:

title 显示在启动菜单上的名称

root 根文件系统挂载分区

kernel 压缩过的内核文件名

initrd 根文件系统文件名

如:

title My new kernel

root (hd0,2)

kernel /boot/vmlinuz-x.y.z

initrd /boot/initrd-x.y.z.img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值