7.3. A MBR, e os estágios de inicialização Um, Dois, e Três

7.3.1. MBR, /boot/boot0

A MBR do FreeBSD é localizada no /boot/boot0. Esta é uma cópia do MBR, por que a real MBR deve ficar em uma parte especial do disco, fora da área do FreeBSD.

boot0 é muito simples, visto que o programa dentro da MBR pode ter no máximo 512 bytes. Se você tiver instalado na MBR o FreeBSD e instalado múltiplos sistemas operacionais em seu HD então você vera um menu similar a este na hora da inicialização:

Exemplo 7-1. boot0 Screenshot

F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2

Outros sistemas operacionais, em particular Windows® 95, tem conhecimento para sobrescrever suas próprias informações em uma MBR já existente. Se isto acontecer a você, ou você queira substituir sua MBR existente com o FreeBSD MBR então use o seguinte comando:

# fdisk -B -b /boot/boot0 device

Onde device é o dispositivo que você carrega, como ad0 para o primeiro disco IDE, ad2 para o primeiro disco IDE da segunda controladora IDE, da0 para o primeiro disco SCSI, e assim por diante.

Se você for um usuário Linux, contudo, e preferir que o LILO controle o processo de inicialização, você pode editar o arquivo /etc/lilo.conf para FreeBSD, ou selecionar Leave The Master Boot Record Untouched durante o processo de instalação do FreeBSD. Se você tiver instalado o gerenciador de boot do FreeBSD, você pode carregar dentro do Linux e modificar o LILO no arquivo de configuração /etc/lilo.conf e adicionar a seguinte opção:

other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

o qual permitirá a inicialização do FreeBSD e Linux via LILO. Em outro exemplo, nós usamos XY para determinar o número do drive e da partição. Se estiver usando um drive SCSI, você irá querer mudar o /dev/hdXY para leitura algo similar a /dev/sdXY, novamente usando a sintaxe XY. O loader=/boot/chain.b pode ser omitido se você tiver ambos os sistemas operacionais na mesma partição. Você pode agora rodar /sbin/lilo -v para executar suas novas alterações no sistema, este deve ser verificado com mensagens na tela.

7.3.2. Estágio Um, /boot/boot1, e Estágio Dois, /boot/boot2

Conceitualmente o primeiro e segundo estágios são parte do mesmo programa, sobre a mesma área do disco. Devido o espaço contido eles foram divididos em duas partes, mas você deve instalá-los juntos.

Eles são encontrados no setor de inicialização, que é onde boot0, ou alguns outros programas na MBR espera encontrar um programa para rodar e continuar o processo de inicialização. O arquivo no diretório /boot são cópias dos arquivos reais, que são armazenados fora do sistema de arquivos do FreeBSD.

boot1 é muito simples, este também pode somente ter o tamanho máximo de 512 bytes, e sabemos bastante sobre o disklabel do FreeBSD, que armazena informações no slice, para procurar e executar o boot2.

boot2 é ligeiramente mais sofisticado, e compreende bastante o sistema de arquivos do FreeBSD para procurar arquivos nele, e pode fornecer uma relação simples para escolher o kernel ou o carregador para executar.

Desde que o carregador é muito mais sofisticado, e fornece uma configuração fácil-de-usar agradável de inicialização, boot2 usualmente executa-a, mas previamente isto era tarefa para executar diretamente no kernel.

Exemplo 7-2. boot2 Screenshot

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:

Se você precisar sempre substituir a instalação boot1 e boot2 use disklabel(8).

# disklabel -B diskslice

Onde diskslice é o disco e slice da sua inicialização, tal como ad0s1 para o primeiro HD sobre a IDE.

Modalidade Perigosamente DedicadaSe você usar apenas o nome do disco, tal como ad0, no comando disklabel(8) você irá criar um disco perigosamente dedicado, sem partições. Isto não devera ser o que vocô quer fazer, assim que você verificar o dobro do disklabel(8) depois você deverá pressionar Return.

7.3.3. Estágio três, /boot/loader

A inicialização e o estágio final dos três-estágios de bootstrap, é localizado no sistema de arquivos, usualmente como /boot/loader.

