Ao se usar o firmware SRM, aboot é a forma preferida de se inicializar o Linux. Ele suporta:
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:
Este é o executável atual do aboot (ou um arquivo objeto ECOFF ou ELF).
O mesmo que acima, mas contém somente os segmentos de texto, dados e bss --- ou seja este não é um arquivo objeto.
utilitário para instalar o aboot em um disco rígido.
utilitário para instalar o aboot em um sistema de arquivos ext2 (normalmente usado em disquetes).
Utilitário para instalar o aboot em um sistema de arquivos iso9660 (usado pelos distribuidores de CD-ROM).
Utilitário para configurar um aboot instalado.
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
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.
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!
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
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.
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).
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:
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.
Configura o disquete para str.
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).
Inicializa o sistema no modo monousuário.
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.
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.
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.