频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

如何实现Linux操作系统最小化

来源:51cto 作者:佚名 出处:巧巧读书 2008-07-08 进入讨论组

    内核调整建议补充

    尽管Linux-tiny项目涉及到许多的方面,还有几个额外的配置改动可以减少Linux脚印。

    1、 移除ext2/3支持,使用另外一个不同的文件系统:ext2/3文件系统通常比较大,大于32K,大部分工程师启用一个Flash文件系统,但是不禁用ext2/3,这样会浪费内存。

    2、 移除对sysctl的支持,sysctl允许用户在运行时调整内核参数,在大部分嵌入式设备中,内核配置一旦定了就不需要改动了,使用这个特征会浪费1K。

    3、 减少IPC选项,大多数系统没有SysV IPC特性(grep你的msget、msgct、msgsnd和msgrcv代码)和POSIX消息查询(grep mq_*[a-z])一样可以运行,移除它们可以节约18K。

    4、 查看你改动的效果

    Size命令报告一个对象文件中所有代码和数据的大小,这与ls命令的输入是不同的,ls报告的是在文件系统中的字节数大小。

    例如,一个内核用armv51交叉编译器编译报告如下:

    # armv5l-linux-size vmlinx
    text    data     bss     dec     hex filename
    2080300   99904   99312 2279516  22c85c vmlinux

    Text小节是编译器发出的代码,data小节包括全局和其他使用初始静态符号的值,bss小节包括作为初始化的一部分被调零的静态数据。

    虽然这个数据有启迪作用,但它没有展示系统消耗的内存部分,也无法通过查询vmlinux得出,但是查看连接在一起的文件,创建vmlinux是接下来最好的事情,为了得到这个信息,使用find命令在内核项目中定位built-in.o文件并计算大小:

    # find . -name "built-in.o" | xargs armv5l-linux-size
    ?--totals | sort -n -k4
    这个命令的输出类似下面:
    text    data     bss     dec     hex filename
    189680   16224   33944  239848   3a8e8 ./kernel/built-in.o
    257872   10056    5636  273564   42c9c ./net/ipv4/built-in.o
    369396    9184   34824  413404   64edc ./fs/built-in.o
    452116   15820   11632  479568   75150 ./net/built-in.o
    484276   36744   14216  535236   82ac4 ./drivers/built-in.o
    3110478  180000  159241 3449719  34a377 (TOTALS)

    这个技术可以确切地指出占用了大量空间的代码,因此工程师可以首先移除这些代码,当这样做的时候,用户应该在创建之前执行编译清除动作,因为从内核中丢掉一个特征并不意味着那个之前编译好的对象文件将会被删除。

    对于那些新添加到Linux内核中的东西,一个常见的问题是如何在内核配置程序中使用一个选项来联合一些built-in.o文件,这可以通过查看目录下的Makefile和Kconfig文件来实现,Makefile将包括象下面这样的一行:

    obj-$(CONFIG_ATALK)     += p8022.o psnap.o

    当用户设置了配置变量CONFIG_ATALK后它将生成右手边的文件。内核配置工具一般不会暴露下属配置变量名。要查出变量名之间的连接以及什么是可见的,在Kconfig中寻找没有CONFIG_前缀的变量名。

    find . -name Kconfig -exec fgrep -H -C3 "config ATALK" {} \;

    它将产生下面这样的输出:

    ./drivers/net/appletalk/Kconfig-#
    ./drivers/net/appletalk/Kconfig-# Appletalk driver configuration
    ./drivers/net/appletalk/Kconfig-#
    ./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协议支持,但是至少要清楚要查找的是什么。

更多文章 更多内容请看Windows操作系统安装系统优化大全系统安全设置专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章