|
1.
Máquinas Silicon Graphics -- Configurando o Arcboot
Instalando o arcboot
Antigamente neste guia, nós mostramos a você como construir um kernel, e copiá-lo
para o cabeçalho de volume usando dvhtool. Existem dois principais problemas com este
sistema:
- Isto não é suportado em todos sistemas SGI
- Isto necessita de um cabeçalho de volume significantemente maior
Para poder inicializar a máquina, um gerenciador de inicialização, arcboot foi desenvolvido
para o propósito. Ao invés de colocar o kernel diretamente no cabeçalho de volume, nós
deixamos em /boot (que reside em uma partição EXT2/3), e dizemos para o
arcboot (que fica no cabeçalho de volume ao invés do kernel) onde
encontrá-lo. Então nosso primeiro passo é fazer emerge de algumas ferramentas de que vamos precisar mais tarde...
Listagem de código 1.1: Instalando as ferramentas necessárias |
# emerge dvhtool arcboot
|
Isto deve ter instalado duas ferramentas, arcboot que fica no cabeçalho de
volume e carrega os kernéis para nós, e dvhtool que nos ajuda a
colocar o arcboot no cabeçalho de volume.
O binário mágico que nós queremos esconde-se em /usr/lib/arcboot -- em sistemas IP22
(Indy, Indigo 2, Challenge S), será chamado
arcboot.ip22. Outros sistemas devem ser parecidos. Nós
primeiro copiamos o arquivo no cabeçalho de volume.
Listagem de código 1.1: Instalando o arcboot no cabeçalho de volume |
# dvhtool --unix-to-vh /usr/lib/arcboot/arcboot.ip?? arcboot
|
Nós então verificamos a presença do arquivo no cabeçalho de volume.
Listagem de código 1.1: Verificando se o arcboot foi instalado corretamente |
# dvhtool --print-volume-directory
----- directory entries -----
Entry #0, name "linux", start 4, bytes 3262570
Entry #1, name "newlinux", start 6377, bytes 7619627
Entry #3, name "arcboot", start 21260, bytes 51448
#
|
Nota:
Você perceberá que em meu caso, eu tenho dois kernéis antigo lá,
linux e newlinux. Isto é uma ressaca de antes de começarmos a
usar arcboot. Sua presença não importa -- contanto que o
arcboot esteja presente, tudo está bem.
|
Configurando o arcboot
Se você já configurou o Linux Loader (lilo) antes, você verá que o
arcboot emprega uma sintaxe parecida em seu arquivo de configuração. Esteja ciente
no entanto; o arcboot espera encontrar seu arquivo de configuração existente em uma
partição EXT2/3 como /etc/arcboot.conf. O jeito mais fácil de fazer isso
é certificar-se que /boot é uma partição EXT2/3 e que há um
arquivo chamado arcboot.conf dentro do diretório
/boot/etc Um bom exemplo de configuração pode ser encontrado em
/etc/arcboot.conf.sample
Listagem de código 1.1: Colocando arcboot.conf em seu lugar |
# mkdir /boot/etc
# cp /etc/arcboot.conf.sample /boot/etc/arcboot.conf
# ln -s /boot/etc/arcboot.conf /etc/arcboot.conf
# (cd /boot; ln -s . boot)
|
Você pode então editar /etc/arcboot.conf de acordo com sua preferência.
Pessoalmente, eu prefiro configurar duas imagens de kernel: new, uma imagem recém-construída
que pode ou não funcionar; e working, uma imagem de kernel
testada e confiável. Meu arcboot.conf parece-se um pouco com o seguinte.
Listagem de código 1.1: Exemplo de arcboot.conf |
label=working
image=/vmlinux
append="root=/dev/sda3"
label=new
image=/vmlinux-new
append="root=/dev/sda3"
|
Uma vez que estiver configurado, só há alguns pequenos ajustes que você precisa fazer
dentro do PROM do SGI para fazer a mágica funcionar. Isto é coberto, não na próxima
seção (que é para servidores Cobalt), mas na seção seguinte
Reiniciando o sistema.
1.
Micro-servidores Cobalt -- Configurando o CoLo
Instalando o CoLo
Em servidores Cobalt, as máquinas tem um firmware muito menos capaz instalado no
chip. O BOOTROM do Cobalt é primitivo, se comparado ao PROM do SGI, e tem várias
limitações sérias.
-
Existe um limite de 675kB para kernéis. O tamanho atual do Linux 2.4 torna quase
impossível fazer um kernel deste tamanho. O Linux 2.6 está totalmente fora
de questão.
-
Kernéis de 64-bits não são suportados pelo firmware padrão (embora sejam altamente
experimentais em máquinas Cobalt no momento)
-
A shell é básica, para falar bem
Para contornar estas limitações, um firmware alternativo, chamado
CoLo (Cobalt
Loader) foi desenvolvido. É uma imagem de BOOTROM que pode ser ou carregada no
chip dentro do servidor Cobalt, ou carregado a partir de firmware existente.
Nota:
Este guia irá ensiná-lo a configurar o CoLo para que seja carregado pelo
firmware padrão. Este é o único método verdadeiramente seguro, e recomendado para instalar o CoLo.
|
Aviso:
Você pode, se quiser, carregar no servidor, e substituir totalmente
o firmware original -- todavia, você está totalmente por conta própria nesta
aventura. Se algo der errado, você precisará remover fisicamente o
BOOTROM e reprogramá-lo você mesmo com o firmware padrão. Se você não
souber como fazer isso -- então NÃO carregue na sua máquina. Não aceitamos
qualquer responsabilidade por o que acontecer se você ignorar o aviso.
|
Agora que acabamos com os avisos, vamos continuar a instalar o CoLo. Primeiro,
comece fazendo emerge do pacote.
Listagem de código 1.1: Fazendo emerge do colo |
# emerge colo
|
Com ele instalado (espero que você tenha lido as mensagens ;-) você deve poder olhar
dentro do diretório /usr/lib/colo para encontrar dois arquivos,
colo-chain.elf: o "kernel" para o firmware padrão carregar, e
colo-rom-image.bin: uma imagem de ROM para carregar no BOOTROM. Nós
começamos montando /boot e colocando uma cópia comprimida de
colo-chain.elf em /boot onde o sistema espera encontrá-la.
Listagem de código 1.1: Colocando o CoLo em seu lugar |
# gzip -9vc /usr/lib/colo/colo-chain.elf > /boot/vmlinux.gz
|
Configurando o CoLo
Agora, quando o sistema começar a carregar, ele irá carregar o CoLo, que irá dividir um menu
no LCD traseiro. A primeira opção (e padrão que é tomado depois de mais ou menos 5
segundos) é carregar do disco rígido. O sistema deve então tentar montar a
primeira partição de Linux que encontrar, e rodar o script
default.colo. A sintaxe é totalmente documentada na documentação do
CoLo (dê uma olhada em
/usr/share/doc/colo-X.YY/README.shell.gz -- onde X.YY é a versão
que você instalou), e é muito simples.
Nota:
Apenas uma dica: quando instalando kernéis, eu normalmente crio duas imagens de kernel,
kernel.gz.working -- um kernel que funciona, e
kernel.gz.new -- um kernel que acabou de ser compilado. Você pode tanto
usar links simbólicos para apontar para os kernéis "new" e "working", ou só renomear
as imagens de kernel.
|
Listagem de código 1.1: Um default.colo básico |
mount hda1
load /kernel.gz.working
execute root=/dev/hda3 ro console=ttyS0,115200
|
Nota:
O CoLo irá recusar-se a carregar um script que não comece com a linha #:CoLo:#.
Pense nisso como o equivalente a dizer #!/bin/sh em scripts
de shell.
|
Também é possível fazer uma pergunta, como que kernel & configuração que
você deseja carregar, com um tempo de espera padrão. Esta é a configuração que uso em
meu servidor Cobalt:
Importante:
Por favor note que você precisa usar CoLo v1.12 ou v1.13 para usar o comando
menu. O seguinte exemplo não funcionará com o v1.11.
|
Importante:
O comando menu foi trocado pelo comando select no CoLo v1.14.
Se você instalou uma versão mais nova manualmente, veja o
menu.colo no subdiretório examples da distribuição do
CoLo.
|
Listagem de código 1.1: Configuração baseada em menu |
lcd "Montando hda1"
mount hda1
menu "Que Kernel?" 50 Working working New new
lcd "Carregando Linux" {menu-option}
load /kernel.gz.{menu-option}
lcd "Carregando..."
execute root=/dev/hda5 ro console=ttyS0,115200
boot
|
O script acima pergunta ao usuário que kernel deseja carregar (tanto New
ou Working), então carrega vmlinux.gz.new ou
vmlinux.gz.working dependendo da seleção. Se uma seleção não for
feita dentro de 5 segundos (50/10 de um segundo) então ele carrega a primeira opção.
1.
Configurando o console serial
A instalação do Linux como está agora carregará normalmente, mas presumirá
que você fará log-in em um terminal físico. Em máquinas Cobalt, isto é
particularmente ruim -- já que não há nada como um terminal físico.
Nota:
Aqueles que tiverem o luxo de ter um framebuffer suportado podem pular esta seção
se desejarem.
|
Primeiro, inicie um editor e edite o /etc/inittab. Mais abaixo no
arquivo, você verá algo deste tipo:
Listagem de código 1.1: Configuração de inittab |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
ca:12345:ctrlaltdel:/sbin/shutdown -r now
|
Primeiro, descomente a linha c0. Por padrão, está configurado para usar um terminal
em uma taxa de baud de 9600 bps. Em servidores Cobalt, você pode mudar isso para 115200
para bater com a taxa de baud decidia pelo BOOT ROM. É assim que a seção parece-se
em minha máquina. Em uma máquina sem monitor (como servidores Cobalt), também recomendo
comentar as linhas de terminal local (de c1 até c6)
já que tendem a não funcionar direito se não conseguem abrir
/dev/ttyX.
Listagem de código 1.1: Exemplo de trecho de inittab |
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102
|
Agora, finalmente... temos de dizer ao sistema que a porta serial local pode ser
confiada como um terminal seguro. O arquivo que precisamos cutucar é
/etc/securetty. Ele contém uma lista de terminais em que o sistema pode
confiar. Nós simplesmente colocamos mais duas linhas, permitindo que a linha serial seja
usada para log-ins de root.
Listagem de código 1.1: Ativando log-ins de root no console serial |
# echo 'ttyS0' >> /etc/securetty
# echo 'tts/0' >> /etc/securetty
|
1.
Reiniciando o sistema
Saia do ambiente de chroot e desmonte todas partições montadas. Então digite aquele comando mágico que você estava esperando: reboot.
Listagem de código 1.1: Saindo do chroot, desmontando todas partições e reiniciando |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
1.
Configurando o PROM do MIPS
Quando você houver reiniciando, vá para o System Maintenance Menu e selecione
Enter Command Monitor (5). Se você quiser testar sua nova instalação do
Gentoo, você pode simplesmente rodar boot -f <kernel name>. Para fazer com
que seu sistema carregue sua instalação do Gentoo permanentemente, você precisa ajustar
algumas variáveis no PROM do MIPS:
Listagem de código 1.1: Configurando o PROM para carregar o Gentoo |
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
Command Monitor. Type "exit" to return to the menu.
>> setenv OSLoadPartition <dispositivo de root>
>> setenv OSLoader <nome do kernel>
>> setenv OSLoadFilename <nome do kernel>
>> setenv OSLoadOptions <parâmetros do kernel>
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv AutoLoad Yes
>> setenv TimeZone EST5EDT
>> setenv console d1
|
Agora você está pronto para aproveitar o Gentoo! Faça boot da sua instalação do Gentoo e
termine com (Completando sua instalação do Gentoo).
|