A inicialização é usada como um método amigável para configuração, usando um jogo de comandos internos fácil-de-usar, voltado por um interpretador mais poderoso, com um jogo de comandos mais complexo.

7.3.3.1. Fluxo de programa do carregador

Durante a initialização, o carregador sondará para um console e para discos, e figura de saída de que os discos são carregados. Isto setará variáveis conformemente, e um interpretador é iniciado onde os comandos do usuário podem ser passados de um script ou interativamente.

Então o carregador irá ler o /boot/loader.rc, que por padrão lê dentro de /boot/defaults/loader.conf que seta padrões para variáveis e lê o /boot/loader.conf para as mudança destas variáveis locais. loader.rc age então sobre estas variáveis, carregando qualquer módulo e kernel que são selecionados.

Finalmente, por padrão, o carregador emite uma espera de 10 segundos para pressionar alguma tecla, e carregar o kernel se este não for interrompido. Se interrompido, ao usuário é apresentado um alerta no prompt que é de fácil uso para entender o comando setado, onde o usuário pode ajustar variáveis, descarregar todos os módulos, carregar módulos, e eles finalmente carregar ou reiniciar.

7.3.3.2. Comandos Carregando e Compilando

Estes são os comandos mais comuns usados no carregamento do sistema. Para uma completa discussão de todas avaliações dos comandos, por favor veja loader(8).

autoboot seconds

O processo de carregamento do kernel não é interrompido durante o tempo concedido, em segundos. Isto mostra uma contagem regrassiva, e o tempo padrão concedido é 10 segundos.

boot [-options] [kernelname]

Imediatamente o processo de carregamento do kernel, com as opções dadas, se existir, e com o nome do kernel dado, se for.

boot-conf

Ir através da mesma configuração automática dos módulos baseados em variáveis como que acontece no boot. Isto somente faz sentido se você primeiramente descarregar, e alterar algumas variáveis, do kernel mais freqüente.

help [tópico]

Mensagens de ajuda são lidas em /boot/loader.help. Se o tópico dado for index, então a lista de tópicos disponíveis é dada.

include filename ...

Processa o arquivo com o nome dado ao mesmo. O arquivo é lido, e interpretado linha por linha. Um erro imediatamente para o comando de inclusão.

load [-t type] filename

Carrega o kernel, o módulo do kernel, ou arquivo do tipo dado, com o nome dado. Todos argumentos depois do nome do arquivo são passados para o arquivo.

ls [-l] [path]

Mostra uma lista de arquivos dentro dos caminhos dados, ou o diretório do root, se o caminho não é especificado. Se -l, é especificada o tamanho do arquivo será mostrado também.

lsdev [-v]

Lista todos os dispositivos que pode ser possível para carregar módulos. Se -v for especificado, mais detalhes serão mostrados.

lsmod [-v]

Mostra módulos carregados. Se -v for especificado, mais detalhes serão mostrados.

more filename

Mostra os arquivos especificados, com uma pausa em cada LINHA mostrada.

reboot

Imediatamente reiniciará o sistema.

set variable, set variable=value

Seta as variáveis do ambiente carregado.

unload

Remove todos módulos carregados.

7.3.3.3. Exemplos de carregador

Estão aqui alguns exemplos práticos do uso do carregador:

  • Para simplesmente carregar seu kernel usual, mas em modo mono-usuário:

    boot -s
    
  • Para descarregar seu kernel e módulos usuais, e então carregar apenas seu kernel velho (ou outro):

    unload
    load kernel.old
    

    Você pode usar o kernel.GENERIC para referir ao kernel genérico que vem no disco de instalação, ou kernel.old para consultar seu kernel previamente instalado (quando você tiver atualizado ou configurado seu kernel, por exemplo).

    Nota: Use o seguinte para carregar seus módulos usuais com outro kernel:

    unload
    set kernel="kernel.old"
    boot-conf
    
  • Para carregar um script de configuração do kernel (um script automatizado qual faça as coisas que você faria normalmente dentro do kernel na configuração do boot-time):

    load -t userconfig_script /boot/kernel.conf
    

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.