본문 바로가기

리눅스

[Linux] 커널 컴파일

(1) 컴파일전 장치 정보 확인

  • cat /proc/cpuinfo ( cpu정보 확인 )
  • cat /proc/meminfo ( memroy정보 확인 )
  • lspci (Lan 카드 정보 확인)
  • lsmod (로딩된 모듈 정보 확인)

 

(2) 소스 다운 받기

  1. [소스 검색 : http://rpmfind.net]
  2. [wget을 이용한 다운로드]
    1. wget ftp://rpmfind.net/linux/redhat/updates/enterprise/4AS/en/os/SRPMS/kernel-2.6.9-55.EL.src.rpm

 

(3) 커널 소스 설치(*.src.rpm)

  • rpm –ivh kernel-2.6.9-42.0.10.EL.src.rpm
    • rpm –ivh로 *.src.rpm를 설치하면 /usr/src/redhat/SPECS/kernel-2.6.spec 이라는 파일이 생긴다. 이후에 rpmbuild –bp를 이용하여 커널소소를 설치한다.
  • rpmbuild –bp -–target=noarch /usr/src/redhat/SPECS/kernel-2.6.spec.

 

(4) 커널 심볼릭 링크 걸기

  • cd /usr/src/redhat/BUILD/kernel-2.6.9
  • mv linux-2.6.9/ /usr/src/
    • 커널소스를 /usr/src/ 디렉토리로 이동시켜준다.
  • ln –sf /usr/src/linux-2.6.9 /usr/src/linux
    • 커널소스 컴파일시 커널소스를 /usr/src/linux로 인식하는 경우가 있으므로 심볼릭 링크를 연결해준다.

    Makefile 수정

 

(5) 네트워크 설정 최적화 (웹서버 설정 최적화)

  • cd /usr/src/linux-2.6.9/include/net
    • cat tcp.h | grep TIMEWAIT – tcp.h의 값을 확인한다.
      • #define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
    • vi tcp.h - tcp.h 값 수정하기
      #define TCP_TIMEWAIT_LEN (1*HZ) /* how long to wait to destroy TIME-WAIT

(6) 메모리 설정 확인

  • cat /usr/src/linux/openzonewww2_as44_uni1224.conf | grep high
    • CONFIG_HIGHMEM4G=y
    • # CONFIG_HIGHMEM64G is not set

(7) 커널컴파일

  • make mrproper
    • 기존의 커널 설정을 초기화, 커널모듈 초기화 및 원래의 커널 상태로 회귀한다.
    • (처음부터 커널을 다시 설정하고자 할 때 사용)
  • make menuconfig (커널 설정 요소를 선택해주는 명령어)
    • #수정 부분
    • code maturity level options
    • []Prompt for development and/or incomplete code/drivers(제거)
    • # Processor type and features
    • [] Allocate 3rd-level pagetables from highmem (제거)

 

 

[make menuconfig 수행시 화면]

 

[최적화 설정]

(필수 선택 옵션)
[File systems]

-> EXT3 journalling file system support (필수선택)

 

**주의 옵션

서버에 설치된 물리적 메모리의 용랴잉 4G 이상 장착시 반드시 High Memory Support에서
64GB 선택

 

 

(선택해제 옵션 목록)

[Processor type and features] # 노트북에 설치할 것이 아니므로 아래 옵션 선택해제

--> Toshiba Laptop support (선택해제)

--> Dell Laptop support (선택해제)

[Device Drivers]

-> Sound

--> Sound card support (선택해제)

-> Networking support

--> Bluetooth subsystem support (선택해제)

-> Networking support

--> PPP (point-to-point protocol) support (선택해제)

-> Networking support

--> PCMCIA network device support

---> PCMCIA network device support (선택해제)

-> Networking support

--> FDDI driver support (선택해제)

-> ISDN subsystem

--> ISDN support (선택해제)

-> Multimedia devices

    --> Video For Linux (선택해제)

-> InfiniBand support

    --> InfiniBand support (선택해제)

## 커널 컴파일 관련 설정 작업이 끝나면 설정 정보 저장 후 커널 컴파일 작업 수행

  • make deps (의존성 검사 – 2.6 버전에서는 사용하지 않아도 됨)
  • vi Makefile (생성될 이미지 파일 이름 변경)
  • make
  • make bzImage
    • 커널 이미지 생성에 기여
  • make modules
  • make modules_install
  • make install
    • 커널 이미지를 생성 ,/boot에 커널 이미지 복사 ,grub 정보까지 변경

(7-1) 저장된 커널 설정과 불러오기

  • Load An Alternate Configuration File 선택 후 적용할 커널 파일명 입력

  • 커널 설절 파일명 선택 : 예 ) dell2950-rhel4.5-standard.config
  • 설정 정보 확인 후 커널 컴파일 작업 진행

 

(8) 커널 업데이트 확인 사항

  • /boot/grub/grub.conf 파일 확인 ( 이미지가 생성 되었는지 확인 및 default=0 값 변경)
  • #sync
  • init 6
    • reboot 후 커널 업데이트 사항 확인
    • uname –r
    • cat /proc/version
    • cat /proc/meminfo (물리적 메모리 용량과 시스템에서 확인 메모리가 용량이 맞는지 확인)
    • cat /proc/cpuinfo

 

(8) 커널 컴파일 Sample script

#!/bin/sh

####### config file copy

#cp default.conf /usr/src/linux

# make mrproper

# make menuconfig

####### config file loading

########################## menuconfig

cd /usr/src/linux

#make deps

make

make bzImage

make modules

make modules_install

make install

 

(9) 커널 업데이트 확인 사항들

  • /boot/grub/grub.conf 파일 확인 (이미지가 생성되었는지 확인 및 default=0 값 변경)
  • #sync
  • #init 6
    • reboot 후 커널 업데이트 사항들 확인
    • uname –r

cat /proc/version

'리눅스' 카테고리의 다른 글

[manual] dns server manual  (0) 2010.05.07
[config] ssh 설정 옵션들  (0) 2010.04.28
[setting] tomcat 설치  (0) 2010.04.28
[setting] app 설치시 옵션  (0) 2010.04.28
[config] Linux 설치후 초기 설정  (0) 2010.04.28