This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Handbook:PPC/Installation/Kernel/ko

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:PPC/Installation/Kernel and the translation is 100% complete.
PPC 핸드북
설치
설치 정보
매체 선택
네트워크 설정
디스크 준비
스테이지 3 설치
베이스 시스템 설치
커널 설정
시스템 설정
도구 설치
부트로더 설정
마무리
젠투 활용
포티지 소개
USE 플래그
포티지 기능
초기화 스크립트 시스템
환경 변수
포티지 활용
파일 및 디렉터리
변수
소프트웨어 브랜치 함께 사용하기
추가 도구
꾸러미 저장소 개별 설정
고급 기능
네트워크 설정
시작하기
고급 설정
모듈러 네트워크
무선 네트워크
기능 추가
동적 관리


소스 코드 설치

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

ppc 기반 시스템에서 젠투는 sys-kernel/gentoo-sources 꾸러미를 추천합니다.

적당한 커널 소스를 선택하고 emerge로 설치하십시오:

root #emerge --ask sys-kernel/gentoo-sources

/usr/src를 들여다보면 설치한 커널 소스를 가리키는 linux 심볼릭 링크를 볼 수 있습니다:

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

이제 커널 소스를 설정하고 컴파일 할 차례입니다. 두가지 방식으로 접근할 수 있습니다:

  1. 직접 설정하고 빌드하는 방법, 또는
  2. genkernel 도구를 사용하여 자동으로 리눅스 커널을 빌드하고 설치하는 방법

환경을 최적화하는 기본적인 선택이자 최상의 방법인 직접 설정 방법을 설명하도록 하겠습니다.

기본: 직접 설정

도입부

커널을 직접 설정하는 방법은 리눅스 사용자가 해본 일중에 가장 어려운 과정으로 보입니다. 아니라고 하는것도 조금은 맞습니다 - 커널을 여러번 설정해본 사람중에는 이게 어려웠는지 기억하는 사람이 없습니다.

그러나 맞는 이야기이기도 합니다. 커널을 직접 설정했을 때 시스템을 알아둘 필요가 있습니다. 대부분의 정보는 lspci 명령이 들어있는 sys-apps/pciutils를 이머지하여 수집할 수 있습니다:

root #emerge --ask sys-apps/pciutils
참고
chroot를 하고 나면, lspci가 출력하는 (pcilib: cannot open /sys/bus/pci/devices와 같은) pcilib 경고를 무시하는게 안전합니다.

시스템 정보를 알아볼 수 있는 또 다른 부분은 설치 CD에서 사용하는 커널 모듈이 무엇인지 보여주는 lsmod를 실행했을 때 나타나는 활성화 할 모듈에 대한 바람직한 실마리입니다.

이제 커널 소스 디렉터리로 이동하여 make menuconfig를 실행하십시오. 메뉴 기반 설정 화면을 실행합니다.

root #cd /usr/src/linux
root #make menuconfig

리눅스 커널 설정에는 굉장히 많은 섹션이 있습니다. 반드시 활성화해야 할 몇가지 옵션 목록을 먼저 보도록 하겠습니다(그렇지 않으면 젠투가 제 기능을 못하거나, 추가 설정 없이 제대로 동작하지 않을지도 모릅니다). 또한 더 많은 도움을 줄 젠투 커널 설정 안내서도 젠투 위키에 있습니다.

필수 옵션 활성화

시스템을 부팅할 때 살아있는 모든 드라이버(SCSI 컨트롤러 등)가 모듈로 남아있지 않고 커널에 들어갔는지 확인하십시오. 아니면 부팅을 제대로 진행할 수 없습니다.

정확한 프로세서 형식을 선택하십시오. 사용자가 하드웨어 문제 알림을 받을 수 있도록 MCE 기능 활성화(가능할 경우)를 추천합니다. 일부 아키텍처(x86_64)에서는 dmesg로 나타나지 않지만 /dev/mcelog에 나타납니다. app-admin/mcelog 꾸러미가 필요한 부분입니다.

