BBUWOO'S [ LIKE UNIX ] WORLD Home > Lecture > Kernel > Kernel-2  

HOME
WHAT's BBUWOO?
LInux AnNyung
Open Source
    GitHUB
    GitHUB (for PHP)
LECTURE
MINI LECTURE
QnA BOARD
ENGLISH POEM


WARNNING

강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://oops.org 에서 확인할수 있다.



2. Kernel 2.4.x Installation

이 문서는 커널 2.2 에서 2.4로 업그레이드를 하기 위한 참조 문서이다. 이 문서는 devfsd 를 사용하지 않을 경우에 한정하며, 커널 컴파일의 경 험이 있는 사람들이 kernel을 2.4로 update 할때 쉽게 하기 위해 제공을 한다. 초보자들은 2.2.x커널 부터 확실하게 컴파일 하는 법을 본후에 이 문서를 보도록 하기 바란다. 질문은 사절한다. devfsd 를 사용할 경우는 http://kernel.pe.kr 에서 설치 문서를 찾을수 있다. 주의: IPTABLES 를 이용한 방화벽을 구성하려는 사람은 커널 2.4.4 이상을 사용 해야 한다. 2.4.3 까지는 보안홀이 존재한다.

1. 필요한 pacakge

o Gnu C 2.91.66 # gcc --version o Gnu make 3.77 # make --version o binutils 2.9.1.0.25 # ld -v o util-linux 2.10o # fdformat --version o modutils 2.4.0 # insmod -V o e2fsprogs 1.19 # tune2fs --version o pcmcia-cs 3.1.21 # cardmgr -V o PPP 2.4.0 # pppd --version o isdn4k-utils 3.1beta7 # isdnctrl 2>&1|grep version 우측의 명령으로 버젼을 확인하여 최소한 좌측에 나와 있는 버젼이 설치 되어 있어야 한다. RH6.2 를 사용할 경우 util-linux, modutils, e2fsprogs 만 설치해 주면 된다. pcmcia-cs 는 notebook에서나 필요하며 PPP와 isdn4k-utils 는 ppp와 isdn을 사용하는 사람들만 체크를 하면 된 다. ftp://mirror.oops.org/pub/Linux/Redhat/UPDATES/6.2/RPMS 에서 레드 햇 호환 배포본을 사용하는 사람들은 rpm 으로 패키징 된 package 들을 구 할수 있다. e2fsprogs-1.19-0.2.i686.rpm e2fsprogs-devel-1.19-0.2.i686.rpm ksymoops-2.4.1-1.i686.rpm (kernel-utils-2.4.1-1.i686.rpm 로 패키징 되어 있다) mkinitrd-2.8-1.i686.rpm modutils-2.4.0-2.i686.rpm util-linux-2.10p-3.i686.rpm file들을 받아서 설치를 하라.

2. kernel compile

