본문 바로가기

LINUX/REDHAT계열

fedora 에서 kernel 분석방법!!

fedora는 기본적으로 커널소스는 제공하지않고 헤더파일만 보여준다.

그렇기 때문에 커널 소스를 해석하기 위해서는 kernel 소스를 다운 받아서 그 소스를 분석해야 한다.

 >>>kernel source Down<<<
# yum install yum-utils rpmdevtools kernel-firmware
# rpmdev-setuptree
이제 소스파일을 받아야하는데 소스를 받을때는 현재의 커널버전과 같은 커널소스를 받자.
'uname -r' 을 실행해서 현재의 커널버전 확인 하자!
다운은 http://kojipkgs.fedoraproject.org/packages/kernel/ 에 접속해서 현재 커널 버전의 source를 받는다.

다운 받은 커널의 의존성을 검사한다.
# yum-builddep kernel-커널버전.src.rpm

압축을 풀어준다.
# rpm -Uvh kernel-커널버전.src.rpm
이렇게 해주면 ~/rpmbuild 디렉토리 아래에 SOURCES, SPECS 디렉토리가 생성된다.
이때 나오는 여러줄의 경고 메시지는 걍 무시~^^(공식문서에서도 무시하란다.)

이제 .c 파일과 .h 파일들을 얻어보자~!!
# cd ~/rpmbuild/SPECS
# rpmbuild -bp --target='uname -m' kernel.spec
이때 두번째 명령이 안먹을 수 있다.
그럴때는 걍 명령창에서 uname -m 을 쳐보면 i686, x86 이런 정보가 나온다
그 나온 값을 그냥 대신해서 써주면 해결된다.
cf)) #rpmbuild -bp --target=i686 kernel.spec

여기까지 하면 우리가 원하는 커널소스를 얻을 수 있다~^^
~/rpmbuild/BUILD/kernel-커널버전/linux-버전.

======kernel source 분석 기법 ctags / cscope =======

 >>>ctags 설정하기<<<
검색하고자 하는 함수들이 있는 디렉토리로 이동한 후 다음 명령어를 실행해준다.
# ctags -R
tags 파일이 생겼는지 확인한다.
# ls tags
/ect/vimrc 파일에 다음을 추가해준다.(공백이 있어선 안된다.)
set tags+=/[tags파일이 있는 디렉토리]/tags

 >>>ctags 사용하기<<<

:ta [tag]   or   Ctrl + ]

 [tag] 정의된 위치를 나열하고 선택한 위치로 점프. 현재 위치는 stack에 push 된다.

 :ta [tag]   or   tj [tag]

 "

 :po  or  Ctrl + t

 stack top에 저장된 위치를 pop하고 그 위치로 점프

 :sts [tag]

 [tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시

 :stj [tag]

"

 :tn

 tj나 ts로 점프했을 때 다음 tag로 점프

 :tp

 tj나 ts로 점프했을 때 이전 tag로 점프

 :tr

 tj나 ts로 점프했을 때 처음 tag로 점프

 :tl

 tj나 ts로 점프했을 때 마지막 tag로 점프 

 :pts [tag]

 [tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시하지만 커서는 현재 위치에 유지

 :ptj [tag]

 미리보기 윈도우에 tag가 정의된 형식을 보임

 :ptn

 ptj나 pts로 점프했을 때 다음 tag로 점프

 :ptp

 ptj나 pts로 점프했을 때 이전 tag로 점프

 :ptr

 ptj나 pts로 점프했을 때 처음 tag로 점프

 :ptl

 ptj나 pts로 점프했을 때 마지막 tag로 점프

 >>>cscope 설정하기<<<
검색하고자 하는 파일으 데이터베이스로 만들어 놓고 그 안의 변수들을 쉽게 찾아볼수 있게 해준다.
데이터 베이스에 등록하기
# find ./ -name *.[chS] -print > cscope.file
# find ./ -name *.java -print >> cscope.file
# cscope -i cscope.file
vimrc 설정
cs add /[cscope.out파일이 있는 경로]/cscope.out
set cst
위의 두줄 중에 한줄만 사용해 준다.

 >>>cscope 사용하기<<<


'LINUX > REDHAT계열' 카테고리의 다른 글

RPM  (0) 2011.03.17
디스크 check 오류가 났을때..  (0) 2011.02.14
FEDORA]유익한 명령어 모음  (0) 2011.02.12
Virtual Box 알아두면 좋은것  (0) 2011.02.09
compiz-fusion [Fedora의 그래픽을 멋지게~!]  (0) 2011.02.07