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 審核編輯 黃昊宇
-
Linux
+關注
關注
87文章
11312瀏覽量
209739 -
源代碼
+關注
關注
96文章
2945瀏覽量
66779
發布評論請先 登錄
相關推薦
評論