다음 /usr/src 에서 ftp://mirror.oops.org/pub/Linux/Kernel/v2.4/ 의 linux-2.4.0.tar.gz 나 linux-2.4.0.tar.bz2 를 다운 받는다. 일단 /usr/src에 linux라는 soft link가 존재 한다면 삭제를 한후 gzip file의 경우 [ /usr/src ]# tar xvfpz linux-2.4.0.tar.gz 명령을 실행하고 bzip2 file을 받았을 경우에는 [ /usr/src ]# bzip2 -cd linux-2.4.0.tar.bz2 | tar xvf - 명령을 실행하면 linux 라는 directory 이름으로 압축이 풀린다. 그러면 linux라는 이름의 directory를 linux-2.4.0 으로 수정을 하며 다음의 명 령을 차례대로 수행을 하도록 한다. [ /usr/src ]# mv linux linux-2.4.0 [ /usr/src ]# ln -sf linux-2.4.0 linux [ /usr/src ]# cd /usr/include [ /usr/include ]# rm -rf linux [ /usr/include ]# rm -rf asm [ /usr/include ]# ln -sf ../src/linux/include/linux linux [ /usr/include ]# ln -sf ../src/linux/include/asm-i386 asm 다음 linux directory로 이동을 하여 다음의 명령을 이용하여 커널을 컴 파일 하도록 한다. cd /usr/src/linux make mrproper make menuconfig (config, menuconfig, xconfig 중 선택하면 된다. xconfig는 xwindow에서만 가능하다) make dep make bzImage (I는 대문자 "아이" 이다) make modules make modules_install 의 순서대로 하면 된다. 아래의 부분은 꼭 설정을 하도록 하자. 개발 코드를 사용하기 위하여 ------------------------------------------------------------------ Code maturity level options --> ------------------------------------------------------------------ [*] Prompt for development and/or incomplete code/drivers ------------------------------------------------------------------ cpu속도 향상을 위한 설정....예.. ------------------------------------------------------------------ Processor type and features --> ------------------------------------------------------------------ (Pentium-Pro/Celeron/Pentium-II) Processor family -> 자신의 CPU에 맞게 <*> /dev/cpu/microcode - Intel IA32 CPU microcode support <*> /dev/cpu/*/msr - Model-specific register support <*> /dev/cpu/*/cpuid - CPU information support [*] MTRR (Memory Type Range Register) support -> graphic 가속을 높임 ------------------------------------------------------------------ 제일 마지막의 MTRR은 꼭 체크를 하자. 하면 좋은 것이다. :-) X 상에서의 비디오 가속을 위하여 다음을 확인한다. ------------------------------------------------------------------ Character devices --> ------------------------------------------------------------------ <*> /dev/agpgart (AGP Support) [*] Inten 440LX/BX/GX and I815/I840/I850 support ... [*] Direct Rendering Manager (XFree86 DIR support) 자신의 카드가 있으면 설정 < > 3dfx Banshee/Voodoo3* < > 3dlabs GMX 2000 < > ATI Rage 128 < > Intel I810 <*> Matrox g200/g400 ------------------------------------------------------------------ ------------------------------------------------------------------ Console drevers --> ------------------------------------------------------------------ Frame-buffer support --> ------------------------------------------------------------------ [*] Support for frame buffer devices (EXPERIMENTAL) .. (여기서도 자신의 카드가 있으면 설정) ------------------------------------------------------------------ 이정도만 체크를 하고 나머지는 http://kernel.pe.kr/data/doc/Kernel24_Intro-2.html 의 커널 옵션 체크 부분을 참고 하도록 한다. make modules_install 명령까지 모두 커널 컴파일을 마쳤을 경우 /boot directory 로 이동을 하여 다음의 명령을 수행한다. [ /boot ]# cp -af /usr/src/linux/arch/i386/boot/bzImage ./vmlinuz-2.4.0 [ /boot ]# cp -af /usr/src/linux/System.map ./System.map-2.4.0 [ /boot ]# rm -rf ./System.map [ /boot ]# ln -sf System.map-2.4.0 ./System.map 위의 명령을 마친후 다시 /etc로 이동을 하여 lilo.conf 를 수정을 한다 알짜 6.2 의 경우에는 아래와 비슷할 것이다. 아래는 나의 lilo.conf 의 내용이다. [ /etc ]# vi lilo.conf lba32 boot=/dev/hda map=/boot/map install=boot/boot.b prompt timeout=50 default=linux ---- 추가 부분 --------- image=/boot/vmlinuz-2.4.0 label=linux append="devfs=nomount" read-only root=/dev/hda2 ---- 추가 부분 --------- image=/boot/vmlinuz-2.2.14-11az2 label=linux1 read-only root=/dev/hda2 위와 같이 아래의 image 부분을 상단에 그대로 copy를 한후에 첫줄의 image=/boot/vmlinuz-2.2.14-11az2를 image=/boot/vmlinuz-2.4.0으로 수 정을 해주고 하단의 label을 linux 에서 linux1로 변경을 했다. 만약 부 팅에 실패를 할 경우 lilo에서 lilo: linux1 명령으로 원 커널로 접속이 가능하다. 추가 부분의 append="devfs=nomount"는 devfs를 사용하지 않겠다는 의미 이다. 사용할 때는 append="devfs=mount" 로 해 주면 된다. 여기서는 사 용하지 않을 경우이기 때문에 nomount로 한다. lilo 수정을 마쳤으멸 lilo를 생신한다. [ /etc ]# lilo added linux* added linux1 [ /etc ]#

3. 추가 설정 변경

다음 몇몇 파일을 수정을 해 줘야 한다. 차례 대로 따라하도록 하자. 일 단 vi로 /etc/rc.d/rc.sysinit 를 열도록 한다. 다음 명령 모드 에서 conf.modules 를 모두 modules.conf 로 수정을 하도록 한다. :%s/conf.moduels/modules.conf/g 로 하면 되겠다. 그리고 shm 공유메모리 설정을 하도록 한다. 일단 /var/shm 이라는 디렉 토리를 생성하도록 한다. 그리고 /etc/fstab 에서 다음의 설정을 추가해 주도록 한다. none /var/shm shm defaults 0 0 만약 현재 업을 하려는 커널이 2.4.4 이상이라면 다음과 같이 설정을 해 야 한다. 2.4.4 부터 변경된 사항이다. tmpfs /var/shm tmpfs defaults 0 0 다음 /etc/securetty file을 다음과 같이 수정을 하도록 한다. [ /etc ]# vi securetty tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 1 2 3 4 5 6 그리고 /etc/security/console.perms 에서 # file classes -- these are regular expressions <console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] 부분을 다음과 같이 수정한다. # file classes -- these are regular expressions #<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] (주석 처리했다) <console>=tty[0-9][0-9]* [0-9][0-9]* :[0-9]\.[0-9] :[0-9] 그리고 리부팅을 하면 커널 2.4 로 부팅이 될 것이다. 혹시 부팅후 콘솔로 로그인이 되지 않을수가 있다. 이때에는 linux single 모드로 부팅을 한후 /etc/securetty file을 다음과 같이 수정을 하도록 한다. [ /etc ]# vi securetty tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 vc/1 vc/2 vc/3 vc/4 vc/5 vc/6 vc/7 vc/8 1 2 3 4 5 6 같이 한후에 다시 부팅을 하여 로그인을 해 보도록 한다. 성공하여 2.4.0의 세계에 동참을 해 보도록.. :-)

