Kernel Compile - 해당되는 글 3건

11). Network device support

- Network device support를 선택한 후에 Ethernet(10 or 100Mbit)에서 카드 선택

모    델

선 택   모 듈

3COM 3c900B

3C590/3c900 series "Vortex/Boomerang" support 선택(모듈명 3c59x.o)

3COM EtherLink III

3c509/3c579 support 선택(모듈명 3c509.o)

저가 ISA Ethernet Card

Other ISA CARD에서 NE2000/NE1000 support 선택(ne.o)

저가 PCI 10 Mega

PCI NE2000 support(ne2k-pci.o)

저가 PCI 100 Mega

RealTek 8129/8139 support(rtl8139.o)

홈 PNA 카드

AMD PCnet32 support(pcnet32.o)

Tulip 칩 카드

DECchip Tulip(dc21x4x) PCI support(tulip.o)

INTEL PCI

EtherExpress Pro/100 Support(eepro100.o)

12). Amateur Radio support

- 아마추어 햄 통신 라디오를 설정하고자 할 경우 선택하는 옵션

- [n]


13). IrDA(infrared) Support

- IrDA(무선 적외선 포트) 장치가 있을 시 선택하는 옵션

- irmanager와 irattach와 같은 utility가 필요

- [n]


14). ISDN Support

- [n]


15). Old CD-ROM drivers(not SCSI, not IDE)

- 2배속과 같은 구형의 CD-ROM을 사용하고자 할 때 리스트에 맞는 CD-ROM 선택

- [n]


16). Character devices

① Virtual terminal

- 가상 콘솔 사용 시 필요한 옵션

- 가상 콘솔은 ALT+(

      리눅스  |  2007. 10. 8. 12:35




Linux Kernel Compile


(Linux Kernel Version : 2.4.21-4)









.Contents


1. 소개

2. Linux Kernel 종류

3. Kernel Compile 순서

4. Kernel Option 설정 (make config)

5. Kernel 의존성 (make dep)

6. Kernel 클리닝 (make clean)

7. Kernel Image 생성 (make bzImage)

8. Kernel Compile (make install)

9. Kernel Moules 생성 (make modules)

10. Kernel 디렉토리 복사 (make modules_install)











Written by Seung Hwan, Chang

1. 소개

- 커널 컴파일(Kernel Compile)은 시스템을 Linux에서 최적의 상태로 설정하는 작업이다. 쉽게 말하자면 도스의 config.sys에 각종 주변기기 드라이버를 등록하고 시스템의 효율성을 향상시키고자 하는 작업이라 생각하면 된다.



2. Linux Kernel 종류

Kernel 종류

Production Version(안정버전)

Development Version

(테스트 버전, 개발버전)

라벨 Version 구분법

Even-Minor-Number : 1.2.x, 2.0.x, 2.2.x

ODD Number : 2.1.x, 2.3.x

설      명

테스트가 완료 되어 디버깅작업까지 해서 배포한 버전이기 때문에 안정적이다.

디버깅 작업이 완료 되지 않았기 때문에 버그가 생길 우려가 있는 불안정적인 버전이다.



3. Kernel Compile 순서

make mrproper → make menuconfig → make dep → make clean

→ make bzImage → make install → make modules → make modules_install



4. Kernel Option 설정(Make config)

1). 커널 옵션 설정 방법

커 널   설 정

방    법

실 행 장 소

특    징

make config

Console, X-Window

텍스트로 각 옵션 선택

make menuconfig

Console, X-Window

Ncurses 이용한 메뉴 선택 방식

make xconfig

X-Window 전용

Tcl/Tk 이용한 마우스 클릭 선택 방식

[root@ycarose linux]# make xconfig





2). 커널 옵션 설정 규칙

커널 옵션 설정 규칙

내      용

‘y', '*'

Kernel에 포함

‘m'

module로 지원

‘n'

사용하지 않음


3). 커널 옵션

