Pular para o conteúdo
Início » O que é o Init no Linux e como ele funciona?

O que é o Init no Linux e como ele funciona?

O Init (initialization) é o primeiro processo executado no espaço do usuário após o carregamento do kernel do Linux. Ele tem a responsabilidade de inicializar o sistema, gerenciar serviços e definir o estado operacional do sistema por meio dos chamados níveis de execução (runlevels).

O que é o Init e qual sua função?

O Init é um processo de inicialização fundamental no Linux. Ele é iniciado automaticamente pelo kernel e permanece em execução durante toda a sessão do sistema operacional, sendo responsável por:

  • Gerenciar processos de inicialização – Inicia serviços essenciais, como redes, serviços de login e servidores de aplicação.
  • Controlar o nível de execução do sistema – Define o estado operacional do sistema, como modo monousuário, multiusuário ou desligamento.
  • Monitorar processos filhos – Caso um processo perca seu pai, o Init assume seu controle para evitar processos órfãos.

O Init tradicionalmente segue o modelo SysV Init, que utiliza scripts localizados em /etc/init.d/ para carregar serviços com base em níveis de execução. No entanto, alternativas modernas, como systemd, OpenRC e runit, substituíram esse modelo em muitas distribuições.

Os níveis de execução (runlevels) do Init

No modelo tradicional do SysV Init, o estado do sistema é determinado por runlevels (níveis de execução). Cada runlevel representa um conjunto específico de serviços que devem estar ativos.

RunlevelDescriçãoUso comum
0Desligamento do sistemainit 0 desliga o sistema com segurança
1Modo monousuárioinit 1 entra no modo de manutenção, útil para reparos
2Modo multiusuário sem redeNormalmente usado em algumas distribuições específicas
3Modo multiusuário com redeSistema operacional pronto para servidores sem interface gráfica
4Reservado para personalizaçõesPode ser usado para configurações customizadas
5Modo gráficoInicia o ambiente gráfico, como X11 ou Wayland
6Reinicialização do sistemainit 6 reinicia o computador

No systemd, esses runlevels foram substituídos por targets, mas os conceitos ainda são equivalentes.

Como usar o Init corretamente?

O comando init permite alterar o nível de execução do sistema. Vamos ver como utilizá-lo corretamente em diferentes cenários.

Quando usar init 0?

O comando init 0 é utilizado para desligar o sistema com segurança. Ele finaliza todos os processos em execução, desmonta sistemas de arquivos e, por fim, desliga o computador.

Exemplo de uso:

init 0

ou

shutdown -h now

Usar init 0 sem salvar arquivos abertos pode levar à perda de dados.

Quando usar init 1?

O runlevel 1 (modo monousuário) é útil para manutenção do sistema. Neste modo, apenas um usuário pode acessar o sistema, sem serviços de rede ativos.

Este modo é útil para:

  • Recuperação de senha root.
  • Diagnóstico e reparo do sistema de arquivos.
  • Resolução de falhas de inicialização.

Para ativá-lo, execute:

init 1

Apenas usuários com acesso físico ao computador devem utilizar init 1, pois ele desativa a autenticação normal.

Quando usar init 3?

O runlevel 3 ativa o modo multiusuário com rede, mas sem interface gráfica. Ele é ideal para servidores e sistemas onde a interface gráfica não é necessária.

Para entrar neste modo:

init 3

Este nível é utilizado para:

  • Servidores Linux sem ambiente gráfico.
  • Execução de aplicações de rede via terminal.
  • Correção de falhas em interfaces gráficas.

Quando usar init 5?

O runlevel 5 é semelhante ao 3, mas com interface gráfica ativada.

Para alternar para o modo gráfico:

init 5

Este nível é utilizado em:

  • Sistemas desktop.
  • Ambientes gráficos baseados em X11, Wayland ou servidores VNC.

Quando usar init 6?

O comando init 6 é usado para reiniciar o sistema. Ele encerra processos, desmonta sistemas de arquivos e reinicia o sistema operacional de forma segura.

Exemplo de uso:

init 6

ou

reboot

Diferentes versões do Init

Ao longo do tempo, o SysV Init foi sendo substituído por alternativas mais eficientes.

  1. SysV Init – Modelo tradicional baseado em scripts.
  2. systemd – Mais rápido, usado na maioria das distribuições modernas.
  3. OpenRC – Alternativa leve, popular em distribuições como Gentoo e Alpine.
  4. runit – Minimalista e rápido, comum em distribuições como Void Linux.

Hoje, systemd é a opção mais usada, e ao invés de init 0, init 6, etc., utilizamos comandos equivalentes no systemctl:

systemctl poweroff   # Equivalente a init 0
systemctl reboot     # Equivalente a init 6
systemctl rescue     # Equivalente a init 1

O Init é um componente essencial do Linux, responsável por gerenciar a inicialização do sistema e os processos em execução. No modelo tradicional, os runlevels determinam o estado operacional do sistema, sendo que comandos como init 0 (desligamento), init 3 (modo servidor) e init 6 (reinicialização) são amplamente utilizados para administrar um sistema Linux.

Embora o SysV Init tenha sido substituído pelo systemd em muitas distribuições modernas, o conhecimento sobre init ainda é valioso para qualquer administrador de sistemas.

Se sua distribuição usa systemd, prefira systemctl para controlar serviços e estados do sistema. Mas se estiver lidando com um sistema mais antigo ou minimalista, os comandos init continuam sendo essenciais.