리눅스 커널 프로그래밍 환경 구축

Download Report

Transcript 리눅스 커널 프로그래밍 환경 구축

커널 컴파일 및 개발 환경 구축
IT EXPERT 리눅스 커널 프로그래밍
Author :
Byungki Kim
Email
[email protected]
:
1 커널 소스 코드 구하기
 커널 다운로드
 http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.bz2
 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.6.tar.bz2
 wget 을 이용해서 다운로드 : wget [full URL]
 http://210.115.226.26/~bk/downloads/linux-2.4.32.tar.bz2
 http://210.115.226.26/~bk/downloads/linux-2.6.14.6.tar.bz2
다운로드가 완료되면
2
/usr/src에 압축 해제
OPERATING SYSTEM LAB
2 커널 빌드 과정
 make mrproper
커널을 여러 번 컴파일 했을 때 기존의 설정된 모든 의존관계 제거
 make menuconfig
커널 환경 설정 시작
 make dep
커널에 설정된 내용에 따라 소스 코드의 파일들 확인
필요한 링크를 생성하는 것과 같은 의존성 설정
 make clean
이전에 커널 빌드에서 남아있던 문제가 되는 파일들 삭제
깨끗하게 시작
 make bzImage
실제로 싱행되는 커널을 빌드
 make modules
커널에서 사용할 모듈들 컴파일
 make modules_install
