· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Kernel_Compile_Guide-KLDP

Linux KerneL compiLe guide

Linux KerneL compiLe guide

윤봉환, el@linuxlab.co.kr

v0.12, 8 Jan 2000
이 문서에서는 커널과 커널 컴파일에 대해 다룹니다. 커널 소스의 설치와 세부 환경설정, 컴파일과 새 커널 설치에 대해 이야기할 것입니다.

1. 커널

커널은 운영체제의 핵심입니다. 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스를 관리하고, 입출력을 처리하는 등 유저의 다양한 요구에 바로 반응 합니다. Linux라는 이름도 커널에 붙여진 것입니다.

리눅스의 다른 프로그램처럼 커널도 소스 형태으로 배포됩니다. 커널 소스는 모든 배포판에 들어있으며 ftp나 BBS유저그룹을 통해 다운받을 수 있습니다. 컴파일을 위한 환경은 잘 만들어진 몇 가지 스크립트를 이용하여 쉽게 설정할 수 있으며 커널 해킹을 위한 문서 또한 쉽게 구할 수 있습니다. 다른 부분과 마찬가지로 리눅스의 열린 정신이 커널을 빠르고 강하게 만듭니다.

커널 컴파일은 항상 심각하게 다루어지는 주제이지만 왜 컴파일을 굳이 하느냐 고 묻는 이들도 많습니다. 대개의 리눅서들이 두 세 가지 정도 이유를 말하는데, 일반적으로 커널 컴파일은 시스템 최적화의 한 수단 으로 쓰입니다. 시스템에 가장 적합한 작은 커널을 만들어 리눅스 박스의 성능 을 최대로 끌어올리는 것입니다. 또 한가지 이유는 새 커널을 생성해 빠르게 등 장하는 진보된 기능을 사용하거나 새로운 장치를 지원하는 것입니다.

그리고 리눅서는 기쁨을 얻습니다.

1.1 커널의 두 갈래

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

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

커널의 버전번호는 2.0.36또는 2.1.35와 같이세 부분으로 구성되어있습니다. 처음의 숫자는 커다란 변화가 있을 때 바뀌는 주 버전 번호입니다. 리눅스 커널의 2가 도스의 7보다 하찮게 느껴집니까? 버전 번호를 올리는 것은 개발자 마음이지만 버전번호가 모든 성능을 나타내는 것은 절대 아닙니다. 가운데 숫자는 짝수일 때 안정버전을 뜻하고 홀수일 때 개발버전임을 알려 줍니다. 마지막 숫자는 패치 레벨을 나타내는 서브 넘버입니다.

1.2 커널 2.2

이 글을 쓰는 동안 최근 커널은 2.2.14 버전입니다. (이 글은 2.2.12 커널을 기초로 작성되었습니다.)

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-header-2.2.14.i386.rpm
# rpm -Uvh kerneL-source-2.2.14.i386.rpm
FTP Site

ftp.kernel.org에 anonymous로 접속하여 /pub/linux/kernel디렉토리에서 리누스가 새로 발표한 커널 소스를 받을 수 있습니다.

그 밖의 미러 사이트:

ftp://ftp.funet.fi/pub/linux/PEOPLE/linus/ ftp://sunsite.kren.ne.kr/pub/OS/     ftp://ftp.bora.net/pub/Linux/     ftp://ftp.kreonet.re.kr/pub/Linux/    ftp://ftp.hallym.ac.kr/Linux/  ftp://sunsite.unc.edu/pub/linux/kerneL/ ftp://updates.redhat.com/5.2/kernel-2.2/

커널 소스와 함께 패치파일을 받는 것을 잊지 말아야 합니다.

리눅스 유저 그룹

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

2.2 커널 소스 설치하기

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

커널 소스 풀기

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

# cd /usr/src
# rm -f linux
# mkdir linux-2.2.12
# ln -s linux-2.2.12 linux
# tar xvzf linux-2.2.12.tar.gz
새로 설치한 커널 소스가 개발버전이라면 컴파일 후 정상적으로 작동되더라도 이전의 안정버전을 삭제하지 않도록 합니다.

커널 패치

패치파일은 diff 유틸리티를 이용하여 커널의 일부분을 수정합니다. 패치파일은 빠르게 갱신되며 새로운 패치파일은 이전 패치에 대한 정보를 포함하지 않습니다. 그러므로 패치레벨은 순서대로 모두 적용해야만 합니다. 패치가 많이 이루어진 후라면 커널 소스 전체를 다시 받는 것이 유리할 수도 있습니다.

커널 2.2.9에서 커널 2.2.12로 업그레이드하기 위해서 patch-2.2.10.gz, patch-2.2. 11.gz 모두를 순서대로 적용해야 합니다. 아래에 예가 있습니다.

# cd /usr/src
# ls
linux linux-2.2.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.2.12.gz
# gzip -cd patch-2.2.10.gz | patch -p0
# gzip -cd patch-2.2.11.gz | patch -p0
# gzip -cd patch-2.2.12.gz | patch -p0
많은 패치 작업은 셸의 for 명령을 이용해 자동화할 수 있습니다.
# for LeveL in 10 11 12 ; 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.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.2.12.gz
# linux/scripts/patch-kernel
패치가 성공했다면 패치 대상이 된 파일의 원본은 이름끝에 .orig를 붙여 백업 됩니다. 패치 과정에서 문제가 생겨 실패했다면 실패한 파일 이름 뒤에 .rej를 붙인 파일을 만듭니다. *.rej파일을 살펴보고 패치 작업을 다시 수행합니다.

# find /usr/src/linux/ -name "*.rej"

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

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

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

# cd /usr/src
# rm -f linux
# mv linux-2.2.9 linux-2.2.12
# ln -s 

한글 패치하기

자신의 리눅스 박스가 M$ 윈도우와 함께 설치되었고, FAT(또는 NTFS) 파일시스템을 읽어야 한다면 한글 패치를 해야 합니다. 그러나, 리눅스만 설치된 시스템에서는 패치할 필요가 없습니다. 아래 윤희철님 홈페이지에서 구할 수 있습니다.

http://sparcs.kaist.ac.kr/ gangster/NTFS_FAT32/

make mrproper

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

# cd /usr/src/linux
# make mrproper

3. 컴파일 환경 설정

3.1 컴파일 환경 설정 명령

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

http://KLDP.org

