커늘 컴파일 가이드

    윤봉환(electuz@chollian.net)

 

 

개요  

이 문서에서는 초보를 위해 커널과 커널 컴파일에 대해 다룬다.  커널 소스의 설치와 세부 환경설정, 컴파일과 새 커널 설치에 대해 이야기할 것이다.

      1. 커널
        1.1. 커널의 두 갈래
        1.2. 커널 2.2

      2. 커널 소스 구하기
        2.1. 배포판 CD-ROM
        2.2. FTP Site
        2.3. 리눅스 유저 그룹

      3. 커널 소스 설치하기
        3.1. 커널 소스 풀기
        3.2. 커널 패치
        3.3. make mrproper

      4. 컴파일 환경 설정
        4.1. 컴파일 환경 설정 명령
        4.2. 환경 설정 규칙
        4.3. 커널 컴파일 설정 옵션

      5. 커널 컴파일
        5.1. 청소
        5.2. 커널 컴파일
        5.3. 모듈 컴파일

      6. 새 커널 설치
        6.1. 부트 이미지 설치
        6.2. /etc/lilo.conf
        6.3. LoadLin 
        6.4. Notebook computer 사용자

1. 커널

    커널은 운영체제의 핵심이다.  운영체제의 커널은 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스를 관리하고 입출력을 처리하며 유저의 다양한 요구에 바로 반응한다.
    리눅스의 다른 풀그림들처럼 커널도 소스 형태로 배포된다.  커널 소스는 모든 배포판에 들어 있으며 ftp나 BBS 유저그룹을 통해 다운받을 수 있다.  그리고 컴파일을 위한 환경은 잘 만들어진 몇 가지 스크립트를 이용하여 쉽게 설정할 수 있다.  그리고 커널 해킹을 위한 문서 또한 쉽게 구할 수 있다.  리눅스의 진정한 자유와 힘이 느껴지지 않는가?
    리눅서는 시스템에 가장 적합한 작은 커널을 만들어 리눅스 박스의 성능을 최대로 끌어 올린다. 새 커널을 생성해 빠르게 등장하는 진보된 기능을 사용하거나 새로운 장치를 지원한다. 그리고 리눅서는 기쁨을 얻는다.

    1.1 커널의 두 갈래

      리누스(Linus Torvalds)와 많은 해커들의 노력으로 커널은 매우 빠르게 진보하고 있다. 그러나 빠른 성장, 기능 향상은 커널의 수정과 새로운 기능을 더하는 과정에서 문제가 발생하기도 한다.  개발자들은 안정성과 발전을 위해 리눅스의 커널을 두 가지 버전으로 부른다.

      새로운 기능들이 실험되는 개발과정의 커널을 개발버전(Developmental version)이라 부르며, 새로운 것에 열광적인 리눅서와 테스터, 개발자를 위한 버전이다.  개발버전은 많은 테스트와 패치 과정을 거쳐 안정버전(Stable version or production)으로 일반 사용자들에 배포된다.

      커널의 버전번호는 2.0.36 또는 2.1.35와 같이 세 부분으로 구성되어 있다.  처음의 숫자는 커다란 변화가 있을 때 바뀌는 주 버전 번호이다.  가운데 숫자는 짝수일 때 안정버전을 뜻하고 홀수일 때 개발버전임을 알려 준다.  마지막 숫자는 패치 레블을 나타내는 서브 넘버이다.

    1.2 커널 2.2

      이 글을 쓰는 동안 최근 커널은 2.2.x 버전이다.  커널 2.2에서 새로 추가되거나 나아진 기능들이다.

      - 인텔 외에 AMD나 사이릭스의 CPU를 지원한다.
      - SMP 기능이 향상되어 16개의 멀티 프로세서를 커널 설정메뉴를 통해 쉽게 사용할
         수 있다.
      - PCI가 더욱 안정해졌다.
      - 모듈 기능이 향상되어 더욱 다양한 사운드 카드를 지원하며 IDE 또한 모듈기능으로
         설정할 수 있다.
      - 시리얼 포트 이름이 통일되었다.  입력과 출력에 모두 ttyS를 사용한다.
      - 프레임-버퍼 콘솔(fbcon) 드라이버가 만들어져 SVGAlib와 X서버의 도움을 받지 않고
         커널 자체가 그래픽 기능을 사용할 수 있다.
      - TV 수신 카드와 디지틀 카메라 지원이 나아졌다.

      커널 2.2를 컴파일하기 위해서 아래 유틸리티를 업그레이드해야 한다.

        dhcpcd-1.3.16-0.i386.rpm
        initscripts-3.78-2.4.i386.rpm
        ipchains-1.3.8-0.i386.rpm
        modutils-2.1.121-0.i386.rpm
        net-tools-1.50-0.i386.rpm
        procinfo-15-0.i386.rpm
        samba-2.0.2-0.i386.rpm
        util-linux-2.9-0.i386.rpm

      설치방법은 man 페이지를 참고한다. man rpm

      # rpm -Uvh 패키지이름

 

2. 커널 소스 구하기

    2.1  배포판 CD-ROM

      리눅스 안정버전의 커널은 레드햇 배포판 CD에 포함되어 있다. 커널 소스는 CD-ROM의 RedHat/RPMS 디렉토리 안에 헤더(kernel-header-2.0.36-2.i386.rpm)와 소스(kernel-Source-2.0.36-2.i386.rpm) 두 부분으로 나뉘어 실려 있다. 커널 컴파일을 위해서는 두 패키지를 모두 설치해야 한다.

        # rpm -q kernel-source
        # rpm -Uvh kernel-source-2.0.36-2.i386.rpm

    2.2  FTP Site

    2.3 리눅스 유저 그룹

      천리안, 하이텔 등 통신망의 리눅스 유저그룹(동우회)의 자료실에서 다운 받을 수 있다. 일반 전화회선을 이용한 모뎀 사용자라면 인터넷을 통한 다운로드보다 오히려 빠르게 전송받을 수 있다.  커널 2.2.3는 13MByte 정도 크기이다.

       

3 커널 소스 설치하기

    새 커널을 컴파일하기 위해 업데이트가 필요한 라이브러리나 풀그림이 있는지 확인하여 필요하다면 반드시 새로 설치한다.

    3.1 커널 소스 풀기

      일반적으로 커널 소스는 /usr/src 디렉토리 아래 설치한다.  /usr/src 아래에는 실제 헤더, 커널이 설치된 디렉토리와 그 링크가 있다.  이전 커널이 들어있는 디렉토리에 대한 링크를 삭제하고 새 커널 소스가 설치된 디렉토리를 linux라는 이름으로 다시 링크한다.

        # cd /usr/src
        # rm -f linux
        # mkdir linux-2.2.3
        # ln -s linux-2.2.3 linux
        # tar xvzf linux-2.2.3.tar.gz

      새로 설치한 커널 소스가 개발버전이라면 컴파일 후 정상적으로 작동되더라도 이전의 안정버전을 삭제하지 않도록 한다.  

    3.2 커널 패치

      패치파일은 diff 유틸리티를 이용하여 커널의 부분을 수정한다.  패치파일은 빠르게 갱신되며 새로운 패치파일은 이전 패치에 대한 정보를 포함하지 않는다.  그러므로 패치레블은 순서대로 모두 적용해야만 한다.  패치가 많이 이루어진 후라면 커널 소스를 다시 받는 것이 유리할 수도 있다.
      커널 2.2.0에서 커널 2.2.3로 업그레이드하기 위해서는 patch-2.2.1.gz, patch-2.2.3.gz 모두를 순서대로 적용해야 한다.  아래에 예가 있다.

        # cd /usr/src
        # ls
        linux  linux-2.2.0 patch-2.2.1.gz patch-2.2.2.gz patch-2.2.3.gz
        # gzip -cd patch-2.2.1.gz | patch -p0
        # gzip -cd patch-2.2.2.gz | patch -p0
        # gzip -cd patch-2.2.3.gz | patch -p0

      많은 패치 작업은 쉘의 for 명령을 이용해 자동화할 수 있다.

        # for level in 1 2 3 ; do
        > gzip -cd patch-2.2.$[level].gz | patch -p0
        > done
        #

      /usr/src/linux/scripts 디렉토리에는 여러 단계의 패치 작업을 자동으로 실행하는 스크립트 patch-kernel이 있다.  patch-kernel은 /usr/src 아래에 있는 커널 패치파일들과 커널 소스의 버전과 비교하여 순서에 따라 패치를 적용한다.

        # cd /usr/src
        # ls
        linux  linux-2.2.0 patch-2.2.1.gz patch-2.2.2.gz patch-2.2.3.gz
        # linux/scripts/patch-kernel

      패치가 성공했다면 패치 대상이 된 파일의 원본은 이름 끝에 .orig를 붙여 백업된다.  패치 과정에서 문제가 생겨 실패했다면 실패한 파일 이름 뒤에 .rej를 붙인 파일을 만든다.  *.rej파일을 살펴 보고 패치 작업을 다시 수행한다.

        # find /usr/src/linux -ame “*.rej”

      *.rej 파일을 찾을 수 없고 패치가 성공했다면 *.orig파일을 삭제한다.

        # find /usr/src/linux -name “*.orig” -exec rm -f {   } \;

      패치된 커널 소스 디렉토리 이름을 패치레블 번호로 바꾸고 링크를 다시 설정한다.

        # cd /usr/src
        # rm -f linux
        # mv linux-2.2.0 linux-2.2.3
        # ln -s

    3.3  make mrproper

      커널을 컴파일할 때 만들어진 오브젝트 파일(*.o)과 의존성 설정, 컴파일 환경 설정값, 버전 정보 등 새로 시작하는 컴파일에 영향을 주는 이전 정보들을 삭제한다.

        # cd /usr/src/linux
        # make mrproper

 

