kernel compile > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

kernel compile 정보

기타 kernel compile

본문

kernel compile

15.1  rpm 기반의 kernel 설치

15.1.1 [ 필요한 패키지 ]
RedHat 6.1이상의 배포판이라면 modutils만 upgrade 하면 된다.
modutils를 upgrade하는데 glibc버전이 낮다면 glibc도 upgrade해야 한다. glibc는
locale과 timezone, 여러 library를 포함해서 의존성 문제에 영향을 주므로 upgrade시 주의가 필요하다.
rpm 버전이 낮다면 rpm도 upgrade한다.

15.1.2 [패키지명 버전 확인 방법]
[root @edu00 linux-2.4]#gcc –version  : Gnu C 2.7.2.3 
[root @edu00 linux-2.4]#make –version : Gnu make 3.77 
[root @edu00 linux-2.4]#ld –v   : binutils 2.9.1.0.22 
[root @edu00 linux-2.4]#kbdrate –v  : util-linux 2.10o 
[root @edu00 linux-2.4]#insmod –v  : modutils 2.3.13
[root @edu00 linux-2.4]#/sbin/tune2fs --version  : e2fsprogs 1.18
[root @edu00 linux-2.4]#cardmgr –V  :  pcmcia-cs 3.1.19
[root @edu00 linux-2.4]#pppd –version  : PPP 2.4.0
[root @edu00 linux-2.4]#isdnctrl   : isdn4k-utils 3.1beta7
[root @edu00 linux-2.4]# 2 > &1 | grep version
만약 커널 2.4 버전대의 컴파일시 modutils 버전이 앞에서 명시한 것보다 낮다면 모듈 컴파일시 에러가 난다.
modutils를 upgrade 해야 모듈 컴파일을 할 수 있다. modutils를 upgrade하면 예전의 /etc/conf.modules가 /etc/modules.conf 로 바뀌고, USB 모듈도 자동 로딩이 가능하며,
많은 예약어를 지원한다.

다음의 ftp 사이트에서 구할 수 있다.
ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.3/
15.1.3  설치
지금부터의 모든 작업은 root 로 로그인 해서 해야 한다.
[root @edu00 linux]#uname -r 
: 커널 버젼만 표시 
[root @edu00 linux]#uname -a 

rpm으로 할 경우 커널 컴파일에 필요한 파일은 ftp://ftp.redhat.com 에서 받아온다.
일반 사용자인 경우 다음의 두 개의 파일만 가져와서 설치하면 된다.
[root @edu00 linux]#rpm -Uvh --nodeps kernel-header-(커널버젼).i386.rpm
[root @edu00 linux]#rpm -Uvh --nodeps kernel-source-(커널버젼).i386.rpm

커널 rpm 에는 소스, 헤더, BOOT 등등 여러 가지가 있는데  header, source rpm 만 풀고 컴파일해도 된다. 커널소스 이외의 것들(헤더, BOOT, doc 등)은 처음 설치할 때 이미 각각의 기능으로 컴파일된 rpm 파일로 설치한다. 커널 컴파일해서 생성될 수 있는 것은 BOOT, smp이며, 나머지는 생성되지 않는다.
doc은 /usr/doc 밑에 들어가는 문서 파일이며, BOOT는 부팅할 수 있는 이미지와 모듈에 관련된 것이고, 헤더는 /usr/src/커널버전/include 디렉토리에 들어가는 헤더 파일들이다.
커널 관련된 rpm 파일은 '소스, 커널 헤더, BOOT, doc, smp, pcmcia' 등이 있다.
kernel-source...  커널 소스 rpm
kernel-headers... 커널 헤더 rpm
kernel-doc...     커널 문서 rpm
kernel-BOOT...    부팅과 모듈 관련 rpm
kernel-smp...     멀티 프로세서일 때 필요한 rpm
kernel-pcmcia...  노트북 pcmcia에 필요한 rpm
kernel-ibcs...    Intel Binary Compatibility Specification 관련 rpm

rpm 파일의 커널은 모든 것이 모듈로 포함되어 있기에 커널의 크기도 크고, 그만큼
메모리도 많이 사용한다.
커널 컴파일로 커널을 최소화, 최적화하고, 또한 잡히지 않은 하드웨어를 인식시켜야 한다.
rpm 파일을 -Uvh 옵션으로 설치할 경우에는 기존의 설치된 kernel-header 와 kernel-source 파일들을 자동으로 지우고 새 버젼의 파일로 대체 된다.
이전 버전의 커널소스가 필요하다면 다른 이름으로 백업하고, 새 버전을 설치한다.
CPU 가 2개 이상일 경우에는 kernel-smp-(커널버젼).i386.rpm 파일을 받아 와야 하고, 노트북에서 리눅스를 실행 시키려면 전원 관리 기능을 제공하는 kernel-pcmcia-cs-(커널버젼).i386.rpm도 설치해야 한다.
위의 두 파일을 설치하는데 뒤의 --nodeps 옵션은 header를 풀려면 source가, source를 풀려면 header가 있어야 한다고 설치를 거부하기 때문에, 이 옵션을 주어 강제로 설치한다.
설치를 하면 /usr/src/linux-(커널버젼) 라는 디렉토리가 생긴다.
기존의 linux 링크를 지우고, 다시 linux 라는 이름으로 linux-(커널버젼) 를 새로 링크시킨다.
rpm으로 설치시 자동으로 생성된다.
[root @edu00 linux]#cd /usr/src
[root @edu00 src]#rm -rf linux
[root @edu00 src]#ln -s linux-(커널버젼) linux

15.2 소스 기반의 커널 설치

15.2.1 소스 기반의 커널 설치
소스를 가져와서 컴파일 할 때는 이를 /usr/src 밑에 푼다. 압축을 풀면 위의 rpm 과는 반대로 linux 라는 디렉토리에 압축이 풀린다. 
[root@edu00 src]#ln -s linux-(커널버젼) linux

15.2.2 linux라는 링크를 만드는 이유 :
/usr/src 디렉토리 아래에 여러 버젼의 리눅스 커널 소스를 두고 작업을 할 때 편하게 하기 위해, 패치 작업할 때 패치할 파일이 linux라는 디렉토리 안에서 찾도록 되어 있기 때문, * linux로 링크 하지 않을 경우 : 패치할 때 에러 발생할 수 있다.
시스템의 심볼릭 링크가 새로운 커널 트리를 제대로 가리키고 있는지 확인한다.
15.2.3 컴파일전 작업
커널 컴파일을 할 때 이에 대한 프로세서를 가장 우선순위에 두고 싶다면
[root @edu00 linux]#nice -20 make mrproper menuconfig dep clean bzImage
[root @edu00 linux]#nice -20 make modules modules_install
nice명령어는 어떤 프로그램을 컴파일 하던지 ./configure 나 make명령 앞에 붙여
주면 된다.
2개 이상의 cpu를 가지고 있을 경우 컴파일을 각 cpu에 동시에 할당 해 주면, 컴파일을 병렬로 처리하기 때문에 속도가 빨라 진다.
-j (숫자) = ( 램 용량 / 8 ) + 1
예로, 램이 128 메가인 경우에는 -j 17이 된다.
SMP 시스템에서 더 많은 이득을 볼 수 있지만, 단일 프로세서 시스템에서도 -j 는
적절한 성능을 보여 준다.
[ 실제 사용 예 ]
make -j5 mrproper menuconfig ....
make -j5 modules modules_install ....

15.3  Kernel Compile

