Sempre que você liga seu PC Linux, ele passa por uma série de estágios antes de finalmente exibir uma tela de login que solicita seu nome de usuário ou senha. Existem 4 estágios distintos pelos quais toda distribuição Linux passa em um processo de inicialização típico.

Neste guia, destacaremos as várias etapas realizadas pelo sistema operacional Linux desde o momento em que é ligado até o momento em que você faz login. Por favor, observe que este guia considera apenas o bootloader GRUB2 e o init systemd pois eles são atualmente utilizados pela grande maioria das distribuições Linux modernas.
O processo de inicialização passa pelas seguintes 4 etapas que discutiremos em maior detalhe:
- Verificação de integridade do BIOS (POST)
- Carregamento do bootloader (GRUB2)
- Inicialização do kernel
- Inicialização do systemd, o pai de todos os processos
1. Verificação de Integridade do BIOS (POST)
O processo de inicialização geralmente é iniciado quando um usuário pressiona o botão liga/desliga – se o PC já estava desligado – ou reinicia o sistema usando a interface gráfica ou na linha de comando.
Quando o sistema Linux é ligado, o BIOS (Basic Input Output System) entra em ação e realiza um Teste de Autoinicialização (POST). Este é um teste de integridade que realiza uma infinidade de verificações de diagnóstico.
A POST verifica a operabilidade do hardware de componentes como o HDD ou SSD, Teclado, RAM, portas USB e qualquer outro componente de hardware. Se algum dispositivo de hardware não for detectado, ou se houver um mau funcionamento em algum dos dispositivos, como um HDD ou SSD corrompido, uma mensagem de erro é exibida na tela solicitando sua intervenção.
Em algumas situações, um som de bip será emitido, especialmente no caso de um módulo de RAM faltando. No entanto, se o hardware esperado estiver presente e funcionando conforme esperado, o processo de inicialização prossegue para a próxima fase.
2. O Bootloader (GRUB2)
Assim que a POST estiver concluída e as coisas estejam claras, o BIOS verifica o MBR (Master Boot Record) para a informação do bootloader e da partição do disco.
O MBR é um código de 512 bytes que está localizado no primeiro setor do disco rígido, que é normalmente /dev/sda
ou /dev/hda
, dependendo da arquitetura do seu disco rígido. Observe, no entanto, que às vezes o MBR pode estar localizado em um Live USB ou em uma instalação de Linux via DVD.
Existem 3 tipos primários de gerenciadores de inicialização em Linux: LILO, GRUB e GRUB2. O gerenciador de inicialização GRUB2 é o mais recente e o gerenciador primário de inicialização em distribuições de Linux modernas, e nossa decisão de deixar para trás os outros dois, que se tornaram obsoletos com o passar do tempo, é informada por ele.
GRUB2 significa GRand Unified Bootloader versão 2. Uma vez que o BIOS localiza o carregador de inicialização grub2, ele o executa e carrega na memória principal (RAM).
O menu grub2 permite fazer algumas coisas. Permite selecionar a versão do kernel Linux que deseja usar. Se você tiver atualizado seu sistema várias vezes, poderá ver diferentes versões do kernel listadas. Além disso, oferece a capacidade de editar alguns parâmetros do kernel pressionando uma combinação de teclas do teclado.

Também, em uma configuração de inicialização dupla onde você tem instalações de vários sistemas operacionais, o menu grub permite selecionar em qual SO inicializar. O arquivo de configuração do grub2 é o arquivo /boot/grub2/grub2.cfg. O principal objetivo do GRUB é carregar o kernel Linux na memória principal.
3. Inicialização do Kernel
O kernel é o núcleo de qualquer sistema Linux. Ele faz a interface entre o hardware do PC e os processos subjacentes. O kernel controla todos os processos no seu sistema Linux. Uma vez que o kernel Linux selecionado é carregado pelo carregador de inicialização, ele deve se autoextrair de sua versão compactada antes de realizar qualquer tarefa. Após a autoextração, o kernel selecionado monta o sistema de arquivos raiz e inicializa o programa /sbin/init comumente referido como init.

Init é sempre o primeiro programa a ser executado e é atribuído o ID do processo ou PID 1. É o processo init que gera vários daemons e monta todas as partições especificadas no arquivo /etc/fstab.
O kernel então monta o disco RAM inicial (initrd), que é um sistema de arquivos raiz temporário até que o sistema de arquivos raiz real seja montado. Todos os kernels estão localizados no diretório /boot
juntamente com a imagem do disco RAM inicial.
4. Iniciando o Systemd
O kernel finalmente carrega o Systemd, que é a substituição do antigo init SysV. Systemd é a mãe de todos os processos do Linux e gerencia, entre outras coisas, a montagem de sistemas de arquivos, iniciando e parando serviços para mencionar apenas alguns.
O Systemd usa o arquivo /etc/systemd/system/default.target para determinar o estado ou alvo que o sistema Linux deve inicializar.
- Para uma estação de trabalho desktop (com GUI), o valor padrão do alvo é 5, que é equivalente ao nível de execução 5 para o antigo init do SystemV.
- Para um servidor, o alvo padrão é multi-user.target, que corresponde ao nível de execução 3 no init do SysV.
Aqui está uma quebra dos alvos do systemd:
- poweroff.target (nível de execução 0): Desliga ou encerra o sistema.
- rescue.target (nível de execução 1): Inicia uma sessão de shell de resgate.
- multi-user.target (nível de execução 2,3,4): Configura o sistema para um sistema multiusuário não gráfico (console).
- graphical.target (nível de execução 5): Defina o sistema para usar uma interface gráfica multi-usuário com serviços de rede.
- reboot.target (nível de execução 6): Reinicia o sistema.
Para verificar o target atual no seu sistema, execute o comando:
$ systemctl get-default

Você pode alternar de um target para outro executando o seguinte comando no terminal:
$ init runlevel-value
Por exemplo, init 3 configura o sistema para um estado não-gráfico.
O comando init 6 reinicia o seu sistema e o init 0 desliga o sistema. Certifique-se de chamar comando sudo quando quiser alternar para esses dois targets.
O processo de inicialização acaba assim que o systemd carrega todos os demônios e define o target ou nível de execução. É neste ponto que você é solicitado seu nome de usuário e senha, após o qual você obtém acesso ao seu sistema Linux.