- Linux를 지원하는 여러 기능 가운데 개발 단계에 있는 기능들이 있다. 이러한 기능들은 기능성, 안정성 그리고 Testing 수준이 일반적인 사용에 충분치 못해 안정적으로 배포되기 어렵다. 하지만 이러한 알파 테스트 수준의 기능들을 Kernel에 제공해서 관심있는 사용자들이 이러한 기능들을 테스트할 수 있게 하여, 보다 안정적인 버전으로 개발될 수 있는 실험적인 기회를 제공하는 옵션이다. 이 옵션을 ‘y' 처리하면 개발 단계의 기능들을 사용한다는 것을 의미하여, ’n'은 입증되어 안정된 기능만 사용함을 의미한다.

  따라서, Linux를 처음 접하는 사용자의 경우에는 가능한 이 부분을 ‘n'으로 선택하고, 보다 새로운 기능을 접해 보고자 할 경우에는 ’y'를 택한다.


4). 일반 설정(General setup)

① Network

- 네트워크 기능을 사용하고자 할 때 설정하는 옵션

- 네트워크로 연결되어 있지 않더라도 반드시 선택하는 것이 좋다.[y]


② PCI support PCI

- PCI 주변기기를 위한 옵션

- 설정하는 게 좋다.[y]

OPTION

내          용

선택여부

PCI access mode

 PCI 주변 기기를 탐색하는 방법

- “Bios" : 바이오스가 이용

- “Direct" : 바이오스 이용 안 됨

- “Any" : Kernel이 직접 탐색하고 실패할 경우 바이오스에 의해서 실행됨

[y]

PCI quirks

 BIOS 문제로 인하여 PCI 설정에 문제가 있을 경우 복구 할 때 사용

[y]

PCI bridge

optimization

 서로 다른 버스 사이에서 브리지를 통하여 데이터 전송을 할 수 있도록 해 줄 때 사용하는 옵션

[n]

Backward

compatible

/pro/pci

 PCI에 대한 정보를 /proc/bus/pci 로 기록하는데 기존에는 /proc/pci에 기록되었기 때문에 기존의 방식을 사용할 수 있도록 하기 위한 설정

[y]


③ MCA support

- IBM ps/2 기종과 랩톱(laptop)에서 지원되는 Micro Channel 아키텍처로 PCI 또는 ISA와 유사한 버스 시스템을 선택하는 옵션 [n]


④ SGI Visual Workstation Support

- SGI320/540 워크스테이션 기종에 적용되는 옵션 [n]


⑤ System V IPC

- 프로세스 사이에서 동기화 및 정보 교환을 위한 라이브러리 함수와 시스템 호출을 모아 둔 것 [y]


⑥ BSD Process Accounting

- BSD 계열 프로세스 어카운팅을 가능하도록 설정하는 옵션

- 선택 시 프로세스가 존재하는 시간에 사용자가 커널 프로세스 정보를 알 수 있다.

- [y]


⑦ Sysctl support

- 시스템을 재부팅하지 않고 시행중인 커널 매개 변수를 동적으로 변경

- /proc 파일 시스템이 설치되어 있다면 /porc/sys 디렉토리에 sysctl 엔트리가 생성

- 옵션 선택 시 8KB 정도의 메모리 차지

- [y]


⑧ Kernel support a.out/ELF/MISC/JAVA Binaries

- a.out : 슬랙웨어 바이너리 파일 형태인 ELF가 나오기 전의 바이너리로 요즘은 사용안함 [n]

- ELF : Linux 바이너리 표준 포맷 [y]

- MISC, JAVA : 선택하지 않는다. [n]

⑨ Parallel port Support

- 로컬 프린터 사용 여부 선택 옵션 [n]


⑩ Advanced Power Management BIOS support

- ATX 파워를 사용하고 있는 시스템에 전원 관리 기능 [y]

- Enable console blanking using APM [y]

- Use real mode APM BIOS call to power off [y]


5). Plug and Play Support(PnP 지원)

- Plug and Play 지원을 위한 기능 [y]


6). Block Devices

① Normal PC floppy disk support

- 플로피 디스크 드라이브 사용 여부 선택 옵션 [y] or [m] or [n]


