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: 37.123 ]

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

Personalizando um DVD de instalação do Ubuntu Linux

Configuração da placa wireless LinkSys WUSB54G com drivers de Linux

Instalação do CACTI no Debian Sarge

Ubuntu 12.04 - Integração com Active Directory do Windows 2008

Balanceamento e alta disponibilidade com Bonding

  
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