일단 현재 상태에서
make clean 을 합니다. 그런 후에 다음 순서를 지키실것.
기본적으로 커널 소스의 디렉토리는 /usr/src/linux 이다.
커널 컴파일 방법에는 3가지가 있다
1.make config -> 옵션을 잘못 선택하면 처음부터 다시해야하는 단점이 있다.
2.make menuconfig -> 가장 추천하는 방법(단, ncurses가 있어야 한다.)
3.make xconfig -> X에서 볼수 있다.( 화려하다. 그냥 구경한번 해보길...)
시스템 사양을 잘 알아야 한다.(이더넷 카드, 사운드 카드, CPU가 몇개(?)인지등...)
어떠한 환경에서 사용할건지 결정하여야 한다.(커널의 최적화를 위해...)
Kernel Compile Option
꼭 주의깊게 살펴볼것!!(나에게 어떤 옵션이 필요한지 볼것)
따라하기
1. 커널 소스를 받는다.( http://www.kr.kernel.org/pub/linux/kernel/) 2. 소스를 /usr/src 방으로 옮긴다.(
예: mv linux-2.4.0.tar.gz /usr/src ) 3. 전에 있던 커널소스 /usr/src/linux 디렉은 다른이름으로 바꾸
던지 지워라.(예: mv linux linux-2.2.11) 4. 만약 linux라는 이름으로 심벌릭 링크되어있다면 링크
만 해제하라.(예: rm linux) 5. 커널 소스를 푼다.(예: tar xvvzf 커널버전.tar.gz 또는 tar xvvIf 커널
버전.tar.bz2) 6. linux라는 디렉토리가 생겼을 것이다. 그 디렉으로 들어간다.( cd linux )
7. make menuconfig 를 한다.( 현재 위치 /usr/src/linux )
8. 커널 컴파일 옵션을 보고 시스템에 맞는걸 선택한다.(중요하다!)
9. make dep 를 한다.(의존성을 검사)
10. make clean 을 한다.(찌꺼기들을 없앤다)
11. make bzlilo 한다(커널 이미지를 압축생성한다)
12. cd / 한다( / 방에 vmlinuz, System.map 이라는 파일이 생겼을 것이다)
13. mv vmlinuz /boot/vmlinuz-커널버전 (예: mv vmlinuz /boot/vmlinuz-2.2.12)
14. mv System.map /boot/System.map-커널버전 (예: mv System.map /boot/System.map-2.2.12)
15. 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
16. /sbin/lilo 해준다.( lilo.conf의 내용을 인식시켜 주기위해 )
17. 여기까지 커널 컴파일은 과정은 끝.
모듈 인스톨 하기
커널 옵션에서 모듈(M)으로 선택한것을 컴파일 하기위해
cd /usr/src/linux 방에 들어간다.
make modules 한다.
make modules_install 한다.
위와같이 하면 '/lib/modules/커널버전' 디렉에 모듈들이 위치한다.
추천 커널 관련 사이트
http://linuxkernel.to : 이호(flyduck)님의 홈페이지 입니다.
: 안녕하세요. make menuconfig 시 에러가 발생되어 글 올립니다.
: 제발 가르쳐 주세요.
: 에러 메시지가 뭐이리 복잡한지.
: 고수님들 꼭 가르쳐 주시리라 믿습니다.
:
: [root@www linux]# make menuconfig
: rm -f include/asm
: ( cd include ; ln -sf asm-i386 asm)
: make -C scripts/lxdialog all
: make[1]: Entering directory `/usr/src/linux-2.2.16/scripts/lxdialog'
: gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
: -c -o lxdialog.o lxdialog.c /bin/sh: gcc: command not found
: make[1]: *** [lxdialog.o] Error 127
: make[1]: Leaving directory `/usr/src/linux-2.2.16/scripts/lxdialog'
: make: *** [menuconfig] Error 2