2장. Makefile 분석

차례
2.1. 부팅 과정의 이해[1]
2.2. 커널 이미지 파일의 구조
2.2.1. 커널의 부팅
2.2.2. zimage와 bzImage의 차이
2.3. bzimage가 만들어지는 과정 추적-Makefile 분석
2.3.1. $(topDIR)/Makefile
2.3.2. $(topDIR)/arch/i386/Makefile
2.3.3. $(topDIR)/arch/i386/boot/Makefile
2.3.4. $(topDIR)/arch/i386/boot/compressed/Makefile
2.3.5. $(topDIR)/arch/i386/boot/tools/build.c
2.4. bzImage가 만들어지는 과정 추적-Log 분석
2.4.1. make bzImage 순서 정리
2.4.2. Log
2.5. 단계별 자세한 분석
2.5.1. -Ttext 0x0의 의미
2.5.2. 분석

필자는 리눅스를 공부하면서 처음엔 소스 코드를 찾아 스케쥴링부터 보고 다음엔 시스템 콜을 보고 하는 식으로 접근했다. 그러나 실제 임베디드 시스템에 적용하는데는 그런 단계가 먼저 필요한 것이 아니라 커널 이미지가 어떻게 구성됐으며 부팅 과정에서 어떤 식으로 실행되고 어떤 절차를 거쳐 리눅스란 os를 구성하는가가 먼저 필요하단 것을 느꼈다.

이런 생각은 자연스레 커널을 만들 때 어떤 식으로 커널이 만들어지는지를 알고 있어야 다른 임베디드 시스템에 커널을 만들어 넣을 때도 쉽게 접근할 수 있다는 생각을 갖게 만들었다.

이 장에선 커널 이미지 파일의 구조와 Makefile을 통해 커널이 만들어지는 과정을 추적해 본다.