어제 실습을 하는데 버벅여서 한번 정리하는 차원에서 작성해봅니다.
OB들이 쓴 책인 '코드로 알아보는 ARM 리눅스 커널'에 나와있는 분석 환경 구축하기(P32)를 토대로 우분투12.04에서 실제 분석 환경 구축을 진행해보았습니다다. 혹시 책의 저작권에 문제가 된다면 삭제하셔도 무방합니다.
1. 커널 소스 받기
https://www.kernel.org/ 에 접속하여 커널 소스를 받습니다. 저는 3.9.2를 받았습니다.(https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.2.tar.xz)
2. 소스 압축 풀기
받은 소스 파일을 한글 경로가 안들어가있는 적절한 곳으로 옮깁니다. 저같은 경우는 ~/kernel_study/ 밑으로 옮겼습니다.
그리고 해당 파일의 압축을 풉니다. 압축 풀때는..
$ xz -d linux-3.9.2.tar.xz
위와 같이 압축을 풀면 tar 파일이 나옵니다. tar 파일을 한번 더 풀어줍니다.
$ tar -xvf linux-3.9.2.tar
그러면 아카이빙이 풀리면서 폴더가 만들어집니다.
3. ctags로 소스 코드 태그 만들기
일단 ctags를 설치합니다.
$ sudo apt-get install ctags
기본적으로 태그를 생성하는 명령은 ctags -R인데 ctags -R은 모든 아키텍처에 대한 태그를 만들어 준다고 합니다.
우리는 ARM아키텍쳐만 다루기 때문에 ARM으로 한정하여 생성해야 합니다.
이때 리눅스 커널 소스에 아키텍처별 ctags용 태그를 생성할 수 있는 스크립트가 제공된다고 합니다.
스크립트가 있나 없나 한번 확인해봅니다.
$ ls -al ./scripts/tags.sh
tags.sh가 있는 것이 확인되면 make 명령으로 ARM용 태그를 생성합니다.
댓글 11
-
K
2013.05.19 19:38
-
배경남
2013.05.20 09:58
Vundle 이라는 vi 플러그인을 사용하면, 각 플러그인들을 한꺼번에 설치가 가능합니다.
vi 처음사용하시는 분께 조금이나마 도움이 되고자,
여기저기서 퍼와 제가 사용하는 .vimrc 파일과 Bundle 사용법을 공유합니다.
첨부된 vimrc.txt 파일을 다운받고, target에 .vimrc 로 이름을 바꿔 저장해주시면 되겠습니다.
간략 사용법은 F7, F8, F9 로 본문의 창들을 띄울 수 잇으며,
shift + h,j,k,l 로 창 크기 조정
ctrl + h,j,k,l 로 창간 이동
,숫자 로 file buffer 탐색
같은 기능을 수행할 수 있습니다.
# apt-get install vim
# apt-get install git
# git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
# cp vimrc.txt ~/.vimrc# vi (vi 실행시킬 때 오류발생하더라도 무시하시고 진행하시면 됩니다.)
:BundleInstall
Plugin 설치 완료시까지 대기
추천:2 댓글
-
201Sig
2014.07.19 14:52
문제 해결 했습니다.
.vim디렉터리를 /usr/src/linux-2.6.35.6안에 만들었었는데
.vim디렉터리를 /root/ 안에 만드니까 잘 동작 하네요.. ㅎㅎ
하지만 중간에 멈춰 버릴 때가 많은데.. ctags를 모든 아키텍처를 지원하도록 만들어서 그런건가요?
(ARM에 특화된게 아니라 X86이랑 모든 아키텍처 지원...)
-
201Sig
2014.07.19 13:35
저도 똑같은 에러 때문에 이런 저런 자료를 찾아보고 있습니다.
VMware WorkStation 10
Fedora 14
linux-2.6.35.6 환경에서 커널 코드 분석을 위해 작업중인데.. 이런 에러가 계속 뜹니다
E492 명령 편집 모드가 아닙니다 : TlistToggle
혹시 어떤 문제 때문에 이런 것인지 알 수 있을까요?
-
바람
2014.05.08 23:04
죄송한 질문인데 vimrc.txt를 .vimrc로 변경 후
커널이 있는 폴더로 이동 후 vim 실행하고나서 F7등의기능키를누르면
빨간 에러 문구(E492 Not editor command : XXXXXXXXX 가 나오는데.. 해결 방법좀 여쭙니다.
-
아폴로
2013.05.20 10:48
와~ 이런 정보들 감사합니다^^ -
HyunGyu
2013.05.20 12:24
좋은 정리 감사합니다..^^
적용해서 사용해봤는데.. 좋더라구요~~
-
유종원
2013.05.21 13:55
2주 연속 .. 개인사정때문에 참석을 못했더니,, 너무진도가 많이 나가버렸네요 ㅠ
꼭 적용해보고 다음번 스터디때는 꼭 참석하겠습니다. ㅠ
-
쿨쿨
2013.06.21 23:30
좋은 정보 감사합니다.
맥에서 make tags ARCH=arm을 하면
ctags: Warning: virt/kvm/ioapic.c:111: null expansion of name pattern "1"
ctags: Warning: virt/kvm/kvm_main.c:73: null expansion of name pattern "2"
ctags: Warning: regcomp ^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+): empty (sub)expression
ctags: Warning: regcomp ^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+): empty (sub)expression
xargs: illegal option -- r
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
이런 무수히 많은 경고와 더불이 생성이 되질 않습니다. 리눅스에선 잘 되는데요...
혹시 맥에서 환경 구축을 해보신분 계실까요?
-
쿨쿨
2013.06.21 23:46
GNU findutils 를 설치해서 xargs를 바꿔서 실행했더니 태그가 만들어지긴 합니다만
여전히 리눅스 환경에서는 나오지 않는 경고가 많이 나오네요.ㅇㅇ;;
-
신동석
2013.06.22 01:47
저도 맥인데 경고가 뜨긴 해도 태그 생성도 되고 VIM에서 동작은 하는 것으로 보입니다..
아직 C코드를 많이 뒤져보진 않아서 중간에 빠진게 있을까 우려가 되긴 하지만..
cscope랑 엮어서 쓰면 어느정도 커버되지 않을까 생각중입니다..
.
아~ 따라해보고 손을 좀 익숙하게 만들어 두어야 겠군요.. ^^*