Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


젠투 리눅스 genkernel 가이드

내용:

1.  소개

소개

Genkernel은 이전에 커널 컴파일에 익숙하지 않은 사용자들이 하드웨어를 자동으로 검색하는 Gentoo LiveCD 에서 사용되는 것과 비슷한 설정을 사용할 수 있도록 설계되었습니다.

어떤 사용자들은 genkernel을 초기화가 필요한 하드웨어와 부팅해보지 않고도 동작할 것이라고 여겨지는 커널에 사용하는 것에 궁금할 것입니다. genkernel이 커널 모 듈도 자동으로 컴파일하므로, 모듈 매개 변수를 사용해서 하드웨어를 사용할 수 있습니다.

genkernel이 나를 위한 것인가?

Genkernel은 커널을 컴파일하는 데에 익숙하지 않거나 하드웨어 설정에 확신을 갖지 못하는 사람들에게 적절한 선택입니다.

Genkernel이 일반적인 설정을 사용하도록 설계되었기 때문에, 이것은 당신의 하드웨어를 모두 지정할 수 있을 것입니다 - 그렇지만, 모든 드라이버들과 모듈들 또한 컴파일되어야 하기 때문에, 만약 당신이 무엇이 필요한 지 알고 있다면 당신이 직접 컴파일하는 것이 보통 훨씬 빠릅니다.

Genkernel 은 현재까지는 LVM2/EVMS2 파티션을 가진 시스템의 부팅은 지원하지 않습니다. 사용자들은 당분간 수동으로 컴파일된 커널을 사용할 것을 추천합니다.

genkernel 얻기

여러분은 간단히 emerge genkernel을 실행함으로써 genkernel을 얻을 수 있습니다. 만약 바이너리 패키지들을 사용한다면, emerge에 -k 플래그를 사용하는 것을 잊지 마십시요. i.e. GRP. GRP 패키지들은 오래된 버전의 genkernel을 가지고 있기 때문에, 플래그들이 서로 다릅니다. 이에 대해서 Gentoo Handbookgenkernel --help 를 통해 정보를 얻을 수 있습니다.

선택할 플랫폼

genkernel 3.0.2에서, 다음의 플랫폼들이 선택될 것입니다: alpha, amd64, parisc, parisc64, ppc, ppc64, sparc, sparc64, x86.

2.  Genkernel 사용 방법

소개

Genkernel은 세 가지 모드로 동작하도록 설계되었습니다.

  • "all" mode: 커널과 initrd를 빌드한다.
  • "kernel" mode: 커널 이미지만을 빌드한다.
  • "initrd" mode: initrd만을 빌드한다.

대부분의 사용자들은 "kernel" 모드와 "initrd" 모드를 실행하는 "all" 모드만을 원할 것입니다. "kernel" "initrd" 모드들은 현재로써는 "all" 모드의 별칭(alias)들일 뿐이고, 따라서 이 모드들은 현재로써는 특별한 이득을 주지 않는다는 것을 참고하십시오.

genkernel은 커널을 컴파일할 때 좀더 편하게 해 주는 명령어일 뿐이지만, genkernel은 여러분의 커널을 어떻게 컴파일하고 설정할지를 커스터마이징하게 해 줄 수 있는 서로 다른 플래그들도 가지고 있습니다.

Genkernel 컴파일러 플래그

Genkernel은 커널을 조합할 때 적절한 어플리케이션들로 전달되는 다음의 플래그들을 지정합니다.

  • --kernel-as=someAssembler : 커널을 컴파일하는 데 사용할 어셈블러를 지정한다.
  • --kernel-cc=someCompiler : 커널을 컴파일하는 데 사용할 컴파일러를 지정한다.
  • --kernel-ld=someLinker : 커널을 컴파일하는 데 사용할 링커를 지정한다.
  • --kernel-make=someMake : 커널을 컴파일하는 데 사용할 대체(alternate) GNU make를 지정한다.
  • --utils-as=someAssembler : 지정 유틸리티들을 컴파일하는 데 사용할 어셈블러를 지정한다.
  • --utils-cc=someCompiler : 지정 유티리티들을 컴파일하는 데 사용할 컴파일러를 지정한다.
  • --utils-ld=someLinker : 지정 유티리티들을 컴파일하는 데 사용할 링커를 지정한다.
  • --utils-make=someMake : 지정 유티리티들을 컴파일하는 데 사용할 대체(alternate) GNU make를 지정한다.
  • --makeopts=-jJobs : 커널과 유틸리티들이 컴파일 될때 GNU make로 전달할 플래그들을 지정한다.

