Linux:Kernel:Basic
커널 분석을 위한 컴파일 방법 및 디버깅 방법 정리와 기본적인 정보 정리.
How to compile
간단한 커널 컴파일 방법을 정리한다.
- 우선 기존 리눅스 배포판을 설치한다.
- 커널 소스를 kernel.org 에서 다운로드 받는다.
- 필요한 패키지를 설치한다.
-
sudo yum -y install gcc bc perl
-
- 설정파일을 만들어준다.
- 만약 기존에 적용한 설정이 존재한다면
make mrproper
를 사용하여 제거해야 한다. - 기본 설정을 적용하고 싶다면
make defconfig
를 사용. - GUI환경의 도구를 사용할 경우 ncurses 라이브러리를 사용하여 설정파일을 만들 수 있다
-
make menuconfig
-
- 참고로
make localmodconfig
를 사용하면 현재 사용중인 모듈만 선택하여 config파일을 만들어 준다. <- 추천
- 만약 기존에 적용한 설정이 존재한다면
- 빌드한다.
make
1 - 모듈을 설치한다.
sudo make modules_install
- 생성된 커널 이미지를 설치한다.
sudo make install
이후 /boot/grub/grub.conf
2를 확인하면 컴파일한 버전의 커널이 등록된 걸 확인할 수 있다.
Kernel ctags & cscope
커널은 Makefile에서 ctags, cscope 생성 옵션을 제공해 주므로 mkcscope.sh 실행할 필요없이 다음과 같이 입력하면 생성 가능합니다. (iamroot 강좌/팁 게시물 참고)
만약 상대경로가 아닌 절대경로를 입력하고 싶을 경우 아래와 같이 tags파일을 수정한다.
## $KERN_DIR 에 커널소스의 경로를 입력.
$ cat tags | sed -e 's;^\([^!][^\t]*\)\t;\1\t'"$KERN_DIR"'/;' > tags.absolute_path