F.2. Uma Investigação Detalhada do Processo de Inicialização
O início do processo de inicialização varia de acordo com a plataforma de hardware que está sendo usada. Entretanto, uma vez que o kernel é encontrado e carregado pelo carregador de inicialização, o processo de inicialização padrão é idêntico em todas as arquiteturas. Este capítulo concentra-se principalmente na arquitetura x86.
F.2.1. A interface firmware
F.2.1.1. Os sistemas x86 com BIOS
O Basic Input/Output System (Sistema Básico de Entrada/Saída), ou BIOS, é uma interface de firmware que controla o primeiro passo do processo de inicialização e também fornece a interface de nível mais baixo de interface para os dispositivos periféricos. Nos sistemas x86 equipados com o BIOS, o programa é escrito em somente leitura, memória permanente e fica sempre disponível para uso. Quando o sistema inicializa, o processador analisa o final da memória do sistema para o programa do BIOS, e o executa.
Uma vez carregado, o BIOS testa o sistema, detecta periféricos e então localiza um dispositivo válido a ser usado para inicializar o sistema. Normalmente, procura por mídias inicializáveis em quaisquer drives de disquete e de CD-ROM presentes, e então, caso isto falhe, procura no dispositivo IDE mestre no barramento IDE primário. O BIOS então carrega na memória qualquer programa que resida no primeiro setor deste dispositivo, chamado de Master Boot Record (Registro Mestre de Inicialização) ou MBR. O MBR tem apenas 512 bytes de tamanho e contém instruções em código de máquina sobre como inicializar o computador (o carregador de inicialização), bem como a tabela de partições. Uma vez que o BIOS encontra e carrega o carregador de inicialização na memória, ele passa o controle do processo de inicialização para o carregador de inicialização.
Este primeiro estágio é um pequeno binário em código de máquina no MBR. Sua única função é localizar o carregador de inicialização do segundo estágio (GRUB e carregar a primeira parte do mesmo na memória.
F.2.1.2. Sistemas x86 baseados em UEFI
O Unified Extensible Firmware Interface (UEFI) foi criado, assim como o BIOS, para controlar o processo de inicialização (através do boot services) e para fornecer uma interface entre o firmware do sistema e um sistema operacional (através do runtime services). Ao contrário do BIOS, ele apresenta sua própria arquitetura, independente da CPU, e seu próprio driver de dispositivo. O UEFI pode montar partições e ler certos sistemas de arquivos.
Quando um computador com o x86, equipado como as inicializações do UEFI, a interface procura o armazenamento do sistema por uma partição rotulada com um globally unique identifier (GUID) específico que o marca como o EFI System Partition (ESP). Esta partição contém aplicativos compilados para a arquitetura EFI, o qual pode incluir os carregadores de inicialização para os sistemas operacionais e software de utilitários. Os sistemas UEFI incluem um EFI boot manager que pode inicializar o sistema a partir de uma configuração default, ou solicita que um usuário escolha um sistema operacional para inicializar. Wuando um carregador de inicialização é selecionado, manualmente ou automaticamente, o UEFI o lê na memória e retém controle do processo de inicialização no mesmo.