Um Guia Básico para o Processo de Inicialização do Linux

Toda vez que você liga o 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 cada distribuição Linux passa em um processo típico de inicialização.

User Login Prompt

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. Observe que este guia considera apenas o bootloader GRUB2 e o init systemd, pois atualmente são usados pela grande maioria das distribuições Linux modernas.

O processo de inicialização segue os seguintes 4 passos que discutiremos em maior detalhe:

  • Verificação de integridade do BIOS (POST)
  • Carregamento do Bootloader (GRUB2)
  • Inicialização do Kernel
  • Iniciando systemd, o pai de todos os processos

1. A Verificação de Integridade do BIOS (POST)

O processo de inicialização é geralmente iniciado quando um usuário pressiona o botão ligar – se o PC já estava desligado – ou reinicia o sistema usando a GUI ou na linha de comando.

Quando o sistema Linux é ligado, o BIOS (Sistema Básico de Entrada/Saída) entra em ação e realiza um Auto Teste de Ligação (POST). Este é um teste de integridade que realiza uma infinidade de verificações diagnósticas.

O POST verifica a operacionalidade 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 qualquer um dos dispositivos, como um HDD ou SSD corrompido, uma mensagem de erro é exibida na tela solicitando sua intervenção.

Em alguns casos, um som de apito será ativado, especialmente no caso de um módulo de RAM ausente. No entanto, se o hardware esperado estiver presente e funcionando conforme o esperado, o processo de inicialização prossegue para a próxima etapa.

2. O Bootloader (GRUB2)

Uma vez que o POST estiver completo e o caminho esteja claro, a BIOS examina o MBR (Master Boot Record) para obter informações do bootloader e particionamento do disco.

O MBR é um código de 512 bytes que está localizado no primeiro setor do disco rígido, que geralmente é /dev/sda ou /dev/hda dependendo da arquitetura do seu disco rígido. No entanto, observe que às vezes o MBR pode estar localizado em um Live USB ou instalação de Linux em DVD.

Existem 3 tipos principais de bootloaders no Linux: LILO, GRUB e GRUB2. O bootloader GRUB2 é o mais recente e primário nas distribuições modernas do Linux, o que nos leva a deixar de fora os outros dois que se tornaram obsoletos com o passar do tempo.

GRUB2 significa GRand Unified Bootloader versão 2. Uma vez que o BIOS localiza o carregador de inicialização grub2, ele o executa e o carrega na memória principal (RAM).

O menu grub2 permite que você faça algumas coisas. Ele permite que você selecione a versão do kernel Linux que deseja usar. Se você tiver atualizado seu sistema várias vezes, poderá ver diferentes versões de kernel listadas. Além disso, ele lhe dá a capacidade de editar alguns parâmetros do kernel pressionando uma combinação de teclas do teclado.

Select Kernel Version

Também, em uma configuração de inicialização dupla onde você tem instalações de vários sistemas operacionais, o menu grub permite que você selecione em qual sistema operacional 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 interage com o hardware do PC com os processos subjacentes. O kernel controla todos os processos em seu sistema Linux. Uma vez que o kernel Linux selecionado é carregado pelo carregador de inicialização, ele deve se autoextrair de sua versão comprimida 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.

Kernel Initialization Process

Init é sempre o primeiro programa a ser executado e recebe o ID de processo ou PID de 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 junto com a imagem do disco RAM inicial.

4.Iniciando Systemd

O kernel finalmente carrega o Systemd, que é a substituição do antigo init SysV. Systemd é a mãe de todos os processos Linux e gerencia, entre outras coisas, a montagem de sistemas de arquivos, início e parada de serviços, para mencionar apenas alguns.

O Systemd usa o arquivo /etc/systemd/system/default.target para determinar o estado ou target que o sistema Linux deve inicializar.

  • Para uma estação de trabalho desktop (com GUI), o valor padrão do target é 5, que é o equivalente ao nível de execução 5 do antigo init SystemV.
  • Para um servidor, o target padrão é multi-user.target, que corresponde ao nível de execução 3 no init SysV.

Aqui está um resumo dos targets do systemd:

  • poweroff.target (nível de execução 0): Desliga ou desativa 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 (runlevel 5): Defina o sistema para usar uma interface gráfica multiusuário com serviços de rede.
  • reboot.target (runlevel 6): reinicia o sistema.

Para verificar o alvo atual em seu sistema, execute o comando:

$ systemctl get-default
Check Run Level

Você pode alternar de um alvo 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 seu sistema e init 0 desliga o sistema. Certifique-se de invocar o comando sudo quando desejar alternar para esses dois alvos.

O processo de inicialização termina uma vez que systemd carrega todos os daemons e define o valor do alvo ou nível de execução. É neste ponto que você é solicitado a inserir seu nome de usuário e senha, momento em que você obtém acesso ao seu sistema Linux.

Source:
https://www.tecmint.com/linux-boot-process/