Carregador de inicialização
Um carregador de inicialização , [1] em ciência da computação , é o programa que, na fase de inicialização do computador , carrega o kernel do sistema operacional da memória secundária (por exemplo, um disco rígido ) para a memória primária (geralmente RAM ), permitindo que o processador para executá-lo e, consequentemente, iniciar o sistema.
O termo deriva do fato de que o processo de iniciar um computador é chamado de bootstrap (do inglês para levantar-se pelo próprio bootstrap , "puxar-se pelas fivelas das botas"). No caso de vários sistemas operacionais instalados em uma mesma máquina, o carregamento pelo boot loader é precedido pela seleção do sistema operacional desejado pelo usuário através do gerenciador de boot .
Descrição
Tarefas
A função fundamental de um carregador de inicialização é, portanto, carregar e executar um kernel do sistema operacional, juntamente com processos e serviços secundários. Na maioria dos casos, isso requer acesso à memória de massa , para ler o kernel do sistema operacional e potencialmente outros arquivos . Em casos mais simples, o carregador de inicialização contém o endereço dos blocos de disco nos quais os arquivos a serem carregados estão armazenados e, portanto, deve ser atualizado se esses arquivos forem modificados. O acesso ao disco geralmente é feito por meio de funções fornecidas pelo firmware (o BIOS em sistemas IBM PC compatíveis). Alguns carregadores de inicialização têm a capacidade de interpretar um ou mais sistemas de arquivos para localizar arquivos a serem carregados. Nesse caso, eles também podem carregar um arquivo de configuração do disco ou permitir que um usuário avançado navegue no disco em busca de arquivos para carregar. Alguns carregadores de inicialização são capazes de usar a funcionalidade fornecida por algumas placas de rede (normalmente ethernet ) para baixar um kernel da rede, normalmente via TFTP .
Cada sistema operacional instalado de fato cada volume inicializável (na verdade também existem ambientes de recuperação ou similares) possui um carregador de inicialização específico ou, melhor, o arquivo de configuração de inicialização (no Windows 10 é chamado BCD, por exemplo) contém instruções de inicialização específicas que devem ser lido pelo carregador de inicialização para cada volume inicializável.
Recursos adicionais presentes em alguns carregadores de inicialização:
- Muitos kernels suportam a capacidade de receber parâmetros de inicialização para configurar seu comportamento; o carregador de inicialização cuida de passá-los para o kernel e, em alguns casos, permite que o usuário edite esses parâmetros.
- Alguns kernels esperam que outros arquivos sejam disponibilizados para o kernel durante a inicialização (por exemplo, em sistemas do tipo Unix , é comum usar initrd , um pequeno sistema de arquivos armazenado em um arquivo). O carregamento desses arquivos é feito pelo bootloader.
- Um carregador de inicialização pode mostrar ao usuário um menu de kernels possíveis para carregar, com parâmetros relacionados, permitindo ao usuário escolher qual sistema operacional inicializar.
- Um carregador de inicialização pode exigir uma senha para permitir que o sistema inicialize.
Operação
O carregador de inicialização é em muitos casos instalado em uma posição específica de um dispositivo de memória de massa específico , normalmente no primeiro bloco do primeiro disco ("primeiro" em relação à ordem em que os dispositivos são conectados ao computador), de onde ele é carregado a partir do firmware do computador .
Por exemplo, na arquitetura compatível com IBM , o carregador de inicialização pode ser armazenado no registro mestre de inicialização (MBR) do disco de inicialização ou no primeiro setor da partição que hospeda o sistema operacional (nesse caso, deve ser invocado por um gerenciador instalado no MBR); ou também pode estar no primeiro setor de um volume inicializável , como um ambiente de recuperação (como o Ambiente de Recuperação do Windows ).
Existem algumas limitações impostas pela técnica e pelos fabricantes de hardware e firmware para as quais, para contorná-las, muitos gerenciadores de inicialização modernos operam recorrendo ao chamado boot de dois estágios , estágio 1 e estágio 2, uma divisão lógica que destaca diferentes momentos do início. Quanto às limitações, são, por exemplo, a possibilidade de carregar do dispositivo de inicialização para a memória principal apenas uma pequena quantidade de bytes e encontrá-la posicionada em um local bastante inconveniente na memória - este é o caso emblemático de sistemas baseados em na família x86 que carrega os primeiros 512 bytes encontrados no dispositivo de inicialização começando no endereço 0x0000: 0x7C00 e superior (último byte em 0x0000: 0x7DFF).
Com o advento da tecnologia Uefi e o relativo particionamento GPT , a operação do carregador de inicialização mudou substancialmente a partir do fato de estar fisicamente localizado na pasta efi contida na partição relativa do sistema.
Exemplo de inicialização encenada
Aqui está uma breve descrição de uma possível inicialização em estágios:
Fase 1
O estágio 1, também referido acima como gerenciador de inicialização , lida com tarefas muito básicas que podem ser codificadas em relativamente pouco espaço, como pesquisar o primeiro volume do sistema no disco de inicialização, pesquisar, carregar o segundo estágio mais complexo e estendido, na memória e passar o controle. Nesse estágio, até mesmo inicializações mínimas do sistema úteis no segundo estágio podem ser realizadas, mas nem sempre é o caso.
Fase 2
O estágio 2 é o gerenciador de lançamento real do programa executivo ou sistema operacional . É muito mais sofisticado, complexo e estendido do que o primeiro estágio e se preocupa principalmente, mas não se limita a, escolher qual kernel carregar na memória e, em seguida, dar a ele o controle. Começa a se assemelhar a um sistema operacional real com mais detalhes, ainda que mínimo: no entanto, é mais correto chamá-lo de programa executivo, pois carece de muitas das características dos sistemas operacionais modernos, como multiprogramação , gerenciamento de recursos e assim por diante.
Um único carregador de inicialização é capaz de carregar muitos tipos diferentes de kernel (e, portanto, muitos sistemas operacionais) em diferentes partições. Claro, apenas um kernel pode ser carregado por vez.
Carregadores de inicialização mais populares
Por favor note: os listados abaixo são apenas alguns bootloaders para PC [2] ou similar (por exemplo , servidores ). Além disso, deve-se ter em mente que os computadores também são, por exemplo, um navegador de satélite ou um PLC e muitos outros tipos: estes possuem principalmente carregadores de inicialização específicos.
- Gerenciador de inicialização do Windows - usado por sistemas operacionais Windows a partir do Windows Vista / Windows Server 2008 R2
- NTLDR - usado por edições do Windows baseadas no Windows NT
- GRUB - usado em sistemas Linux modernos
- LILO - usado historicamente pelo Linux
- BootX - usado pelo macOS
- SYSLINUX - usado para inicializar a partir do CD (CD de instalação e CD ao vivo )
- PXELINUX - Variante SYSLINUX usada para inicialização de rede (consulte Preboot Execution Environment )
- Yaboot - usado em máquinas de arquitetura PowerPC
- XOSL (sigla para e X tended O perating S ystem L oader )
- Das U-Boot - usado para carregar Linux em várias plataformas de hardware
Sistemas IBM , servidores Blade ou mainframes , usam bootloaders proprietários [3] quando não diretamente os comandos contidos no UEFI ou (se forem sistemas na configuração baseada em Linux) os bootloaders vistos acima (ou bootloaders específicos do Linux recompilados especificamente para os sistemas operacionais das máquinas IBM como "Petitboot").
Bootloader móvel
O sistema operacional de um smartphone , tablet ou PDA também contém um carregador de inicialização. No campo dos dispositivos móveis, os bootloaders dos sistemas operacionais originais são frequentemente modificados pelos OEMs , ou seja, os fabricantes de dispositivos, como acontece para smartphones que montam Android . Isso, no entanto, não acontece para os dispositivos da Apple , pois são fabricados pela mesma empresa que desenvolve o sistema operacional ( IOS ).
Os gerenciadores de inicialização de sistemas operacionais instalados em dispositivos móveis, com as limitações relativas do lado do usuário, desencadearam a "moda" dos chamados modding e consequentes operações ( root , unlock, flash , etc.) [4] .
Notas
- ^ Também carregador de inicialização . Lit. "carregador de inicialização".
- ^ Exceto o Windows Boot Manager, pois as edições recentes do Windows também são usadas para dispositivos móveis.
- ↑ Esta é a situação típica do antigo Os/400 , por exemplo.
- ^ Guia do Bootloader: o que é e para que serve - AndroidPIT