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 사용하기<<< |
[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 |