COMO FAZER Miniloader Alpha
  David A. Rusling, david.rusling@reo.mts.dec.com
  v0.84, 6 December 1996

  Este documento descreve o Miniloader, um programa Alpha baseado em
  sistemas que podem ser usados para inicializar a máquina e o
  carregador do Linux. O Miniloader do Alpha para Linux é também
  conhecido como MILO.
  ______________________________________________________________________

  Índice geral


  1. Introdução

     1.1 Direitos Autorais
     1.2 Novas Versões Deste Documento

  2. O que é MILO?

  3. Imagens Pré Construídas do MILO

  4. Como Construir o MILO

     4.1 Como carregar o MILO
        4.1.1 Carregando o MILO a partir do firmware ARC do Windows NT
     4.2 Carregando o Linux a partir do Windows NT AlphaBIOS
        4.2.1 Carregando o MILO a partir do Monitor de Depuração de uma Placa de Avaliação
     4.3 Carregando o MILO a partir de um Disquete de Bloco de Inicialização
     4.4 Carregando o  MILO a partir da Flash/ROM
     4.5 Carregando o MILO a partir da Console SRM
     4.6 Informações Específicas
        4.6.1 AxpPCI33 (Noname)
        4.6.2 AlphaPC64 (Cabriolet)
        4.6.3 EB66+
        4.6.4 EB64+/Aspen Alpine
        4.6.5 Universal Desktop Box (Multia)
        4.6.6 EB164
        4.6.7 PC164
        4.6.8 XL266
        4.6.9 Platform2000

  5. Interface de Usuário MILO

     5.1 O Comando Help
     5.2 Inicializando o  Linux
     5.3 Reinicializando o Linux
     5.4 O comando ''bootopt''

  6. Executando O Utilitário de Gerenciamento Flash

     6.1 O Comando  ''help''
     6.2 2.7.2 O comando ''list''
     6.3 2.7.3 O comando ''program''
     6.4 O comando ''environment''
     6.5 O comando ''bootopt''
     6.6 O comando ''quit''

  7. Restrições

  8. Solução de Problemas

  9. Agradecimentos



  ______________________________________________________________________


  11..  IInnttrroodduuççããoo




  Este documento descreve o MiniLOader (MILO) para Linux em máquina
  Alpha AXP. Este firmware é usado para inicializar sistemas baseados em
  Alpha AXP, carregar e iniciar o Linux e finalmente, prover PALcode
  para Linux.



  11..11..  DDiirreeiittooss AAuuttoorraaiiss



  O COMO FAZER Alpha Miniloader (MILO) é de propriedade de  (C) 1995,
  1996, 1997 David A Rusling.

  Tradução da Conectiva Informática Ltda. em maio de 1999.


  DDiirreeiittooss AAuuttoorraaiiss..  Como todos os documentos COMO FAZER, ele pode ser
  reproduzido e distribuído em todo ou em parte, em qualquer meio físico
  ou eletrônico, desde que este aviso de direitos autorais seja mantido.
  Pode-se traduzir este COMO FAZER em qualquer idioma, desde que este
  aviso seja mantido e se adicione o nome do tradutor do documento.


  AAvviissoo LLeeggaall..  Ainda que se tenha buscado incluir as mais corretas e
  atualizadas informações disponíveis para o autor, não é possível a
  este garantir que o uso das informações neste documento não provoquem
  perda de dados ou de equipamentos. Não é disponibilizada QUALQUER
  GARANTIA sobre as informações contidas neste COMO FAZER e o autor ou o
  editor não podem ser responsabilizados por qualquer conseqüência
  resultante do uso deste documento.



  11..22..  NNoovvaass VVeerrssõõeess DDeessttee DDooccuummeennttoo



  A última versão deste documento pode ser obtida em
  ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs e
  David Mosberger-Tang é gentil o suficiente para incluir um formulário
  HTML em seu excelente site de Perguntas & Respostas sobre Linux Alpha
  em http://www.alphalinux.org/~axplinux.


  22..  OO qquuee éé MMIILLOO??





  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 _._g_z.


  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.

  33..  IImmaaggeennss PPrréé CCoonnssttrruuííddaass ddoo MMIILLOO






  Caso se deseje executar o MILO em sistemas baseados em Alpha, então
  deve haver uma imagem padrão pré construída do MILO que possa ser
  usadas. Elas podem ser encontradas, junto com os fontes e outras
  coisas interessantes, em ftp://gatekeeper.dec.com/pub/Digital/Linux-
  Alpha/Miniloader.


  O subdiretório  images contém um diretório para cada padrão de sistema
  (por exemplo AlphaPC64) com as imagens do MILO observando a seguinte
  convenção de nomenclatura:
  1. MILO - Imagem executável do Miniloader, a qual pode ser carregada
     de diversas formas,

  2. fmu.gz - Utilitário de gerenciamento rápido,

  3. MILO.dd - Imagem de disquete do bloco de inicialização. Deve ser
     gravado através do comando rawrite.exe ou dd no Linux.


  O subdiretório test-images, assim como o subdiretório images contém um
  diretório por sistema padrão. Estas são imagens em caráter
  experimental e devem conter as últimas funcionalidades disponíveis.


  44..  CCoommoo CCoonnssttrruuiirr oo MMIILLOO





  O MILO é construído separado do kernel. Como MILO requer partes do
  kernel para a função (por exemplo, gerenciamento de interrupções)
  deve-se inicialmente configurar e construir um kernel que coincida com
  o MILO que se deseje construir. Isso significa principalmente que se
  deva construir que o MILO e o kernel devam Ter a mesma versão. Então
  MILO-2.0.25.tar.gz deverá ser construído em conjunto com
  linux-2.0.25.tar.gz.  MILO poderá ser construído com uma versão
  posterior do kernel, mas o contrário não é verdadeiro.  Agora que as
  bibliotecas compartilhadas ELF são totalmente suportadas, há duas
  versões dos fontes do MILO. Para construi-lo sob o sistema ELF, deve-
  se inicialmente desempacotar os fontes do MILO padrão e então
  atualizar aqueles fontes com o mesmo número de versão da atualização
  ELF. No restantes deste documento, assumiremos que os fontes do kernel
  e os arquivos objeto estão armazenados na sub árvore de diretórios de
  /usr/src/linux e que o kernel do Linux foi totalmente construído com o
  comando make boot


  Para construir o MILO, altere o diretório de trabalho para a árvore de
  diretórios de fontes do MILO e acione o utilitário make da seguinte
  forma:


       $    make KSRC=/usr/src/linux config





  Assim como no kernel do Linux, diversas perguntas serão apresentadas.




       Ecoar a saída na porta serial (MINI_SERIAL_ECHO) [y]




  É uma boa idéia ecoar a saída da instrução printk do kernel em
  /dev/ttyS0 caso seja possível. Em caso afirmativo pressione "y", caso
  contrário "n". Todas as imagens padrão pré construídas do MILO incluem
  E/S da porta serial utilizando a COM1.



       Usar a emulação de código do Digital BIOS (não é livre) \
                                       (MINI_DIGITAL_BIOS_EMU) [y]





  Este código é incluído como uma biblioteca a qual é livremente
  distribuída desde que seja utilizada em um sistema baseado em Alpha.
  Os fontes não estão disponíveis. Caso se responda n então o software
  de livre distribuição alternativo disponível que emula o BIOS será
  ativado. Seus fontes estão incluído no MILO. Note-se que não é
  possível neste momento utilizar o código de emulação de BIOS da
  Digital em uma sistema ELF (a biblioteca ainda não está pronta), sendo
  que neste caso deve-se obrigatoriamente responder não.




       Construir PALcode a partir do fontes (cuidado: isto pode ser perigoso) \
                                        (MINI_BUILD_PALCODE_FROM_SOURCES) [n]





  Isto somente deve ser feito caso os fontes do PALcode tenham sido
  alterados, de outra forma utilize o PALcode padrão pré construído com
  o MILO.


  Pode-se agora construir a imagem do MILO:


       $    make KSRC=/usr/src/linux





  Quando a construção for finalizada com êxito, a imagem do MILO estará
  em uma arquivo denominado milo. Há uma série de imagens chamadas
  milo.*, que devem ser ignoradas.


  44..11..  CCoommoo ccaarrrreeggaarr oo MMIILLOO





  Os métodos de suporte de carga do MILO mais comum é o realizado a
  partir do firmware ARC do Windows NT que muitos sistemas tem
  instalados de fábrica. De qualquer forma há uma variedade de formas de
  cargas, a saber:

  ·  um disquete de bloco de inicialização "falso"

  ·  firmware ARC do Windows

  ·  Windows NT AlphaBIOS,

  ·  Console SRM da Digital

  ·  Monitor de Depuração de Placa de Avaliação Alpha,

  ·  flash/ROM.



  44..11..11..  CCaarrrreeggaannddoo oo MMIILLOO aa ppaarrttiirr ddoo ffiirrmmwwaarree AARRCC ddoo WWiinnddoowwss NNTT





  Muitos, se não todos, os sistemas baseados em Alpha AXP incluem o
  firmware ARC do Windows NT e este é o método preferido de inicializar
  o MILO e por conseqüência o Linux. Uma vez que o firmware do Windows
  NT esteja sendo executado e se tenha a imagem correta do MILO para o
  sistema, o método será completamente genérico.


  O firmware ARC do Windows NT é um ambiente no qual programas podem ser
  executados e podem executar chamadas de retorno ao firmware para que
  este execute determinadas ações. O Carregador de Sistemas do Windows
  NT é um programa que faz exatamente isto. Linload.exe é um programa
  muito mais simples que executa o estritamente necessário para carregar
  e executar o MILO. Ele carrega o arquivo imagem apropriado na memória
  no endereço 0x00000000 e então executa uma chamada de troca PAL. MILO,
  assim como o Linux, utiliza um diferente PALcode daquele utilizado
  pelo  Windows NT, razão pela qual a troca é necessária. MILO coloca
  sua imagem no endereço 0x200000 e segue para o endereço de entrada do
  PALcode descrito acima.


  Antes de se adicionar uma opção de inicialização do Linux, será
  necessário copia o programa linload.exe e o  MILO apropriado que se
  deseje carregar para algum local que possa ser lido pelo firmware ARC
  do Windows NT. No seguinte exemplo, assumimos que a inicialização está
  sendo realizada de um disque em formato DOS:



  1.


  2. A partir do menu de inicialização, selecione ''Menu Suplementar''.



  3. A partir do menu suplementar, selecione ''Configurar o
     Sistema...''.



  4. No menu de configuração, selecione ''Gerenciamento de menu de
     seleção de inicialização...''.



  5. No menu de  seleção de inicialização, escolha ''Adicionar uma
     seleção de inicialização''.



  6. Selecione ''Unidade de Disquetes 0''.



  7. Informe ''\linload.exe'' como o diretório de carga do sistema
     operacional e nome.
  8. Indique que o sistema operacional está na mesma partição que o
     carregador informando ''sim''.



  9. Informe ''\'' como o diretório raiz do sistema operacional.



  10.
     Forneça à opção de inicialização criada um nome significativo, como
     por exemplo ''CLinux''.



  11.
     Indique que não se deseja inicializar o depurador durante a
     inicialização, informando ''não''.



  12.
     Deve-se voltar ao menu de seleções de inicializações. Escolha a
     opção a opção ''Alterar as seleções de inicialização. Selecione a
     opção recém criada para edição.



  13.
     Usando as setas de direção, selecione ''OSLOADFILENAME'', e informe
     o nome da imagem do MILO que se deseja utilizar, por exemplo
     ''noname.arc''.  Pressione [Enter].



  14.
     Pressione [Esc] para retornar ao  ''Menu de Seleção de
     Inicialização''.



  15.
     Selecione ''Configuração do Menu'' (ou pressione ESC novamente) e
     escolha a opção ''Menu Suplementar, e salvar as mudanças ''.



  16.
     A tecla ESC provocará o retorno ao menu de inicialização e pode-se
     então tentar a inicialização do MILO. Caso não se deseje que o
     Linux seja a primeira opção, pode-se então alterar a ordem de
     opções de inicialização no menu de seleções de inicialização.




  Ao final deste processo, as seleções de inicializações disponíveis
  devem se parecer com algo similar ao apresentado a seguir :








  LOADIDENTIFIER=CLinux
  SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
  OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe
  OSLOADPARTITION=multi(0)disk(0)fdisk(0)
  OSLOADFILENAME=\noname.arc
  OSLOADOPTIONS=





  Pode-se agora inicializar o MILO ( e portanto o Linux). Pode-se
  carregar o linload.exe e o MILO diretamente de um sistema de arquivos
  que o Windows NT entenda como um disco rígido NTFS ou DOS.


  O conteúdo de OSLOADOPTIONS é passado ao MILO, que o interpreta como
  um comando. Então, para se inicializar o Linux diretamente do Windows
  NT, sem a pausa do MILO pode-se utilizar as seguintes opções no
  OSLOADOPTIONS:




       boot sda2:vmlinux.gz root=/dev/sda2





  Veja a Interface de Usuário do MILO para maiores informações sobre os
  comandos disponíveis.


  Outra forma (mais rateira) de inicializar o MILO via firmware ARC do
  Windows NT, é se colocar o MILO em um disquete MS-DOS e acionar o
  programa fwupdate.exe e escolher a opção "Atualizar Firmware".



  44..22..  CCaarrrreeggaannddoo oo LLiinnuuxx aa ppaarrttiirr ddoo WWiinnddoowwss NNTT AAllpphhaaBBIIOOSS





  Com a introdução das séries XLT, a Digital alterou a interface de
  console do sistema para os equipamentos com NT de ARC para AlphaBIOS.
  Este sistema é composto por uma interface orientada por telas que pode
  ser mais familiar para os usuários de PCs. Esta mudança na interface
  da console necessita de alterações no procedimento de configuração
  para aqueles que desejem executar sistemas Linux/Alpha baseados em
  AlphaBIOS.


  O primeiro passo a ser executado é instalar a última versão do
  AlphaBIOS no sistema. Ela pode ser obtida na página Web "Atualizações
  de Programas de Controle e Softwares de Sistema" da Digital,
  localizada em http://www.windows.digital.com/support/sysoft.htp.
  Transfira o arquivo ZIP, descompacte-o e instale conforme as seguintes
  instruções:



  ·  Copie os arquivos para um disquete formatado como FAT

  ·  Ligue o equipamento e insira o disquete. Na tela de abertura
     pressione F2 para se obter o modo de configuração. e

  ·  Selecione "Atualizar AlphaBIOS"

  ·  Siga as instruções da tela.


  Uma vez que o AlphaBIOS esteja em sua última versão, pode-se iniciar a
  configuração de inicialização do sistema, conforme o descrito a
  seguir:



  ·  Crie um disquete formatado como FAT com as seguintes linhas:

  ·  linload.exe (a partir deste diretório)

  ·  milo (a versão adequada ao sistema disponível)

  ·  Ligue o sistema e insira o disquete. Na tela de abertura, pressione
     F2 para acionar o modo de configuração.

  ·  Selecione "Utilidades->Configuração de Seleção de Sistema
     Operacional..."

  ·  Pressione INSERIR para adicionar a seleção de um novo sistema
     operacional.

  ·  Para "Nome de Inicialização", informe algo como "CLinux".
     Pressione TAB para ir para o próximo campo.

  ·  Pressione seta para baixo, até que a seleção para "Arquivo de
     Seleção" esteja sobre "A:".  Tecle TAB para ir para o próximo
     campo.

  ·  Informe "linload.exe".  TAB _d_u_a_s _v_e_z_e_s (ou seja, ignore o
     dispositivo de carga do SO - é irrelevante)

  ·  Informe  "\" no caminho do arquivo de carga do SO.

  ·  Pressione ENTER para adicionar a seleção.


  Neste ponto, AlphaBIOS irá provavelmente apresentar um grande e nada
  amigável diálogo denominado "Atenção: Seleção do Sistema Operacional
  não é válida". Ignore este erro (é somente (mais um) problema com o
  NT) e pressione ENTER para continuar.



  ·  Pressione F10 para salvar as mudanças recém feitas; pressione ENTER
     para confirmá-las.

  ·  Pressione ESC duas vezes para retornar à tela de abertura.

  ·  Use as setas para cima e para baixo para selecionar a opção de
     inicialização recém configurada, e pressione ENTER para
     inicializá-la.

  ·  AlphaBIOS irá carregar linload, o qual irá acionar o MILO. Ao se
     obter o indicador de linha de comando do MILO, proceda como se
     estivesse em uma instalação baseada em sistemas ARC.



  Caso se tenha dedicado a primeira partição do disco rígido como uma
  pequena partição FAT de inicialização (conforme o procedimento de
  instalação solicita), e uma vez que o Linux esteja instalado, deve-se
  então copiar o linload.exe e o  milo para esta partição. Uma vez que
  se desligue o sistema, pode-se modificar o menu de seleção do Linux
  para carregar o MILO a partir desta partição da seguinte forma:



  ·  Na tela de abertura, pressione F2 para acionar o modo de
     configuração

  ·  Selecione "Utilidades->Configuração de Seleção de Sistema
     Operacional..."

  ·  Selecione a entrada para CLinux, e pressione F6 para editá-la.

  ·  Pressione TAB sobre a opção de dispositivo da linha "Arquivo de
     Inicialização". Use as teclas de setas para selecionar a partição
     do disco rígido onde linload e milo residem (tipicamente "Disco 0
     Partição 1" ou  "Disco 1 Partição 1"). Pressione ENTER para
     confirmar a seleção.

  ·  Caso se deseje auto inicializar o Linux após o MILO ser carregado,
     então pressione TAB sobre  a linha de "Opções de OS " e informe o
     comando MILO para carregar o sistema, como por exemplo "boot
     sda2:vmlinux.gz". Pressione ENTER para confirmar a seleção.

  ·  Pressione F10 para salvar as mudanças. Pressione ENTER para
     confirmar.


  Uma vez que isso tenha sido realizado, inicializar e executar o Linux
  em um sistema baseado em AlphaBIOS será muito similar aos
  procedimentos de um sistema ARC.



  44..22..11..  CCaarrrreeggaannddoo oo MMIILLOO aa ppaarrttiirr ddoo MMoonniittoorr ddee DDeeppuurraaççããoo ddee uummaa
  PPllaaccaa ddee AAvvaalliiaaççããoo






  Placas de avaliação (e freqüentemente outros designs clonados a partir
  delas) incluem suporte ao Monitor de Depuração de uma Placa de
  Avaliação. Consulte a documentação do sistema disponível antes de
  tentar utilizar este método para carregar o MILO. Os seguintes
  sistemas são _c_o_n_h_e_c_i_d_o_s por incluírem o suporte ao Monitor de
  Depuração de Placa de Avaliação:

  ·  AlphaPC64 (Seção Informações Específicas)

  ·  EB64+ (Seção Informações Específicas)

  ·  EB66+ (Seção Informações Específicas)

  ·  EB164 (Seção Informações Específicas)

  ·  PC164 (Seção Informações Específicas)


  Antes de prosseguir com este método, deve-se considerar que versões
  mais antigas do Monitor de Depuração de Placa de Avaliação não
  incluíam programas de controle de teclado e vídeo, devendo-se estar
  preparado para se conectar ao sistema através da porta serial para se
  poder usar o Monitor de Depuração. Esta interface é muito simples e ao
  se digitar o comando "help" é apresentada uma lista de comandos
  disponíveis. Os mais interessantes são aqueles que incluem a palavra
  boot ou load.


  O Monitor de Depuração de Placa de Avaliação pode carregar uma imagem
  via rede (netboot) ou via disquete (flboot). Nestes casos, configure o
  endereço de inicialização em 0x200000 (> bootadr 200000) antes de
  inicializar a imagem.


  Caso a imagem esteja em um disquete (note-se que somente disquetes em
  formato DOS são suportados), então o seguinte comando será necessário:
  nd:




            AlphaPC64> flboot <MILO-image-name>







  44..33..  CCaarrrreeggaannddoo oo MMIILLOO aa ppaarrttiirr ddee uumm DDiissqquueettee ddee BBllooccoo ddee
  IInniicciiaalliizzaaççããoo





  Somente o AxpPCI33 é _c_o_n_h_e_c_i_d_o por incluir suporte ao disquete de
  bloco de inicialização (Seção Informações Específicas).


  Caso não se tenha uma imagem .dd padrão do MILO pré construída, então
  será necessário construir uma disquete de bloco de inicialização SRM.
  Uma vez que se tenha construído o MILO, será necessário executar os
  seguintes comandos no sistema Digital Unix disponível:




            fddisk -fmt /dev/rfd0a
            cat mboot bootm > /dev/rfd0a
            disklabel -rw rfd0a 'rx23' mboot bootm





  ou em um sistema Linux:




            cat mboot bootm > /dev/fd0




  Caso se tenha uma imagem padrão do MILO disponível (digamos
  MILO.dd),pode-se então construir um disquete de bloco de inicialização
  através do seguinte comando:




            dd if=MILO.dd of=/dev/fd0






  44..44..  CCaarrrreeggaannddoo oo  MMIILLOO aa ppaarrttiirr ddaa FFllaasshh//RROOMM





  Há diversos sistemas onde o MILO podem ser colocado em memória flash e
  inicializado diretamente (ao invés do firmware ARC Windows NT):

  ·  AlphaPC64 (Seção Informações Específicas)

  ·  Noname (Seção Informações Específicas)

  ·  EB66+ (Seção Informações Específicas)

  ·  EB164 (Seção Informações Específicas)

  ·  PC164 (Seção Informações Específicas)



  44..55..  CCaarrrreeggaannddoo oo MMIILLOO aa ppaarrttiirr ddaa CCoonnssoollee SSRRMM






  A Console SRM (Sistema de Referência Manual) não reconhece
  absolutamente nada sobre sistemas de arquivos ou partições de discos.
  Ele simplesmente espera que o carregador secundário de sistemas ocupe
  um conjunto de setores físicos iniciados a partir de um deslocamento
  inicial pré determinado. As informações descrevendo o carregador
  secundário de sistemas (seu tamanho e deslocamento) são fornecidas no
  primeiro bloco de 512 bytes. Para carregar o MILO via SRM deve-se
  gerar uma estrutura em um dispositivo que o SRM possa acessar (como
  por exemplo um disquete). Esta é a causa de existirem  mboot e bootm,
  mboot está no primeiro bloco (ou descrição de inicialização) e mboot é
  a imagem de  MILO contida nos limites de 412 bytes.


  Para se carregar o MILO de um dispositivo de bloco de inicialização,
  deve-se construir mboot e bootm e colocá-lo em um dispositivo de
  inicialização usando-se o seguinte comando:




               $ cat mboot bootm > /dev/fd0



  ou encontre o arquivo MILO.dd apropriado na Internet e o grave em um
  dispositivo de inicialização usando RAWRITE.EXE ou dd.


  Uma vez que se tenha concluído esta etapa, pode-se carregar a console
  SRM e usar um dos muitos comandos de inicialização do MILO. Por
  exemplo, para iniciar o MILO de uma unidade de disquetes pode-se usar
  o seguinte comando:




               >>>boot dva0
               (boot dva0.0.0.0.1 -flags 0)
               block 0 of dva0.0.0.0.1 is a valid boot block
               reading 621 blocks from dva0.0.0.0.1
               bootstrap code read in
               base = 112000, image_start = 0, image_bytes = 4da00
               initializing HWRPB at 2000
               initializing page table at 104000
               initializing machine state
               setting affinity to the primary CPU
               jumping to bootstrap code
               MILO Stub: V1.1
               Unzipping MILO into position
               Allocating memory for unzip
               ####...





  Os seguintes sistemas são _c_o_n_h_e_c_i_d_o_s por suportar a Console SRM:

  ·  Noname (Seção Informações Específicas)

  ·  AlphaPC64 (Seção Informações Específicas)

  ·  EB164 (Seção Informações Específicas)

  ·  PC164 (Seção Informações Específicas)




  44..66..  IInnffoorrmmaaççõõeess EEssppeeccííffiiccaass






  44..66..11..  AAxxppPPCCII3333 ((NNoonnaammee))







  A placa Noname pode carregar MILO a partir do firmware ARC do Windows
  NT, da console SRM e a partir de disquetes de blocos de inicialização.
  Um utilitário de gerenciamento flash, executável sob MILO estará
  disponível quando o MILO estiver rodando e pode ser gravado em memória
  flash. De qualquer forma, esteja avisado de que ao fazer isso, a
  imagem anterior será completamente perdida, uma vez que há espaço para
  somente uma imagem.


  A forma como uma placa Noname inicializa é controlada por um conjunto
  de chaves, denominadas  J29 e J28:


                           4
               J29     2 x x x 6
                       1 x x x 5

               J28     2 x x x 6
                       1 x x x 5
                           3





  As duas opções que nos interessam são J28, pinos 1-3, a qual
  inicializa a console e o carregador da memória flash e J29, pinos 1-3,
  que inicializa a console e o carregador da unidade de disquete. A
  segunda opção é a necessária para carregar primeiramente o MILO em uma
  placa Noname.


  Uma vez que se tenha selecionado a opção de disquetes via chaves de
  configuração, coloque o disquete de bloco de inicialização SRM
  contendo o MILO na unidade e reinicialize o sistema. Em poucos
  segundos (após a luz da unidade de disquetes acender) será
  visualizadas uma tela branca e o MILO indicará o que está acontecendo.


  Caso se esteja realmente interessado em questões técnicas, a placa
  Noname carrega imagens do disquete no endereço físico 0x104000 e
  imagens da memória flash em 0x100000. Por esta razão, MILO é
  construído com o PALcode iniciando em 0x200000. Quando ele é iniciado
  primeiro, ele move a si mesmo para a localização correta (veja
  relocate.S).



  44..66..22..  AAllpphhaaPPCC6644 ((CCaabbrriioolleett))







  AlphaPC64 inclui suporte ao firmware ARC Windows NT, a console SRM e
  ao Monitor de Depuração de Placa de Avaliação. Estas imagens estão em
  memória flash, podendo-se inicializar o MILO diretamente desta
  memória. Um utilitário de gerenciamento flash, executável a partir do
  MILO está disponível uma vez que o MILO esteja sendo executado e pode
  ser gravado em memória flash. O sistema suporta variáveis de ambiente
  MILO.


  Pode-se selecionar as opções de inicialização (e MILO quando este
  estiver em memória flash) usando uma combinação de chaves de
  configuração e opções de inicialização que são salvas em BVRAM do
  relógio TOY.



  A chave é  J2, bits SP 6 e 7 têm o seguinte significado:

  ·  bit SP 6 deve estar sempre fora. Caso esta chave esteja configurada
     então o mini depurador SROM será inicializado,

  ·  bit SP 7 fechado significa a seleção da opção de inicialização no
     relógio TOY,

  ·  bit SP 7 aberto indica a inicialização através da primeira imagem
     da memória flash.


  Entãom quando o 7 bit estiver aberto, o monitor de depuração será
  inicializado e também a primeira imagem disponível na memória flash.
  Com o bit 7 fechado, a imagem selecionada pela opção de inicialização
  no relógio TOY será selecionado. O monitor de depuração, o firmware
  ARC Windows NT e o MILO suportam este tipo de configuração, mas deve-
  se ser muito cuidadoso ao se usar esta opção. Em particular, não se
  pode configurar a opção de inicialização e então na próxima vez que o
  sistema iniciar o MILO quando se estiver executando o firmware ARC do
  Windows NT, ele somente permitirá a configuração do monitor de
  depuração ou do ARC do Windows NT como opções de inicialização.


  Para se obter MILO em memória flash via Monitor de Depuração de Placa
  de Avaliação, será necessária uma imagem da memória flash. Os
  procedimentos de construção criam o MILO.rom, mas pode-se construir
  uma imagem rom usando a ferramenta makerom no software monitor de
  depuração que vem com a placa:




           > makerom -v -i7 -l200000 MILO -o mini.flash





  (digite makerom para descobrir o que os argumentos significam, porém 7
  é a identificação da imagem flash usada pela srom  e -l200000 fornece
  o endereço de carga da imagem como 0x200000).


  Carregue a imagem na memória (via o comando flload do monitor de
  depuração, netload, e assim por diante) no endereço 0x200000 e a
  seguir grave a imagem na memória flash:




            AlphaPC64> flash 200000 8





  (200000 é onde a imagem deve ser gravada na memória e 8 é o número do
  segmento onde se deve colocar a imagem. Há 16 segmentos de 1024*64
  bytes na memória flash, onde o monitor de depuração está no segmento 0
  e o firmware ARC do Windows NT está no segmento 4).


  Configure a imagem que o srom irá inicializar através da gravação do
  número da imagem no relógio TOY.

            AlphaPC64> bootopt 131





  (131 significa a terceira imagem, 129  = a primeira, 130 = a segunda e
  assim por diante).


  Desligue a máquina, feche a chave de configuração 7 e ligue a máquina
  para ver a inicialização do MILO ser acionada. Caso isso não ocorra
  retire a chave 7 novamente e reinicialize o monitor de depuração.



  44..66..33..  EEBB6666++





  A EB66+, assim como todas as placas de avaliação Alpha construídas
  pela Digital contendo o Monitor de Depuração de Placa de Avaliação,
  pode carregar o MILO. Freqüentemente (mas não sempre) as placas cujo
  design é derivado desta, incluem o monitor de depuração. Normalmente
  elas incluem também o firmware ARC do Windows NT. Um utilitário de
  gerenciamento flash, executável no MILO está disponível e pode ser
  gravado na memória flash. Este sistema suporta variáveis de ambiente
  MILO.


  Estes sistemas tem diversas imagens de inicialização controladas por
  chaves de configuração. Os dois bancos de chave são J18 e J16 e estão
  localizadas na parte inferior e no meio da placa (considerando que o
  processador Alpha seja o topo). Pode-se selecionar entre as opções de
  inicialização (e o MILO quando este esteja presente na memória flash)
  usando uma combinação de chaves e uma opção de inicialização que é
  salva na NVRAM no relógio TOY.


  Chaves 7-8 fechados de J18 significam que deve ser inicializada a
  imagem descrita pela opção de inicialização do sistema. Jumper 7-8 de
  J18 abertos significam que se deve inicializar o Monitor de Depuração
  da Placa de Avaliação.


  Gravar-se uma imagem na memória flash via o Monitor de Depuração da
  Placa de Avaliação é exatamente igual ao procedimento adotado para
  placas AlphaPC64.



  44..66..44..  EEBB6644++//AAssppeenn AAllppiinnee







  Este sistema é muito similar ao AlphaPC64 exceto pelo fato dele não
  conter memória flash a partir da qual o MILO pode ser carregado. A
  placa EB64+ tem duas ROMs, uma das quais contém o firmware ARC Windows
  NT e o outro contém o Monitor de Depuração da Placa de Avaliação.

  A placa Aspen Alpine é um pouco diferente uma vez que contém somente
  uma ROM que contém o firmware ARC Windows NT.



  44..66..55..  UUnniivveerrssaall DDeesskkttoopp BBooxx ((MMuullttiiaa))







  Este é um pacote muito compacto com um sistema baseado em 21066 pré
  empacotado que pode incluir uma dispositivo gráfico TGA 21030). Pode-
  se usar _q_u_a_s_e todas as placas gráficas PCI nesta máquina, mas pode ser
  uma opção mais interessante aguardar pelo suporte completo a Tga no
  XFree86. Ela inclui o firmware ARC Windows NT e inicialização pelo
  método de opção de preferência do administrador.



  44..66..66..  EEBB116644





  A EB164, assim como todas as placas de avaliação Alpha da Digital
  contém um Monitor de Depuração da Placa de Avaliação, o qual pode
  carregar o MILO. Freqüentemente (mas não sempre) placas derivadas
  deste desenho incluem o monitor de depuração também. Normalmente,
  estas placas incluem o firmware ARC Windows NT. A console SRM e um
  utilitário de gerenciamento flash, executável a partir do MILO, estão
  disponíveis. Este sistema suporta variáveis MILO de ambiente.


  Este sistemas têm diversas imagens de inicialização controladas por
  chaves de configuração. Os dois bancos de chaves estão em J1 e estão
  localizados na base da placa, à esquerda (caso o processador Alpha
  esteja no topo). Pode-se selecionar entre as opções de inicialização
  (e MILO quando este estiver gravado na memória flash) usando uma
  combinação de chaves e a opção de inicialização que estiver presente
  na NVRAM do relógio TOY.


  Chave SP-11 de J1 fechada significa que deve ser inicializada a imagem
  definida pela opção de inicialização. Estando aberta a chave SP-11 de
  J1 significa que deve ser inicializada o Monitor de Depuração da Placa
  de Avaliação.


  Gravar-se uma imagem na memória flash via o Monitor de Depuração da
  Placa de Avaliação é exatamente igual ao procedimento adotado para as
  placas AlphaPC64.



  44..66..77..  PPCC116644





  A PC164, assim como todas as placas de avaliação Alpha da Digital
  contém um Monitor de Depuração da Placa de Avaliação, o qual pode
  carregar o MILO. Freqüentemente (mas não sempre) placas derivadas
  deste desenho incluem o monitor de depuração também. Normalmente,
  estas placas incluem o firmware ARC Windows NT. A console SRM e um
  utilitário de gerenciamento flash, executável a partir do MILO, estão
  disponíveis. Este sistema suporta variáveis MILO de ambiente.


  Este sistemas têm diversas imagens de inicialização controladas por
  chaves de configuração. O bloco de chaves principal, J30, contém as
  chaves de configuração do sistema e a chave CF6 fechada significa que
  o sistema irá inicializar o monitor de depuração. O padrão é aberto.


  Gravar-se uma imagem na memória flash via o Monitor de Depuração da
  Placa de Avaliação é exatamente igual ao procedimento adotado para as
  placas AlphaPC64.




  44..66..88..  XXLL226666





  a XL266 é uma placa da família de sistemas conhecida como Avante. Ele
  tem uma placa grande contendo um processador Alpha e cache que devem
  ser conectados à placa principal no ângulos corretos. Esta placa pode
  substituir uma placa Pentium equivalente.


  Alguns destes sistemas são fornecidos com a console SRM, mas outros,
  especialmente o XL266 são disponibilizados somente com o firmware ARC
  Windows NT.


  Minha lista de sistemas compatíveis:

  ·  AlphaStation 400 (Avanti),

  ·  AlphaStation 250,

  ·  AlphaStation 200 (Mustang),

  ·  XL. Há dois sabores, XL266 e XL233 cuja única diferença é a
     velocidade de processador e tamanho do cache.


  NNoottaa:: o sistema que eu uso para desenvolver e testar o MILO é um XL266
  e esse é o único que eu posso garantir que funcione. De qualquer
  forma, tecnicamente, todos os sistemas acima são equivalentes, eles
  tem os mesmos conjuntos de processadores de suporte e os mesmos
  mecanismos de gerenciamento de interrupções.



  44..66..99..  PPllaattffoorrmm22000000





  Este é um sistema baseado em um 21066 233Mhz.


  55..  IInntteerrffaaccee ddee UUssuuáárriioo MMIILLOO





  Uma vez que se tenha instalado, carregado e executado o MILO
  corretamente, será apresentado o indicador de linha de comando na
  tela. Há uma interface muito simples que pode ser usada para
  inicializar uma imagem do kernel do Linux em particular. Digitar-se
  "help" é uma boa idéia para se obter um sumário dos comandos
  disponíveis.



  55..11..  OO CCoommaannddoo HHeellpp





  Provavelmente o comando mais útil do MILO:





       MILO> help
       MILO command summary:

       ls [-t fs] [dev:[dir]]
                        - Lista os arquivos em um diretório ou dispositivo
       boot [-t fs] [dev:file] [boot string]
                        - Inicializa o Linux a partir do arquivo ou dispositivo
                          especificado.
       run [-t fs] dev:file
                        - Executa um programa em modo individual
       show             - Lista todos os dispositivos e sistemas de arquivos conhecidos
       set VAR VALOR    - Configura a variável VAR para o VALOR informado
       unset VAR        - Apaga a variável especificada
       reset            - Apaga todas as variáveis
       print            - Lista as configurações atuais das variáveis
       help [var]       - Lista este texto de ajuda

       Dispositivos são especificados como: fd0, hda1, hda2, sda1...
       Use a opção '-t nome_do_sistema_de_arquivos' caso se deseje usar algo diferente do sistema de arquivos padrão ('ext2'). Use o comando 'show' para listar os sistemas de arquivos e dispositivos conhecidos.
       Digite 'help var' para obter uma lista da variáveis do MILO.





  NNoottaa:: o comando bootopt funciona somente em sistemas AlphaPC64 (e
  similares). Verifique a documentação da placa para verificar o seu
  significado.


  DDiissppoossiittiivvooss.. a menos que se utilize um comando que necessite fazer
  uso de um dispositivo, nenhum dispositivo de inicialização será
  utilizado. Os primeiros comando show, ls, boot ou  run farão com que
  os dispositivos presentes no MILO sejam inicializados. Dispositivos
  são nominados exatamente da mesma forma que o Linux o faz. Logo o
  primeiro disco IDE será chamado 'hda' e a sua primeira partição será
  'hda1'.Use  o comando show para mostrar os dispositivos disponíveis.


  SSiisstteemmaass ddee AArrqquuiivvooss MILO suporta três tipos de sistemas de arquivos:
  MSDOS, EXT2 e ISO9660. Assim que o dispositivo esteja disponível, MILO
  poderá executar os comandos list,boot ou run em uma imagem armazenada
  em algum dos sistemas de arquivos disponíveis. O sistema de arquivos
  padrão do MILO é denominado EXT2 e deve-se indicar ao MILO caso se
  esteja utilizando um sistema diferente. Todos os comandos que usem
  nomes de arquivos permitem que o parâmetro seja passado no formato -t
  [nome_de_arquivo]. Então, caso se deseje a lista de arquivos contidos
  em um CD ROM SCSI, pode-se digitar o seguinte comando:




            MILO> ls -t iso9660 scd0:





  VVaarriiáávveeiiss.. MILO contém algumas variáveis configuráveis que auxiliarão
  o processo de inicialização. Caso se esteja carregando o firmware ARC
  Windows NT, então o MILO fará uso das variáveis de ambiente de opção
  de inicialização informadas pelo firmware. Para alguns sistemas, o
  MILO (por exemplo o  AlphaPC64) mantém o seu próprio conjunto de
  variáveis de ambiente que não são alteradas a cada inicialização.
  Estas variáveis são:





       MILO> help var
       Variáveis controlada pelo MILO:
       MEMORY_SIZE  - Tamanho da memória do sistema, em megabytes
       BOOT_DEV     - Especifica o dispositivo padrão de inicialização
       BOOT_FILE    - Especifica o arquivo padrão de inicialização
       BOOT_STRING  - Especifica o texto a ser passado ao kernel na inicialização
       SCSIn_HOSTID - Especifica a identificação da máquina da controladora SCSI n.
       PCI_LATENCY  - Especifica a latência do dispositivo PCI master
       AUTOBOOT     - Caso configurado, MILO tentará inicializar-se automaticamente
                      quando o equipamento for ligado e acionará o comando loop em caso
                      de falha.
       AUTOBOOT_TIMEOUT - Segundos de espera antes de inicialização automática quando a
                          máquina é ligada.





  CCUUIIDDAADDOO ao configurar AUTOBOOT sem um tempo de espera, pois pode-se
  ter uma inicialização automática imediatamente após a máquina ser
  ligada, ou seja tempo de espera igual a zero segundos, o que pode ser
  algo indesejável.


  PCI_LATENCY é o número de ciclos de barramento PCI que o master PCI
  executa a cada vez que ele obtém o controle. O valor padrão é igual a
  32 e o valor máximo é igual a 255. Configurar um valor maior significa
  que cada vez que o dispositivo obtenha o controle do barramento PCI
  ele pode transferir uma maior quantidade de dados. De qualquer forma,
  configurar esta variável para um valor maior significa que o
  dispositivo poderá esperar mais para obter este controle.




  55..22..  IInniicciiaalliizzaannddoo oo  LLiinnuuxx





  O comando boot inicia o Linux a partir de um dispositivo. Será
  necessário ter-se uma imagem do kernel do Linux em um disco com o
  sistema de arquivos padrão ext2 (SCSI, IDE ou disquete) ou um CD
  formatado no padrão ISO9660 disponível para o MILO. A imagem pode ser
  compactada com gzip e neste caso o MILO irá descompactá-la
  automaticamente. Versões antigas reconheciam um arquivo compactado
  pelo sufixo .gz, porém as versões atuais utilizam o número mágico para
  determinar o tipo de arquivo.


  Deve-se notar que a versão do MILO não deve conferir com a versão do
  kernel do Linux que está sendo carregado. Pode-se inicializar o Linux
  usando-se a seguinte sintaxe:




            MILO> boot [-t sistema_de_arquivos] nome_dispositivo:nome_arquivo \
                              [[opção] [opção] ...]





  Onde nome_dipositivo é o nome do dispositivo que se deseja utilizar e
  nome_arquivo é o nome do arquivo que contém o kernel do Linux. Todos
  os argumentos disponibilizados após um nome de arquivo serão passados
  diretamente para o kernel do Linux.


  Caso se esteja instalando o Conectiva ou Red Hat Linux, então será
  necessário especificar um dispositivo raiz, devendo-se usar o seguinte
  formato:




            MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1





  MILO irá automaticamente conter os blocos de dispositivos que foram
  configurados no vmlinux. Eu testei um programa de controle de uma
  unidade de disquetes e alguns programas de dispositivos SCSI (por
  exemplo, o NCR 810) e este funcionaram perfeitamente.  Também é
  importante configurar a identificação de máquina da controladora SCSI
  para valores razoáveis. Por padrão, MILO irá inicializá-la com o maior
  valor possível (7) o qual normalmente funciona perfeitamente. De
  qualquer forma, caso se deseje, pode-se explicitamente configurar a
  identificação da controladora SCSI _n no sistema através da variável
  SCSI_n_HOSTID para outro valor apropriado. Por exemplo, para configurar
  a identificação da primeira controladora SCSI para 7, basta digitar o
  seguinte comando na linha de comando do MILO:





       setenv SCSI0_HOSTID 7






  55..33..  RReeiinniicciiaalliizzaannddoo oo LLiinnuuxx





  Pode-se reinicializar o sistema Linux usando-se o comando shutdown -r
  now. Neste caso, o kernel do Linux retorna o controle para o MILO (via
  o ponto de entrada da instrução HALT CallOPAL). MILO deixará uma cópia
  comprimida de si próprio em memória por essa razão e detecta que o
  sistema está sendo reinicializado a partir da informação presente no
  HWRPB (Bloco de Parâmetros de Reinicialização de Hardware). Neste caso
  ele inicia a reinicialização usando exatamente o mesmo comando usado
  para acionar o Linux na última vez. Há um tempo de espera de 30
  segundos que permite que se interrompa o processo e se inicie qualquer
  kernel que se deseje.



  55..44..  OO ccoommaannddoo ''''bboooottoopptt''''





  Para sistemas baseados em memória flash como AlphaPC64, EB164 e EB66+,
  há um número de opções de inicialização possíveis e estas são
  alteradas pelo comando bootopt.  Ele tem um argumento, um número
  decimal que o tipo de imagem a ser inicializada na próxima vez que o
  sistema for inicializado.:


  00 Inicializar o Monitor de Depuração de Placas de Avaliação


  11 Inicializar o firmware ARC Windows NT


  A fim de indicar para o código de inicialização que ele deve usar o
  firmware MILO a partir da memória flash deve-se utilizar a opção de
  inicialização igual a N-ésima imagem. Para tanto, é necessário
  calcular 128 mais N, onde, se por exemplo MILO for a terceira imagem
  da memória flash, deve-se usar o comando:




            MILO> bootopt 131





  Nota: seja muito cuidadoso com este comando. Uma boa regra é nunca
  configurar o bootopt para 0 (o Monitor de Depuração de Placas de
  Avaliação), mas ao invés disso usar as chaves de configuração do
  sistema para se obter o mesmo resultado.


  66..  EExxeeccuuttaannddoo OO UUttiilliittáárriioo ddee GGeerreenncciiaammeennttoo FFllaasshh







  O comando run é usado para executar o utilitário de gerenciamento de
  memória flash. Antes de iniciá-lo será necessário ter-se à disposição
  um dispositivo que contenha o programa updateflash do MILO. Este
  arquivo (como vmlinux) pode ser compactado. Será necessário executar o
  gerenciador de flash a partir do MILO usando-se o comando (run) no
  seguinte formato:




            MILO> run fd0:fmu.gz





  Uma vez que ele seja inicializado, o utilitário de gerenciamento de
  flash irá apresentar algumas informações sobre o dispositivo flash e
  fornecer um indicador de linha de comandos. Aqui o comando help será
  de grande ajuda.




       Linux MILO Flash Management Utility V1.0

       Flash device is an Intel 28f008SA
       16 segments, each of 0x10000 (65536) bytes
       Scanning Flash blocks for usage
       Block 12 contains the environment variables
       FMU>





  Nota: em sistemas onde as variáveis de ambiente podem ser armazenadas
  e onde haja mais de um bloco flash (por exemplo o AlphaPC64), o
  utilitário de gerenciamento de flash irá procurar pelo bloco que
  contém as variáveis de ambiente do MILO. Caso tal bloco já exista, o
  utilitário irá avisar ao administrador. De outra forma, deve-se usar o
  comando environment para configurar um bloco e inicializá-lo. No
  exemplo acima, o bloco flash 12 contém as variáveis de ambiente MILO.



  66..11..  OO CCoommaannddoo  ''''hheellpp''''











  FMU> help
  FMU resumo do comando:

  list        - lista o conteúdo de flash
  program     - grava uma imagem em flash
  quit        - finaliza
  environment - configura qual bloco conterá as variáveis de ambiente
  bootopt num - seleciona o tipo de firmware a ser usado na próxima inicialização
  help        - imprime este texto de ajuda
  FMU>





  _N_o_t_a_: os comandos environment e bootopt estão disponíveis somente nos
  sistemas EB66+, AlphaPC64, EB164 e PC164 (e seus clones).



  66..22..  22..77..22 OO ccoommaannddoo ''''lliisstt''''





  O comando "list" apresenta o uso atual da memória flash. Onde houver
  mais de um bloco de flash, o uso de cada bloco será apresentado. No
  exemplo abaixo pode-se ver que o ARC Windows NT está utilizando os
  blocos 3:7 e o bloco 15.




       FMU> list
       Flash blocks:  0:DBM  1:DBM  2:DBM  3:WNT  4:WNT  5:WNT  6:WNT
              7:WNT  8:MILO  9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U
               15:WNT
       Listing flash Images
         Flash image starting at block 0:
           Firmware Id:  0 (Alpha Evaluation Board Debug Monitor)
           Image size is 191248 bytes (3 blocks)
           Executing at 0x300000
         Flash image starting at block 3:
           Firmware Id:  1 (Windows NT ARC)
           Image size is 277664 bytes (5 blocks)
           Executing at 0x300000
         Flash image starting at block 8:
           Firmware Id:  7 (MILO/Linux)
           Image size is 217896 bytes (4 blocks)
           Executing at 0x200000
       FMU>






  66..33..  22..77..33 OO ccoommaannddoo ''''pprrooggrraamm''''





  OP utilitário de gerenciamento de memória flash contém uma cópia
  comprimida da imagem flash do MILO. O comando ''program'' permite a
  gravação de uma imagem em flash. O comando permite retornar, porém
  antes de executá-lo, use o comando ''list'' para verificar onde
  colocar o MILO. Caso o MILO já esteja na flash, então o utilitário irá
  regravá-lo.




       FMU> program
       Image is:
           Firmware Id:  7 (MILO/Linux)
           Image size is 217896 bytes (4 blocks)
           Executing at 0x200000
       Found existing image at block 8
       Overwrite existing image? (N/y)? y
       Do you really want to do this (y/N)? y
       Deleting blocks ready to program: 8 9 10 11
       Programming image into flash
       Scanning Flash blocks for usage
       FMU>





  Antes de desligar o sistema aguarde até que o comando seja completado.


  Nota: DEVE-SE SER EXTREMAMENTE CUIDADOSO COM ESTE COMANDO. É possível
  sobrescrever uma imagem existente de flash necessária e tornar o
  sistema impossível de ser utilizado. Uma regra importante é nunca
  regravar o monitor de depuração.



  66..44..  OO ccoommaannddoo ''''eennvviirroonnmmeenntt''''





  Ele seleciona um bloco da flash que contém as variáveis de ambiente do
  MILO.



  66..55..  OO ccoommaannddoo ''''bboooottoopptt''''





  É igual ao comando  ''bootopt''  do MILO.



  66..66..  OO ccoommaannddoo ''''qquuiitt''''





  Este comando é realmente inútil. A única forma de retornar ao MILO (ou
  a qualquer outra função) uma vez que o utilitário de gerenciamento de
  flash é através da reinicialização de todo o sistema.

  77..  RReessttrriiççõõeess





  Infelizmente não vivemos em um mundo perfeito e há, como sempre,
  algumas restrições que se deve conhecer.



  MILO não foi desenhado para carregar outros sistemas operacionais que
  não o Linux, apesar dele poder carregar imagens que possam ser
  executadas no mesmo endereço de memória que o Linux (que é igual a
  0xFFFFFC0000310000). Assim é como os utilitários de gerenciamento de
  flash podem ser executados.


  Os fontes do PALcode sources incluídos em miniboot/palcode/_b_l_a_h estão
  corretos, ainda que haja alguns problemas quando se tente construí-lo
  usando-se a última versão do gas. Eles _d_e_v_e_m ser construídos com o
  antigo a.out que é fornecido pelo conjunto de ferramentas da Placa de
  Avaliação Alpha (e foi assim que eles foram construídos). Estou
  tentando encontrar alguém para corrigir o novo gas. Por enquanto, como
  um paliativo, estou disponibilizando PALcode pré construído para as
  placas suportadas e David Mosberger-Tang tem um gas corrigido em seu
  site ftp.


  88..  SSoolluuççããoo ddee PPrroobblleemmaass





  A seguir apresentamos a solução para alguns problemas comumente
  encontrados.


  LLeeiittuurraa ddee ddiissqquueetteess MMSS--DDOOSS aa ppaarrttiirr ddoo MMoonniittoorr ddee DDeeppuurraaççããoo ddee PPllaaccaass
  ddee AAvvaalliiaaççããoo..


  Algumas das versões mais antigas do Monitor de Depuração de Placas de
  Avaliação (antes da versão 2.0) têm problemas com disquetes DOS
  gerados no Linux. Normalmente o monitor de depuração pode carregar os
  primeiros setores normalmente, mas então entra em  infinitas mensagens
  de "setores defeituosos". Aparentemente há uma incompatibilidade entre
  o sistema de arquivos DOS esperado pelo monitor de depuração e a
  implementação Linux do sistema de arquivos DOS. Para encurtar a
  história: ao se defrontar com este tipo de problema, tente usar o DOS
  para gerar o disquete. Por exemplo, caso a leitura do arquivo MILO.cab
  não funcione, use uma máquina DOS, insira o disquete e execute:




            copy a:MILO.cab c:
            copy c:MILO.cab a:
            del c:MILO.cab






  Tente então inicializar o disquete novamente. Isso normalmente resolve
  o problema.


  MMIILLOO lliissttaa uummaa lloonnggaa sseeqqüüêênncciiaa ddee ccaarraacctteerreess OO>> ee nnããoo aacceeiittaa qquuaallqquueerr
  eennttrraaddaa..


  Isso acontece normalmente quando o MILO foi construído para usar a
  COM1 como um dispositivo de console secundária. Neste caso, MILO ecoa
  a saída na COM1 e aceita entradas a partir da mesma porta serial. Isto
  é uma grande ferramenta, mas não tão útil caso se tenha um outro
  dispositivo diferente que um terminal. Caso isso ocorra, desconecte o
  dispositivo ou o desligue até que o kernel do Linux seja inicializado.
  Uma vez que o Linux esteja ativo e em execução, tudo deverá funcionar
  como esperado.


  OO MMIILLOO rreeccllaammaa qquuee aa iimmaaggeemm ddoo kkeerrnneell tteemm uumm nnúúmmeerroo mmáággiiccoo iinnvváálliiddoo


  Versões antigas do MILO não suportam objetos com formato de arquivos
  ELF, não podendo então reconhecer uma imagem ELF. Caso este problema
  ocorra, atualize o MILO para a versão 2.0.20 ou superior. Por outro
  lado, a imagem pode estar danificada. Deve-se notar ainda que o MILO
  pode não identificar automaticamente entre imagens compactadas ou não
  compactadas, sendo necessário nestes casos adicionar o sufixo ".gz" ao
  nome do arquivo.


  MMIILLOO iinnffoorrmmaa  ""......aacciioonnaannddoo oo eennddeerreeççoo vviirrttuuaall ee ppaassssaannddoo ppaarraa oo
  kkeerrnneell ddoo LLiinnuuxx"" ee nnaaddaa aaccoonntteeccee


  Uma possibilidade óbvia é que a imagem do kernel foi construída
  erroneamente ou é destinada a outros sistemas Alpha. Outra
  possibilidade é que a placa de vídeo seja um dispositivo TGA (Zlxp) e
  o kernel tenha sido construído para um dispositivo VGA (ou vice
  versa). É aconselhável construir o kernel com echo na COM1 e então
  conectar um terminal nesta porta ou tentar um kernel que venha com a
  distribuição Linux instalada.


  MMIILLOO nnããoo rreeccoonnhheeccee oo ddiissppoossiittiivvoo SSCCSSII


  As imagens padrão do MILO incluem os programas de controle de
  dispositivos conhecidos e estáveis para Alpha (o que atualmente
  incluem as placas NCR 810, QLOGIC ISP, Buslogic e Adaptec 2940s e
  3940). Caso a sua placa não esteja incluída, é possível que o programa
  de controle não esteja estável o suficiente. Tentar a imagem mais
  atual do MILO pode ser uma tentativa válida. Pode-se verificar quais
  os dispositivos SCSI, uma imagem do MILO contém através do comando
  "show".


  99..  AAggrraaddeecciimmeennttooss





  Gostaria de agradecer a:

  ·  Eric Rasmussen e Eilleen Samberg, os autores do PALcode,

  ·  Jim Paradis pelo programa de controle de teclado, a interface
     original do MILO e o trabalho com o AlphaBIOS,

  ·  Jay Estabrook pela sua ajuda e correção de erros,

  ·  David Mosberger-Tang pela sua emulação de BIOS de livre
     distribuição e pela ajuda e apoio,

  ·  Por último (e não o último) Linus Torvalds pelo código do timer e
     pelo kernel.


  Há ainda algumas coisas que necessitam ser feitas no MILO. Caso você
  deseje adicionar algo por si só, avise-me em
  (david.rusling@reo.mts.dec.com) para que não haja esforços duplicados.


  Finalmente um grande agradecimento a Digital por produzir um
  processador tão maravilhoso e me pago para fazer este trabalho.