커널 2.4 컴파일 및 사용(Ⅰ)

글 : 배철수 / 리눅스월드 발행인

 

     

    커널 2.4 컴파일  및 컴파일 시의 커널 옵션 선택 사항에 대한 내용을 간략히 기술한다.

 

1. 알림

    이 글에서 커널 2.4를 컴파일하는 방법은 레드햇 6.2 영문판에서 커널 2.2.를 사용하고 있는 경우를 기준으로 했다. 다른 배포본이나 버전의 경우에는 이 설명이 맞지 않을 수도 있다.

    - 필자가 테스트한 환경이다.

    1) CPU : 인텔 펜티엄 III
    2) 메모리 : 256메가
    3) 하드   : IDE 30기가
    4) 랜카드 : 3c509-txnm

 

2. 관련 문서

    아래 문서들을 필히 사전에 읽기 바란다.

    1) 2.4 커널소스의 아래 문서
            - linux/README
            - linux/Documentation/Changes
            - linux/Documentation/modules.txt

    2) 핼프 사이트
    http://cyberbuzz.gatech.edu/kaboom/linux/Changes-2.4/

 

3. 사전 절차

    커널 2.2 사용자가 2.4로 업그레이드하기 위해서는 우선 아래 버전의 소프트웨어들이 필요하다.
    (linux/Documentation/Changes)

    1) Gnu C         2.91.66      # gcc --version
    2) Gnu make    3.77          # make --version
    3) binutils        2.9.1.0.25  # ld -v
    4) util-linux      2.10o        # fdformat --version
    5) modutils       2.4.0        # insmod -V
    6) e2fsprogs    1.19          # tune2fs --version
    7) pcmcia-cs   3.1.21       # cardmgr -V
    8) PPP             2.4.0        # pppd --version
    9) isdn4k-utils  3.1beta7   # isdnctrl 2>&1|grep version

      “1)”에서 “3)”은 컴파일에 필요하다. “5)”는 모듈 사용시 필요하다. 다른 소프트웨어는 해당 기능을 사용한다면 업그레이드 해야 한다.

      레드햇 6.2에서는 아래와 같다.

      ① gcc --version
              egcs-2.91.66
      ② make --version
              GNU Make version 3.78.1,
      ③ ld -v
              GNU ld version 2.9.5 (with BFD 2.9.5.0.22)
      ④ insmod -V
              insmod version 2.3.10-pre1

      따라서 모듈을 사용하기 위해서 modutils를 업그레이드해야 한다.

    10) IP Masquerade를 사용한다면 ipchains는 사용할 수 없다. iptables를 설치해야 한다.

      *  modutils-2.4.1 설치

      1) 소스는 ftp.kernel.org 에 있다.
      2) 커널 소스(2.2도 무관) 가 /usr/src/linux 에 있어야한다.
      3) tar zxvf modutils-2.4.1.tar.gz
      4) cd modutils-2.4.1
      5) ./configure
      6) make
      7)  make install'

      /sbin 디렉토리에 아래 파일들이 위치한다.

      insmod/
              insmod          
              rmmod           
              ksyms          
              lsmod           
              modinfo         
              modprobe
      genksyms
      depmod

 

