O que acontece desde que liga o PC até entrar no sistema operativo?
Nunca se questionaram sobre o que acontece nos bastidores, naqueles segundos desde o carregar no botão de energia do computador, até chegar ao sistema operativo? Bem, eu já e ajudou-me não só a ver a lógica por trás de tudo, como a perceber certos erros que podem acontecer. BIOS E UEFI
A primeira coisa a trabalhar é a BIOS (Basic Imput/Output System), ou as actuais UEFI (Unified Extensible Firmware Interface), que começa a verificar o hardware (processador e memória, os periféricos como o rato e o teclado, etc). Este processo de reconhecimento de tudo o que mencionei é designado por ‘POST’ (Power ON SELF TEST) e o seu conjunto de instruções específicas está armazenado na motherboard - nas BIOS mais antigas, está guardado num chip físico chamado ‘ROM Chip’ e, nas actuais UEFI, em memória flash. Aqui, o objectivo é o de facilitar a sua actualização, acelerando todo o processo de arranque, a compatibilidade com arquitecturas de 32 e 64 Bits e a compatibilidade com o esquema de partições de disco GPT (Guid Partition Table), o que permite criar partições acima de 2 TB e ter melhorias de segurança. Depois deste processo, quem toma o controlo é o sistema operativo, através do Bootloader.
BOOTLOADER (GRUB2)
É o programa responsável pelo arranque do sistema operativo e, em sistemas Linux, o mais comum é o Grub2 (Grand Unified Bootloader). Este, está armazenado no disco, no sector /boot/mrb (Master Boot Record) ou, em sistemas EFI, no sector /efi. Nesta fase do processo, o bootloader vai ver o hardware e os periféricos que foram reconhecidos pelo POST e ver a data e hora em que foram carregados no CMOS
(Complementary Metal Oxide Semiconductor), aquela pilha que está na motherboard e que permite que esta informação se mantenha gravada. Isto possibilita que, mesmo com o PC desligado, a informação não se perca e fique sempre actualizada e gravada, tendo a pilha como garantia.
KERNEL E INITRAMFS (INITIAL RAM FILE SYSTEM)
O bootloader vai, então, correr o Kernel. Como é feito esse processo? Primeiro, examina o que vai enviar e para onde. Basicamente, procuraa a partição /boot e, assim que a encontra, o grub é configurado; de seguida, vemos no monitor as opções de escolha do sistema operativo. Depois, começa a segunda fase do processo: o Kernel é descarregado e passa a ser o sistema operativo a controlar o resto deste processo. Quando se fala em Kernel, fala-se de ‘Kernel Linux’. Este contém instruções para configurar a memória no PC, o hardware no sistema, arrancar processos, reconhecer dispositivos de armazenamento e algumas aplicações
necessárias para o boot inicial. Toda esta informação vai, de certa forma, validar a análise anteriormente feita entre o hardware do PC e aquilo que o sistema operativo consegue reconhecer posteriormente. Para isso, o primeiro programa que é executado pelo Kernel é o init mas, primeiro, é carregado temporariamente na memória RAM o sistema de ficheiros (initramfs) que inclui todos os programas e ficheiros binários com todas as acções necessárias para montar correctamente o sistema, começando com a sua base ou raiz root como: garantir as funcionalidades do kernel, localizar dispositivos, localizar/correr drivers e verificar erros existentes na raiz.
A IMPORTÂNCIA DO INIT
Se todos estes pontos correrem bem, o que acontece é que a funcionalidade do initramfs, que está a correr na RAM, deixa de ser executada e passa para a raiz do sistema que foi montada, iniciando o programa init, que corre na base root. Caso este último aspecto não corra bem, dá-se um dos erros mais comuns no boot de uma distribuição Linux: o erro de ‘init’, que indica que a montagem do sistema base (root) não correu bem.
O que o init faz é fazer a montagem final de tudo na raiz root. Se faltar algum driver de hardware, por exemplo, no processo do Kernel e do initramfs, então dá-se o erro. Se tudo correr bem, o Kernel corre este programa init que, por sua vez, vai correr processos para colocar o sistema em funcionamento. É claro que o Kernel, em si, também vai correr processos directamente, mas o init é um gestor de todos os processos que não correm directamente do Kernel.