- Vanessa Moura
PROCESSO DE INICIALIZAÇÃO DO LINUX
Se você é adepto ao sistema operacional Windows e é curioso como eu, em algum momento da sua vida, você já deve ter se perguntado o que acontece depois que você aperta o botão para ligar sua máquina... No Linux, nós temos uma ordem de sequencia, que é o processo de inicialização do Linux para inicializar o sistema e eu vou abordar as etapas dele neste artigo.
Lembrando que tem algumas variações, mas estou abordando o convencional.

Ele consiste em tudo o que acontece desde o momento em que o computador é ligado pela primeira vez até que a interface do usuário esteja totalmente operacional.

Ter um bom conhecimento das etapas do processo de inicialização pode ajudá-lo a solucionar problemas, bem como ajustar o desempenho do computador as suas necessidades.
Por outro lado, o processo de inicialização pode ser bastante técnico, e você pode começar a usar o Linux sem saber todos os detalhes.
Existem outras etapas, mas em resumo, temos 6 etapas importantes.

BIOS - a primeira etapa
Começar em um sistema Linux baseado em x86 envolve várias etapas. Quando o computador é ligado, o BIOS (Basic Input/Output System) do sistema básico de entrada/saída é inicializado com o hardware, incluindo a tela e o teclado e testa a memória principal.
Esse processo é chamado de POST (Power On Self Test) ou auto-teste pós-inicialização. A oferta da BIOS é uma loja em um chip de rum na placa do motor. Depois disso, o restante do processo de inicialização é controlado pelo sistema operacional.
Master Boot Record (MBR) e Boot Loader
Uma vez que o processo POST é concluído, o controle do sistema passa do BIOS para o carregador de inicialização.
O Boot loader (carregador de inicialização) é geralmente armazenado em um dos discos rígidos no sistema, seja no setor de boot (para sistemas tradicionais de BIOS/MBR) ou partição EFI (para interface de firmware extensível unificada mais recente ou EFI para sistemas EFI.)
Até este estágio, a máquina não acessa nenhuma mídia de armazenamento em massa. Depois disso, as informações sobre data, hora e os periféricos mais importantes são carregados para os valores CMOS (após uma tecnologia usada para armazenamento de memória alimentada por bateria que permite ao sistema manter o controle da data e hora mesmo quando está desligado).

Existem vários bootloaders para Linux, os mais comuns são:
GRUB (Grand unified bootloader)
ISOLINUX (compila de dispositivos removíveis)
DAS U-Boot (para inicializar em dispositivos/aparelhos embutidos)
A maioria dos carregadores de inicialização do Linux pode apresentar uma interface de usuário para escolher opções alternativas para inicializar o Linux e até mesmo outros sistemas operacionais que podem ser instalados.
Ao inicializar o Linux, o carregador de inicialização é responsável por carregar a imagem do kernel e eles precisam de seus discos RAM ou sistema de arquivos (que contém alguns arquivos críticos e drivers de dispositivo necessários para iniciar o sistema) na memória.
Bootloader em ação
O boot loader tem dois estágios distintos:
Para sistemas usando o método BIOS/MDR, o carregador de boot reside no primeiro setor fora do disco rígido, também conhecido como registro mestre de inicialização (Master Boot Record, MBR).
O tamanho do MBR é de apenas 512 bytes. Neste estágio, o carregador de boot examina a tabela de partição e encontra uma partição inicializável. Depois de encontrar uma partição inicializável, ele procura o carregador de inicialização de segundo estágio, por exemplo GRUB, e o carrega na RAM (memória de acesso aleatório).

Para sistemas que usam o método EFI/UEFI, o firmware UEFI lê os dados de cada gerenciador de inicialização para determinar qual aplicativo UEFI deve ser iniciado e de onde (de qual disco e partição a partição EFI pode ser encontrada). O firmware, então, coloca em espera aquele aplic ativo UEFI, por exemplo GRUB, conforme definido na entrada de inicialização no gerenciador de inicialização do firmware. Este procedimento é mais complicado, mas mais versátil do que os métodos MBR mais antigos.
O carregador de boot de segundo estágio reside em /boot. Uma tela inicial é exibida, o que nos permite escolher qual sistema operacional inicializar. Depois de escolher o sistema operacional, o carregador de boot carrega o kernel do sistema operacional selecionado na RAM e passa o controle para ele. Kernel quase sempre é compactado, então sua primeira tarefa é descompactar a si mesmo. Depois disso, ele rastreará e analisará o hardware do sistema e inicializará todos os drivers de dispositivo de hardware integrados ao kernel.
Disco RAM Inicial
A imagem do sistema de arquivos initramfs contém programas e arquivos binários que executam todas as ações necessárias para montar o sistema de arquivos raiz adequado, como fornecer funcionalidade de kernel para o sistema de arquivos e drivers de dispositivo necessários para os controladores de armazenamento massivo com um recurso chamado udev (user device), que é responsável por descobrir quais dispositivos estão presentes, localizar os drivers de dispositivo que eles precisam para operar corretamente e carregá-los. Depois que o sistema de arquivos raiz for encontrado, ele é verificado quanto a erros e montado.

