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.088 ]

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

Pipelight Flash vs. Fresh Player vs. Adobe Flash nativo vs. Pepper Flash nativo

Distribuições Linux no Samsung Chromebook ARM (XE303C12)

Tutorial: Macetes do Apt - Utilizando de forma prática as suas funções

Formatação especial no Open Office

Direcionando o mouse pelo teclado no Linux Mint LXDE

  
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