核心Kconfig詳盡分析

2021-07-15 22:16:31 字數 2397 閱讀 6129

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 ...