2013년 12월 3일 화요일

[Linux] Kernel Rebuilding

커널 재구축(rebuilding)은 해커나 하는 일처럼 들리지만 시스템 관리자에게도 중요한 기술이다.
먼저 시스템에 필요없는 장치드라이버를 제거하기 위해 커널을 다시 컴파일 해야 한다.
이 작업은 커널 자체가 사용하는 메모리양을 줄여준다.
커널은 항상 메모리에 존재하며 프로그램에서 메모리를 사용하려고 해도 이를 회수하지 못한다.
일반적인 리눅스 배포판의 커널은 다양한 종류의 하드웨어 설정들을 지원하기 때문에 커널 이미지의 크기가 당연히 증가할 수 밖에 없 다. 또한 사용하지 않는 여타 기능들이 시스템에 최적화하지 못한 상태에서 추가되었으므로 당연히 성능이 떨어진다.
따라서 다음과 같은 이유로 커널을 재구축한다.
-시스템의 보안을 위한 경우.
-새로운 하드웨어를 가동하도록 패치가 발표된 경우.
-시스템의 메모리 요구량을 낮추기 위해 사용하고 있지 않은 기능들을 커널로부터 제거하고자 하는 경우.

먼저 커널의 공식 사이트인 ftp.kernel.org 또는 한국 미러사이트인 ftp.kr.kernel.org에 FTP로 접속 후 /pub/linux/kernel/v2.4 디렉 토리에서 최신 커널을 다운 받는다.
커널은 소스만 바뀔 뿐 메뉴의 내용과 컴파일 방식은 동일하므로 어떤 버전이라도 관계 없으며 여기서는 커널2.4.18을 기준으로 설명한 다.

root@www /usr/src]# tar xvfj linux-2.4.18.tar.bz2
root@www /usr/src]# ln -s linux-2.4.18 linux
root@www /usr/src]# cd linux
root@www /usr/src/linux]# make mrproper
root@www /usr/src/linux]# make menuconfig
커널 컴파일을 위한 옵션 설정이다. Xwindows에서는 make xconfig를 이용하면 GUI인터페이스로 설정이 가능하다.
[*]로 설정되면 해당 메뉴가 선택되어 선택된 기능을 커널에 포함시키는 것이며 커널에 정적(Static)으로 포함시킨다고 표현한다.
[ ]와 같이 공란일 경우에는 메뉴를 선택하지 않아 해당기능을 커널에서 제외하는 것이며, 은 커널에 모듈로 설정하는 것이다.
그리고 하위메뉴로 이동하여 모두 선택한 다음에는 탭이나 방향전환을 이용해 'Exit'를 선택하면 상위메뉴로 이동하고 'Help'를 선택하 면 해당 옵션에 대한 설명을 볼 수 있다.
root@www /usr/src/linux]# make dep
root@www /usr/src/linux]# make clean
root@www /usr/src/linux]# make bzlilo
root@www /usr/src/linux]# mv /vmlinuz /boot/vmlinuz-2.4.18
root@www /usr/src/linux]# mv /System.map /boot/System.map-2.4.18
root@www /usr/src/linux]# vi /etc/lilo.conf
root@www /usr/src/linux]# lilo
root@www /usr/src/linux]# make modules
root@www /usr/src/linux]# make modules_install
root@www /usr/src/linux]# depmod -a 2.4.18
커널 컴파일 속도 높이기
nice는 싱행되는 프로세스에 우선순위를 주는 명령어로서 우선순위가 가장 높은 -20부터 가장 낮은 19까지 설정해 줄 수 있다.
아무런 옵션을 주지 않았을 때 기본적인 프로세스 선호도는 10이므로 가장 우선순위를 높게 하기 위해 -20을 설정해 주면 된다.
nice는 커널 컴파일 뿐만 아니라 다른 프로그램을 컴파일할 때에도 적용이 가능하다.
또한 멀티 CPU일때에는 CPU를 동시에 할당하기 위해 make에 -j 옵션을 사용할 수 있다. 실제 커널 컴파일시 소요되는 시간을 확인하기 위해 time 명령어를 이용하면 된다. # nice --20 make bzlilo
# time make -j 3 dep clean bzlilo

댓글 없음:

댓글 쓰기