컴파일 환경 설정을 위해 하드웨어 구성 정보를 기록해둡니다. 사운드 카드, 네 트워크 디바이스 등의 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 C onfigration FiLe"을 선택하여 읽어들입니다. make menuconfig는 ncurses(new-curses) Library를 사용합니다. ncurses는 화 면 입출력에 쓰이는 라이브러리입니다. ncurses가 설치되지 않았다면 실행되지 않는 풀그림들이 많으므로 반드시 설치합니다.

# mount /mnt/cdrom # rpm -Uvh /mnt/cdrom/RedHat/RPMS/ncurses*

make xconfig

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

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

3.2 환경 설정 규칙

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

작은 것이 아름답다는 유닉스철학을 생각합니다. 필요 없는 드라이버는 모 두 제거합니다. 모듈 기능은 반드시 켜둡니다. 모듈 로더 설정도 켭니다. 도움말은 항상 '확실하지 않으면' 기본 설정을 그냥 두라고 경고합니다. 모듈로 설정한 기능은 어떤 이름으로 컴파일 되는지 살펴봅니다. 모듈 이름 은 <F1> 키를 눌러 도움말 상자에서 확인할 수 있습니다. 이 문서에서 설정한 환경을 자신의 시스템에 그대로 적용하는 것은 좋은 생각 이 아닙니다. 이 문서는 표준적인 환경설정은 제안하지 않습니다.

잘 모르는 기능은 커널 소스에 따라나오는 문서 등을 확인하여 익힙니다.

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

3.3 커널 컴파일 설정 옵션

Code maturity LeveL optionS

코드 성숙도(成熟度)에 관한 설정입니다.

[*] Prompt for deveLopment and/or incompLete code/drivers

Y를 선택하면 개발중인 새로운 기능과, 새오운 드라이버를 포함할 것인지 조금 더 많은 질문을 합니다. 시험적인 기능은 뒷부분에 "(EXPERIMENTAL)"이란 꼬리표가 붙습니다.

이 옵션을 켜 두었을 때 시스템 특성에 따라 에러가 발생하기도 합니다. 컴파일 과정이나 부트 중에 생긴 문제의 원인을 정확하게 알 수 없다면 이 옵션에 [N] 를 설정해 봅니다. 이 기능을 선택하지 않아도 안정버전의 모든 기능을 사용할 수 있습니다.

ProceSSor type and featureS

(Pentium/K6/TSC) ProceSSor famiLy
(1GB) Maximum Physical memory
[ ] Math emuLation
[ ] MTRR (Memory Type Range RegiSter) Support
[ ] Symmetric muLti-proceSSing Support
(1GB) Maximum Physical memory :

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

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

Symmetric muLti-proceSSing Support : SMP는 두 개 이상의 프로세서(CPU)를 사용하는 멀티프로세싱 시스템을 위한 설정입니다. CPU 각각에 대한 정보는 'cat /proc/cpuinfo' 명령이나 ktop 등 유틸리티로 볼 수 있습니다. 이 곳에 'Y'를 답하고 프로세서 패밀리 아래 '586' 또는 'Pentium'을선택하면 486 아키텍쳐에서는 동작하지 않을 것입니다. 마찬가지로 'PPro' 아키텍쳐는 모든Pentium 기반의 보드에서 동작 하지 않을 것입니다. SMP를 사용하기 위해서는 "Enhanced ReaL Time CoLck Support" 또한 [Y]를 선택합니다. "Advanced Power Management" 코드는 diS abLe 시켜야 합니다. 싱글프로세서를 가진 시스템에서 이 기능을 사용하면 제대로 동작하지 않거나, 시스템이 느려질 수 있습니다.

Documentation/SMP.txt, Smp.txt, IO-APIC.txt, 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을 선택해도 잘 동 작합니다. 386을 선택하면 인텔계열의 모든 프로세서에서 동작하는 커널이 만들어집니다. 물론 정확한 설정이 더 좋습니다. 커널은 CPU 각각의 특성과 버그에 최적화될 것입니다.

(1GB) Maximum Physical memory :

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를 이용해 커널이 자동으로 관리합니다.

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는 다른 다양한 버스구 조를 가진 슬롯과 함께 쓰일 수 있습니다. 바이오스에 문제가 있고 PCI 버스를 사용한다면 이 기능을 선택해 장치 엑세스 속도를 향상시킬 수 있습니다.

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

MCA : MicroChanneL 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]를 선택합니다. 특히, Dos emulator와 같은 프로그램을 사용하려 한다면 동기화를 위해 [Y]를 선택해야 합니다. 메모리에 적재되어 실행중인 풀그림이 프로세스이며 풀그림의 영혼이라 불립니다.

BSD ProceSS Accounting : 프로세스가 끝날 때 커널에 의해 프로세스 정보가 파일에 추가됩니다. 프로세스 정보는 생성시간, 소유권, 커 맨드 이름, 메모리 점유, 터미널 제어 등이 포함됩니다.

SysctL Support : sysctl 인터페이스는 커널컴파일 재질의나 시스템 재부팅 없 이 실행중인 커널 매개변수를 동적으로 변경하는 방법을 제공합니다. 주 인터페 이스는 시스템 콜로 이루어져 있지만, /proc 파일시스템이 설치되어 있다면 편집 가능한 sysctl 요소 트리가 /proc/sys 디렉토리 아래 생성됩니다. (특별히 바 이너리가 필요한 경우를 제외하고 일반적으로 텍스트 포맷으로 구성됩니다)이 기능을 선택하면 커널 크기가 8KB 늘어납니다. 그러나 인스톨/복구 디스크를 위해 사용하는 특수한 커널이나, 메모리가 매우 적은 시스템이 아니라면 [Y]를 선택하는 것이 좋습니다. 대표적인 sysctl 기능으로 /proc/sys/kernel/panic이 있습니다. panic에 0보다 큰 정수값을 설정하면 시스템이 멈추었을 때 정해진 시간(초)후에 자동으로 리부트 합니다. 0은 이 기능을 비활성화합니다.

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

KerneL Support for ELF binarieS : ELF(Executable and Linkable Format)은 서로 다른 OS나 Architecture에 호환이 될 수 있도록 표준화된 Binary File Format입니다. 또, ELF는리눅스 바이너리 포맷의 표준이기도 하므로 반드시 [Y]를 선택합니다. 리눅스 커널과 많이 쓰이는 모든 풀그림들이 ELF 포맷으로 컴파일 됩니다. ELF는 a.out에 비해 진보된 기능들을 포함합니다. 특히 a.out 포맷은 ELF의 공유 라이브러리의 동적 지원 기능이 없습니다.