컴파일된 모듈 설치
3
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make mrproper
4
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make menuconfig
5
OPERATING SYSTEM LAB
3 커널 2.4 빌드
Code maturity level options --->
prompt for development and/or imcomplete code/drivers
Why ? 커널에서 안정되지 않은 기능들도 사용
6
OPERATING SYSTEM LAB
3 커널 2.4 빌드
File Systems
7
OPERATING SYSTEM LAB
3 커널 2.4 빌드
8
OPERATING SYSTEM LAB
3 커널 2.4 빌드
9
OPERATING SYSTEM LAB
3 커널 2.4 빌드
커널에 포함
윈도우와 폴더 공유
기본 자국어 코드 지정
윈도우 공유 폴더에 접근할 때 사용할 코드 페이지
10
OPERATING SYSTEM LAB
3 커널 2.4 빌드
File Systems ---> Native Language Support 항목은
SMB file system support를 선택해야만 언어 코드 설정 가능
개발자들의 실수 ? -_- 커널 2.6에서 사라짐
File systems ---> Native Language Support 바로 설정 가능
커널 2.6 컴파일할 때 비교해 보겠음!!
11
OPERATING SYSTEM LAB
3 커널 2.4 빌드
이 부분 생략하면 putty, ssh등에서
김병기.txt  ?????.txt 이런 경우가 발생한다고 함!!
12
OPERATING SYSTEM LAB
3 커널 2.4 빌드
Networking options
13
OPERATING SYSTEM LAB
3 커널 2.4 빌드
TCP/IP 관련된 기능 사용 가능
14
OPERATING SYSTEM LAB
3 커널 2.4 빌드
Network device support
15
OPERATING SYSTEM LAB
3 커널 2.4 빌드
16
OPERATING SYSTEM LAB
3 커널 2.4 빌드
VMWare에서 사용하는 랜카드 (가상 랜카드)
오~ 신기 -ㅂ-
17
OPERATING SYSTEM LAB
3 커널 2.4 빌드
Save & Exit
18
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make dep
의존성 설정
19
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make clean
불필요한 파일들 제거
20
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make bzImage
커널 이미지 빌드
21
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make modules
모듈 빌드
22
OPERATING SYSTEM LAB
3 커널 2.4 빌드
make modules_install
컴파일된 모듈을 /lib/modules 에 설치
23
OPERATING SYSTEM LAB
3 커널 2.4 빌드
새로 컴파일된 커널 이미지 설치
cp /usr/src/linux-2.4.32/arch/i386/boot/bzImage /boot/vmlinuz-2.4.32
grub 설정 변경 : vim /boot/grub/menu.list
24
OPERATING SYSTEM LAB
3 커널 2.4 빌드
리눅스 커널 2.4.32 컴파일 완료!!! 휴 ~
자!! 재부팅 해보실까???
bkluv: reboot
25
OPERATING SYSTEM LAB
3 커널 2.4 빌드
26
OPERATING SYSTEM LAB
3 커널 2.4 빌드
빌드 성공!!! ^.^
27
OPERATING SYSTEM LAB
4 커널 2.6 빌드
make menuconfig
28
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Loadable module support
29
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Module unloading : 모듈 제거 기능 추가
모듈을 원할 때 적재/제거  선택하지 않으면 재부팅 전에는 제거 불가능
Forced module unloading : 모듈 강제 제거 기능 추가
모듈을 제거하는 도중에 문제가 발생하더라고 재부팅 하지 않고 제거 가능 (2.6버전부터)
30
OPERATING SYSTEM LAB
4 커널 2.6 빌드
File systems
31
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Reiserfs 파일 시스템 지원 추가
Reiserfs?
Variable Block Size 기술 이용
블록의 크기를 유동적으로 변경  디스크 용량 낭비 감소
Example > 4 kb 고정 크기 블록에서 4.231 kb 저장시 필요한 블록의 개수?
32
OPERATING SYSTEM LAB
4 커널 2.6 빌드
NTFS 파일시스템의 하드디스크 사용 가능
2.6에서는 읽기/쓰기가 안정적으로 지원됨
33
OPERATING SYSTEM LAB
4 커널 2.6 빌드
필요한 경우만 사용할 수 있게 모듈로 설정
34
OPERATING SYSTEM LAB
4 커널 2.6 빌드
File systems
35
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Native Language Support 다국어 지원 설정
36
OPERATING SYSTEM LAB
4 커널 2.6 빌드
한국어 파일 이름을 사용할 수 있도록 cp949 선택
37
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Device Driver
38
OPERATING SYSTEM LAB
4 커널 2.6 빌드
Device Drivers --->
Network device support --->
Ethernet (10 or 100Mbir) --->
39
OPERATING SYSTEM LAB
4 커널 2.6 빌드
40
OPERATING SYSTEM LAB
4 커널 2.6 빌드
make
41
OPERATING SYSTEM LAB
4 커널 2.6 빌드
make modules_install
“Digest::MD5”를 찾을 수 없음!?
apt-get install libmd5-perl
42
OPERATING SYSTEM LAB
4 커널 2.6 빌드
make modules_install
43
OPERATING SYSTEM LAB
4 커널 2.6 빌드
새로 컴파일된 커널 이미지 설치
cp /usr/src/linux-2.6.16.6/arch/i386/boot/bzImage /boot/vmlinuz-2.6.14.
grub 설정 변경 : vim /boot/grub/menu.list
44
OPERATING SYSTEM LAB
4 커널 2.6 빌드
리눅스 커널 2.6.14.6 컴파일 완료!!! 휴 ~
자!! 재부팅 해보실까???
bkluv: reboot
45
OPERATING SYSTEM LAB
4 커널 2.6 빌드
46
OPERATING SYSTEM LAB
4 커널 2.6 빌드
빌드 성공!!! ^.^
47
OPERATING SYSTEM LAB
5 리눅스 환경의 커널 분석 도구
cscope 데이터 베이스 생성
48
OPERATING SYSTEM LAB
5 리눅스 환경의 커널 분석 도구
cscope 실행
선택 및 편집
tab 키로 이동
검색
49
OPERATING SYSTEM LAB
5 리눅스 환경의 커널 분석 도구
C 심볼들 검색
전역으로 선언 된 정의만 검색
이 함수에 의해 호출되는 함수 검색
이문자열
함수를검색
호출하는 함수들 검색
텍스트
문자열 검색해서 변경
정규식을 이용해서 소스 코드 검색 “ *task* ”
특정 이름을 포함한 파일 검색
특정 헤더 파일을 포함하는 모든 소스 검색
50
OPERATING SYSTEM LAB
NEXT Time..
 ctag, taglist make & vi 통합
 Source Insight (제외)
 윈도우와 Vmware 간에 파일 공유 (제외)
51
OPERATING SYSTEM LAB
Have a good one!!
52
OPERATING SYSTEM LAB