網頁

2008年3月1日 星期六

Config.in的用法

1) 頂層菜單mainmenu_name /prompt/ /prompt/ 是用'或"包圍的字符串,'與"的區別是'…'中可使用$引用變量的值。mainmenu_name 設置最高層菜單的名字,它只在 make xconfig 時才會顯示。
2) 詢問語句
bool /prompt/ /symbol/ hex /prompt/ /symbol/ /word/ int /prompt/ /symbol/ /word/ string /prompt/ /symbol/ /word/ tristate /prompt/ /symbol/
詢問語句首先顯示一串提示符 /prompt/,等待用戶輸入,並把輸入的結果賦給 /symbol/ 所代表的配置變量。不同的詢問語句的區別在於它們接受的輸入數據類型不同,比如 bool 接受布爾類型( y 或 n ),hex 接受 16 進制數據。有些詢問語句還有第三個參數 /word/,用來給出缺省值。
3) 定義語句
define_bool /symbol/ /word/ define_hex /symbol/ /word/ define_int /symbol/ /word/ define_string /symbol/ /word/ define_tristate /symbol/ /word/
不同於詢問語句等待用戶輸入,定義語句顯式的給配置變量 /symbol/ 賦值 /word/。
4) 依賴語句
dep_bool /prompt/ /symbol/ /dep/ ... dep_mbool /prompt/ /symbol/ /dep/ ... dep_hex /prompt/ /symbol/ /word/ /dep/ ... dep_int /prompt/ /symbol/ /word/ /dep/ ... dep_string /prompt/ /symbol/ /word/ /dep/ ... dep_tristate /prompt/ /symbol/ /dep/ ...
與詢問語句類似,依賴語句也是定義新的配置變量。不同的是,配置變量/symbol/的取值範圍將依賴於配置變量列表/dep/ …。這就意味著:被定義的配置變量所對應功能的取捨取決於依賴列表所對應功能的選擇。以dep_bool為例,如果/dep/ …列表的所有配置變量都取值y,則顯示/prompt/,用戶可輸入任意的值給配置變量/symbol/,但是只要有一個配置變量的取值為n,則/symbol/被強製成n。不同依賴語句的區別在於它們由依賴條件所產生的取值範圍不同。
5) 選擇語句
choice /prompt/ /word/ /word/
choice 語句首先給出一串選擇列表,供用戶選擇其中一種。比如 Linux for ARM 支持多種基於 ARM core 的 CPU,Linux 使用 choice 語句提供一個 CPU 列表,供用戶選擇:
choice 'ARM system type' "Anakin CONFIG_ARCH_ANAKIN Archimedes/A5000 CONFIG_ARCH_ARCA5K Cirrus-CL-PS7500FE CONFIG_ARCH_CLPS7500 …… SA1100-based CONFIG_ARCH_SA1100 Shark CONFIG_ARCH_SHARK" RiscPC
Choice 首先顯示 /prompt/,然後將 /word/ 分解成前後兩個部分,前部分為對應選擇的提示符,後部分是對應選擇的配置變量。用戶選擇的配置變量為 y,其餘的都為 n。
6) if語句
if [ /expr/ ] ; then /statement/ ... fi if [ /expr/ ] ; then /statement/ ... else /statement/ ... fi
if 語句對配置變量(或配置變量的組合)進行判斷,並作出不同的處理。判斷條件 /expr/ 可以是單個配置變量或字符串,也可以是帶操作符的表達式。操作符有:=,!=,-o,-a 等。
7) 菜單塊(menu block)語句
mainmenu_option next_commentcomment '…..'…endmenu
引入新的菜單。在向內核增加新的功能後,需要相應的增加新的菜單,並在新菜單下給出此項功能的配置選項。Comment 後帶的註釋就是新菜單的名稱。所有歸屬於此菜單的配置選項語句都寫在 comment 和 endmenu 之間。
8) Source 語句source /word//word/ 是文件名,source 的作用是調入新的文件。
3.3 預設值配置
Linux 內核支持非常多的硬件平台,對於具體的硬件平台而言,有些配置就是必需的,有些配置就不是必需的。另外,新增加功能的正常運行往往也需要一定的先決條件,針對新功能,必須作相應的配置。因此,特定硬件平台能夠正常運行對應著一個最小的基本配置,這就是缺省配置。
Linux 內核中針對每個 ARCH 都會有一個缺省配置。在向內核代碼增加了新的功能後,如果新功能對於這個 ARCH 是必需的,就要修改此 ARCH 的缺省配置。修改方法如下(在 Linux 內核根目錄下):

  1. 備份 .config 文件

  2. cp arch/arm/deconfig .config

  3. 修改 .config

  4. cp .config arch/arm/deconfig

  5. 恢復 .config
如果新增的功能適用於許多的 ARCH,只要針對具體的 ARCH,重複上面的步驟就可以了。
3.4 help file
大家都有這樣的經驗,在配置 Linux 內核時,遇到不懂含義的配置選項,可以查看它的幫助,從中可得到選擇的建議。下面我們就看看如何給給一個配置選項增加幫助信息。
所有配置選項的幫助信息都在 Documentation/Configure.help 中,它的格式為:
<description><variable name><help file>
<description> 給出本配置選項的名稱,<variable name> 對應配置變量,<help file> 對應配置幫助信息。在幫助信息中,首先簡單描述此功能,其次說明選擇了此功能後會有什麼效果,不選擇又有什麼效果,最後,不要忘了寫上"如果不清楚,選擇 N(或者)Y",給不知所措的用戶以提示。

沒有留言:

張貼留言