# Boot

Em informática, boot é o termo em inglês que representa o processo de inicialização ou arranque do computador com o carregamento do sistema operacional quando a máquina é ligada.
Muitos computadores podem executar apenas códigos existentes na memória de trabalho (ROM ou RAM); os sistemas operacionais modernos são normalmente armazenados em disco rígido, CD-ROM ou outros dispositivos de armazenamento. Logo que o computador é ligado, ele não tem um sistema operacional na memória. O hardware do computador não pode fazer as ações do sistema operacional, como carregar um programa do disco; assim um aparente insolúvel paradoxo é criado: para carregar o sistema operacional na memória, precisamos de um sistema operacional já carregado.

## Carregador de inicialização

A solução para o paradoxo está na utilização de um pequeno e especial programa, chamado sistema de iniciação, carregador, boot loader ou bootstrap. Este programa não tem a completa funcionalidade de um sistema operacional, mas é especialmente construído para que seja capaz de carregar um outro programa para permitir a iniciação do sistema operacional. Frequentemente, carregador de múltiplos estágios são usados, neste caso vários pequenos programas se complementam em sequência, até que o último deles carregue o sistema operacional.
Os primeiros computadores programáveis tinham chaves no painel frontal para permitir ao operador colocar o sistema de iniciação na memória antes de iniciar a CPU. Este poderia então ler o sistema operacional de um meio de armazenamento externo como uma fita de papel.
Uma hipotética linguagem de máquina para o sistema de iniciação, poderia ser tão simples como as oito instruções seguintes, que fazem a leitura dos dados da fita:
* Faça o registrador P = 8
* Verifique se a fita de papel está posicionada
* Se não estiver retorne ao passo 1
* Leia um byte da fita
* Se chegou no fim da fita pule para o passo 8
* Armazene os dados lidos no endereço do registrador P
* incremente o registrador P
* pule para 1
Nos computadores modernos o processo de iniciação começa com a execução pela CPU de um programa contido na memória ROM (o BIOS do IBM PC) em um endereço predefinido (a CPU é programada para executar este programa depois de um reset automaticamente). Este programa contém funcionalidades rudimentares para procurar por dispositivos que podem conter um sistema operacional e que são, portanto, passíveis de participar de um boot. Definido o dispositivo é carregado um pequeno programa de uma seção especial deste.

### Carregador de inicialização de primeiro estágio

Carregadores de boot podem enfrentar restrições peculiares, especialmente em tamanho. Por exemplo, no IBM PC e compatíveis, um setor de inicialização normalmente deveria trabalhar apenas em 32 KB (posteriormente aumentado para 64 KB) de memória do sistema e não usar as instruções não suportadas pelos processadores 8088/8086 originais.
O primeiro estágio de carregadores de inicialização de PC (do inglês first-stage boot loader - FSBL), localizado em discos fixos e unidades removíveis, deve caber nos primeiros 446 bytes do Registro Mestre de Inicialização para deixar espaço para a tabela de partição padrão de 64 bytes com quatro entradas de partição e assinatura de boot de dois bytes, que o BIOS requer para um carregador de inicialização adequado - ou até menos, quando recursos adicionais como mais de quatro entradas de partição (até 16 com 16 bytes cada), uma assinatura de disco (6 bytes), um timestamp de disco (6 bytes), uma Partição Ativa Avançada (18 bytes) ou carregadores especiais de múltipla inicialização também devem ser suportados em alguns ambientes.
Nos Registros de Inicialização por Volume de disquete e superfloppy, até 59 bytes são ocupados pelo Extended BIOS Parameter Block nos volumes FAT12 e FAT16 desde o DOS 4.0, enquanto o FAT32 EBPB, introduzido com o DOS 7.1, requer até 71 bytes, deixando apenas 441 bytes para o gerenciador de inicialização ao assumir um tamanho de setor de 512 bytes. Os setores de inicialização da Microsoft, portanto, impunham tradicionalmente certas restrições no processo de inicialização, por exemplo, o arquivo de inicialização tinha que estar localizado em uma posição fixa no diretório raiz do sistema de arquivos e armazenado como setores consecutivos, condições atendidas pelo comando SYS e ligeiramente relaxado em versões posteriores do DOS. O carregador de inicialização pôde então carregar os três primeiros setores do arquivo na memória, o que continha outro gerenciador de inicialização integrado capaz de carregar o restante do arquivo na memória.
Quando eles adicionaram o suporte a LBA e FAT32, eles até mudaram para um carregador de inicialização de dois setores usando 386 instruções. Ao mesmo tempo, outros fornecedores conseguiram espremer muito mais funcionalidades em um único setor de inicialização, sem afrouxar as restrições originais sobre a única memória mínima disponível e suporte ao processador. Por exemplo, os setores de inicialização do DR-DOS podem localizar o arquivo de inicialização no sistema de arquivos FAT12, FAT16 e FAT32 e carregá-lo na memória como um todo via CHS ou LBA, mesmo se o arquivo não estiver armazenado em um local fixo e em setores consecutivos.
Exemplos de carregadores de inicialização de primeiro estágio incluem o coreboot, o Libreboot e o Das U-Boot.

### Carregador de inicialização de segundo estágio

