kconfig位於kernel原始碼內大部分的資料夾中,是一種特殊格式的檔案,負責提供kernel各個功能的配置選項。
比如進行驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項,從而將某個裝置驅動新增到核心的配置專案中。
需要注意的是,kconfig僅僅負責提供配置選項本身,而不提供各選項的值,關於kernel的配置和編譯流程以及推薦閱讀順序請移步 [ ]。
menuconfig netdevices
default y if uml
depends on net
bool "network device support"
---help---
you can say n here if you don't intend to connect your linux box to
any other computer at all.
這顯然對應著menuconfig的network device support選單
#
# ethernet
# menuconfig net_ethernet
bool "ethernet (10 or 100mbit)"
depends on !uml
---help---
ethernet (also called ieee 802.3
or iso 8802-2) is the most common
type of local area network (lan) in universities and companies.
//中間一大堆無用**就不貼了
if net_ethernet
config dm9000
tristate "dm9000 support"
depends on
arm || blackfin || mips
select crc32
select mii
---help---
support for dm9000 chipset.
to compile this driver as
a module, choose m here. the module
will be called dm9000.
config dm9000_16bit
bool "dm9000 16-bit"
depends on
dm9000
default n
help
support dm9000 ethernet controller with
16bit data bus
//中間一大堆無用**就不貼了
source "drivers/net/fs_enet/kconfig"
source "drivers/net/octeon/kconfig"
endif # net_ethernet
1.分析可知,關鍵字menuconfig代表的是乙個選單(選單本身也可被配置),而config則代表的是乙個配置選項
2.而被 if net_ethernet和 endif # net_ethernet括起來的這些配置選項,就是net_ethernet選單內的子選項
3.souce有點include的意思,每乙個kconfig都會source引入其所有子目錄下的kconfig,從而保證了所有的kconfig專案都被包含進menuconfig中。這個也告訴我們:如果自己在linux核心中新增了乙個資料夾,一定要在這個資料夾下建立乙個kconfig檔案,然後在這個資料夾的上一層目錄的kconfig中source引入這個資料夾下的kconfig檔案
4.menuconfig或者config後面空格隔開的類似於dm9000和netdevices 的就是這個配置項的配置項名字。配置項名字會被很多檔案所引用(有點像巨集定義),比如前面新增config_後就構成了.config中的配置項名字
5.bool或tristate後面跟著的字串就是這些配置項在menuconfig的顯示內容
6.bool表示該配置項只能配置y和n,對應menuconfig中的[ ];而tristate表示該配置項可以被配置為y,n,m,對應menuconfig中的<>;如圖所示
7.depends 的含義是依賴的意思,就比如上面的配置項dm9000_16bit,它依賴於配置項dm9000,如果配置項dm9000是n,那麼dm9000_16bit無論配置為任何值,都無效了;另外,依賴是層層遞進的,如果依賴的依賴無效,也會導致配置項無效。同時依賴無效的話還會導致make menuconfig中配置項的消失
8.depends並不要求依賴的配置項一定是乙個,可以是多個,而且還可以有邏輯運算(比如上面的!uml)。這種時候只要依賴專案表示式子的裸機結果為真則依賴就成立
Linux核心分析 Kconfig檔案分析
注 本文參考資料 朱有鵬嵌入式課程。本文為個人學習記錄,如有錯誤,歡迎指正。kcongfig用於構建linux核心配置的圖形介面,配置介面所有配置項都從kconfig中讀取。kconfig檔案遵循一定的格式,menuconfig程式可以識別其格式,並從中提取相關資訊形成menuconfig介面中的選...
核心Kconfig詳解
1 核心的原始碼樹的每一級目錄下一般都會有兩個檔案 kconfig和makefile。分布在各目錄下的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單,在核心配置make menuconfig時,如果已經存在.config,就直接將.con...
核心kconfig語法及原理
目前自己用過 menu desc endmenu menuconfig config str bool desc depends on config other default y help if config str do sth endif choice prompt desc default ...