728x90
반응형
출처 : www.kernel.pe.kr
Kernel Compile
배경지식
- 기본적으로 커널 소스의 디렉토리는 /usr/src/linux 이다.
- 커널 컴파일 방법에는 3가지가 있다
- make config -> 옵션을 잘못 선택하면 처음부터 다시해야하는 단점이 있다.
- make menuconfig -> 가장 추천하는 방법(단, ncurses가 있어야 한다.)
- make xconfig -> X에서 볼수 있다.( 화려하다. 그냥 구경한번 해보길...)
- 시스템 사양을 잘 알아야 한다.(이더넷 카드, 사운드 카드, CPU가 몇개(?)인지등...)
- 어떠한 환경에서 사용할건지 결정하여야 한다.(커널의 최적화를 위해...)
- Kernel Compile Option
- 꼭 주의깊게 살펴볼것!!(나에게 어떤 옵션이 필요한지 볼것)
- 제 2회 리눅스 공동체 세미나 자료에서 추출(이규호님께 감사)
- 커널 2.4 Intro중 커널옵션설정
- 일반적인 데스크탑 PC사양에서 필요로하는 커널옵션들을 설명하고있다.
- 커널 소스를 받는다.( http://www.kr.kernel.org/pub/linux/kernel/)
- 소스를 /usr/src 방으로 옮긴다.(예: mv linux-2.2.12.tar.gz /usr/src )
- 전에 있던 커널소스 /usr/src/linux 디렉은 다른이름으로 바꾸던지 지워라.(예: mv linux linux-2.2.11)
- 만약 linux라는 이름으로 심벌릭 링크되어있다면 링크만 해제하라.(예: rm linux)
- 커널 소스를 푼다.(예: tar xvvzf 커널버전.tar.gz 또는 tar xvvIf 커널버전.tar.bz2)
- linux라는 디렉토리가 생겼을 것이다. 그 디렉으로 들어간다.( cd linux )
- # make menuconfig ( 현재 위치 /usr/src/linux )
- 커널 컴파일 옵션을 보고 시스템에 맞는걸 선택한다.(중요하다!)
- # make clean (예전 오브젝트 파일 제거)
- # make dep (의존성을 검사)
- # make bzImage (커널 이미지를 압축생성한다.)
- # mv arch/i386/boot/bzImage /boot/vmlinuz-커널버전 (예: mv arch/i386/boot/bzImage /boot/vmlinuz-2.2.12)
- # mv System.map /boot/System.map-커널버전 (예: mv System.map /boot/System.map-2.2.12)
- # vi /etc/lilo.conf ( 리로를 편집한다 )
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.2.12 -> 새로운 커널이미지를 linux라는 label=linux ? 레이블로 한다. root=/dev/hda1 read-only image=/boot/vmlinuz-2.2.11 -> 혹시나 모를 커널 패닉에 대비하여 label=old 예전 커널을 old란 레이블로 해놓는다. root=/dev/hda1 (예전 버전이 2.2.11일때) read-only
- # /sbin/lilo ( lilo.conf의 내용을 인식시켜 주기위해 )
- 여기까지 커널 컴파일은 과정은 끝.
- 커널 옵션에서 모듈(M)으로 선택한것을 컴파일 하기위해
- # cd /usr/src/linux
- # make modules
- # make modules_install
- 위와같이 하면 '/lib/modules/커널버전' 디렉에 모듈들이 위치한다.
Kernel Patch
- 패치란 매번 커널이 바뀔때 마다 13MB가 넘는 커널 소스를 다시 받을 필요없이 바뀐 차이점만 담고있는 작은 용량의 파일로 커널을 업하는걸 말한다.
- 장점 : 적은용량으로 패치파일로 커널을 금방 업 할 수 있다.
- 단점 : 중간의 한 단계를 건너 뛸 수 없다. 예를들어 현재 커널 버전이 2.2.10 인데 바로 2.2.12로 패치 할 순없다.(꼭 2.2.11을 패치하고 나야 된다)
- 패치 파일을 다운받아 bzip2이든 gzip으로 압축되어있던지 간에 압축을 푼다.
- 압축을 푼후 /usr/src/linux 방으로 옮긴다.
- # patch -p1 < 패치파일?
- 에러 없이 넘어가면 다음은 커널 컴파일 과정과 같다.
- 만약 압축을 풀지않고 패치하려면 gzip 또는 bzip2에 따라 다음과 같이한다.
- # gzip -cd 패치파일.gz | patch -p1(물론 패치파일의 위치는 /usr/src/linux)
- # bzip2 -cd 패치파일.bz2 | patch -p1
반응형
'[OS] > Embedded' 카테고리의 다른 글
[펌] gprof를 사용한 프로파일링 (0) | 2005.09.09 |
---|---|
[펌] gcc 이야기(5) (0) | 2005.09.06 |
[펌] gcc 이야기(6) (0) | 2005.09.06 |
[펌] gcc 이야기(4) (0) | 2005.09.06 |
[펌] gcc 이야기(3) (0) | 2005.09.06 |