15.3.1 커널 소스 디렉토리
[root @edu00 linux]#cd /usr/src/linux-2.4

15.3.2 이전 정보 삭제
[root @edu00 linux-2.4]#make mrproper
이전에 설정한 정보를 지우거나 새로운 커널 소스를 가져다 컴파일할 때에는 이 명령을 먼저 사용해야 한다. 이전 커널을 컴파일할 때 만들어진 오브젝트 파일(*.o)과의 의존성 설정내용, 컴파일 환경 설정값, 버전 정보 등 새로 시작하는 컴파일에 영향을 주는 이전 정보를 삭제.
기존의 커널 소스를 계속 사용할 것이고, 그 소스로 컴파일을 한 번이라도 하였으며, 그 소스의 설정 값들을 잃고 싶지 않다면 이 명령을 사용하지 말 것.

15.3.3 환경 설정 인터페이스
[root @edu00 linux-2.4]#make menuconfig

 


1. make menuconfig
ncurses(new-curses)라는 라이브러리가 설치되어 있어야 한다.
ncurses 는 화면 입/출력에 쓰이는 라이브러리
ncurses 가 설치되지 않았다면 실행되지 않는 프로그램들이 많으므로 반드시 설치되어야 한다.

2. make xconfig
X-윈도우와 TcL/Tk 인터프리터/툴킷 라이브러리가 필요.
설정이 끝나면 반드시 주 화면의 'Store Configuration to FiLe' 항목에서 설정 내용을 파일로 저장.
커널 옵션 설정후 설정내용은 /usr/src/linux에 '.config' 라는 이름으로 저장된다.

3. make config
텍스트 방식
    
4. make oldconfig
이전 설정 정보는 그대로 둔 채 새로운 옵션들에 대해서만 물어본다.

à make는 "Makefile"에 서술된 규칙을 이용하여 소스코드 파일들을 관리한다.
최근 변경을 적용하여 소스코드를 오브젝트 파일로 컴파일하고 라이브러리 파일과 링크하여 실행 가능한 파일로 컴파일하는 과정들을 자동으로 처리한다.

15.3.4 커널 옵션 설정 
커널은 시스템이 동작하는 동안 계속 메모리에 적재되어 있으므로 환경 설정이 매우
중요하다.
Code maturity level options --->
코드 성숙도(成熟度)에 관한 설정

[ ] Prompt for development and/or incomplete code/drivers 
개발 수준의 옵션들도 선택 가능하게 해준다.
시스템 특성에 따라 에러가 발생하기도 한다.

 

 

Loadable module support --->
모듈기능에 대한 설정

[*] Enable loadable module support
모듈을 사용할 수 있게 해줌.
자주 쓰이지 않는 장치 드라이버나 기능들을 모듈로 만들어서 필요할 때에만 동적으로 메모리에 적재하여 사용한다. 작업이 끝나면 메모리에서 다시 제거하므로 메모리를 효율적으로 사용할 수 있다. 커널 크기가 감소한다.
전체 커널과 분리되어 있어 모듈로 설정한 기능에 변화가 있더라도 전체 커널에는
이상이 없다.
파일시스템, 장치 드라이버, 바이너리 포맷 등 많은 기능이 모듈을 지원한다.
반드시 [Y]를 선택한다.

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

[*]   Kernel module loader
커널이 알아서 모듈을 올려준다.
kerneld 데몬이 대체된 기능이다.
모듈로 만들어진 기능을 필요할 때 적재하고 제거하는 작업들을 modprobe를 이용해 커널이 자동으로 관리한다.
일반적으로 [Y]를 선택한다.

Processor type and features --->
컴퓨터의 중앙처리장치에 대한 기능들
(Pentium-III) Processor family
386을 선택하면 인텔 계열의 모든 프로세서에서 동작하는 커널이 만들어진다.       커널은 CPU 각각의 특성과 버그에 최적화될 것이다.
< > Toshiba Laptop support
< > /dev/cpu/microcode - Intel IA32 CPU microcode support

 


"File systems" 섹션에 있는 "/dev file system support" 옵션 설정을 해야 한다.
IA32 계열의 인텔 프로세서(펜티엄 프로, 펜티엄 II, III, 4, Xeon 등)에서 마이크로
코드를 업데이트 할 수 있다.

< > /dev/cpu/*/msr -Model-specific register support
x86 Model-Specific Registers(MSRs)에 접근할 수 있는 특권을 프로세스에게 준다.
MSR은 멀티-프로세서 시스템에서 지정한 CPU에 직접 접근한다.
CPU가 두 개 이상인 멀티 프로세서 시스템이고 이 기능을 사용하는 프로그램이
있다면 [M]이나 [Y]를 선택한다.

< > /dev/cpu/*/cpuid -CPU information support
특정한 프로세서에서 실행될 수 있도록 x86 CPUID 명령들에 접근할 수 있는
특권을 준다.
CPU가 두 개 이상인 멀티 프로세서 시스템이고 이 기능을 사용하는 프로그램이 있다면 [M]이나 [Y]를 선택한다.

(off) High Memory support (NEW)
리눅스는 x86시스템에서 64 GB까지 물리적 메모리를 사용할 수 있다.
x86프로세서에서 주소 공간은 32비트이므로 최대 4 기가바이트까지만 지원한다.
모든 물리적인 RAM을 더해서 1 GB가 넘지 않는다면(앞으로도) "off"라고 한다.
  (대부분의 사용자에게 적당한 것이어서 기본값으로 설정되어 있다).
물리적 램이 1GB이상 4GB 미만이라면 "4GB"를, 4 GB이상이면 "64GB"를 선택
이 옵션은 인텔 PAE(Physical Address Extension)모드를 활성화시킨다.
PAE에는 3-레블 페이징이 있는데 리눅스에서는 모든 것을 지원한다.
Pentium Pro 이상의 인텔 프로세서에서는 모두 PAE를 지원한다.
물리적 메모리는 커널에서 자동으로 그 크기를 감지하지만 부트 패러미터에 메모리 크기를 직접 지정할 수도 있다.
(예를 들어 "mem=256M")
확실하지 않다면 (off)를 선택
(x) off
( ) 4GB
( ) 64GB

 


[ ] Math emulation
수치연산 보조프로세서(co-processor)가 없는 386, 486SX에서 코프로세서를 에뮬레이션하는 기능이다. CPU 처리 속도나 능력이 매우 낮았던 때에 수치연산만 도와주는 전용 프로세서를 따로 사용. 펜티엄, 혹은 K6 이상 시스템을 사용한다면 [N]을 설정

[*] MTRR (Memory Type Range Register) support
프로세서가 메모리 영역 접근을 제어할 수 있음. 
그래픽의 쓰기 속도 향상.
인텔 Pentium II나 Pentium Pro, K6 시스템의 PCI나 AGP 버스 비디오 카드에 유용하다. 이 기능은 이론상 이미지를 2.5배 이상 빨리 쓸 수 있도록 만든다고 한다.
MTRR이 없더라도 이 기능을 켜두는 것은 안전하다.

[ ] Symmetric multi-processing support
SMP는 두 개 이상의 프로세서(CPU)를 사용하는 멀티프로세싱 시스템을 위한 설정이다. CPU 각각에 대한 정보는 "cat /proc/cpuinfo" 명령이나 gtop 등 유틸리티로 볼 수 있다. "Y"를 답하고 프로세서 패밀리 아래 "586" 또는 "Pentium"을 선택하면 486 아키
텍쳐에서는 동작하지 않을 것이다. SMP를 사용하기 위해서는 "Enhanced Real Time
Colck Support"도 [Y]를 선택해야 한다.
"Advanced Power Management" 코드는 disable 시켜야 한다.
싱글프로세서를 가진 시스템에서 이 기능을 사용하면 제대로 동작하지 않거나,
오히려 시스템이 느려질 수 있다.
CPU가 하나라면 [N].

General setup --->
네트워킹과 버스 프로토콜, 절전기능 등 시스템에 전반적으로 영향을 주는 설정들

[*] Networking support      
네트워킹 지원.
네트워크에 연결되어 있지 않더라도 루프백 기능에서 필요하며, 전화선을 통해 인터넷
에 접속하는 SLIP, PPP diaL-up 네트워킹에서도 필요하다.
어떤 프로그램들, 특히 X 윈도우용 프로그램들은 네트워크 기능의 설정되어 있어야
제대로 동작하는 경우가 많다. [Y]

 


[ ] SGI ViSuaL WorkStaion Support
슈퍼 컴퓨터 크레이로 유명한 Silicon Graphics의 SGI 320이나 540 워크스테이션에서 리눅스를 사용한다면 [Y]를 한다. 다른 PC 보드에서는 동작하지 않을 것이다.
"IBM PC 호환기종"이라 불리는 머신을 사용하고 있다면 [N]를 답하는 것이 좋다.

[*] PCI support       
PCI 지원. 대부분의 486시스템, Pentium 이상 기종의 마더보드는 PCI 버스를 지원하는 바이오스를 사용한다.
ISA(16비트 컴퓨터), EISA(386이나 486초기), MCA(IBM의 PS/2 전용)가 아닌 경우
[Y]를 선택한다.

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

[*] PCI device name database
기본 값으로, 커널은 모든 알려진 PCI 장치 이름들에 대해 /proc/pci, /proc/ioports에
사용자들이 쉽게 알아볼 수 있는 정보를 만들기 위해, 데이터베이스를 가지고 있다.
이 데이터베이스는 커널 이미지 크기를 80KB 늘리지만, 시스템이 부트된 다음에는
다시 회수되는 메모리이므로, 실제로 커널 메모리에는 아무 영향을 주지 않는다.
설치디스켓이나 임베디드 시스템 등 크기가 가장 중요한 커널을 만든다면 이 기능을
뺄 수 있다. 다만, 장치들의 이름 대신 장치 ID 번호들을 사용해야 할 것이다. [Y]

[ ] EISA support
EISA(Extended Industry Standard Architecture) 버스는 오래 전에(1988년부터 1995
년 사이) 쓰이던 기능으로 PCI 버스가 나타난 이후로 아주 사라져 버렸다. PC에서
EISA를 사용하는 것이 확실할 때에만 이 기능을 사용한다. 펜티엄 이상을 사용하는

 


모든 사용자는 [N]을 선택

[ ] MCA support
MicroChanneL Architecture는 IBM PS/2 머신에서 찾아볼 수 있는데 국내에서는 잘
쓰이지 않는다. [N]

