Páginas

26 de ago. de 2007

Inittab & Upstart


O que é o upstart

Antes de começar, gostaria de explicar que por um processo de adaptação e compatibilidade, o arquivo /etc/inittab existe para quem fez upgrade da versão Dapper para Edgy. Porém o mesmo não é mais necessário para a versão 6.10, podendo ser deletado.

O upstart é um evento/base para o daemon do /sbin/init (pai de todos os processos). Ele assegura o começo e parada das tarefas e serviços durante o boot, bem como uma parada programada, além de supervisionar os sistemas em execução. O upstart pretende substituir todos os daemons, como o inetd, conde e etc. O upstart é pretendido por várias distribuições Linux. Além do Ubuntu, já há registros de teste com o Gentoo.


Destaques do upstart:

* As tarefas e os serviços são começados e parados por eventos (Signal);
* Os eventos são gerados enquanto as tarefas e os serviços estão funcionando ou parados;
* Os eventos podem também ser gerados em intervalos programados, ou quando os arquivos de configuração forem alterados;
* Os eventos podem ser recebidos de qualquer um ou de processos do sistema;
* Os serviços podem ser reiniciados se morrerem inesperadamente;
* Comunicação bidirecional com o daemon do init, para descobrir se os serviços estão funcionando, porque falharam, etc.


Você pode começar a brincar com o upstart através dos comandos de controle.

* stop tty2 --> para o tty2 (faça um teste);
* initclt list --> lista todos as execuções e seu estado (start, stop, waiting). Se você executou o comando acima para o tty2, verá que ele irá aparecer como stop;
* start tty2 --> inicia o tty2;
* status tty2 --> verifica o status do tty2 (on ou off).


Aonde configuro as opções que tinham no inittab?

Ao contrário do System V, que concentrava todas as configurações em um único arquivo (/etc/inittab), agindo na forma serial de inicialização, o upstart utiliza um arquivo para cada item, antes contido no inittab.

Os arquivos ficam dentro do diretório /etc/event.d.

Dentro deste diretório você irá encontrar os arquivos que habilitam as opções antes encontradas no inittab, como os terminais TTY, controlaltdel, powerfail e etc.

Exemplo: Para habilitar o tty2 apenas no runlevel 3 edite o arquivo abaixo:

# vim /etc/event.d/tty2

# tty2 - getty # stop on runlevel-2 start on runlevel-3 stop on runlevel-4 stop on runlevel-5

stop on shutdown

respawn /sbin/getty 38400 tty2

Com o upstart as configurações ficaram bem mais flexíveis. Coloque start para inicializar ou stop para desligar um processo no runlevel desejado.

Você também pode desligar se trocar o parâmetro "on" por "off". Cuidado com essas junções, pois segue o princípio da tabela verdade.

Exemplo: stop off - A expressão com duas negações se torna verdadeira.


Alterando o seu runlevel default


Para alterar o initdefault é necessário alterar o arquivo rc-default. Altere o parâmetro do teleinit pelo runlevel que deseja inicializar.

Dica para quem fez upgrade para o Edgy --> não esqueça de remover o /etc/inittab, caso contrário o script do rc-default irá respeitar o valor definido na opção initdefault do inittab.


Dicas e finalizando

O conteúdo de um arquivo dentro do /etc/event.d tem as seguintes características:

* Os arquivos contidos no no event.d executam um comando sempre após o comando "exec". Exemplo: # vim /etc/event.d/controlaltdel

# control-alt-delete - emergency keypress handling # on ctrlaltdel exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

No exemplo acima, ao acionar as teclas control+alt+del, será executado o comando shutdown.

* Outro ponto interessante é colocar o parâmetro "respawn". Esse parâmetro monitora o comando executado. Caso o mesmo termine inesperadamente, um novo programa é inicializado automaticamente. Exemplo:

# vim /etc/event.d/tty2

respawn /sbin/getty 38400 tty2

* Nos arquivos além das execuções acima e possível também executar um script. Exemplo:

# vim /etc/event.d/sulogin

# sulogin - rescue mode # on stalled exec /sbin/sulogin console owner

start script

echo echo "The system has reached a state where there are no jobs running." echo "A shell will be spawned so that you may start such jobs that are" echo "necessary." echo echo "Type 'exit' when finished."

end script

Espero ter de ajudado a entender o upstart e sua forma de funcionamento. Assim que aprender mais sobre o upstart irei explicar nesse canal.

Outra dica. Dê uma olhada com o "cat" em cada arquivo dentro do /etc/event.d.

Mais informações podem ser obtidas em:

* http://upstart.ubuntu.com/

fonte: http://wiki.ubuntubrasil.org/Upstart

Nenhum comentário:

Postar um comentário