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.