② Enhanced IDE/MFM/RLL disk/CD-ROM/tape/floppy support

- EIDE 하드 디스크 및 CD-ROM 등을 사용하기 위한 옵션 [y]

OPTION

선 택 여 부

Use old disk-only driver on primary interface

[n]

Include IDE/ATA-2 DISK support

[y]

Use multi-mode by default

아래와 같은 메시지 발생 시  선택할 것

had: set_multmode: status=0x51 { DriveReady SeekComplete Error }

had: set_multmode: error=0x04 { DriveStautsError}


③ Auto-Geometry Resizing support

- 자동으로 지오메트리의 크기를 변경할 때 사용하는 옵션 [n]


④ Include IDE/ATAPI CD-ROM support

- EIDE CD-ROM 드라이브를 사용할 때 설정하는 옵션 [m]


⑤ Include IDE/ATAPI TAPE support

- 백업 테이프를 설정하는 옵션

- 백업 마그네트 테이프 장치가 없는 경우 [n]


⑥ SCSI emulation support

- IDE-CD-ROM과 같이 IDE 주변기기를 SCSI 장치처럼 사용할 수 있도록 에뮬레이트해주는 옵션

- CD-RW를 사용 시 [m]

⑦ CMD 640 Chipset bugfix/support

- CMD 640 Chip을 탑재한 마더보드를 사용할 경우 심각한 데이터를 상실시킬 수 있는 결함이 있을 때 이러한 문제를 해결하기 위한 옵션

- 해당 마더보드의 사용 여부에 따라서 옵션 선택


⑧ RZ1000 Chipset bugfix/support

- RZ1000 Chip의 결함을 해결하고자 할 때 선택


⑨ Generic PCI IDE chipset support

- 마더보드의 IDE Chip에 의해서 DMA 기능을 사용하기 위해서는 이 기능을 선택

- DMA 33 이상의 하드 디스크를 사용한다면 옵션 선택 [y]

OPTION

내          용

선택여부

Sharing PCI IDE

interrupts support

IDE Chip이 다른 주변기기와 같은 IRQ 사용을 허용할 때 사용하는 옵션

[y]

Generic PCI bus-master

DMA support

DMA를 지원하는 하드일 경우 선택하는 옵션으로 CPU의 부하를 줄일 수 있다.

[y]

Use DMA by default

when available

기본적으로 DMA 기능을 사용하기 위한 옵션

[y]

Boot off-board chipsets

first support

마더보드에 내장되어 있는 IDE 커넥터 외에 PCI 카드 커넥터를 사용하는 경우 PCI 카드의 커넥터의 인터페이스 ide0, ide1로 부여하는 옵션

[y]

and

[n]

CMD 64x chipset

Support

CMD 64x Chip을 사용한 보드의 경우 선택


HPT 366 chipset

support

High Point 370 Chip을 사용하는 ATA100 컨트롤러 카드를 사용한다면 옵션을 선택한다.

[y]

Intel PIIXn chipset

support

Intel 440BX, LX Chip을 사용하는 보드를 지원하는 옵션


VIA82CXXX chipset

support

샘물 테크의 야누스 KT133 보드를 사용하거나 VIA 칩을 사용하는 보드인 경우에 옵션 선택



⑩ Loopback device support

- 파일 속에 파일 시스템을 만들어 마운트 하여 사용하도록 파일을 블록 디바이스처럼 사용할 수 있도록 해주는 기능

- 특정한 파일 시스템 테스트 또는, CD-ROM 이미지 테스트 등에 유용하게 사용됨

- [m]


⑪ Network Block device support

- 네트워크로 연결된 서버의 파일 시스템을 마운트 하여 블록 디바이스처럼 사용하고자 할 때 사용하는 옵션

- 이 옵션을 사용하지 않아도 NFS 서비스를 이용 가능하다

- [n]

⑫ Multiple device driver support

- RAID 기능을 사용하고자 할 때 선택하는 옵션 [y]


⑬ RAM disk support

- RAM을 하드 디스크와 같이 블록 디바이스로 사용하고자 할 때 사용하는 옵션 [n]


⑭ XT hard disk support

