zoukankan      html  css  js  c++  java
  • 【分享】精简Linux的源代码

    作者:付汉杰

    Linux是现在最流行的操作系统,含有大量的源代码。Xilinx 2020.1使用的Linux 5.4,含有大约67430个文件。大部分文件没有被使用到。分析Linux源代码的代码实现时,经常查找函数或者数据结构定义。如果分析所有文件,既消耗软件查找时间;也会找到多个定义,增加理解代码的难度。如果能够删除没有被用到的代码,既能快速找到对应的定义,还能保证找到的是真正使用的定义。非常有意义。

    Linux为文件的提供三种时间标记。第一个是访问时间atime,是最后一次读文件内容的时间。more、cat等命令会修改访问时间;但是ls、stat命令不会修改访问时间。第二个是修改时间mtime,是最后一次修改文件内容的时间。比如vim操作后保存文件,会更新修改时间mtime。第三个是状态改动时间ctime,是该文件的inode节点最后一次被修改的时间。通过chmod、chown命令修改文件属性就会更新这个时间。

    如果我们知道Linux的编译流程的起始时间,那么删除所有访问时间比Linux的编译起始时间早的文件,就能达到精简Linux的源代码的目的。在编译Linux之前,可以通过touch命令创建一个文件。这个文件的atime,就是编译Linux开始时间。因此比较这个文件,和其它Linux文件,就能找到所有访问时间比Linux的编译起始时间早的文件,从而实现精简Linux的源代码。

    实际测试中,发现还有部分文件被误删了。再恢复对应文件,既精简了Linux的源代码,也不影响Linux的编译流程。对Linux 5.4进行精简后,剩余大约8800个文件,减少了大约58000个文件,精简了超过87%的文件数量。文件夹大小从910MB减少到103MB,精简了超过88%的硬盘空间。

    精简过程还是需要相当的时间。如果需要Xilinx的Linux精简代码,可以与我联系。

    在scripts/kconfig/Makefile里,Linux还提供编译目标tinyconfig,它提供最精简的内核。以后可以考虑使用tinyconfig来精简Linux的源代码。

    PHONY += tinyconfig
    tinyconfig:
    	$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
    
  • 相关阅读:
    如何设置ASP.NET页面的运行超时时间
    日志文件清理工具V1.1
    【原创】日志文件清理工具V1.0
    【分享】国外后台界面HTML源码 [免费]
    【分享】仿东软OA协同办公服务管理源码
    年底发福利了——分享一下我的.NET软件开发资源
    由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)
    【分享】元旦送礼,商业源码免费赠送!
    给大家分享一个jQuery TAB插件演示
    【分享】双12了,也没啥可送大家的,就送大家点商业源码吧!
  • 原文地址:https://www.cnblogs.com/hankfu/p/14452971.html
Copyright © 2011-2022 走看看