原理
核心原始碼樹每位目錄下都還包含一個Kconfig文件,用於描述所在目錄原始碼相關的核心設定選單,各個目錄的Kconfig檔案構成了一個分散式的核心設定資料庫。
透過makemenuconfig指令設定核心的時侯,從Kconfig檔讀取選單儲存技術原理分析:基於linux 26核心原始碼,設定完畢儲存到檔案名稱.config的核心設定檔中,供Makefile檔案在編譯內核時使用。
原始碼目錄樹頂樓Makefile是整個核心原始碼管理的入口,對整個核心的原始碼編譯起著決定性作用。編譯核心時linux c,頂樓Makefile會依規則遞歸歷遍核心原始碼的所有子目錄下的Makefile文件,完成各子目錄下核心模組的編譯。
配置內核
步入Linux內核源碼數頂樓目錄,輸入makemenuconfig命令百度網盤LINUX,可以步入基於Ncurses的Linux內核配置主界面,假如沒有在Makefile手指定ARCH,則須在命令行手指定:
make ARCH<span class="token operator">=</span>arm menuconfig
一級目錄
一級選單下的每一項幾乎都有複雜的下級子選單,各自的配置選項也很豐富,假如逐一進行描述,將會是一件十分繁雜的事。而實際產品開發中,並不須要完全了解核心的每個配置項,一般只須要了解其中一些相關項即可。
二級目錄Generalsetup是內核通用設定選單介面
SystemVIPC表示系統的進程間通訊InterProcess
Communication,它用於處理器在程式之間同步和交換資訊
Enableeventpollsupport:支援風波輪循的系統呼叫。
Enableloadablemodulesupport是核心模組配置
Moduleunloading容許卸載早已加載的模組
Moduleversioningsupport準許使用其他核心版本的模組(可能會出問題)
Sourcechecksumforallmodules為所有的模組校準源碼,假如你不是自己編撰內核模組就不須要它這個功能。
Enabletheblocklayer塊設備支援
使用硬盤/USB/SCSI設備者必選此選項促使塊設備可以從核心移除:
Supportforlarge(2TB+)blockdevicesandfiles僅在使用小於2TB的區塊裝置時須要
Blocklayerbiothrottlingsupport可用於限制設備的IO速率
IOSchedulersIO調度器I/O是輸入輸出頻寬控制,主要針對硬盤,是核心的必須的東西。這兒提供了三個IO調度器。
SystemType是處理器型別及特性
Symmetricmulti-processingsupport對稱多處理器支援,假如你有多個CPU或則使用的是多核心CPU就選上
Processorfamily(Pentium-Pro)處理器系列,請依照實際使用的CPU選擇,這兒是處理器的類型
Genericx86support這個選項針對x86系列的CPU使用較多的常規最佳化。假如你在裡面一項選的是i386、i586之類的才選這個通用x86支援,
Multi-coreschedulersupport針對多核心CPU進行調度策略最佳化多核心調度機制支持,四核心的CPU要選
Busoptions是PCI、ISA等匯流排的支援與配置KernelFeatures是核心特性配置選單
Bootoption啟動選項,可設定預設啟動參數和核心參數類型
CPUPowerManagementCPU電源管理相關
包括處理器頻度降頻、休眠模式支援等
Powermanagementoptions電源管理相關Networkingsupport網路配置
包含了乙太網路、CAN、紅外線、藍牙、無線等網路道路的支援配置選項
Wireless使用無線網卡支援
RFswitchsubsystemsupportRF切換設備
Networkingoptions網路合約與網路包參數配置(其中TCP/IP相關合約必須開啟)
Networkingoptions,可步入網路選項配置介面
使用Linux的系統就會用到網路,而使用網路又常常離不開TCP/TP,故建議在配置中選取TCP/IP選項儲存技術原理分析:基於linux 26核心原始碼,並選取下級全部選項。三態選項也可以配置為,在須要的時侯再插入模組。
DriverDrivers裝置驅動,設定介面也很複雜,有諸多設定項
Filesystems,是核心檔案系統設定介面
Kernelhacking內核調試相關Securityoptions安全相關選項
CryptographicAPI—>//加密API,此選項會依照先前的最佳化手動調整
剪裁和配置內核的基本原則
參考資料:
linux內核剪裁的具體過程和選擇
嵌入式Linux核心配置、裁剪與編譯探討
Linux核心編譯配置(Menuconfig圖形化形式)、製作檔案系統的步驟
Linux核心移植和根檔案系統製做
以上是深入解析核心原始碼樹:Kconfig 檔案與 Makefile 的協同作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!