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

  Página seguinte Página anterior Índice

221. O Carregador aboot

Ao se usar o firmware SRM, aboot é a forma preferida de se inicializar o Linux. Ele suporta:

  • inicialização direta de vários sistemas de arquivos ((ext2, ISO9660 e UFS, o sistema de arquivos DEC),
  • inicialização de arquivos objetos inicializáveis (tanto ELF como ECOFF)
  • inicialização de kernels comprimidos,
  • inicialização pela rede (usando bootp),
  • tabelas de partições no formato DEC Unix ( a qual é compatível com as tabelas de partição do BSD Unix),
  • inicialização interativa e configurações padrão para consoles SRM que não podem passar longas expressões de opções

221.1 Obtendo e Construindo aboot

A versão mais recente do aboot está disponível em ftp://ftp.alphalinux.org/pub/linux/axp/aboot. A descrição neste manual aplica-se ao aboot versão 0.5 ou mais recente.

Uma vez que ele seja recebido e extraído o arquivo tar, verifique o conteúdo dos arquivos README e INSTALL para algumas instruções sobre a sua instalação. Em particular, esteja seguro de ajustar as variáveis no Makefile e no include/config.h para que se adequem ao ambiente local. Normalmente, não será necessário alterar absolutamente nada ao se construir aboot sob o Linux, mas é sempre uma boa idéia verificar novamente. Caso se esteja satisfeito com a configuração, simplesmente digite make para construí-lo (caso não se esteja construindo sob Linux, é bom saber que aboot requer o GNU make).

Após executar o make, o diretório aboot deve conter os seguintes arquivos:

aboot

Este é o executável atual do aboot (ou um arquivo objeto ECOFF ou ELF).

bootlx

O mesmo que acima, mas contém somente os segmentos de texto, dados e bss --- ou seja este não é um arquivo objeto.

sdisklabel/writeboot

utilitário para instalar o aboot em um disco rígido.

tools/e2writeboot

utilitário para instalar o aboot em um sistema de arquivos ext2 (normalmente usado em disquetes).

tools/isomarkboot

Utilitário para instalar o aboot em um sistema de arquivos iso9660 (usado pelos distribuidores de CD-ROM).

tools/abootconf

Utilitário para configurar um aboot instalado.

221.2 Instalação Via Disquete

O carregador de sistemas pode ser instalado em um disquete usando o comando e2writeboot (note-se que isso não pode ser feito em um sistema Jensen, uma vez que seus firmwares não suportam a inicialização a partir do disquete). Este comando requer que o disco não esteja fragmentado, assim como necessita encontrar blocos contíguos para armazenar toda a imagem (atualmente cerca de 90 Kb). Caso o e2writeboot falhe devido a isso, reformate o disquete e tente novamente (com por exemplo fdformat(1)). Por exemplo, apresentamos a seguir os passos de instalação do aboot no disquete assumindo que a unidade de disquetes esteja em /dev/fd0:

fdformat /dev/fd0
mke2fs /dev/fd0
e2writeboot /dev/fd0 bootlx

221.3 Instalação em Discos Rígidos

Uma vez que o comando e2writeboot pode falhar em discos altamente fragmentados e desde que a reformatação de uma disco rígido é algo normalmente doloroso, é normalmente mais seguro instalar o aboot em um disco rígido utilizando o comando swriteboot, o qual requer que os primeiros setores sejam reservados para a inicialização do sistema. Sugerimos que o disco seja particionado de forma que a primeira partição inicie com um deslocamento de 2.048 setores. Isso reserva um espaço de aproximadamente 1 Mb para armazenamento do aboot. Em um disco adequadamente particionado, será possível instalar o aboot da seguinte forma (assumindo-se que o disco seja /dev/sda):

swriteboot /dev/sda bootlx

Em um sistema Jensen, será necessário deixar um espaço ainda maior, uma vez que será necessário gravar também o kernel neste local - 2 Mb deve ser suficiente para se utilizar kernels comprimidos. Use swriteboot conforme descrito anteriormente para gravar o bootlx junto com o kernel do Linux.

221.4 Instalação Via CD-ROM

Para tornar um CD-ROM inicializável pelo SRM, simplesmente construa o aboot conforme descrito anteriormente. A seguir, esteja seguro de que o arquivo bootlx esteja presente no sistema de arquivos iso9660 (por exemplo copie bootlx para o diretório que é o sistema de arquivos master, e então execute o comando mkisofs naquele diretório). Após, tudo o que precisa ser feito é marcar o sistema de arquivos como inicializável pelo SRM. Isso pode ser obtido com o seguinte comando:

isomarkboot filesystem bootlx

O comando acima assume que o sistema de arquivos é um arquivo contendo o sistema de arquivos iso9660 e que o bootlx foi copiado para o diretório raiz daquele sistema de arquivos. É isso!

221.5 Construindo o Kernel do Linux

Um kernel inicializável do Linux pode ser construído seguindo-se os seguintes passos. Durante o make config, esteja seguro de responder "sim" para a questão sobre a intenção de construir a inicialização do kernel via SRM:

cd /usr/src/linux
make config
make dep
make boot

O último comando irá construir o arquivo arch/alpha/boot/vmlinux.gz o qual pode ser copiado para o disco do qual se deseje inicializar o sistema. No exemplo em disquete acima, pode-se acrescentar:

mount /dev/fd0 /mnt
cp arch/alpha/boot/vmlinux.gz /mnt
umount /mnt

221.6 Inicializando o Linux

Com o firmware SRM e o aboot instalados, Linux é geralmente inicializado com o comando no seguinte formato:

boot devicename -fi filename -fl flags

Os argumentos de nome de arquivo e indicadores de argumentos são opcionais. Caso eles não sejam especificados, SRM usa os valores padrões armazenados nas variáveis de ambiente no BOOT_OSFILE e BOOT_OSFLAGS. A sintaxe e o significado destes dois argumentos são descritos em maiores detalhes a seguir.

Nome do Arquivo de Inicialização

O argumento do nome de arquivo tem o seguinte formato:

[n/]nome_de_arquivo

n é um dígito simples na faixa de 1 a 8, que fornece o número da partição a partir da qual a inicialização do sistema será feita. O nome do arquivo é o caminho do arquivo que se deseja carregar. Por exemplo, para inicializar o sistema a partir da segunda partição do dispositivo SCSI de identificação 6, pode-se informar:

boot dka600 -file 2/vmlinux.gz

ou para inicializar o sistema a partir da unidade de disquetes 0, deve-se informar:

boot dva0 -file vmlinux.gz

Se o disco não tem tabela de partição, aboot assume que o disco contém uma partição ext2 iniciando no primeiro bloco de disco. Isto permite a inicialização a partir de disquetes.

Como um caso especial, a partição de número 0 é usada para requisitar a inicialização a partir de um disco que não contém um sistema de arquivos (ainda). Ao se especificar a "partição" de número 0, aboot assume que o kernel está armazenado logo após a imagem de aboot. Tal formato pode ser obtido através do comando swriteboot. Por exemplo, para configurar uma inicialização sem sistema de arquivos a partir de /dev/sda, pode-se ser usado o comando:

swriteboot /dev/sda bootlx vmlinux.gz

Inicializar um sistema desta forma não é normalmente necessário. A razão desta existência reside no fato de tornar possível ter-se o Linux instalado em sistemas que não podem ser inicializados a partir de disquetes (como por exemplo de Jensen).

Indicadores de Inicialização.

Um determinado número de indicadores de inicialização pode ser especificada. A sintaxe é

-flags "opções..."

Onde "opções..." é qualquer combinação das seguintes opções (separadas por espaços em branco). Há diversas opções de inicialização, dependendo de quais programas de controle de dispositivos estão instalados. As opções listadas a seguir tem a intenção de serem exemplos que ilustram a idéia geral:

load_ramdisk=1

Copia o sistema de arquivos raiz de um disco (disquete) para a memória RAM antes de inicializar o sistema. O disco em memória RAM será usado na composição de dispositivo raiz. Isso é útil para a inicialização do Linux em um sistema com somente uma unidade de disquetes.

floppy=str

Configura o disquete para str.

root=dev

Seleciona o dispositivo dev como o sistema de arquivos raiz. O dispositivo pode ser especificado através de um número hexadecimal de maior e menor (por exemplo 0x802 para /dev/sda2) ou através de um dos poucos nomes canônicos (por exemplo /dev/fd0, /dev/sda2).

single

Inicializa o sistema no modo monousuário.

kgdb

Habilita o kernel-gdb (funciona somente se o parâmetro CONFIG_KGDB estiver configurado; um segundo sistema Alpha necessita estar conectado em uma porta serial para tornar esta estrutura funcional).

Algumas implementações SRM (por exemplo, a Jensen) são habilitadas e permitem somente expressões curtas de opções (por exemplo, no máximo 8 caracteres). Nestes casos, aboot poderá ser inicializado com o indicador de um único caracter igual a "i". Com este indicador, aboot irá solicitar ao usuário para interativamente informar as opções de inicialização com expressões de até 256 caracteres. Por exemplo:

boot dka0 -fl i
aboot> 3/vmlinux.gz root=/dev/sda3 single

Um vez que a inicialização desta forma pode tornar-se rapidamente tediosa, aboot permite que sejam definidas os atalhados para comandos de linha usados freqüentemente. Em particular, uma opção de dígito simples (0-9) solicita que aboot use a opção correspondente armazenada no arquivo /etc/aboot.conf. Um exemplo do aboot.conf é mostrado a seguir:

#
# configurações padrão do aboot 
#
0:3/vmlinux.gz root=/dev/sda3
1:3/vmlinux.gz root=/dev/sda3 single
2:3/vmlinux.new.gz root=/dev/sda3
3:3/vmlinux root=/dev/sda3
8:- root=/dev/sda3            # inicialização direta do kernel sem sistemas de 
                              # arquivos
9:0/vmlinux.gz root=/dev/sda3 # inicialização sem sistemas de arquivos de kernel 
                              # ECOFF (comprimidos)
-

Com este arquivo de configuração, o comando

boot dka0 -fl 1

corresponde exatamente ao comando de inicialização mostrado acima. É muito simples esquecer qual número corresponde a qual comando. Para aliviar este problema, inicialize com a opção "h" e o aboot irá imprimir o conteúdo de /etc/aboot.conf antes de solicitar o comando de inicialização do sistema.

Finalmente, quando o aboot solicitar uma opção, é possível informar um único caracter ("i", "h" ou "0"-"9") para obter o mesmo efeito como se o indicador tivesse sido especificado na linha de comando de inicialização. Por exemplo, pode-se iniciar o sistema com o indicador "i" e então digita-se "h" (seguida de [Enter]) para relembrar o conteúdo de /etc/aboot.conf.

Selecionando a Partição do /etc/aboot.conf.

Quando instalado em um disco rígido, aboot necessita conhecer em qual partição se deve pesquisar pelo arquivo /etc/aboot.conf. Um novo aboot compilado irá pesquisar a segunda partição (por exemplo /dev/sda2). Uma vez que possa ser um incoveniente compilar aboot somente para alterar o número da partição, abootconf permite se modificar diretamente um aboot instalado. Especificamente, caso se deseje alterar aboot para usar a terceira partição do disco /dev/sda, pode-se usar o comando:

abootconf /dev/sda 3

Pode-se verificar a configuração atual simplesmente omitindo o número da partição, Ou seja: abootconf /dev/sda irá imprimir o número da partição atualmente selecionada. Note-se que aboot deve estar instalado para que este comando possa ser utilizado. Ainda, ao se instalar um novo aboot, o número da partição irá ser definido pelo padrão (ou seja, será necessário executar abootconf novamente).

Desde a versão 0.5 do aboot é possível ainda selecionar a partição de aboot.conf via linha de comando. Isto pode ser feito através da linha de comando no formato a:b, onde a é a partição que contém /etc/aboot.conf e b é a opção de um único dígito conforme descrito acima (0-9, i ou h). Por exemplo, ao se digitar "3:h" dka100 o sistema será inicializado a partir do SCSI ID 1, carregar /etc/aboot.conf a partir da terceira partição, imprimir seu conteúdo na tela e aguardar pela informação das opções de inicialização.

221.7 Carregando o Sistema Através da Rede

Dois passos são necessários antes que o Linux possa ser inicializado através da rede. Inicialmente, é necessário definir as variáveis de ambiente SRM para habilitar a inicialização através do protocolo bootp e segundo será necessário configurar outra máquina como o servidor de inicialização. Por favor, verifique a documentação do SRM que acompanha a sua instalação para verificar como habilitar o bootp. A configuração de um servidor de inicialização é obviamente dependente de qual sistema operacional será executado naquele equipamento, mas tipicamente envolve a inicialização do programa bootpd em segundo plano após a configuração do arquivo /etc/bootptab. Este arquivo tem uma entrada descrevendo cada cliente que tem permissão para inicializar a partir do servidor. Por exemplo, caso se deseje inicializar a máquina minhamaq.cs.pantanal.edu.br, então a entrada terá o seguinte formato:

minhamaq.cs.pantanal.edu.br:\
        :hd=/remoto/:bf=vmlinux.bootp:\
        :ht=ethernet:ha=08012B1C51F8:hn:vm=rfc1048:\
        :ip=192.12.69.254:bs=auto:

Esta entrada assume que o endereço Ethernet da máquina seja 08012B1C51F8 e seu endereço IP seja 192.12.69.254. O endereço Ethernet pode ser encontrado com o comando show device da console SRM ou, caso o Linux esteja sendo executado, através do comando ifconfig. A entrada define ainda se o cliente não tem nenhuma especificidade. Caso contrário o arquivo vmlinux.bootp será inicializado a partir do diretório /remoto. Para maiores informações sobre a configuração do bootpd por favor verifique a sua página de manual on-line.

A seguir, construiremos aboot com a linha de comando make netboot. Esteja certo de que o kernel que se deseje utilizar já esteja construído. Por padrão o Makefile de aboot utiliza o kernel encontrado em /usr/src/linux/arch/alpha/boot/vmlinux.gz (edite o Makefile caso se deseje utilizar um caminho diferente). O resultado de make netboot é um arquivo chamado vmlinux.bootp o qual contém aboot e o kernel do Linux, prontos para a inicialização através da rede.

Finalmente, copie o vmlinux.bootp para o diretório do servidor de inicialização. No exemplo acima, pode-se copiá-lo em /remote/vmlinux.bootp. A seguir, ligue a máquina cliente e a inicialize, especificando o adaptador Ethernet como o dispositivo de inicialização. Tipicamente, o SRM chamará o primeiro adaptador Ethernet como ewa0, sendo que o comando de inicialização a partir deste dispositivo terá o seguinte formato:

boot ewa0

As opções -fi e -fl podem ser usadas da forma usual. Em particular, pode-se especificar que aboot solicite os argumentos do kernel do Linux através da especificação da opção -fl i.


Página seguinte Página anterior Índice