7.2. Problema na inicialização

Voltando a um computador inicializando o sistema operacional a atitude é um dilema interessante. Por definição, o computador não sabe qualquer coisa antes que o sistema operacional esteja iniciando. Isto inclui rodar programas do disco. Assim se o computador não pode rodar um programa do disco sem o sistema operacional, e os programas do sistema operacional estão no disco, como o sistema operacional foi inicializado?

Este problema paralelo estão no livro As aventuras de Baron Munchausen. O personagem despencou por um boeiro, e puxou a si mesmo pelos cadarços (bootstraps). Atualmente na computação, o termo bootstrap refere-se ao mecanismo utilizado para carregar o sistema operacional, que abreviado tornou-se o proceso de booting.

No hardware x86 o Sistema Básico de Entrada/Saida (BIOS) é responsável por carregar o sistema operacional. Para fazer isto, na BIOS aparece o disco rígido para o Master Boot Record (MBR), que deve ser alocado sobre um local específico do disco. A BIOS tem bastante mudanças que podem ser feitas para carregar e rodar a MBR, e assume que a MBR pode então carregar a saída do resto das tarefas envolvidas na inicialização do sistema operacional.

Se você tiver somente um sistema operacional instalado no seu disco então a MBR padrão será suficiente. Esta MBR irá procurar pela primeira partição inicializável no disco, e entao roda o código nesta partição para carregar o restante do sistema operacional.

Se você tiver instalado vários sistemas operacionais em seus discos então você pode instalar uma MBR diferente, que possa mostrar uma lista de diferentes sistemas operacionais, e permitir a você escolher um para carregar. FreeBSD vem com um MBR que pode ser instalado, e outros sistemas operacionais vendidos fornecem MBRs alternativos.

O restante do sistema bootstrap do FreeBSD é divido em três estágios. O primeiro estágio é executado pela MBR, que sabe apenas iniciar o computador em um estado específico e rodar o segundo estágio. O segundo estágio pode fazer mais um pedaço em pouco tempo, depois roda o terceiro estágio. O terceiro estágio terminará a tarefa de carregar o sistema operacional. O trabalho é dividido dentro destes três estágios porque o padrão do PC impõe limites sobre o tamanho dos programas que podem ser rodados nos estágios um e dois. Acorrentar as tarefas permite que o FreeBSD forneça um carregador mais flexível.

O kernel então é inicializado e começa a testar os dispositivos, e então inicializa estes para o uso. Uma vez que o processo de inicialização do kernel é terminado, o kernel passa o controle do processo para init(8), o qual se certifica que os discos estão em um estado aproveitavel. init(8) começa então a configuração a nível-de-usuário que monta o sistema de arquivos, seta e levanta dispositivos de rede para comunicação com a mesma, e normalmente inicia todos os processos que são rodados sobre um sistema FreeBSD na inicialização.

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>.