快速业务通道

自己动手做一个迷你型Linux操作系统

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-06
不在我们这里多说了,请大家参考 Busybox 的用户手册.

  从启动到进入 shell

  busybox 安装好以后,我们就可以考虑重新启动,一直到进入 shell 提示符了.这之前,我们要准备一下 /etc 目录下的几个重要的文件,要把 busybox 用到的 library 也拷贝过来.

  用 ldd 命令,后面跟要分析的二进制程序的路径名,就可以知道一个二进制程序,或者是一个 library 文件之间的互相依赖关系,比如 busybox 就依赖于 libc.so 和 ld-linux.so ,我们有了这些知识,就可把动手把所有需要的 library 拷贝到 flash 盘上.我们的 flash 盘说大不大,说小倒也不小,有 16M 字节之多.我们直接就用 Glibc 的文件也没有太多问题.如果读者朋友们有特殊的需要,觉得 Glibc 太庞大了的话,可以考虑用 uClibc,这是一个非常小巧的 libc 库,功能当然没有 Glibc 全,但是足够一个嵌入式系统使用了.本文就不再介绍 uClibc 了.

  库程序拷贝过来以后,我们就可以考虑系统启动的步骤了.启动的时候,先是 lilo,接下来就是 kernel,kernel 初始化之后,就调用 /sbin/init,然后由 init 解释 /etc/inittab 运行各种各样的东西.inittab 会指导 init 去调用一个最重要的系统初始化程序 /etc/init.d/rcS,我们将要在 rcS 中完成各个文件系统的 mount,此外,还有在 rcS 中调用 dhcp 程序,把网络架起来.rcS 执行完了以后,init 就会在一个 console 上,按照 inittab 的指示开一个 shell,或者是开 getty login,这样用户就会看到提示输入用户名的提示符.我们这里为了简单起见,先直接进入 shell,然后等到调试成功以后,再改成直接进入 X Window.

  关于 inittab 的语法,我们上面已经提到过了,希望读者朋友们去查权威的 busybox 的用户手册.这里,我们先要讲一下文件系统的构成情况.

  安排文件系统

  大家已经看到,我们的 root 文件系统为了避免麻烦,用的是标准的 ext2 文件系统.我们的硬盘空间很小,只有不到 16M,我们还要在上面放上 X Window,,如果我们全部用 ext2 的话,Flash 盘的有限空间会很快耗尽.我们唯一的选择是采用一个适当的压缩文件系统.考虑到 /usr 目录下面的内容在系统运行的时候,是不需要被改写的.我们决定选择只读的压缩文件系统 cramfs 来容纳 /usr 目录下面的全部内容.

  cramfs 是 Linus Torvalds 本人开发的一个适用于嵌入式系统的小文件系统.它是只读的,,虽然它采取了 zlib 做压缩,但是它还是可以做到高效的随机读取.既然 cramfs 不会影响系统读取文件的速度,又是一个高度压缩的文件系统,对于我们,它就是一个相当不错的选择了.

  我们把 /usr 目录下的全部内容制成一个 cramfs 的 image 文件.这可以用 mkcramfs 命令完成.得到了这个 usr.img 文件之后,我们还要考虑怎样才能在系统运行的时候,把这个 image 文件 mount 上来,成为一个可用的文件系统.这个 image 文件不是一个通常意义上的 block 设备,我们采用 loopback 设备来完成这一任务.具体说来,就是在前面提到的 /etc/init.d/rcS 脚本的前面部分,加上一行 mount 命令:

mount -o loop -t cramfs /usr.img /usr


这样,就可以经由 loopback 设备,把 usr.img 这个 cramfs 的 image 文件 mount 到 /usr 目录上去了.哦,对了,要用到 loopback 设备,读者朋友们在编译内核的时候,别忘了加入内核对这个设备的支持.对于系统今后的运行来说,这个 mount 的效果是透明的.cramfs 的压缩效率一般都能达到将近 50%,而我们的系统上绝大部分的内容是位于 /usr 目录下面,这样一来,原本可能要用到 18M 的 Flash 盘,现在可能只需要 11M 就可以了.一个 14M 的 /usr 目录,给压缩成了仅仅 7M.

  上面考虑了压缩问题,下面还要考虑到,Flash 盘毕竟不像普通硬盘,多次的擦写毕竟不太好,我们考虑,在需

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号