Siguiente Arriba Anterior Contenido Indice

E.2 ¿Que es MILO?

¿Que es MILO?

En los sistemas PC basados en Intel, el firmware de la BIOS configura el sistema y luego carga la imagen a ejecutar desde el sector de arranque de un sistema de ficheros DOS. Esto es mas o menos lo que MILO hace en un systema basado en Alpha, sin embargo existen varias diferencias interesantes entre el firmware de la BIOS y MILO, not least of which es que MILO incluye y usa controladores de dispositivos estandard de Linux no modificados. MILO es firmware, no como LILO, el cual delega (relies) en el firmaware de la BIOS para cargarse a si mismo. Las principales partes funcionales de MILO son:

  1. PALcode,
  2. Código de configuración de memoria (construye tablas de páginas y habilita el direccionamiento virtual),
  3. Código de video (Código de emulación BIOS y TGA (21030)),
  4. Código del kernel de Linux. Incluye código real del kernel de Linux (por ejemplo, el manejador de interrupciones) y un kernel de Linux sintetico o falso,
  5. Controladores de dispositivos de bloque de Linux ( por ejemplo, la disquetera),
  6. Soporte a sistemas de fichero (ext2, MS-DOS e ISO9660),
  7. Código del interfaz de usuario (MILO),
  8. Código de interfaz del kernel (configura el HWRPB y el mapa de memoria para Linux),
  9. Código de NVRAM para gestionar las variables de entorno.

Los siguientes parrafos describen estas partes funcionales más detalladamente.

Se puede pensar en el PALcode como una diminuta capa de software que adapta el chip a un sistema operativo en particular. Se ejecuta en un modo especial (PALmode) el cual tiene ciertas restricciones pero usa el juego de instrucciones estandard de Alpha con solo cinco instrucciones extra. De esta forma, el chip Alpha puede ejecutar sistemas operativos tan diversos como Windows NT, OpenVMS, Digital Unix y, por supuesto, Linux. El PALcode que usa MILO (y therefore el mismo Linux) es, como el resto de MILO, freeware. Se deriva del software de ejemplo Digital Unix PALcode de la Evaluation Board de Digital. Se ha obtenido del Digital Unix Palcode del software de ejemplo proporcionado con la placa de evaluació de Digital. Las diferencias entre los diferentes PALcodes se deben a las diferencias en el mapa de direcciones y en el manejo de interrupciones que existen entre los chips Alpha (los sistemas basados en el 21066 tienen un mapa de I/O diferente al de los sistemas 21064+2107x) y diferentes sistmas basados en Alpha.

Para que MILO opere apropiadamente necesita saber que memoria esta disponible, donde Linux eventualmente podría ser ejectado y debe ser capaz de reservar [allocate] memoria temporal para los controladores de dispositivo de Linux. El código mantiene un mapa de memoria que tiene entradas para paginas reservadas permanente y temporalmente. Al arrancar, MILO se autodescomprime en el sitio apropiado en la memoria fí. Cuando transfiere el control al kernel de Linux, reserva memoria para su propia versión comprimida, para el PALcode (que es necesario para el kernel) y algunas estructuras de datos. Esto deja la mayoria de la memoria del sistema para el propio Linux.

La ultima accion del código de memoria es configurar y activar el direccionamiento virtual, de forma que las estructuras de datos que Linux espera encontrar se encuentren en el lugar correcto en la memoria virtual.

MILO contiene código de video que inicializa y usa los dispositivos de video para el sistema. Puede detectar y usar un dispositivo VGA si hay alguno, sino intentaría usar un dispositivo de video TGA(21030). Si esto fallara, asumir&iactuea que no hay dispositivo gráfico. La emulación BIOS que la imagen estandard, pre-generada, incluye la propia emulación BIOS de Digital, la cual soporta la mayoria, si no todos, los dispositivos graficos estandard disponibles.

Los controladores de dispositivo de Linux estan junto al kernel y esperan ciertos servicios del kernel. Alguno de estos servicios son proporcionados directamente por el código del kernel de Linux, por ejemplo el manejador de interrupciones y otros son proporcionados por las rutinas parecidas del kernel.

La caracteristica [feature] más potente del MILO es que se le pueden integrar [embed] controladores de dispositivo sin modificarlos. Esto le proporciona el potencial para soportar todo dispositivo que se cree para Linux. MILO incluye todos los dispositivos de bloque que son configurados en el kernel de Linux que esta compilado [built] contra asi como un monton de codigo para dispositivos de bloque (por ejemplo, ll_rw_blk()).

MILO carga el kernel de Linux del sistema de ficheros real en vez de los bloques de arranque y otros sitios extraños. Entiende los sistemas de ficheros MSDOS, EXT2 e ISO9660. Ficheros con formato Gzip son soportados y estan recomendados, particularmente si se esta cargando desde un disquete que es mas lento. MILO los reconoce por su extensión .gz.

Integrado en MILO se encuentra un controlador simple de teclado, el cual, junto con un igualmente simple controlador de video le permite tener un simple interfaz de usuario. Ese interface te permite listar sistemas de ficheros en los dispositivos configurados, arrancar Linux o ejecutar utilidades de actualización de la flash y configurar variables de entorno que controlan el arranque del sistema. Como LILO, se pueden pasar argumentos al Kernel.

MILO le debe indicar al kernel de Linux que clase de sistema es, cuanta memoria hay y cual de esta memoria esta libre. Lo hace usando la estructura de datos HWRPB (Hardware Restart Parameter Block) y las descripciones asociadas del grupo de memoria. Son colocados en el lugar apropiado de la memoria virtual justo antes de que el control sea pasado al kernel de Linux.


Siguiente Arriba Anterior Contenido Indice