Imagen vs zImage vs uImage


¿Cuál es la diferencia entre ellos?

Sé que u-boot necesita un núcleo en formato uImage.

El sistema que utilizo primero arranca desde el cargador de etapa 1 y luego llama a u-boot. Quiero descartar u-boot y arrancar directamente desde el cargador de etapa 1. ¿Qué tipo de imagen del núcleo tengo que usar?

Author: sawdust, 2014-03-11

1 answers

¿Cuál es la diferencia entre ellos?

Image : el archivo genérico de imagen binaria del kernel de Linux.

ZImage: una versión comprimida de la imagen del kernel de Linux que es autoextraíble.

UImage: un archivo de imagen que tiene un envoltorio U-Boot (instalado por la utilidad mkimage) que incluye el tipo de sistema operativo y la información del cargador.
Una práctica muy común (por ejemplo, el Makefile típico del kernel de Linux) es usar un archivo zImage. Ya un archivo zImage es autoextraíble (es decir, no necesita descompresores externos), el wrapper indicaría que este núcleo "no está comprimido" aunque en realidad lo esté.


Tenga en cuenta que el autor/mantenedor de U-Boot considera cuestionable el uso (generalizado) de usar un zImage dentro de un uImage:

En realidad es bastante estúpido usar un zImage dentro de un uImage. Es mucho mejor para usar normal (sin comprimir) imagen del núcleo, comprimirlo usando solo gzip, y usar esto como poayload para mkimage. Por aquí U-Boot hace el uncompresiong en lugar de incluir otro uncompressor con cada imagen del kernel.

(citado de https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html)


¿Qué tipo de imagen del núcleo tengo que usar?

Puedes elegir lo que quieras programar.
Para la economía de almacenamiento, probablemente debería elegir una imagen comprimida sobre la sin comprimir una.
Tenga en cuenta que ejecutar el núcleo (presumiblemente el núcleo Linux) implica algo más que cargar la imagen del núcleo en la memoria. Dependiendo de la arquitectura (por ejemplo, ARM) y la versión del kernel de Linux (por ejemplo, con o sin DTB), hay registros y buffers de memoria que pueden tener que ser preparados para el kernel. En un caso también hubo inicialización de hardware que U-Boot realizó que tuvo que replicarse.

ADICIÓN

Sé que u-boot necesita un núcleo en formato uImage.

Esto es preciso para todas las versiones de U-Boot que solo tienen el comando bootm.
Pero las versiones más recientes de U-Boot también podrían tener el comando bootz que puede arrancar un zImage.

 89
Author: sawdust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-01 20:50:46