如何实现Linux操作系统最小化
/drivers/net/appletalk/Kconfig:config ATALK ./drivers/net/appletalk/Kconfig- tristate "Appletalk protocol support" ./drivers/net/appletalk/Kconfig- select LLC ./drivers/net/appletalk/Kconfig- ---help--- 还有一些事情需要做,用户需要在配置树中找到Appletalk协议支持,但是至少要清楚要查找的是什么.
根文件系统 对于许多新转到嵌入式Linux的工程师而言,他们认为在一个嵌入式设备上的根文件系统是一个外部概念,在Linux之前的嵌入式解决方案通过直接连接应用程序代码到内核中进行工作,Linux在内核和根文件系统之间有一个非常好的分割,最小化系统工作不是以缩小内核为终止点,在优化之前,根文件系统的大小与内核相比要小得多,无论如何,对于传统的Linux而言,系统部分有许多需要调整的部分,调整它们以减少系统的大小. 第一个需要回答的问题是“我究竟需不需要根文件系统?”简单地说,需要.在内核启动进程的结尾,它要查找根文件系统,由它再加载并运行第一个进程(通常是init,执行ps aux|head -2将告诉你在你系统上是什么进程),缺少根文件系统或初始化程序中的任何一个,内核将启动不了. 最小的根文件系统可以是一个文件:设备应用程序.假如这样,内核要指定一个文件,它是用户空间的第一个进程.只要那个进程在运行,系统就能工作,但是,如果这个程序基于任何原因退出了,内核将挂起,设备将需要重新启动.大多数空间有限的系统也会选择一个初始化程序,内务消耗小,初始化包括重新生成进程已死的代码,预防遇到应用程序崩溃时内核挂起. 大多数Linux系统非常复杂,包括很多可执行文件和常用共享库(包含运行在该设备上的应用程序共享库代码),对于这些文件系统,有很多选项存在用于减少RFS的大小. 改变C库 结合GCC,大多数用户都不想c库作为一个独立的实体,c语言包括32个关键字(give、take等),因此c程序的大多数字节来自这些标准库,权威的c库(glibc)被设计成高度兼容、国际化和跨平台支持,但它也比较大,有很多可选择的比较小的c库: 拥有帝国一切,皆有可能。欢迎访问phome.net uClibc:这个项目是为没有内存管理单元(MMU-less)的处理器实现的c库.uClibc从开始创建就很小,它提供与c库相同的功能,但删除了如国际化、大字符集支持和二进制兼容性等特征.,uClibc配置工具给用户很大自由选择什么代码进入库,允许用户进一步减小大小. uClibc :对于那些使用c 的程序而言,这个库是在相同设计原则下的实现,支持标准c 库的大部分功能,工程师可以很容易地在板子上部署基于c 的应用程序,仅需要几兆字节空间. Newlib:Newlib出自Red Hat,它有一个非常完整的数学库实现,有很多做控制和测量应用程序的用户喜欢它. dietlibc:dietlibc是glibc的最佳代替品,它仍然是最小的分支,非常小,实际上只有70K,它删除了如动态链接库等特征.它对arm和MIPS支持得很好.
使用一个交替的c库 Newlib和dietlibc通过提供一个包装的脚本调用编译器使用正确的参数集,忽略包括在编译器中的标准c库,使用一个替换的c库.uClibc有点不同,它需要工具链. 一旦你知道如何调用GCC,接下来就要为项目更新Makefile文件或建立脚本,大多数情况下,为项目在Makefile文件中使用下面这样一行: CC=CROSS_COMPILE-gcc 回到根文件系统 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |