SUPER PROMOÇÃO BLACK FRIDAY - SOMENTE HOJE - APROVEITE!

Clique Aqui

DlteC do Brasil

  • Home
  • Cursos
  • Ebooks
  • Blog
  • Preços
  • Entrar
Linux

SysVinit e Gerenciamento de Inicialização do Linux para LPI-101

Leandro Siqueira - 1 de julho de 2019

Se você está estudando para o LPI-101 precisa também entender a inicialização e como gerenciá-la, por isso mesmo esse artigo trata do gerenciamento da inicialização do Linux através do SysVinit.

O que é o SysVinit?

O SysVinit é o sistema tradicional de inicialização de serviços.

Após iniciar o processo /sbin/init, o SysV lê o arquivo /etc/inittab para determinar o nível de execução padrão do sistema e iniciar os demais serviços.

Quando falamos em nível de execução, estamos nos referindo a quais serviços deverão ser executados (ou finalizados) no sistema em um determinado nível (numerados de 0 a 6).

Observe a seguir um resumo sobre os níveis de execução e seus propósitos (segundo discriminado no Debian 7.4):

  • 0: De forma direta, esse nível desliga o sistema. Também conhecido como halt.
  • 1, s ou S: Nível monousuário.Utilizado pelo superusuário para realizar atividades básicas para manutenção do sistema (sem acesso à rede ao compartilhamento de arquivos).
  • 2, 3, 4 e 5: Multiusuário.
  • 6: Reinicialização do sistema (reboot).

Lembre-se de que os runlevels 0, 1 e 6 são comuns a qualquer distribuição.

Baseado no nível de execução configurado, são executados os scripts presentes nos diretórios /etc/rcx.d/ (ex: rc5.d, rc3.d, etc.).

Nesses diretório encontarm-se diversos links simbólicos para arquivos contidos no diretório /etc/init.d/.

No próximo capítulo iremos estudar o seu arquivo de configuração e aprender a configurar o runlevel padrão e realizar mudanças entre os níveis com o sistema em execução.

Apesar de bastante robusto, este método apresenta como ponto negativo o fato dos serviços serem executados em sequência, fazendo com que a inicialização do sistema seja mais demorada.

Você já deve saber que o/sbin/init manda chamar os scripts pertencentes ao nível de execução configurado como padrão em /etc/inittab.

E quem irá de fato executar esses scripts? O script /etc/init.d/rc.

Esse receberá como parâmetro valores de zero a seis e buscará dentro dos diretórios inicializadores (/etc/rcX.d (onde X representa o runlevel em questão)) pelos scripts de inicialização.

Os scripts contidos nos diretórios de inicialização são, na verdade, links simbólicos para o diretório /etc/init.d.

Em algumas distribuições Linux, o diretório é o /etc/rc.d/init.d.

Dentro dos diretórios inicializadores, podemos ter scripts com nomes iniciados em K ou S.

Aqueles iniciados com a letra K, irá finalizar o serviço naquele runlevel (por exemplo, /etc/rc0.d/K01apache finaliza o Apache no runlevel 0).

Já aqueles que iniciam com a letra S, irá iniciar um serviço naquele runlevel (por exemplo, /etc/rc2.d/S17apache2 inicia o serviço Apache no runlevel 2).

Além disso, os scripts possuem uma ordem determinada.

Por exemplo, o script /etc/rcX.d/S1xxx será executado primeiro que /etc/rcX.d/S2xxx. Durante a inicialização, o último script a ser executado é o /etc/rc.local.

Apesar de bastante robusto, este método apresenta como ponto negativo o fato dos serviços serem executados em sequência, fazendo com que a inicialização do sistema seja mais demorada.

Gerenciamento de Inicialização no SysVinit

Vamos analisar o conteúdo do arquivo /etc/inittab e aprender a como trocar o runlevel do sistema (e configurar o nível padrão a ser utilizado).

Observe os principais campos contidos no arquivo /etc/inittab, bem como breves descrições sobre cada um deles (a partir da distribuição Debian 7.4):

dltec@cap1:~$ cat /etc/inittab

# Este é o runlevel configurado como padrão no sistema.

id:2:initdefault:

# indica o primeiro runlevel executado durante o boot, exceto no modo de emergência.

si::sysinit:/etc/init.d/rcS

# Localização de cada dos serviços e scripts a serem iniciados para cada nível de #execução

# Runlevel 0 => desligamento.

# Runlevel 1 => monousuário.

# Runlevels 2-5 => multiusuário.

# Runlevel 6 => reinicialização.

l0:0:wait:/etc/init.d/rc 0

l1:1:wait:/etc/init.d/rc 1

l2:2:wait:/etc/init.d/rc 2

l3:3:wait:/etc/init.d/rc 3

l4:4:wait:/etc/init.d/rc 4

l5:5:wait:/etc/init.d/rc 5

l6:6:wait:/etc/init.d/rc 6