- 286 컴퓨터에 사용되는 XT 하드 디스크를 지원하는 옵션 [n]


⑮ Mylex DAC'960/DAC1100 PCI RAID Controller support

- 카드 사용 여부에 따라서 선택


⑯ Parallel port IDE device support

- 패러럴 장치를 사용하는 CD-ROM이나 하드 디스크를 지원하는 옵션 [n]


⑰ Compaq SMART2/CISS Array support

- 해당 Compaq 장치 사용 여부에 따라서 선택


7). Networking options

7-1. Packet socket

- tcpdump와 같이 커널에서 실행되는데 중간 네트워크 프로토콜이 없이 직접 네트워크 디바이스와 직접 통신하는 프로그램에 의해서 사용되는 패킷 프로토콜로 이 옵션 선택

- [y]


7-2. Kernel/User netlink socket

- 커널의 어떤 부분 또는 모듈과 사용자 프로세스들 사이의 쌍방향 통신이 가능하도록 해주는 것

- 라우팅 메시지와 함께 커널은 네트워크와 관련된 정보를 제공해 주고, IP: Firewall packet netlink device 와 함께 외부로부터의 공격에 대해서 정보를 제공해 주는 옵션

- [y]


7-3. Routing messages(new)

- 커널에서 네트워크와 관련된 정보를 보고자 할 때 선택하는 옵션

- [y]


7-4. Netlink device emulation

- Routing messages 옵션을 선택 시 [y]


7-5. Network firewalls

- 네트워크 보안에서 중요하며, 네트워크 기능을 사용한다면 기본적으로 선택해줌

- [y]


7-6. Socket Filtering

- 사용자 공간 필터를 소켓에 연결할 수 있도록 해 주고, 패킷 통과를 허용하거나 거부할 수 있도록 해 줌


7-7. Unix domain sockets

- 소켓들은 네트워크 접속이 이뤄지게 하고 접근될 수 있도록 하는 표준 유닉스 메커니즘으로 엑스 윈도우 시스템이나 syslog와 같은 프로그램들은 이 소켓을 이용할 때 사용하는 옵션

- [y]


7-8. TCP/IP Networking

- [y]


7-9. IP : multicasting

- 네트워크상의 여러 컴퓨터에 동시에 같은 자료를 전송할 수 있도록 해주는 기능

- 주로 인터넷 방송국과 같은 스트리밍 서비스를 하는 MBONE에 접속하기 위해서 필요한 옵션

- [n]


7-10. IP : advanced router

- 해당 시스템이 네트워크 패킷들을 포워드해주거나 재분배하는 기능을 갖는 라우터로 작동할 때 사용하는 옵션

- [n]


7-11. IP : Kernel-level configuration support

- 커널이 부팅될 때 IP와 라우팅 테이블을 자동으로 설정 할 수 있도록 하는 옵션

- 디스크가 없는 Linux 시스템이 네트워크 부팅 될 수 있도록 하기 위해서 필요한 옵션

- 네트워크 Ethernet booting을 하지 않을 경우 옵션을 절대로 선택하지 않는 게 좋다.

- 이 옵션을 선택하는 경우 커널 부팅 시 네트워크부팅 설정을 하기 위해서 오랜 시간 동안 멈추는 현상이 있다.

- [n]


7-12. firewalling

- 보안 관련 옵션

- [y]

7-13. firewall packet netlink device

- ipchains 도구를 사용하여 모든 패킷이나 일부 패킷들을 복사할 수 있고, 사용자 공간을 모니터링 하는 프로그램에 방화벽을 두어 공격을 감시하고, 다른 사이트의 관리자에게 호출과 같은 행동을 할 수 있는 옵션

- [y]


7-14. transparent proxy support

- 보안 관련 옵션

- 방화벽을 통하여 로컬 네트워크에서 발생되는 네트워크 트래픽을 투명하게 리다이렉트하도록 하고 원격 호스트들은 투명 프록시 서버로 향하도록 하고자 할 때 사용된다.

