티스토리 툴바


커널 만지기2006/12/28 03:41

OS를 어플리케이션으로 접근하는 사람은 커널 디버깅이 필요 없을지는 모르지만 사실 커널을 만지작 하면서 디버깅 없이 하는건 너무 어렵다.

VS6.0 을 다루면서 디버깅이 뭔지 알았지만 리눅스 프로그래밍에서 GDB 같은걸로 값, 메모리등을 체크하기란 쉬운일이 아니다. 사실 나도 GDB는 printf로 대체하고 세그멘테이션 오류에 대해서는 무작정 메모리 공부를 통해 세그멘테이션 오류가 날 부분을 예상했다가 prinf 로 대체하곤한다.

그럼 커널디버거는 왜 공부하는걸까.

불편하다. .. 다시말해 커널 프로그래밍을 잘못해서 커널 패닉생기고 리붓한다음에 커널소스 한두줄 고치고 printk 삽입하고 다시 커널컴파일 혹은 모듈컴파일하고 로드해서 혹은 이미지 만들고 재부팅한다음에 다시 하는것 보다는 커널디버거를 쓰는게 낫지 않을까.. 하는 약간의 기대감?  ( ㅡ_-);

뭐 암튼 이정도로 동기부여를 마치고 KGDB를 설치하고 이용하는데 대해서 말을시작해 보자.

Sourceforge 에서도 다운로드 받을수 있고 linsyssoft 에서도 개발중이다.
KGDB 프로젝트 홈페이지는 http://kgdb.linsyssoft.com/

KGDB는 커널 패치 형식으로 kernel.org등에서 다운받은 커널소스를 패치해야 한다.  프로젝트 홈페이지에 가면 어떤 버전을 다운 받아야 하는지 나와있고 홈페이지에서 다운 받을수 있는 Quick Start 등을 참고 하면 패치 방법이 나와있다.

우선 KGDB를 위해서는 리눅스 머신이 두대 필요 하다. 난 처음에 시리얼 통신으로 디버깅 한다기에 윈도우의 하이퍼터미널 같은것으로 가능하려나.. 했는데 원격으로 GDB를 실행하는것이어서 리눅스 머신이 두대가 필요 하다.

커널 컴파일을 하기위해 메뉴얼에 나와있는데로 패치를 해야 하는데. 커널 패치의 순서 또한 중요하다. 메뉴얼에 나와있는 순서에 따라 열심히 패치를 하고 패치가 완성된 커널로 configuration을 해야 한다. 뭐 입맛에 맞게 menuconfig 혹은 xconfig 등을 하면 되겠지만 그래도 윈도우 환경이면 xconfig가 편하지 않을까?

수정해야 할 부분은 Kernel hacking 부분을 체크하는것과 serial port 부분 라디오 버튼은 선택해주는 것으로 끝이나고 이미지를 만들고 grup에 등록 시켜주면 되는데. 메뉴얼과 약간의 다른점은 메뉴얼이 커널 2.6.15 기반으로 설명을 하고 있음에도 논리 볼륨을 사용하지 않고 커널이미지를 로드하는 디바이스가 hda1 같은 형식으로 되어 있다. Fedora 에서 타겟을 올린다면 Logical Volume구성을 입력해 줘야겠다.

우선 여기 까지 하고 부팅은 해 봤는데 커널이미지 까지는 올라간다. 원격 머신이 필요하기 때문에 그 이상 진행은 되지 않는다.

계속되는 이야기는 언제 올라갈지 모르는 #2 에서..

Posted by 유령