Trans:GentooX86Handbook1-7

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

커널 설정하기

시간대

먼저 시간대를 설정해서 시스템이 어디에 있는지를 알도록 하는 것이 필요합니다. /usr/share/timeinfo 의 시간대를 확인하고 /etc/localtime에 복사합니다. 기대하던 지역을 이름으로 표시하지 못하는 /usr/share/zoneinfo/Etc/GMT* 이름을 가진 시간대는 피해주시기 바랍니다. 예를 들어 GMT-8은 실제로는 GMT+8 입니다.


코드 예제 1.1: 시간대 정봇 설정하기
# ls /usr/share/zoneinfo

(Europe/Brussels를 사용한다고 가정합니다)
# cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime
(다음은 시간대를 설정합니다)
# echo "Europe/Brussels" > /etc/timezone


소스 설치하기

커널 선택하기

주변에 빌드한 모든 배포판의 핵심은 리눅스 커널입니다. 이는 사용자 프로그램과 여러분의 시스템 하드웨어 사이에 있는 계층입니다. 젠투는 사용자에게 최대한 다양한 커널 소스코드를 제공합니다. 설명을 포함한 전체 목록은 [젠투 커널 안내서]에 있습니다.

x86-기반 시스템에서 저희는 gentoo-sources(특별한 기능에 대해 커널 소스를 패치했습니다)를 사용합니다.

커널 소스를 선택하시고 emerge를 사용해서 설치합니다.


코드 예제 2.1: 커널 소스 설치하기
# emerge gentoo-sources


/usr/src를 들여다보면 여러분의 커널 소스를 가리키는 linux 심볼릭 링크를 볼 수 있습니다. 이 경우 설치한 커널 소스는 gentoo-sources-2.6.34-r1 를 가리킵니다. 버전이 다를 수도 있다는 점을 염두에 두시기 바랍니다.


코드 예제 2.2: 커널 소스 심볼릭 링크 보기
# ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-2.6.34-r1


이제 커널 소스를 설정하고 컴파일 할 차례입니다. 이를 위해 설치 CD에서 사용하는 것과 같은 일반적인 커널로 빌드할 genkernel을 사용할 수 있습니다. 어쨌든 여러분의 환경을 최적화 하는 최고의 방법으로서 "수동" 설정을 먼저 설명하도록 하겠습니다. 커널을 직접 설정하고 싶다면 기본: 수동 설정하기로 계속 진행하도록 합니다. genkernel을 사용하고 싶다면 대안: genkernel 사용하기로 대신 진행하도록 합니다.

기본: 수동 설정하기

개요

커널을 직접 설정하는 것은 종종 리눅스 사용자가 해왔던 일중에 가장 어려운 일로 보입니다. 아니라고 생각하는 것은 덜 진실적이지요 -- 몇 번 커널을 설정하고나면 어려웠던걸 기억하지 못할 것입니다 ;)

이제 올바른 프로세서 계열을 선택합시다.


코드 예제 3.2: 올바른 프로세서 계열 선택하기
Processor type and features --->
  (Change according to your system)
  (Athlon/Duron/K7) Processor family


다음 Maintain a devtmpfs file system to mount at /dev을 선택하여 시동과정에 중요한 장치 파일을 미리 사용할 수 있게 합니다.


코드 예제 3.3: devtmpfs 지원 활성화
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs


이제 File Systems로 가서 여러분이 사용하는 파일 시스템 지원을 선택합니다. 모듈로 컴파일 하지 마십시오. 그렇게 하지 않으면 젠투 시스템은 여러분의 파티션을 마운트 하지 못할 것입니다. 또한 Virtual memory/proc file system.


코드 예제 3.4: 필요한 파일시스템 선택하기
File systems --->
(Select one or more of the following options as needed by your system)
  <*> Second extended fs support
  <*> Ext3 journalling file system support
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  ...
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Enable GPT partition label support if you used that previously)
  Partition Types --->
    [*] Advanced partition selection
      ...
      [*] EFI GUID Partition support


인터넷에 연결할 때 PPPoE를 사용하거나 전화걸기 모뎀을 사용하신다면 커널에서 다음 옵션이 필요할 것입니다.


