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
    
  • 相关阅读:
    258. Add Digits 数位相加到只剩一位数
    7. Reverse Integer 反转整数
    9. Palindrome Number 回文数的判断
    824. Goat Latin山羊拉丁文
    819. Most Common Word 统计高频词(暂未被禁止)
    Angular 2 模板语法
    HTML DOM Style opacity 属性
    Basic concepts (C language) – C 中文开发手册
    JavaScript手册 | JS Array 对象中的fill()方法
    HTML <form> 标签
  • 原文地址:https://www.cnblogs.com/hankfu/p/14452971.html
Copyright © 2011-2022 走看看