KerneL Support for MISC binarieS : Java, EmacS-LiSp, DOS 실행파일 등 을 커널 바이너리 클래스에 등록했다면 셸 프롬프트에서 파일 이름을 쓰는 것만 으로 간단히 풀그림을 시작할 수 있습니다. [Y]라고 답했다면 "KerneL Support for JAVA binarieS", "kerneLSupport for Linux/InteLELF bianrieS" 기능은 필요 없습니다. Documentation/binfmt_miSc.txt를 참고합니다. 모르겠으면 [Y] 를 선택합니다.

KerneL Support for JAVA binarieS : Java(TM)은 SUN에서 개발된객체지 향 풀그림 언어입니다. JDK를 설치하려는 자바 개발자가 아니라면 Java byteco de 바이너리는 모듈이나 [N]를 선택합니다.

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

PLug and PLay SupporT

[*] PLug and PLay Support <M>Auto-probe for paraLLeL deviceS

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

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
<M>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 enhancedSupport (EXPERIMENTAL)
[ ]... (ommited)
[*]VIA82C586 chipset support (EXPERIMENTAL)
[ ]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
<N>Translucent modede
<N>Hirarchical Storeage Management Support
< > RAM diSk Support
[ ]InitiaL RAM diSk (initrd) Support
< > XT harddiSk Support
<M> ParaLLeL port IDE device Support
<M>Compaq SMART2 support
NormaL PC fLoppy diSk Support: IBM PC나 그 호환기종에서 사용하는 일반적인 플로피 디스크 드라이브가 있다면 Y나 M을 선택합니다.

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/ATAPI CDROM Support : ATAPI는 SCSI 프로토콜을 흉내낸 IDE CDROM과 TAPE 드라이버의 새로운 프로토콜입니다. SCSI가 아닌 2배속 이상의 대부분 CDROM은 ATAPI 인터페이스를 사용합니다. "ISO 9660 CDRO M 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 장비인 것처럼 사용합니다.

OPTi 82C621 chipSet enhancedSupport (EXPERIMENTAL) : EIDE 컨트롤러 가운데 하나입니다.

VIA82C586 chipset support (EXPERIMENTAL) : VIA 칩셋은 마더보드에 장착된 IDE 컨트롤러 타이밍을 설정합니다. 이 드라이버를 사용하려면 "Use DMA by default when available" 기능도 함께 선택합니다.

CMD640 chipSet bugfix/Support : CMD640 IDE 칩셋은 많은 486과 Pentium 마더보드에 사용되는 컨트롤러지만 설계상의 문제가 있습니다. Y를 답하면 커널이 몇가지 문제점을 바로잡습니다. 이 드라이버는 PCI 시스템에서 자동으로 동작하지만 베사 로컬버스(VLB)를사용한다면 커널 부트 매개변수로 "ide0=cmd640_vlb"를 넣어야 합니다. SCSI만을 사용하는 시스템에서는 [N]을 설정해야 합니다.

CMD640 enhanced support : CMD640 IDE 인터페이스를 가지고 있고, 장착된 시스템의 BIOS가 제대로 동작하지 않는다면 [Y]를 선택하십시요.

Support removabLe IDE interfaceS(PCMCIA) : 노트북컴퓨터 사용자를 위한 설정입니다. PCMCIA 블록장치가 있다면 [Y]를 설정합니다.

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

Loopback device Support : 루프백 디바이스는 파일을 블록 디바이스처럼 사용하는 기능입니다. 파일속에 파일시스템을 만들고, 마운트하여 사용할 수 있습니다. 특별한 파일시스템의 실험, CDROM을 굽기 전에 또는 플로피디 스크로 옮길 이미지 테스트, 그리고 암호화 등에 유용합니다. 암호화를 바란다면, 먼저 ftp://ftp.replay.com/pub/crypto/linux/all나 ftp://verden.pvv.org/pub/linux/kerneli/v2.1/에서 커널패치를 구해서 설치하고, 여기서 [Y]를 선택합니다. 이 loop 디바이스는 네트워크에서 loopback 연결(127.0.0.1)과는 상관이 없습니다.

Network bLock device Support : 네트워크로 연결된 서버 또는루프백 서버 의 파일시스템을 마운트하여 블록 디바이스(/dev/nd0,...)처럼 사용하는 기능입니 다. 클라이언트와 서버는 TCP/IP로 통신합니다. 이 기능이 없더라도 NFS나 Coda를 사용하면 네트워크 파일시스템을 사용할 수 있습니다.

MuLtipLe deviceS driver Support : 여러 개의 블록 디바이스를 하나의 커다 란 블록 디바이스처럼 묶어 사용하는 기능입니다. 입출력이 분산되므로 디스크 를 읽고 쓰는 속도가 훨씬 빨라져 다중사용자 시스템에 매우 유용합니다. RAI D-0, RAID-1 (mirroring)은 일반적인 디스크보다 여러 면에서 위험하지만 RAI D-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라는 매우 오래된 8bit 시스템에 대한 설정입니다. 하드디스크 뿐만 아니라, XT 시스템과 286 AT 시스템을 위한 프로젝트도 있습니다. [N]

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

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: multicast routing
[*] IP: aLiaSing Support
[ ] IP: ARP daemon Support (EXPERIMENTAL)
[ ] 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)
---
< > The IPv6 protocoL (EXPERIMENTAL)
<M> The IPX protocoL
[ ] IPX: FuLL internaL 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처럼 매개 프로토콜 없이 직접 네트워크 장치와 통신 하는 어플리케이션에서 사용됩니다. 잘 모르겠으면 Y을 선택합니다.

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

Routing meSSageS : 네트워크 관련 라우팅 정보를 /dev/route에서 읽을 수 있 게 하는 기능입니다. mknod("man mknod")로 메이저 넘버 36, 마이너 넘버 0인 스페셜 캐릭터 파일로 /dev/route를 만들면 이 파일을 읽어서 라우팅 정보에 대해 알아낼 수 있습니다. 하지만 이 파일에 쓰는 것은 모두 버려집니다.

Network firewaLLS : 리눅스박스를 통한 네트워크 방화벽 구축을 위한 몇 가지 설정으로, 네트워크에 연결된 시스템에만 필요합니다. maSquerading, forwarding/gatewaying 설정과 함께 매스커레이딩 서비스를 제공할 계획이라면 반드시 설정합니다. ifadm 유틸리티가 필요합니다. 방화벽은 로컬 네트워크를 외부로 부터 보호해 주는 컴퓨터를 말합니다:로컬 네트워크의 컴퓨터로부터 나오거나, 로컬 네트워크의 컴퓨터로 전달되는 모든 트래픽은 먼저 방화벽 머신이 살펴보고, 경우에 따라 차단하거나, 변경하 수도 있습니다. 이 옵션은 "Packet Filter"라고 불리는 방화벽 구성방법 가운데 하나입니다: 네트워크 트래픽을 종류와, 출발지, 목적지에 기반해서 차단할 수 있다. 이와 대조적으로 "proxy-based" 방화벽은 좀 더 안전하지만, 설치하기가 좀더 까다롭다. proxy-based 방화벽은 네트워크 트래픽을 좀 더 자세히 관찰해서 변경하고, packet filter 방화벽에 없는 더 높은 수준의 프로토콜에 대한 기능을 지원합니다. 프록시 기반 방화벽은 커널에서 지원하는 것은 아니지만 여러분이 여기서 [Y]를 선택해야만, 패킷 필터 방화벽과 함께 사용할 수 있습니다. 대부분의 네트워크가 (여러분의 로컬 네트워크도 아마) TCP/IP 위에서 동작하므로 "IP: firewalling"옵션에서도 [Y]를 선택해야 합니다. Y를 선택한다면 "Fast Switching" 옵션은 [N]을 선택합니다.

[*] 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: masquerading virtual server support (EXPERIMENTAL)
(12) IP masq - VS table size (the Nth power of 2)
IP: aLwayS defragment (required for maSquerading) : 들어오는 모든 패킷 조 각을 항상 다시 조합합니다. 특히 IP: maSquerading, IP:tranSparent proxy, I P: firewalling 기능을 사용하려면 반드시 필요합니다. 일반적인 라우터나 i 호스트는 절대 [Y]를 선택하면 안됩니다.

IP: tranSparent proxy Support : 리눅스 방화벽을 원격지 호스트처럼 동작하도 록 가장하는 기능입니다. 투명하다는 것은 방화벽을 볼 수 없다는 것을 뜻합니다.

IP: maSquerading : 매스커레이딩은 IP(reaL IP)를 가진 하나의 호스트에 이더 넷이나 모뎀으로 연결된 다른 컴퓨터들이 공식적으로 할당된 IP가 없더라도 인 터넷에 연결되도록 하는 기능입니다. 가상 호스트 서비스를 위해 반드시 필요합 니다. 매스커레이딩은 매우 효과적인 네트워크 보안방법이기도 합니다. 리눅스 박스가 방화벽인 지역네트웍의 한 컴퓨터가 바깥으로 무언가를 보내고자 할 때 리눅스 박스는 마치 해당 컴퓨터인 것처럼 "가장masquerade"할 수 있습니다. 즉 리눅스는 바깥의 정한 목적지로 트래픽을 내보낼 때, 그것이 방화벽 자신으로로부터 출발한 것처럼 만듭니다. 이것은 양 쪽으로 작용하는데 바깥의 호스트가 응답하면, 리눅스 방화벽은 그 트래픽을 가만히 지역넷의 합당한 컴퓨터로 보내줍니다. 이 경우 지역넷의 컴퓨터는 바깥에 다다를 수 있고 응답을 받을 수도 있지만, 바깥 세계에서는 완벽하게 보이지 않게 됩니다. PPP를 비롯해 ADSL, ISDN 등에도 사용할 수 있습니다. "/proc filesystem support" 와 "Sysctl suppot"옵션에 [Y]를 선택하고, 부팅할 때 /proc 파일 시스템이 마운트 되고 나면 다음 명령을 실행합니다. echo "1" > /proc/sys/net/ipv4/ip_forward

IP: ICMP maSquerading : 매스커레이딩에 ping 등 ICMP 패킷을 지원합니다. ICMP(Internet Control Message Protocol)은 송신자에게 수신된 데이터그램의 문제점을 알려주기 위해 호스트와 게이트웨이가 사용하는 메커니즘입니다. IP는 신뢰성이 없지만 ICMP는 비정상적인 상황이나 네트워크 때문에 데이터 그램의 경로를 지정하거나 전송할 수 없으면 원래 발신지에 상황을 알립니다. 대표적인 것으로 ping(packet internet gopher)가 있습니다.

IP: maSquerading SpeciaL moduLeS Support: 아래에 나오는 포트 포워딩 등 기능을 지원합니다.

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

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

IP: ipmarkfw maSquerade Support (EXPERIMENTAL) : 포트 포워딩과 유사한 기능을 제공합니다. 다른 점은 패킷에 "firewaLLing mark"를 사용한다는 것입 니다.

IP: masquerading virtual server support (EXPERIMENTAL) :

(12) IP masq - VS table size (the Nth power of 2)

Network aLiaSing : 네트워크 드라이버가 여러 개의 IP 주소를 가질 수 있도록 하는 설정입니다. 아파치 웹 서버를 이용한 웹 호스팅 서비스 등에 쓰입니다. 또는 이더넷 카드 하나로 여러개의 논리적인 네트워크에 연결할 때 쓰입니다. 속도가 느려지지만, 하나의 이더넷 카드로 매스커레이딩 서비스를 제공할 수도 있습니다.

Socket FiLtering : 리눅스 소켓필터는 버클리 패킷필터에서 파생되었습니다. Unix 시스템은 소켓을 통해 프로세스 사이 통신이 이루어집니다. 이 기능을 선택하면 커널 수준에서 소켓을 조사하고, 허용하는지 마는지 지정할 수 있습니다. 리눅스 소켓 필터링은 TCP를 제외한 모든 종류의 소켓에 동작합니다.