코드 예제 3.5: PPPoE에 필요한 드라이버 선택하기
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports


두개의 압축 옵션은 문제가 되지 않겠지만 꼭 필요한 것은 아니며, 커널 모드 PPPoE를 수행하도록 설정했을 때 ppp만이 사용할 PPP over Ethernet 옵션의 역할을 하지 않기도 합니다.

필요하다면 이더넷 카드에 대한 지원을 커널에 포함하는 것을 잊지 마시기 바랍니다.

하이퍼스레딩(tm)을 지원하는 Intel CPU 을 가지고 있거나 다중 CPU 시스템을 가지고 있다면 "Symmetric multi-processing support"를 활성화 하십시오.


코드 예제 3.6: SMP 지원 활성화하기
Processor type and features  --->
  [*] Symmetric multi-processing support



참고: 다중코어 시스템에서는 각각의 코어를 하나의 프로세서로 계산합니다


4GB 이상의 RAM을 가지고 있다면 "High Memory Support (64G)"를 활성화 할 필요가 있습니다.

(키보드나 마우스 같은)USB 입력 장치를 사용한다면 이것들 또한 활성화 하는것 잊지 마시기 바랍니다.


코드 예제 3.7: 입력 장치에 대한 USB 지원 활성화하기
Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support


랩톱에서 PCMCIA지원을 사용하시려면 여러분의 시스템에 있는 PCMCIA 카드 브릿지 지원에 대한 활성화를 잊지 마시기 바랍니다.


코드 예제 3.8: PCMCIA 지원 활성화
Bus options (PCI etc.)  --->
  PCCARD (PCMCIA/CardBus) support  --->
    <*> PCCard (PCMCIA/CardBus) support
(select 16 bit if you need support for older PCMCIA cards. Most people want this.)
    <*>   16-bit PCMCIA support
    [*]   32-bit CardBus support
(select the relevant bridges below)
    *** PC-card bridges ***
    <*> CardBus yenta-compatible bridge support (NEW)
    <*> Cirrus PD6729 compatible bridge support (NEW)
    <*> i82092 compatible bridge support (NEW)


커널 설정이 끝나면 컴파일하고 설치하기로 계속 진행합니다.

컴파일하고 설치하기

이제 커널을 설정했으니 컴파일하고 설치할 차례입니다. 설정을 빠져나오고 컴파일 과정을 시작합니다.


코드 예제 3.9: 커널 컴파일하기
# make && make modules_install


커널 컴파일이 끝나면 커널 이미지를 /boot에 복사합니다. 선택한 커널에 대해 여러분이 적당하다고 생각하는 아무 이름을 사용하고 여러분의 부트로더를 설정할 때 다음에 필요할테니 기억해두도록 합니다. kernel-2.6.34-gentoo-r1의 커널 이름과 커널 버전을 바꾸어 놓았음을 기억합니다.


코드 예제 3.10: 커널 설치하기
# cp arch/x86/boot/bzImage /boot/kernel-2.6.34-gentoo-r1


(선택 사항) Initramfs 빌드하기

(/usr나 /var 같은)중요한 파일시스템의 위치가 나누어 놓은 파티션에 위치하는 특별한 파티션 배치를 사용한다면, initramfs를 설치해서 필요로 하기 전에 마운트 할 수 있도록 설정할 필요가 있습니다.

initramfs를 빼면 분할된 파일시스템에 있는 정보를 필요로 하는 파일시스템을 마운트하는 역할을 하는 도구로서 시스템이 시동하지 않는 피해를 입습니다. initramfs는 init 도구로 제어권을 넘기기 전에 커널을 올바로 시동한 다음에 바로 사용할 압축 파일에 필요한 파일들을 끌어다 넣을 것입니다. 그 다음 initramfs의 스크립트는 시스템 시동을 계속하기 전에 파티션을 올바르게 마운트 했는지 확인할 것입니다.

initramfs를 설치하려면 genkernel를 먼저 설치합니다. 그 다음 생성한 initramfs를 획득합니다.


코드 예제 3.11: initramfs 빌드하기
# emerge genkernel

-# genkernel --install initramfs


