Boot em Sistemas UNIX (Parte 3)
by admin on jun.03, 2008, under FreeBSD, Linux, Monster SO

Como prometido no artigo anterior neste irei mostrar o funcionamento do boot em freeBSD, e algumas formas de você interagir com a MBR.
Primeiro deixe-me postar algumas informações sobre o FreeBSD e a forma de enxergar o disco que é um pouco diferente do Linux.
No Linux, o habitual é que o dispositivos de bloco sejam encontrados no diretório /dev, sendo um dispositivo IDE/ATA ele será reconhecido como hda ou hdb, sendo um disco SATA ou disco SCII como sda, sdb, etc, as partições deste disco são enxergadas como acrécimo do número da partição ao nome do dispositivo, por exemplo, a segunda partição de um disco ligado a IDE primary-master seria reconhecida como hda2.
Discos IDE são reconhecidos com a nomenclatura ad no freeBSD, assim sendo o primary-master será ad0, o primary-slave será ad1 e assim por diante, para discos SCII ou SATA a nomenclatura é sd mas segue a mesma sequência de numeração.
O comportamento no FreeBSD é um pouco diferente, o equivalente a partições de um disco em FreeBSD são chamados de slices, não é preciso se preocupar com partições lógicas ou físicas, basta sair criando os slices que o sistema saberá se encarregar disto. Não é necessário separar em vários slices (partições) o sistema como no Linux, mas você pode caso ache necessário, mas mais adiante você verá que não é.
Ao se criar um slice, ele será reconhecido no sistema, dentro do diretório /dev (óbvio) como o nome do disco, por exemplo ad0 (disco IDE primary-master), acrescido de s<número> onde <número> é o número do slice, por exemplo, ad0s1 é o primeiro slice do disco ad0, mas não acaba ai.
Dentro de cada slice podem ser criados labels (rótulos), não há limites de labels, mas há um padrão a ser seguido de qual label usar para qual ponto de montagem do sistema, isto torna o sistema completamente padronizado, assim em qualquer sistema FreeBSD você saberá onde esta o quê.
No linux por exemplo você pode determinar uma partição para montar o /home, no FreeBSD você pode determinar um label para montar o /home, independente de estar no mesmo slice do sistema ou não, para desktops isto é até comum, mas em servidores sugiro o uso do padrão que pode ser visto no handbook oficial em http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/install-steps.html
Quando se cria um label é acrescido uma letra ao endereço, por exemplo o endereço /dev/ad0s1a se refere ao label “a” do slice “s1″ do disco “ad0″, como você pode perceber, pelo uso de labels, o sistema tem um nível a mais de divisão do disco do que teria no linux ou no windows, por isso não há a necessidade de dividir o sistema em vários slices (partições).
Resumindo o padrão de labels que eu já me referi acima, ficaria assim para o disco ad0 com um único slice s1:
| LABEL | PONTO DE MONTAGEM | ESPAÇO MÍNIMO |
| /dev/ad0s1a | / | 100Mb |
| /dev/ad0s1b | SWAP (não é montado) | O dobro de sua memória RAM |
| /dev/ad0s1d | /tmp | 512Mb |
| /dev/ad0s1e | /var | 512Mb |
| /dev/ad0s1f | /usr | 10Gb |
| /dev/ad0s1g | /home | a gosto |
OBS 1: Não é usado o label “c” (esse ponto do padrão ainda não entendi o por quê)
OBS 2: Repare que a raiz do sistema (”/”) tem só 100Mb, é porque todo o restante do sistema não ocupa mais do que isso, não ficam temporários nem qualquer arquivo de tamanho variável na raiz do sistem, o que é uma bela organização, o tamanho de 10Gb para o /usr se deve ao fato de ser esse o ponto de montagem onde os programas do sistema serão colocados, então deixe o necessário, aconselho no mínimo 10Gb.
OBS 3: Por ser muito complexo o sitema de arquivos do FreeBSD e toda essa estrutura de montagem do disco, farei um artigo especificamente sobre isso, o que é raro pois existindo o FreeBSD Handbook como documentação oficial, não existem muitos artigos ou HowTos sobre o sistema base do FreeBSD, os usuários puritas do FreeBSD podem ficar revoltados com este artigo e com o próximo, mas para mim esta é uma forma de difundir o sistema.
Entendido a montagem do disco no FreeBSD vamos ao boot, na instalação do sistema é solicitado que você escolha a forma de instalação do boot loader logo após criar os slices, podendo optar por instalar o Boot Loader padrão do FreeBSD conhecido simplesmente como bootMgr, instalar um MBR standart (inicialização do FreeBSD sem boot manager, assim não é possível optar entre sistemas no mesmo disco ou estação) ou ainda deixar o MBR intocado, o que não mudará o Boot Loader.
Uma cópia do conteúdo da MBR é armazenada em /boot/boot0, a verdadeira MBR fica fora do sistemas de arquivos montados pelo FreeBSD.
O bootMgr funciona em três estágios, boot0, boot1 e boot2, como já dito antes o /boot/boot0 é uma cópia daquilo que esta no MBR do disco, os estágios 0 e 1 ná realidade é o mesmo processo, porém como o MBR só comporta 512 bytes ele foi dividido, a segunda parte que é o /boot/boot1 também é uma cópia e é muito simples, este também pode somente ter o tamanho máximo de 512 bytes, o sistema disklabel do FreeBSD que armazena informações no slice para procurar e executar o /boot/boot2, então o boot1 fica no setor de informações do slice.
O boot2 é mais sofisticado, ele compreende bastante os sistemas de arquivos e dessa forma procura arquivos neles fornecendo uma relação de kernel a ser iniciados ou outro carregador para executar.
Por exemplo, caso você tenha o Windows em uma partição, o Linux em outra partição e o FreeBSD na ultima partição do disco, ao inicializar a estação será exibida automaticamente uma lista como a abaixo:
F1 DOS
F2 Linux
F3 FreeBSD
Assim você poderá optar por qual sistema inicializar, pressionando F1 para iniciar pelo Windows (DOS), F2 para inicializar pelo Linux e F3 para inicializar pelo FreeBSD, o bootMgr também memoriza a sua última escolha, assim caso tenha optado por inicializar o Linux no último boot da estação, ao reinicia-la e não optar por nenhuma opção, a última opção usada será usada por default após alguns segundos de espera.
Com esse sistema também não é mais necessário configurar manualmente o boot loader para saber por onde iniciar no caso de remoção de um dos sistemas do disco ou no caso de adicionar outro disco com outro SO, ele reconhecerá automaticamente a alteração e exibira a relação correta no próximo boot da estação.
Não vou focar mais no bootMgr e no loader, pois isto foge ao escopo do artigo que visa mostrar o processo de boot em sistemas Unix, só falta ressaltar que é possível usar o lilo com o FreeBSD instalando ele a partir do próprio FreeBSD, mas eu não faria isso poir o bootMgr é muito superior e da muito menos manutenção.
Já vimos o processo de inicialização a partir do instante que um computador é ligado no primeiro artigo, no segundo artigo vimos como a interação da MBR com os principais boot loaders do linux, neste vimos o processo do boot loader no FreeBSD e dei uma pincelada pelo complexo sistema de montagem de disco do FreeBSD.
Infelizmente não foi possível apresentar as formas de interação com a MBR como tinha prometido no parte 2 pois este ficou muito extenso, na próxima continuação vou falar sobre o que ocorre logo depois que o boot loader chama o kernel, as formas de interação vou deixar para um outro artigo pois também acho que foge ao assunto.






