O programa INIT

O init é um dos programas absolutamente essenciais para a operação de um sistema Linux, mas que a maioria dos usuários pode ignorar. Uma boa distribuição Linux conterá a configuração de um init que funcionará com a maioria dos sistemas e não haverá necessidade de se fazer absolutamente nada. Porém aqui apresento informações aos que gostam de conhecer melhor sobre o S.O.

[ Hits: 63.130 ]

Por: Adriano Boer em 21/02/2009


Introdução ao INIT



Quando o kernel auto-inicializa (foi carregado em memória, começa a rodar e inicializa todos os dispositivos e estruturas de dados), ele finaliza as suas tarefas na inicialização do sistema ao iniciar o programa de nível de usuário 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 diretórios que vêm sendo usados historicamente para isso, porém a localização correta no Linux é o /sbin/init. Caso o kernel não consiga encontrá-lo, ele executará o programa /bin/sh e caso isso também falhe, a inicialização do sistema é abortada.

Quando o init começa, o sistema finaliza o processo de inicialização ao executar uma série de tarefas administrativas, como a checagem dos sistemas de arquivos, limpeza do /tmp (inicia vários serviços e inicialização do getty para cada terminal e console virtual através dos quais os usuários serão autorizados a acessar o sistema).

Após o sistema ter sido adequadamente inicializado, o init reinicia o getty para cada terminal após a saída do usuário do sistema (permitindo que o próximo usuário possa acessar o sistema). Além disso, o init "adota" também todos os processos órfãos: quando um processo inicia um processo filho e é finalizado antes dele, imediatamente o processo restante torna-se filho do init. Isso é importante por várias razões técnicas, por isso é bom conhecer para entender as listas de processos e a árvore de processos.

Há poucas variantes disponíveis do init. Muitas distribuições do Unix usam o sysvinit (escrito por Miquel Van Smoorenburg), o qual é baseado no init do System V. As versões BSD do UNIX tem um init diferente. A diferença reside nos níveis de execução: presentes no System V, mas não no BSD (pelo menos tradicionalmente). Essa diferença não é essencial e nós examinaremos somente o sysvinit.

    Próxima página

Páginas do artigo
   1. Introdução ao INIT
   2. Configuração do INIT
   3. Níveis de execução
   4. Configurações iniciais no /etc/inittab
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Enviando e-mails pelo terminal

Instalando o Kink - Monitoração de tinta de impressoras HP e Epson

AMSN, uma opção Open Source para o Messenger da Microsoft

VMWare - 3 mãos na roda

Firefox, Thunderbird, pastas e integração Windows e Linux

  
Comentários
[1] Comentário enviado por pogo em 21/02/2009 - 14:20h

excelente texto, parabéns!
isso também é muito útil para quem vai fazer a LPI... =)

[2] Comentário enviado por cassimirinho em 21/02/2009 - 21:19h

Como faço para editar no ubuntu? (já que o inittab não existe neste diretório)

Minha máquina é um pouco limita de hardware(processamento) e gostaria de dar uma otimizada e eliminando recursos que não tenho e não preciso utilizar. Segue o /etc/init.d/
acpid glibc.sh mysql-ndb-mgm stop-bootlogd
acpi-support hal networking stop-bootlogd-single
alsa-utils halt pcmciautils stop-readahead
anacron hostname.sh policykit sysklogd
apache2 hotkey-setup powernowd system-tools-backends
apmd hwclockfirst.sh powernowd.early udev
apparmor hwclock.sh pppd-dns udev-finish
apport keyboard-setup procps ufw
atd killprocs pulseaudio uml-utilities
avahi-daemon klogd rc umountfs
binfmt-support laptop-mode rc.local umountnfs.sh
bluetooth linux-restricted-modules-common rcS umountroot
bootlogd loopback readahead urandom
bootmisc.sh module-init-tools readahead-desktop usplash
checkfs.sh mountall-bootclean.sh README vbesave
checkroot.sh mountall.sh reboot vboxdrv
console-screen.kbd.sh mountdevsubfs.sh rmnologin virtualbox-ose
console-setup mountkernfs.sh rsync winbind
cron mountnfs-bootclean.sh samba wpa-ifupdown
cups mountnfs.sh screen-cleanup x11-common
dbus mountoverflowtmp sendsigs xserver-xorg-input-wacom
dkms_autoinstaller mtab.sh single
dns-clean mysql skeleton
gdm mysql-ndb ssh


Se eu apenas deletar algum arquivo desses resolve ou terei problemas?

[3] Comentário enviado por araujo_silva em 22/02/2009 - 13:03h

O sistema Ubuntu o arquivo de inicialização para a estrutura baseada no diretorio /etc/event.d, onde os eventos de inicialização encontram-se distribuidos em arquivos que inicializam serviços específicos. Esta organização apresenta o nível 2 como nível padrão (/etc/event.d/rc2) e os comandos initctl para gerência de eventos.

$ sudo initctl list
logd (stop) waiting
rc-default (stop) waiting
rc0 (stop) waiting
...
tty5 (start) running, process 4720
tty6 (start) running, process 4727

$ cat /etc/event.d/tty1
# tty1 – getty
#
# This service maintains a getty on tty1 from the point when
# the system is started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6 r

espawn
exec /sbin/getty 38400 tty1

Circule pelos arquivos e compare com o arquivo /etc/inittab para atvar funcionalidades equivalentes.

Abraços

araujo_silva

[4] Comentário enviado por cassimirinho em 22/02/2009 - 19:34h

Não entendi, "circule pelos arquivos e compare..." eu não tenho o /etc/inittab
Seguindo esses dois comando que você listou apareceu e mesma coisa postada aqui.

[5] Comentário enviado por nicolo em 24/02/2009 - 15:12h

Excelente!

[6] Comentário enviado por ramontcruz em 09/03/2009 - 10:12h

valeu demais a pena ter lido!!!
parabens!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts