Você está na página 1de 5

16/01/12

O p og ama INIT [A igo]

O programa INIT
Autor: Adriano Boer <adriano at sgsistemas.com.br> Data: 21/02/2009 Introdu o ao INIT Quando o kernel auto-inicializa (foi carregado em memria, comea a rodar e inicializa todos os dispositivos e estruturas de dados), ele finaliza as suas tarefas na inicializao do sistema ao iniciar o programa de nvel de usurio init. O init sempre o primeiro processo do sistema (o seu n mero de processo sempre igual a 1). O kernel procura pelo init em alguns diretrios que vm sendo usados historicamente para isso, porm a localizao correta no Linux o /sbin/init. Caso o kernel no consiga encontr-lo, ele executar o programa /bin/sh e caso isso tambm falhe, a inicializao do sistema abortada. Quando o init comea, o sistema finaliza o processo de inicializao ao executar uma srie de tarefas administrativas, como a checagem dos sistemas de arquivos, limpeza do /tmp (inicia vrios servios e inicializao do getty para cada terminal e console virtual atravs dos quais os usurios sero autorizados a acessar o sistema). Aps o sistema ter sido adequadamente inicializado, o init reinicia o getty para cada terminal aps a sada do usurio do sistema (permitindo que o prximo usurio possa acessar o sistema). Alm disso, o init "adota" tambm todos os processos rfos: quando um processo inicia um processo filho e finalizado antes dele, imediatamente o processo restante torna-se filho do init. Isso importante por vrias razes tcnicas, por isso bom conhecer para entender as listas de processos e a rvore de processos. H poucas variantes disponveis do init. Muitas distribuies do Unix usam o s svinit (escrito por Miquel Van Smoorenburg), o qual baseado no init do System V. As verses BSD do UNIX tem um init diferente. A diferena reside nos nveis de execuo: presentes no System V, mas no no BSD (pelo menos tradicionalmente). Essa diferena no essencial e ns examinaremos somente o sysvinit.

Configura o do INIT Quando inicializado, o init l o arquivo de configurao /etc/inittab. Enquanto o sistema estiver no ar, ele ser lido novamente, caso seja enviado um sinal HUP, tornando desnecessrio reinicializar o sistema para que as mudanas do init faam efeito. O arquivo /etc/inittab um pouco complicado. Comearemos pelo caso mais simples, ou seja, configurando as linhas do getty. As linhas do /etc/inittab consistem de quatro campos delimitados por dois pontos: id :nvel:ao:processo
. i aolin .com.b /a igo /imp e o a.php?codigo=9591 1/5

16/01/12

O p og ama INIT [A igo]

Os campos so descritos a seguir. O /etc/inittab pode conter algumas linhas vazias, e linhas que comecem com '#' sero consideradas comentrios. id: Identifica a linha no arquivo. Para linhas referentes ao getty especifica o terminal em que eles so executados (os caracteres aps o /dev/tty no nome do arquivo de dispositivo). Para outras linhas no tm efeito (exceto pelas restries de tamanho), e devem ser nicas. nvel: Os nveis de execuo em que a linha deve ser considerada. Os nveis de execuo so definidos atravs de dgitos sem delimitadores e so melhores descritos na prxima seo. ao: Define a ao que deve ser tomada pela linha. Por exemplo, respawn para executar novamente o comando do prximo campo, quando este encerra seu processamento ou once para execut-lo somente uma nica vez. processo: O comando a ser executado. Para iniciar o getty no primeiro terminal virtual (/dev/tty1), em todos os modos de execuo multi-usurios (de 2 a 5), podemos informar a seguinte linha: 1:1234S:respawn:/sbin/getty 9600 tty1 O primeiro campo diz que a linha deve ser executada para /dev/tty1. O segundo que ele aplica-se aos nveis de execuo de 1 a 5. O terceiro que o comando deve ser reinicializado quando o processo termina (ou seja quando um usurio desconectar-se de um terminal, o getty ser executado novamente para que outro usurio possa conectar-se). O ltimo campo executa o processo getty no primeiro terminal virtual. Caso necessite adicionar terminais ou modems para atendimento de chamadas ao sistema, deve-se adicionar mais linhas ao arquivo /etc/inittab, uma para cada terminal ou modem. Ver as pginas de manual do init(8), inittab(5), mingetty(8) e mgetty(8) para maiores detalhes. Caso o comando falhe ao ser executado, e o init esteja configurado para reinicializ-Io, isso certamente consumir uma grande quantidade de recursos, pois o processo de iniciar o comando se repetir indefinidamente. Para prevenir esse tipo de problema, o init verificar a frequncia de reinicializao do comando e caso esta seja muito grande, o init aguardar automaticamente por cinco minutos antes de inici-lo novamente.

N veis de execuo N vel de execuo o estado do init e de todo o sistema que define que servios estaro operacionais. Eles so identificados por n meros, de acordo com a tabela do INIT. No h nenhum consenso de como utilizar os nveis definidos para usurio (de 2 a 5). Alguns administradores de sistema utilizam os nveis de execuo para definir quais subsistemas sero executados, por exemplo, se o X estar disponvel ou as funcionalidades de rede e assim por diante. Outros tem todos os subsistemas sendo ativados e sendo finalizados individualmente, sem mudar o nvel de execuo, j que este pode ser um pouco complexo para controlar seus sistemas. Cada administrador deve definir qual o mtodo mais adequado s suas necessidades, porm seguir a forma definida pela distribuio em uso deve ser o meio mais simples.
. i aolin .com.b /a igo /imp e o a.php?codigo=9591 2/5

