sexta-feira, 21 de agosto de 2009

Níveis de execução e System V

Objetivos

* Níveis de execução, seguindo o padrão V;
* importância dele em nosso dia-a-dia;
* Iniciar serviço a partir do boot;
* Parar serviço a partir do boot;


links

Para que possamos entender a base de funcionamento do sistema de inicialização padrão System V, precisamos antes conhecer um tipo especial de arquivos: os links.
Um link serve termos o mesmo arquivo em diversos lugares, sem a necessidade de cópias. Isso faz com que você tenha a maior quantidade de arquivos em varios lugares e ocupando menos bits de metadados ao sistema de arquivos. O diretório /etc/init.d por exemplo, guarda os scripts para iniciar, e parar determinados serviços. E dentro do diretório rcN.d (a letra N é correspondente no nível de inicialização, veremos a seguir) ficam os links dos scripts que estão dentro de /etc/init.d para poder determinar qual script executará primeiro.
Os links nos permitem fazer modificações nos arquivos originais, assim não precisamos alterar o arquivo original e sua cópia. Ao contrário da cópia, porque a cópia não guarda atualizações.

System V

Padrão System V define, entre outras coisas, como deve ser a inicialização dos serviços do sistema. Ele trabalha com níveis de inicialização, os chamados "runlevels", havendo oito deles que serão descritos posteriormente.
A inicialização do sistema se inicia com um boot loader no qual o usuário escolhe qual sistema operacional ele irá iniciar a máquina. Uma vez escolhido, o boot loader inicia o carregamento do kernel na memória RAM e passa o controle do sistema a ele. Uma vez que o kernel já esteja controlando a máquina é iniciada a fase de subir os serviços necessários para a utilização do sistema. Este último estágio é que trataremos aqui.

Níveis de execução - System V

Em um sistema padrão System V, hávera oito níveis de inicialização, sendo eles:

* Nivel S carrega o serviços mínimos essenciais ao sistema;
* Nível 0 desliga o sistema;
* Nível 1 modo monousuário;
* Níveis 2 a 5 multiusuário, modo 2 é o padrão do Debian;
* Nível 6 reboot para reinicializar o sistema;

Os primeiros serviços a serem inicializados são aqueles do nível S que carregam por exemplo o hostname da máquina (serviços essencial). Após esse nível ter sido concluído passa-se para o nível seguinte definido como padrão do sistema no arquivo /etc/inittab. Que no caso do Debian é o nível 2. Neste nível são iniciados os outros serviços não essenciais, como servidore de SSH, web, etc.
O sistema System V consiste em agrupar todos os scripts de inicialização do sistema em um uníco diretório /etc/init.d e criar links simbólicos para esses scripts dentro do diretórios dos runlevels apropriados; cada runlevel possui o seu diretório, sendo eles localizados no /etc sobre o nome rc#.d, no qual o caracter '#' representa o número do runlevel.
Nesses diretórios haverá links para os scripts de inicialização o finalização dos serviços e o nome desses links indicará se os serviço de rede deve ser iniciado ou finalizado e qual será a ordem que será seguida para isso. Por exemplo, se um serviço começa por S89 como é o caso do cron cujo nome dentro do rc2.d é S89cron; ele será o serviço a ser iniciado após todos os serviços com número menor que o dele sejam iniciados. Por exemplo, ele será iniciado após os serviços exi4 cujo nome do link é S20exim4. No caso de um desses links ter seu nome iniciado pela letra k esse serviço será finalizado quando o runlevel corresponde for iniciado. Dessa forma se existir um link chamado k25ssh no runlevels 3 (/etc/rc3.d), quando mudarmos para esse runlevel, se o ssh estiver ativo ele será o vigésimo quinto a ser desativado.
Um script de inicialização nada mais é do que um script que realiza verificações essenciais ao funcionamento do serviço em questão e uma estrutura do tipo case que aceitará os argumentos start|stop|restart dentre outros. Sendo assi, para iniciar um serviço basta dar o comando:


# /etc/init.d/ start

E para finalizar um serviço basta executar com o parâmetro stop

# /etc/init.d/ stop

Exercícios teorícos

1- É possível criar hard link e symlink de uma partição para outra? Por que?

2 - Em qual arquivo posso configurar em que nível o sistema irá inicializar?

3 - O que é um runlevel? Quais são eles?

4 - Qual é o runlevel padrão do debian?

5 - Como eu faço para descobrir em qual runlevel eu estou?

DICA LPI: A maioria das distribuições Linux utiliza o padrão system V para gerenciamento dos Daemons e serviços que devem ou não serem carregados nos diferentes níveis de execução. Para uma melhor compreensão, é interessante que analisemos o arquivo /etc/inittab para ver como esse gerenciamento funciona.

0 comentários:

Postar um comentário