Unix domain SocketS :소켓은 네트워크 연결을 개설하고 액세싱하기 위한 표준 장치(mechanism)입니다. 리눅스 박스가 어떤 네트워크에도 연결되지 않아 도 X 윈도우 시스템이나 syslog 같은 많은 일반적인 풀그림이 소켓을 사용합니 다. 이 기능을 모듈로 설정하고 모듈 적재를 잊으면(neglect to load the modul e) 몇 가지 중요한 서비스들이 제대로 동작하지 않을 것입니다. [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: multicast routing : 리눅스 박스가 다수의 머신에 IP 패킷을 전송할 때 사용할 수 있습니다. MBONE, 오디오나 비디오 broadcast를 목적으로 구성된 높은 대역의 인터넷에서 사용됩니다. Multicast용 네트워크 카드 정보는 x Documentation/networking/multicast.txt에 있습니다. 대부분의 사용자에게 이 기능은 필요 없습니다.

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: policy routing : 일반적으로, 라우터는 수신한 패킷의 목적지 주소에 따라 무엇을 할 지 결정합니다. 만일 이 옵션에 [Y]라고 답한다면, 리눅스 라우터가 패킷의 송신지 주소를 고려할 수도 있게 됩니다. 아래 "IP: TOS 값을 라우팅 키로 사용하기"도 [Y]라고 답한다면, 패킷의 TOS(Type-Of-Service서비스 타입) 부분은 라우팅 결정을 위해서 사용할 수 있게 됩니다. "IP: 빠른 네트웍 주소 번역"에 [Y]라고 한다면, 리눅스 라우터는 전송된 패킷의 송신지와 목적지 주소들마저도 수정할 수 있게 됩니다. http://www.compendium.com/ar/policy-routing.txt 와 ftp://post.tepkom.ru/pub/vo12/Linux./docs/advanced-routing.tex를 참고합니다.

IP: fast network address translation : [Y]를 선택하면, 통과하는 패킷들의 출발지 주소와 목적지 주소를 마음대로 변경할수 있게 됩니다. 네트웍 주소 해석에 대한 일반적인 정보를 원하면 다음의 주소로 가봅니다. http://www.csn.tu-chemnitz.de/ mha/linux-ip-nat/diplom/nat.html

IP: equal cost multipath : 일반적으로, 라우팅 테이블은 주어진 패킷에 단호하게 취해야 할 하나의 행동을 구체적으로 알려줍니다. 그러나, 여기에 만약 [Y]라고 답한다면, 패킷 패턴에 여러 개의 행동을 덧붙이는 것이 가능해 지고, 사실상 그 패킷들을 위해 거쳐야 할 몇몇 대체 경로들을 구체적으로 알려줍니다. 라우터는 이런 경로들을 동일한 "비용"으로 여겨서, 만일 일치하는 패킷이 도착하면, 유동적으로(non-deterministic fashion) 그 경로들 중에 하나를 선택하게 됩니다.

IP: use TOS value as routing key : 모든 IP 패킷의 헤더부분은 그 패킷이 요구하는 특정 처리부분을 담고있는 TOS(Type of Service 서비스형태)값을 가지고 있습니다. 예를 들어, (상호작용하는 트래픽을 위한) low latency, 높은 처리량, 높은 신뢰도 같은 것들. 만일 여러분이 여기에 [Y]라고 답하면, 서로 다른 TOS값들을 가진 패킷들을 위해 서로 다른 라우트를 지정할 수 있게 됩니다.

IP: verbose route monitoring : 만일 여러분이 여기에 [Y]라고 답하면(권장사항입니다.), 커널은 라우팅에 관해서 자세한 메시지들을 출력할 것입니다. 예를 들어, 이상하게 보이는 수신 패킷들이나, 시스템 설정 어딘가의 오류, 또는 공격의 증거가 될 수 있는 것들에 관한 경고 메시지들을 말합니다. 정보는 커널 메시지부분을 담당하는 klogd데몬이 다루고있습니다. ("man klogd")

IP: kerneL LeveL autoconfiguration : 클라이언트 시스템이 부팅할때 BOO TP 서버로부터 네트워크 설정 정보를 가져오는 기능입니다. 디스크가 없이 부트하는 시스템에 쓰이며, "NFS를 통한 루트 파일시스템" 항목도 역시 [Y]를 선택해야 합니다. 보다 새로운 방법은 DHCP를 사용하는 것입니다.

[ ]BOOTP Support
[ ]RARP Support

IP: optimize aS router not hoSt : 네트워크 패킷들을 포워드 시키거나, 재분배하는 등 리눅스박스를 라우터로 동작하도록 설정하는 기능입니다. IP forwarding과 함께 매스커레이딩에 필요합니다. 어떤 리눅스 네트워크 드라이버들은 copy and checksum이라고 불리는 기술을 사용해서 호스트 성능을 최적화 시킵니다. 대부분의 시간을 라우터로 작동하며 패킷들을 다른 호스트로 전달하는 일만 하는 시스템에서 이러한 작업(copy and checksum)은 손해입니다. [Y]를 선택한다면 copy and checksum 기능은 작동하지 않고, 라우터의 작동에 대해서 최적화 되도록 여러 가지를 변경합니다. IP forwarding을 함께 선택해야만 리눅스 박스를 라우터처럼 동작하게 할 수 있습니다; "/proc filesystem support" 옵션과 "Sysctl support" 옵션에서도 [Y]를 선택합니다. 시스템이 부트될 때, 먼저 /proc 파일 시스템 마운트 되고, 다음 명령을 실행하면 IP forwarding이 가능해집니다. echo "1" > /proc/sys/net/ipv4/ip_forward IP forwarding을 사용한다면 rp_filter 기능도 함께 쓸 수 있습니다. rp_filter는 패킷이 도착했을 때, 그 패킷이 도착한 인터페이스와 라우팅 테이블의 엔트리에서 발견한 출발지 어드레스가 일치하지 않으면, 패킷 수신을 자동으로 거절합니다. IP spoofing 등 불리는 공격을 무력화 시킬 수 있습니다. 그러나, 비대칭 라우팅(시스템으로 들어오는 패킷과 나가는 패킷들이 서로 다른 경로를 거치는 것)을 사용하거나, 여러 개의 인터페이스들에 대해서 여러 개의 IP 어드레스들을 가지는 비라우팅 호스트를 운영하고 있다면, 다음 명령으로 rp_filter기능을 작동하지 않도록 설정합니다. echo 0 > /proc/sys/net/ipv4/conf//rp_filter 또는 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 대부분의 유저는 [N]을 선택합니다.

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

IP: GRE tunneLS over IP : GRE(generic routing encapSuLation)는 멀티캐스 트, IPv6를 지원합니다. CiSco 라우터에 연결될 때 유용합니다.

IP: aLiaSing Support : 하나의 물리적 네트워크 인터페이스에 IP 주소를 여러 개 줄 수 있습니다. 멀티 호스팅, 가상 도메인, 또는 가상 호스팅(mirtuaL hoSti ng)이라 부르는 서비스를 제공하려면 필요한기능입니다. 가상 호스팅은 리눅 스 박스 하나로 다양한 서비스를 제공할 수 있어 웹이나 ftp 서버로 사용하는 시 스템을 최대한 활용할 수 있다는 장점도 있습니다. 또, 두 개의 논리적 네트워크를 하나의 이더넷카드를 통해 엑세스하려고 한다면 [Y]를 선택합니다. alias address의 설정은 Doumentation/networking/alias.txt와 IP-Alias mini-HOWTO, http://www.thesphere.com/ dlp/TwoServers/, ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/Virtual-Services-HOWTO을 참고합니다.

IP: ARP daemon Support (EXPERIMENTAL) : 일반적으로 커널은 로컬 네트워크에서 IP와 하드웨어 주소(6바이트)의 MAP을 캐시로 유지합니다. 소규모의 네트워크에서는 ARP(Address Resolution Protocol) 캐시를 커널 차원에서 유지하지만, 매우 큰 네트워크(switched network)에서 관리하는 것은 별로 좋지않습니다. 만일 네트워크에 연결된 컴퓨터(TCP/IP)들이 많다면 커널 메모리의 많은 부분을 ARP 캐시로 사용하게 됩니다. 이 옵션에서 [Y]를 선택하면, 커널 내부 ARP 캐쉬가 256 엔트리(entry)이하로 유지됩니다. (가장 오래된 엔트리는 LIFO을 통해 갱신됩니다.) 그리고 연결은 유저 공간의 arpd를 통해 이루어집니다. ARP나 RARP는 네트워크에 자신의 IP 주소나 물리주소를 브로드캐스트하거나, 캐시를 통해 확인합니다.

IP: TCP SyncookeS Support (not enabLedper deauLt) : TCP/IP의 약점을 이용해 서버에 접속을 할 수 없도록 하는 SYN attack(이 약점을 이용해 TC P/IP hijack등 공격을 합니다)을 막아줍니다. 서비스 거부 공격(Denial-of-service)은 공격당하는 동안 합법적인 원격 사용자들이 접속하는 것을 방해하는데, 문제는 이런 공격이 인터넷 상의 어디서든지 쉽게 공격해 올 수 있다는 것입니다. 그러나 이 옵션을 사용하면, TCP/IP 스택은 "SYN cookies"라고 불리는 암호화된 문제 규약을 사용해서, 컴퓨터가 공격을 받고 있더라도 적법한 사용자가 계속해서 접속할 수 있도록 보호합니다. 사용자들이 그들의 TCP/IP 소프트웨어들을 변경할 필요가 없도록 SYN cookies는 소프트웨어들에 대해서 투명하게 작동합니다. SYN cookies에 대한 기술적인 정보는 다음 사이트에서 얻을 수 있습니다. ftp://koobera.math.uic.edu/pub/docs/syncookies-archive. 만약 여러분이 SYN flood 공격을 받고 있다면, 커널이 알려주는 공격자의 주소는 위조 되었을 가능성이 높습니다;그 주소는 패킷들의 실제 주소를 추적하는데 도움이 될 뿐이며, 절대적인 것으로 취급해서는 안 됩니다. 것이다. SYN cookies는 만약 서버가 매우 과중한 부하에 시달리고 있어서, 클라이언트에 올바른 에러 보고를 하는 것을 방해한다면 옵션을 선택하지 말아야 합니다. "/proc filesystem support"와 "Sysctl support"옵션에도 [Y]를 선택하고,시스템을 부팅할때 proc 파일 시스템이 마운트 된 후에 다음과 같은 명령을 실행해야 SYN cookies가 동작합니다. echo 1 > /proc/sys/net/ipv4/tcp_syncookies 잘 모르겠으면 [Y]를 선택합니다.

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

IP: ReverSe ARP, IP: ALLow Large windowS (not recommended if <16 Mb of memory) : 손대지 않는 것이 안전하다고 경고하고 있습니다. RARP( Reverse Address Resolution Protcol)는 모든 H/W Ethernet card가 각자 가지고 있는 고유한 번호, 하드웨어 어드레스(6bye)를 가지고 IP를 알아 낼 수 있는 프로토콜입니다. 디스크가 없는 머신에서 부팅할 때 IP 주소를 알아내기 위해서 주로 사용되며 Diskless Sun 3 머신이나 Linux Box에서 사용할 수 있습니다.

The IPv6 protocoL (EXPERIMENTAL) : 이것은 Internet Protocol의 다음 버전에 대한 실험적인 지원입니다. : IP version 6(이것은 IPng또는 "IP next generation"이라고 불리기도 하는), 이 새로운 프로토콜은 다음과 같은 특징을 갖는데: 확장된 주소 공간, 인증과 비밀성, 그리고, 중간 연결방법이 필요 없이 현재 버전의 IP (IP version 4) 프로토콜과의 상호작용 가능 등이 있습니다. 아직은 [N]을 선택하는 것이 안전합니다.

The IPX protocoL : NoveLL 네트워크에 연결할 때 설정합니다. 노벨 네트워크와 연결되지 않는다면 [N]을 선택합니다.

IPX: FuLL internaL IPX network, IPX:SPX networking (EXPERIMEN TAL) : 노벨 네트워킹과 관련된 기능입니다.

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

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

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

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

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

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

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

Fast Switching (read help!) : tuLip 등 이 기능을 지원하는 NIC(network int erface 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)을 다루기에 충분히 빠르지 않다고 생각되면 설정합니다.

QoS and /or fair queueing

[ ] QoS and/or fair queueing

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

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, 스캐너, 신디사이저 등 장치에 쓰입니다.

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, 394 x, 3985 등 모델을 지원합니다. 도움말을 반드시 살펴봅니다.

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

IOMEGA ParaLLeL port (imm- newer driveS) :새로운 버전의 Iomega 패러랠 포트 Zip 드라이브(100MB)를 지원합니다. 오래된 버전 Zip드라이브라면 [N]를 선택합니다. "IOMEGA ParaLLeL port (ppa - oLderdriveS)"를 참고합 니다.

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. RIghtSwitch 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 등 네트워크 장치들을 지원합니다. 리눅스 박스가 네트워크에 연결되려면 반드시 [Y]를 선택 합니다.

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

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

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

Ethernet (10 of 100Mbit) : 리눅스 박스에이더넷 네트워크 인터페이스 카드 (NIC)가 설치되었다면 반드시 [Y]를 선택합니다. 3com등 가장 많이 쓰이는 NI C와 다른 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 S ymboLS for moduLeS"에 [Y]를 답했다면 모듈로만 컴파일할 수 있습니다.

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

WireLeSS LAN (non-hamradio) : radio와 무선 랜을 지원합니다.

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

Amateur Radio SupporT

[ ] Amateur Radio Support

Amateur radio를 이용해 무선 네트워킹을 하는 기술입니다. 배선이 필요없고, 단말기 설치가 자유로우며, 네트워크 설치가빠르고 유연하다는 장점이 있습니 다. 일반적으로 저속의 무선 LAN은 공장 자동화나, 프린터 서버, 무선 모뎀 등 에 쓰입니다. 서로 떨어진 건물에설치된 LAN 사이를 연결할때에도 쓰이고 있습니다.

AX.25-HOWTO에 커널설정과 기술 구현에 대한 자세한 정보가 있습니다. HA M-HOWTO, NET-3-HOWTO를 참고합니다.

IrDA SubSyStem SupporT

<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-port devide driverS --->
IrDA SubSyStem Support : InfraredData ASSociation(TM)은 적외선을 이 용한 근거리 무선통신 시스템, 프린터, 시리얼 장치등의 표준 프로토콜을 지원 합니다.

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/READ ME.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)를 지원합니다.

