Skip to content

Linux:Kernel:Basic

커널 분석을 위한 컴파일 방법 및 디버깅 방법 정리와 기본적인 정보 정리.

How to compile

간단한 커널 컴파일 방법을 정리한다.

  1. 우선 기존 리눅스 배포판을 설치한다.
  2. 커널 소스를 kernel.org 에서 다운로드 받는다.
  3. 필요한 패키지를 설치한다.
    • sudo yum -y install gcc bc perl
  4. 설정파일을 만들어준다.
    • 만약 기존에 적용한 설정이 존재한다면 make mrproper를 사용하여 제거해야 한다.
    • 기본 설정을 적용하고 싶다면 make defconfig를 사용.
    • GUI환경의 도구를 사용할 경우 ncurses 라이브러리를 사용하여 설정파일을 만들 수 있다
      • make menuconfig
    • 참고로 make localmodconfig를 사용하면 현재 사용중인 모듈만 선택하여 config파일을 만들어 준다. <- 추천
  5. 빌드한다. make 1
  6. 모듈을 설치한다. sudo make modules_install
  7. 생성된 커널 이미지를 설치한다. sudo make install

이후 /boot/grub/grub.conf2를 확인하면 컴파일한 버전의 커널이 등록된 걸 확인할 수 있다.

Kernel ctags & cscope

커널은 Makefile에서 ctags, cscope 생성 옵션을 제공해 주므로 mkcscope.sh 실행할 필요없이 다음과 같이 입력하면 생성 가능합니다. (iamroot 강좌/팁 게시물 참고)

$ make ARCH=arm tags cscope

만약 상대경로가 아닌 절대경로를 입력하고 싶을 경우 아래와 같이 tags파일을 수정한다.

## $KERN_DIR 에 커널소스의 경로를 입력.
$ cat tags | sed -e 's;^\([^!][^\t]*\)\t;\1\t'"$KERN_DIR"'/;' > tags.absolute_path

See also

Favorite site

References


  1. 오래된 버전은 종속성 관리를 위해 make def를 실행해야 한다. 

  2. grub 2.x는 /boot/grub2/grub.conf에 존재한다. 

  3. How_does_a_start_kernel_call.pdf