- 로컬 호스트들은 원격 호스트와 연결되어 있다고 생각하지만, 실제로는 지역 프록시 서버에 연결되어 있다.

- [y]


7-15. IP Masquerading

- 보안 관련 옵션

- 내부 네트워크의 호스트들이 리얼 아이피를 보유한 것처럼 가장시켜 인터넷이 될 수 있도록 해주는 기능

- 하나의 전용선으로 여러 호스트들이 함께 사용하고자 할 때 선택하는 옵션

- [n]


7-16. IP : ICMP Masquerading

- 마스커레이딩을 하는 경우 TCP와 UDP를 지원하는데 이 옵션을 선택 시 ICMP 패킷까지 사용할 있다.

- ping을 사용 시 옵션 선택

- [y]


7-17. IP : masquerading special modules support(New)

- 마스커레이드 환경에서 외부의 TCP 및 UDP 패킷들이 마스커레이드 된 내부 호스트로 전달되지 못하므로 이를 위해서는 중계 역할을 하는 기능들을 필요로 하고자 할 때 선택하는 옵션

- [y]


7-18. IP : optimize as router not host

- 라우터를 사용하여 네트워크 패킷들을 포워드 시키거나 재분배하는 경우에 선택하는 옵션

- copy and checksum 기능은 작동하지 않고 라우터의 작동에 대해서 최적화되므로 라우터를 사용하지 않는다면 해당 옵션을 선택하지 않는다.

- [n]


7-19. IP : tunneling

- 하나의 프로토콜 안에 다른 프로토콜 자료를 캡슐화 하여 서로 다른 프로토콜 사이에서 전송하는 기능

- Mobile 쪽에서 사용한다.

- [n]


7-20. IP : aliasing support

- 하나의 Ethernet 카드에 여러 개의 IP를 할당하여 사용하고자 할 때 선택하는 옵션

- [n]


7-21. IP : GRE tunnels over IP

- GRE(generic routing encapsulation)는 시스코 라우터 사용 시 유용하며, 멀티캐스트 및 IPV6를 지원하지만 일반적으로 이 옵션은 선택하지 않는다.

- [n]


7-22. IP : ARP daemon support

- 소규모의 네트워크상에서 아이피와 하드웨어 주소의 맵을 커널에서는 내부적인 캐시로 유지하는데 사용되는 옵션

- 대규모 네트워크상에서는 바람직하지 않다.

- [n]


7-23. IP : TCP syncookie support(not enabled per default)

- TCP/IP의 결점을 악용하여 서버에 접속할 수 없도록 하는 SYN attack을 막기 위한 옵션

- [y]


7-24. IP : Reverse ARP

- Ethernet 카드가 가지고 있는 유일한 하드웨어 어드레스를 가지고 IP를 알아 낼 수 있는 프로토콜을 RARP(Reverse Address Resolution Protocol)이라 한다. 이러한 기능을 사용하도록 하는 옵션

- 디스크가 없는 호스트에서 부팅 시 아이피 주소를 알아내기 위한 옵션

- [n]


7-25. Allow large windows(not recommended if <16Mb of Memory)

- 데이터 전송에 있어서 상대방이 데이터를 받을 때까지 전송하는 컴퓨터에는 데이터들이 남아 있어야 하는데 이 옵션을 선택 주게 되면 주어진 시간 내에 많은 데이터들이 전송될 수 있도록 좀 더 큰 버퍼를 이용하게 된다. 단 네트워크 버퍼에 보다 많은 메모리가 소진되기 때문에 16메가 이상의 컴퓨터에서 이 기능이 잘 작동 될 수 있다.

- [y]


7-26. The IPv6 protocol

- IPv6 체계의 IP 주소가 활성화 되어 있지 않기 때문에 해당 옵션을 사용 하지 않는다.

- [n]


7-27. The IPX protocol

- 노벨 네트워크 프로토콜을 사용할 때 필요한 옵션

- [n]


7-28. Appletalk DDP

- 애플 컴퓨터를 위한 네트워크 프로토콜을 위한 옵션

- [n]


7-29. CCITT X.25 Packet Layer

- X25 망을 사용할 때 필요한 옵션