OLd CD-ROM driverS (not SCSI, not IDE)

[ ] Support non SCSI/IDE/ATAPI CDROM driverS

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

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) SeriaLSupport : 모뎀과시리얼 마우스, 시리얼 디바이스를 사용하는 기능입니다.

Support for console on serial port : 여기서 Y라고 하시면 직렬 포트를 시스템 콘솔로 쓸 수 있습니다.(시스템 콘솔은 커널 메세지와 경고들을 받아 뿌려주고 싱글 유저 모드로 로긴할 수 있게 해주는 디바이스입니다.) 어떤 터미널이나 프린터가 직렬 포트에 물려 있다면 아주 쓸만하겠죠? 설령 여기서 Y라고 하셔도 기본적으로 /dev/tty0가 시스템 콘솔로 잡혀 있습니다. 하지만 커널 명령어 라인에 "console=ttyS1" , 이런 식으로 써주면 ttyS1을 시스템 콘솔로 잡을겁니다. "man bootparam"이나 부트 로더용 문서들을 보고 여러분의 부트 로더(lilo나 loadlin) 가 부팅할 때 커널에게 어떻게 옵션을 주는지 알아보세요. lilo같은 경우는 SCSI-HOWTO에도 설명이 되어 있습니다. (ftp://metalab.unc.edu/pub/Linux/docs/HOWTO(anonymous 유저)) 만약에 VGA 카드가 없는데 여기서 Y라고 하면 커널이 자동으로 시스템 콘솔을 /dev/ttyS0로 잡을겁니다. 잘 모르겠으면 [N]을 선택합니다.

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

ParaLLeL printer Support : 프린터와 패러랠 함께 포트를 사용하는 PLIP, Pa raLLeL 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 internaLSpeech card Support :RC 시스템에서 제작한 음성합성장치(Speech SyntheSizer)인 "DoubleTalk" 드라이버입니다.

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핀입니다.

Video for LinuX

< > Video For Linux

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

JoyStick SupporT

< > JoyStick Support

CLaSSic PC anaLog joyStickS and gamepadS, MicroSoft SideWinder, Sega, L ogitech 등 다양한 조이스틱을 지원합니다.

Ftape, the fLoppy tape devicde driveR

< > Ftape (QIC-80/Traban) Support

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

FiLeSySteM

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

[*] Quota Support
<M> 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 --->
< > SGI ETS filesystem support(readonly) (experimental)
Quota Support : ext2파일시스템에서 유저/유저그룹에 대해사용할 수 있는 디스크 공간을 제한하는 기능입니다. 리눅스 박스를 개인적인 용도로 사용하는 유저는 설정할 필요 없습니다.

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

DOS FAT fS Support :FAT 기반의 MSDOS fS Support, VFAT (Window S-95) fS Support등 m$의 파일시스템을마운트하여 사용하려면 설정합니다. [Y]를 설정하면 커널 크기가 24KB 늘어납니다. 이 기능은 스스로 파일 시스템 을 지원하지 못하므로 "DOS FAT fS Support"와 "vfatfS 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 : Micro$oft에서개발한 유니코드 형 식의 긴 파일이름을 지원하는 확장 ISO9660 CDROM 파일시스템입니다. m$ 윈도용 풀그림들을 담고 있는 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 시리즈는 비교도 할 수 없는 뛰어난 파일시스템입니다. m$ windo gS에서는 ext2nt나 expLorer2fS를 이용해 ext2 파일 시스템을 엑세스할 수 있습 니다.

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

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

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

(949) Default Codepage
(euc-kr) Default I/O Charset
...
<*> Codepage 949 (Korean) 
<*> NLS EUC-KR (Korean)   

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
[ ]Use Native Language Support
[ ]Enable symbolic link and execute flags
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 서버로 사용하는 기능입니다. nfs d 데몬을 이용하여 서비스한다면 [N]를 선택합니다. 아직완벽하게 동작하지 않지만 커널 기반 서비스는 nfsd 데몬보다 빠릅니다. nfs 패키지를 함께 사용합니 다.

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

SMB fiLeSyStem Support (to mount WFW ShareS etc..) : 리눅스 박스에 서 m$ windogS 95/NT 네트워크 자원을 공유하는 기능입니다.

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

NCP fiLeSyStem Support (to mountNetWare voLumeS) : NCP(netware core protocoL)은 IPX 를 이용한 랜 프로토콜입니다. 노벨 네트웨어 클라이언트 가 NCP를 통해 파일서버 볼륨을 마운트하여 사용합니다. Linux 박스가 서버로 동작하거나 netware 네트워크에 연결되지 않는다면 필요 없습니다.

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

Proprietary fiLe Locking : 리모트 볼륨상의 레코드를 잠급니다.

CLear remove/deLete inhibit when neede : 파일 플래그 조작을 허용합니다.

USe NFS nameSpace if avaiLabLe, USe LONG (OS/2) nameSpace if avaiLab Le, ALLow mounting of voLume SubdirectorieS : 필요하다면 help를 참고하여 설정합니다.

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)

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 bufferdeviceS (EXPERIMENTAL) : 콘솔에서그래픽 기능을 사용할 수 있도록 커널자체가 지원하는 기능입니다. 확실하지 않으면 [N]을 선택합니다. 모니터나 비디오 카드에 물리적인 손상을 줄 수도 있습니다. 프레임 버퍼 장치는 그래픽 하드웨어에 대한 추상적인 개념(즉, 하드웨어에 독립적인 인터페이스를 가지는 일관된 접근방식) 을 지원합니다. 프레임 버퍼는 응용프로그램이 미리 잘 정의된 인터페이스를 통해 하드웨어에 접근할 수 있도록 도와주기 때문에 소프트웨어는 하드웨어 레벨에 대한 어떠한 정보도 사실상 필요 없게 됩니다. 프레임 버퍼는 리눅스에서 지원되는 여러가지의 하드웨어 종류에 대해 동일하게 접근하도록 만들어 주기 때문에 응용 프로그램 작성이 매우 쉽고, 이식성이 좋은 환경을 제공 합니다. 프레임 버퍼의 모든 기능을 완전히 사용하기 위해서는 fbset 이라고 불리는 유틸리티 프로그램이 필요합니다. 더 자세한 정보는 http://www.tahallah.demon.co.uk/programming/prog.html 에 있는 Framebuffer-HOWTO 문서나 Documentation/fb/framebuffer.txt 화일을 읽기를 권합니다.

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.*를 읽어봅니다.

