16 - Inicialização, init, runlevels, init.d, inittab e telinit - Linux - Bóson Treinamentos em Ciência e Tecnologia
Início » Linux » 16 – Inicialização, init, runlevels, init.d, inittab e telinit – Linux
16 – Inicialização, init, runlevels, init.d, inittab e telinit – Linux
Inicialização, init, runlevels, init.d, inittab e telinit
No Linux, um runlevel (nível de execução) é um modo de operação do sistema que define quais serviços do sistema estarão disponíveis (rodando). Os runlevels são identificados por números, de 0 a 6.
Podemos usar os níveis de execução para decidir quais subsistemas irão rodar na máquina, como por exemplo decidir se a GUI irá ser executada (X Window System), se a rede estará operacional, se mais de um usuário poderá se logar no sistema, desligar e reiniciar, etc.
A tabela a seguir mostra os níveis de execução de acordo com a especificação LSB (Linux Standard Base) e seus significados:
Modo de usuário único (modo de manutenção)
Modo multiusuário sem rede
Modo multiusuário com rede
Modo multiusuário completo com GUI (runlevel 3 com interface gráfica)
Na verdade, os runlevels de 2 a 5 podem variar dependendo da distribuição Linux considerada.
Todo sistema Linux suporta três níveis de execução básicos (0,1 e 6) e mais um runlevel (no mínimo) para operação normal do sistema.
Veja, na tabela a seguir, os níveis de execução definidos em uma distribuição Debian, como a usada nos nossos exemplos aqui:
Modos multiusuário completos (com ou sem GUI)
Fonte: https://wiki.debian.org/RunLevel
Os serviços que serão inicializados em cada runlevel são definidos pelo conteúdo de vários diretórios rcX.d, com X variando de 0 a 6, que se localizam dentro de /etc/ em sistemas Debian e derivados.
Vejamos o conteúdo de um desses diretórios, como o /etc/rc0.d:
Veja que há uma série de itens cujo nome se inicia com a letra K. Em outros diretórios há também itens cujo nome se inicia com S. Vamos olhar os detalhes desses itens usando o comando ls -l:
Notamos que os itens são na verdade atalhos para usa série de arquivos localizados no diretório /etc/init.d/. Esses arquivos são scripts de inicialização e finalização individuais para cada serviço do sistema, que são executados quando o sistema entra no runlevel associado.
Quando o nome do link se inicia com a letra K (kill), trata-se de um serviço que será finalizado, se estiver rodando, ao entrar no runlevel.
Se o nome do link se iniciar com a letra S (start), trata-se então de um serviço que será inicializado quando o sistema entrar no nível de execução associado.
O formato geral dos nomes desses arquivos é então:
KNNnome e SNNnome, onde:
– Letras K e S: como descrito acima;
– NN: Número de sequência, com dois dígitos, que especifica a ordem relativa para iniciar ou finalizar os serviços. Números mais baixos indicam scripts que serão executados primeiro. Caso haja repetição de números, a ordem alfabética será usada.
– nome: Nome para identificação dos serviços.
Vejamos o conteúdo do diretório /etc/rc2.d/:
Temos neste diretório vários links iniciados com a letra S, indicando serviços que devem ser iniciados quando o sistema entrar no nível de execução 2.
Definir o nível de execução padrão
Quando o sistema é iniciado, o processo init (primeiro processo do sistema) levará o sistema a um runlevel padrão, o qual é configurado no arquivo /etc/inittab, na linha a seguir:
Veja que o meu sistema, por padrão, entra no nível de execução 2 de acordo com o arquivo inittab.
Podemos alterar o runlevel padrão editando esse arquivo e trocando o número do nível de execução nesta linha pelo runlevel desejado.
CUIDADO!!!: Nunca configure os runlevels 0 ou 6 no arquivo /etc/inittab, pois seu sistema não conseguirá mais inicializar corretamente!
Para verificarmos o runlevel atual do sistema, digite o comando runlevel no console:
No exemplo acima, o número 2 indica que o runlevel atual é 2, e a letra N indica o runlevel em que o sistema se encontrava antes de entra no nível 2 (neste caso, nenhum), informação lida no arquivo /var/run/utmp.
Podemos alterar o runlevel do sistema pela linha de comandos usando comandos como o init e o telinit, que você pode conferir clicando aqui.
Gerenciando os links de runlevel no Debian
Podemos gerenciar os links de scripts de nível de execução usando o utilitário sysv-rc-conf, que pode ser instalado com o comando a seguir:
E aberto com o comando:
Com esse utilitário podemos consultar e também ativar ou desativar scripts em cada nível de execução no console com facilidade. Veja a tela do utilitário em execução:
Basta navegar pelos itens com as setas de direção do teclado, e com um toque na barra de espaços você pode ativar ou desativar os scripts de acordo com o runlevel que é mostrado no cabeçalho das colunas.