Genkernel 커널 플래그

Genkernel은 커널 컴파일에 영향을 주는 --no-option과 같은 다음의 플래그들을 지원합니다.

  • --callback="echo Hello": 이 루틴은 커널과 적절한 모듈들이 빌드된 후에; 그리고 initrd가 빌드되기 전에 지정된 인자들을 호출합니다. 이것은 callback을 사용해서 적절한 아이템을 emerge하고 genkernel 모듈 그룹을 재정의함으로써 외부(external) 모듈들을 initrd로 인스톨 하려고 할 때 유용합니다.
  • --no-clean: 당신이 커널을 컴파일 하기 위해 make clean을 실행한다 (실행하지 않는다). 그 결과 모든 오브젝트 파일과 의존성이 있는 것들이 삭제됩니다.
  • --no-mrproper: 커널을 컴파일하기 전에 make mrproper를 실행합니다 (실행하지 않는다). 그 결과 모든 오브젝트 파일과, 의존성이 있는 것들 그리고 여러분의 설정이 삭제됩니다.
  • --kerneldir=/path/to/sources : 기본 경로인 /usr/src/linux대신에, 대체할 커널 소스 경로를 지정합니다.
  • --kernel-config=/path/to/config-file : 현재 기본으로 사용되고 더 이상 지속되지 않는 /path/too/source/.config대신에 사용할 대체 커널 설정을 지정합니다.
  • --no-bootsplash: genkernel이 빌드하는 initrd 내부의 bootsplash를 지정합니다 (지정하지 않는다). 현재 모든 아키텍쳐들이 bootsplash를 지원하지는 않습니다. bootsplash를 지원하는 커널도 필요합니다.
  • --no-menuconfig: 커널을 빌드하기 전, make oldconfig가 실행되기 전에 커널 메뉴 기반의 설정기를 실행합니다 (실행하지 않는다).
  • --no-initrdmodules : genkernel이 생성하는 어떤 모듈도 initrd로 복사하지 않습니다.
  • --no-install: 컴파일이 끝난 커널, 모듈, 그리고 initrd를 인스톨합니다 (인스톨하지 않는다).

Genkernel 기타 플래그

Genkernel은 또한 다른 두 범주에 해당하지 않는 몇몇 기타 플래그들도 지정합니다:

  • --arch-override=someArch: 자동 탐지 메커니즘이 실패할 때나 만약 커널을 크로스 컴파일하고 싶을 때 genkernel은 여러분이 사용한다고 생각하는 아키텍쳐를 덮어 쓰는 데 사용될 수 있습니다.
  • --busybox-config=/path/to/busybox-config : 주어진 파일로 기본 busybox 설정을 덮어 씁니다.
  • --busybox-bin=/path/to/busybox-binary.tar.bz2 : 이 옵션을 사용한다는 것은 busybox 바이너리가 컴파일되지 않았을 것이고, 주어진 타르볼이 사용된다는 의미입니다. busybox가 반드시 static으로 컴파일되어야 한다는 것에 주의하십시오!
  • --minkernpackage=/output/to/yourkernel.tar.bz2 : 이 플래그는 kernel이라고 이름 붙여진 커널의 타르볼과 initrd라고 이름붙여진 initrd를 주어진 파일로 출력합니다. 경로 정보나 모듈은 타르볼 내부에 포함되지 않을 것입니다.

Genkernel 실행하기

genkernel을 실행하는 데 필요한 것은 root로써 genkernel을 필요한 플래그들과 함께 입력하는 것 뿐입니다. 예:

코드 내용 2.1: genkernel 실행

# genkernel --menuconfig --no-clean --no-install --bootsplash all
(여러분에게 어떻세 설정하기를 원하는지 물어보고,
컴파일된 오브젝트 파일들을 남겨두며,
bootsplash를 지원하지만 실제로 설치는 하지 않으면서
커널을 만든다.)

만약 genkernel을 여러분의 커널에도 인스톨하고자 한다면 /boot 파티션이 마운트되어 있어야 합니다 - 최신의 genkernel들은 /etc/genkernel.conf 에 MOUNTBOOT가 "yes"로 설정되어 있다면 이를 자동으로 확인할 것입니다.

