目录:
一、内核编译
二、根文件系统定制
三、内核选项说明
一、内核编译
1、 准备工作
(1) 整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。
(2) 建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。
(3) 下载并解压linux内核,建议从 下载内核,因为安装系统时所安装的源代码默认情况下支持很多设备,这样给内核裁减增加了难度。以下假设你已经下载了内核的为linux-x-y-z.tar.gz。一般都将linux内核源代码放在/usr/src下,这里仍然遵守这个习惯,如果你的这个路径下已经存在这个版本的内核,建议将已有的改个名称。
2、 开始编译
(1) make mrproper
确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作
(2) make menuconfig
以文本菜单方式选择内核选项(与它功能相同的命令还有make config;make xconfig;make oldconfig),不同版本的内核,选项可能会有一些差异。
这一步是内核编译的关键,根据需要支持的硬件、文件系统和协议等内容,选择不同的选项。配置选项时,有三种选择方式,它们代表的含义如下:
Y-将该功能编译进内核
N-不添加功能
M-将该功能编译成模块,在需要时动态加载到内核
选择的原则是与内核关心紧密而且经常使用的部分功能代码直接编译到内核中;将与内核系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选。
我们使用空格键进行选取。根据选项的不同,按下空格键的结果也有所不同:选项后有”―――>”符号的,进入下一级菜单;选项前有中括号的,则在空和"*"之间切换;选项前有尖括号的,在空、"*"和"M"之间切换;选项前有圆括号的,需要在所提供的几个选项中选择一项,或者需要输入数值等符号。
咦,什么?要我详细介绍具体该怎么选择这些选项?大汗!这可是个大问题,需要根据不同的需求进行选择,比如需要支持USB键盘、鼠标或/和存储器,支持多CPU,支持网卡,串口,支持TCP协议,ext2文件系统,nfs文件系统等等。后面我将就内核选项做详细的介绍。
(3) make dep
根据上一步所选择的选项,建立文件的依赖关系。
(4) make clean
清理一些不必要的文件,如果你在上次编译的基础上,删去了一些选项,建议你执行这一步操作,否则,就没有必要了。
(5) make bzImage
生成内核压缩文件。如果你确认你的内核在640K以下,你可以用make zImage来代替 make bzImage。这一步相当费时,你可以在命令后加上&,让其在后台执行,或者重定向到/dev/null中,这样你就什么也看不见屏幕上闪过不停的字符啦。编译出的内核在 ./arch/i386/boot/ 下,文件名为bzImage
(6) copy "/usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-x.y.z
(7) make modules
编译可加载模块(即内核选项中选择为M的选项),编译时间跟M选项的数量有关。
(8) make modules_inatall
将编译好的modules拷贝到/lib/modules下,这就是为什么在“准备工作”的第三步提醒你备份的原因了。
(9) cp /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
题外:
1、 现在才发现,自己理解了和把理解的东西写出来,还是有区别的,以后还得勤奋点,多写写。
2、 其实这些东西,在google可以搜一大堆,我只是根据自己的理解,将其最本质的东西整理出来,方便查阅。
3、 写本篇的目的在于前段时间做内核裁减,一直想做个结,上星期一来劲,就把题目列了出来,没有骗人或者打免费广告的意思,剩余内容也将在以后抽空陆续贴出。
4、 感谢你关注本站,希望你能留下意见和建议,但请不要用转头拍我,要拍就用RMB好啦, :--)。