#1. mainmenu

예> mainmenu "Linux Kernel Configuration"

--> mainmenu 뒤에 있는 문장을 타이틀 로 사용한다. 이게 무슨말이고하니...

make menuconfig 를 실행 하였을때 파란 파탕에 회색 창이 뜨는데 회색창의 타이틀로 여기서 지정한 문장을 쓰겠다는 얘기가 되겠다.

 

#2. config

예> config ARM

--> Kconfig 파일에서 가장 많이 볼 수있는 명령어이다. 그도 그럴것이 이 config란 것이 menu entry 를 정의 할때 쓰는 것이기에 가장 많이 나오는 것이 당연하다 할것이다. menu entry 란 커널 옵션 항목을 말한다. config 뒤에 붙은 ARM은 feature 명이다. 이는 또 무슨 말이고 하니.... config ARM 이라는  커널 옵션 항목을 만들었다면, 결국 만들어 지는 feature는 CONFIG_ARM 이라는 feature 가 만들어 진다. 또 feature가 또 무었이냐라고 한다면 주로 #define 문으로 정의되는데 어떤 코드를 상황에따라 넣어다가 뺐다가 할수 잇도록 하는 용도로 사용되어 지는 것인데..... 마찬가지로 커널에서도 필요한 항목만 넣기 위해서 이 방법을 사용한다. 설명이 장황해 졌는데......

config ARM 에 대한 코드를 알고 싶으면..

linux-x.x.x>grep -w "CONFIG_ARM" ./  -rn

을 실행하면 사용한 위치가 보이고.. 그중에서 눈여겨 볼 파일이

include/linux/autoconf.h 이다.

이 파일은 make menuconfig 나 혹은 다른 방법으로 .config 파일이 생성되면 최종적으로 만들어 지는 파일인 것이다.

 

보통 config 문은 이러한 구조로 되어 있다.

 

config EXAM
      bool "Exam Menu"

      default y
     depends on MODULES

     select TEST
     help
       Usually, modules have to be recompiled whenever you switch to a new
       kernel.  ...
config  이후의 문장들은 메뉴 속성을 지정하는 부분이다.

 

#3. bool

메뉴 속성에서

      bool "Set version information on all module symbols"
는 메뉴타입을 지정하는 것이다.

여기서 bool 은 tristate / string / hex / int 가 될 수 있으며

bool 은 두가지 상태 즉 yes/no, true/false, 등과 같은 것들을 지정....

tristate는 세가지 상태, Y / M / N  즉 커널에 넣기 / 모듈로 넣기 / 빼기 이다.

string 은 스트링을 입력 받으 수 있는 타입이며 마찬가지로 hex int 는 각각 hexa 와 integer 값을 입력 받는 타입이다.

 

#4. prompt

모든 메뉴엔트리는 하나의 prompt를 가진다. prompt 라는 것은 사용자가 볼수 있도록 화면에 출력시켜주는 문자열이다. 즉 메뉴상에 나타나는 문장이다.

하지만 이 prompt 는 생략 가능하므로, 위의 예는

bool "Exam Menu" 는

bool

prompt "Exam Menu" 과 같은 의미이다.

 

#5. default

메뉴 엔트리의 기본 값을 정하는 명령어 이다.

 

#6. depends on

현재 메뉴엔트리의 종속성 설정하는 명령어 이다. 종속성이라.... 쉽게 말하자면 , "나는 철수가 학교가면 나도 갈것이다"라고 생각하면 되겠다. 즉 다른 feature가 선택이 되면 현재 메뉴 엔트리가 활성화가 되게끔하는 명령어이다.

위의 예에서

     depends on MODULES

은 MODULES 가 yes , active , on 등 긍정적인 설정이 되면 현재 메뉴 엔트리가 활성화 된다는 것을 의미한다.

 

#7. select

역종속성을 설정하는 명령어 이다. 역종속성.. 영어로는 ,reverse dependencies 라고 한다. "내가 학교가니깐 영희도 철수도 학교간다." 정도로 생각하면 정확한다. 즉 현재 menu가 선택되면 다른 메뉴 항목도 선택 되게끔 설정하는 명령어이다.
역종속성이라는 말처럼.. 잘못하면하면 종속성을 거스르는 문제가 발생하기도 한다.

즉 A에 종속 되어 있는 메뉴가 A가 on 되기 전에 select 명령어로 활성화가 될수도 있다는 말이다.

그래서 select는 주로 non-visisible symbols 과 종속성이 없는 것에 일반적으로 사용되어 진다.



2010/07/21 15:23 2010/07/21 15:23
Posted by scott

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다