안녕하세요
뚱보 프로그래머 입니다.
kernel 이란? 배울것이 참 많은 부분인것같습니다.
kernel 관리
rpm 기반의 kernel 설치
1. 필요한 패키지
RedHat 6.1이상의 배포판이라면 modutils만 upgrade 하면 된다. modutils를 upgrade하는데 glibc버전이 낮다면 glibc도 upgrade해야 한다. glibc는 locale과 timezone, 여러 library를 포함해서 의존성 문제에 영향을 주므로 upgrade시 주의가 필요하다. rpm 버전이 낮다면 rpm도 upgrade한다.
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/
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
소스 기반의 커널 설치
1. 소스 기반의 커널 설치
소스를 가져와서 컴파일 할 때는 이를 /usr/src 밑에 푼다. 압축을 풀면 위의 rpm 과는 반대로 linux 라는 디렉토리에 압축이 풀린다.
[root@edu00 src]#tar xzvf linux-(커널버젼).tar.gz
(압축이 bzip2일 경우는 xlvf 옵션)
[root@edu00 src]#mv linux linux-(커널버젼)
[root@edu00 src]#ln -s linux-(커널버젼) linux
2. linux라는 링크를 만드는 이유 :
/usr/src 디렉토리 아래에 여러 버젼의 리눅스 커널 소스를 두고 작업을 할 때 편하게 하기 위해, 패치 작업할 때 패치할 파일이 linux라는 디렉토리 안에서 찾도록 되어 있기 때문, * linux로 링크 하지 않을 경우 : 패치할 때 에러 발생할 수 있다.
시스템의 심볼릭 링크가 새로운 커널 트리를 제대로 가리키고 있는지 확인한다.
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 ....
Kernel Compile
1. 커널 소스 디렉토리
[root @edu00 linux]#cd /usr/src/linux-2.4
2. 이전 정보 삭제
[root @edu00 linux-2.4]#make mrproper
이전에 설정한 정보를 지우거나 새로운 커널 소스를 가져다 컴파일할 때에는 이 명령을 먼저 사용해야 한다. 이전 커널을 컴파일할 때 만들어진 오브젝트 파일(*.o)과의 의존성 설정내용, 컴파일 환경 설정값, 버전 정보 등 새로 시작하는 컴파일에 영향을 주는 이전 정보를 삭제한다.
기존의 커널 소스를 계속 사용할 것이고, 그 소스로 컴파일을 한 번이라도 하였으며, 그 소스의 설정 값들을 잃고 싶지 않다면 이 명령을 사용하지 않는다.
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"에 서술된 규칙을 이용하여 소스코드 파일들을 관리한다. 최근 변경을 적용하여 소스코드를 오브젝트 파일로 컴파일하고 라이브러리 파일과 링크하여 실행 가능한 파일로 컴파일하는 과정들을 자동으로 처리한다.
4. 커널 옵션 설정
커널은 시스템이 동작하는 동안 계속 메모리에 적재되어 있으므로 환경 설정이 매우 중요하다.
Code maturity level options --->
코드 성숙도(成熟度)에 관한 설정
[ ] Prompt for development and/or incomplete code/drivers
개발 수준의 옵션들도 선택 가능하게 해준다. 시스템 특성에 따라 에러가 발생하기도 한다.
Loadable module support --->
모듈기능에 대한 설정
[*] Enable loadable module support
모듈을 사용할 수 있게 해준다. 자주 쓰이지 않는 장치 드라이버나 기능들을 모듈로 만들어서 필요할 때에만 동적으로 메모리에 적재하여 사용한다. 작업이 끝나면 메모리에서 다시 제거하므로 메모리를 효율적으로 사용할 수 있다. 커널 크기가 감소한다.
전체 커널과 분리되어 있어 모듈로 설정한 기능에 변화가 있더라도 전체 커널에는 이상이 없다.
파일시스템, 장치 드라이버, 바이너리 포맷 등 많은 기능이 모듈을 지원한다.
[ ] Set version information on all module symbols
다른 버전의 커널에서 만들어진 모듈이나 커널과 함께 배포되지 않는 특별한 모듈을 사용할 수
있도록 하는 기능이다.
[*] Kernel module loader
커널이 알아서 모듈을 올려준다. kerneld 데몬이 대체된 기능이다.
모듈로 만들어진 기능을 필요할 때 적재하고 제거하는 작업들을 modprobe를 이용해 커널이 자동으
로 관리한다.
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시스템에서 64GB까지 물리적 메모리를 사용할 수 있다. x86프로세서에서 주소 공간은
32비트이므로 최대 4GB까지만 지원한다.
모든 물리적인 RAM을 더해서 1 GB가 넘지 않는다면(앞으로도) "off"라고 한다. (대부분의 사용자에게
적당한 것이어서 기본값으로 설정되어 있다).
물리적 램이 1GB이상 4GB 미만이라면 "4GB"를, 4 GB이상이면 "64GB"를 선택한다.
이 옵션은 인텔 PAE(Physical Address Extension)모드를 활성화시킨다. PAE에는 3-레블 페이징이
있는데 리눅스에서는 모든 것을 지원한다. Pentium Pro 이상의 인텔 프로세서에서는 모두 PAE를
지원한다.
물리적 메모리는 커널에서 자동으로 그 크기를 감지하지만 부트 패러미터에 메모리 크기를 직접 지정
할 수도 있다. (예를 들어 "mem=256M")
(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 번호들을 사용해야 할 것이다.
[ ] EISA support
EISA(Extended Industry Standard Architecture) 버스는 오래 전에(1988년부터 1995년 사이)
쓰이던 기능으로 PCI 버스가 나타난 이후로 아주 사라져 버렸다. PC에서 EISA를 사용하는 것이
확실할 때에만 이 기능을 사용한다. 펜티엄 이상을 사용하는 모든 사용자는 [N]을 선택
[ ] MCA support
MicroChanneL Architecture는 IBM PS/2 시스템에서 찾아볼 수 있는데 국내에서는 잘 쓰이지 않는다.
[*] 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 패키지) 설치해야
한다.
<*> 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
패러랠 포트에 연결하는 블록 장치가 있다면 종류와 프로토콜을 설정.
< > Compaq SMART2 support
컴팩의 SMART Array 컨트롤러를 지원하는 드라이버, 이 보드가 있는 사람들은 모두 [Y]를 선택,
이 드라이버를 지원하는 보드 목록은 "#cat /usr/src/linux/Documentation/cpqarray.txt"로 확인한다.
< > Compaq Smart Array 5xxx support
컴팩의 Smart Array 5xxx 컨트롤러를 지원하는 드라이버, 이 보드가 있는 사람들은 모두 [Y]를 선택한다. 이 드라이버를 지원하는 보드 목록은 "#cat /usr/src/linux/Documentation/cciss.txt"로 확인하한다.
< > 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처럼 마운트하여 사용할 수 있다.
< > Network block device support
네트워크로 연결된 서버 또는 루프백 서버의 파일시스템을 마운트하여 블록 디바이스(/dev/nd0,...)처럼 사용하는 기능이며 클라이언트와 서버는 TCP/IP로 통신한다. 이 기능이 없더라도 NFS나
Coda를 사용하면 네트워크 파일시스템을 사용할 수 있다.
< > RAM disk support
램을 하드 디스크와 같은 블록 디바이스처럼 사용하는 기능이다. Linux를 인스톨하는 동안 램에
작은 루트 파일시스템을 생성하기 위해 사용되기도 한다. 대부분 사용자는 램 디스크 기능이 필요
없다.
[ ] Initial RAM disk (initrd) Support
일반적인 부트 과정이 시작되기 전에 부트로더로부터 실행되는 램디스크이며, 램 디스크는 일반적
으로 "real" 루트 파일시스템 등을 마운트하기 위해 필요한 모듈을 로드하기 위해 사용한다.
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처럼 매개 프로토콜없이 직접 네트워크 장치와 통신하는 어플리케이션에서 사용.
[ ] Packet socket: mmapped IO
더 빠른 통신을 할 수 있게 한다. 옵션을 활성화하면 패킷 프로토콜 드라이버는 더 빠른 통신을 지원
하는 IO메커니즘을 사용한다.
[ ] 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를 만들면 이 파일을 읽어서
라우팅 정보에 대해 알아낼 수 있다. 하지만 이 파일에 쓰는 것은 모두 버려지므로 기록하는 것은
의미가 없다.
< > NetLink device emulation
이 옵션은 곧 사라지고 넷링크 소켓으로 바뀐다.
[*] 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)
넷필터 코드를 디버깅하는데 유용한 정보들을 추가한다.
[ ] Socket Filtering
리눅스 소켓 필터는 버클리의 패킷 필터로부터 파생된 것이다. Unix 시스템은 소켓을 통해
프로세스 사이 통신이 이루어진다. 이 기능을 선택하면 커널 수준에서 소켓을 조사하고, 허용/불가
를 지정할 수 있다. 리눅스 소켓 필터링은 TCP를 제외한 모든 소켓에서 동작한다.
<*> 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 속이기 예방) 등 몇 가지 향상된 기능을 지원한다.
[ ] 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를 사용하는 것이다.
[ ] IP: BOOTP Support (NEW)
[ ] IP: RARP Support (NEW)
<M> IP: tunneling
한 프로토콜 안에 다른 프로토콜의 자료를 캡슐화하여 서로 다른 프로토콜 사이에서 전송하는
기능이다. IP 주소 변경없이 네트워크 사이를 옮겨 다니는 Mobile IP 기능과 관련된 옵션이다.
< > IP: GRE tunnels over IP
GRE(generic routing encapsulation)는 멀티캐스트, IPv6를 지원한다. Cisco 라우터에 연결될 때
유용하다.
[ ] IP: multicast routing
리눅스 박스가 다수의 machine에 IP 패킷을 전송할 때 사용할 수 있다. MBONE, 오디오나
비디오 broadcast를 목적으로 구성된 높은 대역의 인터넷에서 사용, Multicast용 네트워크 카드
정보는 Documentation/networking/multicast.txt 대부분의 사용자에게 이 기능은 필요 없다.
[ ] 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), 자신의 캐시에서
확인한다.
[ ] IP: TCP Explicit Congestion Notification support
이 옵션은 시스템들에게 전송 속도를 낮추어 줄 것을 요구하는 혼잡 공지(ECN) 비트를 허용한다.
네트워크가 혼잡하면 응답시간이 늦어지고 처리량이 감소하게 된다. (네트워크가 혼잡하면 교환기
는 데이터를 단순히 삭제하기 때문이다).
이때 클라이언트가 체증에 대해 라우터에게 알리도록 하면 결과적으로 버려지는 패킷이 줄어들게 되므로 네트워크 퍼포먼스가 높아진다. 인터넷에는 ECN을 보내는 시스템으로부터의 연결을 거부하는 고장난 방화벽들이 많이 있는데, 그런 방화벽 뒤에 있는 사이트에 접속하려면 이 옵션을 꺼야 한다. 그럴 경우 [N]을 답하거나, sysctl(/proc/sys/net/ipv4/tcp_ecn)을 이용해 실행시간에 끌 수 있다.
[*] 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
IP: Netfilter Configuration --->
< > Connection tracking (required for masq/NAT)
연결 추적은 어떤 패킷이 시스템을 거쳐갔는지, 패킷들이 얼마나 연결 되었는지 그 기록을 유지
한다. 이 옵션은 메스커레이딩 혹은 다른 종류의 네트워크 주소 변환(Fast NAT는 빼고)에
필요하다. 그리고 향상된 패킷 필터링에도 쓰인다.
<*> FTP protocol support
FTP 연결을 추적한다. 확실하지 않다면 [Y].
< > Userspace queueing via NETLINK (EXPERIMENTAL)
넷필터는 유저 공간에 패킷을 큐하는 기능을 가진다.
넷링크 장치는 이 드라이버를 이용해서 그들에 엑세스 하도록 사용될 수 있다.
< > IP tables support (required for filtering/masq/NAT)
iptables는 일반적이며, 확장할 수 있는 패킷 식별 구조이다. 패킷 필터링과 full
NAT(masquerading, port forwarding, etc) 서브시스템은 iptables를 사용한다.
그런 서비스 가운데 하나를 쓰려면 이 옵션에서 [Y]나 [M]을 선택한다.
< > limit match support
limit matching은 매치되는 룰에서 속도를 제어하도록 허용한다. LOG 타깃("LOG target
support")과 서비스 거부 공격(DOS: Denial of Service) 회피 기능을 조합할 때 유용하다.
< > MAC address match support
MAC 매칭은 출발지 이더넷 주소에 기반한 패킷 매치를 허용한다.
< > netfilter MARK match support
넷필터 마크 매칭은 "nfmark" 값에 기초한 패킷 매치를 허용한다. MARK 타깃에 의해 설정된
다.
< > Multiple port match support
멀티포트 매칭은 출발지나 목적지 포트에 기반한 TCP나 UDP 패킷 매치를 허용한다.
일반적으로 규칙 하나는 한 가지 포트 범위를 매치할 수 있다.
< > TOS match support
TOS 매칭은 IP 패킷의 서비스 필드 형식에 기반한 패킷 매치를 허용한다.
< > Connection state match support
연결 상태 매칭은 추적한 커넥션의 관계에 기반한(이전 패킷들) 패킷 매치를 허용한다.
이 옵션은 패킷 분류를 위한 강력한 도구이다.
< > Unclean match support (EXPERIMENTAL)
IP, TCP, UDP, CMP 헤더의 연속된 필드들을 살펴서 낯설거나 무효한 패킷들을 매치한다.
< > Owner match support (EXPERIMENTAL)
패킷을 생성한 사용자나 그룹, 프로세스나 세션에 기반하여 지역적으로-발생된 패킷을
매치하는 것을 허용한다.
< > Packet filtering
로컬 input, 포워딩, 로컬 output에서 심플 패킷 필터링을 위한 연속된 룰을 담는 "필터"
테이블을 규정한다.
<M> REJECT target support
들어오는 패킷에 대해 ICMP에러 메시지로 응답하지 않고 버리는 필터링 규칙을 허용한다.
< > MIRROR target support (EXPERIMENTAL)
MIRROR target은 들어오는 패킷이 보낸 이에게 되돌아가는 규칙을 허용한다.
< > Full NAT
Full NAT 옵션은 메스커레이딩, 포트 포워딩, 그리고 다른 형식들의 풀 네트워크 주소 포트
전환을 허용한다. 이 기능은 iptables 안에 "nat" 테이블에 의해 제어된다.
< > MASQUERADE target support
메스커레이딩은 NAT의 특별한 케이스이다. 모든 나가는 연결들은 특정한 인터페이스의 주소로
부터 온 것처럼 보이도록 바뀐다. 그리고 그 인터페이스를 내리면, 모든 연결들을 잃어버린다.
이 옵션은 다이나믹 IP 주소를 사용하는 다이얼업 계정에만 유용하다. (여러분의 IP 주소가
접속할 때마다 달라진다면)
< > REDIRECT target support
REDIRECT는 NAT의 특별한 케이스이다. 모든 들어오는 연결들은 들어오는 인터페이스의
주소에 사상되므로, 패킷들은 통과해서 직접 연결되는 대신 로컬 시스템으로부터 오게 된다.
이 옵션은 투명한 프록시에서 유용하다.
< > Packet mangling
iptables에 "mangle" 테이블을 추가한다. 이 테이블은 패킷이 어떻게 라우트될지에 영향을
줄 수 있는 다양한 패킷 변환에 용된다. iptables(8) 맨 페이지를 참조한다.
< > TOS target support
라우팅에 앞서 "mangle"테이블 안에 IP 패킷의 Type Of Service 필드를 바꾸는 규칙들을
만들도록 "TOS" 타깃을 추가한다.
< > MARK target support
라우팅에 앞서 "mangle"테이블 안에 패킷과 관련된 netfilter mark(nfmark) 필드를 바꾸는
규칙들을 만들도록 허용하는 "MARK" 타깃을 추가한다. 이 기능은 라우팅 메쏘드를 바꿀 수
있고 다른 서브시스템에 의해 그들의 behavior를 바꾸도록 이용될 수도 있다.
< > LOG target support
이 옵션은 syslog에 패킷 헤더를 기록하는 규칙을 만들도록 허용하는 "LOG"타깃을 추가한다.
< > ipchains (2.2-style) support
이 옵션은 이제 iptables로 바뀌었다. ipchains를 사용하던 이들은 이 옵션을 활성화해 예전의
명령들을 계속 사용할 수도 있다.
< > ipfwadm (2.0-style) support
이 도구는 2.2 커널에서 ipchains로 바뀌었고, 다시 2.4 커널에서 iptables로 바뀌었다.
< > 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는 아직 실험적인 수준이므로 이 옵션을 사용하는 제품을 만들 때에는 주의를 요한다.
그리고 아직 가상 서버는 지원하지 않는다.
[ ] 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)
노벨 네트워킹과 관련된 기능이다.
<M> Appletalk protocol support
AppLe컴퓨터를 위한 네트워크프로토콜이다. 리눅스 박스를 이 네트워크에 연결하기 위해서는
netatalk 패키지가 필요하다.
< > DECnet Support
(지금은 Compaq인) 디지틀사에서 만든 많은 제품들이 DECnet 네트워킹 프로토콜을 사용한다.
< > 802.1d Ethernet Bridging
리눅스박스를 이더넷 브리지로 사용한다. 일반적으로 브리지보다 효율적인 기능을 가진 라우터가
더 많이 쓰인다.
< > CCITT X.25 Packer Layer (EXPERIMENTAL)
X.25 패킷 레이어는 정부, 은행 등 기관에서 WAN을 구성하기 위해 사용하는 표준 네트워크
프로토콜이다. PLP와 LAPB 두 개의 프로토콜로 구성된다.
< > LAPB Data Link Driver (EXPERIMENTAL)
Link Access Prodedure for Balanced는 X.25 프로토콜의 하위 레벨 구성요소이다. 리눅스에서는
이더넷 커넥션에 대한 LAPB만을 지원한다.
[ ] 802.2 LLC (EXPERIMENTAL)
일반적인 이더넷 카드를 이용하는 네트워크에서 X.25 네트워크에 연결하는 802.2 Logical LinkLayer 프로토콜이다.
[ ] Frame Diverter (EXPERIMENTAL)
< > Acorn Econet/AUN protocols (EXPERIMENTAL)
Econet은 Arcon 컴퓨터에서 파일, 프린터 서버에 액세스하기 위해 사용되던 아주 오래되고 느린
네트워킹 프로토콜이다.
< > WAN router
WAN은 하나 이상의 LAN으로 구성된 광역네트워크이다. WAN 라우터는 리눅스 박스를 이용하여
상대적으로 매우 저렴하게 구성할 수 있다. 이 기능을 위해서는 wan-tools 패키지가 필요하다.
[ ] Fast Switching (read help!)
tulip 등 이 기능을 지원하는 NIC(network interface card)끼리 직접 데이터를 빠르게 교환할 수
있다. "advanced router" 기능과 함께 사용할 수 있지만 방화벽을 구축한다면 [N]을 선택해야 한다.
[ ] Forwarding between high Speed interfaces
tulip 등 이 기능을 지원하는 NIC는 옵션이 활성화되었을 때 하드웨어 속도조절 기능을 지원한다.
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에서 우선순위 스케줄러에 대한 상태
정보를 얻을 수 있다.
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 스케쥴링 기능을 지원한다.
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개로 늘어났다. see Documentation/ide.txt for help/info on IDE drives
[ ] Use old disk-only driver on primary interface
매우 오래된 시스템에만 설정한다.
<*> Include IDE/ATA-2 DISK support
하드디스크를 사용 가능하게 한다. 루트 파일시스템이 이 방식의 IDE 디스크에 설치되었다면 모듈
기능으로 컴파일하지 않는다.
[ ] Use multi-mode by default
아래와 같은 에러가 발생하였으면 여기서 Y라고 한다.
hda:set_multimode:status=0x51{DriveReady SeekComplete Error}hda:
set_multimode:error=0x04{DriveStatusError}
< > 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
서버에서 흔히 사용하는 테이프 백업 장치 설정이다.
< > 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 시스템인 것처럼 사용한다.
---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
추가한 PCI카드(내장되지 않은 off-board 컨트롤러)가 ide2와 ide3이 되고, 내장되어 있는 on-board
IDE 컨트롤러는 ide0과 ide1이 된다. 이 옵션을 활성화하면 off-보드 콘트롤러가 ide0/1로, 온-보드
콘트롤러가 ide2/3으로 바뀐다. 오프-보드 콘트롤러를 이용해서 부팅할 때 lilo등 부트 매니저의 기능
이 향상될 수 있다. 만약 여기에 [Y]라 하면 hd* 장치는 재배열 되고, fstab 등 다른 파일들을 수정해
야 한다.
[ ] OPTi 82C621 chipSet enhancedSupport (EXPERIMENTAL)
EIDE 컨트롤러 가운데 하나이다. 마더보드에 이 칩셋이 있다면 [Y]
[ ] Use PCI DMA by default when available
VIA VP2 칩셋을 사용한다면 선택하지 말 것.
커널 버전 2.1.12 이전에는 DMA를 지원하는 IDE 드라이브와 칩셋에서 이 기능을 자동으로 사용하였
다. 그러나 일부 하드웨어에서 문제를 일으킬 수 있어서, 이제는 DMA 기능을 자동으로 사용하지
않는다. DMA 기능을 자동으로 사용하려면, [Y]를 선택한다. 만약 하드웨어에 문제의 소지가 있다면,
[N]을 선택한다.
메인보드가 VIA VP2 칩셋을 사용한다면 [N]을 선택해야 하고, 그렇지 않다면 [Y]를 선택한다.
[ ] AEC62XX chipset support
[ ] ALI M15x3 chipset support
[ ] AMD Viper support
[ ] CMD64X chipset support
[ ] CY82C693 chipset support
[ ] Cyrix CS5530 MediaGX chipset support
[ ] HPT34X chipset support
[*] HPT366 chipset support Ultra DMA 66 지원.
[*] Intel PIIXn chipsets support
[ ] NS87415 chipset support (EXPERIMENTAL)
[ ] PROMISE PDC20246/PDC20262 support
[ ] SiS5513 chipset support
[ ] SLC90E66 chipset support
[ ] Tekram TRM290 chipset support (EXPERIMENTAL)
[ ] VIA82CXXX chipset support
[ ] Other IDE chipset support
만약 마더보드와 애드온 카드에 사용된 갖가지 IDE 형식 칩셋의 진보된 지원을 원한다면 이 기능을
활성화한다. 그 다음 서브 옵션에서 맞는 IDE 칩을 선택한다. 어떤 시스템에서는 이 옵션이 활성화되
어야 세번째/네번째 드라이브를 액세스할 수 있을지도 모른다. 시스템 퍼포먼스를 높이기 위해 고속
I/O 세팅도 가능할 것이다. 이런 설정들을 위해서는 런타임과 관련된 특별한 커널 부트 파라미터도
필요하다. SCSI만 사용한다면 [N].
---Note: most of these also require special kernel boot parameters
[ ] Generic 4 drives/port support (NEW)
[ ] ALI M14XX support (NEW)
[ ] DTC-2278 support (NEW)
[ ] Holtek HT6560B support (NEW)
[ ] QDI QD6580 support (NEW)
[ ] UMC-8672 support (NEW)
[ ] IGNORE word93 Validation BTTS (NEW)
SCSI support --->
< > SCSI support
----SCSI support tupe (disk, tape, CD-ROM)
< > SCSI disk support
(40) Maximum number of SCSI disks that can be loaded as modules
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
< > SCSI CD-ROM support
< > SCSI generic support
[ ] Enable extra checks in new queueing code
----Some SCSI devices (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 --->
< > 3ware Hardware ATA-RAID support
< > 7000FASST SCSI support
< > ACARD SCSI support
< > Adaptec AHA152X/2825 support
< > Adaptec AHA1542 support
< > Adaptec AHA1740 support
< > Adaptec AACRAID support
< > Adaptec AIC7xxx support
< > Old Adaptec AIC7XXX support (NEW)
< > AdvanSys SCSI support
< > Always IN2000 SCSI support
< > AM53/79C974 PCI SCSI support
< > AMI MegaRAID support
< > BusLogic SCSI support
< > Compaq Fibre Channel 64-bit/66Mhz HBA support
< > DMX3191D SCSI support
< > DTC3180/3280 SCSI support
< > EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support
< > EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support
..............
PCMCIA SCSI adapter support --->
[ ] PCMCIA SCSI adapter support
Fusion MPT device support --->
< > Fusion MPT (base + ScsiHost) drivers (NEW)
I20 device support --->
< > I20 support
Network device support --->
다양한 네트워크 디바이스에 대한 설정이다. 리눅스는 고가의 라우터 시스템은 물론 Traffic shaper 등
고도로 지능화된 시스템들을 대신할 수도 있다.
[*] Network device support
이더넷 디바이스와 PPP, SLIP(전화선을 이용한 다이얼업 네트워크), PLIP(패러랠 포트를 이용한 네트
워크) 등 네트워크 장치들을 지원한다. 리눅스 박스가 네트워크에 연결되려면 반드시 [Y]를 선택한다.
ARCnet devices --->
[ ] ARCnet support
ARCnet 칩셋이 있는 네트워크 카드를 가졌다면 [Y]를 선택한다. 아크넷은 전송률이 낮지만
(2.5Mbps) 케이블이 훨씬 길어질 수 있어 공장 등에서 사용되기도 한다. 잘 모르겠으면 [N].
<verb>
< > ARCnet support
< > Enable standard ARCNet packet format (RFC 1201) (NEW)
< > Enable old ARCNet packet format (RFC 1051) (NEW)
< > Enable raw mode packet interface (NEW)
...생략
<M> Dummy net driver support
Dummy net driver는 패킷을 버리는 쓰레기통 (bit-bucket)이다. PPP나 SLIP을 사용한다면 [Y]나 [M]을 답한다. 모듈로 컴파일하면 더미 터미널 여럿을 동시에 사용할 수 있다. 어떻게 설정하더라도 커널 크기는 늘어나지 않는다. [M]을 권장한다.
< > Bonding driver support
"bond" 다중 이더넷 채널을 사용하려면 [Y]나 [M]을 답한다. SISCO에서는 이것을 "Etherchannel"이
라 부르며, Sun에서는 "Trunking", 리눅스에서는 "Bonding"이라 부른다. 여러분이 어떤 컴퓨터에
이더넷 연결을 두 개 가지고 있다면, 이 드라이버를 이용해서 두 배 속도를 가진 하나의 장치처럼
동작하도록 만들 수 있다. 리눅스 박스와 연결된 상대 시스템도 리눅스 Bonding이나 Cisco 5500 switch, 혹은 SunTrunking SunSoft driver처럼 비슷한 기능을 지원해야 한다. EQL 드라이버와 비슷하지만 시리얼 라인 대신 이더넷 세그먼트를 합친다. 잘 모르겠으면 [N].
< > EQL (serial line load balancing) support
여러 개의 PPP, SLIP 연결을 향상된 속도를 가진 하나의 연결로 사용하는 기능이다. 연결된 상대에서
도 이 기능을 지원해야 사용할 수 있다. 잘 모르겠으면 [N].
< > Universial TUN/TAP device driver support
TUN/TAP는 유저 공간의 프로그램들을 위한 패킷 수취와 전달을 제공한다. TUN/TAP는 물리적인
매체로부터 패킷을 받는 대신 유저공간 프로그램으로부터 받고, 물리적인 매체를 통해 패킷을 보내는
대신 유저공간 프로그램에 패킷들을 쓰는 간단한 Point-to-Point나 Ethernet 장치로 생각할 수 있다.
프로그램이 /dev/net/tun 파일을 열면, 드라이버가 tunX나 tapX 등 일치하는 net 디바이스를 생성하
고 등록한다. 프로그램이 장치들을 닫으면, 드라이버가 자동으로 tunXX나 tapXX 등 장치를 지우고
모두 이것에 일치하도록 라우트한다. 어떤 곳에 사용해야 할지 모르겠다면 이 기능은 필요 없다.
< > Ethertap network tap (OBSOLETE)
[Y]를 답하고 위의 "Kernel/User network link driver"도 [Y]로 하고 mknod 명령으로 메이저 넘버 36 마이너 넘버 16번인 캐릭터형 특수 파일 /dev/tap0을 만들었다면, 유저 공간 프로그램들이 이더넷 프레임들을 그 파일을 통해 읽고 쓸 수 있을 것이다. tap0는 ifconfig와 route 명령에 의해 다른
이더넷 장치들처럼 설정될 수 있지만 어떤 물리적 LAN에도 연결되지 않는다. 사용자가 /dev/tap0에
쓰는 모든 것이 마치 LAN으로부터 tap0 장치에 온 것처럼 커널에 의해 다뤄진다. 커널이 tap0 장치
너머로 보내려 하는 모든 것들이 사용자에게는 /dev/tap0로부터 읽혀진다. 어떤 곳에 사용해야 할지
모르겠다면 이 기능은 필요 없다.
< > General Instruments Surfboard 1000
SURFboard 1000 내장 케이블 모뎀 드라이버이다. 이 카드가 없다면 [N]
Ethernet (10 or 100Mbit) --->
리눅스 박스에 들어있는 네트워크 인터페이스 카드(NIC) 대부분을 지원한다.
[*] Ethernet (10 or 100Mbits)
자신의 시스템에 맞는걸 선택한다.
[ ] 3COM cards
[*] 3COM cards
< > 3c501 "EtherLink" support (NEW)
< > 3c503 "EtherLink II" support (NEW)
< > 3c505 "EtherLink Plus" support (NEW)
< > 3c507 "EtherLink 16" support (EXPERIMENTAL) (NEW)
< > 3c509/3c529 (MCA)/3c579 "EtherLink III" support (NEW)
< > 3c515 ISA "Fast EtherLink" (NEW)
< > 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support
< > AMD LANCE and PCnet (AT1500 and NE2100) support
[ ] Western Digital/SMC cards
[ ] Racal-Interlan (Micom) NI cards
< > AT1700/1720 support (EXPERIMENTAL)
< > DEPCA, DE10x, DE200, DE201, DE202, DE422 support
< > HP 10/100VG PCLAN (ISA, EISA, PCI) support
[ ] Other ISA cards
이제 ISA NIC는 거의 쓰이지 않는다.
ISA 슬롯은 PCI 슬롯보다 상대적으로 크며(길고 넓다) 대개가 까만 색이다.
[*] EISA, VLB, PCI and on board controllers
거의 모든 NIC가 PCI 방식이다. 잘 모르겠으면 [Y]를 답하는 게 안전하다. 자신의 이더넷 시스템이
PCI를 사용한다면 다음 명령으로 칩셋 등 상세 정보를 확인할 수 있다.
# cat /proc/pci | grep -i ethernet
Ethernet controller: AMD Unknown device (rev 82).
Ethernet controller: DEC DC21140 (rev 34).
< > AMD PCnet32 PCI support
홈랜(혹은 BnA) 형식의 ADSL 서비스에서 사용하기도 한다. 32비트 버스 매스터링 어댑터로 가장
추천받는 NIC 가운데 하나이다.
< > Adaptec Starfire support (EXPERIMENTAL)
다중 포트를 지원하는 어뎁터이다.
< > Ansel Communications EISA 3200 support (EXPERIMENTAL)
< > Apricot Xen-II on board Ethernet
< > CS89x0 support
< > DECchip Tulip (dc21x4x) PCI support
튤립 역시 리눅스에서 호평받는 NIC이다.
< > Generic DECchip & DIGITAL EtherWORKS PCI/EISA
< > Digi Intl. RightSwitch SE-X support
< > DM9102 PCI Fast Ethernet Adapter support (EXPERIMENTAL)
<*> EtherExpressPro/100 support
거의 모든 커널 버전에서 이 옵션이 활성화되어 있는 것을 볼 수 있다. 가장 안정적인 NIC 가운데
하나지만. 이 어뎁터가 없다면 [N]를 선택한다.
[ ] Enable Power Management (EXPERIMENTAL)
<*> Intel PRO100 / EtherExpressPro/100 support (alternate driver) (NEW)
< > National Semiconductor DP83810 series PCI Ethernet support
< > PCI NE2000 and clones support (see help)
ISA 시절에는 NE2000이 가장 많은 추천을 받는 카드였다.
< > RealTek RTL-8139 PCI Fast Ethernet Adapter support
리얼텍 시리즈는 대만산 저가형 NIC 가운데 하나이다.
< > RealTek 8129 (not 8019/8029/8139!) support (EXPERIMENTAL)
< > SiS 900/7016 PCI Fast Ethernet Adapter support
< > SMC EtherPower II
< > Sundance Alta support
< > TI ThunderLAN support
< > VIA Rhine support
< > Winbond W89c840 Ethernet support
< > Sun Happy Meal 10/100baseT PCI support
[ ] Pocket and portable adapters
Ethernet (1000 Mbit) --->
기가비트 이더넷 지원이다. 잘 모르겠으면 [N].
< > Intel PRO/1000 support (NEW)
........
[ ] FDDI driver support
[ ] HIPPI driver support (EXPERIMENTAL)
HIgh Performance Parallel Interface(HIPPI)는 구리선(25m)이나 광섬유 (멀티모드에서 300미터,
싱글 모드에서 10킬로미터)를 매체로 800Mbit/sec과 1600Mbit/sec의 높은 속도를 내는 네트워크이
다.
일반적으로 클러스터와 슈퍼컴퓨터 연결에 쓰이는데, 이 기능을 사용하려면 HIPPI 네트워크 카드가
있어야 한다. 대부분은 [N]이 적절할 것이다.
< > PLIP (parallel port) support
패러랠포트와 크로스 케이블을 이용해 두 리눅스 박스를 연결한다(TCP/IP를 이용). PLIP에는 "null
printer" (또는 "fx") 케이블을 통해 4bits씩 전송하는 mode0와, 특별한 PLIP 케이블을 이용해 8bits를 전송하는 mode1이 있다. 잘 모르겠으면 [N].
< > PPP (point-to-point protocol) support
PPP는 SLIP보다 향상된 기능을 가진 시리얼 라인(전화선 등) 네트워킹 프로토콜이다. "set version
information on all symbols for modules"에 [Y]를 답했다면 모듈로만 컴파일할 수 있다. 케이블 모뎀
이나 ADSL 등을 통해 인터넷에 열결되거나 이더넷 카드(LAN)를 가지고 있다면 PPP는 필요 없다.
[ ] PPP multilink support (EXPERIMENTAL)
< > PPP support for async serial ports
< > PPP support for sync tty ports
< > PPP Deflate compression
< > PPP BSD-Compress compression
< > PPP over Ethernet (EXPERIMENTAL)
< > SLIP (serial line) support
PPP 이전에 많이 사용하던 시리얼 라인 네트워크 프로토콜이다. 잘 모르겠으면 [N].
Wireless LAN (non-hamradio) --->
radio와 무선 랜을 지원한다. 그러나 amateur radio와 FM 방송은 제외한다. 배선이 필요 없으며,
단말기 설치가 자유롭고, 네트워크 설치가 빠르고 유연하다는 장점이 있다. 일반적으로 저속의
무선 LAN은 공장 자동화나, 프린터 서버, 무선 모뎀 등에 쓰인다. 서로 떨어진 건물에 설치된 LAN
사이를 연결할 때에도 쓰이고 있다.
< > CIPE (Crypto IP Encapsulation) (NEW)
[ ] Wireless LAN (non-hamradio)
Token Ring devices --->
IBM에서 개발한 token 방식의 LAN이다. IBM 메인 프레임에서 주로 사용한다.
[ ] Token Ring driver support
[ ] Fibre Channel driver support
Fibre Channel은 주로 대용량 저장 장치에 쓰이는 고속 시리얼 프로토콜이다. 이 프로토콜은 SCSI
와 호환되며 대체할 수 있다. Fibre channel 어뎁터 카드가 있으면 "SCSI support"와 "SCSI generic support"도 활성화해야 한다.
< > Red Creek Hardware VPN (EXPERIMENTAL)
Virtual Private Network (VPN)을 제공하는 하드웨어를 위한 드라이버이다. 장치들이 있다면 [Y]를 선택한다.
< > Traffic Shaper (EXPERIMENTAL)
Traffic Shaper는 어떤 네트워크 장치를 지나서 나가는 데이터 흐름 속도를 제한할 수 있는 가상의
네트워크 장치이다. Traffic shaper라는 이름을 가진 고가의 실제 시스템을 소프트웨어적으로 구현한
것이다. 속도를 낮추려는(예를 들어 덜 중요하다고 생각하는) 트래픽은 이 가상의 디바이스를 거친
다음에 라우트될 수 있다.
traffic shaper는 Class-Based Queueing (CBQ) 스케쥴러로 대체할 수 있다. shaper 장치를 사용하
려면 ftp://shadow.cabi.net/pub/Linux에서 shaper 패키지를 가져와야 한다.
Wan interfaces --->
리눅스 박스와 WAN 인터페이스 카드를 이용해 저렴하게 WAN 라우터를 구현할 수 있다.
[ ] Wan interfaces support
X.25, 프레임 릴레이, 임대 회선 등과 같은 WAN(Wide Area Networks). 비동기 모뎀 접속 속도보다
훨씬 빠른 데이터 전송률을 이용하여 원거리의 LAN(Local Area Networks)을 상호 연결하는데
사용된다. 일반적으로 WAN에 연결하려면 꽤 고가 시스템인 "WAN 라우터"가 있어야 한다. 하지만 이에 대한 대안으로 리눅스 커널에 WAN 라우팅 기능을 넣을 수 있다. 시중에 판매되는 비교적 저가의 WAN 인터페이스 카드를 이용하면 외장 라우터 가격의 절반도 안돼는 비용으로 완벽한 WAN
라우터를 만들 수 있다. 이런 카드를 가지고 있고 또 리눅스 박스를 WAN 라우터로 사용할 계획이
라면 이 옵션에 Y를 선택하고, 다음에 나오는 WAN 드라이버도 선택한다. 그 다음에는
ftp://ftp.sangoma.com에서 구할 수 있는 wan-tools 패키지가 있어야 한다.
< > Comtrol Hostess SV-11 support (NEW)
< > COSA/SRP sync serial boards support (NEW)
< > MultiGate (COMX) synchronous serial boards support (NEW)
< > LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards (NEW)
< > Sealevel Systems 4021 support (NEW)
< > SyncLink HDLC/SYNCPPP support (NEW)
< > Frame relay DLCI support (NEW)
< > SBNI12-xx support (NEW)
PCMCIA network device support --->
PCMCIA나 CardBus 네트웍 어댑터를 가지고 있다면 [Y]를 선택한다.
[ ] PCMCIA network device support
< > 3Com 3c589 PCMCIA support
< > 3Com 3c574 PCMCIA support
< > Fujitsu FMV-J18x PCMCIA support
< > NE2000 compatible PCMCIA support
< > New Media PCMCIA support
< > SMC 91Cxx PCMCIA support
< > Xircom 16-bit PCMCIA support
< > Xircom Tulip-like CardBus support
[ ] Pcmcia Wireless LAN
< > Aviator/Raytheon 2.4MHz wireless support
< > Xircom Netwave AirSurfer wireless support
< > AT&T/Lucent Wavelan wireless support
< > Aironet 4500/4800 PCMCIA support
Amateur Radio support --->
[ ] Amateur Radio support
IrDA (infrared) support --->
[ ] IrDA subsystem support
ISDN subsystem --->
[ ] ISDN subsystem
Old CD-ROM drivers (not SCSI, not IDE) --->
[ ] Support non-SCSI/IDE/ATAPI CDROM drives
Input core support --->
[ ] Input core support
Character devices --->
터미널, 비디오 어뎁터, 마우스, 프린터 등 다양한 장치들을 지원한다.
[*] Virtual terminal
가상 터미널 지원. 하나의 물리적인 터미널 위에 여러 개의 가상 터미널을 실행하는 기능이다.
가상 터미널은 여러 개의 X 세션을 띄울 수도 있다. 가상 터미널 사이를 옮겨 다닐 때는 <Alt>키와
기능키를 조합하여 사용한다. 최소한 하나의 가상 터미널이 있어야 키보드와 모니터를 쓸 수가 있다.
[*] Support for console on virtual terminal
가상터미널을 시스템 콘솔로 쓸 수 있게 해준다. 시스템 콘솔은 모든 커널 메시지와 경고 메시지를
수취하고, 단독 사용자 모드에서 로그인을 허용하는 장치이다. [Y]를 선택하고 가상 콘솔을
"console=tty3"와 같은 명령을 사용하여 시스템 콘솔로 사용할 수 있다.
[M] Standard/generic (8250/16550 and compatible UARTs) serial support
모뎀과 시리얼 마우스, 시리얼 디바이스를 사용하는 기능이다.
[ ] Support for console on serial port
이 옵션을 활성화하면 직렬 포트를 시스템 콘솔로 쓸 수 있다. 시스템 콘솔은 커널 메시지와 경고
메시지들을 받아 뿌려주고 싱글 유저 모드로 로그인할 수 있게 해주는 디바이스이다. 가령 직렬 포트
프린터 등으로 여러 메시지 들을 기록할 수도 있다. 여기서 [Y]를 설정해도 /dev/tty0가 시스템 콘솔
로 잡혀 있다. 예를 들어 두번째 시리얼 포트를 시스템 콘솔을 바꾸려면 커널 명령 라인에
"console=ttyS1" 명령을 쓴다. "man bootparam"이나 부트 로더용 문서들을 보면 부트 로더(lilo나
loadlin)가 부팅할 때 어떤 옵션을 넣어야 하는지 알 수 있다. 이 옵션을 이용하면 VGA 카드가 없는
리눅스 시스템도 운영할 수 있는데, 커널이 자동으로 시스템 콘솔을 /dev/ttyS0로 잡는다.
[ ] Extended dumb serial driver options
만일 표준 "더미(dumb)" 드라이버의 비표준 기능들 가운데 하나라도 쓰려 한다면, 이 옵션을 활성화
한다. HUB6지원, 공유 시리얼 인터럽트, 스페셜 멀티포트 지원, 그리고 COM 1/2/3/4 이상의 보드
등을 지원한다. 이 곳에 [Y]를 답하면 또 다른 질문들이 활성화된다.
[ ] Non-standard serial port support
표준 시리얼 포트 외의 멀티포트 제품군을 지원한다.
[*] Unix98 PTY support
Unix98 가상터미널 지원. PTY는 소프트웨어로 구동되는 가상 장치(pseudo terminal)이다. 마스터와
슬레이브 두 부분으로 구성되며 마스터는 물리적 터미널과 똑같이 동작하며 슬레이브는 터미널을
흉내낸다. 마스터 디바이스는 슬레이브로부터 데이터를 읽거나, 혹은 슬레이브에 데이터를 쓸 때
사용한다. 전형적인 master side program은 telnet 서버나 xterm이다. 리눅스는 BSD형식을 따라
마스터는 /dev/ptyxx, 슬레이브는 /dev/ttyxx를 사용하여 왔지만, 몇 가지 문제로 인해 새로 Unix98
naming 표준을 지원한다. 새 표준에 의해 장치 이름들이 달라지는데, 전에 /dev/ttyp2로 불리던
슬레이브는 /dev/pts/2로 바뀌게 된다. /dev/pts/*의 파일들은 가상 파일 시스템에 의해 동작 중
자동적으로 생성된다. 그러므로 이 옵션을 활성화한다면 "Unix98 PTS를 위한 /dev/pts 파일 시스템"
옵션도 선택한다.
[*] (256) Maximum number of Unix98 PTYs in use (0-2048)
동시에 열 수 있는 Unix98 PTY 개수의 최대값. 디폴트 값인 256은 데스크탑 장치일 때는 충분하다.
telnet/rlogin/ssh 접속과 X 터미널 등은 모두 PTY를 사용한다.
<M> Parallel printer Support
프린터와 함께 패러랠 포트를 사용하는 PLIP, Parallel Zip drive 등 다른 장치를 함께 사용하려면
반드시 모듈로 설정, [M]
[ ] Support for console on line printer
프린터를 콘솔로 설정하면 커널 메세지가 발생할 때 종이 등 매체에 인쇄할 수 있다. 이 옵션을 활성
화하고 커널 커맨드에(booting할 때) "console=lp"란 옵션을 덧붙인다. (또는 /etc/lilo.conf 파일의
적당한 블록에 append="console=lp" 항목을 추가한다)
< > Support for user-space parallel port device drivers
일반적인 프린팅 작업이나 패러랠 CD-ROM/disk 등에는 필요없다.
I2C support --->
I2C(I-square-C)는 필립스에서 개발한 느린 시리얼 버스 프로토콜로 많은 마이크로 컨트롤러 어플리
케이션에서 사용된다. SMBus(시스템 관리 버스: System ManagementBus)는 I2C의 하위 프로토콜이
다. I2C와 SMBus 모두를 이 옵션에서 지원한다. 하드웨어 센서나, video for linux 지원을 위해서 필요할 것이다. I2C 옵션을 활성화하면 나타나는 서브 옵션들은 장치 드라이버들이다.
[ ] I2C support
Mice --->
< > Bus Mouse Support
대부분 필요 없다.
시리얼 마우스나 PS/2, 혹은 USB 마우스를 사용하는 모든 분들은 [N]을 설정한다.
<*> Mouse Support (not serial and bus mice)
시리얼 마우스나 버스 마우스를 제외한 장치를 사용하기 위한 기능이다. PS/2 마우스, 디지타이저
패드 등 장치를 사용하는 대부분은 [Y]를 설정 해야 한다.
[*] PS/2 mouse (aka "auxiliary device") support
PS/2 마우스 지원. PS/2 마우스는 키보드 포트와 비슷하게 생긴 동그란 전용포트에 꽂아서 사용하
는 마우스이다. 시리얼 포트를 차지하지 않으므로 다른 주변장치와 충돌하는 일이 거의 없다. PS/2
포트를 사용하는 장치는 그 밖에도 라이트 펜, 태블릿, 키패드 등 입력 장치가 있다. 트랙볼이나
터치패드 등 노트북용 장치들도 PS/2 프로토콜을 사용한다.
PS/2 마우스를 "Microsoft Bus mouse"라고 하는 제조업체도 있는데 핀의 수를 세어 보면 구분할
수 있다. PS/2는 6핀, MS 버스마우스는 9핀이다.
< > C&T 82C710 mouse port support (as on TI Travelmate)
< > PC110 digitizer pad support
Joystics --->
Classic PC analog joysticks, gamepads, Microsoft SideWinder, Sega, Logitech, 스티어링 휠, 무기
제어 시스템이나 그 밖의 다양한 게임 컨트롤러들도 지원한다. Documentation/joystick.txt를 참조
--Input core support is needed for joysticks
< > QIC-02 tape support
스커지 방식이 아닌 tape 드라이브가 있다면 설정한다.
Watchdog Cards --->
소프트웨어 Watchdog이다. 하드웨어 Watchdog과 다르게 때에 따라 시스템을 재부팅 시키는데 실패
할 수 있다. 필요하다면 [M]을 선택해 모듈로 사용할 수도 있다.
[*] Watchdog Timer Support
WDT Watchdog timer와 아래 메뉴들은 watchdog 보드에 관한 설정들이다. 하드웨어에 맞는 설정
을 선택한다. 시스템이 Lock-Up 상태로 서비스를 제공할 수 없는 상태가 이어지면 reboot 등
서비스를 다시 시작할 수 있도록 하는 기능이다. 네트워크 서버처럼 재부팅을 하더라도 가능한
빨리 온라인 상태를 복구해야 할 때 유용하다. 하드웨어/소프트웨어 Watchdog을 지원한다. 하드웨어로 구현한 Watchdog 보드는 시스템 내부 온도를 측정해서 활용할 수도 있다고 한다. 소프트웨어
Watchdog은 Watchdog daemon과 함께 사용한다.
보통 ftp://tsx-11.mit.edu/pub/linux/sources/sbin/에서 필요한 소프트웨어를 구할 수 있다. 만일
이 옵션을 활성화하고 (그리고 추가적인 옵션들 중 하나를 선택하고) mknod 명령으로 major 번호
가 10이고 minor 번호가 130인 character special 파일 "/dev/watchdog"을 만들면, watchdog을
얻게 된다. 이후로 1분 이내에 watchdog 파일을 열고 쓰기 동작을 하지 않는다면 컴퓨터는 재부팅
하게 될 것이다.
[*] Watchdog Timer Support
[ ] Disable watchdog shutdown on close
기본적으로 Watchdog을 관리하는 프로세서가 /dev/watchdog 파일을 닫으면 타이머가 멈춘다.
하지만 만일 이 옵션에서 [Y]를 선택하면, 한 번 시작된 워치독은 멈출 수 없게 된다.
< > Software Watchdog
< > WDT Watchdog timer
< > WDT PCI Watchdog timer
< > Berkshire Products PC Watchdog
< > Acquire SBC Watchdog Timer
< > SBC-60XX Watchdog Timer
< > Mixcom Watchdog
< > Intel i810 TCO timer / Watchdog
< > Intel i8x0 Random Number Generator support
Intel i8xx 칩셋을 가진 마더보드에서 선택한다.
< > /dev/nvram support
PC에서 CMOS RAM, Atari에서 Non-VolatiLe RAM 이라 부르는 비휘발성 메모리로 만든 리얼
타임 클럭(RTC) 가운데 0bytes를 읽거나 쓸 수 있도록 한다. 이 기능을 사용하려면 mknod 명령으로 메이저 넘버 10, 마이너 넘버 144짜리 캐릭터형 특수 파일인 /dev/nvram을 들어야 한다.
하드디스크에 두기는 위험한 데이터나 전원이 꺼져도 잃어버리면 안돼는 매우 중요한 데이터를
저장하는데 쓰인다. 시스템에 따라 이미 중요한 데이터가 들어 있을 수 있으므로 조심해서
설정해야 한다.
< > Enhanced Real Time Clock Support
소프트웨어가 컴퓨터 실시간 시계를 사용할 수 있도록 하는 기능이다. (Documentation/rtc.txt).
멀티 프로세서 machine을 가지고 있고 SMP 기능을 사용한다면 반드시 [Y]를 선택해야 한다.
그리고 주기적인 data sampling 등 이 기능을 유용하게 쓸 장치가 있다면 설정한다. 이 기능을
사용하려면 mknod명령으로 메이저 넘버 10, 마이너 넘버 135인 캐릭터형 특수 파일 /dev/rtc를
만들어야 한다..
< > Double Talk PC internal speech card support
RC 시스템에서 제작한 음성합성장치(Speech SyntheSizer)인 "DoubleTalk" 드라이버이다.
< > Siemens R3964 line discipline
지멘스 R3964 패킷 프로토콜을 통해 장치들이 상호 동기적으로 통신할 수 있게 한다.
< > Applicom intelligent fieldbus card support
Ftape, the floppy tape device driver --->
< > Ftape (QIC-80/Travan) support
<*> /dev/agpgart (AGP Support)
AGP 지원(하부 메뉴 중 자신의 보드에 맞는 것 선택)한다. AGP(Accelerated Graphics Port)는
그래픽 카드를 연결하는데 주로 사용하는 고속의 버스 시스템이다. 시스템이 AGP를 지원한다면
[Y]를 설정한다. XFree86 3.3.6에 쓰이는 GLX 컴포넌트를 시험하고 싶다면
http://utah-glx.sourceforge.net/에서 download받으면 된다. GLX나 i810 서버를 가지고 있다면
테스트해 볼 수 있다.
[*] Intel 440LX/BX/GX and I815/I840/I850 support
그 밖에 Intel 440LX/BX/GX, I815/I840/I850, Intel I810/I815 (on-board), VIA, AMD, Generic SiS,
ALI 등은 모두 AGP 지원과 관련된 옵션들이다. 여러분이 가진 보드 메뉴얼을 살펴 보고 적절한
것으로 선택한다. 기본 값을 그냥 두어도 나쁘지는 않다.
[*] Intel I810/I815 (on-board) support
[*] VIA chipset support
[*] AMD Irongate support
[*] Generic SiS support
[*] ALI chipset support
[*] Direct Rendering Manager (XFree86 DRI support)
Direct Rendering Manager, 3dfx Banshee/Voodoo3+ 옵션을 활성화하면 3dlabs GMX 2000, ATI
Rage 128, ATI Radeon, Intel I810, Matrox g200/g400 등 비디오 카드와 관련된 옵션들이 나타난다.
장치에 적절한 것으로 선택한다.
< > 3dfx Banshee/Voodoo3+
< > 3dlabs GMX 2000
< > ATI Rage 128
< > ATI Rageon
<*> Intel I810
< > Matrox g200/g400
PCMCIA character device support --->
< > PCMCIA serial device support
시리얼 포트 카드, 모뎀, ethernet/modem 다기능 카드 등 16-비트 PCMCIA 직렬 디바이스를 지원
한다.
< > CardBus serial device support
ethernet/modem 다기능 디바이스들의 모뎀 기능을 포함한 CardBus 직렬 디바이스를 지원한다.
Multimedia devices --->
< > Video For Linux
File systems --->
리눅스에서 접근할 수 있는 다양한 파일시스템에 대한 설정이다.
[*] Quota support
ext2 파일시스템에서 유저/유저그룹이 사용할 수 있는 디스크 공간의 크기를 제한하는 기능이다.
리눅스 박스를 서버로 쓰지 않고 개인 용도로 사용하는 유저는 설정할 요 없다.
< > Kernel automounter support
원격 파일 시스템을 자동으로 마운트 해준다. automounter는 요청에 따라 원격 파일시스템을
자동으로 마운트하는 툴이다. BSD의 amd는 완전히 사용자 공간의 데몬이지만 리눅스의 automounter
는 파일시스템이 이미 마운트된 경우 오버헤드를 줄이기 위해 부분적으로 커널에 의지한다.
이 기능을 사용한다면 "NFS filesystem support"도 활성화한다. 리눅스 박스가 커다란 분산 네트워크
에 연결되어 있지 않다면, automounter가 필요 없을 것이다. [N]을 선택한다.
<*> Kernel automounter version 4 support (also supports v3)
만약 시스템이 큰 분산 네트워크에 연결되어 있지 않거나, 동적으로 재설정이 필요한 랩탑중 하나가
아니라면 아마 automounter가 필요 없을 것이다. [N]을 선택한다.
< > Reiserfs support
저널링(journaling) 파일시스템을 지원한다. 저널링 파일 시스템에서는 인덱스가 갱신되기 전에 관련
내용이 기록되므로 정전이나 다른 이유로 인덱스에 문제가 생기더라도 다시 시스템을 재가동하면
운영체제가 로그를 보고 복구를 할 수 있다.
일반적인 경우 ReiserFS는 ext2정도의 속도를 내지만, 큰 디렉토리에 작은 파일들이 많은 경우 매우
효율적이다. NFS와 quota를 ReiserFS와 함께 사용하려면 패치를 해야 한다.
관련된 링크는 www.reiserfs.org이다.
[ ] Have reiserfs do extra internal checking
대부분 이 옵션은 필요 없다.
이 옵션을 활성화하면 디버깅에 유용한 메시지들을 더 많이 볼 수 있지만 performance가 낮아진다.
< > ADFS filesystem support (read only) (EXPERIMENTAL)
Advanced Disk File System은 Acorn 시스템의 플로피와 하드 디스크에서 사용되는 파일 시스템이다.
< > Amiga FFS filesystem Support
The Fast File System (FFS)은 AmigaOS Version 1.3 (34.20)이후로 Amiga(tm) systems의 하드디스크에서 사용하는 일반적인 파일시스템이다.
< > Apple Macintosh filesystem Support (EXPERIMENTAL)
매킨토시 형식으로 포맷된 플로피 디스크와 하드 드라이브 파티션을 읽고 쓸 수 있다.
필요하다면 [M]이나 [Y]를 선택한다.
< > BFS file system support (EXPERIMENTAL)
<M> DOS FAT fS support
FAT 기반의 파일 시스템 지원. FAT 기반의 MSDOS fS support, VFAT (WindowS-95) fS support 등 MS의 파일 시스템을 마운트하여 사용하려면 설정한다. [Y]를 설정하면 커널 크기가 24KB 늘어난다.
이 기능은 스스로 파일 시스템을 지원하지 못하므로 MS-DOS 파일시스템을 지원하는 "DOS FAT fS
Support"와 MS-DOS, Windows 9x 시리즈를 지원하는 "VFAT (Windows-95) fs support" 옵션을
함께 사용해야 한다. 모듈로 설정하면 각각 fat.o, msdos.o, vfat.o로 컴파일된다. <M>
<M> MSDOS fS Support
MSDOS 파티션 마운트 지원.
< > UMDOS: Unix-Like file system on top of standard MSDOS fs
Unix-Like fs on top of standard MSDOS fS는 도스 파일시스템 위에서 리눅스를 실행한다. 사용중인
도스 파티션에 영향을 주지 않고 리눅스를 사용할 수 있지만 제한이 많다.
<M> VFAT (WindowS-95) fS Support
윈도우즈 파티션 지원
< > EFS file system support (read only) (EXPERIMENTAL)
SGI사의 IRIX OS에서 CDROM용 파일시스템과 [초기 버전의] 파일 시스템에서 사용하는 파일
시스템이다.
< > Compressed ROM file system support
ROM 기반 임베디드 시스템에서 압축된 파일시스템을 사용한다면 이 옵션을 활성화한다. 읽기
전용이며 256MB로 크기가 제한되어 있다. 16/32 비트 uid/gid나 하드 링크, 타임스탬프는
지원하지 않는다.
< > Virtual memory file system support (former shm fs) (NEW)
< > Simple RAM-based file system support
Ramfs는 램 안에서 읽기 쓰기가 모두 가능한 파일시스템을 지원한다. 다른 파일시스템과 마찬가지
로 마운트하여 사용한다.
예를 들어 /ramfiles 디렉토리에 마운트한다면 "mount -t ramfs ramfs /ramfiles" 또는 /etc/fstab에
설정 정보를 넣어 부팅시 자동으로 마운트할 수도 있다. 일반적으로 RAM은 하드 디스크보다
속도가 빠르므로 물리적인 램이 충분하다면 엑세스가 빈번한 자료나 바이너리 등을 이곳에 넣어
시스템 퍼포먼스를 높일 수도 있다. Ramfs 안에 저장된 것들은 모두 가상적으로 다루어지므로
하드 드라이브로 옮겨놓지 않는다면, 재부팅 했을 때 아무 것도 남아있지 않을 것이다.
사용할 만한 이유를 찾지 못했다면 [N]을 선택한다.
<M> ISO9660 cdrom fiLesystem support
CD-ROM 파일 시스템 지원. ISO에서 제안한 시디롬을 위한 표준 파일시스템이다. 반드시 필요하다.
CD-ROM을 부트 디바이스로 사용하려면 모듈로 설정하지 않는다. [Y]
[*] Microsoft Joliet CDROM extensions
Joliet CDROM을 읽을 수 있게 한다. Microsoft에서 개발한 유니코드 형식의 긴 파일이름을
지원하는 확장 ISO9660 CDROM 파일 시스템이다. MS 윈도우즈용 프로그램들을 담고 있는 CD는
대부분 Joliet 형식으로 저장되어 있다.
< > Minix fS Suppor
매우 오래된 파일시스템이다. 일반 사용자라면 엑세스 할 일이 거의 없다. 커널 크기가 25KB
늘어난다.
< > NTFS filesystem Support (read only
Microsoft NT 파일시스템을 읽는 기능이다.
[ ] OS/2 HPFS filesystem Support (read only)
OS/2 파일시스템을 읽기만 할 수 있다.
[*] /proc filesystem Support
커널과 프로세스를 위한 가상의 파일시스템이다. 실제 디스크 공간을 점유하지는 않는다.
프로세스 등 시스템 정보를 제공하는 많은 프로그램이 사용하는 유용한 기능이다. cat 명령으로도
정보를 볼 수 있다. 예를 들어 cpu 정보를 보려한다면 다음 명령을 사용한다. # cat /proc/cpuinfo
[ ] /dev file system support (EXPERIMENTAL)
/proc 파일 시스템처럼 특별한 목적을 가진 가상 파일시스템이다. /dev 디렉토리에서 볼 수 있는
장치 드라이버에 대한 인터페이스를 제공하는 파일시스템이다. Major와 Minor 넘버 배치와는
상관 없이 /dev 목록에 장치 드라이버가 자동적으로 등록된다. devfs를 사용하지 않는다면 /dev
디렉토리에 수백 수천개의 inode가 필요할 것이다. devfsd를 설치하지 않는다면 깨진 코드를 패치
하거나 설정 파일을 고치는데 엄청난 시간을 소비하게 될 것이다. 일시적으로 /dev 파일시스템을
사용하지 않으려면 커널 명령에 "devfs=nomount"를 넣는다.
[*] /dev/pts filesystem for Unix98 PTYS
[*] Unix98 PTY support를 선택했다면 선택해야 한다. "Unix98 PTY Support" 기능과 함께 사용한다.
#mount -t devpts 명령으로 /dev/pts에 마운트할 수 있는 가상 파일시스템을 만들고 Unix98의
표준 다중채널 가상 터미널(pseudo terminal)로 사용하는 기능이다. 이전에 /dev/ttyp2였던 가상
터미널은 이 옵션을 활성화하면 /dev/pts/2가 된다.
< > QNX filesystem support (read only) (EXPERIMENTAL)
QNX4 운영체제에서 사용되는 파일시스템이다.
< > ROM filesystem support
주로 install 디스크의 RAM 디스크 초기화에 쓰이는 매우 작은 읽기 전용 파일 시스템이다. 어떤
곳에 써야할 지 모른다면 [N]을 선택한다.
<*> second extended fs support
리눅스에서 현재 사용하는 표준 파일시스템이다. MS windows에서는 ext2nt나 explorer2fs를 이용해 ext2 파일 시스템을 엑세스할 수 있다. 반드시 활성화한다.
< > System V and Coherent filesystem Support
Xenix와 Cherent는 인텔 기종을 위한 상용 유닉스 시스템이다. 주위에 이 시스템이 없다면 [N]을
선택한다.
< > UDF file system support (read only)
몇몇 CDROM과 DVD 드라이버에서 사용되는 새로운 파일 시스템이다. DVD 디스크 혹은 패킷
모드로 기록된 CDRW를 마운트하거나, DirectCD와 같이 UDF유틸리티로 기록을 할 것이라면 [Y]를 선택한다.
< > UFS filesystem support (read only)
BSD와 Unix에서 파생된 버전(SunOS,FreeBSD, NetBSD, OpenBSD, NextStep)들은 UFS라는 파일
시스템을 사용한다. 어떤 System V 유닉스는 디스크 파티션이나 플로피 디스크에 UFS 파일 시스템을 사용하기도 한다. 일반적으로 플로피 디스크에서는 tar 프로그램을 사용하므로 이 기능은 필요 없다. 또한 NFS를 사용한다면 이 옵션을 [N]으로 설정한다.
Network FiLe systems --->
< > Coda filesystem support (advanced networks fs)
Coda는 NFS와 비슷하지만 더 진보된 네트워크 파일시스템이다. Coda는 비접속 운영, 캐시,
보안과 인증 등 NFS보다 좋은 점이 몇 가지 있다. 이 질문에 [Y]를 답하면 Coda 클라이언트로
동작할 것이다. 서버와 클라이언트 모두가 지원해야 한다. Coda 서버들은 사용자 공간의
프로그램들이며 커널이 지원해야 하는 것은 아니다.
<*> NFS filesystem Support
네트웍 파일 시스템 지원. 네트워크 파일시스템 클라이언트이다. 만약에 SLIP이나 PLIP, PPP,
이더넷 등으로 다른 유닉스 컴퓨터에 물려있고 상대 컴퓨터를 마운트해서 상대 파일을 엑세스하고
싶다면 [Y]를 선택한다. 상대 컴퓨터는 NFS 서버, 여러분의 리눅스 박스는 클라이언트가 되는데
서버에는 nfsd, mountd, portmap 등이 동작하고 있어야 하며, /etc/exports 파일에서 허용해야
한다. "파일을 마운트한다"는 것은 클라이언트가 보통 유닉스 명령어로 서버쪽 파일들을 자기 hard
disk에 있는 것처럼 접근할 수 있다는 뜻이다. TCP/IP를 사용하며 커널 크기가 27KB 정도
늘어난다.
[ ] Provide NFSv3 client support
<M> NFS Server Support
커널 기반의 NFS 서비스이다. 유저 공간의 nfsd보다 더 빠르지만 아직 불안하다. nfsd 데몬을
이용하여 서비스하거나 잘 모르겠으면 [N].
[ ] Provide NFSv3 server support
< >Emulate SUN NFS Server
<M> SMB filesystem Support (to mount WFW Shares etc..)
윈도우즈의 네트웍 기능들을 공유할 수 있게 해준다. 리눅스 박스에서 MS windows 9x/NT
네트워크 자원을 공유하는 기능이다. 대부분의 네트워크 클라이언트가 MS 윈도우즈 박스이므로
SMB 옵션을 활성화할 것을 권장한다. 이 기능을 이용하여 저가의 CD-ROM 쥬크박스를 구현할
수도 있다.
[*] Use a default NLS
Default Remote NLS Option: "cp437"
[ ]SMB Win95 bug work-around
속도가 조금 느려지겠지만 Windows 95 서버를 더 안정적으로 만든다.
< > NCP filesystem Support (to mount NetWare volumes)
NCP(netware core protocol)은 IPX를 이용한 랜 프로토콜이다. 노벨 네트웨어 클라이언트가 NCP를 통해 파일서버 볼륨을 마운트하여 사용한다. Linux 박스가 서버로 동작하거나 netware 네트워크에 연결되지 않는다면(대부분) 필요 없다.
[ ]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
Partition Types --->
일반적으로 상용 유닉스 시스템들은 각자 자신의 파일시스템과 바이너리 타입을 가지고 있어서
그 운영 체제에서만 사용할 수 있도록 되어 있다. 매킨토시를 제외한 유닉스 파티션은 "UFS
filesystem support"와 함께 설정한다. 플로피 디스크만 사용한다면 파일시스템 지원 기능을 커널에
포함하지 않고 tar 유틸리티를 사용할 수도 있다.
[ ] Advanced partition selection
[ ] 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)
Native Language Support --->
MS의 fat 파일시스템종류는 고유언어 문자셋으로 파일이름을 다룰 수 있다. 이런 문자셋은 DOS
코드 페이지에 저장되어 있어 MS-DOS/Windows 파티션의 파일 이름을 정확하게 읽으려면
필요하다.
Default NLS Option: "cp949" 혹은 "euc-kr"
디폴트로 한글이 선택되도록 한다. 다음과 같은 옵션을 사용할 수 있다: big5, cp437, cp737,
cp775, cp850, cp852, cp855, cp857, cp860, cp861, cp862, cp863, cp864, cp865, cp866, cp869,
cp874, cp932, cp936, cp949, cp950, euc-jp, euc-kr, gb2312, iso8859-1, iso8859-2, iso8859-3,
iso8859-4, iso8859-5, iso8859-6, iso8859-7, iso8859-8, iso8859-9, iso8859-14, iso8859-15,
koi8-r, sjis 한국어를 위해서는 euc-kr을 설정한다. 잘 모르겠으면 "iso8859-1"를 지정한다.
잘못 설정한 경우 자동으로 "iso8859-1"가 설정된다.
<*> Codepage 437 (United States, Canada)
<*> Codepage 949 (UnifiedHangul)
윈도우 파티션을 마운트했을 때 한글을 볼 수 있다.
<*> NLS ISO 8859-1 (Latin 1; Western European Languages)
Console drivers --->
콘솔이란 직접 기계에 연결된 모니터, 키보드를 말한다. 보안 등 여러 가지 조건에서 네트워크 터미널과
구별되며 훨씬 많은 기능과 권한을 가진다.
[*] VGA text console
VGA 표준 디스플레이를 통해 텍스트 모드에서 사용 가능하다. 일반 VGA 표준모드 콘솔을 지원한다.
SVGA 모드를 사용하려면 ftp://metalab.unc.edu/pub/Linux/utils/console에서 SVGATextMode를 내려 받는다. [Y]를 설정한다.
[ ] Video mode selection support
커널을 시작할 때 "vga="옵션으로 비디오 모드를 선택하는 기능이다. 예를 들어 "VGA=ASK"옵션을 사용하면 커널이 시작될 때 비디오 모드 메뉴가 나타난다. "man bootparm"명령으로 부트 매개변수를 알아본다.
< > MDA text console (dual-headed) (EXPERIMENTAL)
허큘리스 등 흑백 디스플레이 어뎁터를 가지고 있으면 설정한다. [N]
Frame-buffer support --->
콘솔에서 그래픽 기능을 사용할 수 있도록 커널 자체가 지원하는 기능이다. 확실하지 않으면 [N]을
선택한다. 잘못 설정하면 모니터나 비디오 카드에 물리적인 손상을 줄 수도 있다. 프레임 버퍼는
리눅스에서 지원되는 여러 가지의 하드웨어 종류에 대해 동일하게 접근하도록 만들어 주기 때문에
응용 프로그램 작성이 매우 쉽고, 이식성이 좋은 환경을 제공한다. 프레임 버퍼의 모든 기능을 완전히
사용하기 위해서는 fbset 이라고 불리는 유틸리티 프로그램이 필요하다.
Sound --->
시스템에 맞는걸 선택한다.
< > Sound card support
< > C-Media PCI (CMI8338/8378)
.........
USB support --->
< > Support for USB
[ ] USB verbose debug messages
----Miscellaneous USB options
[ ] Preliminary USB device filesystem
........
Kernel hacking --->
[ ] Memory mapped I/O debugging
[*] Magic SysRq key
시스템이 다운되더라도 제어할 수 있도록 해준다.
커널 컴파일 설정 후 저장
5) Makefile 수정
[root @edu00 linux-2.4]#vi /usr/src/linux/Makefile
kernel version을 사용자의 편의대로 수정한다.
6) 의존성 관계 설정
[root @edu00 linux-2.4]#make dep; make clean
1] make dep
설정 후 커널 이미지를 생성하기에 앞서 필요한 라이브러리나 헤더 파일 등이 시스템에 제대로 있는지의 의존성을 확인하기 위한 것으로 새 커널 만들기를 시작하는 명령이다. 컴파일을 위한 의존성 관계를 설정한다.
2] make clean
기존의 소스로 컴파일을 한 번이라도 한 경우에 생겼을 오브젝트 파일(*.[oas])이나 임시 파일(.tmp*), 설정 값(configure), 커널 이미지 등의 잔여물을 없애기 위한 것으로 소스 파일이나 rpm 파일을 새로 가져와서 처음 할 경우에는 안해도 별 상관없지만, 습관처럼 그냥 하는 것이 좋다.
이전의 컴파일 과정 수행시에 생성된 오브젝트 파일, 커널, 임시파일 등을 삭제한다.
7) 커널 이미지 생성
[root @edu00 linux-2.4]#make bzImage
1] make zImage
zImage는 1/2MB보다 큰 커널을 지원하지 않기 때문에 커널이 제한된 크기를 넘으면 "System is too
big"이라는 에러 메시지를 남기고 컴파일이 실패한다. 잘 쓰이지 않는 기능은 모듈로 설정하고, 필요
없는 기능은 제거하여 커널 규모를 줄이고 다시 컴파일한다. 커널 이미지가 클 경우 마지막에 에러가
나므로 주로 make bzImage로 작업한다.
2] make bzImage
bzImage(big zImage)는 1MB이상에 직접 커널을 로드하기 위해 기능이 확장되어 커널 크기를 대략
2MB까지 허용한다.
3] make -s zImage 또는 make -s bzImage
장황한 출력 메시지를 보지 않으려면 -s 옵션을 사용한다. 경과 메세지나 잘못되었을 경우의 에러
메세지만 보여줄 것이다.
4] make bzlilo
기존의 커널 이미지와 System.map을 백업하고, 새로운 커널 이미지인 vmlinuz-(커널버젼)이미지를 만든 다음, 다시 vmlinuz로 심볼릭 링크하고, System.map도 마찬가지로 System.map-(커널버젼)을 System.map으로 심볼릭 링크하며, lilo까지 알아서 하게 된다.
단, 커널 이미지가 설치되는 디렉토리가 '/boot' 디렉토리가 아닌 '/' 루트에 설치 된다. rpm 사용자는
기본으로 설정되어 있기 때문에 해당 사항 없다.
만일 /boot 디렉토리에 자동으로 설치되게 하려면, /usr/src/linux/Makefile 파일에서 맨 앞의 주석처리인 '#' 부분을 제거 한다.
#
# INSTALL_PATH specifies where to place the updated kernel and system map
# images. Uncomment if you want to place them anywhere other than root.
#
#export INSTALL_PATH=/boot <-- 맨 앞의 '#' 부분을 제거한다.
make bzlilo는 make bzImage;make install;lilo 를 동시에 하는 명령
make zlilo는 make zImage;make install;lilo를 한 번에 해주는 명령
5] make zdisk
커널 이미지를 플로피 디스크에 만든다. 플로피 디스크로 새 커널을 테스트할 때 사용한다.
8) 구 버전의 모듈 백업
[root @edu00 linux-2.4]#mv /lib/modules/2.0.36 /lib/modules/2.0.36-org
모듈 컴파일을 시작하기 전에 이전 버전에서 설치한 모듈을 (커널 버전이 달라지지 않았다면) 이름을 바꾸는 것이 좋다.
9) 모듈 컴파일
[root @edu00 linux-2.4]#make modules
모듈을 만든다. 커널 환경설정에서 모듈로 설정한 기능들을 컴파일한다.
10) 모듈 설치
[root @edu00 linux-2.4]#make modules_install
컴파일된 모듈을 /lib/modules/커널버전명 디렉토리 아래 설치한다.
11) 의존성 검사
[root @edu00 linux-2.4]#depmod -a (커널버젼)
레드햇 계열은 부팅시의 초기화에서 자동으로 실행하지만, 부팅시에 error를 피하기 위해 실행한다.
모듈 사이의 의존성을 검사하여 /lib/modules/커널 버전명 디렉토리 아래 modules.dep 파일을 만든다.
1] 모듈 생성
커널 옵션에서 모듈을 선택하였다면 모듈을 만들어야 한다. 기존에 있던 모듈을 삭제하거나 다른
이름으로 백업해야 한다. depmod -a (커널버젼) 명령에 의한 각 모듈의 의존성 정보는
lib/modules/(커널 버젼)/modules.dep 파일에 저장된다.
2] 모듈 인식
모듈은 '/etc/conf.modules' 라는 파일 안에 모듈 이름을 적어서 인식 시킨다. 리눅스에서 네트워크
카드를 설정하기 위해서 'insmod'나 'modprobe'명령으로 모듈을 인식시켜 주고, 직접
/etc/conf.modules'파일안에 'alias'로 네트워크 모듈을 적어 주면 된다.
[root @edu00 linux-2.4]#vi /etc/conf.modules
------------------------------
alias eth0 ne io=0x300 irq=10
#ne호환 isa용의 네트워크 카드를 alias로 장치명과 모듈명, io 주소, irq 값을 순서대로 적는다.
alias eth1 rtl8139
# io주소와 irq값이 없는 것은 pci용의 네트워크 카드는입력이 없어도 자동으로 인식
alias eth2 eepro100
--------------------------------
3] I/O Address와 IRQ
isa용은 반드시 io주소와 irq값을 넣어 주어야 한다. 1개 이상의 네트워크 카드를 시스템에 장착한다면,
각각의 네트워크 카드를 커널 설정에서 모듈로 선택하여야 제대로 인식한다. 네트워크 카드의 모듈이 있는 곳은 /lib/modules/(커널버젼)/net 디렉토리
4] 커널 2.4의 모듈 디렉토리 구조 세분화
커널 2.4.0-test6-* 이상의 버전부터는 모듈이 위치하는 "/lib/modules/커널버전"의 디렉토리 구조가
더욱 세분화 되었다.
[root @edu00 /lib/modules/linux-2.4.0]#ls -l
lrwxrwxrwx 1 root root 26 Oct 4 17:09 build - > /usr/src/linux-2.4.0-test9/
drwxr-xr-x 6 root root 1024 Oct 4 17:09 kernel/
-rw-r--r-- 1 root root 1340 Oct 5 20:33 modules.dep
-rw-r--r-- 1 root root 3235 Oct 5 20:33 modules.pcimap
drwxr-xr-x 2 root root 1024 Oct 4 17:09 pcmcia/
위의 kernel 디렉토리에 들어가보면 다음과 같이 세분화 되어 있다.
[root @edu00 linux-2.4.0]#cd kernel
[root @edu00 kernel]#ls -l
drwxr-xr-x 3 root root 1024 Oct 4 17:09 arch/
drwxr-xr-x 8 root root 1024 Oct 4 17:10 drivers/
drwxr-xr-x 9 root root 1024 Oct 4 17:09 fs/
drwxr-xr-x 4 root root 1024 Oct 4 17:09 net/
drivers 디렉토리 구조를 보면 예전 모듈들의 디렉토리 구조가 이곳으로 옮겨 왔음을 알 수 있다.
[root@linux drivers]$ ls -l
drwxr-xr-x 2 root root 1024 Oct 4 17:09 block/
drwxr-xr-x 3 root root 1024 Oct 4 17:09 char/
drwxr-xr-x 2 root root 1024 Oct 4 17:09 ide/
drwxr-xr-x 2 root root 1024 Oct 4 17:09 net/
drwxr-xr-x 2 root root 1024 Oct 4 17:09 sound/
drwxr-xr-x 2 root root 1024 Oct 4 17:10 video/
5] 공유메모리
공유 메모리를 사용하기 위해서는 /var/shm(또는 /dev/shm)을 마운트 해야한다.
[root @edu00 /var]# mkdir /var/shm
[root @edu00 /var]# vi /etc/fstab
none /var/shm shm defaults 0 0
6] PCMCIA
소스로 커널 컴파일할 때 노트북 사용자는 pcmcia 소스를 따로 받아서 컴파일 해야한다.
소스 파일은 ftp://freshmeat.net 에서 검색어를 pcmcia로 한다.
[root@linux src]#tar xvzf pcmcia-cs-3.1.*.tar.gz
[root@linux src]#cd pcmcia-cs-3.1.15
[root@linux pcmcia-cs-3.1.15]#make config
[root@linux pcmcia-cs-3.1.15]#make all
[root@linux pcmcia-cs-3.1.15]#make install
12) 커널 이미지 복사
[root @edu00 linux-2.4]#cp arch/i386/boot/bzImage /boot/vmlinuz-(커널버젼)
컴파일 후 커널 이미지는 /usr/src/linux-2.4/arch/i386/boot에 위치한다.
13) System.map 파일 복사
[root @edu00 linux-2.4]#mv /usr/src/linux/System.map /boot/System.map-(커널버젼)
1] System.map
system의 H/W 정보, 새로운 device 추가시 kernel rebuild하고 재생성, kernel 변경
2] klogd
커널에 이상이 발생하면, 화면에 여러 가지 레지스터들과 그 16진수 내용에 대해 한 페이지의
정보가 출력된다. 만약에 System.map이 있다면, klogd는 16진수 주소를 그 주소가 나타내는 함수
이름으로 변환한다. 이 정보로 정확히 어느 위치에서 커널이 문제를 일으켰는지 판단할 수 있다. System.map이 없다면, 거의 필요없는 16진수 주소를 보게 된다. 이 값들은 각 기계마다 다르고,
커널 설정마다 다르다.
3] 부팅시의 문제
System.map 파일은 시스템 부팅시에는 어떠한 영향도 주지 않는다. System.map 파일이 없다면
시스템에 문제가 발생할 때 어떠한 단서도 주지 못할 것이라는 경고 메세지만 뿌려 준다.
4] 사용 방법
/etc/rc.d/init.d/syslog 파일에서 'daemon klogd' 로 시작하는 줄을 수정
daemon klogd -k /boot/System.map-'uname -r'
커널 버전을 확인하여(uname -r), 'System.map' 뒤에 붙인 후, 그 파일명을 –k 옵션을 주어 klogd로 넘기라는 의미이다.
14) System.map 링크
[root @edu00 linux-2.4]#ln -s /boot/System.map /boot/System.map-(이전 커널버젼)
15) lilo 설정 파일 수정
[root @edu00 linux-2.4]#vi /etc/lilo.conf
16) 설정 적용
[root @edu00 linux-2.4]#/sbin/lilo
17) 재부팅
[root @edu00 linux-2.4]#shutdown -r now
디바이스 관리
1. 디바이스 파일 관리
리눅스 시스템은 모든 디바이스를 /dev 디렉토리에 있는 파일로 관리한다. 이 디렉토리에는 디바이스 파일만이 존재해야 한다.
먼저 /dev 디렉토리에 정의된 디바이스의 특징들을 살펴보면 첫째는 가능한 모든 디바이스를 포함하고 둘째 만약 /dev 디렉토리에 해당 파일이 없으면 특정 디바이스에 대한 접근을 할 수 없으며 마지막으로 주의할 점은 /dev 디렉토리에는 드라이버가 구현되어 있지 않다는 것이다.
2. 디바이스 interface
리눅스 시스템은 device에 접근하기 위해 가상 파일 interface를 사용한다. 즉, 특정 device는 파일시스템의 단순한 파일처럼 취급되고 일반적인 유틸리티로 접근이 가능하다는 것이다. data를 device에 복사하기 위해 cp나 cat 명령을 사용할 수 있다는 의미이다.
device intertace는 /dev 디렉토리와 하위의 디렉토리에 있는 파일을 통해서 이루어진다. 일반적으로 두가지 유형의 device가 존재하는데, 파일 타입 c (character device)와 파일 타입 b (block device)를 의미한다. character device는 데이터 전송이 한글자씩 이루어지며 터미널, 시리얼, 패러럴 포트(마우스, 모뎀, 프린터 등), 마그네틱 테이프 등을 일컫는다. block device는 데이터 전송이 block 단위로 이루어진다. 여기에서 block이란 물리적인 의미이고 한번에 접근(읽거나 쓸 때) 가능한 데이터 단위이다. 논리적인 block은 커널의 버퍼용량과 관련이 있으며 데이터를 다루는 크기를 의미하며 논리적인 block size는 파일시스템에 의존한다.
일반적으로 모든 디바이스는 major number와 minor number라는 두개의 숫자로 정의된다. major number는 각각의 디바이스에 유일하게 부여되고, minor number는 같은 컨트롤러에 의해 제어되는 디바이스를 구분하는 식별자이다. 커널이 device file을 접근할 때 special block이나 character 속성을 인식하고 I/O 요청을 커널의 디바이스 드라이버로 방향을 재지정한다. 디바이스는 파일의 major number를 보고 선택되고 minor number가 각 디바이스의 인터페이스에 전달된다. minor number는 각각의 디바이스에 특징적으로 해석된다. 사실 디바이스 파일의 실제 이름은 직접적인 관계가 없다. major, minor가 특정 디바이스를 정의한다. 해당 시스템은 제각기 디바이스를 명명하는 자신만의 방식이 있다.
3. 유용한 devices
다음은 리눅스 시스템에서 표준화된 디바이스들이다.
/dev/null null device
/dev/tty 사용자 로그인 터미널을 위한 의사 디바이스
/dev/console 시스템 콘솔의 보통 이름
/dev/ttynn 직접 연결된 터미널
/dev/ttyxnn 다중 터미널 (x는 일반적으로 a, b 등등)
/dev/ttySnn 시리얼 포트
/dev/pts/nnn X-window와 네트워크 의사 터미널
/dev/fd0 플로피디스크의 일반적인 이름
/dev/ftape 테이프 드라이브의 link
/dev/hdx IDE 디스크
/dev/sdx SCSI 디스크
/dev/cdrom 보통 cd-rom 드라이브
/dev/mouse 마우스
/dev/lp0 패너럴 프린터 포트