4. Kernel Level Turning

Kernel Level 튜닝은 커널의 최적화 부분에 대해서 다루게 된다. 다음장에
서 보게될 sysctl 을 이용하면 kernel compile을 하지 않고도 임의로 커널
parameter 값들을 수정을 할수가 있다. 이것에 대한 설정들과 문서들은 다
음장에서 계속 설명을 할 것이며, 여기서는 sysctl 로서 변경을 하지 못하
는 값들을 다루려고 한다. 즉 변경하려면 kernel compile을 해야지만 변경
할수 있는 몇몇 값들을 말한다.

/usr/src/linux/include/linux/fs.h

  

  시스템 전체에서 동시에 열수있는 File의 갯수 제한이다. 기본값은 8192
  로 시스템이 받쳐줄 경우에 더 크게 늘릴 수도 있다. 이 값은 sysctl 의
  file-max 에서 수정이 가능하므로 기본값으로 두어도 상관이 없다. 커널
  2.2 에서는 기본값이 4096 으로 커널 2.4 에서는  8192 로 증가 하였다.
  limit 계산은 램 4M 당 256 개 정도로 계산을 하면 된다. 기본값 8192는
  128 M 의 RAM 을 기준으로 한다.

  

  이 값은 좀 애매하다.  수정은 분명히 필요한 부분인데 문서마다 조금씩
  설명이 다르다. 이 값은 프로세서(또는 유저) 하나당 열수 있는 file 의
  갯수를 의미한다. 보통 문서들에는 프로세서 하나당으로 설명이 되어 있
  는데 이 경우 limit.h 에서 OPEN_MAX 와 충돌이 난다.
  limit.h 의 OPEN_MAX 값의 주석을 보면  /* # open files a process may
  have */ 와 같이 되어있다. 필자의 견해로는 프로세서가 아니라 유저 하
  나당이 아닐까 생각이 된다.

  일단 이 값은 RAM 이 넉넉할 경우 4096 정도로 잡아준 다음 각 시스템의
  성능 개선 여부에 따라 적절하게 맞춰주는 작업이 필요하다. 계정서비스
  에서는 이 값을 크게 주는 것을 권장하지 않는다. 단일 서비스의 경우에
  는 root 유저에게 거의 file-max 의 값정도로 지정해 줄수도 있다.

/usr/src/linux/include/linux/tasks.h

  이 파일은 커널 2.4 에서는 삭제가 되었다. 즉 제한이 없어졌다.

/usr/src/linux/include/linux/limits.h

  

  fs.h 에서 변경한 INR_OPEN 의 값과 동일하게 지정을 하도록 한다.

  

  512 로 증가를 해 주도록 한다.


/usr/src/linux/include/linux/uts.h

  

  uname 명령을 실행하면 자신이 사용 하고 있는 커널의 OS 이름이 나오게
  된다.  보통 Linux 는 Linux 라고 나오며 위의 변수에서 지정이 된 것이
  출력이 되게 된다. 이것을 보여주고 싶지 않다면 위의 변수값을 수정 하
  면 된다.

  하지만 위의 값을 수정했을 경우 program들을 compile을 하거나 package
  관리자를 이용하여 package들을 설치할때 OSTYPE 에러를 만날수가 있다.
  그러므로 커널 내부와 compile 에 대한 지식이 없다면 이를 수정하는 것
  을 절대 권장하지 않는다.

  심심한 사람들만 한번 해보기 바란다. :-)


이 외의 값들은 sysctl 을 이용하여 수정을 할수 있다. 그럼 sysctl 의 설
정에 대해서 알아 보도록 한다.



>> 이전 : Changes from 2.2 to 2.4 >> 다음 : Sysctl Configuration for Kernel parameters



    



 Home > Lecture > Kernel > Kernel-2

Copyright 1997-2024 JoungKyun Kim 
LAST MODIFIED: 2017/01/18