4. 커널 컴파일 순서

    4.1 커널 소스 설치

    2.4 커널은 소스를 /usr/src/linux에 설치하지 말라고 나와 있다. 그러나 레드햇 6.2에서 커널 2.2를 사용하는 경우에는 2.4 커널 소스를 2.2와 같게 /usr/src/linux 에 넣어야 컴파일이 된다. 단 사용 중인 커널이 2.4인 경우는 다른 디렉토리에서도 컴파일이 되는 것 같다.

    1) cd /usr/src
    2) tar zxvf linux-2.4.0.tar.gz
    linux 라는 디렉토리가 만들어지고 그 안에 커널 소스가 위치한다.

    4.2 컴파일

    /usr/src/linux 디렉토리에서 아래 순서로 실행한다.

    1) make menuconfig
        (또는 make config, make xconfig)

        커널 이미지에 포함될 내용을 선택하는 부분이다. 아래에 자세히 설명한다.

    2) make dep
    3) make clean
    4) make bzImage

        컴파일이 끝나면 커널소스의 arch/i386/boot 디렉토리에 bzImage 라는 이름으로
        커널 이미지가 만들어진다.

    5) make modules

        모듈을 만든다.

    6) make modules_install

        커널모듈이 /lib/modules/2.4.0 디렉토리 이하에 설치되기는 하나 디렉토리 구조가
        달라졌다. kernel 이라는 디렉토리가 하나 추가되고 그 안에 다시 여러 개의
        하위 디렉토리가 추가되었다.

    4.3  모듈 자동적재에 필요하다.

    1) /etc/conf.modules를 /etc/modules.conf로 변경한다.
    2) modules.conf 의 내용을 수정한다.
    3) depmod -ae 2.4.0

    4.4  lilo  수정

    아래는 각자의 lilo.conf에 따라 다를 수 있음.  여기서는 커널을 /boot에 bzImage 라는 이름으로 저장한 경우임.

    1) cp /usr/src/linux/arch/i386/boot/bzImage /boot
    2) rm /boot/System.map
    3) cp /usr/src/linux/System.map /boot/System.map
    4) lilo.conf 수정

            . . . . . .
            image=/boot/bzImage
                    label=linux
                    read-only
                    root=/dev/had?
            . . . . .

    5) lilo <enter>

            Added linux *

    6) 리부팅

        부팅이 끝난후 아래 명령을 주면 변경된 커널을 확인할 수 있다.

        [root@jinnee /root]# uname -a
        Linux jinnee 2.4.0 #1 Wed Jan 31 00:16:18 KST 2001 i686 unknown

        참고]  커널 2.4 부트 메시지

      LILO

      Linux Lab VideoServer (http://www.linuxvideo.co.kr)

      boot:
      Loading linux...............
      Linux version 2.4.0 (root@jinnee) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 re1
      BIOS-provided physical RAM map:
       BIOS-e820: 000000000009f800 @ 0000000000000000 (usable)
       BIOS-e820: 0000000000000800 @ 000000000009f800 (reserved)
       BIOS-e820: 0000000000018c00 @ 00000000000e7400 (reserved)
       BIOS-e820: 000000000fef0000 @ 0000000000100000 (usable)
       BIOS-e820: 000000000000fc00 @ 000000000fff0000 (ACPI data)
       BIOS-e820: 0000000000000400 @ 000000000ffffc00 (ACPI NVS)
       BIOS-e820: 0000000000080000 @ 00000000fff80000 (reserved)
      On node 0 totalpages: 65520
      zone(0): 4096 pages.
      zone(1): 61424 pages.
      zone(2): 0 pages.
      Kernel command line:
              auto BOOT_IMAGE=linux ro root=302
              console=tty0 console=ttyS0,38400
      Initializing CPU#0
      Detected 531.573 MHz processor.
      Console: colour VGA+ 80x25
      Calibrating delay loop... 1061.68 BogoMIPS
      Memory: 255384k/262080k available (1119k kernel code, 6308k reserved,
                   420k data, 184k ini)
      Dentry-cache hash table entries: 32768 (order: 6, 262144 bytes)
      Buffer-cache hash table entries: 16384 (order: 4, 65536 bytes)
      Page-cache hash table entries: 65536 (order: 6, 262144 bytes)
      Inode-cache hash table entries: 16384 (order: 5, 131072 bytes)
      CPU: Before vendor init, caps: 0383f9ff 00000000 00000000, vendor = 0
      CPU: L1 I cache: 16K, L1 D cache: 16K
      CPU: L2 cache: 256K
      Intel machine check architecture supported.
      Intel machine check reporting enabled on CPU#0.
      CPU: After vendor init, caps: 0383f9ff 00000000 00000000 00000000
      CPU: After generic, caps: 0383f9ff 00000000 00000000 00000000
      CPU: Common
              caps: 0383f9ff 00000000 00000000 00000000
      CPU: Intel Pentium III (Coppermine) stepping 06
      Enabling fast FPU save and restore... done.
      Enabling unmasked SIMD FPU exception support... done.
      Checking 'hlt' instruction... OK.
      POSIX conformance testing by UNIFIX
      mtrr: v1.37 (20001109) Richard Gooch (rgooch@atnf.csiro.au)
      mtrr: detected mtrr type: Intel
      PCI: PCI BIOS revision 2.10 entry at 0xfd9b1, last bus=2
      PCI: Using configuration type 1
      PCI: Probing PCI hardware
      Unknown bridge resource 0: assuming transparent
      PCI: Using IRQ router PIIX [8086/2410] at 00:1f.0
      isapnp: Scanning for Pnp cards...
      isapnp: No Plug & Play device found
      Linux NET4.0 for Linux 2.4
      Based upon Swansea University Computer Society NET3.039
      DMI 2.3 present.
      19 structures occupying 635 bytes.
      DMI table at 0x000E0010.
      BIOS Vendor: Phoenix Technologies LTD
      BIOS Version: 6.00 02SS
      BIOS Release: 08/24/2000

      . . . . . .  생 략 . . . . .

 

< make menuconfig 에서 선택 사항에 대한 설명 >

    아래는 메인메뉴이다.

    (1) Code maturity level options  
    (2) Loadable module support  
    (3) Processor type and features  --->
    (4) General setup  --->
    (5) Memory Technology Devices (MTD)   
    (6) Parallel port support   
    (7) Plug and Play configuration   
    (8) Block devices   
    (9) Multi-device support (RAID and LVM)   
    (10) Networking options   
    (11) Telephony Support   
    (12) ATA/IDE/MFM/RLL support   
    (13) SCSI support   
    (14) IEEE 1394 (FireWire) support  (**)
    (15) I2O device support   
    (16) Network device support   
    (17) Amateur Radio support   
    (18) IrDA (infrared) support   
    (19) ISDN subsystem   
    (20) Old CD-ROM drivers (not SCSI, not IDE)   
    (21) Input core support   
    (22) Character devices   
    (23) Multimedia devices   
    (24) File systems   
    (25) Console drivers   
    (26) Sound   
    (27) USB support   
    (28) Kernel hacking  

    **  “(14)”는 “(1)”을 선택해야 나타난다.

    각 메뉴 선택에 대한 간략한 설명이다.
    자세한 사항은 각 메뉴에서 “Help”를 선택하면 알 수 있다.

 

    1. Code maturity level options   

    [*] Prompt for development and/or incomplete code/drivers

    커널코드 중 아직 개발이 진행 중인 부분을 사용할 경우 이에 관한 메뉴를 선택메뉴에 나타낼지를 결정한다. 메뉴의 내용이 추가될 뿐이므로 선택하는게 좋다.

     

    2. Loadable module support   

    [ ] Enable loadable module support     
    [ ]   Set version information on all module symbols          
    [ ]   Kernel module loader

    모듈 자동적재(autoload) 기능을 사용하려면 셋 다 선택한다.

     

    3. Processor type and features   

    (Pentium-III) Processor family

    자신의 CPU에 맞게 선택한다. 상위호환성이 있으나 그 역은 안된다. 즉 386을 선택하면 모든 CPU에서 사용이 가능하나, Pentium-III를 선택하면 펜티엄이나 486에서는 사용할 수 없다. 대부분의 배포본에 들어있는 커널은 386으로 지정되어 있다.  Athlon/K7, Crusoe 칩도 선택할 수 있다.

    < > Toshiba Laptop support     
    < > /dev/cpu/microcode - Intel IA32 CPU microcode support   

    인텔 IA32 계열 프로세서(Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon 등) 에서 마이크로코드를 업데이트 할 수 있다.  /dev file system support를 필요로 한다. 마이크로코드는 커널에 들어 있지 않으므로 별도로 입수해야 한다. 자세한 사항은 http://www.urbanmyth.org/microcode/를 참고 한다.

    < > /dev/cpu/*/msr - Model-specific register support  

    Model-Specific Registers (MSRs)를 접근하는데 필요하다. 멀티CPU 환경에만 해당한다.

    < > /dev/cpu/*/cpuid - CPU information support  
    ( ) High Memory Support  
        (X) off
        ( ) 4GB
        ( ) 64GB

    x86 프로세서는 32비트이므로 최대 접근 가능 주소영역은 약 4기가이다.(2^32= 42억) 따라서 4기가를 넘는 메모리 영역은 영구매핑이 불가능하다. 이 메모리를 high memory라고 부른다. 이 영역을 사용하려 할 때 필요하다. 단 PAE (Physical Address Extension) 모드를 지원하는 CPU에서만 가능하다.(펜티엄 프로 이상) 메모리가 1가가 이하일 때는 off를, 1 ~ 4 기가는 4GB를, 4기가를 초과할 때는 64GB를 선택한다. 커널에서 물리적 메모리가 모두 인식되지 않으면 lilo.conf에 “mem=xxxM”를 넣는다.

    [ ] MTRR (Memory Type Range Register) support                        

    펜티엄프로 이상의 CPU에서 PCI 또는 AGP 그래픽 카드를 사용할 경우 이미지 쓰기에서 전송속도를 2.5배 이상 증가시킨다. /proc/mtrr 파일을 통해 MTRR을 조절할 수 있다. X 서버에서 사용한다. Cyrix 6x86, 6x86MX , MII 에도 MTRR과 유사한 기능이 있다.

    [ ] Symmetric multi-processing support

    2 개 이상의 CPU가 있을때만 선택한다.

     

    4. General setup   

    [*] Networking support    : 필수 선택
    [ ] SGI Visual Workstation support
    [*] PCI support               :    
      (Any)   PCI access mode   
      [*] PCI device name database     
    [ ] EISA support  : ISA 버스의 개량형으로 일시 사용되었으나 현재는 PCI로 대체되었다.
    [ ] MCA support   
         MicroChannel Architecture 는 IBM 사의 일부 PC에서 사용되었으나 PCI로 대체되었다.

    [*] Support for hot-pluggable devices           
          PCMCIA 카드 등을 사용시 시스템 전원을 끄지 않고도 장치 교체를 가능하게한다.

    PCMCIA/CardBus support :
    노트북 사용시 필요하다. 아래 두 옵션을 선택해야 한다. David Hinds' pcmcia-cs 패키지를 필요로 한다.

    <* > PCMCIA/CardBus support
    [* ] CardBus support
    [ ]   i82365 compatible bridge support
    [ ]   Databook TCIC host bridge support ?

    [*] System V IPC  :  권장사항
    공유 메모리를 사용하려면 /etc/fstab에 아래 라인을 추가한다.

    none   /dev/shm        shm     defaults        0  0

    [ ] BSD Process Accounting  
    [*] Sysctl support : 권장
          /proc/sys 디렉토리를 통해 커널 컴파일 또는 리부팅을 하지 않고도
          일부 커널파라메터를 변경할 수 있게 한다.

    (ELF) Kernel core (/proc/kcore) format  
    <*> Kernel support for a.out binaries   
    <*> Kernel support for ELF binaries     
    <*> Kernel support for MISC binaries  
    [*] Power Management support  
    [ ]    ACPI support     
    < >   Advanced Power Management BIOS support

     

    5. Memory Technology Devices (MTD)   

    <*> Memory Technology Device (MTD) support

    임베디드 시스템 등에서 하드디스크 대신에 사용되는 플래시롬, 램 등을 사용할 때 필요하다. 램디스크와는 관련이 없다. 잘 모르면 No

            [ ] Debugging (NEW)
            --- Disk-On-Chip Device Drivers    
            < >   M-Systems Disk-On-Chip 1000 (NEW)
            < Disk-On-Chip 2000 and Millennium (NEW)
            < >   M-Systems Disk-On-Chip Millennium-only alternative driver (NEW)
            --- RAM/ROM Device Drivers   
            < >   Use extra onboard system memory as MTD device (NEW)   
            < >   Ramix PMC551 PCI Mezzanine ram card support (NEW)   
            < >   Debugging RAM test driver (NEW)  
            --- Linearly Mapped Flash Device Drivers  
            < >   Common Flash Interface (CFI) support (NEW)    
            < >   Support for RAM chips in bus mapping (NEW)

    < >   Support for ROM chips in bus mapping (NEW)  
            --- Drivers for chip mappings   
            --- User modules and translation layers for MTD devices 
            < >   Direct chardevice access to MTD devices (NEW)
            < >   Caching blockdevice access to MTD devices (NEW) 
            < >   FTL (Flash Translation Layer) support (NEW)
            < >   NFTL (NAND Flash Translation Layer) support (NEW)

     

    6.  Parallel port support   

    피시의 패러랠포트에 연결되는 장치(프린터, 집드라이브, PLIP 등) 를 사용시 필요하다.

    <*> Parallel port support
    <*>   PC-style hardware (NEW) :  IBM 호환 피시와 일부 알파피시에서 지정해야 한다.
     [*]   Use FIFO/DMA if available (NEW)
             패러랠포트 전송속도를 빨리하기 위해 필요하다. 단 패러랠포트에 IRQ,
             DMA 를 할당해야 한다. Documentation/parport.txt 를 참조한다.

     [ ]   SuperIO chipset support (EXPERIMENTAL) (NEW)
     [ ]   Support for PCMCIA management for PC-style ports (NEW)
     [ ]   Support foreign hardware (NEW)
     [*]   IEEE 1284 transfer modes (NEW)
            EPP, ECP를 지원하는 패러랠포트 사용시 필요할 수 있다.

     

    7. Plug and Play configuration : 권장

            <*> Plug and Play support  
            <*>   ISA Plug and Play support

     

    8. Block devices   

    <*> Normal PC floppy disk support  
    < > XT hard disk support                
    < > Parallel port IDE device support
    < > Compaq SMART2 support    
    < > Compaq CISS Array support    
    < > Mylex DAC960/DAC1100 PCI RAID Controller support  
    <* > Loopback device support    
            파일을 블록장치로 사용하는 경우 지정한다.
            예를들어 도스 파일시스템에 위치한 파일을 리눅스의 루트파일시스템으로
            사용하므로서 도스에서 리눅스를 부팅하는 것을 가능하게 하는 경우 등이다.

    < > Network block device support                                   
          원격 서버를 블록장치(/dev/nd0)로 사용하게 한다. NFS나 CODA 와는 무관하다.
          NFS와 다른 점은 어떠한 파일시스템도 지원한다는 것이다.
          또 NBD는 루트파일 시스템으로는 사용할 수 없다. NBD는 다른 사용자 프로그램을 통해
          설치되기 때문이다. 사용자 공간에 블록장치를 설치하는데도 사용된다.
          즉 loopback 장치를 통해 통신을 할 수 있다.

    NBD 장치는 메이저 43 장치 번호를 갖는다.

    brw-rw-rw-   1 root     root      43,         0 Apr 11 00:28 nd0
    brw-rw-rw-   1 root     root      43,         1 Apr 11 00:28 nd1

    nbd 사용을 위해서는 별도의 사용자 프로그램을 설치해야 한다.(서버 및 클라이언트용이 모두 필요하다.) Documentation/nbd.txt를 참고 하라.

    < > RAM disk support

    메모리를 디스크로 사용하는 기법이다. 하드디스크에서 파일을 읽고 쓰는 것보다 속도가 훨씬 빠르다. 단 램디스크에 저장된 파일은 전원이 나가면 지워지므로 파일 내용이 변경되는 경우는 별도의 백업이 필요하다.
    (4096) Default RAM disk size
    [ ]   Initial RAM disk (initrd) support

     

    9. Multi-device support (RAID and LVM)   

    [ ] Multiple devices driver support (RAID and LVM)
    < >  RAID support
           여러 개의 하드디스크 파티션을 하나의 논리 블럭장치로 만들어준다.
           대용량 디스크 사용시 필요하다. 또는 하드웨어 페일(fail) 시에 대처하기 위해 여러 개의
           하드디스크를 한 개의 논리블럭장치로 만들어주는 소프트웨어레이드를 구현 시에도
           필요하다. 레이드 1/4/5 방식이 지원된다.

    < >   Linear (append) mode  
    < >   RAID-0 (striping) mode
    < >   RAID-1 (mirroring) mode
    < >   RAID-4/RAID-5 mode

    < >  Logical volume manager (LVM) support
            여러 개의 하드디스크나 디스크 파티션, 복합장치들을 볼륨그룹으로 결합한 후
            이를 다시 가상파티션으로 나눌 수 있게 한다.
            볼륨그룹과 가상파티션은 새로 만들지 않고도 크기를 변경할 수 있으므로
            하드 저장공간을 계속해서 확장하는 경우 유리하다.
            장치명은 /dev/VolumeGroupName/LogicalVolumeName 이다.

    [ ]    LVM information in proc filesystem

     

    10.  Networking options   

    <*> Packet socket  
          어플리케이션이 커널에 구현된 중간 네트워크 프로토콜을 거치지 않고 직접 네트워크
          장치와 통신하는데 사용된다. Tcpdump 등이다. DHCP 사용시에도 필요하다

    [  ]   Packet socket: mmapped IO     
    [ *] Kernel/User netlink socket   
          커널과 사용자 프로세스 간의 양방향 통신에 필요하다.

    [* ]   Routing messages (NEW)
    <*>   Netlink device emulation (NEW)

    [* ] Network packet filtering (replaces ipchains)
           리눅스를 통과하는 패킷에대한 필터링을 가능하게 한다. 필터링 정책은 패킷 형태,
           소스 주소, 목적지 주소 들에 따라 결정된다. 리눅스를 파이어월로 사용하는 경우 및
           리눅스의 공인 IP를 내부의 여러 대의 피시에서 공유해서 인터넷을 사용할 수 있게
           해주는 IP Masquerade 사용시 필요하다.
           IP masquerade 를 설치한 경우 내부 네트워크에 위치한 서버를 인터넷에서 접근이
           가능하게 해주는 포트포워딩에서도 필요하다. 또 투명프락시 설정 시에도 필요하다.
           투명 프락시는 내부 네트워크의 피시에서 인터넷을 사용하려 할 경우 리눅스에서
           내부에 설치된 프락시 서버(보통 캐싱 기능을 갖고 있음.)로 연결해 주는 기법이다.
           따라서 피시에는 별도의 프락시 설정이 필요없다.

    [ ]   Network packet filtering debugging (NEW)

    [ *] Socket Filtering    
           사용자 프로그램이 소켓에 필터를 요청하는데 필요하다. TCP를 제외한 모든 데이터
           형태에 사용할 수 있다. DHCP 서버를 사용시 필요하다

    <*> Unix domain sockets   
          유닉스 도메인 소켓 지원에 필요하다. 네트워크에 연결되어 있지 않은 경우(Xwindow)도
          필요하므로 필히 선택해야 한다.

    [*] TCP/IP networking
          인터넷 연결에 필요한 TCP/IP 프로토콜을 지원한다. 네트워크에 연결되지 않은 경우도
          사용되는 경우가 있으므로 필히 선택해야 한다. “/proc filesystem support”
          “Sysctl support” 를 선택하면 “/proc/sys/net/ipv4/*” 디렉토리의 파일을 이용해
          TCP/IP 의 여러 값을 변경할 수 있다.
          자세한 사항은 Documentation/networking/ip-sysctl.txt를 참조한다.

    [*]  IP: multicasting  
          네트워크에 연결된 여러 대의 컴퓨터에 동시에 접근하는데 필요하다. 즉 한 개의 패킷을
          여러 주소에 전달하는 경우다. MBONE 방식의 인터넷 방송에 사용된다.

    [*]  IP: advanced router  
           리눅스를 라우터로 사용하는 경우 그에 관련된 자세한 선택을 할 수 있는 메뉴를
           표시해 준다. 리눅스를 라우터로 사용하려면 ip forwarding이 enable 되야 하는데 이는
           “/proc filesystem support” “Sysctl support” 두 가지를 선택하고 /proc 파일 시스템을
           마운트 한 후 아래 명령을 주어야 한다.

            echo “1” > /proc/sys/net/ipv4/ip_forward

    [ ]     IP: policy routing (NEW)
    [ ]     IP: equal cost multipath (NEW)
    [ ]     IP: use TOS value as routing key (NEW)
    [ ]     IP: verbose route monitoring (NEW)
    [ ]     IP: large routing tables (NEW)

    [ ]  IP: kernel level autoconfiguration    
          커널 명령행이나 BOOTP, RARP 프로토콜 등을 사용해 부팅시에 IP 주소나
          라우팅 테이블을 자동으로 설정하는 경우 필요하다. 디스크 없이 네트워크 부팅을 하는
          시스템에 사용한다. "Root file system on NFS" 를 필요로 할수 있다.

    [ ]     IP: BOOTP support (NEW)
    [ ]     IP: RARP support (NEW)

    < >   IP: tunneling   
            모바일 컴퓨팅에 필요하다. 즉 IP를 변경하지 않고도 컴퓨터를 다른 네트워크 주소에
            연결해서 사용하려 할 때 필요하다. http://anchor.cs.binghamton.edu/~mobileip/LJ/
            index.html를 참고

    < >   IP: GRE tunnels over IP  
            턴넬링 목적지에 시스코 라우터가 있을 때 사용한다. 턴넬을 통해 멀티캐스트 패킷을
            보내는데도 사용한다.

    [ ]   IP: multicast routing  
           리눅스를 여러 개의 목적지 주소를 갖는 IP 라우터로 사용하는 경우 필요하다.
           MBONE 라우터에 사용된다.

    [ ]   IP: ARP daemon support (EXPERIMENTAL) (NEW)
           지역네트워크에서 IP 주소와 하드웨어주소를 연결하는 테이블은 커널 내에 캐시된다.
           수백대의 호스트가 설치된 네트워크에서는 이 방식이 별 문제가 없으나 스위치로
           연결된 대규모 네트워크에서는 커널에 ARP 캐시를 저장하는 경우 빈번한 네트워크
           연결이 있을 경우 매우 많은 메모리를 사용하며 연결에도 문제가 발생할 소지가 있다.
           이 때 arpd를 사용해 커널의 ARP 요청을 처리 하므로서 커널의 ARP 캐시 부담을
           줄이는데 사용된다.

    [ ]   IP: TCP Explicit Congestion Notification support 
           클라이언트에게 네트워크 혼잡을 알려주는 기능이다. 일부 파이어월은 이 기능을
           지원하지 않으므로 특별한 경우만 사용해야 한다.

    [ ]   IP: TCP syncookie support (disabled per default)

           "SYN flooding" 기법을 사용하는 DOS(denial-of-service) 공격시에서도 정당한
           사용자의 연결을 가능하게 해준다.

    IP: Netfilter Configuration   

        <*> Connection tracking (required for masq/NAT) (NEW)
               IP Masquerade나 NAT 사용시 필요

        <*> FTP protocol support (NEW)
               IP Masquerade나 NAT 사용시 필요
        <M> Userspace queueing via NETLINK
               (EXPERIMENTAL) (NEW)
        <*> IP tables support
              (required for filtering/masq/NAT) (NEW)
              IP tables 는 커널 2.2에서의 IP chains를 대치한다. 파이어월, IP masquerading,
              port forwarding 등에 필요하다. 아래는 이와 관련된 옵션이다.
              자세한 사항은 iptables man 페이지를 참고

        < >   limit match support (NEW)
        < >   MAC address match support (NEW)
        < >   netfilter MARK match support (NEW)
        < >   Multiple port match support (NEW)
        < >   TOS match support (NEW)
        < >   Connection state match support (NEW)
        < >   Unclean match support (EXPERIMENTAL) (NEW)
        < >   Owner match support (EXPERIMENTAL) (NEW)
        <*>   Packet filtering (NEW)
        < >     REJECT target support (NEW)
        < >     MIRROR target support (EXPERIMENTAL) (NEW)
        <*>   Full NAT (NEW)
        < >     MASQUERADE target support (NEW)
        < >     REDIRECT target support (NEW)
        < >   Packet mangling (NEW)
        < >   LOG target support (NEW)

    < >   The IPv6 protocol (EXPERIMENTAL)  
            Ipv6(또는 IPng "IP next generation")는 현재 인터넷 연결에 사용되는 Ipv4와 호환되며
            확장된 주소영역, 사용자인증, 비밀유지 등의 개선된 기능을 갖고 있다.         net/ipv6/README를 참고
    < > Kernel httpd acceleration (EXPERIMENTAL)
          커널에 내장된 제한된 웹서버 데몬이다.(kHTTPd) CGI 기능은 수행할수 없다.
          KHTTPd를 설치하면  웹서버의 성능이 향상된다. KHTTPd에서 처리할 수 없는 경우는
          사용자 웹서버 프로그램(아파치 등)으로 연결해주기 때문이다. 모듈로 설치할 경우에
          kHTTPd를 사용하려면 아래 명령이 필요하다.

          echo 1 > /proc/sys/net/khttpd/start

    [ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
         ATM 네트워크 연결시 필요하다. ATM 카드를 설치해야 한다.

    < > The IPX protocol       
          리눅스를 노벨 네트웨어 파일 및 프린터 서버로 사용할 때 필요하다.

    <*> Appletalk protocol support   
          리눅스를 애플사의 맥킨토시 파일서버 및 프린터 서버로 사용할 때 필요하다.
          Netatalk 패키지를 사용해야 한다.

    < > DECnet Support   
    < > 802.1d Ethernet Bridging   
          리눅스를 이더넷 브리지로 사용하게 해준다. 브리지는 여러 개의 물리적인 네트워크를
          하나의 네트워크로 묶어준다. 이더넷에서 한 개의 물리적인 랜에 수 백대의 호스트가
          연결되어 있고 상호 간에 데이터 전송이 많을 때 패킷 충돌 현상으로 인해 네트워크 속도
          가 크게 느려진다. 이 경우에 브리지를 사용해 데이터 전송이 많은 그룹 별로 네트워크를
          분리하고 브리지로 각 네트워크를 연결하면 네트워크 속도를 향상할 수 있다.
          스위칭허브(스위치)에는 브리지 기능이 들어 있다.

    < > CCITT X.25 Packet Layer (EXPERIMENTAL)
    < > LAPB Data Link Driver (EXPERIMENTAL)
    [ ] 802.2 LLC (EXPERIMENTAL)  

         위 셋은 X.25 프로토콜과 관련있다. X.25는 프레임릴레이와 유사한 공중데이타망에
         사용되는 프로토콜이다. 일부 014XX 망에서 X.25를 사용하고 있다.

    [ ] Frame Diverter (EXPERIMENTAL)  

         지역 네트워크로부터의 패킷을 실제로 의도하지 않은 다른 네트워크 인터페이스 장치로
         방향을 변경해주는 것이다. 예를 들어 이더넷 브리지로 설정된 리눅스에 squid 같은
         프락시 서버를 설치하여 브리지를 통과하는 외부로 나가는 http 패킷(80번) 목적지를
         리눅스의 squid 서버 포트(8080번)으로 변경하므로서 사용자에게는 투명한 프락시 서버를
         구축하는 경우이다. 종전에는 네트워크에 설치된 라우터의 셋업을 변경해야만 이러한
         목적을 달성할 수 있었다.

    < > Acorn Econet/AUN protocols (EXPERIMENTAL)   
    < > WAN router   
          리눅스에 WAN보드(싱크보드)를 설치하여 WAN 라우터(인터넷을 랜투랜으로 연결시
          사용되는 라우터) 로 사용하는 경우에 필요하다. sangoma, emerging tech 사에서
          이러한 보드를 만들고 있다. 별도의 보드 드라이버가 필요하다.

    [ ] Fast switching (read help!)
         지역네트워크에서 랜카드 간의 직접 데이터 전송을 가능하게 한다. 즉 네트워크 속도를
         올려준다. Tulip 등 일부 카드만 가능하다. “Network packet filtering (replaces ipchains)”
         와는 동시에 사용할 수 없다. 즉 리눅스를 파이어월로  사용할 때는 이 기능을 사용하지
         않아야 한다. “IP: advanced router” 내의 항목과는 동시 사용이 가능하다.
         (“IP: use TOS value as routing key”, “IP: use FWMARK value as routing key” 는 제외).

    [ ] Forwarding between high speed interfaces  
         트래픽이 많은 랜에서 랜카드에 가속 기능을 부여한다. 일부 랜카드만 가능하다.
         저성능 피시에서는 사용하면 안된다
         QoS and/or fair queueing   

         네트워크 장치가 패킷 전송시 FIFO 방식의 기존 패킷 스케쥴러를 사용하지 않고 다른
         알고리즘을 사용하고자 할 때 선택한다. 예를들어 리얼타임 장치 등을 리눅스에 사용할
         경우이다. iproute2+tc 패키지를 설치해야 한다. 아래는 선택 가능한 목록이다.
         여러 개 선택이 가능하다.

    [*] QoS and/or fair queueing (EXPERIMENTAL)
    < >   CBQ packet scheduler (NEW)  
    < >   CSZ packet scheduler (NEW)   
    < >   The simplest PRIO pseudoscheduler (NEW)  
    < >   RED queue (NEW)   
    < >   SFQ queue (NEW)    
    < >   TEQL queue (NEW)   
    < >   TBF queue (NEW)   
    < >   GRED queue (NEW)    
    < >   Diffserv field marker (NEW)   
    < >   Ingress Qdisc (NEW)    
    [ ]   QoS support (NEW)    
    [ ]   Packet classifier API (NEW)  

    . . . . . . .     다음 호에 계속




▲ top

home으로...