Runlevel

tas

Neste artigo, vamos verificar quais arquivos são utilizados para inicializar o GNU/Linux, já que neste sistema operacional tudo é arquivo e muitos
deles são editáveis.

[ Hits: 38.028 ]

Por: Tadeu Araujo Sales em 22/10/2012


Entendendo e trabalhando com runlevels



O que é um runlevel?

Runlevel é o nível de inicialização do sistema.

Este nível decide qual serviço vai inicializar ou não com o sistema. O Debian e o Red Hat utilizam o sistema System V, o Slakware, o sistema FreeBSD, o Ubuntu está lançando o sistema Upstart, mas ainda utiliza o System V.

Após o carregamento do sistema, o kernel é carregado na memória, junto com os dispositivos que estão no /etc/fstab e no /etc/dev. Temos então, o carregamento do sistema. Este acontece no /etc/init.d, onde ficam todos os *daemons que são iniciados como sistema, todos os scripts responsáveis por parar ou iniciar um serviço estão no /etc/init.d.

* Daemon é um script que é utilizado para dar start, stop ou restart em um serviço.

Quando o sistema é ativado, o primeiro arquivo a ser lido é o /etc/inittab, que armazena o runlevel do sistema na seguinte linha:
id:x:initdefault

Onde x é o runlevel padrão. Por exemplo, no Debian o runlevel padrão é o 2 (dois). Para verificar o runlevel da sua distribuição, você primeiro abre o arquivo com um editor de texto de sua escolha e depois localiza o ID que indica qual o runlevel padrão.

Vamos usar o Vim como o editor de texto para o nosso exemplo:

# vim /etc/inittab

id:2:initdefault


Obs.: No Vim, para localizar algo dentro de um arquivo, digite / e entre com a string que deseja localizar.

Cuidado ao mudar o runlevel no arquivo inittab, pois se colocarmos o runlevel 6 ou 1, que é o da reinicialização do sistema ou o de finalização dos serviços e desligamento do sistema, o sistema não carrega e fica em looping.

As opções que podemos colocar no inittab são:
  • 0 → Logo após iniciar o sistema o mesmo já finaliza todos os serviços e desliga.
  • 1 → Temos ao iniciar o modo monousuário.
  • 2-5 → Temos os modos multiusuários que podem ser tanto gráfico como no modo texto.
  • 6 → Modo que reinicia a máquina.

Após ler o arquivo /etc/inittab, o sistema sabe em qual runlevel deve iniciar, porém, não executa nenhum script de inicialização.

No nosso caso, que estamos usando o Debian como exemplo, ele vai carregar o runlevel 2, mas antes dele abrir o runlevel 2, ele necessita carregar os serviços essenciais ao sistema que se encontram em /etc/rS.d, ao abrir o arquivo como o vim (# vim /etc/rS.d), verificamos que temos dentro deste arquivo somente links que apontam para o arquivo /etc/init.d, onde realmente ficam os scripts de inicialização do sistema.

Após, ele carregar os arquivos essenciais ao sistema no /etc/rS.d, então ele parte para abrir os scripts do runlevel 2, que se encontram em /etc/rc2.d.

Para visualizar, execute:

# cd /etc/rc2.d && ls –l

Verificamos que também são links, e que apontam para /etc/init.d, repare que temos uma letra S e K no inicio de cada link, onde S vem de start que significa daemon iniciado e K vem de killer, que significa daemon morto.

Os scripts também recebem um numero, por exemplo: S20cups - isto significa que o serviço do CUPS será o vigésimo a ser iniciado. Outro exemplo: k95cups - isto significa que o serviço do CUPS será o nonagésimo quinto a ser finalizado.

Também podemos mudar de runlevel em nível de execução, primeiro verifique qual runlevel seu sistema está utilizando, executando o seguinte comando:

# runlevel

Mudamos para o nível monousuário:

# init 1

Mudamos para o nível de reinicialização do sistema:

# init 6

Ao mudar o runlevel com init, você estará fazendo isso em tempo de execução, logo, não teremos o problema dele entrar em looping. Isto só ocorreria se fosse modificado no arquivo /etc/inittab.

Para reiniciar um serviço no Debian, colocamos o PATH completo:

# /etc/init.d/ networking restart

Obs.: Poderíamos usar o start ou stop, que inicia ou para o serviço.

Acabamos de reiniciar a placa de rede, no CentOS é um pouco diferente:

# service network restart

* Como no Debian, poderíamos usar o start ou stop, que inicia ou para o serviço.

Podemos colocar qualquer script para iniciar, vamos criar um script de exemplo e colocar na inicialização do Debian.

Criando um arquivo para carregar as configurações do firewall, neste momento, você deve estar dentro do diretório /etc/init.d:

# touch firewall && vim firewall

Adicione:

modprobe iptables
echo >1 /proc/sys/net/ipv4/ip_forward
iptables –t nat –A POSROUTING –o eth1 –j MASQUERADE;


Salvando o arquivo e saindo: :wq!

Colocando o script firewall para inicializar:

# update-rc.d firewall defaults

No CentOS, acredito que seja assim:

# cd /etc/init.d && chkconfig --add firewall

Ou então:

# mv ~/firewall /etc/init.d

Fui! Hoje eu saí com a mulher casada (Debian ). No próximo artigo, eu saio com a amante (Slackware).

Também publicado em: runlevel « www.tripletech.com.br

   

Páginas do artigo
   1. Entendendo e trabalhando com runlevels
Outros artigos deste autor

O Processo de Boot no Linux

Leitura recomendada

Ajeitando o blackbox

Apache2 + PHP5 + MySQL + PhpMyAdmin + Webmin de forma simples e objetiva

Criando um tema de apresentação no Mandriva

Instalação e configuração do J2SE

Configurando hostname, rotas, gateway e IP em Red Hat 6

  
Comentários
[1] Comentário enviado por Linuxlrt em 25/10/2012 - 09:38h

Muito bom o artigo

[2] Comentário enviado por Lerub em 25/10/2012 - 14:55h

Artigo interessante!

[3] Comentário enviado por jwolff em 07/11/2012 - 15:28h

Muito Bom e Importante para quem precisa se preparar para a LPIC - 1.

[4] Comentário enviado por phrich em 12/12/2012 - 18:09h

Um assunto bem interessante...

[5] Comentário enviado por mlisboaperez em 19/07/2013 - 22:53h

Um bom princípio.

Porém é preciso melhorar a didática do texto, além de se aprofundar mais no assunto.
Por enquanto o artigo ainda fica devendo sobre Runlevel's, sendo necessário buscar em outras fontes algum complemento.

[6] Comentário enviado por gonzalito em 27/01/2014 - 11:45h

Estou estudando para o LPIC- 101 e me ajudou muitooo!Obrigado pela contribuição.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts