(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

172. O que é MILO?

Em computadores PC baseados em Intel, o firmware do BIOS configura o sistema e carrega a imagem a ser executada a partir do bloco de inicialização do sistema de arquivos DOS. É mais ou menos isso que o MILO faz ao ser executado em sistema baseado em processadores Alpha, apesar de haverem diversas diferenças interessantes entre o firmware do BIOS e o MILO, apesar do MILO incluir e usar programas de controle de dispositivos do Linux sem modificá-los. MILO é firmware, diferentemente do LILO, o qual se baseia no firmware do BIOS para poder ser carregado.

As principais partes funcionais do MILO são:

  1. PALcode,
  2. Código de configuração de memória (construção de tabelas de páginas e acionamento de endereçamento virtual),
  3. Código de Vídeo (emulação de código do BIOS e TGA (21030)),
  4. Código de kernel do Linux, que inclui código real, como por exemplo, gerenciamento de interrupções e Linux kernel ersatz ou mock,
  5. Programas de controle de dispositivos de blocos (por exemplo, a unidade de disquete),
  6. Suporte a sistemas de arquivos (ext2, MS-DOS e ISO9660),
  7. Código de interface de usuário (MILO),
  8. Código de interface de kernel (configura o HWPRB e mapa de memória para o Linux)
  9. Código NVRAM para gerenciamento de variáveis de ambiente.

Os parágrafos a seguir descrevem estas funcionalidades em maiores detalhes:

PALcode pode ser entendido como uma pequena camada de software que adequa um chip a um determinado sistema operacional. Ele é executado em um modo especial (PALmode) o qual tem certas restrições, mas ele utiliza um conjunto padrão de instruções Alpha com somente cinco instruções adicionais. Desta forma, o chip Alpha consegue executar diversos sistemas operacionais como Windows NT, OpenVMS, Digital Unix e, obviamente, Linux. O PALcode que o MILO utiliza (e também o Linux) é, como o restante do MILO, de livre distribuição. Ele é derivado da Evaluation Board da Digital, de seu software Digital Unix PALcode de exemplo. As diferenças entre os diversos PALcodes se devem às variações de mapeamento de endereços e gerenciamento de interrupções existentes entre chips Alpha (sistemas baseados em 21066 tem um diferente mapa de E/S do que sistemas 21064+2107x) e os diferentes sistemas baseados em Alpha.

Para que o MILO possa operar adequadamente é necessário conhecer a quantidade de memória disponível, de onde o Linux irá ser executado e ele deve ser capaz de alocar memória temporária para os programas de controles de dispositivos do Linux. O código mantém um mapa de memória que tem entradas para páginas alocadas permanente e temporariamente. Na sua inicialização, MILO se auto descomprime no local correta da memória física. Quando ele passa o controle para o kernel do Linux, ele reserva memória para a sua própria versão comprimida, para o PALcode (que é necessário para o kernel) e para algumas estruturas de dados. Com isso, ele deixa quase toda a memória no sistema para o Linux.

A última parte do código de memória consiste em configurar e ativar endereçamento virtual, assim as estruturas de dados que Linux espera encontrar estarão nos locais corretos da memória virtual.

MILO contém código de vídeo que inicializa e utiliza o dispositivo de vídeo parta o sistema. Ele irá detectar e usar um dispositivo VGA caso haja algum, de outra forma irá tentar um dispositivo TGA. Caso este procedimento falhe, ele assumirá que não nenhum dispositivo gráfico. A emulação de BIOS padrão, pré construída, cuja imagem é incluída, é a da própria Digital, a qual suporta, se não todos, a absoluta maioria dos dispositivos gráficos disponíveis.

Programas de controles de dispositivos estão presentes no kernel e esperam certos serviços a serem dispensados pelo próprio kernel. Alguns destes serviços são providos diretamente pelo código do kernel, como por exemplo o gerenciamento de interrupções e outros são providos por rotinas similares às do kernel.

A funcionalidade mais poderosa do MILO reside na possibilidade de se usar programas de controle de dispositivos sem qualquer necessidade de alterações. Isto viabiliza o suporte a qualquer programa de controle que possa ser usado com Linux. MILO inclui todos os dispositivos de blocos que estejam configurados no kernel do Linux, assim como uma grande quantidade de programas de controle externos (por exemplo, ll_rw_blk()).

o MILO carrega o kernel do Linux a partir de um sistema de arquivos real, ao invés de inicializá-lo a partir de blocos ou outros estranhos lugares. Ele suporta sistemas de arquivos MSDOS, EXT2 e ISO9660. Arquivos compactados com o utilitário Gzip são suportados e recomendados se a carga do sistema é realizada a partir de um disquete que seja muito lento. MILO os reconhece através do sufixo .gz.

Interno ao MILO há um programa de controle de teclado que, em conjunto com um programa igualmente simples de vídeo, permite que se tenha uma interface simples para o usuário, a qual permite que se liste os sistemas de arquivos nos dispositivos configurados, inicialize o Linux ou execute os utilitários de atualização rápida e configure variáveis de ambiente que controla a inicialização do sistema. Assim como LILO, pode-se passar argumentos para o kernel.

MILO deve indicar para o kernel qual o tipo de sistema que ele é, quanta memória há e quanto de memória está disponível. Isso é feito através do uso do estrutura de dados denominada HWRPB (Bloco de Parâmetros de Reinicialização do Hardware) e das descrições de memória associadas. Estas estruturas são localizadas na memória virtual, imediatamente antes do controle ser passado para o núcleo do Linux.


Página seguinte Página anterior Índice