O programa de montagem instrui o sistema operacional de que um sistema de arquivos está pronto para uso e o associa a um ponto específico na hierarquia geral do sistema de arquivos (o ponto de montagem). Se for bem-sucedido, o initramfs é removido da RAM e o programa init do sistema de arquivos raiz (/sbin /init) é executado.
O Init lida com a montagem e a rotação sobre o sistema de arquivos raiz real final. Se forem necessários drivers de hardware especiais antes que o armazenamento em massa possa ser acessado, eles devem ser a imagem initramfs.
Login em modo texto
Perto do final do processo de inicialização, o init precisa de vários prompts de login em modo texto. Isso permite que você digite seu nome de usuário, seguido de sua senha e, eventualmente, obtenha um shell de comando.
No entanto, se você estiver executando um sistema com uma interface gráfica de login, você não verá isso a princípio.

Como você aprenderá nas próximas postagens, os terminais que executam os shells de comando podem ser acessados usando a tecla ALT mais uma tecla de função. A maioria das distribuições começa com seis terminais de texto e um terminal gráfico começando com F1 ou F2.
Em um ambiente gráfico, alternar para um console de texto requer o pressionamento de Ctrl + alt + a tecla de função apropriada (com F7 ou F1 levando à GUI).
Normalmente, o shell de comando padrão é bash (o GNU Bourne Again Shell), mas há vários outros shell de comando avançados disponíveis. O shell imprime um prompt de texto, indicando que está pronto para aceitar comandos; depois que o usuário digita o comando e pressiona enter, o comandante é executado e outro prompt é exibido após o comando ser executado.

O kernel Linux
O carregador de inicialização carrega o kernel e um sistema de arquivos inicial basea do em RAM (initramfs) na memória, para que possa ser usado diretamente pelo kernel.
Quando o kernel é carregado na RAM, ele imediatamente inicializa e configura a memória do computador e também configura todo o hardware conectado ao sistema. Isso inclui todos os processadores, subsistemas de I/O, dispositivos de armazenamento, etc. O kernel também carrega alguns aplicativos de espaço de usuários necessários.
/sbin/init e serviços
Uma vez que o kernel tenha configurado todo o seu hardware e montado no sistema de arquivos raiz, o kernel roda como / sbin / init. Este então se torna o processo inicial, que então inicia outros processos para colocar o sistema em execução. A maioria dos processos no sistema rastreia sua origem, em última análise, ao init; as exceções incluem os chamados processos de kernel. Eles são iniciados diretamente pelo kernel e seu trabalho é gerenciar os detalhes do sistema operacional interno.
Além de iniciar o sistema, o init é responsável por manter o sistema rodando e por desligá-lo de forma limpa. Uma de suas responsabilidades é atuar, quando necessário, como gerente de todos os processos de kernel conhecidos; ele os limpa após a conclusão e reinicia os serviços de login do usuário conforme necessário quando um usuário efetua login e logout, e faz o mesmo para os serviços do sistema em segundo plano.

Tradicionalmente, essa inicialização do processo era feita usando convenções que datam da década de 1980 e a variedade do sistema V do UNIX. Esse processo serial faz com que o sistema passe por uma sequência de níveis (runlevels) de execução contendo coleções dos scripts que iniciam e param os serviços.
Cada nível de execução oferece suporte a um modo diferente de execução do sistema. Em cada nível de execução, serviços individuais podem ser configurados para execução ou desligados, se estiverem em execução.
Quem quer que seja, todas as principais distribuições recentes se afastaram deste método de nível de execução sequencial de inicialização do sistema, embora geralmente suportem as convenções do sistema V para fins de compatibilidade.