Handbook:MIPS/Blocks/Kernel/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:MIPS/Blocks/Kernel and the translation is 100% complete.


설정 준비

중요
Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2, O2 에서 시스템을 부팅하려면 64비트 커널이 필요합니다. 이 머신에서 64비트 커널을 빌드할 크로스컴파일러를 만들려면 sys-devel/kgcc64를 이머지하십시오.

대부분의 시스템에서는 커널 소스에 .configs 예제를 지원합니다. 모든 시스템에서 이런 방식으로 설정을 지원하진 않습니다. 이 설정은 아래 표에 언급한 명령으로 처리할 수 있습니다.

시스템 설정 명령
Cobalt Servers make cobalt_defconfig
Indy, Indigo2 (R4k), Challenge S make ip22_defconfig
Origin 200/2000 make ip27_defconfig
Indigo2 Impact (R10k) make ip28_defconfig
O2 make ip32_defconfig

모든 젠투 설치 이미지에서는 이미지 자체의 일부로 /proc/config.gz와 같이 접근할 수 있는 커널 설정 옵션을 제공합니다. 이 파일은 대부분의 경우 사용합니다. 커널 소스 코드가 현재 동작중인 커널과 거의 비슷하다면 최선의 선택일 수 있습니다. 이 파일을 추출하려면, 간단하게 아래와 같이 zcat 명령을 실행하십시오.

root #zcat /proc/config.gz > .config
중요
이 커널 설정은 netboot 이미지로 설정한 상태입니다. initramfs의 디렉터리 또는 initrd의 루프백 장치가 있는 곳에서 루트 파일시스템 이미지를 찾을 수 있습니다. make menuconfig를 실행할 때 General Setup으로 이동 후 initramfs 옵션 비활성화를 꼭 처리해주십시오.

개별 설정

설정을 찾았다면 커널 소스 디렉터리로 다운로드 후 .config로 이름을 바꾸십시오. 그 다음 위에서 언급한 대로 업데이트할 내용을 모두 가져오기 위해 make oldconfig를 실행하시고 컴파일하기 전에 설정을 개별적으로 바꾸십시오.

root #cd /usr/src/linux
root #cp /path/to/example-config .config
root #make oldconfig

현재의 기본값으로 처리하려면, 그냥 각 프롬프트에서 Enter(또는 Return)를 누르십시오...

root #make menuconfig
중요
Kernel Hacking 섹션에서 "Are You Using A Cross Compiler?"라는 옵션이 있습니다. 이 옵션은 커널을 컴파일 할 때 gcc에게 커널 Makefile을 "mips-linux-"(또는 mipsel-linux ... 등)과 명령으로 간주하라고 알려줍니다. 크로스 컴파일을 진행한다면 특히 이 옵션을 꺼야합니다. 크로스 컴파일러를 호출해야 한다면, 다음 절에서 보여드리는 바와 같이 CROSS_COMPILE 변수를 사용하여 접두사를 정의하십시오.
중요
Octane systems 중 ALSA가 동작하지 않는 곳에서 JFS와 ALSA를 같이 넣었을때 발생하는 문제가 있습니다. MIPS용 JFS 실험 환경을 시험삼아 활용하려 한다면, 이와 같은 경우에는 JFS 사용을 피하시는게 좋습니다.

컴파일 및 설치

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

참고
64비트 머신에서 64비트 컴파일러를 사용하려면 CROSS_COMPILE=mips64-unknown-linux-gnu-(리틀 엔디언 시스템에서는 mips64el-...)를 지정하십시오.

자체적으로 컴파일하려면:

root #make vmlinux modules modules_install

대상 머신에 컴파일 하려면 mips64-unknown-linux-gnu- 를 적절하게 적어넣으십시오:

root #make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-

x86같은 다른 머신에서 컴파일할 때는 커널을 컴파일하고 특정 디렉터리로 모듈을 설치하여 대상 머신에 보낼 때 다음 명령을 사용하십시오.

root #make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
root #make modules_install INSTALL_MOD_PATH=/somewhere
중요
Indy, Indigo2 (R4k), Challenge S, O2에서 64비트 커널을 컴파일하면 vmlinux 대신 vmlinux.32 타겟을 사용하십시오. 그렇지 않으면 머신을 부팅할 수 없습니다. ELF64 형식을 해석할 수 없는 PROM에서 처리할 일입니다.
root #make vmlinux.32
참고
make -jX 명령을 사용하고 X에 실행 가능토록 허용할 빌드 프로세스 갯수를 넣어 병렬 빌드를 활성화 할 수 있습니다. 이는 앞서 언급한 /etc/portage/make.confMAKEOPTS 변수와 비슷합니다.

위 과정을 통해 최종 커널 vmlinux.32를 만듭니다.

커널 컴파일이 끝나면 /boot에 커널 이미지를 복사하십시오:

참고
Cobalt servers에서 부트로더는 압축 커널 이미지 형태로 나타납니다. gzip -9 할 파일은 /boot/에 있음을 기억해두십시오.
root #cp vmlinux /boot/kernel-3.16.5-gentoo

Cobalt servers 에서는 커널 이미지를 압축하십시오:

root #gzip -9v /boot/kernel-3.16.5-gentoo