1. 程式人生 > >6-內核配置選項編寫

6-內核配置選項編寫

一個 ive IT 添加 ice 解釋 try dev eric

內核裁剪的方式有兩種:

    第一種: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 中的help
  
5 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-內核配置選項編寫