Carregador de inicialização
Um carregador de inicialização é um programa de computador que é responsável por inicializar um computador e inicializar um sistema operacional. Se ele também fornece um menu interativo com várias opções de inicialização, então é frequentemente chamado de gerenciador de inicialização.
Exemplos de carregadores de inicialização de primeiro estágio incluem BIOS, UEFI, coreboot, Libreboot e Das U-Boot. Ele inicializa dispositivos de hardware como CPU, placa-mãe, memória, armazenamento e outros dispositivos de E/S.
Carregadores de inicialização de segundo estágio, como GNU GRUB, rEFInd, BOOTMGR, Syslinux e NTLDR, não são sistemas operacionais propriamente ditos, mas são capazes de carregar um sistema operacional adequadamente e transferir a execução para ele; o sistema operacional subsequentemente se inicializa e pode carregar drivers de dispositivo extras. Implementações de segundo estágio podem incluir interfaces de usuário interativas, permitindo a seleção de opções de inicialização e modificação de parâmetros. Eles lidam com o carregamento do núcleo, incluindo o processamento de imagens initrd/initramfs, e podem passar parâmetros de inicialização para o núcleo. Muitos implementam designs modulares que suportam módulos carregáveis para funcionalidade adicional. Essas escolhas podem incluir diferentes sistemas operacionais (para inicialização dupla ou múltipla de diferentes partições ou unidades), diferentes versões do mesmo sistema operacional (no caso de uma nova versão ter problemas inesperados), diferentes opções de carregamento do sistema operacional (por exemplo, inicialização em um modo de resgate ou seguro) e alguns programas autônomos que podem funcionar sem um sistema operacional, como testadores de memória (por exemplo, memtest86+), um shell básico (como no GNU GRUB) ou até mesmo jogos. Alguns carregadores de inicialização também podem carregar outros carregadores de inicialização; por exemplo, o GRUB carrega o BOOTMGR em vez de carregar o Windows diretamente. Normalmente, uma escolha padrão é pré-selecionada com um atraso de tempo durante o qual um usuário pode pressionar uma tecla para alterar a escolha; após esse atraso, a escolha padrão é executada automaticamente para que a inicialização normal possa ocorrer sem interação. Eles também podem lidar com compactação, verificação criptográfica e carregamento sequencial de outros carregadores de inicialização. O processo de inicialização pode ser considerado completo quando o computador estiver pronto para interagir com o usuário ou o sistema operacional for capaz de executar programas de sistema ou programas de aplicativos.
Computadores pessoais compatíveis com IBM
Em computadores x86, depois que o BIOS executa o autoteste de inicialização (POST), ele executa o carregador de inicialização de primeiro estágio, que é um programa compacto de 512 bytes que reside no registro mestre de inicialização (MBR). Executando em modo real de 16 bits no endereço 0x7C00, ele localiza o carregador de inicialização de segundo estágio. Seu principal desafio está em realizar essas tarefas dentro de restrições de tamanho rígidas enquanto lida com potenciais falhas de hardware. O carregador de inicialização deve navegar pelas estruturas de disco, frequentemente implementando suporte ao sistema de arquivos FAT, e gerenciar a delicada transição do estado de inicialização do BIOS para um ambiente estável para o próximo estágio de inicialização.
IBM System/360 e seus sucessores
No IBM System/360 e seus sucessores, o controle de operador LOAD inicia um processo chamado Carga de Programa Inicial (IPL),[nb 4] que Os sistemas operacionais para S/360 até z/Architecture residem em dispositivos de armazenamento de acesso direto (DASDs) (discos tambores, por exemplo). Para esses dispositivos, a Leitura de Carga de Programa Inicial (Read IPL) faz uma busca para o cilindro 000016, cabeça 000016 e orienta para o registro 0116. Para todos os sistemas operacionais suportados, o registro 0116 contém uma Palavra de Controle de Canal de Leitura de Dados (Read Data CCW) para ler um registro de inicialização e uma Palavra de Controle de Canal (CCW) de Transferência no Canal (TIC) para a inicialização. O programa de canal na inicialização lê o texto do programa de Carga de Programa Inicial (IPL) no local 0, começando com uma Palavra de Estado do Programa (PSW) apontando para a primeira instrução de texto do programa de Carga de Programa Inicial (IPL).
Muitos sistemas embarcados devem inicializar imediatamente. Por exemplo, esperar um minuto para que uma televisão digital ou um dispositivo de navegação GPS inicie é geralmente inaceitável. Portanto, esses dispositivos têm sistemas de software em ROM ou memória flash para que o dispositivo possa começar a funcionar imediatamente; pouco ou nenhum carregamento é necessário, porque o carregamento pode ser pré-computado e armazenado na ROM quando o dispositivo é feito. Sistemas grandes e complexos podem ter procedimentos de inicialização que prosseguem em várias fases até que finalmente o sistema operacional e outros programas sejam carregados e estejam prontos para execução. Como os sistemas operacionais são projetados como se nunca iniciassem ou parassem, um carregador de inicialização pode carregar o sistema operacional, configurar-se como um mero processo dentro desse sistema e, em seguida, transferir irrevogavelmente o controle para o sistema operacional. O carregador de inicialização então termina normalmente como qualquer outro processo faria.
A maioria dos computadores também é capaz de inicializar por uma rede de computadores. Neste cenário, o sistema operacional é armazenado no disco de um servidor, e certas partes dele são transferidas para o cliente usando um protocolo simples, como o Protocolo de Transferência De Arquivos Trivial (TFTP). Após essas partes terem sido transferidas, o sistema operacional assume o controle do processo de inicialização. Assim como no carregador de inicialização de segundo estágio, a inicialização de rede começa usando métodos genéricos de acesso à rede fornecidos pela ROM de inicialização da interface de rede, que normalmente contém uma imagem do ambiente de execução de pré-inicialização (PXE). Nenhum driver é necessário, mas a funcionalidade do sistema é limitada até que o núcleo e os drivers do sistema operacional sejam transferidos e iniciados. Como resultado, uma vez que a inicialização baseada em ROM tenha sido concluída, é totalmente possível inicializar a rede em um sistema operacional que não tem a capacidade de usar a interface de rede.


