Pesquisa de site

Um guia básico para diferentes estágios do processo de inicialização do Linux


Cada vez 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 típico de inicialização.

Neste guia, destacaremos as várias etapas executadas pelo sistema operacional Linux desde o momento em que ele é ligado até o momento em que você faz login. Observe que este guia leva em consideração apenas o gerenciador de inicialização GRUB2 e GRUB2.systemd init, pois são atualmente usados pela grande maioria das distribuições Linux modernas.

O processo de inicialização segue as 4 etapas a seguir que discutiremos com mais detalhes:

  • Verificação de integridade do BIOS (POST)
  • Carregando o carregador de inicialização (GRUB2)
  • Inicialização do kernel
  • Iniciando o systemd, o pai de todos os processos

1. A verificação de integridade do BIOS (POST)

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

Quando o sistema Linux é ligado, o BIOS (Basic Input Output System) entra em ação e executa um Autoteste de inicialização (POST ). Esta é uma verificação de integridade que realiza uma infinidade de verificações de diagnóstico.

O POST testa a operabilidade de hardware de componentes como HDD ou SSD, teclado, RAM<, portas USB e qualquer outra peça 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 aparecerá na tela solicitando sua intervenção.

Em alguns casos, um sinal sonoro soará especialmente no caso de falta de um módulo de RAM. No entanto, se o hardware esperado estiver presente e funcionando conforme esperado, o processo de inicialização prosseguirá para o próximo estágio.

2. O carregador de inicialização (GRUB2)

Assim que o POST estiver concluído e tudo estiver limpo, o BIOS testa o MBR (Master Boot Record) em busca de o bootloader e as informações de particionamento de disco.

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

Existem 3 tipos principais de bootloaders no Linux: LILO, GRUB e GRUB2. O bootloader GRUB2 é o bootloader mais recente e principal nas distribuições Linux modernas e informa nossa decisão de deixar de fora os outros dois que se tornaram antiquados com o passar do tempo.

GRUB2 significa GRand Unified Bootloader versão 2. Depois que o BIOS localiza o gerenciador de inicialização grub2, ele o executa e carrega na memória principal (GRUB2 >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ê atualizou seu sistema algumas vezes, poderá ver diferentes versões de kernel listadas. Além disso, oferece a capacidade de editar alguns parâmetros do kernel pressionando uma combinação de teclas do teclado.

Além disso, em uma configuração de inicialização dupla em que você tem várias instalações de sistema operacional, o menu grub permite selecionar 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 faz a interface do hardware do PC com os processos subjacentes. O kernel controla todos os processos do seu sistema Linux. Depois que o kernel Linux selecionado for carregado pelo bootloader, ele deverá ser extraído automaticamente de sua versão compactada antes de realizar qualquer tarefa. Após a auto-extraçã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 recebe o ID do processo ou PID de 1. É o processo init que gera vários daemons e monta todas as partições especificadas em /etc/ arquivo 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 inicial do disco RAM.

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 Linux e gerencia, entre outras coisas, a montagem de sistemas de arquivos, iniciando e interrompendo serviços, para mencionar apenas alguns.

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

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

Aqui está um detalhamento dos alvos do systemd:

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

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

systemctl get-default

Você pode mudar de um destino 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 sistema e init 0 desliga o sistema. Certifique-se de invocar o comando sudo quando quiser mudar para esses dois destinos.

O processo de inicialização termina quando o systemd carrega todos os daemons e define o valor de destino ou nível de execução. É neste ponto que você será solicitado a fornecer seu nome de usuário e senha para obter acesso ao seu sistema Linux.