[*] Support for hot-pluggable devices
PCMCIA나 PC카드 등은 컴퓨터가 동작하는 동안 장치를 새로 꽂거나 뽑는 일을 할 수 있다. 네트워크 카드, 모뎀, 하드 드라이브등이 이 기능을 사용하는데 대개 랩탑 컴퓨터
에서 사용하고 있다. 요즘에는 데스크탑에서도 USB를 이용해 이런 기능을 제공한다.
HOTPLUG와 KMOD를 활성화하고 커널 모듈로 만든 다음 에이전트 소프트웨어(http://linux-hotplug.sourceforge.net)를 가져와서 시스템에 설치해야 한다.

PCMCIA/CardBus support --->
< > PCMCIA/CardBus support
CardBus는 PC카드를 위한 32비트 버스 매스터링 아키텍쳐이다. 원래 PCMCIA 표준
제품들은 16비트 와이드 버스밖에 없다. 새로 나온 PC카드 대부분은 CardBus 카드
들이다.  PC-카드를 사용하려면 먼저 이 기능을 지원하는 소프트웨어를 (David
Hind"s pcmcia-cs 패키지) 설치해야 한다. [Y] 또는 [M]

<*>   CardBus support
< >   i82365 compatible bridge support
[ ]   Database TCIC host bridge support
 
[*] System V IPC
System V IPC, Shared Memory 지원
프로세스 사이에서 동기화와 정보교환을 위한 라이브러리 함수와 시스템 콜 집합이다.
[Y]를 선택한다.
특히, Dos emulator와 같은 프로그램을 사용하려 한다면 동기화를 위해 [Y]를 선택해야 한다. 메모리에 적재되어 실행중인 프로그램이 프로세스이며 프로세스는 프로그램의 코드들과 프로그램 실행을 위한 다양한 값들을 포함하는 것으로 프로그램의 영혼이라 부르기도 한다.

 


이 기능을 선택하면 커널이 18KB 정도 늘겠지만 반드시 [Y]라 답해야 한다.

[*] BSD Process Accounting
프로세스가 끝날 때 커널에 의해 프로세스 정보가 파일에 추가된다. 프로세스 정보는
생성시간, 소유권, 커맨드 이름, 메모리 점유율, 터미널 제어 등이 포함된다.
이 옵션에 [Y]라 답하는 것이 유용하다

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

(ELF) Kernel core (/proc/kcore) format
ELF core 포맷
"support for /proc file system"을 활성화하면 커널의 코어 이미지가 /proc/kcore
파일에 저장된다. gdb에서 활용할 수 있다.
#cd /usr/src/linux ; gdb vmlinux /proc/kcore
둘 가운데 하나를 선택할 수 있다.
ELF를 선택하면 /proc/kcore 파일이 ELF 코어 포맷으로 구성된다.
A.OUT을 선택하면 이전 버전의 binutils 등 오래된 도구들이나 아키텍쳐에서 사용할 수 있다. 커널을 컴파일할 때 "-g"옵션으로 디버깅 정보를 넣은 다음, 이 커널이 실행중인 동안에도 커널 데이터 구조를 시험하는 용도로 사용한다.
기본값인 ELF를 그대로 사용

 

 

<M> Kernel support for a.out binaries
a.out 바이너리 지원, a.out(assembler.output)은 ELF 이전에 쓰이던 바이너리로 점차 사라져 가는 포맷이다. 이 기능은 사용되지 않는데 필요하다면 모듈로 설정한다[M]
 
<*> Kernel support for ELF binaries
ELF 바이너리 지원, ELF(Executable and Linkable Format)는 서로 다른 OS나 Architecture에 호환될 수 있도록 표준화된 Binary File Format이다.
ELF는 리눅스 바이너리 포맷의 표준이기도 하므로 반드시 [Y]를 선택
리눅스 커널과 많이 쓰이는 모든 프로그램들이 ELF 포맷으로 컴파일된다.
ELF는 a.out에 비해 진보된 기능들을 포함한다.
특히 a.out 포맷은 ELF의 공유 라이브러리의 동적 지원 기능이 없다. [Y]
 
<*> Kernel support for MISC binaries
Java, Emacs-Lisp, DOS 실행파일등을 커널 바이너리 클래스에 등록했다면 인터프리터
를 거치지 않고 셸 프롬프트에서 파일 이름을 쓰는 것만으로 간단히 프로그램을 시작할 수 있다.
[Y]라고 답했다면 "Kernel Support for JAVA binaries", "kernel Support for Linux/Intel ELF bianries"기능은 필요 없다. [Y]를 선택

[*] Power Management support
컴퓨터를 끄거나 전력 소비를 줄이는 기능을 전원 리라 한다.
APM과 ACPI 두 가지 표준이 있다.
둘 가운데 어떤 것이든 원한다면 [Y]를 답하고 아래에서 적절한 옵션들을 선택 한다.
랩탑의 배터리처럼 시간 제한이 있는 전원장치를 가진 시스템에서는 유용하지만 서버에서는 쓸모 있는 기능은 아니다.
이 옵션을 끄더라도 시스템을 멈추는 hlt 명령은 사용할 수 있다.
 
[ ] ACPI support (NEW)
리눅스에서 ACPI/OSPM 지원기능은 현재 개발중이다.
ACPI(Advanced Configuration and Power Interface)는 이전의 전원관리 표준보다 더욱 세세한 정보들을 다룬다고 한다. ASPI/OSPM을 사용하려면 이 기능을 지원하는 하드웨어/펌웨어를 갖춘 시스템이어야 한다. [N]을 선택하는 것이 안전

 


< > Advanced Power Management BIOS support
노트북 등 전원관리가 필요한 시스템이라면 설정
[]     Ignore USER SUSPEND
[ ]     Enable APM at boot time
[ ]     Make CPU Idle calls when idle
[ ]     Enable console blanking using APM
[ ]     RTC Stores time in GMT
[ ]     Allow interrupts during APM BIOS calls
[ ]     Use real mode APM BIOS call to power off (NEW)

Memory Technology Devices (MTD) --->
< > Memory Technology Device (MTD) support
MTD는 임베디드 디바이스에서 고형체 파일시스템(solid state filesystem, 뱅글뱅글
돌지 않는)을 구성하는데 사용하는 플래시 메모리, RAM, 그리고 비슷한 다른 칩셋 등 메모리 장치이다. [N]

Parallel port support --->
병렬포트 프로토콜과 장치들을 지원
< > Parallel port support

Plug and Play configuration --->
새로운 장치나, 없어진 장치에 대한 정보를 스스로 설정하는 PnP 기능을 사용하려면
설정
<*> Plug and Play support
Plug and Play 지원
          
<M> ISA Plug and Play support
ISA PnP 장치들이 많지 않으므로 [N]을 선택
오래된 ISA 사운드 카드나, 게임패드 등을 가지고 있다면 이 기능을 활성화

Block devices --->
플로피 디스크, 하드 디스크, 시디롬처럼 블록단위로 읽고 쓰는 장치

 


<*> Normal PC floppy disk support
플로피 드라이버 장치 지원, IBM PC나 그 호환기종에서 사용하는 일반적인 플로피
디스크 드라이브가 있다면 [Y]나 [M]을 선택

< > XT hard disk support
XT라는 매우 오래된 8bit 시스템에 대한 설정, [N]

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

< > Compaq SMART2 support
컴팩의 SMART Array 컨트롤러를 지원하는 드라이버, 이 보드가 있는 사람들은 모두
[Y]를 선택, 이 드라이버를 지원하는 보드 목록은 "#cat /usr/src/linux/Documentation
/cpqarray.txt"로 확인한다. 이 보드가 없거나, 잘 모르겠으면 [N]

< > Compaq Smart Array 5xxx support
컴팩의 Smart Array 5xxx 컨트롤러를 지원하는 드라이버, 이 보드가 있는 사람들은
모두 [Y]를 선택한다.
이 드라이버를 지원하는 보드 목록은 "#cat /usr/src/linux/Documentation/cciss.txt"로
확인하고 이 보드가 없거나, 잘 모르겠으면 [N]

< > Mylex DAC960/DAC1100 PCI RAID Controller support
블록 디바이스를 병렬로 연결해서 속도나 안정성을 높일 수 있는 PCI RAID 컨트롤러를 지원한다. 고가의 서버에서나 볼 수 있는 장비이고 이 컨트롤러가 없는 장치들은 소프트웨어 RAID를 이용해서 같은 일을 할 수 있다.
리눅스 커널에서 지원하는 소프트웨어 RAID를 사용하려면 [N]

<M> Loopback device support
한 파일을 하나의 파일 시스템처럼 인식시키며 파일을 블록 디바이스처럼 사용하는
기능이다. 파일 속에 파일시스템을 만들어서, 일반적인 블록 장치를 다루듯 mount 명령
으로 마운트하여 사용할 수 있다.
특별한 파일시스템의 실험, CDROM을 굽기 전에 또는 플로피디스크로 옮길 이미지

 


테스트, 암호화 등에 유용하다.
암호화를 바란다면, ftp://ftp.replay.com/pub/crypto/linux/all
ftp://verden.pvv.org/pub/linux/kerneli/v2.1/에서 커널 패치를 구해서 설치하고, [Y]를 선택
이 loopback 디바이스는 네트워크에서 loopback 연결(127.0.0.1)과는 상관이 없다.
이 옵션을 활성화하면 CD-Recorder나 CD-RW 등 특별한 장치가 없을 때 ISO 이미지 파일로 나눠주는 FTP버전 배포판들을 가져와서 CD로 굽지 않고 파일 그대로 보통 CD-ROM처럼 마운트하여 사용할 수 있다. 잘 모르겠으면 [Y]
 
< > Network block device support
네트워크로 연결된 서버 또는 루프백 서버의 파일시스템을 마운트하여 블록 디바이스(/dev/nd0,...)처럼 사용하는 기능이며 클라이언트와 서버는 TCP/IP로 통신한다.
이 기능이 없더라도 NFS나 Coda를 사용하면 네트워크 파일시스템을 사용할 수 있다. [N]
 
< > RAM disk support
램을 하드 디스크와 같은 블록 디바이스처럼 사용하는 기능
Linux를 인스톨하는 동안 램에 작은 루트 파일시스템을 생성하기 위해 사용되기도
한다. 대부분 사용자는 램 디스크 기능이 필요 없다. [N]

[ ] Initial RAM disk (initrd) Support
일반적인 부트 과정이 시작되기 전에 부트로더로부터 실행되는 램디스크이며,
램 디스크는 일반적으로 "real" 루트 파일시스템 등을 마운트하기 위해 필요한 모듈을
로드하기 위해 사용한다. [N]

Multi-devices support (RAID and LVM) --->
[ ] Multiple devices driver support (RAID and LVM)
RAID, LVM 등 다중 저장 장치들을 지원
< > RAID support
여러 개의 블록 디바이스를 하나의 커다란 블록 디바이스처럼 묶어 사용하는 기능
입출력이 분산되므로 디스크를 읽고 쓰는 속도가 훨씬 빨라져 다중 사용자 시스템에 매우 유용

 


RAID-0, RAID-1 (mirroring)은 일반적인 디스크보다 여러 면에서 위험하지만
RAID-5는 에러 복구가 가능하고 RAID-4의 문제점이었던 병목현상이 제거된 안정적
모드

< > Linear (append) mode
< > RAID-0 (Striping) mode
< > RAID-1 (mirroring) mode
< > RAID-4/RAID-5 mode
< > Logical volume manager (LVM) support
하드 드라이브, 하드 디스크 파티션, 멀티플 디바이스 , 루프 디바이스까지도
몇 개를 묶어 볼륨 그룹화하는 것을 지원한다. 볼륨 그룹은 일종의 가상 디스크,
논리 볼륨은 볼륨 그룹 안에서 만들 수 있는 가상 파티션이다.
볼륨 그룹이나 논리 볼륨은 만들어진 다음에도 크기를 조정할 수 있다.
논리 볼륨은 /dev/VolumeGroupName/LogicalVolumeName이라는 장치이름을
가진다
     
Networking options --->
<*> Packet socket
네트웍 디바이스와의 직접통신을 하게 해준다.
tcpdump처럼 매개 프로토콜없이 직접 네트워크 장치와 통신하는 어플리케이션에서 사용 [Y]
 
[ ] Packet socket: mmapped IO
더 빠른 통신을 할 수 있게 한다. 옵션을 활성화하면 패킷 프로토콜 드라이버는 더
빠른 통신을 지원하는 IO메커니즘을 사용한다. [N]

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

 


위해서는 [Y]를 선택

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

< > NetLink device emulation
이 옵션은 곧 사라지고 넷링크 소켓으로 바뀐다. [N]

[*] Network packet filtering (replace ipchains)
넷필터는 이전 커널에서 방화벽, 혹은 메스커레이딩이란 이름으로 불리던 옵션들의
새 이름이다. 넷필터는 리눅스 박스를 지나가는 네트워크 패킷을 걸러내고(filtering)
조각내기(mangling) 위한 구조(체제)이다.
패킷 필터링의 일반적인 사용은 리눅스 박스를 방화벽으로 만들어 로컬 네트워크를
인터넷으로부터 보호하는 것이다.
방화벽으로 쓰일 때 이 기능을 "패킷 필터"라 부른다.
이것은 네트워크 패킷을 타입(type), 근원(source), 목적지(destination) 등을 기초로 deny할 수 있음을 뜻한다.
"프록시-기반(proxy-based one)"의 방화벽은 침입에 대해 더 안전하지만 설정이
까다롭다. 프록시 기반 방화벽은 커널에서 지원하는 것이 아니지만, 자주 패킷 필터와 조합해서 쓰이므로, 이 옵션은 활성화한다.
또 이 옵션은 공인 IP 주소가 없는 로컬 네트워크 머신들을 인터넷에 연결할 때
리눅스 박스를 게이트웨이(gateway)로 만들기 위해 쓰인다.
이것은 "매스커레이딩(masquerading)"인데, 로컬 네트워크에 물려 있는 컴퓨터들
가운데 하나가 외부(인터넷)에 데이터를 보낸다면 공인 IP 주소를 가지고 있는
게이트웨이 박스는 그 컴퓨터를 "가장(masquerade)"해서 대신 주고 받을 수 있다.
즉, 외부 목적지로 트래픽을 보내지만, 패킷이 방화벽 박스 자신으로부터 나온 것처럼 보이게 하려고 패킷을 수정한다.
포트 포워딩이라는 메커니즘을 사용하면 서버들까지도 메스커레이딩을 통해 외부에 서비스를 제공할 수 있다. 흔히 메스커레이딩을 NAT(Network Address Translation)

 


라고 부른다. 넷필터는 투명한 프록시(transparent proxying)에도 쓰인다.

[ ] Network packet filtering debugging (NEW)
넷필터 코드를 디버깅하는데 유용한 정보들을 추가 [N]

[ ] Socket Filtering
리눅스 소켓 필터는 버클리의 패킷 필터로부터 파생된 것이다.
Unix 시스템은 소켓을 통해 프로세스 사이 통신이 이루어진다.
이 기능을 선택하면 커널 수준에서 소켓을 조사하고, 허용/불가를 지정할 수 있다.
리눅스 소켓 필터링은 TCP를 제외한 모든 소켓에서 동작한다. [N]

<*> Unix domain sockets
소켓은 네트워크를 연결하고 접근하기 위한 표준 장치(mechanism)이다.
리눅스 박스가 네트워크에 연결되어 있지 않더라도 X 윈도우 시스템이나 syslog
같은 프로그램들이 소켓을 사용한다.
이 기능을 모듈로 설정하고 모듈 적재를 잊으면(neglect to load the module) 중요한 서비스들이 동작하지 않을 수 있다. [Y]를 권장

<*> TCP/IP networking
TCP/IP 네트워킹 지원
인터넷과 이더넷 등 대부분 네트워크에서 사용하는 표준 프로토콜이다.
인터넷 접속뿐만 아니라 많은 프로그램에 꼭 필요하므로 반드시 [Y]를 선택한다.
TCP/IP는 데이터 통신 프로토콜을 가리키며 가장 중요한 전송 제어 프로토콜 (transmission control protocol)과 인터넷 프로토콜(internet protocol)에서 이름을 따 온 것이다.

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

 

 


[ ] IP: advanced router
리눅스 박스를 주로 라우터로 사용할 계획이라면 설정
라우터는 패킷 경로를 제어하는 것으로 패킷을 어떤 게이트웨이로 보낼 것인지를
결정하는데, 라우터가 게이트웨이 역할까지 하는 경우가 많기 때문에 게이트웨이라
불리기도 한다. 이 옵션은 일반적인 라우팅 기능에 필터링, 보안(IP 속이기 예방) 등 몇 가지 향상된 기능을 지원한다. 잘 모르겠으면 [N]
      
[ ] IP: policy routing
라우터는 수신한 패킷의 목적지 주소에 따라 무엇을 할지 결정한다.
만일 이 옵션에 [Y]라고 답한다면 리눅스 라우터가 패킷의 송신지 주소를 고려할 수
있게 된다.
"IP: use TOS value as routing key"도 [Y]로 한다면 패킷의 TOS(Type-Of-Service)부분은 라우팅 결정을 위해서 사용된다. “IP: fast network address translation"를 [Y]로 한다면 리눅스 라우터는 전송된 패킷의 송신지와 목적지 주소들도 수정할 수 있게 된다.

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

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

[ ] IP: use TOS value as routing key (NEW)
모든 IP 패킷의 헤더부분은 그 패킷이 요구하는 특정 처리부분을 담고 있는 TOS(Type of Service)값을 가지고 있다.
(상호작용하는 트래픽을 위한) low latency, 높은 처리량, 높은 신뢰도 같은 것들이

 


있다. [Y]라고 답하면, 서로 다른 TOS값들을 가진 패킷들을 위해 서로 다른 라우터를 지정할 수 있게 된다.

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

[ ] IP: large routing tables (NEW)
라우팅 존에 64 항목 이상이 필요하다면 [Y]를 선택해서 라우팅 프로세스 속도를
높인다.

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

[ ] IP: BOOTP Support (NEW)

[ ] IP: RARP Support  (NEW)

<M> IP: tunneling
한 프로토콜 안에 다른 프로토콜의 자료를 캡슐화하여 서로 다른 프로토콜 사이에서
전송하는 기능이다. IP 주소 변경없이 네트워크 사이를 옮겨 다니는 Mobile IP 기능과 관련된 옵션이다. 대부분 이 기능은 필요 없다. [N]

< >  IP: GRE tunnels over IP
GRE(generic routing encapsulation)는 멀티캐스트, IPv6를 지원한다.
Cisco 라우터에 연결될 때 유용하다. 잘 모르겠으면 [N].

[ ] IP: multicast routing

 


리눅스 박스가 다수의 machine에 IP 패킷을 전송할 때 사용할 수 있다.
MBONE, 오디오나 비디오 broadcast를 목적으로 구성된 높은 대역의 인터넷에서 사용, Multicast용 네트워크 카드 정보는 Documentation/networking/multicast.txt
대부분의 사용자에게 이 기능은 필요 없다. 잘 모르겠으면 [N].
   
[ ] IP: PIM-SM version 1 support (NEW)
[ ] IP: PIM-SM version 2 support (NEW)

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

[ ] IP: TCP Explicit Congestion Notification support
이 옵션은 장비들에게 전송 속도를 낮추어 줄 것을 요구하는 혼잡 공지(ECN) 비트를
허용한다. 네트워크가 혼잡하면 응답시간이 늦어지고 처리량이 감소하게 된다.
(네트워크가 혼잡하면 교환기는 데이터를 단순히 삭제하기 때문이다).
이때 클라이언트가 체증에 대해 라우터에게 알리도록 하면 결과적으로 버려지는 패킷이 줄어들게 되므로 네트워크 퍼포먼스가 높아진다.
인터넷에는 ECN을 보내는 머신으로부터의 연결을 거부하는 고장난 방화벽들이 많이 있는데, 그런 방화벽 뒤에 있는 사이트에 접속하려면 이 옵션을 꺼야 한다.
그럴 경우 [N]을 답하거나, sysctl(/proc/sys/net/ipv4/tcp_ecn)을 이용해 실행시간에 끌 수 있다. 잘 모르겠으면 [N]

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

 


서비스 거부 공격을 받을때 대처해 준다. TCP/IP의 약점을 이용해 서버에 접속을
할 수 없도록 하는 SYN attack(TCP/IP Hacker 등 공격)을 막아준다.
서비스 거부 공격(Denial-of-service)을 당하는 동안에는 합법적인 원격 사용자들이
접속하기 어려워지는데, 이런 공격은 인터넷에 연결된 machine이 있다면 누구든지
쉽게 시도할 수 있다.
그러나 이 옵션을 사용하면, TCP/IP 스택에서 "SYN cookies"라고 불리는 암호화된
프로토콜을 사용하므로, 컴퓨터가 공격을 받고 있더라도 합법적인 사용자가 계속해서
접속할 수 있도록 보호한다.
SYN cookies는 소프트웨어에 대해 투명하게 동작하므로 사용자들은 자신의 TCP/IP 소프트웨어를 변경할 필요가 없다.
만약 여러분이 SYN flood 공격을 받고 있다면, 커널이 알려주는 공격자의 주소는
위조 되었을 가능성이 높다. 그 주소는 패킷들의 실제 주소를 추적하는데 도움이 될
뿐이며, 절대적인 것으로 취급해서는 안된다.
서버가 과중한 부하에 걸려서 클라이언트에 대한 에러를 올바로 알릴 수 없다면 이
옵션을 선택하지 말아야 한다.
"/proc filesystem support"와 "Sysctl support" 옵션에도 [Y]를 선택하고, proc 파일
시스템이 마운트되고 나서 다음 명령을 실행해야 SYN cookies가 동작한다.
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies SYN cookies
잘 모르겠으면 [Y]를 선택

IP: Netfilter Configuration  --->
< > Connection tracking (required for masq/NAT)
연결 추적은 어떤 패킷이 머신을 거쳐갔는지, 패킷들이 얼마나 연결 되었는지 그
기록을 유지한다. 이 옵션은 메스커레이딩 혹은 다른 종류의 네트워크 주소 변환(Fast NAT는 빼고)에 필요하다. 그리고 향상된 패킷 필터링에도 쓰인다.
잘 모르겠으면 [N].

<*>  FTP protocol support
FTP 연결을 추적한다. 확실하지 않다면 [Y].

< > Userspace queueing via NETLINK (EXPERIMENTAL)
넷필터는 유저 공간에 패킷을 큐하는 기능을 가진다.

 


넷링크 장치는 이 드라이버를 이용해서 그들에 엑세스 하도록 사용될 수 있다.
잘 모르겠으면 [N].

< > IP tables support (required for filtering/masq/NAT)
iptables는 일반적이며, 확장할 수 있는 패킷 식별 구조이다.
패킷 필터링과 full NAT(masquerading, port forwarding, etc) 서브시스템은
iptables를 사용한다.
그런 서비스 가운데 하나를 쓰려면 이 옵션에서 [Y]나 [M]을 선택한다.
잘 모르겠으면 [N].

< > limit match support
limit matching은 매치되는 룰에서 속도를 제어하도록 허용한다.
LOG 타깃("LOG target support")과 서비스 거부 공격(DOS: Denial of Service)
회피 기능을 조합할 때 유용하다. 잘 모르겠으면 [N].

< > MAC address match support
MAC 매칭은 출발지 이더넷 주소에 기반한 패킷 매치를 허용한다.
잘 모르겠으면 [N].

< > netfilter MARK match support
넷필터 마크 매칭은 "nfmark" 값에 기초한 패킷 매치를 허용한다.
MARK 타깃에 의해 설정된다. 잘 모르겠으면 [N].

< > Multiple port match support
멀티포트 매칭은 출발지나 목적지 포트에 기반한 TCP나 UDP 패킷 매치를
허용한다.  일반적으로 규칙 하나는 한 가지 포트 범위를 매치할 수 있다.
잘 모르겠으면 [N].

< > TOS match support
TOS 매칭은 IP 패킷의 서비스 필드 형식에 기반한 패킷 매치를 허용한다.
잘 모르겠으면 [N].

 

 

< > Connection state match support
연결 상태 매칭은 추적한 커넥션의 관계에 기반한(이전 패킷들) 패킷 매치를 허용
한다. 이 옵션은 패킷 분류를 위한 강력한 도구이다. 잘 모르겠으면 [N].

< > Unclean match support (EXPERIMENTAL)
IP, TCP, UDP 그리고 ICMP 헤더의 연속된 필드들을 살펴서 낯설거나 무효한
패킷들을 매치한다. 잘 모르겠으면 [N].

< > Owner match support (EXPERIMENTAL)
패킷을 생성한 사용자나 그룹, 프로세스나 세션에 기반하여 지역적으로-발생된
패킷을 매치하는 것을 허용한다. 잘 모르겠으면 [N].

< > Packet filtering
로컬 input, 포워딩, 로컬 output에서 심플 패킷 필터링을 위한 연속된 룰을 담는
"필터" 테이블을 규정한다. 잘 모르겠으면 [N].

<M> REJECT target support
들어오는 패킷에 대해 ICMP에러 메시지로 응답하지 않고 버리는 필터링 규칙을
허용한다. 잘 모르겠으면 [N].

< > MIRROR target support (EXPERIMENTAL)
MIRROR target은 들어오는 패킷이 보낸 이에게 되돌아가는 규칙을 허용한다.
잘 모르겠으면 [N].

< > Full NAT
Full NAT 옵션은 메스커레이딩, 포트 포워딩, 그리고 다른 형식들의 풀 네트워크
주소 포트 전환을 허용한다.
이 기능은 iptables 안에 "nat" 테이블에 의해 제어된다.
"man iptables"  잘 모르겠으면 [N].

< > MASQUERADE target support
메스커레이딩은 NAT의 특별한 케이스이다.

 


모든 나가는 연결들은 특정한 인터페이스의 주소로부터 온 것처럼 보이도록 바뀐다,
그리고 그 인터페이스를 내리면, 모든 연결들을 잃어버린다.
이 옵션은 다이나믹 IP 주소를 사용하는 다이얼업 계정에만 유용하다.
(여러분의 IP 주소가 접속할 때마다 달라진다면)  잘 모르겠으면 [N].

< > REDIRECT target support
REDIRECT는 NAT의 특별한 케이스이다.
모든 들어오는 연결들은 들어오는 인터페이스의 주소에 사상되므로, 패킷들은 통과
해서 직접 연결되는 대신 로컬 머신으로부터 오게 된다.
이 옵션은 투명한 프록시에서 유용하다. 잘 모르겠으면 [N].

< > Packet mangling
iptables에 "mangle" 테이블을 추가한다.
이 테이블은 패킷이 어떻게 라우트될지에 영향을 줄 수 있는 다양한 패킷 변환에
사용된다. iptables(8) 맨 페이지를 참조한다. 잘 모르겠으면 [N].

< > TOS target support
라우팅에 앞서 "mangle"테이블 안에 IP 패킷의 Type Of Service 필드를 바꾸는
규칙들을 만들도록 "TOS" 타깃을 추가한다. 잘 모르겠으면 [N].

< > MARK target support
라우팅에 앞서 "mangle"테이블 안에 패킷과 관련된 netfilter mark(nfmark) 필드를
바꾸는 규칙들을 만들도록 허용하는 "MARK" 타깃을 추가한다.
이 기능은 라우팅 메쏘드를 바꿀 수 있고 다른 서브시스템에 의해 그들의
behavior를 바꾸도록 이용될 수도 있다. 잘 모르겠으면 [N].

< > LOG target support
이 옵션은 syslog에 패킷 헤더를 기록하는 규칙을 만들도록 허용하는 "LOG"타깃
을 추가한다. 잘 모르겠으면 [N].

< > ipchains (2.2-style) support
이 옵션은 이제 iptables로 바뀌었다.

 


ipchains를 사용하던 이들은 이 옵션을 활성화해 예전의 명령들을 계속 사용할
수도 있다. [N]

< > ipfwadm (2.0-style) support
이 도구는 2.2 커널에서 ipchains로 바뀌었고, 다시 2.4 커널에서 iptables로 바뀌
었다. [N]

< > The IPv6 protocoL (EXPERIMENTAL)
Internet Protocol의 다음 버전에 대한 실험적인 지원이다.
새로운 프로토콜(IP version 6, IPng, IP next generation)은 주소 공간이 128 비트
(현재 32비트)로 커져서 주소가 고갈되는 일은 없을 것이다.
프로토콜 내부에 인증과 비밀 유지 등 보안성이 향상된다.
헤더가 더 합리적으로 구성되어 처리속도가 빨라진다.
중간 연결방법 없이 현재 버전의 IPv4(IP version 4) 프로토콜과 상호 작용이 가능
하다. 아직은 [N]을 선택하는 것이 안전

[ ] IPv6: enable EUI-64 token format

IPv6: Netfilter Configuration  --->
< > Kernel httpd acceleration (EXPERIMENTAL)
커널 httpd 가속 데몬(kHTTPd)은 커널 속에 만들어 넣은 (제한된) 웹서버이다.
오직 파일시스템으로부터 파일들을 제공받으며 CGI 스크립트처럼 실행할 수 있는
목록은 다룰 수 없다.
kHTTPd를 사용한다면 파일을 서비스하는 속도가 빨라진다.
만약 kHTTPd가 클라이언트의 요청을 마칠 수 없다면, 아파치 등 유저 공간(user
space; kernel과 반대되는 의미로)의 웹 서버에 투명하게 전해준다.
모듈로 설정하면 kHTTPd가 만족할 만큼 작동하지 않는다.
안전을 이유로, 모듈이 올라간 뒤에 다음 명령을 내려야 모듈이 활성화된다.
#echo 1 > /proc/sys/net/khttpd/start
kHTTPd는 아직 실험적인 수준이므로 이 옵션을 사용하는 제품을 만들 때에는
주의를 요한다. 그리고 아직 가상 서버는 지원하지 않는다. 잘 모르겠으면 [N].

 

 

[ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
ATM은 LAN 혹은 WAN( Wide Area Networks)에서 쓰이는 고속 네트워킹 기술
이다.
ATM은 고정된 패킷 크기를 사용하며 연결 지향의 작은 대역폭을 사용하도록 한다.
ATM을 사용하려면 리눅스 박스에 ATM 네트워킹 카드가 필요하다.
만약 ATM 카드가 있다면 [Y]를 선택하고 알맞은 드라이버를 고른다.
그리고, 커널 지원 외에도 유저 공간의 프로그램들이 필요하다.
ATM(Asynchronous Transfer Mode : 비동기 전송 모드)에서는 보내려는 정보를
미리 약속한 크기의 패킷으로 나눈 다음, 패킷의 헤더 부분에 목적지 정보를
덧붙여 전송한다.
패킷들이 목적지에 도착하면 규칙에 따라 다시 원래의 정보로 환원한다.
      
< > The IPX protocol
NoveLL 네트워크에 연결할 때 설정
노벨 네트워크와 연결되지 않는다면 [N]을 선택
      
< > IPX: SPX networking (EXPERIMENTAL)
노벨 네트워킹과 관련된 기능이다. [N]

<M> Appletalk protocol support
AppLe컴퓨터를 위한 네트워크프로토콜이다.
리눅스 박스를 이 네트워크에 연결하기 위해서는 netatalk 패키지가 필요하다.
잘 모르겠으면 [N].

< > DECnet Support
(지금은 Compaq인) 디지틀사에서 만든 많은 제품들이 DECnet 네트워킹 프로토콜을
사용한다. 잘 모르겠으면 [N].

< > 802.1d Ethernet Bridging
리눅스박스를 이더넷 브리지로 사용한다.
일반적으로 브리지보다 효율적인 기능을 가진 라우터가 더 많이 쓰인다.
잘 모르겠으면 [N].

 


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

< > LAPB Data Link Driver (EXPERIMENTAL)
Link Access Prodedure for Balanced는 X.25 프로토콜의 하위 레벨 구성요소이다.
리눅스에서는 이더넷 커넥션에 대한 LAPB만을 지원한다. 잘 모르겠으면 [N].

[ ] 802.2 LLC (EXPERIMENTAL)
일반적인 이더넷 카드를 이용하는 네트워크에서 X.25 네트워크에 연결하는 802.2
Logical LinkLayer 프로토콜이다. 잘 모르겠으면 [N].

[ ] Frame Diverter (EXPERIMENTAL)

< > Acorn Econet/AUN protocols (EXPERIMENTAL)
Econet은 Arcon 컴퓨터에서 파일, 프린터 서버에 액세스하기 위해 사용되던 아주
오래되고 느린 네트워킹 프로토콜이다. 잘 모르겠으면 [N].

< > 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는 옵션이 활성화되었을 때 하드웨어 속도조절

 


기능을 지원한다. [N]을 답하는 것이 좋다.

QoS and/or fair sueing --->
패킷 스케쥴러에 따라 패킷을 제어하는 기능이다.
네트워크 장치가 실시간 장치일 때 특히 이 기능이 중요하다. 
[ ] QoS and/or fair queueing
네트워크 디바이스들을 통해서 내보내야 할 패킷들이 있을 때, 커널은 어떤 것을
먼저 보내야 할 것인지 선택해야 한다.
이 선택은 최소한의 data flow rate가 필요한 실시간 디바이스인 경우 더 중요하다. 이것을 공정하게 하는 순서들을 효율적으로 정하기 위한 알고리즘들이 있는데
그것들을 패킷 스케쥴러라 부른다.
만약 기본적인 패킷 스케쥴러(FIFO: first come, first served)를 그냥 사용한다면
[N]을 답한다. 보다 효율적이라 생각하는 다른 알고리즘으로 바꿔보고 싶다면
[Y]를 선택해 이 옵션을 활성화한다.
네트워크 디바이스들마다 서로 다른 스케줄링 알고리즘을 할당할 수도 있다.
다만, 이런 것들에 대해 잘 알고 있는 전문가들에게만 추천되는 기능이다.
이 옵션들을 활용하려 한다면 유저-레벨 유틸리티들이 있는 ftp://ftp.inr.ac.ru/ip-routing/에서 iproute2+tc 패키지를 가져와야 한다.
"/proc filesystem"이 활성화되어 있다면 /proc/net/psched에서 우선순위 스케줄러에 대한 상태 정보를 얻을 수 있다. 잘 모르겠으면 [N].

BQ packet scheduler : Class-Based Queueing(CBQ) 패킷 스케쥴링 알고리즘을 지원한다. 이 알고리즘은 전송되기를 기다리는 패킷을 트리(tree)형태의 계층적
구조로 분류한다. (net/sched/sch_cbq.c 파일의 시작부분)
이 트리의 리프(leaf) 노드들은 다른 알고리즘에 의해 스케쥴링된다.
이 리프 노드에 적용될 스케쥴링 알고리즘은 아래의 여러가지 큐잉 알고리즘중에서 선택할 수 있다.
CSZ packet scheduler : Clark-Shenker-Zhang(CSZ) 패킷 스케쥴링 알고리즘을 지원한다. 실시간(real-time) 응용 프로그램에 대한 서비스를 보장해줄 수 있는
알고리즘이다(net/sched/sch_csz.c의 시작부분).
주의: 이 스케쥴러는 현재 완벽하지 않다.

 

 

The simplest PRIO pseudo scheduler : RED queue의 net/sched/sch_red.c의
시작부분을 참고한다.
SFQ queue : net/sched/sch_sfq.c의 시작부분 참고.
TEQL queue : net/sched/sch_sfq.c의 시작부분 참고.
TBF queue : net/sched/sch_tbf.c의 시작부분 참고
QoS support : QoS 스케쥴링 기능을 지원한다.
[N]을 답하면 QoS에 대해서 더이상 묻지 않는다.

Rate estimator : Quality of Service 스케쥴링을 사용하기 위해 네트워크 장치에 대한 현재 데이타 전송속도의 예측하는 기능을 지원한다.
Packet classifier API : CBQ 스케쥴링 알고리즘은 네트웍 장치를 통해 전송되도록 스케쥴된 네트웍 패킷이 어떤 방식으로 분류될 것인지 물어본다.
이 옵션을 활성화하면 다양한 종류의 패킷 분류자를 선택할 수 있다.

Telephony Support --->
< > Linux telephony support
 
ATA/IDE/MFM/RLL support --->
<*> ATA/IDE/MFM/RLL support
IDE, ATA and ATAPI Block devices --->
하드디스크, CDROM 등 블록 단위로 데이터를 다루는 저장장치(블록 디바이스)들을
위한 옵션들이다.

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

---Please see Documentation/ide.txt for help/info on IDE drives

 


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

<*> Include IDE/ATA-2 DISK support
하드디스크를 사용 가능하게 한다.
루트 파일시스템이 이 방식의 IDE 디스크에 설치되었다면 모듈 기능으로 컴파일하지
않는다. [Y]
 
[ ] Use multi-mode by default
아래와 같은 에러가 발생하였으면 여기서 Y라고 한다.
hda:set_multimode:status=0x51{DriveReady SeekComplete Error}hda:
set_multimode:error=0x04{DriveStatusError}
확실치 않다면 [N]

< > PCMCIA IDE support
노트북 컴퓨터 사용자를 위한 설정이다.
PCMCIA 블록장치가 있다면 [Y]를 설정한다.

<M> Include IDE/ATAPI CDROM support
CD-ROM 사용 가능하게 한다.
ATAPI는 SCSI 프로토콜을 흉내낸 IDE CDROM과 TAPE 드라이버의 새로운 프로토콜
이다. SCSI가 아닌 2배속 이상의 대부분 CDROM은 ATAPI 인터페이스를 사용한다.
"ISO 9660 CDROM filesystem support"는 반드시 [Y] 또는 [M]으로 해야 한다.
 
< > Include IDE/ATAPI TAPE support
서버에서 흔히 사용하는 테이프 백업 장치 설정이다. [N]

< >  Include IDE/ATAPI FLOPPY support
ZIP 드라이브 등을 사용 가능하게 한다.
LS-120, IDE/ATAPI Iomega ZIP 드라이브(내장형)를 지원한다.
이곳에 [Y] 또는 [M]을 답하면 플로피 드라이브는 "hdb"나 "hdc"등의 이름을 가진
IDE 장치로 인식된다.

 


패러랠 Zip 드라이브는 SCSI Low-Leveldrivers서 설정한다.
 
< > SCSI emulation support
새로운 IDE 디바이스들(ATAPI PD-CD or CDR, CDRW)이 사용하는 프로토콜이다.
IDE/ATAPI 드라이버에서 지원되지 않는 디바이스를 마치 SCSI 장비인 것처럼 사용
한다. [Y]

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

[ ] CMD640 enhanced support
CMD640 IDE 인터페이스를 가지고 있고, 장착된 시스템의 BIOS가 제대로 동작하지
않는다면 [Y]를 선택한다.
 
[ ] ISA-PNP EIDE support
[*] RZ1000 chipset bugfix/support
PC-Technologies RZ1000 IDE 칩은 많은 486, 펜티엄 보드에서 대개 "Neptune"
칩셋과 함께 많이 사용된다.
불행히도, 이 칩은 많은 상황에서 심각하게 데이터를 손실시키는 경우가 생길 수 있는
설계상의 결점을 가지고 있다.
이 옵션을 활성화하면 이런 문제를 자동으로 고치고 점검을 해주는 코드가 커널에
포함된다. 이 옵션 때문에 디스크 입출력 속도가 조금 떨어질지도 모르지만 100% 신뢰할 수 있도록 작동할 것이다.
SCSI장치만을 가진 시스템이라면 여기에 [N]이라고 한다.
잘 모르겠으면 [Y]를 선택하는 것이 안전하다.

 

 


[*] Generic PCI IDE chipset support
PCI 방식의 IDE 지원.
             
[*] Sharing PCI IDE interrupts support
IRQ 공유 지원.
어떤 ATA/IDE 칩셋은 하나의 IRQ를 여러 장치가 공유할 수 있는 기능을 지원하기도 한다. 대개는 [Y]라 해도 안전하지만, 확실하지 않다면 [N]

[*] Generic PCI bus-master DMA support
DMA 지원. PCI 시스템이 IDE 드라이브(대부분)를 사용하고 bus-master DMA(Direct
memory access)를 지원한다면 이 옵션을 활성화해 CPU의 부담을 줄일 수 있다.
자동으로 DMA를 설정하지 못한다면 나중에 hdparm 유틸리티를 이용하여 DMA를
사용할 수 있다. 기본적으로는 DMA가 설정되어 있지 않지만 Use DMA by default when available 항목을 활성화하면 DMA를 사용할 수 있다.
hdparm 유틸리티의 최신버전은 ftp://metalab.unc.edu/pub/Linux/system/hardware/에 있다. [Y]

[ ] Boot off-board chipsets first support
추가

추천
0
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로