Gentoo Logo

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

(Crie o diretório /boot/etc)
# mkdir /boot/etc

(Coloque nossa configuração no diretório alvo)
# cp /etc/arcboot.conf.sample /boot/etc/arcboot.conf

(Crie um link simbólico de volta para /etc)
# ln -s /boot/etc/arcboot.conf /etc/arcboot.conf

(... e um link simbólico em /boot apontando para si mesmo)
# (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

# arcboot.conf
#
# copyright 2002 Guido Guenther <agx@sigxcpu.org>
#
label=working
        image=/vmlinux
        append="root=/dev/sda3"

# backup version
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

#:CoLo:#
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

#:CoLo:#

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

# CONSOLE SERIAL
#c0:12345:respawn:/sbin/agetty 9600 ttyS0 vt102

# TERMINAIS
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

# O que fazer com a "Saudação de três dedos".
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

# CONSOLE SERIAL
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102

# TERMINAIS -- São inúteis em um headless qube
#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

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

(/dev/ttyS0 -- o nome tradicional para a primeira porta serial)
# echo 'ttyS0' >> /etc/securetty

(Finalmente, o Linux também chama de /dev/tts/0 -- então adicionamos isto
também)
# 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.

(<dispositivo de root> = A partição de root do Gentoo, por exemplo /dev/sda3)
>> setenv OSLoadPartition <dispositivo de root>

(Para listar os kernéis disponíveis, digite "ls")
>> setenv OSLoader <nome do kernel>
>> setenv OSLoadFilename <nome do kernel>

(Declare os parâmetros que você quer passar ao kernel)
>> setenv OSLoadOptions <parâmetros do kernel>

(Dê o local do Volume Header)
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)

(Automaticamente carregar o Gentoo)
>> setenv AutoLoad Yes

(Configurar o fuso horário)
>> setenv TimeZone EST5EDT

(Use o console serial - usuários de adaptador gráfico devem usar "g" ao invés de "d1" (um))
>> 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).

Atualizado 19 de janeiro de 2006

A versão original deste documento foi atualizada em 9 de maio de 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.