코드 내용 2.2: /boot 수동으로 마운트하기

(/boot가 /etc/fstab의 올바른 항목일 경우:)
# mount /boot
(... 그 밖의 경우 IDE 디스크에 대해:)
# mount /dev/hda1 /boot
(... SCSI 디스크에 대해:)
# mount /dev/sda1 /boot

부트로더와 같이 동작하도록 genkernel 세팅하기

genkernel을 부트로더와 같이 동작하도록 설치하려면, 부트로더 설정에서 세 가지 또는 네 가지를 수정해야 합니다.

  1. 커널 이미지로 전달되는 커널 파라메터에 root=/dev/ram0init=/linuxrc를 추가 할 것.
  2. 예를 들어, /dev/hda3 에 root 파티션이 포함되어 있을 경우, real_root=/dev/hda3을 추가합니다.
  3. 만약 bootsplash를 사용한다면, 커널로 전달되는 매개변수에 vga=0x317같은 적합한 modeline을 추가하거나 또한 bootsplash 에서 필요로 하는 상세함의 정도에 따리 splash=verbose 또는 splash=silent도 추가합니다.
  4. 여러분의 부트로더가 initrd를 어떻게 필요로 하느냐에 따라서 initrd를 추가 할 것: 부트로더를 위해 무엇을 해야 하는지 자세히 알고 싶다면 Gentoo Handbook 을 보십시오.

커널 설정 파일

Genkernel은 커널 설정을 /etc/kernels에 저장하고 여러분이 genkernel을 실행할 때 마다 그 설정을 사용합니다. 기본값에서 다시 시작하고 싶다면, /etc/kernels안의 파일 이름을 수정하십시오. Genkernel은 /usr/share/genkernel/<arch>에 있는 커널 설정을 대신 사용합니다.

3.  Genkernel 포팅

소개

여러분의 아키텍쳐가 genkernel이 필요로 하는 모든 라이브러리와 유틸리티를 가지고 있고, 아키텍쳐를 위한 커널과 컴파일러 세트(suite), GNU make, 그리고 busybox 배포판에 제한받지 않는다면, 여러분은 시작할 준비가 된 것입니다!

각각의 아키텍쳐에 대해, genkernel은 /usr/share/genkernel/$archName을 설정 파일들로 사용합니다.

시스템 부트스트랩이 어떻게 동작하는가

  1. bootloader는 genkernel 디렉토리들 내부의 설정 파일 명세에 따라 빌드된 genkernel 이미지와 genkernel이 준비한 initrd를 로드합니다.
  2. 커널은 부팅하면서, 적은 양의 RAM을 할당해서 busybox가 그 안에서 초기화되도록 하고 busybox는 아키텍쳐를 위한 modules_load 리스트 안에 있는 모듈들이 있는지 시스템을 조사합니다.
  3. 작업이 완료되면, 그리고 busybox가 적절한 root boot 디바이스인 real_root 매개 변수를 찾으면, 시스템은 그 장치로부터 부팅합니다.

설정 파일

  • busy-config: 여러분의 아키텍쳐에 맞는 busybox를 빌드하는 데에 사용되는 설정입니다.
  • config.sh: 다양한 genkernel 내부 변수들을 설정하는 쉘 스크립트. 예로 config.sh 파일들 중에 하나를 참고하십시오.
  • SCSI, FireWire, ATARAID 그리고 PCMCIA 지정을 위해 로드된 모듈들의 크기-고정 리스트를 포함하고 있는 파일입니다. 만약 여러분의 플랫폼에서 아무것도 사용 가능하지 않다면, 이 필드를 비워두십시오. 예로 modules_load 파일 중의 하나를 참고하십시오.
  • kernel-config: 모든 커널 버전에서 사용되는 기본 커널 설정.
  • kernel-config-2.4: 2.4 시리즈 커널에서 사용되는 기본 커널 설정.
  • kernel-config-2.6: 2.6 시리즈 커널에서 사용되는 기본 커널 설정.


인쇄

업데이트 2005년 6월 26일

The original version of this translation is not maintained anymore

요약: 이 가이드는 genkerl이 제공하는 모든 함수들의 참조를 제공할 목적으로 만들어졌습니다.

Tim Yamin
저자

Park, Jin Kyu(bass1ife)
번역자

Park, Jin Hyung
검토자

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.