On Sun, Apr, 15, 2001 at 00:10:34 +0200, Santiago Vila wrote: > Tanto zImage como bzImage son distintos formatos de n�cleo. Creo que > la diferencia est� en la forma en la que se cargan en memoria (algunos > port�tiles, por ejemplo, no pueden usar n�cleos bzImage).
S�. zImage lee el kernel comprimido a 0x10000 hasta max. 0x8EFFF y por eso est� limitado a 508 kbyte. Para liberarse de esta limitaci�n bzImage usa no solamente los primeros 640 kbyte de 0x00000 a 0x9FFFF sino tambi�n la �rea arriba de 1 Mbyte (0x100000). bzImage carga el kernel en bloques de 64 kbyte a 0x10000 hasta 0x1FFFF y los mueve a 0x100000 y las direcciones siguientes que normalmente no se pueden accesar en el real mode del x86. Despu�s de cargar el kernel comprimido �ste se encuentra en 0x10000 (zImage) resp. 0x100000 (bzImage). zImage copia ahora el kernel a 0x1000. Despu�s de unos setups salta a 0x1000 resp. 0x100000. Esto pasa en setup.S. El kernel comprimido contiene en su principio la rutina para descomprimirse. En los dos casos se descomprime el kernel y escribe el kernel descomprimido a 0x100000 (1 Mbyte) a la memoria. En caso de bzImage no es posible directamente ya que en 0x100000 se encuentra el kernel comprimido. Por eso usa temporalmente la memoria de los primeros 640 kbyte y despu�s del kernel comprimido. El c�digo se encuentra en head.S y compressed/misc.c En los dos casos el kernel se encuentra finalmente en 0x100000 y ah� se ejecuta start_kernel que arranca el kernel. Todo antes sirve solamente para poner el kernel descomprimido a 0x100000 debido a la arquitectura vieja de las PCs. Todo esto est� documentado en /usr/src/linux/arch/i386/boot/. -- * Debian = GNU/Linux XP *

