BabyLinux操作系统的制作过程讲解(3)


六、编译一个linux系统内核
1 编译前的规划和准备
在编译内核前,请先确定你的需求,把你的需求罗列成一张详细的表格。你需要让内核支持什么硬件,支持多少种分区类型和文件系统,支持哪些网卡,支持哪些网络协议。等等。请尽可能详细的罗列这些内容,但是你也不要太贪心,因为你所有能利用的空间只有1440K,如果你编译出一个大于1440K或很接近这个数字的内核,你的这个项目就不能完成了,你已经没有空间再放ramdisk映象文件,除非你原意再多出一张软盘,做一个两张软盘的小linux系统。对于声卡驱动之类,我劝你还是放弃吧,因为一个声卡驱动也许只让你的内核增大了十多K,但是你有了一个声卡驱动就务必要有一个播放器吧,否则声卡驱动就没有意义,可一个播放器的大小可不是一张软盘可以装得下的。在我先前制作的babylinux内核有900多K,其中,文件系统部分站了大部分,因为我的目标是把他做成一个系统修复盘。因此我在内核中编译7种文件系统的支持,每减少一个文件系统就可以减小几十甚至200多K的内核大小。越是复杂,越是安全的文件系统,其支持模块也越大,比如在linux下FAT模块只有32K,VFAT只有17K,但是ext3的模块就有86K,JFS达到216K,reiserfs模块是224K,可以想像,编译一个支持7个文件系统的900多K的内核,文件系统部分就占了600K以上的空间,所以如果某一个文件系统是你根本不用的,那么还是不要编译进内核把,这样至少可以省下100多K的空间。对于其他的驱动,比如网卡,通常大小只有8,9K,最大的也不过10多K,因此可以把常用的网卡芯片的驱动都编译进去。另外如果你想让你的babylinux支持U盘,那么scsi的驱动模块也是不可小看的,他通常要接近150K,因为U盘是被当做scsi设备来驱动的。另外你还需要让你的内核支持即插即用,这些都是不小的空间开销,我的建议是你放弃一两个你不用的文件系统。总之,你最后编译出来的内核大小最好不要超过900K,否则你在busybox里只能编译进去很少的命令。
在我编译的busybox中,我编译进去120多个命令,基本上把busybox支持的命令都包括进去了。加上小系统所必需的文件系统目录,/dev下的设备文件,以及/etc下几个必需的配置文件,做成ramdisk压缩后的大小是440多K, 加上900K左右的内核刚好可以放入一张1440K软盘,请注意,你应该留下至少50K的空间,因为我们要在软盘上创建一个ext2文件系统,而文件系统本生需要占据大概25K的磁盘空间。另外lilo的引导文件boot.b的大小是5。7K,还有装上lilo后自动产生的map文件也要10多K的空间,map文件的具体大小由内核安装的实际大小决定,通常不会超过30K。
综上所述,请遵循下面的公式:
内核大小+文件系统压缩印象文件+50K

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6aea3bbd69007b7e1283dfcc33c95c35.html