- [n]


7-30. LAPB Data Link Driver

- [n]


7-31. Bridging

- Linux 박스에서 하나의 Ethernet을 Bridge로 하여 Ethernet Network를 연결코자 할 때 필요한 옵션

- [n]


7-32. Frame Diverter

- [n]


7-33. 802.2 LLC

- [n]


7-34. Acorn Econet/AUN protocols

- [n]


7-35. WAN router

- 상고마(Sangoma) 내장형 라우터라 불리는 싱크보드(SyncBoard)를 사용하고자 할 때 필요한 옵션

- [n]


7-36. Fast switching

- tulip Ethernet 카드가 지원하는 NIC끼리 직접 데이터를 빠르게 전달하고자 할 때 사용함. advanced router 옵션과 함께 사용할 수 있다.

- 방화벽이 있을 경우 사용하지 않는다.

- [n]


7-37. Forwarding between high speed interfaces

- tulip chip을 사용한 Ethernet 카드에 적용되는 기능

- [n]


7-38. CPU is to slow to handle full bandwidth

- CPU가 네트워크 전 대역폭을 감당하기에 충분히 빠르지 않다고 판단될 때 설정

- 기가바이트의 Ethernet으로 연결된 상태가 아니라면 선택 불필요한 옵션

- [n]


7-39. QoS and/or fair queueing

- 패킷 스케줄에 따라 패킷을 제어할 때 사용되는 옵션

- [n]


8). 텔넷포니 지원(Telephony support)

- 음성 전화 카드를 가지고 있을 시 선택 옵션

- 보이스 모뎀과는 관계가 없다

- [n]


9). SCSI support

- 스카시 디바이스를 사용코자 할 경우 선택 옵션

- EIDE CD-RW를 설정하기 위해서는 SCSI generic support 옵션을 선택할 것, 단 SCSI CD-ROM support는 선택하지 않는다.

- [y]


10). I2O support

- Intelligent Input/Output(I2O)는 전용 I/O 프로세서를 가지고 있어 CPU가 I/O 처리를 잃지 않도록 해서 입출력 속도를 내고자 할 때 사용

- 옵션을 사용하기 위해서는 이러한 아키텍처를 지원하는 인터페이스 Adapter Card를 갖고 있어야 한다.

- [n]


11). Network device support

- Network device support를 선택한 후에 Ethernet(10 or 100Mbit)에서 카드 선택

모    델

선 택   모 듈

3COM 3c900B

3C590/3c900 series "Vortex/Boomerang" support 선택(모듈명 3c59x.o)

3COM EtherLink III

3c509/3c579 support 선택(모듈명 3c509.o)

저가 ISA Ethernet Card

Other ISA CARD에서 NE2000/NE1000 support 선택(ne.o)

저가 PCI 10 Mega

PCI NE2000 support(ne2k-pci.o)

저가 PCI 100 Mega

RealTek 8129/8139 support(rtl8139.o)

홈 PNA 카드

AMD PCnet32 support(pcnet32.o)

Tulip 칩 카드

DECchip Tulip(dc21x4x) PCI support(tulip.o)

INTEL PCI

EtherExpress Pro/100 Support(eepro100.o)

12). Amateur Radio support

- 아마추어 햄 통신 라디오를 설정하고자 할 경우 선택하는 옵션

- [n]


13). IrDA(infrared) Support

- IrDA(무선 적외선 포트) 장치가 있을 시 선택하는 옵션

- irmanager와 irattach와 같은 utility가 필요

- [n]


14). ISDN Support

- [n]


15). Old CD-ROM drivers(not SCSI, not IDE)

- 2배속과 같은 구형의 CD-ROM을 사용하고자 할 때 리스트에 맞는 CD-ROM 선택

- [n]


16). Character devices

① Virtual terminal

- 가상 콘솔 사용 시 필요한 옵션