O기도 하Ld Coniguration 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 등 설정값을 입력합니다. 'snd config'유틸리티로 pnp 기능을 이용하여 자동/수동설정할 수 있습니다.

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.* 를 읽어봅니다.

KerneL hackinG

커널 해커를 위한 옵션입니다.

[Y] Magic sySRq key

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

4. 커널 컴파일

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

4.1 청소

# cd /usr/src/linux
# make dep
# make clean
make dep : 새 커널 만들기를 시작하는 명령입니다. 컴파일을 위한 의존성 관 계를 설정합니다.

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

make dep;make clean

4.2 커널 컴파일 명령

# make bzImage

make zImage

커널 컴파일이 성공하면 /usr/src/linux/arch/i386/boot 디렉토리에서 커널 이미지 "zImage"를 볼 수 있습니다.

커널에 불필요한 기능까지 모두 집어넣어 커널이 제한된 크기를 넘으면 'SySte m is too big'이라는 에러 메시지를 남기고 컴파일이 실패합니다. 잘 쓰이지 않 는 기능은 모듈로 설정하고, 필요 없는 기능은 제거하여 커널 규모를 줄이고 다 시 컴파일합니다. 새로운 방법은 make bzImage를 이용하는 것입니다.

make bzImage

bzImage도 압축된 커널을 만듭니다. zImage는 1/2MB보다 큰 커널을 지원하지 않지만 bzImage는 1MB보다 위에 직접 커널을 로드하기 위해 기능이 확장되어 커널 크기를 대략 2MB까지 허용합니다. (/usr/src/linux/Documentation/initrd.txt)

