Sítio do Piropo

B. Piropo

< Trilha Zero >
Volte de onde veio
12/02/2001

< Partida II: Carregando o sistema >


O procedimento de partida começa com a execução de um conjunto de rotinas gravadas em ROM que testam os componentes da máquina, identificam o disco de inicialização, lêem seu primeiro setor (físico) e o carregam na memória. Esse primeiro setor denomina-se MBR, de “Master Boot Record” (setor mestre de inicialização). Há quem o confunda com o “setor de boot” mas já veremos que são coisas diferentes.

Dos 512 bytes do MBR, os últimos 64 constituem a “Partition Table”, ou Tabela de Partição. Ela é formada por quatro “entradas” de 16 bytes, cada uma correspondendo a uma partição (por isso nenhum disco pode ter mais que quatro partições). Cada entrada é dividida em dez campos que descrevem as características da partição correspondente, como localização no disco dos setores inicial e final e número total de setores. Dois deles nos interessam: o “system indicator” e o “boot flag”. O primeiro, que pode assumir diversos valores, informa se a partição é estendida ou primária e, nesse caso, que “sistema de arquivos” ela usa (mais sobre isso adiante). O segundo pode assumir apenas dois valores: zero ou 80H (esse “H” significa que o valor é expresso em hexadecimal). Somente um dos quatro “boot flags” pode valer 80H e este deve obrigatoriamente corresponder a uma das três possíveis partições primárias, posto que indica a partição ativa (ou de boot).

Como sabemos, além da tabela de partição, o MBR contém uma rotina de programação. Carregar o conteúdo do MBR na memória e passar o controle da máquina para esta rotina é a última tarefa do programeto gravado em ROM. A partir de então ele somente irá “acordar” na próxima vez que a máquina for ligada. Sua missão foi cumprida: como um mago que se alça do solo puxando os cordões das próprias botinas (história que, conforme me informa Mestre Ricardo Rangel, deriva de uma das lendárias mentiras do Barão de Munchausen), ele foi capaz de testar os componentes da máquina, localizar uma rotina de programação no disco rígido, carregá-la na memória e passar o controle para ela. Convenhamos: uma tarefa hercúlea. Merece o descanso.

A rotina de programação contida no MBR, agora em execução, cumpre uma única e singela tarefa: consulta a tabela de partição para determinar qual das partições primárias é a ativa, localiza seu primeiro setor e carrega-o na memória. É este o “Setor de Boot”. Note que ele é diferente do MBR. Enquanto o MBR é o primeiro setor do disco (físico) de inicialização, o setor de boot é o primeiro setor da partição (lógica) ativa. Ele também contém uma rotina de programação. É ela que irá executar o último passo do procedimento de partida: ler os arquivos que constituem o sistema operacional (que estão armazenados na partição ativa, ou disco lógico de boot), carregá-los na memória e passar o controle para eles.

Como não há espaço para discutir “sistemas de arquivos”, digo apenas que se trata da forma pela qual um sistema operacional consegue organizar os setores de um disco lógico ou partição, para neles armazenar arquivos. O sistema de arquivos depende do sistema operacional e é determinado no momento em que se “formata” um disco lógico ou partição.O velho DOS usava um sistema baseado em uma tabela e que por isso denominava-se FAT (File Allocation Table, ou tabela de alocação de arquivos). Há três tipos desses sistemas: FAT-12 (hoje em desuso), FAT-16 e FAT-32, também adotados por algumas versões de Windows. O Windows NT criou seu próprio sistema, o NTFS (NT File System) e o saudoso OS/2 da IBM criou o HPFS (High Performance File System). Também o Linux usa o seu.

Note que até agora o procedimento de partida não se preocupou com isso, já que limitou-se a carregar na memória setores isolados cuja localização é conhecida e que não faziam parte de arquivos. Mas de agora em diante a coisa é diferente: é preciso carregar os arquivos do sistema operacional. Por isso o setor de boot precisa estar na partição ativa, formatada com um sistema de arquivos compatível com o sistema operacional a ser carregado. E a rotina de programação que ele contém leva em conta não apenas o sistema operacional como ainda o sistema de arquivos usado para formatar a partição. Também esta rotina tem uma única tarefa: localizar na partição os arquivos que compõem o sistema operacional (e que, portanto, contêm todas as rotinas necessárias para gerir a máquina), transpô-los para a memória e passar o controle para ele.

Com este passo o sistema operacional é carregado. Daí pra frente é com ele e o procedimento de partida pode dar seus trâmites por findos.

B. Piropo