Artigos

Entendendo o boot do Windows, Linux, OS X

Imagine quantas vezes esta cena acontece no mundo diariamente: Uma pessoa aperta o botão “Power” do computador e então os coolers da fonte de alimentação, processador, placa de vídeo e outros começam a girar, numa clara indicação de que a máquina está em funcionamento. Poucos segundos depois ouve-se um “bip” saído do gabinete e logo o monitor começa a exibir as primeiras imagens. Talvez uma tela preta com letras brancas, que aparentemente não querem dizer nada. Ou então uma logo da empresa montadora do PC. Mais alguns instantes e o usuário já está vendo a animação de início do sistema operacional, seja ele Windows, Linux ou Mac. Em pouco tempo, o computador está preparado para acessar a internet, tocar música, vídeos, executar jogos e qualquer outra tarefa que você desejar.

PC_Boot

Este processo é chamado de Boot. O boot é processo de inicialização não só do sistema operacional, mas do computador como um todo. Porém, este processo muda dependendo do sistema que você tenha instalado em sua máquina. Podemos dizer que é o boot que carrega o S.O. para a memória RAM do computador. Mas, como é feita essa interação entre o sistema operacional (software) que está no disco rígido (hardware) com a memória do computador, que também é um componente de hardware, ou seja, uma peça física? É isso que aprenderemos na coluna Artigos dessa semana!

A compreensão do que realmente acontece no processo de boot de um computador é especialmente útil para técnicos em informática. Se você pretende seguir esta carreira ou, começar na área de T.I. por esta porta (que é por onde a maioria começa), é bom se diferenciar dos chamados “técnicos formatadores” e se tornar um técnico “de verdade”. E você pode começar a fazer isso por estudar, adquirir conhecimento. E o Guia do PC está aqui justamente para isso. Para lhe auxiliar nessa tarefa. Entender o que acontece no boot pode lhe ajudar a solucionar problemas de inicialização sem precisar reinstalar o sistema. Isso lhe poupará tempo e lhe destacará dos demais profissionais que não investem em estudo. Então, vamos começar a aprender como funciona o boot nos principais sistemas operacionais? Mas antes, precisamos passar por uma etapa universal de todo computador: o ato de ligar.

BIOS e POST

A primeira coisa que acontece quando ligamos o computador é a fonte de alimentação enviar energia para a placa mãe. Nesse ponto entra em ação a BIOS. O Basic Input/Output System (Sistema Básico de Entrada/Saída), é um programa de computador pré-gravado na firmware(instruções operacionais programadas diretamente no hardware), responsável pelo suporte básico de acesso ao hardware e também por dar inicio ao carregamento do sistema operacional. Uma curiosidade: muitas pessoas pensam que a abreviação BIOS se refere erroneamente a: Basic Integrated Operating System (Sistema Operacional Básico Integrado) ou Built In Operating System (Sistema Operacional Interno), as duas estão erradas. Assim a BIOS dá inicio ao teste POST.

O teste POST (Power On Self Test) é em termos simples um auto-teste de inicialização. É uma sequencia de teste realizados pela BIOS para verificar se o sistema está preliminarmente operável. Veja alguns testes:

  1. Identificação da configuração instalada.
  2. Inicialização dos dispositivos periféricos de apoio a placa mãe.
  3. Inicia a placa de vídeo.
  4. Teste de memória e teclado.
  5. Carregamento do sistema operacional para a memória.
  6. Entrega o controle do processador para o sistema operacional.

Se nesses teste for encontrado algum problema, a BIOS emite uma sequencia de bips. Cada bip pode identificar um determinado tipo de problema. No entanto, esses bips podem mudar de acordo com o fabricante da placa mãe. Mas de forma geral, vejamos o que significa alguns dos bips:

  • bip curto – POST Normal – sistema esta ok.
  • 2 bips curtos – erro no POST – um código de erro é mostrado na tela.
  • Não bip – fonte de alimentação, sistema com problema, CPU desconectada, ou som desconectado.
  • Bip Contínuo – fonte de alimentação, sistema, ou problema no teclado.
  • Repetidos bips curtos – fonte de alimentação ou problema no sistema ou no teclado.
  • 1 longo bip, 1curto bip – sistema com problema.
  • 1 bip longo, 2 bips curtos – adaptador de vídeo com problema;
  • 3 Bips longos: Falha nos primeiros 64 KB da memória RAM .Foi detectado um problema grave nos primeiros 64 KB da memória RAM.
  • 4 Bips Longos: Timer não operacional: O Timer 1 não está operacional ou não está conseguindo encontrar a memória RAM.
  • 5 Bips: Erro no processador.
  • 7 Bips: O processador gera uma interrupção
  • 8 Bips: Erro na memória da placa de vídeo.
  • 9 Bips: Erro na memória ROM.

Mas se não tiver nenhum problema, e o teste POST for concluído com exito, a BIOS vai ler o primeiro setor do HD que foi definido como o primário. Se ela encontrar um setor de boot válido, ela irá carregar seu código na memória e depois passar o controle completo do hardware para sistema operacional. Caso a BIOS não encontre nenhum ela irá procurar em outros dispositivos numa lista pré-definida no Setup. Caso ainda assim não encontre nenhum, mostrará uma mensagem na tela solicitando que o usuário coloque um CD/DVD com um sistema válido. A partir daqui o processo de boot continua, mas irá ter diferenças entre os sistemas.