lvm과 raid같이 initramfs에 특별한 지원이 필요하다면 genkernel에 적당한 옵션을 추가합니다. 자세한 정보는 genkernel --help를 보거나 LVM과 소프트웨어 raid(mdadm)를 활성화 하는 다음 예제를 보시기 바랍니다.


코드 예제 3.12: LVM과 소프트웨어 raid 지원과 함께 initramfs 빌드하기
# genkernel --lvm --mdadm --install initramfs


initramfs는 /boot에 저장될 것입니다. 간단하게 initramfs로 시작하는 파일을 조회하는 것으로 파일을 찾을 수 있습니다:


코드 예제 3.13: initramfs 파일 이름 확인하기
# ls /boot/initramfs*


대안: genkernel 사용하기

이 장을 읽고 있다면, 커널을 설정하기 위해 genkernel 스크립트를 선택하신 것입니다.

이제 커널 소스트리를 설치했고, 여러분을 위해 자동으로 커널을 빌드해주는 genkernel 스크립트를 사용하여 커널을 컴파일 할 차례입니다. genkernel은 설치 CD 커널을 설정한 것과 같은 거의 이상적인 방법으로 커널을 설정하여 동작합니다. 이는 커널을 빌드하기 위해 genkernel을 사용하면 여러분의 시스템에서는 설치 CD가 동작하는 것과 같이 일반적으로 모든 하드웨어를 시동 시간에 감지할 것입니다. genkernel은 어떤 수동 커널 설정도 필요로 하지 않기 때문에, 자신의 커널을 컴파일 하는 것이 익숙하지 않은 사용자에게는 이상적인 해결책입니다.

이제 genkernel 사용 방법을 보도록 합니다. 먼저 genkernel 빌드를 이머지합니다.


코드 예제 4.1: genkernel 이머지하기
# emerge genkernel


이제 genkernel all을 실행하여 커널 소스를 컴파일합니다. 아시다시피 genkernel이 거의 모든 하드웨어를 지원하도록 컴파일 할 때, 이 컴파일은 끝내기까지 좀 시간이 걸립니다!

참고로 부트 파티션이 ext2나 ext3를 파일시스템으로 사용하지 않는다면 genkernel --menuconfig all을 사용하여 직접 커널을 설정하고 커널에 여러분의 파일시스템 지원을 추가(모듈로 추가하는 것이 아닙니다)할 필요가 있을 것입니다. 이 뿐만 아니라 LVM2 사용자는 --lvm2 를 인자로 추가하고 싶을 것입니다.


코드 예제 4.2: genkernel 실행하기
# genkernel all


genkernel 동작이 끝나면 모든 모듈과 초기화 램 디스크(initramfs)가 갖춰진 커널이 만들어질 것입니다. 이 문서에서 다음에 부트로더를 설정할때 이 커널과 initrd를 사용할 것입니다. 부트로더 설정 파일에 기록할 때 필요할 것이기에 커널과 initrd의 이름을 적어두십시오. initrd는 (설치 CD에서와 같은)하드웨어 자동감지를 수행하기 위해 시동 후 "진짜" 시스템을 시작하기 전에 바로 시작할 것입니다.


코드 예제 4.3: 만들어 놓은 커널 이미지 이름과 initrd 확인하기
# ls /boot/kernel* /boot/initramfs*


커널 모듈

모듈 설정하기

여러분이 자동으로 불러오고 싶어하는 모듈들을 /etc/conf.d/modules에 나열합니다. 원하는 경우 추가 옵션을 모듈에 추가를 할 수도 있습니다. 사용할 수 있는 모든 모듈을 보려면 다음 find 명령을 실행합니다. "<kernel version>" 을 여러분이 컴파일한 커널의 버전으로 바꾸는 것을 잊지 마시기 바랍니다


코드 예제 5.1: 사용할 수 있는 모든 모듈 보기
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less


예를 들어 3c59x,ko 모듈(일부 3Com 네트워크 카드 계열에 대한 드라이버입니다)을 자동으로 불러오려면, /etc/conf.d/modules 파일을 편집하여 여기에 모듈 이름을 입력합니다.


코드 예제 5.2: /etc/conf.d/modules 편집하기
# nano -w /etc/conf.d/modules

modules_2_6="3c59x"


시스템 설정하기로 넘어가서 설치를 계속 진행합니다.