# O que fazer quando as teclas CTRL-ALT-DEL forem pressionadas.

ca::ctrlaltdel:/sbin/shutdown -t3-r now

# O que deverá ser feito quando ocorrer falta de energia e quando a mesma retornar.

pf::powerwait:/etc/init.d/powerfail start

pn::powerfailnow:/etc/init.d/powerfail now

po::powerokwait:/etc/init.d/powerfail stop

# Terminais virtuais disponíveis para os runlevels em execução

1:2345:respawn:/sbin/getty 38400 tty1

2:23:respawn:/sbin/getty 38400 tty2

3:23:respawn:/sbin/getty 38400 tty3

4:23:respawn:/sbin/getty 38400 tty4

5:23:respawn:/sbin/getty 38400 tty5

6:23:respawn:/sbin/getty 38400 tty6

Analisando as Ações

Além da ação initdefault (define o runlevel do processo init), existem outras. Veja a seguir:

  • respawn: O processo é reinicializado caso seja parado ou finalizado.
  • wait: O processo é iniciado e o init espera pela sua finalização.
  • once: O processo é iniciado no momento em que o runlevel também é iniciado.
  • boot: O processo é iniciado no boot do sistema. O runlevel é desnecessário e ignorado.
  • bootwait: O processo é iniciado no boot do sistema enquanto o init aguarda a sua finalização. O runlevel também é desnecessário e ignorado.
  • off: Não realiza nenhuma ação.
  • sysinit: O processo é iniciado durante o boot, porém antes das ações boot/bootwait. O runlevel também é desnecessário e ignorado.
  • powerwait: O processo é iniciado em casos de queda de energia. O processo init aguarda a sua finalização.
  • powerfail: O processo também é iniciado em casos de queda de energia, mas o init não aguarda a sua finalização.
  • powerfailnow: O processo é executado em casos em que a bateria do nobreak está quase acabando.
  • powerokwait: No momento em que a energia for restabelecida, o processo relacionado a essa ação é executado.
  • ctrlaltdel: Ação a ser tomada no momento em que forem pressionadas as teclas Ctrl + Alt + Del.
  • kbrequest: Executa determinada ação quando alguma combinação de teclas especial for pressionada (será necessário alterar o mapa de caracteres do sistema).

Veja um exemplo de ação relacionada ao pressionamento das teclas Ctrl + Alt + Del:

Para verificarmos o runlevel atual, podemos utilizar o comando runlevel:

dltec@cap1:~$ runlevel

N 2

O comando runlevel retorna o nível de execução anterior e o atual. Se o nível permaneceu inalterado desde a carga do sistema, o nível anterior será mostrado como N.

Para trocar o runlevel do sistema, os comandos init ou telinit podem ser utilizados. Por exemplo, para trocar o nível de execução atual para o runlevel 1, um dos seguintes (equivalentes) comandos podem ser utilizados:

dltec@cap1:~$ init 1

dltec@cap1:~$ telinit 1

Os processos poderão também ser administrados através de comandos como:

# Pára o servidor de impressão CUPS

dltec@cap3:~$ /etc/init.d/cups stop

# Inicia o servidor de impressão CUPS

dltec@cap3:~$ /etc/init.d/cups start

# Recarrega o servidor de impressão CUPS

dltec@cap3:~$ /etc/init.d/cups reload

# Verifica o status do servidor de impressão CUPS

dltec@cap3:~$ /etc/init.d/cups status

Qual o Próximo Passo?

Se você gostou desse artigo e está se preparando para a prova LPI-101, recomendamos também que você leia o artigo:

Kit de Sobrevivência para Aspirantes a LPIC-1

 3 0
Share Now

Leandro Siqueira

Graduado em Análise de Sistemas pela Universidade Salgado de Oliveira (UNIVERSO) e pós-graduado em Engenharia de Software pela Escola Politécnica da Universidade Federal do Rio de Janeiro (UFRJ). Certificado ITIL Foundations, ISO 20000 Foundation Bridge e LPIC-1. Atua profissionalmente na área de TI desde 2010 - com foco em desenvolvimento de sistemas de informação e ensino de tecnologia.

Leave a Reply Cancel Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Previous Post Como Funciona o SNMP e sua Importância no Gerenciamento de Redes
Next Post AAA para CCNA – Authentication, Authorization, and Accounting

Artigos Populares

  • Subrede IP: Máscaras possíveis para classes A, B e C
  • Qual a Diferença entre Modelo OSI e TCP/IP?
  • Passo a Passo para Resolver Problemas de Conectividade de Rede
  • Como descobrir o MAC de um host se eu tenho apenas o IP?
  • Configurando Porta e VLAN em Switch Cisco de Acesso

Entre para a lista vip

Cursos Online Gratuitos com Opção de Certificado
  • Contato
  • Crie sua conta
  • Login

DlteC do Brasil - Todos os direitos reservados