O vmlinux pode ser usado em vez do uImage?

9

Eu quero usar uma imagem de kernel descompactada e inicializar o BeagleBoard. Geralmente eu uso o uImage para inicializar o kernel que está no formato compactado. Como uso uma imagem de kernel descompactada?

Sharanya
fonte
Você está usando o U-Boot como o carregador de inicialização, certo?
Gilles 'SO- stop be evil'
sim! É possível usar o uboot?
Sharanya

Respostas:

7

Até onde eu sei, o U-Boot não pode inicializar diretamente uma imagem ELF "bruta" ( vmlinux). Você precisa transformá-lo no uImageformato, que contém os vmlinuxbytes compactados mais alguns bytes extras de metadados que descrevem o endereço de carregamento do kernel. U-Boot FAQ 2.19 explica como gerar uImage; é bastante simples, usando o mkimageutilitário na árvore de origem do U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Você pode precisar de parâmetros extras indicando o endereço de carregamento.)

Gilles 'SO- parar de ser mau'
fonte
11
Descomprimir a uImage durante a inicialização leva algum tempo. Eu preciso minimizar isso. Então eu pensei por que não tento com o arquivo cru descompactado vmlinux.
Sharanya
3
O efeito que você deseja obter pode ser oposto ao pretendido. O tempo de descompressão é geralmente menor que o tempo de cópia de dados do flash.
Maciej Kucia
3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Altere gzip no exemplo acima para none e você criará uma imagem não compactada compatível com u-Boot.

Jim Davis
fonte
1

Se você estiver usando o Buildroot, selecione um uImagearquivo de saída do kernel ( BR2_LINUX_KERNEL_UIMAGE=y). Compile normalmente e o Buildroot também criará um vmlinuxarquivo em uma etapa intermediária. Enquanto o vmlinuxarquivo não é copiado para o /output/imagesdiretório, ele pode ser encontrado ./output/build/linux-custom/(ou executando find . -name "vmlinux").

Spearson
fonte