Um zImage pode ser usado com o U-Boot e o ArchLinuxARM?

3

Estou usando o U-Boot em uma placa Cubboardboard 2, sun7i AllWinner A20 para inicializar o ArchLinux ARM. A versão do kernel que eu tenho é a mais recente do sun7i, que é 3.4.103-5-ARCH , em termos de kernel, está um pouco atrasada, mas é a mais recente dos repositórios.

Estou aprendendo sobre o U-Boot e gostaria de ver se consigo inicializar usando zImage . Eu já tenho um uImage que funciona. Este é um exercício para entender seu funcionamento.

Um motivo para isso é que o boot.txt fornecido com ArchLinuxARM contém código para inicializar com um initramfs-linux.img , mas somente se um zImage for usado (o código enviado não atende a um initramfs com uImage ).

Eu não estou perguntando como inicializar um initrams com uimage - eu sei como fazer isso. Eu estou perguntando como usar um zImage com U-Boot.

Meu uImage tem esse cabeçalho:

# 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

Eu posso inicializá-lo manualmente com a seguinte sequência de comandos:

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

Eu extraio o zImage da uImage assim:

$ tail -c+65 < uImage > zImage

Eu vejo que está tudo bem

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

Eu então tento inicializar

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

Mas isso não funciona. Tudo que vejo é "

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

Eu presumo que tenha algo a ver com o script.bin que carrego antes de bootm . Se tentou carregá-lo antes de bootz , mas não fez diferença. Eu também leio sobre um arquivo FDT, mas não acho que o pacote do kernel Arch Linix forneça um. No entanto, bootm não precisou de um, então eu esperaria que bootz também não (dado que a imagem do kernel é a mesma).

Para ter certeza de que meu zimage foi ok, criei um novo uImage e ele foi inicializado corretamente.

Eu deduzi os comandos e endereços acima do boot.txt enviado com o ArchLinuxARM.

Minha versão de inicialização é:

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
    
por starfry 05.02.2015 / 17:14

0 respostas