kernel.img 파일
Linux 커널을 사용하는 경우 kernel.img
파일 이름이 바뀝니다 linux/arch/arm/boot/Image
. 이 파일의 압축 버전을 사용하는 것도 가능해야합니다 (또는 적어도 마지막으로 확인했을 때 가능했을 수도 있음) zImage
. 통합 initramfs
(ramdisk)을 포함 할 수 있지만 필수는 아닙니다. 예를 들어, 스톡 kernel.img
파일은 initramfs
while을 포함 kernel_emergency.img
하지 않습니다.
참고 : eLinux 위키의 공식 커널 컴파일 안내서는 파일 imagetool-uncompressed.py
을 준비하기 위해 도구를 사용해야한다고 제안 kernel.img
합니다. RaspberyPi 초기에는 필요했지만 오늘날 부트 로더는 일반 파일 Image
과 zImage
파일을 처리 할 수 있습니다 .
커널 소스 문제
매우 중요한 것은 RaspberryPi 용 커널을 빌드 할 때 모든 버전을 사용할 수 없다는 것입니다. RaspberryPi로 포팅 된 특수 버전 만 작동합니다. 불행히도 현재 업스트림 버전 ( kernel.org
사이트에 있음)은 RaspberryPi와 호환되지 않습니다. 또한 versatil_config
RaspberryPi에는 좋지 않습니다. bcmrpi_defconfig
대신 RaspberryPi 호환 커널 소스에서 찾거나 bcmrpi_emergency_defconfig
buildin을 사용하려는 경우 사용해야합니다 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
필요에 따라이 컨텐츠를 변경하십시오 .