Carregadores de inicialização de segundo estágio, como GNU GRUB, BOOTMGR, Syslinux, NTLDR ou BootX, não são sistemas operacionais em si, 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. O carregador de inicialização de segundo estágio não precisa de drivers para sua própria operação, mas pode usar métodos genéricos de acesso a armazenamento fornecidos pelo firmware do sistema, como o BIOS ou o Open Firmware, embora normalmente com funcionalidade de hardware restrita e desempenho mais baixo.
Muitos carregadores de inicialização (como o GNU GRUB, o BOOTMGR do Windows e o NTLDR do Windows NT/2000/XP) podem ser configurados para dar ao usuário várias opções de inicialização. Essas opções podem incluir diferentes sistemas operacionais (para multi inicialização 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 modo de recuperação ou em modo 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 opção padrão é executada automaticamente para que a inicialização normal possa ocorrer sem interação.
O processo de inicialização pode ser considerado completo quando o computador está pronto para interagir com o usuário ou o sistema operacional é capaz de executar programas do sistema ou programas aplicativos.
Muitos sistemas embarcados devem inicializar imediatamente. Por exemplo, esperar um minuto para que uma televisão digital ou um dispositivo de navegação GPS seja iniciado é geralmente inaceitável. Portanto, tais dispositivos possuem 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é-calculado e armazenado na ROM quando o dispositivo é fabricado.
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 estejam carregados e prontos para execução. Como os sistemas operacionais são projetados como se nunca iniciassem ou parassem, um carregador de boot poderia carregar o sistema operacional, configurar-se como um mero processo dentro desse sistema e transferir irrevogavelmente o controle para o sistema operacional. O carregador de boot termina normalmente como qualquer outro processo.

## Dispositivos de iniciação do BIOS

Um dispositivo de iniciação é qualquer dispositivo que deve ser iniciado antes da carga do sistema operacional. Isto inclui os dispositivos de entrada como o teclado , dispositivos de saída como o Monitor, e os dispositivos de armazenamento como drive de disquete, disco rígido, CD-ROM, etc. Um caso especial de dispositivo de iniciação são os que podem carregar o sistema operacional (Em antigas máquinas PC, o drive de disquete e o disco rígido).
Em uma BIOS moderna, o usuário pode selecionar vários dispositivos para fazer a iniciação, por exemplo disquete, Superdisk, Disco Rígido, SCSI, Cdrom, Zip drive, ou USB (USB-FDD, USB-ZIP, USB-CDROM, USB-HDD).
Por exemplo, podemos instalar o Microsoft Windows no primeiro disco rígido e o Linux no segundo. Alterando os parâmetros da BIOS, podemos indicar em qual dispositivo está o sistema operacional a carregar.

## Sequência de iniciação no PC

Ao iniciar o processo de iniciação, a CPU do computador pessoal executa a instrução localizada no registrador de memória do BIOS. Este registrador de memória corresponde a última posição de memória da BIOS. Ele contém uma instrução que faz com que a execução seja desviada para o local no BIOS onde começa o programa inicial.
Este programa executa um auto-teste (POST), que é um teste para verificar o funcionamento de diversos dispositivos no computador. Então, o BIOS busca em uma lista de dispositivos pré-configurados até encontrar um que pode ser o dispositivo de iniciação. Se não encontra este dispositivo, um erro é apresentado e o processo de iniciação termina. Se o dispositivo de iniciação é encontrado, o BIOS carrega e executa o MBR (Registro mestre de iniciação).
Em muitos casos, o MBR verifica a tabela de partições em busca de uma partição ativa. Se uma partição ativa é encontrada, o MBR carrega e executa o setor de iniciação da partição. O setor de iniciação é específico do sistema operacional, entretanto em muitos sistemas sua principal função é carregar e executar o núcleo.

## Boot - android

Partição do sistema que contém toda informação necessária para o funcionamento do celular ou tablet, sem ela, o dispositivo não seria capaz de funcionar. Aí se encontram o Bootloader (independente do sistema principal e encarregado pela coordenação geral para funcionamento de qualquer Android, verificando se o sistema está OK e, normalmente, vem bloqueado de fábrica, o que impede sua alteração) e o Kernel Linux (gerencia os recursos do sistema, permitindo que APPs façam uso dele). A cada nova instalação, os dados dessa partição são modificados, permitindo o uso dos softwares instalados no acionamento do gadget.

## Origem do termo

O termo "boot" deriva do inglês booting que, por sua vez, deriva do termo bootstrapping (de boot straps - o cadarço ou atacador de bota ). Em computação, todas as três expressões têm o mesmo significado. O termo faz alusão às histórias sobre o Barão de Münchhausen, que, segundo a lenda, era capaz de erguer-se do pântano (para não se molhar) se puxando pelos cadarços de suas próprias botas (pulling himself by his own boot straps). Ou seja, o termo procura dar a imagem de um processo aparentemente impossível pelo qual o sistema se ergue (ou se coloca em funcionamento) por seu próprio esforço.

## Arquivo bootável

Um arquivo bootável, também conhecido pelo nome em inglês bootable file é um arquivo que executa no boot. Um exemplo são as instalações de sistemas operacionais, como as do Windows XP, Windows Vista, Windows 7, eComStation, Linux, OS/2, Windows 8, entre outros.