강좌 & 팁
안녕하세요 판다 이우영입니다.
오늘도 저번시간에 이어서 커널설정에 대해서 이야기하려 합니다.
우리만의 설정을 추가하는 방법을 알아봅시다.
1. Kconfig 수정 어렵지 않아요~
저번 시간에는 menuconfig를 통해 커널의 설정을 병경 하는 방법에 대해서 이야기 했었습니다.
이번에는 직접 우리만의 커널 설정을 추가해 보겠습니다.
먼저 Kconfig를 하나 수정해 보겠습니다.
일단 익숙한 파일에 수정을 해보겠습니다
(물론 제기준입니다 ㅎㅎ)
arch/arm/mach-s5pv210/Kconfig 파일을 열어 보겠습니다.
위와같이 TEST_KCONFIG 를 추가 해 봅시다.
menuconfig를 통해 확인해보면
System Type --->
[*] EZS5PV210
[ ] TEST (NEW)
위와 같이 추가 된 모습을 볼 수 있습니다.
일단 한번 EZS5PV210 표시를 해제해볼까요?
TEST 항목이 사라졌습니다. 왜?
depends on MACH_EZS5PV210 항목 때문입니다.
MACH_EZS5PV210 가 활성화 되어 있을 때만 설정창이 보이게 됩니다.
bool "TEST" 는 menuconfig에서 보이는 이름을 나타냅니다.
menuconfig에서 help를 확인해 볼까요?
우리가 넣어준 help 설명이 들어있죠?
그리고 설정이 있는 파일이름도 보입니다.
자 우리의 config 를 선택한다면 CONFIG_TEST_KCONFIG 라는 것이 커널상에서 정의가 됩니다.
(우리가 정의해준 이름 앞에 CONFIG_ 가 자동으로 붙게 되어 있습니다.)
이를 통해 원하는 파일을 컴파일 하게 하던지 소스상에서 원하는 동작의 동작 유무 등을 선택해서 동작하게 할 수있습니다.
먼저 파일을 넣는 방법을 확인해 볼까요?
(요부분은 귀찮으니 있는걸로 확인해 봅시다 ㅎㅎ)
MACH_EZS5PV210가 활성화 됬을때 추가되는 파일을 확인해 보겠습니다.
arch/arm/mach-s5pv210/Makefile 을 열어보겠습니다.
CONFIG_MACH_EZS5PV210 가 보이시나요? 설정되어 있다면
mach-ezs5pv210.c bootmem-ezs5pv210.c 파일이 컴파일 되도록 하는 부분입니다.
CONFIG_MACH_SMDKC110 이라면 mach-smdkc110.c 파일이 컴파일 되겠죠?
다음은 arch/arm/mach-s5pv210/mach-ezs5pv210.c 파일을 열어 보겠습니다.
#ifdef CONFIG_~~~ 가 엄청 많이 보이시죠?
이것들이 모두 menuconfig를 통해 넘어오는 config로 소스코드를 추가할지를 경정하는 것입니다.
예를 들어 CONFIG_S3C_DEV_HSMMC 설정이 빠져있다면?
s5pv210_default_sdhci0 함수는 호출되지 않을겁니다.
위와같이 Kconfig 와 menuconfig를 통해 여러가지 일들을 할수 있습니다.
추가하는거나 선택하는것도 어렵지는 않습니다.
다만 Kconfig와 Makefile과 c 소스 상에서 사용하는 문법들이 다르다는점! 명심해야 합니다.
매우 자주 까먹는거니 기억하려 노력할 필요는 없습니다. 우리에게는 커널이라는 샘플이 있으니까요 ㅎㅎ
그때 그때 보고 작성 하시면 됩니다.
더 테스트 해보고 싶으신분은 TEST_CONFIG가 설정되어있을때만 출력되는 메시지를 하나 만들어 보시길 바랍니다 ㅎㅎ
그럼 오늘 이야기는 여기까지 입니다.
감기 조심하세요~