q
Funções do init:
1 Inicializa todos os demais processos que implementam os serviços do sistema. 1 Define níveis de execução (run levels) para o sistema.
1 Identifica os processos que devem estar ativos em cada nível. 1 Arquivo de configuração: /etc/inittab.
Após o kernel ser inicializado, o processo init é ativado. Esse processo é direta ou indireta- mente responsável por inicializar todos os demais processos que implementam os serviços disponíveis no sistema. Entre esses processos, pode ser citado o mingetty, que realiza o con- trole de login no sistema. Sempre que uma sessão de trabalho é encerrada, o processo init reativa o processo mingetty para aquele console virtual. No Linux, seis processos mingetty são inicializados para os consoles virtuais e podem ser acessados através da combinação das teclas “Alt+F1” até “Alt+F6”.
O Linux define níveis de execução (runlevels) que identificam o estado atual do sistema. Cada nível possui um propósito específico, que determina o conjunto de processos que devem estar ativos. Para identificar os processos que devem ser ativados, o init lê o arquivo de configuração /etc/inittab. Nesse arquivo, estão todas as informações sobre os níveis de exe- cução e os processos a serem inicializados. Cada linha desse arquivo indica ao init um comando ou script que deve ser executado. Dificilmente o administrador precisa alterar o conteúdo do arquivo /etc/inittab. Entretanto, é indispensável entender como esse arquivo é processado.
Ca pí tu lo 8 - B oo t & S hu td ow n e K er ne l
Arquivo /etc/inittab
q
1 Executa o script /etc/rc.d/rc.sysinit.
1 Executa os scripts do diretório «/etc/rc.d/rcX.d», onde X representa o nível de exe- cução atual.
1 Ativa as partições de swap, verifica a consistência dos sistemas de arquivos e inicializa o sistema de quotas.
1 Por fim, executa o script S99local (link para /etc/rc.d/rc.local).
1 O comando telinit pode ser usado para mudar o nível de execução atual.
Cada linha do arquivo /etc/inittab é composta por quatro campos separados pelo caractere “:”, que são descritos a seguir:
1 Id: identificador único para a linha, que pode ter qualquer valor; 1 Rstate: indica o nível de execução do processo disparado pela linha;
1 Action: indica como oinit deve tratar o processo disparado por essa linha. As principais opções para esse campo são:
2 initdefault: indica o nível de execução padrão na inicialização;
2 wait: espera o término do processo antes de ler a próxima linha do arquivo; 2 once: executa o processo uma única vez;
2 respawn: reinicia o processo caso ele termine. 1 Process: informa o comando ou script a ser executado.
A primeira linha do arquivo /etc/inittab define o nível de execução padrão assumido durante a inicialização do sistema. O primeiro script que o init executa, presente na segunda linha do arquivo /etc/inittab, é o /etc/rc.d/rc.sysinit. Esse script ativa as partições de swap, verifica a consistência dos sistemas de arquivos e inicializa o sistema de quotas. Após concluir esse script, o init ativa o script/etc/rc.d/rc, passando como parâmetro o valor do nível de execução atual. Esse script ativa todos os scripts que estão armazenados no diretório “/etc/rc.d/rcX.d”, onde X é o valor do nível de execução atual. Assim, no diretório “/etc/rc.d” existem seis dire- tórios rcX.d diferentes, um para cada nível de execução, que contêm os scripts que devem ser executados em cada nível. Os scripts começam com as letras “K” (kill scripts) ou “S” (start script), seguidas de um número e um nome que identifica o serviço controlado pelo script. Também são ativados em ordem crescente, baseada nos números que formam seus nomes. No caso dos níveis de execução 2, 3 e 5, o último script executado é o S99local, que é um link simbólico para o script /etc/rc.d/rc.local. Esse script pode ser editado pelo administrador para configurar serviços adicionais locais que devem ser executados durante a inicialização do sistema. É importante o administrador utilizar esse script para evitar a ativação manual de serviços, todas as vezes que o sistema for iniciado. Por fim, o processo init ativa os pro- cessos mingetty para cada console virtual.
1 Define o nível de execução padrão do sistema.
1 Indica quais processos devem ser iniciados, finalizados ou reiniciados.
1 Indica que ações tomar quando o sistema entra em um novo nível de execução.
Saiba mais
Os kill scripts são responsáveis por “matar” os processos que implementam um determinado serviço. Vale ressaltar que eles são ativados, em ordem crescente, baseada nos números que formam seus nomes. Já os start
scripts são respon-
sáveis por ativar os processos que imple- mentam um determi- nado serviço.
Adm in is tr aç ão d e Si st em as L in ux 1 Formato: 2 id:rstate:action:process
O nível de execução pode ser modificado usando o comando telinit, sem precisar editar o arquivo /etc/inittab. O comando telinit requer um único parâmetro, que é o nível de execução desejado. A tabela 8.2 descreve os níveis de execução do Linux.
Nível Descrição
0 Desliga o sistema. 1 Modo monousuário.
2 Modo multiusuário sem NFS e SMB. 3 Modo multiusuário completo. 4 Não utilizado.
5 Modo multiusuário com X-Window System. 6 Reinicializa o sistema.
A seguir, pode ser visto um exemplo comentado do arquivo /etc/inittab. # Define o nível de execução padrão
id:3:initdefault:
# Executa o script /etc/rc.d/rc.sysinit si::sysinit:/etc/rc.d/rc.sysinit
# Executa o script /etc/rc.d/rc, passando como parâmetro para ele o nível de execução atual.
l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6
# Habilita a reinicialização do sistema através das teclas CTRL+ALT+DEL.
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# Executa um shutdown caso ocorra uma falha de energia. Para isso, o daemonpowerd deve estar instalado no sistema e o servidor deve ser alimentado por um no-break.
Tabela 8.2
Ca pí tu lo 8 - B oo t & S hu td ow n e K er ne l
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure. System Shutting Down”
# Cancela o shutdown anterior caso a energia seja restabelecida. pr:12345:powerokwait:/sbin/shutdown -c “Power Restored. Shutdown Cancelled”
# Executa o processo mingetty nos níveis de execução 2, 3, 4 e 5. 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
# Executa o xdm no nível de execução 5 x:5:respawn:/etc/X11/prefdm -nodaemon