1. menuconfig 的存在意義
原由是 項目的 config 項太多了,需要一個人性化的方式設置。
menuconfig 背后是一個應用程序,用戶和該應用程序交互,完成 config 設置。
2. menuconfig 本質是什么
當在 kernel 目錄執行 make menuconfig
[root@localhost kernel]# make menuconfig
scripts/kconfig/mconf arch/arm/Kconfig
可知 make menuconfig 本質是 執行 scripts/kconfig/mconf 程序,其參數是 arch/arm/Kconfig
scripts/kconfig/mconf 是基於 ncurses-devel 的應用, ncurses 是一個圖像化庫。
首次執行 make menuconfig 時,進入 scripts/kconfig 進行對 mconf 的編譯
3. mconf 及其配置文件
大多數應用程序都有配置文件,mconf也不列外,
輸入配置文件為 Kconf
輸入輸出配置文件 .config
mconf 根據 Kconf 決定如何顯示和交互規則,根據.config 載入已經被選擇的設置。
mconf save 會將配置回寫如 .config
4. Kconfig 關鍵字
config XXX # 表示一個CONFIG項,會對應 .config 中的 CONFIG_XXX bool "xxxx" # bool說明對應CONFIG項只有兩種選項(加入內核或不加入),"xxx"是說明語句,GUI 中前面為 [] depend on xxx # 說明本CONFIG依賴於 xxx,因此設置本CONFIG的前提是設置xxx配置 default y/n # 本選項默認是開啟或關閉 string "xxx" # 對應CONFIG項為輸入字符串, GUI中前面為 () select xxx # 只要本CONFIG 被開啟,則下面的select 也會被開啟 tristate xxx # 本CONFIG有三個選擇,加入內核/不開啟/編譯成模塊,但連接入內核 menu xxx endmenu # 這只是一個菜單,里面有很多CONFIG menuconfig # 自身是一個CONFIG,並且是菜單