16/01/12

O p og ama INIT [A igo]

Nvl e 0 1 2 3 4 5 6

Dsro eci Dsia elgr Mn-si oouuro Mlisi,smNS utuuro e F Mlisi cmlt utuuro opeo Nouao sd X1 1 Riiilzr encaia

Nveis de execuo so configurados no /e c/ini ab por linhas como a seguinte: I2:2:wait:/etc/rc.d/rc 2 O primeiro campo um rtulo arbitrrio; o segundo significa que ele se aplica ao nvel de execuo 2. O terceiro significa que o init deve executar o comando contido no quarto campo uma nica vez, quando o sistema entrar neste nvel, e que o init deve aguardar que ele seja concludo. O /etc/rc.d/rc executa todos comandos necessrios para iniciar e parar os servios previstos para o nvel 2. O comando no quarto campo executa todo o trabalho duro de configurar um nvel de execuo. Ele inicia os servios que ainda no estejam sendo executados e finaliza os servios que no devem rodar neste nvel. Exatamente qual o comando a ser utilizado ou como o nvel est configurado depende de cada distribuio do Linux. Quando o init iniciado, ele procura por uma linha no /etc/inittab que especifique o nvel de execuo padro: id:3:initdefault: Podemos informar ao init para iniciar o sistema em um outro nvel de execuo, passando ao kernel argumentos como single ou emergency. Isso permite escolher o modo mono-usurio. Enquanto o sistema est sendo executado o comando telinit pode mudar o modo de execuo, o que faz com que o init execute o comando apropriado definido no /etc/inittab.

Configura es iniciais no /etc/inittab O arquivo /e c/ini ab tem algumas funcionalidades especiais que permitem aes diferenciadas em situaes especiais. Estas funcionalidades so definidas atravs de palavras chaves utilizadas no terceiro campo. Alguns exemplos:

powerwait
Permite que o init encerre o sistema na falta de energia eltrica. Assume que o sistema est utilizando uma unidade de alimentao extra (no-break) e que o.software da unidade informar sobre a falta de energia.

ctrl alt del


. i aolin .com.b /a igo /imp e o a.php?codigo=9591 3/5

16/01/12

O p og ama INIT [A igo]

Permite ao init reinicializar o sistema, quando as teclas ctrl-alt-del forem pressionadas simultaneamente. O administrador pode configurar para que seja executada outra funo. Isto aplicvel, por exemplo, nos casos em que o sistema esteja em uma localizao p blica.

sysinit
Comando que deve ser executado quando o sistema for inicializado. Este comando pode limpar o conte do do /tmp, por exemplo. Esta lista no completa. Ver a pgina de manual do inittab(5) para todas as possibilidades e detalhes de como utiliz-las.

Iniciando em modo mono-usurio


Um nvel de execuo extremamente importante o modo mono-usurio, no qual somente o administrador do sistema utiliza a mquina e o menor n mero possvel de servios (inclusive logins) estaro disponveis. Este modo de execuo necessrio para algumas tarefas administrativas, tais como na execuo do fsck na partio /usr, isto requer que a partio esteja desmontada, o que no pode ocorrer a menos que todos os servios do sistema estejam finalizados. Um sistema em execuo pode mudar para mono-usurio atravs do comando elini . Durante a inicializao do sistema a palavra single ou emergency, na linha de comando do kernel, faz com que o init seja informado do nvel de execuo a iniciar (a linha de comando do kernel pode variar de sistema para sistema. Depende de como estamos inicializando o sistema). A inicializao em modo mono-usurio pode ser necessria para executar-se o comando fsck manualmente, antes de qualquer montagem ou acesso a uma partio /usr com problemas (qualquer atividade em um sistema de arquivos inconsistente pode trazer mais problemas, devendo o fsck ser executado o mais rapidamente possvel). Os scripts de inicializao do init automaticamente entraro em modo mono-usurio caso o comando fsck executado de forma automtica apresente algum problema durante a inicializao do sistema. Esta uma tentativa de prevenir que o sistema utilize um sistema de arquivos danificado e que o fsck no possa corrigir automaticamente. Tais casos so relativamente raros e usualmente envolvem um disco rgido com problemas ou uma verso experimental do kernel, porm desejvel que se esteja preparado. Como medida de segurana, um sistema adequadamente configurado pedir a senha do root antes de iniciar um interpretador em modo mono-usurio. De outra forma seria fcil simplesmente informar uma linha ao LILO e ganhar acesso ao sistema como superusurio. Caso o problema esteja no arquivo /etc/passwd, o melhor ter-se mo um disquete de inicializao.

Exemplos de utiliza o
. i aolin .com.b /a igo /imp e o a.php?codigo=9591 4/5

16/01/12

O p og ama INIT [A igo]

Inicializao do servidor de aplica es Java Apache Tomcat. Em servidor de aplicao Java extremamente desejvel que o servio responsvel pelas aplica es seja inicializado junto com o sistema. Uma das formas de se fazer isso atravs do init atravs da seguinte linha. tom:23:respawn:su - -c "/usr/java/tomcat/bin/catalina.sh run -security" >/dev/null 2>&1 A linha acima diz ao init que sempre que ele rodar nos run-levels 2 e 3 dever executar o tomcat utilizando a ao respawn que far com que o processo seja reinicializado caso ele seja finalizado.

http://www.vivaolinux.com.br/artigo/O-programa-INIT Voltar para o site

. i aolin

.com.b /a igo /imp e

o a.php?codigo=9591

5/5

Você também pode gostar