만약 "make zImage"로 생성된 커널이 너무 크다면, 그 대신 "make bzImage"를 사용합니다. (/usr/src/linux/RAEDME)커널 컴파일이 성공했다면 /usr/src/linux /arch/i386/boot/디렉토리 아래 bzImage를 찾을 수 있습니다.

make zdisk

명령은 커널 이미지를 플로피 디스크에 만듭니다. 플로피 디스크로 새 커널을 테스트할 때 사용합니다. 커널 이미지를 만들고 lilo 까지 수행하는 'make zlilo' 명령도 있지만 몇 가지 문 제점이 알려져 있어 권장할 방법은 아닙니다.

4.3 모듈 컴파일

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

# cd /lib/modules
# rm -rf 2.0.36
# cd /usr/src/linux
# make modules
# make modules_install
# depmod -a 2.2.12
make modules : 커널 환경설정에서 모듈로 설정한 기능들을 컴파일합니다.

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

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

5. 새 커널 설치

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

5.1 부트 이미지 설치

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

# cp /usr/src/linux/arch/i386/bzImage /boot/bzImage-2.2.12

5.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/bzImage-2.2.12
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 m$ windogs and Some workS
image=/boot/bzImage-2.2.12 : 레이블 Linux인 커널 이미지 vmLinuz에 관련된 행을 삭제하지 않고 image=...으로 시작하는 'new' 메뉴를 추가합니다. lilo.conf 파일을 저장하고 새 설정으로 업데이트하기 위해 반드시 lilo 명령을 수행합니다.

# lilo

이제 새 부트 메뉴 "new"로 부팅에 실패하더라도 이전 커널이 링크된 linux 메뉴 로 안전하게 다시 부트할 수 있을 것입니다.

새 커널이 정상적으로 부트되었다면 링크를 새 커널로 바꿉니다. 그러나 새 커 늘 이미지가 개발버전이라면 vmLinuz가 안정버전의커널 이미지를 링크하도록 계속 두는 것이 안전합니다.

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

5.3 LoadLin

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

# mount -t vfat /dev/hda1 /mnt/vfat
# cp /usr/src/linux/arch/i386/boot/bzImage /mnt/vfat/usr/linux/boot
아래 명령은 도스 프롬프트에서 수행합니다.
c:\usr\Linux>copy con Lnx_boot.bat
LoadLin boot\bzImage root=/dev/hdb1
^Z
c:\usr\Linux>Lnx_boot.bat

5.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

6. 문서에 대해

다른 리눅스 문서들처럼 부끄러운 이 문서가 더 정확하고 유용한 정보를 담아 이 글을 읽은 리눅서가 더 많은 자유를 누리게 되길 바랍니다. 이 문서에 대해 질문과 질타, 조언, 그 밖의 모든 메일을 환영합니다.

       __.
       | |
  ____ | |   ____   ___._______.  ________
  / _ \| |   / _ \ / __|_. __| | | |_  /
 |  __/| |__|  __/| /___.| | | |_| |/ /__|
 |_____|____|_____|_____||_| \_____/_____|
 
  mailto:el@linuxlab.co.kr
  homo 3l3ctronicus 
  Hu 11ves o|/| tHE \/\/ir3. EL..
  lihaa@chollian.net fra1dca7@chollian.net
문서작업을 계속할 수 있도록 도와준 윤리하님 lihaa@chollian.net, 김숙중님 fra1dca7@chollian.net, withinu@netian.com, 그리고 양대경님 habroken@kornet21.com께 감사드립니다.


ID
Password
Join
Your mode of life will be changed for the better because of good news soon.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-12-24 12:17:20
Processing time 0.0030 sec