본문 바로가기

리눅스

[리눅스] 커널 컴파일

728x90

커널 컴파일

커널 컴파일 순서
cd /usr/src
make mrproper(make clean)

 커널컴파일 시 문제가 되는 이전에 생성되어있던 오브젝트 파일(*.o)들을 삭제(정리)하는 작업
make menuconfig

 커널 컴파일 환경을 설정하고, 설정내용을 .config 파일에 생성
make bzImage

 /usr/src/linux-2.6.18/arch/i386/boot 디렉토리에 bzImage를 생성하는 커널컴파일 과정 수행

 (make dep, clean, bzImage 명령을 make 명령어로 한 번에 처리)
make modules

 커널 모듈 생성. make menuconfig 환경설정에서 (M)로 선택한 모듈 부분을 커널 내부 구성요소에 알려주고 그 구성요소들이  사용될 때 Auto kernel 적재가능하게 설정
make modules_install

 생성된 커널모듈파일들을 새로운 커널이 사용할 수 있도록 '/lib/modules/2.6.17/kernel/' 디렉터리로 복사한다.
make install
 /usr/src/linux-2.6.17/arch/i386/boot/install.sh 스크립트가 실행하면서 필요한 파일들을 /boot 로 이동시키고 링크를 재설정한다 /boot/grub/grub.conf 혹은 menu.list 파일을 자동으로 변경해주어 따로 부트로더 설정할 필요가 없어졌다
grub.conf 수정

[root@ns2 ~]$ cd /usr/src/

[root@ns2 src]$ pwd
/usr/src
[root@ns2 src]$ tar xvfz linux-2.6.16.tar.gz

[root@ns2 src]$ ln -s linux-2.6.16.tar.gz linux
[root@ns2 linux]$ make rmprepro
make: gcc: Command not found
  HOSTCC  scripts/basic/fixdep
/bin/sh: gcc: command not found
make[2]: *** [scripts/basic/fixdep] Error 127
make[1]: *** [scripts_basic] Error 2
make: *** [include/config/auto.conf] Error 2

#error 해결방안 : gcc 설치한다
[root@ns2 linux]$
[root@ns2 src]$ rpm -qa | grep gcc
libgcc-3.4.6-10
[root@ns2 src]$
[root@ns2 src]$ yum -y install gcc 

[root@ns2 linux]$ make mrproper
scripts/kconfig/lxdialog/dialog.h:131: warning: array 'attributes' assumed to have one element
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1
make[1]: *** [menuconfig] Error 2
make: *** [menuconfig] Error 2

#error 해결방안 : ncurses-devel 설치한다
[root@ns2 linux]$ yum list ncurses
Setting up repositories
Reading repository metadata in from local files
Installed Packages
ncurses.i386                             5.4-15.el4             installed
[root@ns2 linux]$ yum -y install ncurses-devel
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
....
생략
.....
Running Transaction
  Installing: ncurses-devel                ######################### [1/1]

Installed: ncurses-devel.i386 0:5.4-15.el4
Complete!
[root@ns2 linux]$ make mrproper
  CLEAN   scripts/basic
  CLEAN   scripts/kconfig
[root@ns2 linux]$ make menuconfig
[root@ns2 linux]$ make bzImage
...
생략 
...
 BUILD   arch/i386/boot/bzImage
Root device is (8, 3)
Boot sector 512 bytes.
Setup is 6991 bytes.
System is 1865 kB
Kernel: arch/i386/boot/bzImage is ready  (#1)
[root@ns2 linux]$ make modules
  CHK     include/linux/version.h
...
생략
...
[root@ns2 linux]$ make modules_install
[root@ns2 linux]$ make install
[root@ns2 linux]$ vi /etc/grub.conf


###[참고]
[root@ns2 src]$ make rmprepro
make: *** No rule to make target `rmprepro'.  Stop.
#make Stop : 현재 디렉토리가 커널이 있는 디렉토리에 위치해 있는지 확인해 본다.
728x90