제임스딘딘의
Tech & Life

개발자의 기록 노트/Linux

Kprobes 사용하기 [1] : Ubuntu 12.04

제임스-딘딘 2012. 9. 11. 04:01

Kprobes 사용하기 [1] : Ubuntu 12.04


동적 프로브 (Dynamic Probe) 라는 것이 있다. 

이는 빌드를 다시 하지 않은 상태에서 디버깅을 지원한다.

즉, 특수한 컴포넌트 빌드 없이 분석 정보를 수집하는 기법을 제공한다.

그중 커널 동적 프로브 (Kprobe) 는 리눅스의 커널 내부로 삽입할 수 있는 프로브이다.


우분투에서 kprobes를 사용하고자 하는가?

다음 과정을 따른다.


커널 버전이 2.6.9 이상이면 kprobes는 이미 커널의 일부일 것이다. 패치를 적용할 필요가 없다.

단지 몇가지 옵션을 활성화 한 뒤 커널을 다시 빌드 하면 된다.

(If your kernel is >= 2.6.9, then kprobes should already be apart of the kernel. No patch needed!
You should just need to rebuild your kernel with the following options enabled)


CONFIG_KPROBES=y
CONFIG_RELAY=y
CONFIG_DEBUG_INFO=y


커널을 다시 컴파일하기 위해서는 다음 정보를 참조하였다.


https://help.ubuntu.com/community/Kernel/Compile


요약하면, 다음과 같다.

1. 커널 빌드에 필요한 패키지를 다운로드

apt-get install build-essential bin86 kernel-package
apt-get install libncurses5-dev


2. 커널 소스를 다운로드


3. 커널을 설정(config. 위의 kprobe활성화 옵션도 이 단계에서 설정함)

커널 소스 압축을 푼 위치에서 make menuconfig 명령을 활용 하면 될 것이다.


4. 커널을 컴파일

make


5. 커널의 모듈을 컴파일

make modules


6. 컴파일이 완료된 커널과 모듈 설치

make modules_install install

(/boot 디렉토리에 커널을 만들고 아래 디렉토리에 커널 옵션에 따른 모듈을 복사)


7. initrd 파일을 생성

update-initramfs -c -k [커널버전]

/boot 디렉토리 밑에 initrd.img 이미지를 만들어 주는 명령. 커널버전은 버전을 식별하기 위한 문자


8.부트로더를 수정

(grub 부트로더를 사용하는 경우)

/boot/grub/grub.cfg 를 수정한다.

기존의 엔트리를 그대로 복사, 이름 부분과 파일 부분만 수정


9. 재부팅