MS-DOS

O MS-DOS precisa de apenas três arquivos para iniciar, o IO.SYS, MSDOS.SYS e COMMAND.COM. O primeiro a ser carregado é o IO.SYS. Ele é responsável pelos comandos de entrada e saída. Depois é carregado o MSDOS.SYS que por sua vez carrega o COMMAND.COM. Depois é exibido o prompt de comando para o usuário.

Windows

XPStart

Windows 95/98

O processo de boot desses dois sistemas é similar a do MS-DOS. Mas claro, existe diferenças importantes para ser mencionadas. A primeira é que o arquivo IO.SYS é uma união dos arquivos IO.SYS, MSDOS.SYS, CONFIG.SYS e do AUTOEXEC.BAT. Depois que o IO.SYS é carregado, ele por sua vez, carrega o MSDOS.SYS. Mas esse MSDOS.SYS é diferente daquelo do MS-DOS. Ele agora é um arquivo de texto editável que controla boa parte do processo de boot. Depois disso é carregado o arquivo COMMAND.COM e depois o AUTOEXEC.BAT. Após o arquivo WIN.COM se encarrega da interface gráfica.

Windows NT /2000 / XP / 2003

Após o POST ser finalizado e a BIOS ter passado o controle do hardware para o sistema operacional, o NTLDR (New Technology Loader ou Carregador da Nova Tecnologia) entra em ação. Ele é responsável por carregar o sistema operacional e geralmente é executado a partir de uma partição primária no disco. Pode-se também iniciá-lo a partir de um disco de boot. O que ele faz? Primeiramente ele instrui o processador a se converter de modo real para protegido. Depois disso, alguns drives embutidos dentro do NTLDR identificam o sistema de arquivos que está no disco.

No próximo passo o carregador de  boot lhe permite escolher qual sistema operacional você deseja usar, no caso de você ter mais de um, obviamente. Nesse ponto ele já leu o arquivo boot.ini e chamou o NTDETECT.COM. O boot.ini é um arquivo somente para leitura que está localizado de forma oculta na raiz do disco onde o Windows está instalado. Ele é divido em “boot loader” e “operating systems“, onde o primeiro define quanto tempo o usuário terá para decidir qual sistema operacional usar e, em caso de nenhuma ação do usuário, qual será a escolha padrão. A segunda tem a função de listar quais sistemas estão instalados na máquina. Depois que o usuário faz sua escolha (ou não), o NTDETECT.COM recolhe as informações do sistema. Essas informações são posteriormente gravadas na chave HKLM\HARDWARE do registro do Windows.

Após isso é carregado o kernel do sistema. O kernel, em português núcleo ou cerne, se refere ao componente central do sistema operacional de um computador. Ele funciona como uma ponte, fazendo o controle entre o aplicativo e o processamento real de dados feito a nível de hardware. Ele é iniciado pelo programa NTOSKRNL.EXE. Também é carregado a camada de abstração de hardware(CAH). Essa camada é uma que existe entre o hardware físico e o software. Sua função é ocultar as diferenças entre hardwares, para as aplicações funcionarem com melhor fluxo. Os S.O. que utilizam a CAH são facilmente suportados em hardwares diferentes. Agora você entende por que o Windows roda sem problemas em tantas máquinas diferentes, não é? Neste caso a CAH é chamada pelo arquivo HAL.DLL. Depois disso é carregada a chave de registro HKLM\SYSTEM e o NTLDR carrega os drives dos dispositivos. O nível de valor de controle de erro é de 0x0 (daqui a pouco explicaremos isso).

Até agora está dando pra acompanhar? Então vamos continuar!

A essa altura finalmente a tela de boot do Windows aparece. Finalmente! Agora a chave do registro HKLM\HARDWARE é criada com as informações que o NTDETECT.COM recolheu antes. Lembra? Agora, após ler a chave HKLM\SYSTEM\CurrentControlSet, o kernel inicia os dispositivos de nosso computador.

Agora vamos explicar o que significa aquele 0x0 que foi mencionado acima. Existem quatro níveis de controle de erro. Vamos explicar alguns:

  1. 0x0: Boot continua normalmente.
  2. 0x1: Boot continua, mas com mensagens de erro na tela.
  3. 0x3: Boot é interrompido. Tenta novamente com a última configuração válida.
  4. 0x4: Boot interrompido. Reinicia e tenta iniciar como 0x3.

E caso você receba a mensagem perguntando que configuração usar antes de iniciar o Windows, é porque o control set LastKnowGood está com defeito.

Expliquei sobre esses erros pois é nessa parte onde se costumar dar mais erros de inicialização do Windows.