또한 Maintain a devtmpfs file system to mount at /dev(CONFIG_DEVTMPFSCONFIG_DEVTMPFS_MOUNT)를 선택하여 부팅 과정에 중요한 장치 파일을 미리 준비할 수 있게 하십시오.

커널 devtmpfs 지원 활성화
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

SCSI 디스크 지원(CONFIG_BLK_DEV_SD)을 활성화했는지 확인하십시오:

커널 SCSI 디스크 지원 활성화
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

이제 File Systems로 가서 사용할 파일 시스템 지원을 선택하십시오. 루트 파일 시스템에서 사용할 파일 시스템을 모듈로 컴파일하지 마십시오. 그렇지 않으면 젠투 시스템에서 파티션을 마운트할 수 없습니다. 또한 Virtual memory/proc file system도 선택하십시오. 시스템에서 필요한 옵션(CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, CONFIG_TMPFS) 중 하나 이상을 선택하십시오:

커널 필요한 파일 시스템 선택
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

인터넷에 연결할 때 PPPoE를 사용하거나 전화걸기 모뎀을 사용한다면 다음 옵션 (CONFIG_PPP, CONFIG_PPP_ASYNC, CONFIG_PPP_SYNC_TTY)을 활성화하십시오:

커널 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 옵션도 마찬가지입니다.

네트워크(유무선) 카드의 커널 지원 포함도 잊지 마십시오.

대부분의 시스템에는 구성에 따라 다중 코어를 지니고 있기도 하므로, Symmetric multi-processing support(CONFIG_SMP) 활성화도 중요합니다:

커널 SMP 지원 활성화
Processor type and features  --->
  [*] Symmetric multi-processing support
참고
멀티코어 시스템에서는 각 코어 갯수를 하나의 프로세서로 취급합니다.

USB 입력 장치(키보드, 마우스)또는 다른 USB 장치(CONFIG_HID_GENERIC, CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD)를 사용한다면 마찬가지로 활성화를 잊지 마십시오:

커널 입력 장치용 USB 지원 활성화
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support


아키텍처별 커널 설정

중요
리눅스 커널 설정을 시작하기 전에, 대부분의 32비트 PowerPC 시스템에서 커널을 만들었는지 확인하려면 make pmac32_defconfig를 실행하십시오:
root #cd /usr/src/linux
root #make pmac32_defconfig
root #make menuconfig

페가소스 시스템을 사용중이라면 아미가 파티션 지원을, 애플 컴퓨터를 사용중이라면 매킨토시 파티션 지원을 활성화했는지 확인하십시오.

신세대 기종과 구세대 기종 머신 사용자는 마찬가지로 HFS 지원을 찾을 것입니다. 구세대 사용자가 MacOS 파티션에 컴파일한 커널을 복사하려면 HFS 지원이 필요합니다. 신세대 기종 사용자는 특수한 Apple_Bootstrap 파티션을 설정할 때 HFS 지원이 필요합니다.

커널 HFS 지원 활성화
'"`UNIQ--pre-0000000E-QINU`"'

커널에 적당한 이더넷 카드 지원을 포함하는 것을 잊지 마십시오! 대부분의 좀 더 최근에 나온 애플 컴퓨터는 SunGEM 이더넷 드라이버를 사용합니다. 이전 iMac은 보통 BMAC 드라이버를 사용합니다.

커널 네트워크 드라이버 선택
'"`UNIQ--pre-00000011-QINU`"'

FireWire로 부팅할 때, 다음 옵션을 활성화하십시오

커널 부팅시 FireWire 장치 지원 활성화
'"`UNIQ--pre-00000014-QINU`"'

커널 프레임버퍼 지원은 부팅 과정을 성공적으로 진행하기 위해 필요하므로 끄지 마십시오. NVIDIA 기반 칩셋을 사용한다면 Open Firmware 프레임버퍼를 사용하십시오. ATI 기반 칩셋을 사용한다면 하단에 나타난 적절한 칩셋(Mach64, Rage128, Radeon) 기반의 프레임버퍼 드라이버를 선택하십시오

