zImage를 U-Boot 및 ArchLinuxARM과 함께 사용할 수 있나요?

zImage를 U-Boot 및 ArchLinuxARM과 함께 사용할 수 있나요?

나는 U-Boot를 사용하여 Cubieboard 2 및 sun7i AllWinner A20 보드에서 ArchLinux ARM을 부팅합니다. 내가 가지고 있는 커널 버전은 최신 sun7i 버전이므로 3.4.103-5-ARCH커널에 관한 한 시대에 약간 뒤떨어져 있지만 저장소에서는 최신 버전입니다.

저는 U-Boot를 배우고 있는데 그것이 사용될 수 있는지 알고 싶었습니다 zImage. 이미 작동하는 것이 있습니다 uImage. 다음은 작동 방식을 배우는 연습입니다.

그 이유 중 하나는시작 파일ArchLinuxARM은 a로 부팅하는 코드와 함께 제공되지만 a를 사용할 initramfs-linux.img때만 가능합니다 zImage(제공된 코드는 a로 initramfs에 맞지 않습니다 uImage).

나는 uImage를 사용하여 initram을 시작하는 방법을 묻는 것이 아닙니다. 나는 그 방법을 알고 있습니다. zImage와 U-Boot를 사용하는 방법을 묻고 있습니다.

uImage제목은 다음과 같습니다.

# mkimage -l uImage 
Image Name:   Linux-3.4.103-5-ARCH
Created:      Fri Jan 16 13:34:10 2015
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3327616 Bytes = 3249.62 kB = 3.17 MB
Load Address: 40008000
Entry Point:  40008000

다음 명령 순서를 사용하여 수동으로 시작할 수 있습니다.

mmc dev 0
load mmc 0:1 0x48000000 /boot/uImage
load mmc 0:1 0x43000000 /boot/script.bin
setenv bootargs console=${console} root=/dev/sda6 rw rootwait
setenv bootm_boot_mode sec 
bootm 0x48000000

다음과 같이 uImage에서 zImage를 추출합니다.

$ tail -c+65 < uImage > zImage

확인해보니 괜찮아 보이는군요

$ file zImage
zImage: Linux kernel ARM boot executable zImage (little-endian)

그럼 시작해볼까

mmc dev 0
load mmc 0:1 0x42000000 /boot/zImage
setenv bootargs console=${console} root=/dev/sda6 rw rootwait
bootz 0x42000000

그러나 이것은 작동하지 않습니다. 내가 보는 건 "

Kernel image @ 0x42000000 [ 0x000000 - 0x32c680 ]
Starting kernel ...

script.bin내 생각엔 내가 이전에 로드한 것과 관련이 있는 것 같아요 bootm. 이전에 로드를 시도했는데 bootz별 차이가 없었습니다. FDT 파일도 읽었는데 Arch Linix 커널 패키지가 이를 제공하지 않는 것 같습니다. 그래도 bootm필요하지 않으므로 그렇지 않기를 바랍니다 bootz(커널 이미지가 동일하다고 가정).

zimage내 것이 괜찮은지 확인하기 위해 uImage새 것을 만들었고 잘 시작되었습니다.

위의 명령과 주소에서 파생되었습니다.시작 파일ArchLinuxARM과 함께 제공됩니다.

내 U-boot 버전은 다음과 같습니다.

U-Boot 2015.01-1 (Jan 22 2015 - 16:37:34) Arch Linux ARM
gcc (GCC) 4.9.2 20141224 (prerelease)
GNU ld (GNU Binutils) 2.25

관련 정보