1. configuration file
1.1 intro
Linux kernel에 관계된 directory들에는 Kconfig와 makefile이 함께 존재한다.
※ Makefile : 파일을 생성하는 스크립트.
obj-변수(CONFIG_XX_*) 의 값이 y라면 해당 *.o 파일을 오브젝트 파일로 만들겠다.
변수 위치 : 최상위 디렉터리 안 (Kconfig를 참고해 .config 파일은 자동으로 생성됨)
obj-$(CONFIG_FOO) += foo.o # CONFIG_FOO의 값이 y라면 해당 *.o 파일을 오브젝트 파일로 만들겠다는 뜻임
1.2 Kconfig
Kconfig: kernel에 대한 설정에 대해 정의되어있는 파일을 의미
make menuconfig를 했을 때, 보이는 화면은 Kconfig파일에 대한 내용들이다.
config FOO bool "Enable FOO driver" defalut y help Adds ~~~~~~~~~~~~. default is n. # 이렇게 정의해놓으면 CONFIG_FOO 변수가 자동 생성됨
1.3 defconfig
defconfig: driver 단의 Makefile을 보면 아래 같이 작성되어 있는 것을 볼 수 있다.
그런데 menuconfig를 사용해 일일히 설정하지 않고, defconfig라는 것에 필요한 설정들을 정의해 놓고 사용 할 수있다.
CONFIG_FOO=y #built-in CONFIG_FOO=m #module
1.4 .config
.config: make menuconfig 파일 기반으로 생성된다.
make menuconfig를 하면 기본적으로 arch에 맞는 defconfig를 가져와서 세팅한 후, 사용자의 추가 세팅을 받아서 최종 .config 파일이 완성된다.
.config 파일이 최종적으로 빌드 시 사용된다.
'Embedded : : Linux > : : Linux Kernel' 카테고리의 다른 글
Linux Kernel Image Header - ARM64 (1) | 2024.11.07 |
---|---|
Linux Module (0) | 2024.11.06 |
커널 로그 분석: WARN 매크로 (0) | 2024.10.31 |
Debugging the kernel using Ftrace (4) | 2024.10.24 |
태스크 디스크립터: 프로세스 간 관계 (0) | 2024.10.12 |