커널 프레임버퍼 드라이버 선택
'"`UNIQ--pre-00000017-QINU`"'
참고
하나 이상의 프레임버퍼 장치를 선택하려면, 최적의 요건을 덜 갖춘 장치가 기본이 되어야 합니다. 프레임버퍼 장치를 하나만 사용하거나 커널에서 부팅 과정시 사용할 드라이버 값을 video=radeonfb와 같이 video줄에 추가하십시오.

컴파일 및 설치

커널을 설정했다면, 컴파일하고 설치할 차례입니다. 설정 메뉴를 빠져나가고 다음 명령을 실행하십시오:

root #make && make modules_install
참고
make -jX 명령을 사용하고 X에 실행 가능토록 허용할 빌드 프로세스 갯수를 넣어 병렬 빌드를 활성화 할 수 있습니다. 이는 앞서 언급한 /etc/portage/make.confMAKEOPTS 변수와 비슷합니다.

커널 컴파일이 끝나면 아래와 같이 /boot/ 에 커널 이미지를 복사하십시오. 부트 파티션이 나누어져 있다면, 페가소스 컴퓨터에서는 제대로 마운트했는지 확인하십시오. BootX를 부팅할 때 사용한다면, 커널을 나중에 복사하겠습니다.

Yaboot와 BootX는 다른 부트로더와는 달리 압축하지 않은 커널을 사용합니다. 압축하지 않은 커널을 vmlinux라고 하며 커널 컴파일이 끝난 후 /usr/src/linux/ 위치에 있습니다. 페가소스 머신을 사용한다면, 페가소스 펌웨어에서는 /usr/src/linux/arch/powerpc/boot/images/에 있는 zImage 압축 커널을 필요로합니다.

root #cd /usr/src/linux

애플과 IBM 머신에서는:

root #cp vmlinux /boot/kernel-3.16.5-gentoo

페가소스에서는:

root #cp arch/powerpc/boot/images/zImage /boot/kernel-3.16.5-gentoo



선택: initramfs 빌드

대부분의 경우 초기 램 기반 파일 시스템 initramfs를 빌드해야 합니다. 중요한 파일 시스템 위치/usr/ 또는 /var/가 각각의 파티션으로 나누어져있을 경우가 대부분의 중요한 이유가 됩니다. initramfs로 initramfs내부의 도구를 활용하여 이 파티션을 마운트할 수 있습니다.

initramfs가 없으면, 파일 시스템에 있는 정보를 필요로 하는 파일 시스템 마운트 동작시 동작을 수행해야 하는 도구가 제대로 동작하지 않아 시스템 부팅이 제대로 동작하지 않는 큰 위험성이 있습니다. initramfs는 커널 부팅 후 바로 활용할 아카이브에 필요한 파일을 넣지만, 그 이전에 init 도구에 제어 권한을 넘깁니다. initramfs에 있는 스크립트는 시스템 부팅을 계속하기 전 파티션을 제대로 마운트했는지 확인합니다.

initramfs를 설치하려면, 우선 sys-kernel/genkernel을 설치하여 initramfs를 만들도록 하십시오:

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

LVM또는 RAID 등의 initramfs의 지정 기능을 활성화하려면 genkernel에 적당한 옵션을 추가하십시오. 더 많은 내용은 genkernel --help를 참고하십시오. 다음 예제에서 LVM과 소프트웨어 RAID(mdadm)를 활성화겠습니다:

root #genkernel --lvm --mdadm --install initramfs

initramfs는 /boot/에 저장합니다. 간단히 initramfs로 시작하는 결과 파일을 찾아볼 수 있습니다:

root #ls /boot/initramfs*

이제 커널 모듈로 계속 진행하십시오.

대안: genkernel 사용

직접 설정이 상당히 벅차다면, genkernel을 추천합니다. 커널을 설정하고 빌드하는 과정을 자동으로 처리합니다.

genkernel은 설치 CD 커널이 설정한 방식과 거의 동일하게 커널을 설정하여 동작합니다. 커널을 빌드할 때 genkernel을 사용하면, 설치 CD에서 동작했던바와 같이 시스템에서 부팅 시간에 발견한 모든 하드웨어를 발견한다는 의미입니다. 왜냐면 genkernel은 직접적으로 커널을 설정할 필요가 없기 때문에 커널 컴파일을 귀찮아하는 사용자에게 이상적인 해결책입니다.

이제 genkernel을 사용하는 방법을 보겠습니다. 먼저 sys-kernel/genkernel 이빌드를 이머지하십시오:

root #emerge --ask sys-kernel/genkernel

다음 /etc/fstab 파일을 편집하여 두번째 필드에 /boot/가 들어있는 줄이 올바른 장치를 가리키도록 하십시오. 핸드북의 파티션 예제를 따라했다면 대부분 ext2 파일 시스템을 갖춘 /dev/sda1 입니다. 파일 내용은 다음과 같이 만들 수 있습니다:

root #nano -w /etc/fstab
파일 /etc/fstab/boot 마운트 지점 설정
/dev/sda1	/boot	ext2	defaults	0 2
참고
앞으로의 젠투 설치 과정에서 /etc/fstab을 다시 설정합니다. /boot설정은 이 설정 과정에서 genkernel프로그램이 읽어들이기 때문에 지금 바로 진행해야 합니다.

이제 genkernel all를 실행하여 커널 소스 코드를 컴파일하십시오. genkernel은 대부분의 하드웨어를 지원하는 커널을 컴파일 하므로 컴파일이 끝나기까지 상당한 시간이 걸린다는 사실을 알아두십시오!

참고
부트 파티션에서 ext2 또는 ext3 파일 시스템을 쓰지 않는다면 genkernel --menuconfig all 명령으로 커널을 직접 설정하고 커널에 각각의 지원 파일 시스템을 추가해야 합니다(예: 모듈 아님). LVM2 사용자는 마찬가지로 매개변수 --lvm을 넣어야겠습니다.
root #genkernel all

genkernel 동작이 끝나면, 모듈 전체 모음과 초기화 램 디스크(initramfs)를 만듭니다. 이 문서에서 나중에 부트로더를 설정할 때 이 커널과 initrd를 사용합니다. 부트로더 설정 파일을 편집할 때 정보로 사용하겠으니 커널과 initrd의 이름을 적어두십시오. "실제" 시스템을 시작하기 전에 하드웨어 자동 감지(설치 CD와 유사) 동작을 수행하는 즉시 initrd를 시작합니다.

root #ls /boot/kernel* /boot/initramfs*

커널 모듈

모듈 설정

참고
Hardware modules are optional to be listed manually. udev will normally load all hardware modules that are detected to be connected in most cases. However, it is not harmful for automatically detected modules to be listed. Sometimes exotic hardware requires help to load their drivers.

/etc/conf.d/modules에서 자동으로 불러와야 하는 모듈을 확인하십시오. 필요한 경우 추가 옵션을 모듈에 추가할 수 있습니다.

존재하는 모든 모듈을 보려면 다음과 같이 find 명령을 실행하십시오. 잊지 말고 "<kernel version>" 부분을 컴파일한 커널의 버전으로 바꾸십시오.

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

예를 들어 3c59x.ko 모듈(3COM 네트워크 카드 계열 드라이버)을 자동으로 불러오려면, /etc/conf.d/modules 파일을 편집하고 모듈 이름을 입력하십시오.

root #nano -w /etc/conf.d/modules
modules="3c59x"
파일 /etc/modules-load.d/network.confForce loading 3c59x module
3c59x

시스템 설정으로 설치 과정을 계속 진행하십시오.

선택: 펌웨어 설치

일부 드라이버는 동작하기 전에 시스템에 추가 펌웨어를 설치해야 합니다. 네트워크 인터페이스에 흔히 있는 경우이며 특히 무선 네트워크 인터페이스의 경우 그렇습니다. 대부분의 펌웨어는 sys-kernel/linux-firmware에 있습니다:

root #emerge --ask sys-kernel/linux-firmware