글 : 배철수 / 리눅스월드 발행인
|
커널 2.4 컴파일 및 컴파일 시의 커널 옵션 선택 사항에 대한 내용을 간략히 기술한다.
1. 알림 이 글에서 커널 2.4를 컴파일하는 방법은 레드햇 6.2 영문판에서 커널 2.2.를 사용하고 있는 경우를 기준으로 했다. 다른 배포본이나 버전의 경우에는 이 설명이 맞지 않을 수도 있다. - 필자가 테스트한 환경이다. 1) CPU : 인텔 펜티엄 III
2. 관련 문서 아래 문서들을 필히 사전에 읽기 바란다. 1) 2.4 커널소스의 아래 문서 2) 핼프 사이트
3. 사전 절차 커널 2.2 사용자가 2.4로 업그레이드하기 위해서는
우선 아래 버전의 소프트웨어들이 필요하다. 1) Gnu C 2.91.66
# gcc --version “1)”에서 “3)”은 컴파일에 필요하다. “5)”는 모듈 사용시 필요하다. 다른 소프트웨어는 해당 기능을 사용한다면 업그레이드 해야 한다. 레드햇 6.2에서는 아래와 같다. ① gcc --version 따라서 모듈을 사용하기 위해서 modutils를 업그레이드해야 한다. 10) IP Masquerade를 사용한다면 ipchains는 사용할 수 없다. iptables를 설치해야 한다. * modutils-2.4.1 설치 1) 소스는 ftp.kernel.org 에 있다. /sbin 디렉토리에 아래 파일들이 위치한다. insmod/
4. 커널 컴파일 순서 4.1 커널 소스 설치 2.4 커널은 소스를 /usr/src/linux에 설치하지 말라고 나와 있다. 그러나 레드햇 6.2에서 커널 2.2를 사용하는 경우에는 2.4 커널 소스를 2.2와 같게 /usr/src/linux 에 넣어야 컴파일이 된다. 단 사용 중인 커널이 2.4인 경우는 다른 디렉토리에서도 컴파일이 되는 것 같다. 1) cd /usr/src 4.2 컴파일 /usr/src/linux 디렉토리에서 아래 순서로 실행한다. 1) make menuconfig 커널 이미지에 포함될 내용을 선택하는 부분이다. 아래에 자세히 설명한다. 2) make dep 컴파일이 끝나면 커널소스의
arch/i386/boot 디렉토리에 bzImage 라는 이름으로 5) make modules 모듈을 만든다. 6) make modules_install 커널모듈이 /lib/modules/2.4.0
디렉토리 이하에 설치되기는 하나 디렉토리 구조가 4.3 모듈 자동적재에 필요하다. 1) /etc/conf.modules를 /etc/modules.conf로
변경한다. 4.4 lilo 수정 아래는 각자의 lilo.conf에 따라 다를 수 있음. 여기서는 커널을 /boot에 bzImage 라는 이름으로 저장한 경우임. 1) cp /usr/src/linux/arch/i386/boot/bzImage
/boot .
. . . . . 5) lilo <enter> Added linux * 6) 리부팅 부팅이 끝난후 아래 명령을 주면 변경된 커널을 확인할 수 있다. [root@jinnee /root]#
uname -a 참고] 커널 2.4 부트 메시지 LILO Linux Lab VideoServer (http://www.linuxvideo.co.kr) boot: . . . . . . 생 략 . . . . .
< make menuconfig 에서 선택 사항에 대한 설명 > 아래는 메인메뉴이다. (1) Code maturity level options ** “(14)”는 “(1)”을 선택해야 나타난다. 각 메뉴 선택에 대한 간략한 설명이다.
1. Code maturity level options [*] Prompt for development and/or incomplete code/drivers 커널코드 중 아직 개발이 진행 중인 부분을 사용할 경우 이에 관한 메뉴를 선택메뉴에 나타낼지를 결정한다. 메뉴의 내용이 추가될 뿐이므로 선택하는게 좋다.
2. Loadable module support [ ] Enable loadable module support 모듈 자동적재(autoload) 기능을 사용하려면 셋 다 선택한다.
3. Processor type and features (Pentium-III) Processor family 자신의 CPU에 맞게 선택한다. 상위호환성이 있으나 그 역은 안된다. 즉 386을 선택하면 모든 CPU에서 사용이 가능하나, Pentium-III를 선택하면 펜티엄이나 486에서는 사용할 수 없다. 대부분의 배포본에 들어있는 커널은 386으로 지정되어 있다. Athlon/K7, Crusoe 칩도 선택할 수 있다. < > Toshiba Laptop support 인텔 IA32 계열 프로세서(Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon 등) 에서 마이크로코드를 업데이트 할 수 있다. /dev file system support를 필요로 한다. 마이크로코드는 커널에 들어 있지 않으므로 별도로 입수해야 한다. 자세한 사항은 http://www.urbanmyth.org/microcode/를 참고 한다. < > /dev/cpu/*/msr - Model-specific register support Model-Specific Registers (MSRs)를 접근하는데 필요하다. 멀티CPU 환경에만 해당한다. < > /dev/cpu/*/cpuid - CPU information
support x86 프로세서는 32비트이므로 최대 접근 가능 주소영역은 약 4기가이다.(2^32= 42억) 따라서 4기가를 넘는 메모리 영역은 영구매핑이 불가능하다. 이 메모리를 high memory라고 부른다. 이 영역을 사용하려 할 때 필요하다. 단 PAE (Physical Address Extension) 모드를 지원하는 CPU에서만 가능하다.(펜티엄 프로 이상) 메모리가 1가가 이하일 때는 off를, 1 ~ 4 기가는 4GB를, 4기가를 초과할 때는 64GB를 선택한다. 커널에서 물리적 메모리가 모두 인식되지 않으면 lilo.conf에 “mem=xxxM”를 넣는다. [ ] MTRR (Memory Type Range Register) support 펜티엄프로 이상의 CPU에서 PCI 또는 AGP 그래픽 카드를 사용할 경우 이미지 쓰기에서 전송속도를 2.5배 이상 증가시킨다. /proc/mtrr 파일을 통해 MTRR을 조절할 수 있다. X 서버에서 사용한다. Cyrix 6x86, 6x86MX , MII 에도 MTRR과 유사한 기능이 있다. [ ] Symmetric multi-processing support 2 개 이상의 CPU가 있을때만 선택한다.
4. General setup [*] Networking support :
필수 선택 [*] Support for hot-pluggable devices PCMCIA/CardBus support : <* > PCMCIA/CardBus support [*] System V IPC : 권장사항 none /dev/shm shm defaults 0 0 [ ] BSD Process Accounting (ELF) Kernel core (/proc/kcore) format
5. Memory Technology Devices (MTD) <*> Memory Technology Device (MTD) support 임베디드 시스템 등에서 하드디스크 대신에 사용되는 플래시롬, 램 등을 사용할 때 필요하다. 램디스크와는 관련이 없다. 잘 모르면 No [
] Debugging (NEW) < > Support for ROM chips
in bus mapping (NEW)
6. Parallel port support 피시의 패러랠포트에 연결되는 장치(프린터, 집드라이브, PLIP 등) 를 사용시 필요하다. <*> Parallel port support [ ] SuperIO chipset support
(EXPERIMENTAL) (NEW)
7. Plug and Play configuration : 권장 <*>
Plug and Play support
8. Block devices <*> Normal PC floppy disk support < > Network block device support NBD 장치는 메이저 43 장치 번호를 갖는다. brw-rw-rw- 1 root root
43, 0
Apr 11 00:28 nd0 nbd 사용을 위해서는 별도의 사용자 프로그램을 설치해야 한다.(서버 및 클라이언트용이 모두 필요하다.) Documentation/nbd.txt를 참고 하라. < > RAM disk support 메모리를 디스크로 사용하는 기법이다. 하드디스크에서
파일을 읽고 쓰는 것보다 속도가 훨씬 빠르다. 단 램디스크에 저장된
파일은 전원이 나가면 지워지므로 파일 내용이 변경되는 경우는
별도의 백업이 필요하다.
9. Multi-device support (RAID and LVM) [ ] Multiple devices driver support (RAID
and LVM) < > Linear (append) mode
< > Logical volume manager (LVM)
support [ ] LVM information in proc filesystem
10. Networking options <*> Packet socket [ ] Packet socket: mmapped
IO [* ] Routing messages (NEW) [* ] Network packet filtering (replaces ipchains)
[ ] Network packet filtering debugging (NEW) [ *] Socket Filtering <*> Unix domain sockets [*] TCP/IP networking [*] IP: multicasting [*] IP: advanced router echo “1” > /proc/sys/net/ipv4/ip_forward [ ] IP: policy routing
(NEW) [ ] IP: kernel level autoconfiguration
[ ] IP: BOOTP support
(NEW) < > IP: tunneling < > IP: GRE tunnels over
IP [ ] IP: multicast routing [ ] IP: ARP daemon support (EXPERIMENTAL) (NEW) [ ] IP: TCP Explicit Congestion
Notification support [ ] IP: TCP syncookie support (disabled per default) "SYN
flooding" 기법을 사용하는 DOS(denial-of-service) 공격시에서도
정당한 IP: Netfilter Configuration <*> Connection
tracking (required for masq/NAT) (NEW) <*> FTP protocol
support (NEW) < > limit
match support (NEW) < > The IPv6 protocol (EXPERIMENTAL)
echo 1 > /proc/sys/net/khttpd/start [ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) < > The IPX protocol <*> Appletalk protocol support < > DECnet Support < > CCITT X.25 Packet Layer (EXPERIMENTAL)
위 셋은 X.25
프로토콜과 관련있다. X.25는 프레임릴레이와 유사한 공중데이타망에 [ ] Frame Diverter (EXPERIMENTAL) 지역 네트워크로부터의
패킷을 실제로 의도하지 않은 다른 네트워크 인터페이스 장치로 < > Acorn Econet/AUN protocols (EXPERIMENTAL)
[ ] Fast switching (read help!) [ ] Forwarding between high speed interfaces
네트워크 장치가
패킷 전송시 FIFO 방식의 기존 패킷 스케쥴러를 사용하지 않고 다른 [*] QoS and/or fair queueing (EXPERIMENTAL) . . . . . . . 다음 호에 계속 |