upstart

Durante anos muitas distribuições Linux sempre adotaram como seus procedimentos de boots e carga de scripts executáveis baseados em Unix SystemV como Red Hat e derivados, Debian e outras no tradicional BSD init, tal como o Slackware,ArchLinux e Gentoo.

O init é gerenciado pelo próprio kernel com a tarefa de inicializar e arrancar todo o resto do sistema. Após o gerenciador de boot que define qual a partição vai arrancar, o init, pai de todos os processos, cuida do procedimento de boot e faz o resto. Com a inicialização do sistema de acordo com o seu nível de execução selecionado como padrão ou temporariamente alterado, o init é responsável por carregar ou descarregar certos scripts de acordo com sua necessidade baseado em configuração.

O init com base nos seus scripts de inicialização e todos os seus procedimentos, foram substituidos pelo upstart, praticamente na versão 6.10 do Ubuntu, que se mantém na distribuição até hoje e sendo utilizado até pelo novo Red Hat Enterprise Linux 6, sendo o projeto é mantido pela Canonical. O Upstart é um evento que se origina de uma base programada para o init (/sbin/init), pai de todos os processos, que no muitos dos casos substituido o seu arquivo de configuração em /etc/inittab por vários scripts centralizados (hoje), no /etc/init/.

O upstart gerencia atraves de sinais “SIG***”, os processos que são carregados ou descarregados, tal como definir atraves de um arquivo de configuração que o samba será sim ou não iniciado automaticamente durante o boot  e que um arquivo de processo será gerado em /var/run/samba/, que a leitura do /etc/default/samba é necessária para a execução do samba e seus determinados flags ou que o terminal tty2 será sim iniciado como processo em espera nas runlevels (níveis de execução 2345).

Antes o diretório de configuração para o upstart, assim que ele foi implementado no Ubuntu pela Canonical, era mantido em /etc/event.d o que foi migrado com algumas modificações para o diretório /etc/init.

No seu diretório /etc/init do upstart voce vai encontrar os seguintes arquivos (podendo variar), arquivos tais como:

tty1.conf a tty6.conf: definem suas configuracoes para os terminais

mountall.conf: define algumas regras para seus pontos de montagens, tais como o arquivo forcefsk, que caso exista no diretório /etc/, automaticamente ele vai iniciar o fsck para o ponto de montagem selecionado.

networking.conf: mantem desde a inicialização a sua rede virtual em funcionamento, atraves do comando ifup -a, lembrando que tudo é gerenciado pelo daemon /etc/init.d/networking

network-interface.conf: Responsável por manter o seu lo, interface de loopback sempre em funcionamento após boot e inicia todas as interfaces  em $INTERFACE carregando tudo e sendo gerenciados pelo initctl. O mesmo procedimento mantém no arquivo ssh.conf para o daemon sshd.

control-alt-delete.conf: Define o que vai acontecer quando voce digitar a sequencia control + alt + delete, sendo configurável editando o parâmetro exec dos seus scritps. Tente editar substituindo o comando shutdown -r now do seu exec para eject, toda vez que vc apertar control + alt + del, ele abrirá o cd.

Toda e qualquer alteração nos scripts do upstart, devemos fazer o mesmo procedimento do antigo /etc/inittab, para que a configuração seja renovada, basta executar o comando init q, para que não haja a necessidade de reinicializar a sua máquina.

Devemos sempre manter a configuração correta em /etc/default/locale, pois é nele que configuramos a variável LANG, que define a lingua do sistema, tal como o padrao do keymap, onde todas as aplicações consultam este arquivo por causa do grupo de variáveis LC para as aplicações.

Existem comandos que são relacionados ao gerenciamento de boot para o seu sistema, principalmente o Ubuntu, comandos como o start, stop, restart, reload e status, que antes era atributos do comando service, invoke-rc.d e pelos scripts RC diretamente em /etc/init.d, agora todos gerenciados pelo initctl.

Por exemplo, voce precisa reiniciar o daemon do ssh e parar o smbd, execute:

$sudo restart ssh
$sudo stop smbd

O que voce poderia fazer o mesmo com os comandos: service ssh restart, invoke-rc.d ssh restart ou /etc/init.d/ssh restart, no caso do exemplo do ssh, e até mesmo utilizar o initctl com o comando:

#initctl start ssh
O que vai fornecer até mesmo o PID do processo.

Também, assim como o comando chkconfig do RedHat/CentOS, é  possivel usar o update-rc.d para executar o mesmo procedimento. Vamos supor que voce não quer que o ssh seja iniciado toda vez que a sua máquina seja iniciada, então execute:

$sudo update-rc.d -f ssh remove

sendo possível voce reconfigurar a forma que o daemon vai ser inicializado e em qual runlevel deseja, Voce precisa fazer com que o serviço do ssh inicie toda vez na runlevel 2 e 3 e o mesmo seja interrompido na runlevel 0,1 e 6, então execute:

$sudo update-rc.d ssh start 23 . stop 016 .

Aprigio Simoes
aprigio@linuxstudent.com.br