Agora o Gerenciador de Seção smss.exe, carrega os serviços e subsistemas imediatamente. Daí o subsistema Win32 carrega o WinLogon.exe e o Isass.exe responsável pela segurança local. Uma curiosidade: muitos criadores de malwares, como vírus, trojans e worms, dão o mesmo nome desse arquivo(isass.exe) aos seus processos para tentar escapar da detecção. Mas como o Windows XP, e os outros da mesma época, está sendo substituído pelo Windows 7, essa estratégia também cairá em desuso.

Finalmente o controlador de serviço ler a chave HKLM\SYSTEM\Set\Services para as entradas de serviços que serão iniciados e pronto. No Windows NT o boot somente é completo quando é feito login no sistema.

Aposto como vocês não sabiam que tudo isso acontecia e acontece, sempre que você liga o computador, e tudo isso em pouquíssimo tempo. Mas ainda não acabou, vamos falar mais um pouco sobre o boot de outros sistemas.

E no Windows Vista / Server 2008 / 7

A diferença que existe entre o boot dos Windows anteriores a estes, está na forma como o sistema é localizado e iniciado. A BIOS carrega o MBR (Master Boot Record). O MBR é o 1º sector do 1º disco do 1º canal do disco. O MBR carrega o PBR da partição ativa no momento. Daí transfere o controle para ele. O PBR é o primeiro bloco de qualquer partição. O MBR é independente do sistema operacional, já o PBR trabalha junto e tem a função de carregar um programa um pouco maior na próxima etapa.

O PBR não procura pelo NTLDR e sim pelo novo componente o Bootmgr. O Bootmgr carrega o BCD (Boot Configuration Database). O BCD agora carrega o Winload.exe, no caso do Windows Vista, ou outro aplicativo de carregamento do SO. E daí o OSLoader inicia o kernel. As informações anteriormente mantidas no boot.ini agora ficam no BCD.

Linux

Linux_Boot

Como existem diversas distribuições de linux, vamos falar como geralmente se dá o boot no mesmo. Isso ocorre em basicamente quatro passos:

GRUB
GRUB
  1.  A BIOS carrega o gerenciador de boot que está na MBR. No caso do linux geralmente o GRUB ou LILO. O GRUB é um multi-carregador do sistema operacional(multi boot boot-loader). É usado geralmente para usuários que desejam que seu computador tenha dual booting. Já o LILO é um acrônimo da expressão inglesa LInux LOader e funciona como boot manager. Agora que você já escolheu o sistema que deseja usar, o kernel do mesmo é carregado e assume o controle do computador. Nesse instante algumas informações como por exemplo, o seu sistema de arquivos, são exibidos na tela.
  2. Quando o Kernel toma o controle da máquina, ele exibe algumas informações adquiridas da BIOS e do Hardware. Essas informações são muito rápidas para serem acompanhadas.
  3. Depois o Kernel inicia o básico do Hardware como teclado, mouse e portas. Outros dispositivos como placa mãe e HD, por exemplo, são configurados de forma mínima.
  4. Depois disso o Kernel carrega o processo init. O init faz o trabalho de carregar todos os daemons e as configurações avançadas. As partições do /etc/fstab são montadas. E finalmente é carregado o restante das daemons que estão faltando e o usuário tem acesso ao prompt de comando ou a área gráfica.

OS X

osx_locked_boot

Esse é um dos complexos. O MAC OS X não usa a BIOS, mas sim um sistema novo chamado EFI. O EFI(Extended Firmware Interface) é uma interface criada pela intel para substituir significativamente melhor a velha BIOS.

Quando ligamos o MAC, o EFI é iniciado e coleta informações do Hardware e o mesmo é iniciado. Logo após isso o sistema operacional é selecionado. Depois que SO é iniciado o controle passa para o arquivo /System/Library/CoreServices/BootX. Ele é o bootloader que, por sua vez, carrega o Kernel XNU. O BootX carrega, em cache, alguns drives de dispositivos. Depois a rotina init do kernel é carregada. A partir daqui o dispositivo raiz que está sendo carregado é executado e o OpenFirmware  não fica mais acessível.

Daí, algumas estruturas de dados são iniciadas pelo Kernel, elas se chamam Mach/BSD. Depois é iniciado o serviço /sbin/mach_ini ele mapeia os nomes dos serviços e as portas Mach que dão acesso a esses serviços.

Agora as coisas acontecem a nível de usuário. O mach_init carrega o sbin/init do BSD, ele determina o runlevel e carrega o /etc/rc.boot que determina e configura a máquina para rodar um unico usuário, e como deve ser o seu boot(pelo cd, rede e etc). Se tudo der certo, o rc.boot executa o script de boot multiusuário /etc/rc. Ele, por sua vez, monta os sistemas de arquivo local, verifica se a pasta /private/var/tmp existe e depois executa esse arquivo: /etc/rc.installer_cleanup. Ele é de grande importância e se encarrega de praticamente todo o restante do processo.

Com certeza o processo de boot de um computador é algo impressionante! Mas, quando o conhecemos, podemos melhor diagnosticar um problema em um PC, Linux ou MAC. Deixe nos comentários o que acharam do artigo, e se tiver alguma coisa a mais para compartilhar conosco não exite de fazer isso!

Você também vai gostar

Leia também!