4. 컴파일 환경 설정

    4.1 컴파일 환경 설정 명령

      이 문서는 PC 스타일의 시스템을 가진 일반 사용자를 위한 컴파일 환경을 조언한다.  알파 시스템을 가지고 있다면 한글 리눅스 문서 프로젝트 팀의 홈페이지를 찾아가 본다.

      컴파일 환경 설정을 위해 하드웨어 구성 정보를 기록해 둔다.  사운드 카드, 네트워크 디바이스 등의 IRQ, I/O port, DMA addreSS, 그리고 비디오 카드 등 장치의 특성을 알고 있어야 한다.
      환경 설정을 위한 명령의 인터페이스는 make config, make menuconfig, make xconfig 세 가지가 있다.  make는 ‘makefile’에 서술된 규칙을 이용하여 소스코드 파일들을 관리한다.  최근 변경을 적용하여 소스코드를 오브젝트 파일로 컴파일하고 라이브러리 파일과 링크하여 실행 가능한 파일로 컴파일 하는 과정들을 자동으로 처리한다.

      행 단위로 환경 설정을 하는 make config는 bash나 csh에서 실행된다. 세부적인 설정을 할 수 있지만 가장 불편한 인터페이스로 잘 쓰이지 않는다.
      make menuconfig는 메뉴방식의 화면에서 글쇠와 방향키로 메뉴 사이를 옮겨 다닐 수 있다.  “---->” 표시가 있는 곳에서 엔터키를 누르면 하위 메뉴가 열린다.  <ESC>를 두 번 누르거나 <Exit>를 선택하면 상위 메뉴로 올라간다. <h>를 누르면 도움말을 볼 수 있다.

      질문에 대해 Y는 커널에 포함, N은 제외, M은 모듈을 뜻한다.  설정 상태는 [ ] 또는 < > 안에 *(선택), M(모듈), 빈칸(제외)로 표시된다.  모듈기능(M)은 “< >”으로 표시된 질문에만 쓸 수 있다

      설정이 끝났다면 메인 메뉴에서 ‘Save Configration to an Alternate File’을 선택하여 설정 내용을 파일로 저장한다.  저장된 파일은  ‘Load an Alternate Configration File’을 선택하여 읽어들인다.
      make menuconfig는 ncurses(new-curses) Library를 사용한다. ncurses는 화면 입출력에 쓰이는 라이브러리이다.  ncurses가 설치되지 않았다면 실행되지 않는 풀그림들이 많으므로 반드시 설치한다.

        # rpm -Uvh ncurses*

      make xconfig는 X 터미널에서만 사용할 수 있으며 마우스를 이용하여 설정한다. make xconfig를 수행하기 위해서는 X 윈도우와 Tcl/Tk 인터프리터/툴킷 라이브러리가 반드시 필요하다.  주 화면의 ‘Store Configuration to File’항목에서 설정 내용을 파일로 저장할 수 있다.
      컴파일 환경은 /usr/src/linux/arch/i386/config.in에 저장되어 있다.  디폴트 설정을 참고하고 싶다면 사본을 만들어 둔다.

        # cd /usr/src/linux/arch/i386
        # cp config.in{,.old}

    4.2 환경 설정 규칙

      커널은 시스템이 동작하는 동안 계속 메모리에 적재되어 있으므로 환경 설정이 매우 중요하다.  다음 몇 가지 규칙을 잘 알고 반드시 지킨다.

      - 작은 것이 아름답다. 커널 컴파일은 커널 업그레이드 뿐만 아니라 시스템 최적화를
         위해 수행한다는 것을 잊지 말자.  필요 없는 드라이버는 모두 제거한다.
      - 모듈 기능은 반드시 켜둔다.  모듈 로더 설정도 켠다.
      - 도움말은 항상 ‘확실하지 않으면’ 기본 설정을 그냥 두라고 경고한다.
      - 모듈로 설정한 기능은 어떤 이름으로 컴파일 되는지 살펴본다.  모듈 이름은 <F1>
         키를 눌러 도움말 상자에서 확인할 수 있다.
      - 이 문서에서 설정한 환경을 시스템에 그대로 적용하는 것은 결코 좋은 생각이 아니다.
         이 문서는 표준적인 환경설정은 제안하지 않는다.

      잘 모르는 기능은 문서를 확인하여 익힌다.
      - 특정 하드웨어에 대한 문서는 drivers 아래에 있다.
      - 필요하다면 LDP, HOWTO, 뉴스그룹 기사, Readme, 메뉴얼 등 도움을 주는 많은
         문서를 읽어본다.  특히 리눅스 커널 문서 디렉토리 /usr/src/linux/Documentation
         아래 문서들을 읽는다.

    4.3 커널 컴파일 설정 옵션

      1) Code maturity Level options

      코드 성숙도(成熟度)에 관한 설정이다.
      [*] Prompt for development and/or incomplete code/drivers
      Y를 선택하면 개발중인 새로운 기능과 드라이버를 포함할 것인지 조금 더 많은 질문을 한다.  시험적인 기능은 뒷부분에 “(EXPERIMENTAL)”이란 꼬리표가 붙는다.
      이 옵션을 켜 두었을 때 시스템 특성에 따라 에러가 발생하기도 한다.  컴파일 과정이나 부트 중에 생긴 문제의 원인을 정확하게 알 수 없다면 이 옵션에 [N]를 설정해 본다.  이 기능을 선택하지 않아도 안정버전의 모든 기능을 사용할 수 있다.

      2) Processor type and features

      (Pentium/K6/TSC) Processor famiLy
      [ ] Math emulation
      [ ] MTRR (Memory Type Range Register) Support
      [ ] Symmetric multi-processing Support

      Math emulation : 수치연산 보조프로세서(co-processor 또는 부동소수점 연산기)가 없는 386, 486Sx 시스템에서 코프로세서를 에뮬레이션하는 기능이다.

      MTRR (Memory Type Range Resister) Support : 인텔 Pentium II나 Pentium Pro 시스템의 PCI나 AGP 버스 비디오 카드에 유용하다.  이 기능은 이미지를 2.5배이상 빨리 쓸 수 있도록 한다.  MTRR이 없더라도 이 기능을 켜두는 것은 안전하다.

      Symmetric multi-processing Support : 이 곳에 ‘Y’를 답하고 프로세서 패밀리 아래 ‘586’ 또는 ‘Pentium’을 선택하면 486 아키텍쳐에서는 동작하지 않을 것이다.  마찬가지로 ‘PPro’ 아키텍쳐는 모든 Pentium 기반의 보드에서 동작하지 않을 것이다.  SMP를 사용하기 위해서는 “Enhanced Real Time Colck Support” 또한 [Y]를 선택한다.  “Advanced Power Management” 코드는 disable 시켜야 한다.

      See aLSo: Documentation/SMP.txt, Documentation/Smp.txt, 
                     Documentation/IO-APIC.txt,
      FAQ: http://WWW.irisa.fr/prive/mentres/smp-faq

      (PPro/6x86MX) Processor family :
      ( ) 386
      ( ) 486
      ( ) 586/K5/5x86/6x86
      (*) Pentium/K6/TSC
      ( ) PPro/6x86MX

      그럴 일은 없겠지만 자신의 CPU가 어떤 것인지 모른다면 386을 선택해도 잘 동작한다. 물론 정확한 설정이 더 좋다.  커널은 CPU 각각의 특성과 버그에 최적화될 것이다.

      3) Loadable module Support

      리눅스의 멋진 모듈기능에 대한 설정이다.
      [*] Enalble Loadable module Support
      [ ] Set version information on all Symbols for modules
      [*] Kernel module Loader

      Enalble Loadable module Support : version 1.2 이후부터 리눅스는 모듈기능을 이용해 커널에 포함되지 않은 기능을 필요할 때에만 동적으로 메모리에 적재하여 사용한다.  작업이 끝나면 메모리에서 다시 제거하므로 메모리를 효율적으로 사용할 수 있고, 커널 크기가 감소한다.  모듈은 스스로가 컴파일 되어 독자적인 기능을 가지므로 모듈로 설정한 기능에 변화가 있더라도 전체 커널을 손댈 필요가 없어진다.  파일시스템, 장치 드라이버, 바이너리 포맷 등 많은 기능이 모듈을 지원한다.

      Set version information on all Symbols for modules : 다른 버전의 커널에서 만들어진 모듈이나 커널과 함께 배포되지 않는 특별한 모듈을 사용할 수 있도록 하는 기능이다.  일반적으로 [N]를 선택한다.

      Kernel module Loader : kerneld 데몬이 대체된 기능이다.  모듈로 만들어진 기능을 필요할 때 적재하고 제거하는 작업들을 modprobe를 이용해 커널이 자동으로 관리한다.
      모듈 컴파일은 .5.3을 참고한다.

      4) General SetuP

      [*] Networking Support
      [*] PCI Support
      (Any) PCI access mode
      [*] PCI quirks
      [ ] PCI bridge optimization (experimentaL)
      [*] Backward compatible /proc/pci
      [ ] MCA support
      [ ] SGI Visual Workstaion Support
      [*] System V IPC
      [ ] BSD Process Accounting
      [*] Sysctl Support
      <M> Kernel Support for a.out binaries
      <*> Kernel Support for ELF binaries
      <*> Kernel Support for MISC binaries
      < > Kernel Support for JAVA binaries (obsolete)
      <M> Parallel port Support
      <M> PC-Style hardware
      [ ] Support foreign hardware
      [ ] Advanced Power Management BIOS Support

      Networking Support : 반드시 선택한다.  네트워크에 연결되어 있지 않더라도 루프백기능에서 필요하며, 전화선을 통해 인터넷에 접속하는 SLIP, PPP diaL-up 네트워킹에서도 필요하다.  커널을 업그레이드할 때 네트워킹 툴 업데이트를 고려해야 한다.

      PCI bios Support : 대부분 486 시스템, Pentium 이상 기종의 마더보드는 PCI 버스를 지원하는 바이오스를 사용한다.  ISA, EISA, MCA가 아니라면 [Y]를 선택한다.

      (Any) PCI acceSS mode : 오래된 PCI 마더보드 가운데 BIOS가 망가지거나 버그 때문에 PCI 장치들을 찾아내지 못하는 것이 있다.  리눅스는 커널이 BIOS의 도움 없이 하드웨어에 접근할 수 있는데 이 기능에는 세 가지 옵션이 있다.  “BIOS”는 BIOS를 사용하고, “Direct”는 BIOS를 사용하지 않는다.  “Any”는 커널이 직접 접근해 보고 동작하지 않으면 BIOS로 돌아간다.

      PCI quirkS : BIOS가 깨어져 PCI 장치 설정에 문제가 있다면 [Y]를 선택한다.  BIOS가 잘 동작한다면  [N]을 선택한다.

      PCI bridge optimization (experimental) : CPU와 PCI, 또는 PCI와 ISA 사이에 브리지가 있어 서로 다른 버스사이에서 데이터를 전송할 수 있도록 논리적인 기능을 한다.  바이오스에 문제가 있고 PCI 버스를 사용한다면 이 기능을 선택해 장치 엑세스 속도를 향상시킬 수 있다.

      Backward compatibLe /proc/pci : 새로운 방법은 /proc/bus/pci를 사용한다.  하지만 오래된 풀그림들을 가지고 있어 /proc/pci 파일에서 PCI 정보를 읽는다면 [Y]를 선택한다.  확실하지 않다면 [Y]를 선택하는 것이 안전하다.

      MCA : Micro Channel Architecture는 IBM PS/2 머신에서 찾아볼 수 있는데 국내에서는 잘 쓰이지 않는다.  Documentation/mca.txt를 참고한다.

      SGI Visual Workstaion Support : SGI 320이나 540 워크스테이션에서 리눅스를 사용한다면 [Y]를 답한다.  다른 PC 보드에서는 동작하지 않을 것이다.  Documentation/sgi-vws.txt를 참고한다.

      System V IPC(Inter Process Communication) : 프로세스 사이에서 동기화와 정보교환을 위한 라이브러리 함수와 시스템 콜 모음이다.  [Y]를 선택한다.  메모리에 적재되어 실행중인 풀그림이 프로세스이며 풀그림의 영혼이라 불린다.

      BSD Process Accounting : 프로세스가 존재할 때는 언제나 커널에 의해 프로세스 정보가 파일에 추가될 것이다.  프로세스 정보는 생성시간, 소유권, 커맨드 이름, 메모리 점유, 터미널 제어 등이 포함된다.

      Sysctl Support : sysctl 인터페이스는 커널컴파일 재질이나 시스템 재부팅 없이 실행중인 커널 매개변수를 동적으로 변경하는 방법을 제공한다. 주 인터페이스는 시스템 콜로 이루어져 있지만 /proc 파일시스템이 설치되어 있다면 편집 가능한 sysctl 요소 트리는 /proc/sys 디렉토리 아래 생성될 것이다.  커널 크기가 8KB 늘어난다.  그러나 인스톨/복구 디스크를 위한 커널이나 메모리가 매우 적은 시스템이 아니라면 [Y]를 선택하는 것이 좋다.

      Kernel Support for a.out binaries : a.out(assembler.output)은 ELF 이전에 쓰이던 바이너리로 점차 사라져 가는 포맷이다.  정말 필요하다면 모듈로 설정한다[M].  

      Kernel Support for ELF binaries : ELF는 리눅스 바이너리 포맷의 표준이므로 반드시 [Y]를 선택한다.  리눅스 커널과 많이 쓰이는 모든 풀그림들이 ELF 포맷으로 컴파일 된다.  ELF는 a.out에 비해 진보된 기능들을 포함한다.  특히 a.out 포맷은 ELF의 공유 라이브러리의 동적 지원 기능이 없다.

      Kernel Support for MISC binaries : Java, Emacs-Lisp, DOS 실행파일 등을 커널 바이너리 클래스에 등록했다면 쉘 프롬프트에서 파일 이름을 쓰는 것만으로 간단히 풀그림을 시작할 수 있다.  [Y]라고 답했다면 “KerneL Support for JAVA binaries”, “kernel Support for Linux/Intel ELF bianries” 기능은 필요 없다.  Documentation/binfmt_misc.txt를 참고한다.  모르겠으면 [Y]를 선택한다.

      Kernel Support for JAVA binaries : Java(TM)은 SUN에서 개발된 객체지향 풀그림 언어이다.  JDK를 설치하려는 자바 개발자가 아니라면 Java bytecode 바이너리는 모듈이나 [N]를 선택한다.  대부분 유저는 Java 바이너리를 실행할 기회가 거의 없을 것이다.

      Parallel port Support : 패러랠 포트로 프린터나 Zip 드라이브, PLIP 등을 사용하려면 반드시 필요하다.  다음에 나올 설정에서 패러랠 포트와 관련된 옵션에 영향을 준다.  패러랠 포트 하나를 몇 개의 장치가 공유할 수 있다.
      Documentation/parport.txt

      PC-Style hardware : PC 스타일 패러랠 포트를 가지고 있다면 Y를 답한다.  모든 IBM PC 호환기종과 알파 시스템 몇 기종은 PC 스타일 병렬 포트를 가진다.  

      Advanced Power Management BIOS support : 노트북 등 전원관리가 필요한 시스템이라면 설정한다.  
      [ ] Ignore USER SUSPEND
      [ ] Enable PM at boot time
      [ ] Make CPU Idle calls when idle
      [ ] Enable conSole blanking using APM
      [ ] Power off on Shutdown
      [ ] Ignore multiple Suspend
      [ ] Ignore muLtipLe Suspend/resume cycles
      [ ] RTC Stores time in GMT
      [ ] ALLow interrupts during APM BIOS calls

      5) PLug and Play Support

      [*] Plug and Play Support
      < > Auto-probe for parallel devices

      PnP 기능을 사용하려면 설정한다.

      6) Block devices

      블록 디바이스는 플로피 디스크, 하드 디스크, 시디롬처럼 블록단위로 읽고 쓰는 장치이다.

      <*> Normal PC floppy disk Support
      [*] Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy Support
      --- Please See Documentation/ide.txt for help/info on IDE drives
      [ ]  USe old disk-only driver on primary interface
      <*>  Include IDE/ATA-2 DISK Support
      <*>  Include IDE/ATAIP CDROM Support
      < >  Include IDE/ATAPI TAPE Support
      < >  Include IDE/ATAPI FLOPPY Support
      < >  SCSI emulation Support
      [*]  CMD640 chipset bugfix/Support
      [ ]  CMD640 enhanced Support
      [*]  RZ1000 chipset bugfix/Support
      [*] Generic PCI IDE chipset Support
      [*]  Generic PCI bus-master DMA Support
      [ ]  Boot off-board chipsets first Support
      [*]  USe DMA by default when available
      [ ]  OPTi 82C621 chipset enhanced Support
           (EXPERIMENTAL)
      [ ]  ..

      . (ommited)
      [ ]  CMD646 chipset Support (EXPERIMENTAL)
      [ ]  Other IDE chipset Support
      --- Additional Block Devices
      <M> Loopback device Support
      <M> Network block device Support
      [ ] Multiple devices driver Support
      < > Linear (append) mode
      < > RAID-0 (striping) mode
      < > RAID-1 (mirroring) mode
      < > RAID-4/RAID-5 mode
      < > RAM disk Support
      [ ] Initial RAM disk (initrd) Support
      < > XT harddisk Support
      <M> Parallel port IDE device Support

      NormaL PC floppy disk Support : IBM PC나 그 호환 기종에서 사용하는 플로피 디스크 드라이브가 있다면 Y나 M을 선택한다.  PC(personal computer)는 IBM PC와 IBM PC 호환기종의 마이크로 컴퓨터를 일반적으로 지칭하는데 쓰이지만 IBM의 상품 이름 가운데 하나이다.

      Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy Support : 대부분의 PC에서 사용하는 E-IDE (enhanced-Intelligent Drive Electronics, ATA-2) 디바이스 설정이다.  E-IDE는 IDE (ATA : AT Attachment) 인터페이스의 확장된 표준이다.  IDE에 비하여 인식할 수 있는 하드디스크 크기가 커지고 장착할 수 있는 디스크 제한이 4개로 늘어났다.

      USe old disk-only driver on primary interface : [N] 매우 오래된 시스템에만 설정한다.

      Include IDE/ATA-2 DISK Support : 루트 파일시스템이 이 방식의 IDE 디스크에 설치되었다면 모듈 기능으로 컴파일하지 않는다.

      Include IDE/ATAIP CDROM Support : ATAPI는 SCSI 프로토콜을 흉내낸 IDE CDROM과 TAPE 드라이버의 새로운 프로토콜이다.  스커지가 아닌 2배속 이상의 대부분 CDROM은 ATAPI 인터페이스를 사용한다.  “ISO 9660 CDROM filesystem Support”는 반드시 [Y|M]으로 답해야 한다.  

      Include IDE/ATAPI TAPE Support : 테이프 백업 장치 설정이다.

      Include IDE/ATAPI FLOPPY Support : LS-120, IDE/ATAPI Iomega ZIP 드라이브를 지원한다.  이 곳에 [Y|M]를 답하면 플로피 드라이브는 “hdb”나 “hdc”등 이름을 가진 IDE 장치로 인식된다.  패러랠 Zip 드라이브는 SCSI Low-Level drivers에서 설정한다.

      SCSI emulation Support : 새로운 IDE 디바이스들(ATAPI PD-CD or CDR drive etc)이 사용하는 프로토콜이다.  IDE/ATAPI 드라이버에서 지원되지 않는 디바이스를 마치 SCSI 장비인 것처럼 사용한다.  

      CMD640 chipset bugfix/Support : 많은 486과 Pentium 마더보드에 사용된다.  Y를 답하면 커널이 몇 가지 문제점을 바로잡는다.  이 드라이버는 PCI 시스템에서 자동으로 동작하지만 베사 로컬버스(VLB)를 사용한다면 커널 부트 매개변수로 “ide0=cmd640_vlb”를 넣어야 한다.

      Support removable IDE interfaces (PCMCIA) : 노트북 컴퓨터 사용자를 위한 설정이다.

      Generic PCI IDE chipset Support : Intel 82371 PIIX (Triton I/II) DMA Support, Other IDE chipset Support 등 PCI 칩셋을 위한 옵션은 메인보드 메뉴얼을 잘 살펴보고 설정한다.  일반적으로 기본설정을 그냥 두어도 잘 동작한다.

      Loopback device Support : 옵션의 루프백 디바이스는 파일을 블록 디바이스처럼 사용하는 기능이다.  파일 속에 파일시스템을 만들고, 마운트하여 사용할 수 있다.  특별한 파일시스템의 실험, CDROM을 굽기 전에 또는 플로피디스크로 옮길 이미지 테스트, 그리고 암호화 등에 유용하다.

      Network block device Support : 네트워크로 연결된 서버 또는 루프백 서버의 파일시스템을 마운트하여 블록 디바이스(/dev/nd0,...)처럼 사용하는 기능이다.  클라이언트와 서버는 TCP/IP로 통신한다.  NFS나 Coda를 사용한다면 함께 지원할 수 없으므로 [N]를 선택한다.

      Multiple devices driver Support : 여러 개의 블록 디바이스를 하나의 커다란 블록 디바이스처럼 묶어 사용하는 기능이다.  입출력이 분산되므로 디스크를 읽고 쓰는 속도가 훨씬 빨라져 다중사용자 시스템에 매우 유용하다.  RAID-0, RAID-1 (mirroring)은 일반적인 디스크보다 여러 면에서 위험하지만 RAID-5는 에러 복구가 가능하고 RAID-4의 문제점이었던 병목현상이 제거된 안정적인 모드이다.

      RAM disk Support, Initial RAM disk (initrd) Support : 램을 블록 디바이스처럼 사용하는 기능이다.  Linux를 인스톨하는 동안 램에 루트 파일시스템을 생성하기 위해 사용되기도 한다.  대부분 사용자는 램 디스크 기능이 필요 없을 것이다.  /usr/src/linux/Documentation/ramdisk.txt를 읽어본다.

      Initial RAM disk (initrd) Support : 일반적으로 ‘real’ 루트 파일시스템을 마운트할 필요가 있는 모듈을 로드하기 위해 사용한다.  Documentation/initrd.txt

      XT harddisk Support : XT라는 매우 오래된 시스템을 본 일 있는가?[N]

      Parallel port IDE device Support : 패러랠 포트에 연결하는 블록 장치가 있다면 종류와 프로토콜을 설정한다.

      7) Networking options

      네트워크 설정은 조금 까다롭다.  시스템을 정확히 이해하고 바른 설정을 해야 한다.
      <*> Packet Socket
      [ ] Kernel/User netlink Socket
      [ ] Routing messages
      < > Netlink device emulation
      [*] Network firewalls
      [*] Network aliasing
      [ ] Socket Filtering
      <*> Unix domain Sockets
      [*] TCP/IP networking
      [*] IP: multicasting
      [ ] IP: advanced router
      [ ] IP: kernel Level autoconfiguration
      [ ] IP: optimize as router not host
      <M> IP: tunneling
      < > IP: GRE tunnels over IP
      [*] IP: aliasing Support
      [ ] IP: TCP Syncookes Support (not enabled per deault)
      --- (it is Safe to Leave these untouched)
      < > IP: Reverse ARP
      [*] IP: ALLow Large windows (not recommended if <16Mb of memory)
      ---
      <M> The IPX protocol
      [ ] IPX: Full in

      ternal IPX network
      < > IPX: SPX networking (EXPERIMENTAL)
      <M> Appletalk DDP
      < > CCITT X.25 Packer Layer (EXPERIMENTAL)
      < > LAPB Data Link Driver (EXPERIMENTAL)
      [ ] Bridging (EXPERIMENTAL)
      [ ] 802.2 LLC (EXPERIMENTAL)
      < > Acorn Econet/AUN protocols (EXPERIMENTAL)
      < > WAN router
      [ ] Fast Switching (read help!)
      [ ] Forwarding between high Speed interfaces
      [ ] CPU is too Slow to handle full bandwidth
      Qos and/or fair sueing --->

      Packet Socket : tcpdump처럼 매개 프로토콜 없이 직접 네트워크 장치와 통신하는 어플리케이션에서 사용된다.

      Kernel/User netlink Socket : 커널의 어떤 부분들 또는 모듈과 유저 프로세스 사이의 양방향 통신을 허락한다.  유저 프로세스는 /dev 디렉토리로부터 읽거나 쓸 수 있다. routing message 기능과 함께 네트워크 관련 정보를 알리기 위해 사용하고 IP: firewall packet netlink device 기능과 함께 가능한 공격에 대한 정보를 알리기 위해 방화벽 코드에서 사용한다.  arpd 데몬, 네트워크 링크 드라이버를 사용하기 위해서는 [Y]를 선택해야 한다.  확실하지 않으면 [Y]를 선택한다.

      Routing messages : 네트워크 관련 라우팅 정보를 /dev/route에서 읽을 수 있게 하는 기능이다.  이 기능을 버리면 모든 설정 정보를 직접 써야 한다.

      Netlink device emulation : [N] (이 기능은 곧 삭제될 것이다.)

      Network firewalls : 리눅스 박스를 통한 네트워크 방화벽 구축을 위한 몇 가지 설정이다. 네트워크에 연결된 시스템에만 필요하다. ipfwadm 유틸리티가 필요하다. masquerading, forwarding/gatewaying 설정과 함께 매스커레이딩 서비스를 제공할 계획이라면 반드시 설정한다.

      [*] IP: firewalling
      [ ] IP: firewall packet netlink device
      [*] IP: always defragment (required for masquerading)
      [*] IP: transparent proxy Support
      [*] IP: masquerading
      --- Protocol-Specific masquerading Support
      [*] IP: ICMP masquerading
      --- Protocol-Specific masquerading Support
      [*] IP: masquerading Special modules Support
      <M> IP: ipautofw masq Support (EXPERIMENTAL)
      <M> IP: ipportfw masq Support (EXPERIMENTAL)
      <M> IP: ipmarkfw masquerade Support (EXPERIMENTAL)

      IP: always defragment (required for masquerading) : 들어오는 모든 패킷 조각을 항상 다시 조합한다.  특히 IP: masquerading, IP: transparent proxy, IP: firewalling 기능을 사용하려면 반드시 필요하다.  일반적인 라우터나 호스트는 절대 [Y]를 선택하면 안된다.

      IP: transparent proxy Support : 리눅스 방화벽을 원격지 호스트처럼 동작하도록 가장하는 기능이다.

      IP: masquerading : 매스커레이딩은 IP(real IP)를 가진 하나의 호스트에 이더넷이나 모뎀으로 연결된 다른 컴퓨터들이 공식적으로 할당된 IP가 없더라도 인터넷에 연결되도록 하는 기능이다.  가상 호스트 서비스를 위해 반드시 필요하다.  매스커레이딩은 매우 효과적인 네트워크 보안방법이기도 하다.

      IP: ICMP masquerading : ping 등 ICMP 패킷을 지원한다.

      IP: masquerading Special modules Support : 아래에 나오는 포트 포워딩 등 기능을 지원한다.

      IP: ipautofw masq Support (EXPERIMENTAL) : (아직)자신의 프로토콜 helper가 없는 프로토콜의 매스커레이딩을 허락한다.  아직 개발중이며 ipmasqadm 도구가 필요하다.

      IP: ipportfw masq Support (EXPERIMENTAL) : 포트 포워딩은 제공한 포트를 통해서 패킷이 방화벽 안쪽으로 전송되도록 한다.  웹서버는 매스커레이딩 호스트를 통해 인터넷에 접속되며 외부의 클라이언트에게는 방화벽 자체가 웹 서비스를 제공하는 것처럼 보인다.  이 기능은 아직 개발중이며 ipmasqadm 도구가 필요하다.

      IP: ipmarkfw masquerade Support (EXPERIMENTAL) : 포트 포워딩과 유사한 기능을 제공한다.  다른 점은 패킷에 “firewalling mark”를 사용한다는 것이다.

      Network aliasing : 네트워크 드라이버가 여러 개의 주소를 가질 수 있도록 하는 설정이다.  아파치 웹 서버를 이용한 웹 호스팅 서비스 등에 쓰인다.  

      Socket Filtering : 리눅스 소켓필터는 버클리 패킷필터에서 파생되었다. Unix 시스템은 소켓을 통해 프로세스 사이 통신이 이루어진다.

      Unix domain Sockets : 소켓은 네트워크 연결을 개설하고 액세싱하기 위한 표준 장치(mechanism)이다.  리눅스 박스가 어떤 네트워크에도 연결되지 않아도 X 윈도우 시스템이나 syslog 같은 많은 일반적인 풀그림이 소켓을 사용한다.  이 기능을 모듈로 설정하고 모듈 적재를 잊으면(neglect to load the module) 몇 가지 중요한 서비스들이 제대로 동작하지 않을 것이다.  [Y]를 권장한다.

      TCP/IP networking : 네트워크 표준 프로토콜이다.  반드시 [Y]를 선택한다.  

      IP: forwording/gatewaying : 패킷을 중계하는 기능이다.  매스커레이딩을 위해서는 반드시 켠다.

      IP: multicasting : 메시지를 미리 정한 여러 목적지에 보내는 기능이다. 이와 다르게 broadcast는 패킷을 모든 장치가 수신한다.  멀티캐스팅은 부서별 공지, 뉴스 푸시등에 사용되기도 한다.  

      [ ] IP: multicast routing
      [ ] IP: PIM-SM version 1 Support
      [ ] IP: PIM-SM version 2 Support

      IP: advanced router : 리눅스 박스를 주로 라우터로 사용할 계획이라면 설정한다.  라우터는 패킷 경로를 제어하는 것으로 게이트웨이라 불리기도 한다.

      [ ] IP: policy routing
      [ ] IP: fast network address translation
      [ ] IP: equal coast multipath
      [ ] use TOS value as routing key
      [ ] verbose route monitoring
      [ ] Large routing tables

      IP: kernel Level autoconfiguration : 클라이언트 시스템이 부팅할 때 BOOTP 서버로부터 네트워크 설정 정보를 가져오는 기능이다.

      [ ] BOOTP Support
      [ ] RARP Support

      IP: optimize as router not host : 리눅스 박스를 단지 라우터로 동작하도록 설정하는 기능이다.  매스커레이딩에 필요하다.

      IP: tunneling : 한 프로토콜 안에 다른 프로토콜의 자료를 캡슐화하여 서로 다른 프로토콜 사이에서 전송하는 기능이다.  IP 주소 변경 없이 네트워크 사이를 옮겨 다니는 Mobile IP등 기능과 관련된 옵션이다.

      IP: GRE tunnels over IP : GRE(generic routing encapsulation)는 멀티캐스트, IPv6를 지원한다.  Cisco 라우터에 연결될 때 유용하다.

      IP: aliasing Support : 하나의 물리적 네트워크 인터페이스에 IP 주소를 여러개 줄 수 있다.  멀티 호스팅, 가상 도메인, 또는 가상 호스팅(mirtual hosting)이라 부르는 서비스를 제공하려면 필요한 기능이다.  가상 호스팅은 리눅스 박스 하나로 다양한 서비스를 제공할 수 있어 웹이나 ftp 서버로 사용하는 시스템을 최대한 활용할 수 있다는 장점도 있다.

      IP: TCP Syncookes Support (not enabled per deault) : TCP/IP의 약점을 이용해 서버에 접속을 할 수 없도록 하는 SYN attack(이 약점을 이용해 TCP/IP hijack등 공격을 한다)을 막아준다.  

      IP: accounting : 리눅스 박스를 라우터나 방화벽으로 사용할 때 설정한다.

      IP: Reverse ARP
      IP: Allow Large windows (not recommended if <16Mb of memory)

      위 둘은 손대지 않는 것이 안전하다고 경고하고 있다.

      The IPX protocol : Novell 네트워크에 연결할 때 설정한다.

      IPX: Full internal IPX network , IPX: SPX networking (EXPERIMENTAL) : 노벨 네트워킹과 관련된 기능이다.

      Appletalk DDP : Apple 컴퓨터를 위한 네트워크 프로토콜이다.  리눅스 박스를 이 네트워크에 연결하기 위해서는 netatalk 패키지가 필요하다.

      CCITT X.25 Packer Layer (EXPERIMENTAL) : X.25 패킷 레이어는 정부, 은행 등 기관에서 WAN을 구성하기 위해 사용하는 표준 네트워크 프로토콜이다.  PLP와 LAPB 두 개의 프로토콜로 구성된다.

      LAPB Data Link Driver (EXPERIMENTAL) : Link Access Prodedure, Balanced는 X.25 프로토콜의 하위 레블 구성요소이다.  리눅스에서는 이더넷 커넥션에 대한 LAPB만을 지원한다.

      Bridging (EXPERIMENTAL) : 리눅스 박스를 이더넷 브리지로 사용한다. 일반적으로 브리지보다 효율적인 기능을 가진 라우터가 더 많이 쓰인다.

      802.2 LLC (VERY EXPERIMENTAL) : 802.2 Logical Link Layer 프로토콜을 일반적인 이더넷 카드를 사용하여 X.25 네트워크에 연결하기 위해 사용한다.

      Acorn Econet/AUN protocols (EXPERIMENTAL) : Econet은 Arcon 컴퓨터에서 파일, 프린터 서버에 액세스하기 위해 사용되는 아주 오래되고 느린 네트워킹 프로토콜이다.

      WAN router : WAN은 하나 이상의 LAN으로 구성된 광역 네트워크이다. WAN 라우터를 리눅스 박스를 이용하여 상대적으로 매우 저렴하게 구성할 수 있다.  이 기능을 위해서는 wan-tools 패키지가 필요하다.

      Fast Switching (read help!) : tulip 등 이 기능을 지원하는 NIC(network interface card)끼리 직접 데이터를 빠르게 교환할 수 있다.  ‘advanced router’기능과 함께 사용할 수 있지만 방화벽을 구축한다면 [N]을 선택해야 한다.

      Forwarding between high Speed interfaces : tulip 등 이 기능을 지원하는 NIC(network interface card)끼리 매우 빠른 속도로 동작하도록 한다.

      CPU is too Slow to handle full bandwidth : CPU가 네트워크 전대역폭(full-bandwidth)을 다루기에 충분히 빠르지 않다고 생각되면 설정한다.

      8) Qos and /or fair queueing

      [ ] Qos and/or fair queueing

      패킷 스케쥴러에 따라 패킷을 제어하는 기능이다.  네트워크 장치가 실시간 장치일 때 특히 이 기능이 중요하다.  확실하지 않으면 [N]을 설정한다.  

      9) SCSI Support

      <*> SCSI Support
      --- SCSI Support type (disk, tape, CD-ROM)
      <*> SCSI disk Support
      < > SCSI tape Support
      < > SCSI CD-ROM Support
      <M> SCSI generic Support
      ---  Some SCSI devides (e.g. CD jukebox) Support multiple LUNS)
      [ ] Probe all LUNS on each SCSI device
      [ ] Verbose SCSI error reporting (kernel Size +=12K)
      [ ] SCSI logging facility
      SCSI Low-Level drivers --->

      SCSI Support, SCSI disk Support : 스커지 디스크가 부팅 디스크라면 모듈로 설정하지 않는다.  SCSI tape, SCSI CD-ROM은 모듈로 선택해도 좋다.

      SCSI generic Support : CD-Writer, 스캐너, 신디사이저 등 장치에 쓰인다.

      10) SCSI Low-Level drivers

      저수준의 특정 스카시 드라이버에 대한 설정이다.
      < > 7000FASST SCSI Support
      < > ACARD SCSI Support
      < > Adaptec AHA152X/2825 Support
      < > Adaptec `AHA1542 Support
      < > Adaptec AHA1740 Support
      < > Adaptec AIC7xxx Support
      < > AM53/79C974 PCI SCSI Support
      < > BuSlogic SCSI Support
      ....
      <*> IOMEGA Parallel port (ppa - older drives)
      < > IOMEGA Parallel port (imm - newer drives)
      [ ] ppa/imm option - Use Slow (but safe) EPP-16
      [ ] ppa/imm option - Assume Slow parport xontrol regiSter
      ....

      Adaptec AIC7xxc 드라이버 : Adaptec의 제품들 가운데 274x, 284x, 294x, 394x, 3985 등 모델을 지원한다.  도움말을 반드시 살펴본다.

      IOMEGA Parallel port (ppa - older drives) : 오래된 Iomega 패러랠 포트 Zip 드라이브(100MB)를 지원한다.  Zip 드라이브가 새로운 버전이라면 [N]를 선택하고 아래 IOMEGA parallel port (imm - newer drives)에서 [Y]를 선택한다.  스커지 드라이브는 “SCSI disk support” 기능에서 지원하므로 이 옵션은 [N]를 설정한다.  이 기능을 커널에 포함해도 프린터 등 다른 작업을 안전하게 사용할 수 있다.  필요하다면 모듈로 설정할 수도 있다.

      IOMEGA Parallel port (imm - newer drives) : 새로운 버전의 Iomega 패러랠 포트 Zip 드라이브(100MB)를 지원한다.  오래된 버전 Zip드라이브라면 [N]를 선택한다.  “IOMEGA Parallel port (ppa - older drives)”를 참고한다.

      11) Network device Support

      다양한 네트워크 디바이스에 대한 설정이다.

      [*] Network device Support
      < > ARCnet Support
      <M> Dummy net driver Support
      < > EQL (Serial Line Load balancing) Support
      [*] Ethernet (10 of 100Mbit)
      [*] 3COM cards
      < > 3c501 Support
      < > 3c503 Support
      < > 3c505 Support
      < > 3c509/3c579 Support
      < > 3c515 ISA Fast Etherlink
      <M> 3c590/3c900 Series (592/595/597) “Vortex/Boomeriang” Support
      < > AMD LANCE and PCnet (AT1500 and NE2100) Support
      [ ] Western Digital/SMC cards
      [ ] Racal-Interlan (Micom) NI cards
      [ ] Other ISA cards
      [*] EISA, VLB, PCI and on board controllers
      < > AMD PCnet32 (VLB and PCI) Support
      < > Apricot Support
      < > CS89x0 Support
      < > Generic DECchip & DIGITAL EtherWORKS PCI/EISA
      < > DECchip Tulip & DIGITAL EtherWORKS PCI Support
      < > Digi IntL. RIghtsw

      itch SE-X
      <*> Ether Express Pro/100 Support
      < > PCI NE2000 Support
      < > T1 ThunderLAN Support
      < > VIA Rhine Support
      [ ] Pocket and Portable adaptors
      [ ] FDDI driver Support
      < > Frame relay DLCI Support
      < > Apple/Farallon LocalTalk PS Support
      < > COPS Localtalk PS Support
      <M> PPP (point-to-point) Support
      --- CCP compressors for PPP are only built as modules.
      <M> PLIP (parallel port) Support
      <M> SLIP (Serial Line) Support
      [*] CSLIP compressed headers
      [ ] keepalive and Linefill
      [ ] Six bit SLIP encapsulation
      [ ] Wireless LAN (non-hamradio)
      [ ] Token Ring driver Support
      < > Comtrol Hostess SV-11 Support
      < > COSA/SRP Sync Serial boards Support
      < > Red Creek Hardware VPN (EXPERIMENTAL)
      [ ] WAN drivers

      Network device Support : 이더넷 디바이스와 PPP, SLIP, PLIP 등 네트워크 장치들을 지원한다.

      ARCnet Support : ARCnet 칩셋이 있는 네트워크 카드를 가졌다면 [Y]를 선택한다.  아크넷은 전송률이 낮지만(2.5Mbps) 케이블이 훨씬 길어질 수 있어 공장 등에서 사용되기도 한다.

      Dummy net driver Support : Dummy net driver는 패킷을 버리는 쓰레기통(bit-bucket)이다.  PPP나 SLIP을 사용한다면 [Y|M]를 답한다.  커널 크기는 늘어나지 않는다.

      EQL (SeriaL Line Load balancing) Support : 여러 개의 PPP, SLIP 연결을 향상된 속도를 가진 하나의 연결로 사용하는 기능이다.  연결된 쪽 끝에서도 이 기능을 지원해야 사용할 수 있다.

      Ethernet (10 of 100Mbit) : 리눅스 박스에 이더넷 네트워크 인터페이스 카드(NIC)가 설치되었다면 반드시 [Y]를 선택한다.  3com등 가장 많이 쓰이는 NIC와 다른 ISA, EISA, PCI 네트워크 디바이스에 대한 세부 설정이 이어진다.  이더넷 카드가 없다면 [N]을 선택한다.

      PLIP (parallel port) Support : 패러랠 포트와 크로스 케이블을 이용해 두 리눅스 박스를 연결한다.  TCP/IP를 이용한다.  PLIP에는 “null printer”(또는 “fx”) 케이블을 통해 4bitS 씩 전송하는 mode0와, 특별한 PLIP 케이블을 이용해 8bitS를 전송하는 mode1이 있다.

      PPP (point-to-point) Support : PPP는 SLIP보다 향상된 기능을 가진 시리얼 라인(전화선 등) 네트워킹 프로토콜이다.  “Set version information on all Symbols for modules”에 [Y]를 답했다면 모듈로만 컴파일할 수 있다.

      SLIP (Serial Line) Support : PPP 이전에 많이 사용하던 시리얼 라인 네트워크 프로토콜이다.

      Wireless LAN (non-hamradio) : radio와 무선 랜을 지원한다.

      Token Ring driver Support : IBM에서 개발한 token 방식의 랜이다. IBM 메인프레임에서 주로 사용한다.

      12) Amateur Radio Support

      [ ] Amateur Radio Support

      Amateur radio를 이용해 무선 네트워킹을 하는 기술이다. AX.25-HOWTO에 커널설정과 기술 구현에 대한 자세한 정보가 있다. HAM-HOWTO, NET-3-HOWTO를 참고한다.

      13) IrDA Subsystem Supporst

      <M> IrDA Subsystem Support
      < > IrLAN protocol
      < >  IrLAN client Support
      < >  IrLAN Server Support
      < > IrOBEX protocol
      < > IrCOMM protocol
      < > IrLPT protocol
      [*] IrDA protocol options
      [ ] Cashe Last LSAP
      [ ]  Fast RRS
      [ ]  Recycle RRS
      [ ] Debug information
      [ ] IrLAP compression
      Infrared-ort devide drivers --->

      IrDA Subsystem Support : Infrared Data Association(TM)은 적외선을 이용한 근거리 무선통신 시스템, 프린터, 시리얼 장치 등의 표준 프로토콜을 지원한다.

      14) Infrared-port device drivers

      <M> IrTTY (uses Serial driver)
      [ ]  Serial dongle Support
      < >  ESI jeteye PC dongle
      < >  ACTISYS IR-220L and IR220L+dongle
      < >  Tekram Irmate 210B dongle
      < > NSC PC87108
      < > Winbond W83977AF (IR)
      < > Sharp UIRCC

      15) ISDN Subsystem

      <M> ISDN Support
      [ ] Support Synchronous PPP
      [ ] Support audio via ISDN
      [ ] X.25 PLP on top of ISDN (EXPERIMENTAL)
      < > ICN 2B and 4B Support
      < > isdnloop Support
      < > PCBIT-D Support
      < > HiSax Siemenschipset drive Support
      < > AVM-B1 with CAPI2.0 Support

      ISDN Support : ISDN은 전화선을 이용한 디지틀 종합 서비스이다.  일반적으로 B채널 두 개를 사용하는데(2B 방식) 한 채널이 64KB의 전송속도를 가진다.  ISDN을 사용하기 위해서는 특별한 단말 장치를 구비해야 한다.

      Support Synchronous PPP : 이 프로토콜은 Cisco와 Sun에서 시험적으로 사용되었다. 접속된 저 끝에서 지원한다면 [Y]를 답한다.  이 기능을 사용하기 위해서는 ipppd라 불리는 특별한 버전의 pppd가 필요하다.

      [ ] USe VJ-compression with Synchronous PPP
      [ ] Support generic MP (RFC 1717)

      Support audio via ISDN : HiSax 처럼 Low LeveL Driver가 이 기능을 지원한다면 리눅스 박스를 getty를 이용하여 ISDN 응답 서버로 만들 수 있다.

      X.25 PLP on top of ISDN (EXPERIMENTAL) : Documentation/isdn/README.x25를 참고한다.

      ICN 2B and 4B Support : 2B는 표준 버전으로 두 채널을 가진 한 라인을 말하고 4B는 두 라인을 지원한다.

      Documentation/isdn/README.icn

      isdnloop Support : 테스트를 위한 가상(virtuaL) ISDN 카드를 제공한다.

      AVM-B1 with CAPI2.0 Support : AVM-B1 ISDN카드를 지원한다.  CAPI(common ISDN applcation programming interface)를 지원한다.

      16) Old CD-ROM drivers (not SCSI, not IDE)

      [ ] Support non SCSI/IDE/ATAPI CDROM drivers

      요즘은 거의 볼 수 없는 오래된 CD-ROM들의 비표준 인터페이스를 지원하는 드라이버들이다. 

      17) Character devices

      [*] Virtual terminal
      [*] Support for console on virtual terminal
      <M> Standard/generic (dumb) Serial Support
      [ ] Support for console on Serial port
      [ ] Extended dumb Serial driver options
      [ ] Support more than 4 Serial ports
      [ ] Support for Sharing Serial interrupts
      [ ] Autodetect IRQ on Standard ports (unsafe)
      [ ] Support Special multiport boards
      [ ] Support the Bell Techmologies HUB6 card
      [ ] Non-Standard Serial port Support
      [*] Unix98 PTY Support
      (256) Maximum number of Unix98 PTYS in use (0-2048)
      <M> Parallel printer Support
      [ ]  Support IEEE1284 Status readback
      [*] Mouse Support (not serial mice)
      Mice --->
      [ ] QIC-02 tape Support
      [ ] Watchdog

      Timer Support
      < > /dev/nvram Support
      [ ] Enhanced Real Time Clock Support
      Video For Linux --->
      Joystick Support --->
      < > Double talk PC internal Speech card Support
      Ftape, the floppy tape device driver --->

      Virtual terminal : 하나의 물리적인 터미널 위에 여러 개의 가상 터미널을 실행하는 리눅스의 멋진 기능이다.  가상 터미널은 여러 개의 X 세션을 띄울 수도 있다.  가상 터미널 사이를 옮겨 다닐 때에는 <alt>키와 기능키를 조합하여 사용한다.  잘 모르겠으면 [Y]를 선택한다.

      Support for console on virtual terminal : 시스템 콘솔은 모든 커널 메시지와 경고 메시지를 수취하고, 단독 사용자 모드에서 로그인을 허용하는 장치이다.  [Y]를 답하면 가상 콘솔을 “console=tty3”와 같은 명령을 사용하여 시스템 콘솔로 사용할 수 있다.  일반적으로 이 기능을 사용한다.

      Standard/generic (dumb) Serial Support : 모뎀과 시리얼 마우스 시리얼 디바이스을 사용하는 기능이다.

      Non-Standard Serial port Support : 표준 시리얼 포트 밖의 멀티포트 제품군을 지원한다.

      Parallel printer Support : 프린터와 패러랠 포트를 사용하는 PLIP, Parallel Zip drive 등 다른 장치를 함께 사용하려면 반드시 모듈로 설정한다.

      Support IEEE1284 Status readback : 프린터가 IEEE 1284 규격을 따른다면 상태 표시를 지원한다.

      Mouse Support (not Serial mice) :  PS/2 mouse (aka “auxiliary device”)등 시리얼 마우스를 제외한 장치를 사용하기 위한 기능이다.  

      QIC-02 tape Support : 스커지 방식이 아닌 tape 드라이브가 있다면 설정한다.

      Advanced Power Management BIOS Support : BIOS가 지원한다면 전원을 절약하고 데이터를 보호하는 여러 가지 기능을 이용할 수 있다.  /dev/apm은 배터리 상태 정보를 제공해 노트북 사용자에게 매우 유용하다.  ACER 486/DX4/75는 지원하지 않는다.

      Watchdog Timer Support : 시스템이 Lock-Up 상태로 서비스를 제공할 수 없는 상태가 이어지면 리부트하는 등 서비스를 다시 시작할 수 있도록 하는 기능이다.  네트워크 서버처럼 재부팅을 하더라도 가능한 빨리 온라인 상태를 복구해야 할 때 유용하다.  하드웨어/소프트웨어 Watchdog을 지원한다.

      /dev/nvram Support : PC에서 CMOS(BIOS), Atari에서 Non-Volatile RAM이라 부르는 비휘발성 메모리 가운데 50bytes를 읽거나 쓸 수 있도록 한다.  하드디스크에 두기는 위험한 데이터나 전원이 꺼져도 잃어버리면 안되는 매우 중요한 데이터를 저장하는데 쓰인다.

      Enhanced Real Time Clock Support : 소프트웨어가 컴퓨터 실시간 시계를 사용할 수 있도록 하는 기능이다.(Documentation/rtc.txt)  멀티 프로세서 머신을 가지고 있고 SMP 기능을 사용한다면 반드시 [Y]를 답한다.  그리고 주기적인 data Sampling 등 이 기능을 유용하게 쓸 장치가 있다면 설정한다.

      Double talk PC internal Speech card Support : RC 시스템에서 제작한 음성합성장치(Speech Synthesizer)인 “DoubleTalk” 드라이버이다.

      18) Mice

      [*] Mouse Support (not serial mice)
      < > ATIXL busmouse Support
      < > Logitech busmouse Support
      < > Microsoft busmouse Support
      [*] PS/2 mouse (aka “auxiliary device”) Support
      ...

      PS/2 포트에는 라이트 펜, 태블릿, 키패드 등 입력 장치도 사용할 수 있다.  트랙볼이나 터치 패드 등 노트북용 장치들은 PS/2 프로토콜을 사용한다.  PS/2 버스마우스를 “Microsoft Busmouse”라고 말하는 제조업체도 있다.  핀의 수를 세어보면 구분할 수 있다.  PS/2는 6핀, MS 버스마우스는 9핀이다.

      19) Video for Linux

      < > Video For Linux

      audio/video 캡쳐, 오버레이 보드와 FM radio 카드를 지원한다.  

      20) Joystick Support

      < > Joystick Support

      CLassic PC analog joysticks and gamepads, Microsoft Sidewinder, Sega, Logitech 등 다양한 조이스틱을 지원한다.

      21) Ftape, the floppy tape devicde driver

      < > Ftape (QIC-80/Traban) Support

      스커지 방식이 아닌 tape 드라이브가 있다면 특정 장치 드라이버를 설정한다.

      22) FiLesystem

      리눅스에서 접근할 수 있는 다양한 파일시스템에 대한 설정이다.

      [*] Quota Support
      <*> Kernel automounter Support
      < > ADFS filesystem support (read only)
          (EXPERIMENTAL)
      < > Amiga FFS filesystem Support
      < > Apple Macintosh filesystem Support
          (EXPERIMENTAL)
      <M> DOS FAT fs Support
      <M> MSDOS fs Support
      < >  umdos: Unix Like fs on top of Std MSDOS FAT fs
      <M>  VFAT (Windows-95) fs Support
      <M> ISO9660 cdrom filesystem Support
      [*] Microsoft Joliet CDROM extensions
      < > Minix fs Support
      <M> NTFS filesystem Support (read only)
      [ ]  NTFS read-write Support (DANGEROUS)
      [ ] OS/2 HPFS filesystem Support (read only)
      [*] /proc filesystem Support
      [*] /dev/pts filesystem for Unix98 PTYS
      < > QNX filesystem Support (EXPERIMENTAL)
      < > ROM filesystem Support
      <*> Second extended fs Support

      < > System V and Coherent filesystem Support
      < > UFS filesystem Support
      Network File Systems --->
      Partition Types --->
      Native Language Support --->

      Quota Support : ext2 파일시스템에서 유저/유저그룹에 대해 사용할 수 있는 디스크 공간을 제한하는 기능이다.  리눅스 박스를 개인적인 용도로 사용하는 유저는 설정할 필요 없다.

      Kernel automounter Support : automounter는 요청에 따라 원격 파일시스템을 자동으로 마운트하는 툴이다.  BSD의 amd와 다르게 매우 적은 사용자 공간을 차지하는 데몬이다.  이 기능을 사용한다면 “NFS filesystem Support”도 설정한다.

      DOS FAT fs Support :  FAT 기반의 MSDOS fs Support, VFAT (WindowS-95) fs Support 등 MS의 파일시스템을 마운트하여 사용하려면 설정한다.  [Y]를 설정하면 커널 크기가 24KB 늘어난다.  이 기능은 스스로 파일 시스템을 지원하지 못하므로 “DOS FAT fs Support”와 “vfat fs Support” 기능을 함께 사용한다.  모듈로 설정하면 각각 fat.o, msdos.o, vfat.o로 컴파일된다.

      umdos : Unix Like fs on top of Std MSDOS FAT fs는 도스 파일시스템 위에서 리눅스를 실행한다.   사용중인 도스 파티션에 영향을 주지 않고 리눅스를 사용할 수 있지만 제한이 많으므로 리눅서라면 절대로 쓰이지 않는다.

      ISO9660 cdrom filesystem Support : ISO에서 제안한 시디롬을 위한 표준 파일시스템이다.  반드시 필요하다.

      Microsoft Joliet CDROM extensions : Microsoft에서 개발한 유니코드 형식의 긴 파일이름을 지원하는 확장 ISO 9660 CDROM 파일시스템이다.  MS 윈도용 풀그림들을 담고 있는 CD는 대부분 Joliet 형식으로 저장되어 있다.

      Minix fs Support : 매우 오래된 파일시스템이다.  지금도 커널을 공부할 때 사용하기도 한다.  일반 사용자라면 엑세스 할 일이 거의 없다.  커널 크기가 25KB 늘어난다.

      NTFS filesystem Support (read only) : Microsoft NT 파일시스템을 읽는 기능이다.

      OS/2 HPFS filesystem Support (read only) : OS/2 파일시스템을 읽기만 할 수 있다.

      /proc filesystem Support : 커널과 프로세스를 위한 가상의 파일시스템이다.  실제 디스크 공간을 점유하지는 않는다.  프로세스 등 시스템 정보를 제공하는 많은 풀그림이 사용하는 유용한 기능이다.  cat 명령으로도 정보를 볼 수 있다.

        #cat /proc/cpuinfo

      /dev/pts filesystem for Unix98 PTYS : “Unix98 PTY Support” 기능과 함께 사용한다.  mount -t devpts 명령으로 /dev/pts에 마운트된 가상 파일시스템을 만들고 Unix98의 표준 다중채널 가상 터미널(pseudo terminal)로 사용하는 기능이다.

      QNX filesystem Support (EXPERIMENTAL) : QNX4 운영체제에서 사용되는 파일시스템이다.

      ROM filesystem Support : 주로 인스톨 디스크의 램디스크를 초기화하려는 매우 작은 읽기전용 파일시스템이다.  어떤 곳에 써야할 지 모른다면 [N]을 선택한다.

      Second extended fs Support : 리눅스에서 현재 사용하는 표준 파일시스템이다.  FAT 시리즈는 비교도 할 수 없는 뛰어난 파일시스템이다. MS windows에서는 ext2nt나 explorer2fs를 이용해 ext2 파일 시스템을 엑세스할 수 있다.

      System V and Coherent filesystem Support : Xenix와 Cherent는 인텔 기종을 위한 상용 유닉스 시스템이다.  주위에 이 시스템이 없다면 [N]을 선택한다.

      UFS filesystem Support : BSD와 Unix에서 파생된 버전(SunOS, FreeBSD, NetBSD, OpenBSD, NextStep)들은 UFS라는 파일시스템을 사용한다.  어떤 System V 유닉스는 디스크 파티션이나 플로피 디스크에 UFS 파일시스템을 사용하기도 한다.  일반적으로 플로피 디스크에서는 tar 풀그림을 사용하므로 이 기능은 필요 없다.  또한 NFS를 사용한다면 이 옵션을 [N]로 설정한다.

      Native Language Support : MS의 fat 파일시스템족(family)은 고유언어 문자셋(native language character sets)으로 파일이름을 다룰 수 있다. 이런 문자셋은 DOS 코드페이지에 저장되어 있어 MS DOS/Windows 파티션의 파일이름을 정확하게 읽으려면 필요하다.  한글 코드페이지 949를 사용하려면 패치를 수행해야 한다.

      23) Network File Systems

      < > Coda filesystem Support (advanced networks fs)
      <*> NFS filesystem Support
      <M> NFS Server Support
      < > Emulate SUN NFS Server
      <M> SMB filesystem Support (to mount WFW Shares etc..)
      [ ] SMB Win95 bug work-around
      <M> NCP filesystem Support (to mount NetWare volumes)
      [ ] Packet Signatures
      [ ]  Proprietary file Locking
      [ ]  Clear remove/delete inhibit when neede
      [ ] USe NFS namespace if available
      [ ] USe LONG (OS/2) namespace if available
      [ ] Allow mounting of volume Subdirectories

      Coda filesystem Support (advanced networks fs) : Coda는 NFS와 비슷한 진보된 네트워크 파일시스템이다.  Coda는 비접속 운영, 캐시, 보안과 인증 등 NFS보다 좋은 점에 몇 가지 있다.  이 질문에 [Y]를 답하면 Coda 클라이언트로 동작할 것이다.  서버와 클라이언트 모두가 지원해야 한다.

      NFS filesystem Support : 네트워크 파일시스템 클라이언트이다.  

      Root file System on NFS : “IP:kernel level autoconfiguration”과 함께 쓰여 네트워크 위의 다른 컴퓨터를 마운트하여 루트 파일시스템으로 사용한다.  하드디스크가 없는 터미널 등에서 사용한다.

      NFS Server Support : 리눅스 박스를 NFS 서버로 사용하는 기능이다. nfsd 데몬을 이용하여 서비스한다면 [N]를 선택한다.  아직 완벽하게 동작하지 않지만 커널 기반 서비스는 nfsd 데몬보다 빠르다.  nfs 패키지를 함께 사용한다.

      Emulate SUN NFS Server : 로컬 파일시스템을 마운트 포인트로 삼아 Sun 시스템의 NFS 서버처럼 사용하는 기능이다.

      SMB filesystem Support (to mount WFW Shares etc..) : 리눅스 박스에서 MS windows 95/NT 네트워크 자원을 공유하는 기능이다.

      SMB Win95 bug work-around : 속도가 조금 느려지겠지만 Windows 95 서버를 더 안정적으로 만든다.

      NCP filesystem Support (to mount Netware volumes) : NCP(netware core protocol)은 IPX 를 이용한 랜 프로토콜이다.  노벨 네트웨어 클라이언트가 NCP를 통해 파일서버 볼륨을 마운트하여 사용한다.  Linux 박스가 서버로 동작한다면 필요 없다.

      Packet Signatures : NCP에 보안을 강화하기 위한 기능이다.  일반적으로 꺼둔다.

      Proprietary file Locking : 리모트 볼륨상의 레코드를 잠근다.

      Clear remove/delete inhibit when neede : 파일 플래그 조작을 허용한다.

      Use NFS namespace if available, Use LONG (OS/2) namespace if available, Allow mounting of volume Subdirectories : 필요하다면 help를 참고하여 설정한다.

      24) Partition Types

      일반적으로 상용 유닉스 시스템들은 각자 자신의 파일시스템과 바이너리 타입을 가지고 있어 그 운영체제에서만 사용할 수 있도록 되어 있다.  매킨토시를 제외한 유닉스 파티션은 “UFS filesystem Support”와 함께 설정한다.  플로피디스크만 사용한다면 파일시스템 지원 기능을 커널에 포함하지 않고 tar 유틸리티를 사용할 수도 있다.

      [ ] BSD disklabel (BSD partition tables) Support
      [ ] Macintosh partition map Support
      [ ] SMD disklabel (Sun partition tables) Support
      [ ] Solaris (x86) partition table Support
      [ ] Unixware Slices Support (EXPERIMENTAL)

      25) Console drivers

      [*] VGA text console
      [ ] Video mode Selection Support
      < > MDA text console (dual-headed) (EXPERIMENTAL)
      [ ] Support for frame buffer devices (EXPERIMENTAL)

      VGA text console : 일반 VGA 표준모드 콘솔을 지원한다.
      Video mode Selection Support : 커널을 시작할 때 “vga=” 옵션으로 비디오 모드를 선택하는 기능이다.  “man bootparm”명령으로 부트 매개변수를 알아본다.

      MDA text console (dual-headed) (EXPERIMENTAL) : 허큘리스 등 흑백 디스플레이 어뎁터를 가지고 있으면 설정한다.

      Support for frame buffer devices (EXPERIMENTAL) : 콘솔에서 그래픽 기능을 사용할 수 있도록 커널 자체가 지원하는 기능이다.  확실하지 않으면 [N]을 선택한다.

      26) Sound

      <M> Sound card Support
      < > Endoniq AudioPCI (ES1370)
      < > Creative Ensoniq AudioPCI 97 (ES1371)
      < > S3 Sonicvibes
      < > Support for Turtle Beach Multisound Classic, Tahiti, Monterey
      < > Support for Turtle Beach Multisound Pinnacle, Fiji
      <M> OSS Sound modules
      < > Proaudiospectrum 16 Support
      <M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) Support
      <M> Generic OPL2/OPL3 FM Synthesizer Support
      < > Gravius Ultrasound Support
      < > MPU-401 Support (NOT for SB16)
      ...
      <M> FM Synthesizer (YM3812/OPL-3) Support
      <*> Loopback MIDI device Support
      < > 6850 UART Midi Support
      Additional Low Level Sound drivers --->

      Sound card Support : X 윈도우와 윈도우 매니저를 사용할 계획이라면 사운드 기능을 반드시 설정한다.  이 문서에서 다루지 않은 내용은 Sound-HOWTO, drivers/sonund/Readme.*를 읽어본다.

      Old Configuration exists in /etc/soundconf. Use it? : 설정을 바꾸려고 하거나 새로운 커널로 업그레이드할 경우 “n” 라고 답변한 다음 설정 과정을 계속해야 할 것이다.

      OSS Sound modules : Open Sound System 사운드 카드 드라이버 모음이다.  OSS로 공유(common) API를 제공하면서 사운드 풀그림 제작이 쉬워졌다.  위쪽의 목록 가운데 찾는 사운드 카드가 없다면 이 기능에 [Y]나 [M]을 설정한다.

      100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) Support : Creative Labs이 제작한 오리지널 사운드 블래스터나 100% 하드웨어 호환되는 카드를 가지고 있다면 [Y]를 설정한다.  SB AWE 32나 SB AWE 64를 가지고 있다면 이 곳과 “Additional Low Level Sound drivers”와 “SB32/AWE” 아래 [Y]로 답한다.  Readme.cards를 읽어본다.

      MPU-401 Support (NOT for SB16) : MPU401 인터페이스는 초기에 미디 칩으로 거의 모든 사운드 카드가 지원한다.  그렇지만 MPU401 기능이 없거나, 자신만의 MPU401 드라이버를 가지는 사운드 카드는 충돌이 일어날 수 있다.  Readme.cards를 읽어본다.

      FM Synthesizer (YM3812/OPL-3) Support : FM(frequency mdulation)은 사운드 카드 초기의 애드립 카드부터 사용하던 주파수 변조방식의 음원이다.  YMF3812는 Adlib 카드에서 쓰던 음원이고 OPL3는 사블 프로를 비롯한 16Bit 사운드 카드에서 사용하는 음원칩이다.[Y]

      Loopback MIDI device Support : MIDI는 FM과 다르게 실제 소리를 음원으로 한다.  /dev/sequencer 와 /dev/music을 이용한 MIDI 포트의 접속(access) 그리고 /dev/midixx의 사용을 포기한다면 “n”라고 답변해도 좋다. 이 옵션은 MPU401 그리고 MIDI 표준인 GM(general MIDI) 호환 디바이스에도 영향을 미친다.

      6850 UART Midi Support : 거의 사용되지 않는다. [N]

      /dev/dsp and /dev/audio support : analog-digital, digital-analog 변환을 하는 매우 유용한 장치이다.
      사운드 기능을 커널에 포함하면 선택한 사운드 카드의 몇 가지 설정 값을 넣어야 한다. 일반적으로 I/O address, IRQ, DMA 번호, 그리고 미디에 대한 설정을 한다.  사운드 카드에 첨부된 제조(판매)회사의 메뉴얼을 참고한다.  
      모듈로 설정하였다면 modprobe 매개변수로 IRQ 등 설정값을 입력한다. ‘sndconfig’유틸리티로 pnp 기능을 이용하여 자동/수동 설정할 수 있다.

      27) Additional Low Level Sound drivers

      [ ] Additional Low Level Sound drivers
      < > ACI mixer (microPCM12)
      < > AWE32 Synth
      < > Gallant Audio Cards (SC-6000 and Sc-6600 based)

      Additional Low Level Sound drivers :
      drivers/sound/lowlevel/README.*를 읽어본다.

      28) Kernel hacking

      커널 해커를 위한 옵션이다.
      [Y] Magic sysrq key

      Magic Sysrq key : [Y]로 설정할 경우 시스템이 심각한 문제가(crashes) 있어도 통제할 수 있다.  예를 들면 버퍼 캐시를 디스크로 옮기고, 시스템을 리부트하거나 상태 정보를 표시한다.  이 기능은 ‘<alt>+<SysRQ>’를 누른 채 k, r, s 등 <command key>를 눌러 사용한다.  SysRQ 키가 없는 키보드는 PrtSc 키를 누르면 된다.  Documentation/sysrq.txt를 참고한다.

 

5. 커널 컴파일

    커널 컴파일 환경설정이 모두 끝났다면 컴파일을 시작하기 전에 반드시 청소과정을 먼저 거쳐야 한다.

    5.1 청소

        # cd /usr/src/linux
        # make dep
        # make clean

      make dep : 새 커널 만들기를 시작하는 명령이다.  컴파일을 위한 의존성 관계를 설정한다.

      make clean : 이전에 수행했던 컴파일 과정에서 생성된 오브젝트 파일(*.[oas]), 커널, 임시파일(.tmp*), 설정값(configure) 등을 삭제한다.

    5.2 커널 컴파일

      # make zImage

      make zImage 명령으로 커널 컴파일이 성공하면 /usr/src/linux/arch/i386/boot 디렉토리에서 커널 이미지 ‘zImage’를 볼 수 있다.
      커널에 불필요한 기능까지 모두 집어넣어 커널이 제한된 크기를 넘으면 ‘System is too big’이라는 에러 메시지를 남기고 컴파일이 실패한다.  잘 쓰이지 않는 기능은 모듈로 설정하고 필요 없는 기능은 제거하여 커널 규모를 줄이고 다시 컴파일한다.  ‘작은 것이 아름답다’

      make zdisk 명령은 커널 이미지를 플로피 디스크에 만든다.  플로피 디스크로 새 커널을 테스트할 때 사용한다.

      커널 이미지를 만들고 lilo 까지 수행하는 ‘make zlilo’ 명령도 있지만 몇 가지 문제점이 알려져 있다.

      make bzImage 명령은 압축되지 않은 커다란 커널을 만든다.(big zImage!)

    5.3 모듈 컴파일

      모듈 컴파일을 시작하기 전에 이전 버전에서 설치한 모듈을 삭제하는 것이 좋다.

        # cd /lib/modules
        # rm -rf 2.0.36
        # cd /usr/src/linux
        # make modules
        # make modules_install
        # depmod -a

      make modules : 커널 환경설정에서 모듈로 설정한 기능들을 컴파일한다.

      make modules_install : 컴파일 된 모듈을 /lib/modules 아래 설치한다.

      depmod : 모듈 사이의 의존성을 검사하여 /lib/modules 디렉토리 아래 modules.dep 파일을 만든다.

 

6. 새 커널 설치

    새로 만들어진 커널 이미지를 /boot 디렉토리로 옮기고 lilo 명령을 수행하여 부트로더에게 알리자.  커널을 교체하기 전에 반드시 테스트를 거친다.

    6.1 부트 이미지 설치

      새 이미지를 /boot 디렉토리로 옮긴다.  이 과정에서 현재 커널을 덮어 쓰지 않도록 주의한다.

        # cp /usr/src/linux/arch/i386/zImage /boot/zImage-2.2.3

    6.2 /etc/lilo.conf

      /etc/lilo.conf 파일에 이미지를 추가하자.  이 과정은 커널이미지를 완전히 교체하기 전에 새 커널이 정상적으로 동작하는지 시험하기 위해 반드시 필요하다.  커널 테스트는 부트 디스크를 사용하는 등 다른 방법들도 있지만 이 방법이 잠재된 여러 가지 문제에 대처하기에 가장 좋다고 생각된다.

        boot=/dev/hda
        ... (omitted)
        message=/boot/boot.msg
        image=/boot/vmlinuz
         label=linux
         root=/dev/hdb1
        image=/boot/zImage-2.2.3
         label=new
         root=/dev/hdb1
        other=/dev/hda1
        ... (omitted)

      boot=/dev/hda : 부트로더가 설치된 디바이스를 설정한다.

      message=/boot/boot.msg : 부트 프롬프트에 앞서 전에 화면에 메시지를 표시한다.  일반적으로 아래 예처럼 간단한 인사말과 부트 메뉴 목록을 보여준다.  물론 <tab> 키를 눌러 부트 메뉴를 확인할 수도 있다.

        welcome to el..

        ‘L’ means Lihaa who is progressive guy!
        ‘S’ means Sook who is very Lovely and ..

        this box offer following menu;
         new for Latest kernel
         linux for Safe kernel
         dog for MS windows and Some works

      image=/boot/zImage-2.2.3 : 레이블이 linux인 커널 이미지 vmlinuz에 관련된 행을 삭제하지 않고 image=...으로 시작하는 ‘new’ 메뉴를 추가한다.  lilo.conf 파일을 저장하고 새 설정으로 업데이트하기 위해 반드시 lilo 명령을 수행한다.

        # lilo

      이제 새 부트 메뉴 ‘new’로 부팅에 실패하더라도 이전 커널이 링크된 linux 메뉴로 안전하게 다시 부트할 수 있을 것이다.
      새 커널이 정상적으로 부트되었다면 링크를 새 커널로 바꾼다.  그러나 새 커널 이미지가 개발버전이라면 vmlinuz가 안정버전의 커널 이미지를 링크하도록 계속 두는 것이 안전하다.

        # cd /boot
        # rm -f vmlinuz
        # Ln -s zImage-2.2.3 vmlinuz

    6.3 Loadlin

      도스 시스템에서 리눅스 커널을 로드하는 풀그림 Loadlin.exe을 사용한다면 새로 만들어진 커널 이미지를 도스 파티션에 복사하고 배치파일을 수정한다.

        # mount -t vfat /dev/hda1 /mnt/vfat
        # cp /usr/src/linux/arch/i386/boot/zImage /mnt/vfat/usr/linux/boot

      아래 명령은 도스 프롬프트에서 수행한다.

        c:\usr\Linux>copy con Lnx_boot.bat
        Loadlin boot\zImage root=/dev/hdb1
        ^Z
        c:\usr\Linux>Lnx_boot.bat

    6.4 Notebook computer 사용자

      노트북 컴퓨터 사용자는 최신 pcmcia 드라이버를 다운받아 리눅스 소스 디렉토리에 설치하고 디바이스 드라이버를 컴파일한다.  모듈정보를 커널에서 읽어오려면 새 커널로 부트한 다음 ‘make config’명령을 수행한다.

        # cd /usr/src/linux
        # tar xvzf pcmcia308.tgz
        # cd pcmcia-cs-3.0.8
        # make config
        # make all;make install

 

7. 문서에 대해

    이 문서에서 바로잡을 곳이나 추가될 내용이 있을 것이다.  
    가능하다면 일렉터즈<electuz@chollian.net>에게 메일을 보내주기 바란다.
    (보내주시면 정말 감사^^)

 

문서작업을 계속할 수 있도록 도와준 윤리하님<lihaa@chollian.net>, 김숙중님<lambent@chollian.net: 저녁강, withinu@netian.com> 그리고 양대경님<habroken@kornet21.com>께 감사드린다.




▲ top

home으로...