Depois de instalar um sistema operacional Linux (Ubuntu, Debian, Mint etc.), para usá-lo, basta pressionar o botão liga/desliga do PC e aguardar o carregamento do sistema operacional. Assim como qualquer outro sistema operacional, como o Windows. No entanto, o processo de inicialização é um processo bastante complexo e também é dividido em vários estágios, cada um essencial para que nossa distribuição inicie com êxito. Portanto, se conhecermos esse processo de inicialização, será bastante fácil identificar e resolver qualquer possível problema ao qual possamos enfrentar.

Existem algumas distribuições Linux configuradas para que o processo de inicialização, boot, esteja no modo detalhado, ou seja, mostrando na tela todos os comandos que estão sendo executados. Embora seja verdade que a maioria, especialmente as distribuições “fáceis”, tenha um respingo na tela que nos impede de vê-la (embora sempre possamos mostrá-lo pressionando Esc para controlar o processo).

No entanto, tanto no modo de texto quanto com a imagem estática na tela, o processo de inicialização é o mesmo. E como pressionamos o botão liga / desliga até podermos ver a área de trabalho, passamos por várias fases que detalharemos abaixo.

Fase da BIOS/UEFI

Essa fase é a mesma para todos os sistemas operacionais. Esse pequeno sistema ou firmware é armazenado em um chip na placa-mãe e é responsável por verificar se todos os componentes do PC estão conectados e funcionando corretamente. Para fazer isso, execute um POST (Power-On Self Test), verifique se os periféricos necessários estão conectados para continuar (especialmente o teclado) e localize a unidade que configuramos como “boot”, na qual o carregador de inicialização continuará com a carga do sistema operacional.

Alguns dos erros que podemos encontrar neste momento são os seguintes e, na maioria das vezes, relacionados diretamente ao hardware (especialmente com discos rígidos), para serem solucionados verificando se os periféricos estão bem conectados ou redefinindo a BIOS para as configurações de fábrica:

  • MBR Corrompida
  • Tabela de partição corrompida.
  • PBR corrompida
  • Setor de inicialização (Bootsector) corrompido
  • HD corrompido
  • Bootmgr corrompido

Fase do Boot Loader

Nesta fase, o computador tentará acessar o MBR (Master Boot Record) ou a GPT (Guided Partition Table) do disco rígido, dependendo da configuração da BIOS ou UEFI. Se essa partição não for encontrada, veremos diretamente uma mensagem no computador indicando que o sistema operacional não foi encontrado. Nesse caso, teríamos que revisar a configuração de inicialização da BIOS ou UEFI e, se necessário, até reinstalar o sistema operacional para que a inicialização seja regenerada.

Se essa partição for encontrada, a próxima coisa que veremos será o menu de inicialização do Linux, também conhecido como “GRUB” (embora possa haver outros gerenciadores de inicialização, como o LILO). Aqui veremos todos os sistemas operacionais que estão instalados no PC, bem como outras entradas para o gerenciador de inicialização (kernel diferente, opções de recuperação, analisador de memória RAM, etc.).

Escolheremos a entrada que queremos inicializar (Ubuntu, por exemplo, para continuar com a inicialização do Linux) e na próxima etapa o carregamento do próprio Kernel começará.

Os erros que podemos encontrar neste momento são entradas corrompidas no GRUB. E a maneira de resolvê-lo é usar um disco de recuperação (ou uma distribuição Linux Live que possamos carregar da RAM) para reparar o GRUB e fazer com que as entradas aponte para os discos rígidos ou partições correspondentes.

Fase de inicialização do Kernel Linux

Agora vem a fase de inicialização mais importante: a fase do Kernel Linux. Independentemente da distribuição que usamos, todos eles usarão uma versão mais ou menos personalizada do kernel original deste sistema operacional. Por razões de espaço e otimização, o Kernel é mantido compactado em disco, portanto, a primeira coisa a fazer é descompactá-lo na memória para continuar.

O próximo passo será a inicialização de todos os componentes. Para fazer isso, a maioria das distros usa um controlador de daemons chamado systemd (embora alguns usem alternativas como init.d). O que é feito nesta etapa é iniciar todos os processos e serviços que fazem parte do sistema e são essenciais para o seu bom funcionamento. Todos esses processos permitem que o hardware funcione e todos os componentes do sistema operacional sejam sincronizados, principalmente memória e discos. Esses serviços continuarão funcionando após o processo de inicialização e serão fechados no momento do desligamento do sistema.

Além dos processos e serviços essenciais do Linux, outros serviços personalizados também podem ser carregados (por exemplo, um servidor que montamos e configuramos, como um SSH ou FTP).

A menos que tenhamos feito modificações no sistema, é raro encontrar problemas neste momento. A inicialização do sistema com o Systemd geralmente é um processo totalmente automático e não requer intervenção de nossa parte. Além disso, se um daemon não puder ser carregado, ele simplesmente o marcará como um erro e passará para o próximo. O que pode acontecer é que alguns daemons demoram muitos segundos para carregar. E então o que devemos fazer é verificar onde o Systemd trava e tentar resolver o problema desativando o serviço, configurando-o corretamente ou atualizando o sistema.

Fase final da inicialização do Linux

Neste ponto, nossa distribuição estará pronta. É quando a fase “runlevel” entra, o que indica com um número o tipo de operação do sistema operacional de acordo com os serviços que foram carregados corretamente:

  • 0 – Halt. Erro crítico do sistema.
  • 1 – Modo de usuário único.
  • 2 – Modo multiusuário sem acesso à rede.
  • 3 – Terminal em modo multiusuário.
  • 4 – Modo definido pelo usuário.
  • 5 – Modo multiusuário com ambiente gráfico. É o modo desejado e no qual ele tentará iniciar por padrão sempre.
  • 6 – Requer reiniciar o computador.

Supondo que obtivemos um “5” no runlevel, já podemos ver a tela de login da nossa distribuição Linux e podemos fazer login. Uma vez logado, teremos a área de trabalho na ponta dos dedos e poderemos começar a trabalhar com o computador livremente.

Podemos alterar o valor do runlevel executando em um terminal “telinit” seguido pelo valor que queremos. Por exemplo, um valor “0” forçaria o desligamento do PC, enquanto um valor “1” somente nos permitiria usar o Linux no modo de usuário único.

Também podemos ver o tempo que levou para nossa distribuição carregar com o comando «systemd-analyse»: