>> Edit article
이름
제목
패스워드
: 안녕하세요.. : : 와우리눅스(6.02)2.2.14를 쓰고 있는 유저입니다.. : : 그런데..제가 요즘에 나오는 걸로 컴파일 해볼려고 합니다..(이유는 밑의 x서버설정 때문에..T_T) : : 그런데..검색을 해보니..2.2.14에서 한번에 요즘 껄로 커널컴파일하면.. : : 안된다고 하더라구요? : : 그래서 질문 드립니다.. : : 어떤커널을 먼저 하구 해야 하는지 좀 가르쳐 주십시요? : : 요번 기회에 커널컴파일 해 볼려구요..(되든지 안되는지-_-;) : : 꼭 좀 가르쳐 주세요... : : 컴파일 하는 법은 묻지 않을께요.. : : 알았죠? : : 꼭 좀 가르쳐 주시기 바랍니다.. : : -- : 삽질은 계속..T_T [ 커 널 컴 파 일 2.4.x.x ] 1. 커널 커널은 운영체제의 핵심입니다. 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스를 관리하고, 입출력을 처리하는 등 유저의 다양한 요구에 바로 반응합니다. 지금은 다양한 프로그램들을 포함하는 운영체제를 가리키기도 하는 Linux라는 이름도 커널에 붙여진 것입니다. 리눅스의 다른 프로그램처럼 커널도 소스 형태으로 배포됩니다. 커널 소스는 모든 배포판에 들어있으며 ftp나 BBS유저그룹을 통해 다운받을 수 있습니다. 컴파일을 위한 환경은 잘 만들어진 몇 가지 스크립트를 이용하여 쉽게 설정할 수 있고 커널 해킹을 위한 문서 또한 쉽게 구할 수 있습니다. 다른 부분과 마찬가지로 리눅스의 열린 정신이 커널을 빠르고 강하게 만듭니다. 커널 컴파일은 항상 심각하게 다루어지는 주제이지만 왜 컴파일을 굳이 하느냐고 묻는 이들도 많습니다. 대개의 리눅서들이 두 세 가지 정도 이유를 말하는데, 일반적으로 커널 컴파일은 시스템 최적화의 한 수단으로 쓰입니다. 배포판에 포함되어 있는 기본 커널에는 혹시 쓰일지도 모르는 다양한 기능들이 들어 있어 실제로 여러분에게 필요한 커널보다 크기도 크고, 때로는 약간 성능이 떨어질 수도 있습니다. 그래서 많은 리눅서들이 시스템에 가장 적합한 작은 커널을 새로 만들어 리눅스 박스의 성능을 최대로 끌어올리는 것입니다. 또 한가지 이유는 새 커널을 생성해 빠르게 등장하는 진보된 기능을 사용하거나 새로운 장치를 지원하는 것입니다. 그리고 리눅서는 기쁨을 얻습니다. 그래서 어떤 커널 매니아들은 커널 컴파일 자체에 더 큰 흥미를 가진 듯 보이기도 합니다. 1.1 두 가지 커널 버전 리누스(LinuS TorvaLdS)와 많은 해커들의 노력으로 커널은 매우 빠르게 진보하고 있습니다. 그러나 기능 향상을 위해 빠르게 성장하는 동안 문제가 발생하기도 합니다. 대부분 일반 사용자들이 해결할 수 있는 범위를 넘어서는 것들이어서, 개발자들은 안정성과 발전을 위해 리눅스 커널을 두 가지 버전으로 부릅니다. 새로운 기능들이 실험되는 개발과정의 커널을 개발버전(DeveLopmentaLverSio N)이라 부르며, 새로운 것에 열광적인 리눅서와 테스터, 개발자를 위한 버전입니다. 개발버전은 많은 테스트와 패치과정을 거쳐 안정버전(StabLe verSion or productioN)으로 일반 사용자들에 배포됩니다. 버전 번호 커널의 버전번호는 2.0.36또는 2.1.35와 같이 세 부분으로 구성되어 있습니다. 처음의 숫자는 커다란 변화가 있을 때 바뀌는 주 버전 번호입니다. 리눅스 커널의 2가 도스의 7보다 하찮게 느껴집니까? 버전 번호를 올리는 것은 개발자 마음이지만 버전번호가 모든 성능을 나타내는 것은 절대 아닙니다. 가운데 숫자는 짝수일 때 안정버전을 뜻하고 홀수일 때 개발버전임을 알려 줍니다. 마지막 숫자는 패치 레벨을 나타내는 서브 넘버입니다. 앨런 콕스의 커널버전 ac라는 꼬리를 붙여 리누스보다 먼저 커널을 내 놓는 이가 앨런 콕스입니다. 리누스가 새 커널 버전을 발표하기 전에 그보다 면저, 더 다양한 테스트해서 공개하므로, ac 커널이 더 새로운 기능들을 포함할 때가 많습니다. 2. 최신 커널 구하기 이 글을 쓰는 동안 최근 커널은 2.4.2 버전입니다. (이 글은 2.4.2 커널을 기초로 작성되었습니다.) 최신의 커널 소스를 구한다면 FTP사이트나 웹사이트를 통해 다운받습니다. 비교적 최근 배포판 CD-ROM을 가지고 있다면 그 안에서도 찾을 수 있습니다. 2.1 배포판 CD-ROM 리눅스 안정버전의 커널은 배포판 CD에 포함되어 있지만 아마 가장 최신의 커널은 아닐 것입니다. 레드햇 계열 국내에 가장 많은 사용자를 가진 레드햇 계열의 배포판에서 커널 소스는 CD-ROM의 RedHat/RPMS 디렉토리안에 헤더(예를 들어 kerneL-header-2.0.36-2.i386.rpm)와 소스(예를 들어 kerneL-Source-2.0.36-2.i386.rpm) 등 크게 두 부분으로 나뉘어 실려 있습니다. 커널 컴파일을 위해서는 두 패키지를 모두 설치해야 합니다. # rpm -q kerneL-source # rpm -Uvh kernel-header-2.2.14.i386.rpm # rpm -Uvh kerneL-source-2.2.14.i386.rpm 그 밖에도 여러가지 패키지들이 있는데 커널 컴파일을 위해 모두 필요한 것은 아닙니다. 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 데비안 배포판 데비안 배포판(최근 안정버전인 2.2 potato 버전을 바탕으로 글을 썼습니다)은 꼬리에 .deb라는 확장이름이 붙은 패키지 파일들이 있다. KLDP에서 한글 설정을 더해서 배포하는 포테이토는 모두 세 장인데 그 중 커널 소스는 첫 번째 디스크 /cdrom/dists/potato/main/binary-i386/ 아래 devel/ 디렉토리 안에 들어 있습니다. 커널 헤더는 세번째 디스크 /cdrom/dists/potato/main/binary-i386/devel 디렉토리에 들어 있습니다: 1: devel/kernel-source-2.2.17_2.2.17pre6-1.deb 1: misc/kernel-package_7.04.potato.3.deb 3: devel/kernel-headers-2.2.17_2.2.17pre6-1.deb 3: doc/kernel-doc-2.2.17_2.2.17pre6-1.deb 데비안 패키지를 설치할 때에는 "dpkg -i" 명령을 사용합니다: 첫 번째 시디롬을 넣고: # mount /cdrom # dpkg -i /cdrom/dists/potato/main/binary-i386/devel/kernel-source-2.2.17_2.2.17pre6-1.deb # eject 두 번째 시디롬: # dpkg -i /cdrom/dists/potato/main/binary-i386/devel/kernel-headers-2.2.17_2.2.17pre6-1.deb 세 번째 시디롬: # dpkg -i /cdrom/dists/potato/main/binary-i386/doc/kernel-doc-2.2.17_2.2.17pre6-1.deb 2.2 FTP Site ftp.kernel.org에 anonymous로 접속하여 /pub/linux/kernel디렉토리에서 리누스가 새로 발표한 커널 소스를 받을 수 있습니다. 그 밖의 미러 사이트: ftp://ftp.funet.fi/pub/linux/PEOPLE/linus/ ftp://sunsite.kren.ne.kr/pub/OS/ ftp://ftp.bora.net/pub/Linux/ ftp://ftp.kreonet.re.kr/pub/Linux/ ftp://ftp.hallym.ac.kr/Linux/ ftp://sunsite.unc.edu/pub/linux/kerneL/ ftp://updates.redhat.com/5.2/kernel-2.2/ 커널 소스와 함께 패치파일을 받는 것을 잊지 말아야 합니다. 2.3 리눅스 유저 그룹 천리안, 하이텔, 나우누리 등 PC통신망의 리눅스 유저그룹(동우회?동호회)의 자료실에서 다운 받을 수 있습니다. 일반 전화회선을 이용한 모뎀 사용자라면 인터넷을 통한 다운로드보다 오히려 빠르게 전송받을 수 있습니다. 커널 2.4.2는 25MByteS 정도 크기입니다. 3. 커널 소스 설치하기 이 절에서는 Tar-Ball(tar로 묶은 다음 gzip으로 압축한 패키지) 형태의 소스를 다운받아 적절한 곳에 풀어 놓고, 기초 환경을 구성하는 방법을 설명합니다. 3.1 컴파일을 위한 기본 도구 알아보기 새 커널을 컴파일하기 위해 업데이트가 필요한 라이브러리나 프로그램이 있는지 확인하여 필요하다면 새로 설치합니다. 그러나 모든 도구들이 반드시 필요한 것은 아닙니다. 예를 들어 pcmcia-cs는 pcmcia장비가 없는 시스템에서는 설치하지 않아도 됩니다. 여러분이 새 커널 소스를 /usr/src아래 설치하고 linux라는 이름으로 링크해 두었다면, 관련된 문서는 /usr/src/linux/Documentation/Changes입니다. 아래는 각 도구마다 최소한의 버전(2.4.2 커널을 위한)과 확인하는 방법입니다. 예를 들어 Gnu C의 버전을 확인할 때에는 "gcc --version"이라는 명령을 사용합니다. ---------------+---------------+-------------------------------------- 패키지 | 최소버전 | 확인하는 방법 ---------------+---------------+-------------------------------------- Gnu C | 2.91.66 | # gcc --version Gnu make | 3.77 | # make --version binutils | 2.9.1.0.25 | # ld -v util-linux | 2.10o | # fdformat --version modutils | 2.4.2 | # insmod -V e2fsprogs | 1.19 | # tune2fs reiserfsprogs | 3.x.0b | # reiserfsck 2>&1|grep reiserfsprogs pcmcia-cs | 3.1.21 | # cardmgr -V PPP | 2.4.0 | # pppd --version isdn4k-utils | 3.1pre1 | # isdnctrl 2>&1|grep version ---------------+---------------+-------------------------------------- 아래는 도구들을 구하는 인터넷 위치입니다. 파일 이름이나 버전 번호는 조금씩 달라질 수도 있습니다: modutils : 위치 - ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.4/ 파일 - modutils-2.4.2.tar.gz util-linux : 위치 - ftp://ftp.kernel.org/pub/linux/utils/util-linux/ 파일 - util-linux-2.10s.tar.gz E2fsprogs : 위치 - ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/ 파일 - e2fsprogs-1.19.tar.gz 혹은 1.19-0.i386.rpm 주의! sourceforge에서 ls 명령을 사용하지 말 것..^^ 파일과 디렉토리가 너무 많아 마치 다운된 듯 보일 수도.. Reiserfsprog : 위치 - ftp://ftp.namesys.com/pub/reiserfsprogs/ 파일 - reiserfs_utils-3.6.25-fsck-3.x.0b.tar.gz, reiserfsprogs-3.x.0d.tar.gz Pcmcia-cs : 위치 - ftp://pcmcia-cs.sourceforge.net/pub/pcmcia-cs/ 파일 - pcmcia-cs-3.1.24.tar.gz PPP : 위치 - ftp://linuxcare.com.au/pub/ppp/ 파일 - ppp-2.4.0b4.tar.gz Isdn4k-utils : 위치 - ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/ 파일 - isdn4k-utils.v3.1pre1.tar.gz 3.2 컴파일을 위한 기본 도구 설치하기 새 커널 컴파일과 모듈 설정에 쓰이는 도구들을 인터넷으로부터 가져왔다면 다음과 같은 과정을 거쳐 자신의 머신에 설치합니다. 예를 들어 /usr/local/src/kernel-2.4/util-linux-2.10s.tar.gz를 설치한다면: 1. 먼저 적당한 위치에 압축을 풀어놓습니다. # cd /usr/local # tar xvzf /usr/local/src/kernel-2.4/util-linux-2.10s.tar.gz 2. 아마 util-linux-2.10s라는 이름으로 새로운 디렉토리가 만들어지고 그 안에 소스 파일들이 놓일 것입니다. # cd util-linux-2.10s 3. 시스템 정보를 수집해서 컴파일을 위한 기초환경을 구성합니다. # ./configure 4. 3에서 생성한 Makefile등 설정파일을 이용해 컴파일하고 설치합니다. # make;make install 3.3 커널 소스 풀기 일반적으로 커널 소스는 /usr/src 디렉토리 아래 설치합니다. /usr/src 아래에는 실제 헤더, 커널이 설치된 디렉토리와 그 링크가 있습니다. 이전 커널이 들어있는 디렉토리에 대한 링크를 삭제하고(우선은 링크만 지웁니다) 새 커널 소스가 설치된 디렉토리를 Linux라는 이름으로 다시 링크합니다. # cd /usr/src # rm -f linux # mkdir linux-2.4.2 # tar xvzf linux-2.4.2.tar.gz linux-2.4.2 # ln -s linux-2.4.2 linux RPM(다른 머신에서 미리 컴파일된 바이너리 패키지)이나 dpkg, 혹은 Tar-Ball 형태의 바이너리를 설치하지 않고, 소스코드를 컴파일해야 한다면 /usr/src/linux아래 코드들을 참고합니다. 새로 설치한 커널 소스가 개발버전이라면 컴파일 후 정상적으로 작동되더라도 이전의 안정버전을 삭제하지 않도록 합니다. 3.4 커널 패치 패치파일은 diff 유틸리티를 이용하여 커널의 일부분을 수정합니다. 패치파일은 빠르게 갱신되며 새로운 패치파일은 이전 패치에 대한 정보를 포함하지 않습니다. 그러므로 패치레벨은 순서대로 모두 적용해야만 합니다. 패치가 많이 이루어진 후라면 커널 소스 전체를 다시 받는 것이 유리할 수도 있습니다. 커널 2.2.9에서 커널 2.4.2로 업그레이드하기 위해서 patch-2.2.10.gz, patch-2.2.11.gz 모두를 순서대로 적용해야 합니다. 아래에 예가 있습니다. 옵션 가운데 p0는 패치파일에 들어있는 경로에 대한 상대적인 위치를 뜻합니다. 예를 들어 패치파일 안에 패치할 대상이 들어 있는 디렉토리와 대상 파일을 "/u/howard/src/blurfl/blurfl.c"이라고 설정했다면 -p0는 "/u/howard/src/blurfl/blurfl.c", -p1은 "u/howard/src/blurfl/blurfl.c", -p4는 "blurfl/blurfl.c"가 됩니다. # cd /usr/src # ls linux linux-2.2.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.4.2.gz # gzip -cd patch-2.2.10.gz | patch -p0 # gzip -cd patch-2.2.11.gz | patch -p0 # gzip -cd patch-2.4.2.gz | patch -p0 많은 패치 작업은 셸의 for 명령을 이용해 자동화할 수 있습니다. # for LeveL in 10 11 12 ; do > gzip -cd patch-2.2.$[LeveL].gz | patch -p0 > done # /usr/src/linux/scripts 디렉토리에는 여러 단계의 패치 작업을 자동으로 실행하는 스크립트 patch-kerneL이 있습니다.patch-kerneL은 /usr/src 아래에 있는 커널 패치파일들과 커널 소스의 버전과 비교하여 순서에 따라 패치를 적용합니다. # cd /usr/src # ls linux linux-2.2.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.4.2.gz # linux/scripts/patch-kernel 패치가 성공했다면 패치 대상이 된 파일의 원본은 이름끝에 .orig를 붙여 백업됩니다. 패치 과정에서 문제가 생겨 실패했다면 실패한 파일 이름 뒤에 .rej를 붙인 파일을 만듭니다. *.rej파일을 살펴보고 패치 작업을 다시 수행합니다. # find /usr/src/linux/ -name "*.rej" *.rej 파일을 찾을 수 없고 패치가 성공했다면 *.orig파일을 삭제합니다. # find /usr/src/linux/ -name "*.orig" -exec rm -f {} ; 패치된 커널 소스 디렉토리 이름을 패치레벨 번호로 바꾸고 링크를 다시 설정합니다. # cd /usr/src # rm -f linux # mv linux-2.2.9 linux-2.4.2 # ln -s 3.5 한글 패치 최근 버전 커널에서는 한글 코드페이지와 로케일이 들어 있어 따로 패치하지 않아도 한글로 된 파일 이름 등을 사용할 수 있습니다. 3.6 make mrproper 이전에 설정한 정보를 지우거나 새로운 커널 소스를 가져다 컴파일 할 때에는 이 명령을 먼저 사용해야 합니다. 이전 커널을 컴파일할 때 만들어진 오브젝트 파일(*.o)과 의존성 설정, 컴파일 환경 설정값, 버전 정보 등 새로 시작하는 컴파일에 영향을 주는 이전 정보들을 삭제합니다. 이전에 설정된 컴파일환경을 재사용한다면 이 과정을 건너뜁니다. # cd /usr/src/linux # make mrproper 4. 컴파일 환경 설정 명령 이 문서는 IBM PC 스타일의 시스템을 가진 일반 사용자를 위한 컴파일 환경을 조언합니다. 알파 시스템이나 선 머신을 가지고 있다면 한글 리눅스 문서 프로젝트 팀의 홈페이지를 찾아가 봅니다. http://KLDP.org 4.1 미리 알고 있으면 좋은 것들 컴파일 환경 설정을 위해 하드웨어 구성 정보를 기록해둡니다. 사운드 카드, 네트워크 디바이스 등의 IRQ, I/O port, DMA addreSS, 그리고 비디오 카드 등 장치의 특성을 알고 있어야 합니다. 여러분의 시스템에 어떤 장치와 칩셋이 들어있는지 알아보려면 /proc/pci, /proc/sound, /proc/scsi/scsi 등 파일을 열어봅니다. 다음은 이 글을 쓰고있는 리눅스 박스입니다. PCI 버스를 지원하는 칩셋과 장치 몇 가지를 확인할 수 있습니다: l# cat /proc/pci PCI devices found: Bus 0, device 0, function 0: Host bridge: VIA Technologies VT 82C598 Apollo MVP3 (rev 4). Medium devsel. Fast back-to-back capable. Master Capable. Latency=16. Prefetchable 32 bit memory at 0xe0000000 [0xe0000008]. Bus 0, device 1, function 0: PCI bridge: VIA Technologies VT 82C598 Apollo MVP3 AGP (rev 0). Medium devsel. Master Capable. No bursts. Min Gnt=12. Bus 0, device 7, function 0: ISA bridge: VIA Technologies VT 82C586 Apollo ISA (rev 71). Medium devsel. Master Capable. No bursts. Bus 0, device 7, function 1: IDE interface: VIA Technologies VT 82C586 Apollo IDE (rev 6). Medium devsel. Fast back-to-back capable. Master Capable. Latency=32. I/O at 0x6400 [0x6401]. Bus 0, device 7, function 2: USB Controller: VIA Technologies VT 82C586 Apollo USB (rev 2). Medium devsel. IRQ 9. Master Capable. Latency=32. I/O at 0x6800 [0x6801]. Bus 0, device 7, function 3: Host bridge: VIA Technologies VT 82C586B Apollo ACPI (rev 16). Medium devsel. Fast back-to-back capable. Bus 0, device 11, function 0: Ethernet controller: AMD Unknown device (rev 82). Vendor id=1022. Device id=2001. Medium devsel. Fast back-to-back capable. IRQ 11. Master Capable. Latency=32. Min Gnt=24.Max Lat=24. I/O at 0x6c00 [0x6c01]. Non-prefetchable 32 bit memory at 0xed001000 [0xed001000]. Bus 0, device 12, function 0: Ethernet controller: DEC DC21140 (rev 34). Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=32. Min Gnt=20.Max Lat=40. I/O at 0x7000 [0x7001]. Non-prefetchable 32 bit memory at 0xed000000 [0xed000000]. Bus 1, device 0, function 0: VGA compatible controller: NVidia Unknown device (rev 21). Vendor id=10de. Device id=2c. Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=32. Min Gnt=5.Max Lat=1. Non-prefetchable 32 bit memory at 0xe8000000 [0xe8000000]. Prefetchable 32 bit memory at 0xea000000 [0xea000008]. 4.2 환경설정 인터페이스 환경 설정을 위한 인터페이스는 make config, make menuconfig, make xconfig 세 가지가 있습니다(이전 설정 정보는 그대로 둔 채 새로운 옵션들에 대해서만 물어보는 make oldconfig도 있습니다). make는 "makefile"에 서술된규칙을 이용하여 소스코드 파일들을 관리합니다. 최근 변경을 적용하여 소스코드를 오브젝트 파일로 컴파일하고 라이브러리 파일과 링크하여 실행 가능한 파일로 컴파일 하는 과정들을 자동으로 처리합니다. make config 또는 make oldconfig 행 단위로 환경 설정을 하는 make config는 bash나 csh에서 실행됩니다. 세부적인 설정을 할 수 있지만 가장 불편한 인터페이스로 잘 쓰이지 않습니다. 그러나 make oldconfig는 꽤 쓸만합니다. make menuconfig 아래는 메뉴식 설정화면의 한 예입니다. Linux Kernel v2.4.2 Configuration ---------------------------------------------------------------------------- +---------------------------- Console drivers ----------------------------+ | Arrow keys navigate the menu. <Enter> selects submenus --->. | | Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, | | <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. | | Legend: [*] built-in [ ] excluded <M> module < > module capable | | +---------------------------------------------------------------------+ | | | [*] VGA text console | | | | [ ] Video mode selection support | | | | <M> MDA text console (dual-headed) (EXPERIMENTAL) | | | | Frame-buffer support ---> | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------------------------------------------------------------+ | +-------------------------------------------------------------------------+ | <Select> < Exit > < Help > | +-------------------------------------------------------------------------+ 메뉴방식의 화면에서 단축 글쇠(노랗게 도드라진 글씨)와 방향키로 메뉴 사이를 옮겨 다닐 수 있습니다. "---->" 표시가 있는 곳에서 엔터키를 누르면 하위 메뉴가 열립니다. <ESC>를 두번 누르거나 <Exit>를 선택하면 상위 메뉴로 올라갑니다. <h>를 누르면 도움말을 볼 수 있습니다. <Tab> 키를 누르면 컨트롤 사이를 옮겨다닙니다. 질문에 대해 Y는 커널에 포함, N은 제외, M은 모듈을 뜻합니다. 설정 상태는 [ ] 또는 < > 안에*(선택), M(모듈), 빈칸(제외)로 표시됩니다. 모듈기능(M)은 "< >"으로 표시된 질문에만 쓸 수 있습니다. 설정이 끝났다면 메인 메뉴에서 "Save Configration to an ALternate FiLe"을 선택하여 설정 내용을 파일로 저장합니다. 저장된 파일을 읽어들일 때에는 "Load an ALternate Configration FiLe" 메뉴를 선택합니다. make menuconfig는 ncurses(new-curses) Library를 사용합니다. ncurses는 화면 입출력에 쓰이는 라이브러리입니다. ncurses가 설치되지 않았다면 실행되지 않는 프로그램들이 많으므로 반드시 설치합니다. # mount /mnt/cdrom # rpm -Uvh /mnt/cdrom/RedHat/RPMS/ncurses* make xconfig X 터미널에서만 사용할 수 있으며 마우스를 이용하여 설정합니다. make xconfig를 수행하기 위해서는 X 윈도우와TcL/Tk 인터프리터/툴킷 라이브러리가 반드시 필요합니다. 주 화면의 "Store Configurationto FiLe"항목에서 설정 내용을 파일로 저장할 수 있습니다. 컴파일 환경은 /usr/src/linux/arch/i386/config.in에 저장되어 있습니다. 디폴트 설정을 참고하고 싶다면 사본을 만들어 둡니다: # cd /usr/src/linux/arch/i386 # cp config.in{,.old} 5. 환경 설정 규칙: "내 커널은 내가 만든다" 커널은 시스템이 동작하는 동안 계속 메모리에 적재되어 있으므로 환경 설정이 매우 중요합니다. 다음 몇 가지 규칙을 잘 알고 반드시 지킵니다. 작은 것이 아름답다는 유닉스철학을 생각합니다. 필요 없는 드라이버는 모두 제거합니다. 모듈 기능은 반드시 켜둡니다. 모듈 로더 설정도 켭니다. 도움말은 항상 "확실하지 않으면" 기본 설정을 그냥 두라고 경고합니다. 모듈로 설정한 기능은 어떤 이름으로 컴파일 되는지 살펴봅니다. 모듈 이름은 <F1> 키를 눌러 도움말 상자에서 확인할 수 있습니다. 이 문서에서 설정한 환경을 자신의 시스템에 그대로 적용하는 것은 좋은 생각이 아닙니다. 이 문서는 표준적인 환경설정은 제안하지 않습니다. 모듈 기능은 매우 유용하지만 모든 옵션에 다 적용되는 것은 아닙니다. 모듈로 설정할 수 있는 것 가운데 어떤 것들은 커널에 내장하는 것이 좋을 수도 있습니다. 잘 모르는 기능은 커널 소스에 따라나오는 문서 등을 확인하여 익힙니다. 특정 하드웨어에 대한 문서는 drivers 아래 있습니다. 필요하다면 LDP, HOWTO, 뉴스그룹 기사, Readme, 메뉴얼 등 도움을 주는 많은 문서를 읽어봅니다. 특히 리눅스 커널 디렉토리 /usr/src/linux/Documentation 아래 문서들을 읽습니다. 6. Code maturity LeveL optionS 코드 성숙도(成熟度)에 관한 설정입니다. [*] Prompt for deveLopment and/or incompLete code/drivers Y를 선택하면 개발중인 새로운 기능과, 새로운 드라이버를 포함할 것인지에 대해 여러분에게 조금 더 많은 질문을 합니다. 시험적인 기능은 뒷부분에 "(EXPERIMENTAL)"이란 꼬리표가 붙습니다. 이 옵션을 켜 두었을 때 시스템 특성에 따라 에러가 발생하기도 합니다. 컴파일 과정이나 새 커널로 부트하는 과정에서 문제가 생겼는데 그 원인을 정확하게 알 수 없다면 이 옵션에 [N]를 설정해 봅니다. 이 기능을 선택하지 않아도 안정버전의 모든 기능을 사용할 수 있습니다. 7. LoadabLe moduLe SupporT 리눅스의 멋진 모듈기능에 대한 설정입니다. [*] EnaLbLe LoadabLe moduLe Support [ ] Set verSion information on aLL SymboLS for moduLeS [*] KerneL moduLe Loader EnaLbLe LoadabLe moduLe Support : verSion 1.2 이후부터 리눅스 커널은 모듈 기능을 이용합니다. 모듈을 이용하면 자주 쓰이지 않는 장치 드라이버나 기능들을 커널 바깥에 모듈로 만들어 두었다가 필요할 때에만 동적으로 메모리에 적재하여 사용합니다. 작업이 끝나면 메모리에서 다시 제거하므로 메모리를 효율적으로 사용할 수 있고, 커널 크기가 감소합니다. 또한, 모듈은 스스로가 컴파일되어 독자적인 기능을 가지므로 모듈로 설정한 기능에 변화가 있더라도 전체 커널에는 손대지 않을 수도 있습니다. 파일시스템, 장치 드라이버, 바이너리 포맷 등 많은 기능이 모듈을 지원합니다. 반드시 [Y]를 선택합니다. Set verSion information on aLL SymboLS for moduLeS : 다른 버전의 커늘에서 만들어진 모듈이나 커널과 함께 배포되지 않는 특별한 모듈을 사용할 수 있도록 하는 기능입니다. 일반적으로 [N]를 선택합니다. KerneL moduLe Loader : kerneld 데몬이 대체된 기능입니다. 모듈로 만들어진 기능을 필요할 때 적재하고 제거하는 작업들을 modprobe를 이용해 커널이 자동으로 관리합니다. 물론 적절한 옵션들도 덧붙입니다. 잘 모르겠으면 [Y]를 선택합니다. 8. ProceSSor type and featureS 컴퓨터의 중앙처리장치에 대한 기능들입니다. (K6/K6-II/K6-III) ProceSSor famiLy < > Toshiba Laptop support < > /dev/cpu/microcode - Intel IA32 CPU microcode support < > /dev/cpu/*/msr - Model-specific register support < > /dev/cpu/*/cpuid - CPU information support (off) High Memory Support (1GB) Maximum Physical memory [ ] Math emuLation [ ] MTRR (Memory Type Range RegiSter) Support [ ] Symmetric muLti-proceSSing Support (K6/K6-II/K6-III) ProceSSor famiLy : ( ) 386 ( ) 486 ( ) 586/K5/5x86/6x86/6x86MX ( ) Pentium-Classic ( ) Pentium-MMX ( ) Pentium-Pro/Celeron/Pentium-II ( ) Pentium-III ( ) Pentium-4 (X) K6/K6-II/K6-III ( ) Athlon/K7 ( ) Crusoe ( ) Winchip-C6 ( ) Winchip-2 ( ) Winchip-2A/Winchip-3 그럴 일은 없겠지만 자신의 CPU가 어떤 것인지 모른다면 386을 선택해도 잘 동작합니다. 386을 선택하면 인텔 계열의 모든 프로세서에서 동작하는 커널이 만들어집니다. 물론 정확한 설정이 더 좋습니다. 커널은 CPU 각각의 특성과 버그에 최적화될 것입니다. Toshiba Laptop support : Toshiba 노트북의 위력이 대단한가봅니다. 커널 옵션에도 들어 있네요. 여러분이 도시바 랩탑을 쓰고 있고, 이 옵션에 [Y]를 답하면, 바이오스 설정과 절전 옵션 등 Toshiba 랩탑을 위한 시스템 관리 모드를 사용할 수 있다고 합니다. /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 instruction 실행되게하기 위해 특정한 프로세서에서. 여러분의 시스템이 CPU가 두 개 이상인 멀티 프로세서 시스템이고 이 기능을 사용하는 프로그램이 있다면 [M]이나 [Y]를 선택합니다. (off) High Memory Support (X) off ( ) 4GB ( ) 64GB High Memory Support : 리눅스는 x86시스템에서 64 기가바이츠까지 물리적 메모리를 사용할 수 있습니다. 그렇지만, 비트 x86프로세서에서 주소 공간은 32비트이므로 최대 4 기가바이트까지만 지원합니다. 그런 이유로, 여러분이 물리적 메모리를 많이 가지고 있다 하더라도 모든 것을 커널에 의해 "영구적으로 사상(map)" 할 수는 없습니다. 영구적으로 지도를 만들 수 없는 물리적 메모리를 "상위 메모리 (high memory)"라 부릅니다. 모든 물리적인 RAM을 더해서 1 기가바이츠가 넘지 않는다면(앞으로도) "off"라고 답합니다. 대부분의 사용자에게 적당한 것이어서 기본값으로 설정되어 있다). 이 것은 결과를 낳는다 "3GB/1GB"로 쪼개는: 3GB는 사상된다 각 프로세스에 3GB 가상 메모리 공간 그리고 물리적 램이 1 이상 4기가바이츠 미만이라면 "4GB"를 선택합니다. 4기가바이트 이상 있다면 "64GB"를 선택합니다. 이 옵션은 인텔 PAE(Physical Address Extension)모드를 켭니다. PAE에는 3-레블 페이징이 있는데 리눅스에서는 모든 것을 지원합니다. Pentium Pro 이상의 인텔 프로세서에서는 모두 PAE를 지원합니다. 하지만 여러분의 프로세서가 PAE를 지원하지 않는다면 아마 부트조차 되지 않을 것입니다. 물리적 메모리는 커널에서 자동으로 그 크기를 감지하지만 부트 패러미터에 메모리 크기를 직접 지정할 수도 있습니다. (예를 들어 "mem=256M") 확실하지 않다면 (off)를 선택하는 것이 좋습니다. Math emuLation : 수치연산 보조프로세서(co-proceSSor 또는 부동소수점 연산기)가 없는 386, 486SX 시스템에서 코프로세서를 에뮬레이션하는 기능입니다. CPU 처리 속도나 능력이 매우 낮았던 때에 수치연산만 도와주는 전용 프로세서를 따로 구입해서 사용하던 때가 있었습니다. 펜티엄, 혹은 K6 이상 시스템을 사용한다면 [N]을 설정합니다. MTRR (Memory Type Range ReSiSter) Support : 인텔 Pentium II나 Penti um Pro, K6 시스템의 PCI나 AGP 버스 비디오 카드에 유용합니다. 이 기능은 이론상 이미지를 2.5배 이상 빨리 쓸 수 있도록 만든다고 합니다. MTRR이 없더라도 이 기능을 켜두는 것은 안전합니다.[Y] Symmetric muLti-proceSSing Support : SMP는 두 개 이상의 프로세서(CPU)를 사용하는 멀티프로세싱 시스템을 위한 설정입니다. CPU 각각에 대한 정보는 "cat /proc/cpuinfo" 명령이나 ktop 등 유틸리티로 볼 수 있습니다. 이 곳에 "Y"를 답하고 프로세서 패밀리 아래 "586" 또는 "Pentium"을 선택하면 486 아키텍쳐에서는 동작하지 않을 것입니다. 마찬가지로 "PPro" 아키텍쳐는 모든Pentium 기반의 보드에서 동작하지 않을 것입니다. SMP를 사용하기 위해서는 "Enhanced ReaL Time CoLck Support"도 [Y]를 선택해야합니다. 그리고, "Advanced Power Management" 코드는 diSabLe 시켜야 합니다. 싱글프로세서를 가진 시스템에서 이 기능을 사용하면 제대로 동작하지 않거나, 오히려 시스템이 느려질 수 있습니다. CPU가 하나라면 [N]. 9. GeneraL SetuP 네트워킹과 버스 프로토콜, 절전기능 등 시스템에 전반적으로 영향을 주는 설정들입니다. [*] Networking Support [ ] SGI ViSuaL WorkStaion Support [*] PCI Support (Any) PCI acceSS mode [*] PCI device name database [ ] EISA support [ ] MCA support [*] Support for hot-pluggable devices PCMCIA/CardBus support ---> [*] SyStem V IPC [ ] BSD ProceSS Accounting [*] SysctL Support (ELF) Kernel core (/proc/kcore) format <M> KerneL Support for a.out binarieS <*> KerneL Support for ELF binarieS <*> KerneL Support for MISC binarieS [*] Power Management BIOS Support [ ] ACPI support < > Advanced Power Management BIOS support Networking Support : 네트워크 없는 리눅스는 그 재미를 절반도 느낄 수 없습니다. 여러분이 네트워크에 대해 전혀 모르더라고 반드시 선택합니다. 네트워크에 연결되어 있지 않더라도 루프백기능에서 필요하며, 전화선을 통해 인터넷에 접속하는 SLIP, PPP diaL-up 네트워킹에서도 필요합니다. 어떤 프로그램들, 특히 X 윈도우용 프로그램들은 네트워크 기능의 설정되어 있어야 제대로 동작하는 경우가 많습니다. 이미 설치되어 있는 도구들이 새 커널에 있는 기능을 미처 지원하지 못할 수도 있으므로, 커널을 업그레이드할 때 네트워킹 툴 업데이트를 고려해야 합니다. [Y] SGI ViSuaL WorkStaion Support : 슈퍼 컴퓨터 크레이로 유명한 Silicon Graphics의 SGI 320이나 540 워크스테이션에서 리눅스를 사용한다면 [Y]를 답합니다. 다른 PC 보드에서는 동작하지 않을것입니다. 여러분 대부분은 "IBM PC 호환기종"이라 불리는 머신을 사용하고 있을테니 [N]를 답하는 것이 좋습니다. PCI Support : 대부분의 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로 돌아갑니다. 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 : MicroChanneL Architecture는 IBM PS/2 머신에서 찾아볼 수 있는데 국내에서는 잘 쓰이지 않습니다. [N]을 선택합니다. Support for hot-pluggable device : PCMCIA-나 PC-카드 등은 컴퓨터가 동작하는 동안 장치를 새로 꽂거나 뽑는 일을 할 수 있습니다. 이런 기능을 이용하는 장치로는 네트워크 카드, 모뎀, 하드 드라이브 등 여러가지가 있는데 대개 랩탑 컴퓨터에서 사용하고 있습니다. 요즘에는 데스크탑에서도 USB를 이용해 이런 기능을 제공합니다. HOTPLUG와 KMOD를 활성화하고 커널 모듈로 만든 다음 에이전트 소프트웨어 (http://linux-hotplug.sourceforge.net)를 가져와서 시스템에 설치해야합니다. PCMCIA/CardBus support : CardBus는 PC-카드를 위한 32 비트 버스 매스터링 아키텍쳐입니다. (원래 PCMCIA 표준 제품들은 16 비트 와이드 버스밖에 없습니다) 새로 나온 PC-카드 대부분은 CardBus 카드들입니다. PC-카드를 사용하려면 먼저 이 기능을 지원하는 소프트웨어를 (David Hind"s pcmcia-cs 패키지) 설치해야 합니다. 여러분에게 필요한 것인지 잘 모르겠다면 [Y] 또는 [M]을 선택합니다. [*] CardBus support [ ] i82365 compatible bridge support [ ] Databook TCIC host bridge support SyStem V IPC(Inter ProceSS Communication) : 프로세스 사이에서 동기화와 정보교환을 위한 라이브러리 함수와 시스템 콜 모음입니다. 대개 [Y]를 선택합니다. 특히, Dos emulator와 같은 프로그램을 사용하려 한다면 동기화를 위해 [Y]를 선택해야 합니다. 메모리에 적재되어 실행중인 프로그램이 프로세스이며 프로세스는 프로그램의 코드들과 프로그램 실행을 위한 다양한 값들을 포함하는 것으로 어떤 이들은 프로그램의 영혼이라 부르기도 합니다. 이 기능을 선택하면 커널이 18KB 정도 늘어나겠지만 반드시 [Y]라 답해야 합니다. BSD ProceSS Accounting : 프로세스가 끝날 때 커널에 의해 프로세스 정보가 파일에 추가됩니다. 프로세스 정보는 생성시간, 소유권, 커맨드 이름, 메모리 점유율, 터미널 제어 등이 포함됩니다. 이 옵션에 [Y]라 답하는 것이 여로모로 유용합니다. SysctL Support : sysctl 인터페이스는 커널컴파일 재질의나 시스템 재부팅 없이 실행중인 커널 매개변수를 동적으로 변경하는 방법을 제공합니다. 주 인터페이스는 시스템 콜로 이루어져 있지만, /proc 파일시스템이 설치되어 있다면 편집 가능한 sysctl 요소 트리가 /proc/sys 디렉토리 아래 생성됩니다. (특별히 바이너리가 필요한 경우를 제외하고 일반적으로 텍스트 포맷으로 구성됩니다) 이 기능을 선택하면 커널 크기가 8KB 늘어납니다. 그러나 인스톨/복구 디스크를 위해 사용하는 특수한 커널이나, 메모리가 매우 적은 시스템이 아니라면 [Y]를 선택하는 것이 좋습니다. 대표적인 sysctl 기능으로 /proc/sys/kernel/panic이 있습니다. panic에 0보다 큰 정수값을 설정하면 시스템이 멈추었을 때 정해진 시간(초)이 지나면 자동으로 리부트합니다. 0은 이 기능을 비활성화합니다. (ELF) Kernel core (/proc/kcore) format : "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를 그대로 두는 것이 좋습니다. KerneL Support for a.out binarieS : a.out(aSSembLer.output)은 ELF 이전에 쓰이던 바이너리로 점차 사라져 가는 포맷입니다. 대개 이 기능을 사용할 일이 없는데, 정말 필요하다면 모듈로 설정합니다[M]. KerneL Support for ELF binarieS : ELF(Executable and Linkable Format)은 서로 다른 OS나 Architecture에 호환이 될 수 있도록 표준화된 Binary File Format입니다. 또, ELF는리눅스 바이너리 포맷의 표준이기도 하므로 반드시 [Y]를 선택합니다. 리눅스 커널과 많이 쓰이는 모든 프로그램들이 ELF 포맷으로 컴파일 됩니다. ELF는 a.out에 비해 진보된 기능들을 포함합니다. 특히 a.out 포맷은 ELF의 공유 라이브러리의 동적 지원 기능이 없습니다. [Y] KerneL Support for MISC binarieS : Java, EmacS-LiSp, DOS 실행파일 등 을 커널 바이너리 클래스에 등록했다면 인터프리터를 거치지 않고 셸 프롬프트에서 파일 이름을 쓰는 것만으로 간단히 프로그램을 시작할 수 있습니다. [Y]라고 답했다면 "KerneL Support for JAVA binarieS", "kerneLSupport for Linux/InteLELF bianrieS" 기능은 필요 없습니다. 어떻게 해야 할지 모르겠으면 [Y]를 선택합니다. Power Management support : 컴퓨터를 끄거나 전력 소비를 줄이는 등 기능을 전원관리라 부릅니다. 여기에는 APM과 ACPI 두 가지 표준이 있습니다. 둘 가운데 어떤 것이든 원한다면 [Y]를 답하고 아래에서 적절한 옵션들을 선택합니다. 이 기능은 랩탑의 배터리처럼 시간 제한이 있는 전원장치를 가진 시스템에서는 매우 유용하지만 서버에서는 그다지 쓸모 있는 기능은 아닌 것 같습니다. 여러분의 서버가 슬립모드에서 깨어나는 동안 사용자들이 지쳐버릴지도 모릅니다. 이 옵션을 끄더라도 시스템을 멈추는 hlt 명령은 사용할 수 있습니다. ACPI support : 리눅스에서 ACPI/OSPM 지원기능은 현재 개발중입니다. 그래서 이 옵션은 아직 완전하지 않습니다. ACPI(Advanced Configuration and Power Interface)는 이전의 전원관리 표준보다 더욱 세세한 정보들을 다룬다고 합니다. ASPI/OSPM을 사용하려면 이 기능을 지원하는 하드웨어/펌웨어를 갖춘 시스템이어야 하는데, 잘 모르겠다면 [N]을 선택하는 것이 안전합니다. 9.1 APM Advanced Power Management BIOS Support : 노트북 등 전원관리가 필요한 시스템이라면 설정합니다. [ ] Ignore USER SUSPEND [ ] EnabLe PM 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) 9.2 사라진 것들.. PCI quirkS : BIOS가 깨어져 PCI 장치설정에 문제가 있다면 [Y]를 선택합니다. BIOS가 잘 동작한다면 [N]을 선택합니다. PCI bridge optimization (experimentaL) : CPU와 PCI, 또는 PCI와 ISA 사이에 브리지가 있어 서로 다른 버스사이에서 데이터를 전송할 수 있도록 논리적인 기능을 합니다. 마더보드에 이 기능을 담당하는 칩셋이 있어 PCI는 다른 다양한 버스구조를 가진 슬롯과 함께 쓰일 수 있습니다. 바이오스에 문제가 있고 PCI 버스를 사용한다면 이 기능을 선택해 장치 엑세스 속도를 향상시킬 수 있습니다. Backward compatibLe /proc/pci : 새로운 방법은 /proc/bus/pci를 사용합니다. 하지만 오래된 프로그램들을 가지고 있어 /proc/pci 파일에서 PCI 정보를 읽는다면 [Y]를 선택합니다. 확실하지 않다면 [Y]를 선택하는 것이 안전합니다. KerneL Support for JAVA binarieS : Java(TM)은 SUN에서 개발된 객체지향 프로그램 언어입니다. JDK를 설치하려는 자바 개발자가 아니라면 Java bytecode 바이너리는 모듈이나 [N]를 선택합니다. 10. Memory Technology Devices (MTD) < > Memory Technology Device (MTD) support Memory Technology Device (MTD) support : MTD는 임베디드 디바이스에서 고형체 파일시스템(solid state filesystem, 그러니까 뱅글뱅글 돌지 않는)을 구성하는데 사용하는 플래시 메모리, RAM, 그리고 그 비슷한 다른 칩셋 등 메모리 장치입니다. 확실하지 않으면 [N]을 선택합니다. 11. Parallel port support 병렬포트 프로토콜과 장치들을 지원합니다. < > Parallel port support < > PC-style hardware (NEW) [ ] Support foreign hardware (NEW) [ ] IEEE 1284 transfer modes (NEW) Parallel port support : PC의 패러랠 포트(구멍이 25개 있는 넓적한 커넥터)에 연결하는 프린터나 ZIP 드라이브, PLIP 링크(Parallel Line Internet Protocol; 패러랠 포트와 크로스 케이블을 이용해서 로컬 머신 둘을 연결하여 작은 네트워크를 만드는데 사용하는 프로토콜입니다) 등 장치들을 지원하는 옵션입니다. 이 옵션을 활성화하면 다양한 장치들이 커널을 통해 패러랠 포트 하나를 공유할 수 있습니다. 단, 여러분이 공유를 원한다면 모듈 지원 기능을 켜고, 모듈을 커널에서 관리하도록 설정한 다음, 장치 드라이버들을 모듈로 설정해야 합니다. 프린터, ZIP 드라이브 등 패러랠 포트를 이용하는 장치가 있거나 잘 모르겠으면 [Y]를 선택합니다. PC-StyLe hardware : PC 스타일 패러랠 포트를 가지고 있다면 [Y]를 답합니다. 모든 IBM PC 호환기종과 알파 시스템 몇 기종은 PC 스타일 병렬 포트를 가집니다. [ ] Use FIFO/DMA if available (EXPERIMENTAL) (NEW) [ ] SuperIO chipset support (EXPERIMENTAL) (NEW) Use FIFO/DMA if available (EXPERIMENTAL) : 요즘 나오는 대부분 칩셋이 프린팅 속도를 높일 수 있는 기능들을 지원하는데, 아마 여러분의 PC에서도 [Y]를 선택하는 것이 좋습니다. SuperIO chipset support (EXPERIMENTAL) : 확실하지 않다면 [N] Support foreign hardware (NEW) : 표준을 따르지 않는 패러랠 포트 형식을 지원합니다. 이 기능을 선택하면 퍼포먼스가 다소 떨어질 것입니다. 대부분의 사람들에게 필요 없는 기능입니다.[N] IEEE 1284 transfer modes (NEW) : 여러분의 프린터가 status readback이나 device ID, 혹은 EPP, ECP처럼 향상된 전송 모드를 지원한다면 IEEE 1284 전송 모드를 활성화합니다. 장치 번호는 "cat /proc/sys/dev/parport/*/autoprobe*" 명령으로 확인할 수 있습니다. 잘 모르겠으면 [N]을 선택하는게 안전합니다. 12. PLug and PLay SupporT 새로운 장치나, 없어진 장치에 대한 정보를 스스로 설정하는 PnP 기능을 사용하려면 설정합니다. [*] PLug and PLay Support <M> ISA Plug and Play support ISA Plug and Play support : 리눅서들의 골칫거리 가운데 하나였던 ISA PnP 장치에 대한 지원입니다. 요즘은 ISA PnP 장치들이 많지 않으므로 대개는 [N]를 선택해도 좋습니다. 다만, 오래된 ISA 사운드 카드나, 게임패드 등을 가지고 있다면 이 기능을 활성화합니다. 13. BLock deviceS 블록 디바이스는 플로피 디스크, 하드 디스크, 시디롬처럼 블록단위로 읽고 쓰는 장치입니다. <*> NormaL PC fLoppy diSk Support < > XT hard diSk Support <M> ParaLLeL port IDE device Support <M>Compaq SMART2 support < > Compaq Smart Array 5xxx support < > Mylex DAC960/DAC1100 PCI RAID Controller support <M> Loopback device Support < > Network bLock device Support < > RAM diSk Support [ ]InitiaL RAM diSk (initrd) Support NormaL PC fLoppy diSk Support: IBM PC나 그 호환기종에서 사용하는 일반적인 플로피 디스크 드라이브가 있다면 [Y]나 [M]을 선택합니다. XT harddiSk Support : XT라는 매우 오래된 8bit 시스템에 대한 설정입니다. 하드디스크 뿐만 아니라, XT 시스템과 286 AT 시스템을 위한 프로젝트도 있습니다. 여러분에게는 필요 없을 것입니다.[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"cpqarray.txt 이 보드가 없거나, 잘 모르겠으면 [N]. Mylex DAC960/DAC1100 PCI RAID Controller support : 블록 디바이스를 병렬로 연결해서 속도나 안정성을 높일 수 있는 PCI RAID 컨트롤러를 지원합니다. 대개는 고가의 서버에서나 볼 수 있는 장비인데, 이 컨트롤러가 없는 장치들은 소프트웨어 RAID를 이용해서 같은 일을 할 수 있습니다. 리눅스 커널에서 지원하는 소프트웨어 RAID를 사용하려면 [N]를 선택합니다. Loopback device Support : 루프백 디바이스는 파일을 블록 디바이스처럼 사용하는 기능으로 파일속에 파일시스템을 만들어서, 일반적인 블록장치처럼 마운트하여 사용할 수 있습니다. 특별한 파일시스템의 실험, CDROM을 굽기 전에 또는 플로피디스크로 옮길 이미지 테스트, 그리고 암호화 등에 유용합니다. 암호화를 바란다면, 먼저 ftp://ftp.replay.com/pub/crypto/linux/all나 ftp://verden.pvv.org/pub/linux/kerneli/v2.1/에서 커널패치를 구해서 설치하고, 여기서 [Y]를 선택합니다. 이 loop 디바이스는 네트워크에서 loopback 연결(127.0.0.1)과는 상관이 없습니다. 이 옵션을 활성화해야 하는 또 한가지 이유를 들자면, CD-Recorder나, CD-RW 등 특별한 장치가 없을 때 ISO 이미지 파일로 나눠주는 FTP버전 배포판들을 가져와서 CD로 굽지 않고 파일 그대로 보통 CD-ROM처럼 마운트하여 사용할 수 있습니다. 잘 모르겠으면 [Y]를 답해도 좋습니다. Network bLock device Support : 네트워크로 연결된 서버 또는루프백 서버의 파일시스템을 마운트하여 블록 디바이스(/dev/nd0,...)처럼 사용하는 기능입니다. 클라이언트와 서버는 TCP/IP로 통신합니다. 이 기능이 없더라도 NFS나 Coda를 사용하면 네트워크 파일시스템을 사용할 수 있습니다. 대개 [N]을 선택합니다. RAM diSk Support, InitiaL RAM diSk (initrd)Support : 램을 하드 디스크와 같은 블록 디바이스처럼 사용하는 기능입니다. Linux를 인스톨하는 동안 램에 작은 루트 파일시스템을 생성하기 위해 사용되기도 합니다. 대부분 사용자는 램 디스크 기능이 필요 없을 것입니다. [N] InitiaL RAM diSk (initrd) Support: 일반적인 부트 과정이 시작되기 전에 부트로더로부터 실행되는 램디스크입니다. 램 디스크는 일반적으로 "reaL" 루트파일시스템 등을 마운트하기 위해 필요한 모듈을 로드하기 위해 사용합니다. 대개는 [N], 잘 모르겠으면 [N]. 14. Multi-device support (RAID and LVM) RAID, LVM 등 다중 저장장치들을 지원합니다. [ ] MuLtipLe deviceS driver Support < > RAID support < > Linear (append) mode < > RAID-0 (Striping) mode < > RAID-1 (mirroring) mode < > RAID-4/RAID-5 mode < > Logical volume manager (LVM) support RAID support Support : 여러 개의 블록 디바이스를 하나의 커다란 블록 디바이스처럼 묶어 사용하는 기능입니다. 입출력이 분산되므로 디스크를 읽고 쓰는 속도가 훨씬 빨라져 다중사용자 시스템에 매우 유용합니다. RAID-0, RAID-1 (mirroring)은 일반적인 디스크보다 여러 면에서 위험하지만 RAID-5는 에러 복구가 가능하고 RAID-4의 문제점이었던 병목현상이 제거된 안정적인 모드입니다. Logical volume manager (LVM) support : 이 드라이버는 RAID와는 조금 다른데 하드 드라이브, 하드 디스크 파티션, 멀티플 디바이스 혹은, 심지어 루프 디바이스까지도 몇 개를 묶어 볼륨 그룹화하는 것을 지원합니다. 볼륨 그룹은 일종의 가상 디스크, 논리 볼륨은 볼륨 그룹 안에서 만들 수 있는 가상 파티션이라 생각할 수 있습니다. 볼륨 그룹이나 논리 볼륨은 만들어진 다음에도 크기를 조정할 수 있습니다. 논리 볼륨은 /dev/VolumeGroupName/LogicalVolumeName이라는 장치이름을 가집니다. 15. Networking optionS 네트워크 설정은 조금 까다롭습니다. 시스템을 정확히 이해하고 바른 설정을 해야 합니다. <*> Packet Socket [ ] Packet socket: mmapped IO [ ] KerneL/USer netLink Socket [ ] Routing meSSageS < > NetLink device emuLation [*] Network packet filtering (replaces ipchains) [ ] Network packet filtering debugging (NEW) [ ] Socket FiLtering <*> Unix domain SocketS [*] TCP/IP networking [*] IP: muLticaSting [ ] IP: advanced router [ ] IP: equal cost multipath (NEW) [ ] IP: use TOS value as routing key (NEW) [ ] IP: verbose route monitoring (NEW) [ ] IP: large routing tables (NEW) [ ] IP: kerneL LeveL autoconfiguration <M> IP: tunneLing < > IP: GRE tunneLS over IP [ ] IP: multicast routing [ ] IP: PIM-SM version 1 support (NEW) [ ] IP: PIM-SM version 2 support (NEW) [ ] IP: ARP daemon Support (EXPERIMENTAL) [ ] IP: TCP Explicit Congestion Notification support [ ] IP: TCP syncookie support (disabled per default) IP: Netfilter Configuration ---> < > The IPv6 protocoL (EXPERIMENTAL) [ ] IPv6: enable EUI-64 token format IPv6: Netfilter Configuration ---> < > Kernel httpd acceleration (EXPERIMENTAL) [ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) --- < > IPX: SPX networking (EXPERIMENTAL) <M> Appletalk protocol support < > DECnet Support < > 802.1d Ethernet Bridging < > CCITT X.25 Packer Layer (EXPERIMENTAL) < > LAPB Data Link Driver (EXPERIMENTAL) [ ] 802.2 LLC (EXPERIMENTAL) [ ] Frame Diverter (EXPERIMENTAL) < > Acorn Econet/AUN protocols (EXPERIMENTAL) < > WAN router [ ] Fast Switching (read help!) [ ] Forwarding between high Speed interfaceS QoS and/or fair sueing ---> Packet Socket : tcpdump처럼 매개 프로토콜 없이 직접 네트워크 장치와 통신하는 어플리케이션에서 사용됩니다. 잘 모르겠으면 [Y]를 선택합니다. Packet socket: mmapped IO : 이 옵션을 활성화하면 패킷 프로토콜 드라이버는 더 빠른 통신을 지원하는 IO 메커니즘을 사용할 것입니다. 잘 모르겠으면, [N] KerneL/USer netLink Socket : 커널의 어떤 부분들 또는 모듈과 유저 프로세 스 사이의 양방향 통신을 허락합니다. 유저 프로세스는 /dev 디렉토리로부터 읽거나 쓸 수 있습니다. routing meSSage 기능과 함께 네트워크 관련 정보를 알리기 위해 사용하고 IP: firewaLL packet netLink device 기능과 함께 가능한 공격에 대한 정보를 알리기 위해 방화벽 코드에서 사용합니다. arpd 데몬, 네트워크 링크 드라이버를 사용하기 위해서는 [Y]를 선택해야 합니다. 확실하지 않으면 [Y]를 선택합니다. Routing meSSageS : 네트워크 관련 라우팅 정보를 /dev/route에서 읽을 수 있게 하는 기능입니다. mknod("man mknod")로 메이저 넘버 36, 마이너 넘버 0인 스페셜 캐릭터 파일로 /dev/route를 만들면 이 파일을 읽어서 라우팅 정보에 대해 알아낼 수 있습니다. 하지만 이 파일에 쓰는 것은 모두 버려지므로 기록하는 것은 의미가 없습니다. 잘 모르겠으면 [N]. Netlink device emulation (NEW) : 이 옵션은 곧 사라지고 진짜 넷링크 소켓으로 바뀔 것입니다. 여러분이 사용하는 오래된 프로그램 가운데 이 기능이 필요한 것이 있다면 [Y]를 선택합니다. 잘 모르겠으면 [N]. Network packet filtering (replaces ipchains) : 넷필터는 이전 커널에서 방화벽, 혹은 메스커레이딩이란 이름으로 불리던 옵션들의 새 이름입니다. 넷필터는 리눅스 박스를 지나가는 네트워크 패킷을 걸러내고(filtering) 조각내기(mangling) 위한 구조(체제)입니다. 패킷 필터링의 일반적인 사용은 여러분의 리눅스 박스를 방화벽으로 만들어 로컬 네트워크를 인터넷으로부터 보호하는 것입니다. 방화벽으로 쓰일 때 이 기능을 "패킷 필터"라 부르며, 이 것은 사적인 네트워크 패킷을 형태(type), 근원(source), 목적지(destination) 등을 기초로 거절할 수 있음을 뜻합니다. 방화벽의 또 다른 형태는 "프록시-기반(proxy-based one)"인데, 더 안전하지만 침입하기 쉽고 설정이 까다롭습니다; 프록시는 네트워크 트래픽을 훨씬 더 자세하게 살펴서 손보며, 패킷 필터는 지원하지 않는 상위 레블 프로토콜에 대해서도 잘 알고 있습니다. 게다가 프록시 기반 방화벽은 종종 로컬 클라이언트에서 실행중인 프로그램을 바꿀 것을 요구합니다. 프록시 기반 방화벽은 커널에서 지원하는 것이 아니지만, 자주 패킷 필터와 조합해서 쓰이므로, 아무튼 이 옵션은 활성화하는 것이 좋습니다. 이 옵션은 또 하나 공인 IP 주소가 없는 로컬 네트워크 머신들을 인터넷에 연결할 때 여러분의 리눅스 박스를 게이트웨이(gateway)로 만들기 위해 쓰입니다. 이 것은 "매스커레이딩(masquerading)"이라 부르는데: 여러분의 로컬 네트워크에 물려 있는 컴퓨터들 가운데 하나가 바깥에(그러니까 인터넷에) 무엇인가를 보내려합니다면 공인 IP 주소를 가지고 있는 여러분의 게이트웨이 박스는 그 컴퓨터를 "가장(masquerade)"해서 대신 주고 받을 수 있습니다. 다시 말하면 바깥 목적지로 트래픽을 보내지만, 패킷이 방화벽 박스 자신으로부터 나온 것처럼 보이게 하려고 패킷을 조금 손봅니다. 두 가지 방법이 있는데: 바깥쪽 호스트가 응답한다면 리눅스 박스는 조용히 트래픽을 올바른 로컬 컴퓨터로 보냅니다. 이 방법은 여러분의 로컬 네트워크에 있는 컴퓨터들을 비록, 바깥쪽에 닿아 원하는 것들을 주고 받을 수 있더라도, 바깥 세상에서는 완전히 볼 수 없게 합니다. 심지어는 포트 포워딩이라는 메커니즘을 사용하면 서버들까지도 메스커레이딩을 통해 바깥쪽에 서비스를 제공할 수 있습니다. 요즘은 메스커레이딩을 NAT라고 부르기도 합니다 (Network Address Translation). 넷필터는 투명한 프록시(transparent proxying)에도 쓰입니다: 로컬 네트워크에 물린 머신이 바깥쪽 호스트에 연결하려 할 때, 여러분의 리눅스박스가 그 트래픽을 몰래 로컬 서버로 보내서 프록시 서버에 있는 캐시를 보여줍니다. 넷필터에는 이전에 메스커레이딩(ipmasqadm)이라 부르던 도구, 패킷 필터링(ipchains), 투명한 프록시(transparent proxying), 포트포워딩 메커니즘(portforwarding mechanisms, ipfwadm) 등 다양한 모듈들이 있습니다. 이제 ipchains는 "iptables"로 바뀌었습니다. 여러분이 넷필터를 사용하려면 아래에 "Fast switching"에는 꼭 [N]을 답하고 이 곳에 [Y]를 답해야 합니다. 빠른 스위칭은 넷필터를 우회하기 때문입니다. 여러분의 리눅스 박스를 라우터나 게이트웨이로 쓰려면 [Y]를 답하고 그냥 보통 호스트로 사용한다면 [N]을 답합니다. 잘 모르겠으면 [N]. Network packet filtering debugging : 넷필터 코드를 디버깅하는데 유용한 정보들을 추가합니다. 잘 모르겠으면 [N]. Socket Filtering : 리눅스 소켓 필터는 버클리의 패킷 필터로부터 파생된 것입니다. 이 곳에 [Y]를 답하면 사용자-공간 프로그램들이 아무 소켓에나 필터를 붙일 수 있고 그래서 소켓을 통해 얻은 데이터에 대해 형식을 정하고 허가/불가 등 정책을 커널에 말합니다. 리눅스 소켓 필터링은 지금 ICP를 제외한 모든 소켓에서 동작합니다. 잘 모르겠으면 [N]. Network aLiaSing : 네트워크 드라이버가 여러 개의 IP 주소를 가질 수 있도록 하는 설정입니다. 아파치 웹 서버를 이용한 웹 호스팅 서비스 등에 쓰입니다. 또는 이더넷 카드 하나로 여러개의 논리적인 네트워크에 연결할 때 쓰입니다. 속도가 느려지지만, 하나의 이더넷 카드로 매스커레이딩 서비스를 제공할 수도 있습니다. Socket FiLtering : 리눅스 소켓필터는 버클리 패킷필터에서 파생되었습니다. Unix 시스템은 소켓을 통해 프로세스 사이 통신이 이루어집니다. 이 기능을 선택하면 커널 수준에서 소켓을 조사하고, 허용하는지 마는지 지정할 수 있습니다. 리눅스 소켓 필터링은 TCP를 제외한 모든 종류의 소켓에 동작합니다. 잘 모르겠으면 [N]. Unix domain SocketS :소켓은 네트워크 연결을 개설하고 액세싱하기 위한 표준 장치(mechanism)입니다. 리눅스 박스가 어떤 네트워크에도 연결되지 않아도 X 윈도우 시스템이나 syslog 같은 많은 일반적인 프로그램이 소켓을 사용합니다. 이 기능을 모듈로 설정하고 모듈 적재를 잊으면(neglect to load the module) 몇 가지 중요한 서비스들이 제대로 동작하지 않을 것입니다. [Y]를 권장합니다. TCP/IP networking : 인터넷과 이더넷 등 거의 대부분 네트워크에서 사용하는 표준 프로토콜입니다. 인터넷 접속뿐만 아니라 다른 많은 프로그램에 꼭 필요하므로 더 말할 것도 없이 반드시 [Y]를 선택합니다. TCP/IP는 데이터 통신 프로토콜 모음을 가리키는 것으로, 그 가운데 가장 중요한 전송 제어 프로토콜(transmission control protocol)과 인터넷 프로토콜(internet protocol)에서 이름을 따 온 것입니다. IP: muLticaSting : 메시지를 미리 정한 여러 목적지에 보내는 기능입니다. 이와 다르게 broadcaSt는 네트워크 안의 모든 장치가 패킷을 수신합니다. 멀티캐스팅은 부서별 공지, 뉴스 푸시 등에 사용되기도 합니다. 잘 모르겠으면 [N]. [ ] IP: multicasting [ ] IP: muLticaSt routing [ ] IP: PIM-SM verSion 1 Support [ ] IP: PIM-SM verSion 2 Support IP: multicast routing : 리눅스 박스가 다수의 머신에 IP 패킷을 전송할 때 사용할 수 있습니다. MBONE, 오디오나 비디오 broadcast를 목적으로 구성된 높은 대역의 인터넷에서 사용됩니다. Multicast용 네트워크 카드 정보는 x Documentation/networking/multicast.txt에 있습니다. 대부분의 사용자에게 이 기능은 필요 없습니다. 잘 모르겠으면 [N]. IP: advanced router : 리눅스 박스를 주로 라우터로 사용할 계획이라면 설정합니다. 라우터는 패킷 경로를 제어하는 것으로 패킷을 어떤 게이트웨이로 보낼 것인지를 결정합니다. 라우터가 게이트웨이 역할까지 하는 경우가 많기 때문에 때로는 게이트웨이라
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved