6-內核配置選項編寫
內核裁剪的方式有兩種:
第一種:make menuconfig 進入圖形界面的配置。
第二種:就是打開源碼進行相應的裁剪。
這裏我們先介紹一下第一種方式的裁剪方式:make menuconfig
首先介紹下make menuconfig 這個命令實際上是這樣運行的:./scripts/kconfig/mconf arch/arm/Kconfig
mconf:這個是一個解析器,用來解析Kconfig文件
Kconfig:就是用來生成我們make menuconfig看到的所有選項,當然,Kconfig也是一層層調用的,和makefile類似。下面我們來寫一個最簡單的Kconfig文件。
首先在我們上一節課的目錄下driver/mydriver下創建一個Kconfig的文件:並寫入一下代碼
1 config MY_DRIVER 2 bool "select mydriver" //這是一個選項,並沒有與我們的mydirver.c關聯 3 default n //默認情況下不選擇 也就是make menuconfig 中[ ]空的情況 想要選擇的話,default y 4 help //對應我們make menuconfig 中下面的 select exit help 中的help5 IF yuo select this ,you will happy !!! //這個是help中的解釋描述
然後保存退出./scripts/kconfig/mconf driver/mydriver/Kconfig文件:
可以看到我們的選項就長成這個樣子;
上面我們說過Kconfig是一層層調用的,所以我們來打開上層的Kconfig,把我們寫的Kconfig寫入到上層Kconfig,這樣就能夠make menuconfig的時候直接在整體的選項裏面看到我們的Kconfig所生成的選項;
vim ../Kconfig 照貓畫虎:第三行就是我們添加的代碼用source 命令。source一下我們的Kconfig
1 menu "Device Drivers" 2 3 source "drivers/mydriver/Kconfig" 4 5 source "drivers/base/Kconfig" 6 7 source "drivers/connector/Kconfig" 8 9 source "drivers/mtd/Kconfig"
最後,make menuconfig 就可以看到我們的選項了,這次我們用空格按鍵把它選上,exit 保存。
[liuye@LiuYe linux-3.5]$>make menuconfig scripts/kconfig/mconf Kconfig # # configuration written to .config # *** End of the configuration. *** Execute ‘make‘ to start the build or try ‘make help‘.
可以看到配置被寫入到.config文件下:
我們來打開這個文件搜索一下 :/MY_DRIVER
1096 # 1097 # Device Drivers 1098 # 1099 CONFIG_MY_DRIVER=y 1100 1101 # 1102 # Generic Driver Options 1103 #
可以看到:CONFIG_MY_DRIVER=y。 這就是我們把自己編寫出來的選項選中了;如果不選中的話,則如下#CONFIG_MY_DRIVER is not set
1096 # 1097 # Device Drivers 1098 # 1099 # CONFIG_MY_DRIVER is not set 1100 1101 # 1102 # Generic Driver Options 1103 #
到這裏添加一個最簡單的make menuconfig選項就寫完了,後面我們會再講解如何編寫其他類型的選項。
6-內核配置選項編寫