1.8 kernel hacking을 위한 유틸리티

다음에 kernel을 분석하기 위해 유용하게 사용될수 있는 유틸리티 몇가지를 소개한다.

자세한 용법에 대해서는 manual page를 참고하기 바란다.

1) nm

object file에서 symbol이 메모리상에 위치하는 지점을 알수 있다. 예를 들어 코드에 다음과 같은 부분이 있다고 치자.

unsigned int * handler

...................

handler(); /* hd_interrupt함수 수행 */

실제로 리눅스 kernel에 handler()라고 정의된 함수는 없다. 따라서 이것은 kernel내의 어딘가 에서 handler pointer변수에 함수 pointer를 다음과 같이 넣어두었을 것이다.

handler = hd_interrupt

그런데 이 부분을 찾지 못한다면 어떻게 할것인가? 즉 handler변수가 hd_interrupt함수 pointe -r를 가지고 있는지 모른다면 말이다.

이 때 printk함수를 사용하여 handler값을 부팅중에 출력하게 만든다.

handler();

printk("handler : %x\n", handler);

이제 kernel을 컴파일하고, 다시 kernel을 설치한후 부팅시킨다. 부팅중에 handler값을 읽어 zSystem.map안의 symbol의 번지와 비교해본다.

2) grep

file에서 원하는 문자열이 있는지 찾는다.

3) defrag 패키지

defrag패키지는 disk상의 file system을 관리하는 유틸리티이다. 본서에서는 이들 중에서 disk 의 내용을 dump해 주는 e2dump를 주로 사용할것이다.