您的位置: 旅游网 > 网红

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

发布时间:2019-09-13 19:11:34

六、编译一个Linux系统内核 1 编译前的规划和准备 在编译内核前,请先确定你的需求,把你的需求罗列成一张详细的表格。你需要让内核支持什么硬件,支持多少种分区类型和文件系统,支持哪些网卡,支持哪些网络协议。等等。请尽可能详细的罗列这些内容,但是你也不要太贪心,因为你所有能利用的空间只有1440KB,如果你编译出一个大于1440KB或很接近这个数字的内核,你的这个项目就不能完成了,你已经没有空间再放ramdisKB映象文件,除非你原意再多出一张软盘,做一个两张软盘的小Linux系统。对于声卡驱动之类,我劝你还是放弃吧,因为一个声卡驱动也许只让你的内核增大了十多KB,但是你有了一个声卡驱动就务必要有一个播放器吧,否则声卡驱动就没有意义,可一个播放器的大小可不是一张软盘可以装得下的。在我先前制作的babyLinux内核有900多KB,其中,文件系统部分站了大部分,因为我的目标是把它做成一个系统修复盘。因此我在内核中编译7种文件系统的支持,每减少一个文件系统就可以减小几十甚至200多KB的内核大小。越是复杂,越是安全的文件系统,其支持模块也越大,比如在Linux下FAT模块只有32KB,VFAT只有17KB,但是ext3的模块就有86KB,JFS达到216KB,reiserfs模块是224KB,可以想像,编译一个支持7个文件系统的900多KB的内核,文件系统部分就占了600KB以上的空间,所以如果某一个文件系统是你根本不用的,那么还是不要编译进内核把,这样至少可以省下100多KB的空间。对于其它的驱动,比如网卡,通常大小只有8,9KB,最大的也不过10多KB,因此可以把常用的网卡芯片的驱动都编译进去。另外如果你想让你的babyLinux支持U盘,那么scsi的驱动模块也是不可小看的,它通常要接近150KB,因为U盘是被当做scsi设备来驱动的。另外你还需要让你的内核支持即插即用,这些都是不小的空间开销,我的建议是你放弃一两个你不用的文件系统。总之,你最后编译出来的内核大小最好不要超过900KB,否则你在busybox里只能编译进去很少的命令。 在我编译的busybox中,我编译进去120多个命令,基本上把busybox支持的命令都包括进去了。加上小系统所必需的文件系统目录,/dev下的设备文件,以及/etc下几个必需的配置文件,做成ramdisKB压缩后的大小是440多KB, 加上900KB左右的内核刚好可以放入一张1440KB软盘,请注意,你应该留下至少50KB的空间,因为我们要在软盘上创建一个ext2文件系统,而文件系统本生需要占据大概25KB的磁盘空间。另外lilo的引导文件boot.b的大小是5。7KB,还有装上lilo后自动产生的Map文件也要10多KB的空间,Map文件的具体大小由内核安装的实际大小决定,通常不会超过30KB。 综上所述,请遵循下面的公式: 内核大小+文件系统压缩印象文件+50KB <= 1440KB,另外一点需要说明的是:以上所罗列的文件系统模块大小是察看我现在使用的Redhat 9 的/lib/Modules下的模块文件得到的,实际编译进内核大小会小一点,因为我们用Make bzImage。在内核源代码目录树下生成的内核是经过压缩过的。如果你对以上说的内容不太明白也没有关系,我会在下面的内容中做详细的说明。 2 必需编译进内核的内容 首先,我们制作的这个小系统是基于一张软盘的,因此,你的内核必需支持软盘。另外对IDE硬盘和cdrom的支持也是不可少的,否则做出来的babyLinux就没有实用价值,因为它不能访问硬盘和光盘上的内容这样的Linux虽然可以做的更小,但是制造一个完全没有用的东西是浪费时间。其它的包括framebuffer等,如果你需要支持在字符界面下以高分辨率显示,以看到更多的屏幕内容,那么就必需把framebuffer支持编译进内核,此外在高分辨率下使用的8x8字体也必需编译进去。否则即使你给内核传递了vga= 参数,内核会因为没有可用的小字体而自动转跳到低分辨率模式下,这是以前困扰我好几天想不明白的事情,后来通过反复试验才明白原来是缺少字体的文体。这里我先大致提一下需要注意的事情。在下一小节具体编译时,我会继续就某些细节问题说明。

孩子不爱吃饭
血管里有血栓怎么办
小孩风寒感冒
宝宝感冒发烧
猜你会喜欢的
猜你会喜欢的