kernel.img 파일
Linux 커널을 사용하는 경우 kernel.img파일 이름이 바뀝니다 linux/arch/arm/boot/Image. 이 파일의 압축 버전을 사용하는 것도 가능해야합니다 (또는 적어도 마지막으로 확인했을 때 가능했을 수도 있음) zImage. 통합 initramfs(ramdisk)을 포함 할 수 있지만 필수는 아닙니다. 예를 들어, 스톡 kernel.img파일은 initramfswhile을 포함 kernel_emergency.img하지 않습니다.
참고 : eLinux 위키의 공식 커널 컴파일 안내서는 파일 imagetool-uncompressed.py을 준비하기 위해 도구를 사용해야한다고 제안 kernel.img합니다. RaspberyPi 초기에는 필요했지만 오늘날 부트 로더는 일반 파일 Image과 zImage파일을 처리 할 수 있습니다 .
커널 소스 문제
매우 중요한 것은 RaspberryPi 용 커널을 빌드 할 때 모든 버전을 사용할 수 없다는 것입니다. RaspberryPi로 포팅 된 특수 버전 만 작동합니다. 불행히도 현재 업스트림 버전 ( kernel.org사이트에 있음)은 RaspberryPi와 호환되지 않습니다. 또한 versatil_configRaspberryPi에는 좋지 않습니다. bcmrpi_defconfig대신 RaspberryPi 호환 커널 소스에서 찾거나 bcmrpi_emergency_defconfigbuildin을 사용하려는 경우 사용해야합니다 initramfs.
커널 구축 지침
RaspberryPi의 커널 소스를 얻는 가장 좋은 곳은 github 재단 입니다. 또한 공식 RasbperryPi 위키 에서이를 얻는 방법과 컴파일하는 방법에 대한 유용한 설명을 찾을 수 있습니다 . 여기에 간단한 단계의 관련 단계가 있습니다 (참고 : 커널을 크로스 컴파일하고 싶다고 가정합니다. 훨씬 빠르며 동일한 결과를 만들어야하지만 RaspberryPi에서 기본적으로 커널을 빌드하는 것도 가능합니다).
공식 툴체인을 다운로드하여 직접 만드십시오. Eigher 방식으로에 설치되어 있다고 가정합니다 /usr/bin/arm-linux-gnueabi-*. 다른 위치에 있으면 CROSS_COMPILE모든 make명령 에서 옵션을 변경 해야 합니다.
공식 RapsberryPi 커널 소스를 찾을 수있는 https://github.com/raspberrypi/linux 사이트로 이동 하십시오 . 두 가지 방법으로 코드를 다운로드 할 수 있습니다.
Foundation에서 제공 한 기본 구성을 사용하십시오.
cp arch/arm/configs/bcmrpi_defconfig .config
make oldconfig몇 가지 질문을 실행 하고 답변 하십시오 (기본 답변을 남기고 각 질문에 엔터를 치면 괜찮습니다).
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
커널을 컴파일하십시오 :
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
커널 모듈을 /tmp/modules다음으로 복사하십시오 .
make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules
Image파일을 다른 이름으로 사용kernel.img
/tmp/modules/lib/modules/컴퓨터의 모든 모듈을 /lib/modules/RaspberryPi rootfs의 디렉토리 로 업로드 하십시오.
initramfs 추가
initramfs그러나을 만드는 방법에 대한 지침은 제공하지 않습니다 . 이것은 매우 광범위한 주제 이기 때문에 (기본적으로 Linux 사용자 공간 환경을 작성해야하며 실제로 얼마나 복잡한 지에 대한 제한이 없습니다), 나는 여기서 다루지 않을 것입니다. 필자는 initramfs별도의 파일 인 독립형과 커널 이미지 파일과 통합 된 빌드 인 (와 같이 kernel_emergency.img) 의 두 가지 다른 형식으로 만 사용할 수 있습니다 . 두 번째 옵션은 RaspberryPi 부트 로더에서 지원해야하지만 현재 펌웨어 버전에서 손상 되었다는 소문 이 있으므로 빌드 버전을 사용해야합니다.
시작하는 가장 좋은 방법은 다른 기초 github 저장소 에서 다운로드하여 작동하는 initramfs 컨텐츠 (kernel_emergency.img에 사용)를 사용하고이 iniramfs이미지를 사용하여 커널을 부팅 한 후에 만 자신의 빌드를 시도하는 것입니다. 이를 위해 필요한 것은 다운로드 한 디렉토리 uing CONFIG_INITRAMFS_SOURCE커널 구성 옵션 을 가리 키기위한 것입니다 .
최종 노트
따라서 3 단계로 수행해야합니다.
initramfs파일 없이 커널을 빌드하고 부팅 하십시오.
initramfs커널에 준비된 컨텐츠를 추가 하십시오.
initramfs필요에 따라이 컨텐츠를 변경하십시오 .