- 가상 콘솔은 ALT+(

      리눅스  |  2007. 10. 8. 12:23




Contents

1 필요한 것들 다운받기
2 커널 소스 풀기
3 커널 패치 하기
4 커널 설정하기
4.1 현재 커널 설정 가져오기
4.2 커널 설정하기
5 커널 빌드하기
6 마지막 확인
7 커널 테스팅(?) 팁
8 Nvidia 그래픽 카드 유저들에게

  • P.S. 1 원문에서는 커널 2.6.14를 다뤘지만 현재 (2006년 1월 15일) 최신 버젼은 2.6.15이기에 이하 2.6.15로 통칭합니다.
  • P.S. 2 이 문서는 http://ubuntu.or.kr/wiki.php/KernelHowTo 의 내용과 거의 동일 하나 좀더 간략하고 최신 것인데다가 패치 하는 법과 추천 커널 옵션도 나와 있어서 번역하였습니다.
  • P.S. 3 현재 (2006년 1월 26일) 2.6.15.1 버젼이 나왔지만 이 버젼을 사용할때는 ck 패치셋이 안 먹힐 가능성이 있으니 패치를 하시려면 2.6.15 버젼을 사용하세요.
  • P.S. 4 최신 커널은 언제나 www.kernel.org 에서 찾을 수 있습니다.

원문 : Rúben Gonçalves http://ubuntuforums.org/showthread.php?t=84174
번역 : handrake http://ubuntu.or.kr/wiki.php/handrake

이 하우투 문서에서는 2.6.15 (우분투 5.10에 있는것보다 더 최신의) 바닐라 커널 (아무런 패치도 가하지 않은 깨끗한 버젼이라는 뜻)을 어떻게 컴파일/설치하고 Kon Colivas의 성능 패치셋을 적용하는지에 대해 다룰 것입니다.

- 이 패치들은 데스크탑 시스템의 반응 속도를 향상시키기 위해 제작되었습니다. 하지만 다른 경우에도 적용이 가능합니다. -

- These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. -
(Con Kolivas 웹사이트에서 발췌)


1 필요한 것들 다운받기 #


터미널에 다음과 같이 칩니다.
bash:~$ sudo apt-get install build-essential bin86 kernel-package
bash:~$ sudo apt-get install libqt3-headers libqt3-mt-dev (make xconfig을 위해서 필요합니다.)

커널과 패치를 자신의 홈디렉토리에 다운 받습니다.

2 커널 소스 풀기 #


커널 소스를 /usr/src로 옮깁니다.
bash:~$ sudo cp linux-2.6.15.tar.bz2 /usr/src
/usr/src로 이동합니다.
bash:~$ cd /usr/src
압축을 풉니다.
bash:~$ sudo tar -xvjf linux-2.6.15.tar.bz2
새로 생성된 디렉토리 이름을 바꿉니다. (바닐라 커널과의 구분을 위한 것으로 보입니다. 디렉토리 명은 그대로 커널 이름이 됩니다. 어디까지나 --append-to-name으로 덧붙여 주지 않을 때 이야기입니다만.)
bash:~$ sudo mv linux-2.6.15/ linux-2.6.15ck7
linux 심볼릭 링크가 존재한다면, 지웁니다.
bash:~$ sudo rm -rf linux
(역자주 : 여기서 굳이 -rf 옵션으로 다 지울 필요가 있는지는 모르겠습니다. rm linux로 링크만 제거해줘도 무방할 듯 합니다.)

새로운 심볼릭 링크를 생성해 2.6.15 커널 소스를 링크합니다.
bash:~$ sudo ln -s /usr/src/linux-2.6.15ck7 linux


3 커널 패치 하기 #


/usr/src/linux 디렉토리로 이동합니다.
bash:~$ cd /usr/src/linux
루트로 로긴합니다.
bash:~$ sudo -s -H
Password:
패치를 적용합니다.
bash:~$ sudo bzcat /home/username/patch-2.6.15-ck7.bz2 | patch -p1
( patch 명령어를 어떻게 쓰는지 더 자세히 알고 싶으시면 이곳을 참고하세요. )


4 커널 설정하기 #


4.1 현재 커널 설정 가져오기 #

bash:~$ uname -r
2.6.12-10-386
현재 어떤 커널이 올라와 있는지 알 수 있습니다. (필자의 경우에는 2.6.12-10-386)
bash:~$ sudo cp /boot/config-2.6.12-10-386 .config
를 실행해 설정(config) 파일을 가져와서 새 커널 설정의 토대가 되도록 합니다. (맞는 설정 파일을 선택하는 것을 잊지 마시고요)

4.2 커널 설정하기 #

bash:~$ sudo make xconfig

여러분이 필요한대로 커널 설정을 바꾸고 다음의 설정을 추가로 해주는 것도 좋습니다.

"General Setup"에 다음을 활성화 시킵니다. (체크 표시를 하세요)

-Support for paging of anonymous memory (swap)
--Support for prefetching swapped memory

"Processor type and features"에서는
- 자신의 CPU에 맞는 Processor Family를 선택하시고, 다음을 활성화 시킵니다.
-Preemption Model
--Voluntary Kernel Preemption (Desktop)

-High Memory Support
--off - 램이 1 GB 미만이라면
--1GB Low Memory Support - 램이 1 GB 일때
--4GB - 램이 1 GB 이상일때

-Timer frequency
--1000 Hz

"Device drivers"에서 "Block devices"의 "IO Schedulers"에 간다음, "CFQ I/O scheduler"만 키고 다 끄는게 성능 향상을 위해 좋습니다.

"Kernel hacking"에서 "Kernel debugging"를 끕니다.

Ctrl+S로 설정을 저장하고 윈도우를 닫습니다.


5 커널 빌드하기 #


터미널에서 현재 /usr/src/linux에 루트 권한으로 있는지를 확인합니다.

여기서는 우분투에서 설치 될 수 있는 ".deb" 파일을 make-kpkg를 사용해 빌드 하겠습니다.

터미널에 다음의 명령을 입력합니다.
bash:~$ make-kpkg clean
bash:~$ make-kpkg -initrd --revision=ck7 kernel_image
만약 아무런 에러가 발생하지 않는다면 /usr/src 디렉토리에 ".deb" 파일이 생길 것입니다.

설치하기 위해서는 다음과 같이 합니다.
bash:~$ sudo dpkg -i kernel-image-2.6.15-ck7_ck7_i386.deb
나중에 제거해야 할 필요가 생긴다면 간단하게
bash:~$ sudo dpkg -r kernel-image-2.6.15-ck7
하시면 됩니다.


6 마지막 확인 #


이제 재부팅하면 새로운 커널로 부팅될 것입니다.
bash:~$ uname -r
2.6.15-ck7
로 새 커널이 제대로 적용되었는지 확인해 봅니다.


7 커널 테스팅(?) 팁 #


gana코코넛님이 알려주신 방법입니다.

커널을 테스트하기 위해서 뭔가 바꿀 때마다 전체 커널을 컴파일 하는 것은 시간이 너무 오래 걸리기 때문에 바람직하지 않습니다. 그보다는 모듈로 만들어서 컴파일 후 내렸다 올렸다 하면서 컴파일 하는게 편합니다. 그렇게 하기 위해서는 우선 make xconfig나 make menuconfig에서 해당되는 것을 모듈로 만든다고 설정하고 (m으로 되어 있어야 함) 커널 컴파일 후에, (여기서는 키보드 드라이버를 디버깅 한다고 가정합니다.)
 $ make modules SUBDIRS=drivers/input/keyboard
이렇게 하면 해당 디렉토리에 ko 파일이 만들어 집니다. (예를 들어 atkbd.ko) 그러면 그 디렉토리로 가서
$ rmmod atkbd.ko && insmod atkbd.ko 
를 실행시킵니다.


8 Nvidia 그래픽 카드 유저들에게 #


Nvidia 드라이버를 설치하기 위해서는 다음의 링크를 따라가 보시기 바랍니다. ( 이미 /usr/src/linux에 소스가 있으므로 linux-headers를 새로 설치할 필요가 없습니다.)


Rúben Gonçalves
      리눅스  |  2007. 10. 8. 12:03



sokoban's Blog is powered by Daum & Tattertools