< Finalmente, o Boot >
Chegamos, enfim, ao procedimento de boot propriamente dito, ou seja, à carga dos arquivos que compõem o sistema operacional. E depois de tanta badalação receio que isto vai ser uma espécie de anticlímax.
Não é que o boot seja uma coisa assim tão sem graça. Pelo contrário: é rico e cheio de nuances. Vivêramos ainda os heróicos tempos do DOS, eu descreveria com detalhes os interessantíssimos malabarismos que ele executa para ser carregado. Mas não vale a pena perder tempo com um sistema operacional cujos dias estão contados (é verdade que ouço isto há pelo menos dez anos e o DOS continua aí firme e forte, mas parece que desta vez o pobre está mesmo em estado terminal) e o procedimento de boot dos novos sistemas operacionais de 32 bits é tão complexo e depende tanto dos dispositivos agregados à máquina que não cabe entrar em detalhes.
Mas, enfim, vamos ao boot. Depois de identificar o disco de boot, o último ato da rotina de inicialização do bootstrap é carregar na memória o "bootstrap record", ou registro de boot. Feito isto ela sai de cena e entrega o controle da máquina à esta pequena maravilha da arte de programação, apontando o ponteiro de instruções para o trecho de memória onde ela foi carregada.
Quando digo "pequena maravilha", não estou exagerando. Pois cabendo todo no setor de boot, que além dele abriga em seus 512 bytes dados importantes como a tabela de partição do disco rígido e o BPB (já falo nele), o bootstrap record não pode ser muito grande. E no entanto contém todas as rotinas necessárias para ler no disco, carregar na memória e passar o controle para os arquivos que formam o sistema operacional.
E aqui temos novamente uma aparente impossibilidade e uma evidente contradição. Pois fora do universo do sistema operacional, o conceito de "arquivo" simplesmente não existe. Pense um pouco: afinal, o que é um arquivo? Qualquer que seja sua concepção, ela forçosamente depende do sistema operacional. Somente ele é capaz de compreender o conceito de arquivos, manejá-los, gravá-los no disco e, evidentemente, carregá-los na memória. E como a função do registro de boot é justamente carregar o sistema operacional, é óbvio que enquanto ele está sendo executado a máquina ainda não dispõe de um sistema operacional. E como pode lidar com arquivos uma máquina sem sistema operacional?
Bem, é verdade que ela ainda não dispõe do sistema operacional. Mas já pode acessar uma parte dele. Estranhou? Mas não devia: lembre-se do ROM-BIOS, um chip de memória ROM que contém algumas rotinas do sistema operacional, aquelas necessárias para lidar diretamente com o hardware. Dentre as quais, evidentemente, algumas rotinas da famosa Int 13h (se você andou passeando pela Trilha Zero ultimamente sabe do que se trata; se não andou, basta saber que a Int 13h agrupa algumas das rotinas usadas pelo BIOS para acessar disco e lembrar que BIOS é o sistema básico de entrada e saída, que faz parte do sistema operacional). E se estas rotinas estão gravadas em um chip de memória ROM, podem ser executadas: afinal, memória é memória e quando o ponteiro de instruções aponta para uma posição de memória o código que lá está contido é executado, seja a memória ROM ou RAM (afinal, é exatamente nisto que se baseia a execução do POST e do bootstrap).
Então está resolvido o problema. O bootstrap record nada sabe sobre arquivos (na verdade não sabe nem ao menos o que é um arquivo), mas pode executar algumas rotinas do BIOS que estão gravadas em ROM. O BIOS, por sua vez, também não sabe o que é um arquivo (lembre-se que o ROM-BIOS contém apenas as rotinas necessárias para lidar com o hardware) mas sabe prefeitamente o que é um setor. E graças ao BPB que foi mencionado de passagem lá em cima, conhece um bocado sobre o disco: BPB, que significa BIOS Parameter Block, é um conjunto de bytes gravados logo no início do boot record e que contém praticamente todas as informações sobre a geometria do disco: número de setores, trilhas, faces, o diabo.
Então, juntando as informações contidas na tabela de partições, no BPB e no boot record (todas espremidas nos 512 bytes do setor de boot, o que explica porque me referi a ele como "pequena maravilha da arte de programação"), uma máquina ainda sem sistema operacional consegue carregar na memória os arquivos que constituir-se- ão justamente no sistema operacional.
Uma coisa interessante este setor de boot.
Mas um momento: trata-se de um "setor" de boot. E se é um setor, está gravado no disco. Então quem foi, afinal, que o gravou?