Linux是現(xiàn)在最流行的操作系統(tǒng),含有大量的源代碼。Xilinx 2020.1使用的Linux 5.4,含有大約67430個(gè)文件。大部分文件沒有被使用到。分析Linux源代碼的代碼實(shí)現(xiàn)時(shí),經(jīng)常查找函數(shù)或者數(shù)據(jù)結(jié)構(gòu)定義。如果分析所有文件,既消耗軟件查找時(shí)間;也會(huì)找到多個(gè)定義,增加理解代碼的難度。如果能夠刪除沒有被用到的代碼,既能快速找到對(duì)應(yīng)的定義,還能保證找到的是真正使用的定義。非常有意義。
Linux為文件的提供三種時(shí)間標(biāo)記。第一個(gè)是訪問時(shí)間atime,是最后一次讀文件內(nèi)容的時(shí)間。more、cat等命令會(huì)修改訪問時(shí)間;但是ls、stat命令不會(huì)修改訪問時(shí)間。第二個(gè)是修改時(shí)間mtime,是最后一次修改文件內(nèi)容的時(shí)間。比如vim操作后保存文件,會(huì)更新修改時(shí)間mtime。第三個(gè)是狀態(tài)改動(dòng)時(shí)間ctime,是該文件的inode節(jié)點(diǎn)最后一次被修改的時(shí)間。通過chmod、chown命令修改文件屬性就會(huì)更新這個(gè)時(shí)間。
如果我們知道Linux的編譯流程的起始時(shí)間,那么刪除所有訪問時(shí)間比Linux的編譯起始時(shí)間早的文件,就能達(dá)到精簡Linux的源代碼的目的。在編譯Linux之前,可以通過touch命令創(chuàng)建一個(gè)文件。這個(gè)文件的atime,就是編譯Linux開始時(shí)間。因此比較這個(gè)文件,和其它Linux文件,就能找到所有訪問時(shí)間比Linux的編譯起始時(shí)間早的文件,從而實(shí)現(xiàn)精簡Linux的源代碼。
實(shí)際測(cè)試中,發(fā)現(xiàn)還有部分文件被誤刪了。再恢復(fù)對(duì)應(yīng)文件,既精簡了Linux的源代碼,也不影響Linux的編譯流程。對(duì)Linux 5.4進(jìn)行精簡后,剩余大約8800個(gè)文件,減少了大約58000個(gè)文件,精簡了超過87%的文件數(shù)量。文件夾大小從910MB減少到103MB,精簡了超過88%的硬盤空間。
精簡過程還是需要相當(dāng)?shù)臅r(shí)間。如果需要Xilinx的Linux精簡代碼,可以與我聯(lián)系。
在scripts/kconfig/Makefile里,Linux還提供編譯目標(biāo)tinyconfig,它提供最精簡的內(nèi)核。以后可以考慮使用tinyconfig來精簡Linux的源代碼。
PHONY += tinyconfig tinyconfig: $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config 審核編輯 黃昊宇
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213837 -
源代碼
+關(guān)注
關(guān)注
96文章
2953瀏覽量
68396
發(fā)布評(píng)論請(qǐng)先 登錄
Linux系統(tǒng)中網(wǎng)絡(luò)配置詳解
Linux系統(tǒng)環(huán)境監(jiān)測(cè)終極指南

Linux系統(tǒng)管理的核心概念
Linux系統(tǒng)用戶權(quán)限詳解

Linux系統(tǒng)配置優(yōu)化技巧
Linux環(huán)境下的軟件包下載指令是什么呢?
如何判斷Linux系統(tǒng)的位數(shù)
linux是實(shí)時(shí)系統(tǒng)還是分時(shí)操作系統(tǒng)
請(qǐng)問AIC3100 linux 3.2驅(qū)動(dòng)哪里下載?
Linux系統(tǒng)中shell命令解析
linux操作系統(tǒng)安裝步驟 linux操作系統(tǒng)的特點(diǎn)及組成
Linux根文件系統(tǒng)的掛載過程
如何構(gòu)建Linux根文件系統(tǒng)
Linux系統(tǒng)中man命令的基本使用

【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)

評(píng)論