Show Table of Contents
F.2.4. O Programa /sbin/init
O programa
/sbin/init (também chamado de init) coordena o resto do processo de inicialização e configura o ambiente para o usuário.
Quando o comando
init inicia, ele torna-se o pai ou avô de todos os processos que iniciaram automaticamente no sistema. Primeiro, ele roda o script /etc/rc.d/rc.sysinit, o qual configura o caminho do ambiente, inicia a swap, verifica os sistemas de arquivos, e executa todos os outros passos necessários para a inicialização do sistema. Por exemplo, a maioria dos sistemas usam um relógio, e por isso o rc.sysinit lê o arquivo de configuração /etc/sysconfig/clock para inicializar o relógio do hardware. Outro exemplo é se houverem processos especiais em portas seriais que precisem ser inicializados, o rc.sysinit executa o arquivo /etc/rc.serial.
O comando
init então processa o trabalho no diretório /etc/event.d o qual descreve como o sistema deve ser configurado em cada SysV init runlevel. Runlevels são um estado, ou modo, definido por serviços listados no diretório SysV /etc/rc.d/rc<x>.d/ onde <x> é o número do runlevel. Para mais informações sobre SysV init runlevels, consulte Seção F.4, “Níveis de Execução SysV Init”.
A seguir, o comando
initconfigura a biblioteca de funções fonte para o sistema, /etc/rc.d/init.d/functions, a qual configura como iniciar, eliminar (kill), e determinar o PID de um programa.
O programa
init inicia todos os processos de segundo plano tentando encontrar no diretório rc apropriado o nível de execução especificado como padrão em /etc/inittab. Os diretórios rc são numerados de forma a corresponder ao nível de execução que eles representam, Por exemplo, /etc/rc.d/rc5.d/ é o diretório para o nível de execução 5.
Ao inicializar em nível de execução 5, o programa
init lê o diretório /etc/rc.d/rc5.d/ para determinar quais processos iniciar e parar.
Veja abaixo um exemplo de listagem do diretório
/etc/rc.d/rc5.d/:
K05innd -> ../init.d/innd K05saslauthd -> ../init.d/saslauthd K10dc_server -> ../init.d/dc_server K10psacct -> ../init.d/psacct K10radiusd -> ../init.d/radiusd K12dc_client -> ../init.d/dc_client K12FreeWnn -> ../init.d/FreeWnn K12mailman -> ../init.d/mailman K12mysqld -> ../init.d/mysqld K15httpd -> ../init.d/httpd K20netdump-server -> ../init.d/netdump-server K20rstatd -> ../init.d/rstatd K20rusersd -> ../init.d/rusersd K20rwhod -> ../init.d/rwhod K24irda -> ../init.d/irda K25squid -> ../init.d/squid K28amd -> ../init.d/amd K30spamassassin -> ../init.d/spamassassin K34dhcrelay -> ../init.d/dhcrelay K34yppasswdd -> ../init.d/yppasswdd K35dhcpd -> ../init.d/dhcpd K35smb -> ../init.d/smb K35vncserver -> ../init.d/vncserver K36lisa -> ../init.d/lisa K45arpwatch -> ../init.d/arpwatch K45named -> ../init.d/named K46radvd -> ../init.d/radvd K50netdump -> ../init.d/netdump K50snmpd -> ../init.d/snmpd K50snmptrapd -> ../init.d/snmptrapd K50tux -> ../init.d/tux K50vsftpd -> ../init.d/vsftpd K54dovecot -> ../init.d/dovecot K61ldap -> ../init.d/ldap K65kadmin -> ../init.d/kadmin K65kprop -> ../init.d/kprop K65krb524 -> ../init.d/krb524 K65krb5kdc -> ../init.d/krb5kdc K70aep1000 -> ../init.d/aep1000 K70bcm5820 -> ../init.d/bcm5820 K74ypserv -> ../init.d/ypserv K74ypxfrd -> ../init.d/ypxfrd K85mdmpd -> ../init.d/mdmpd K89netplugd -> ../init.d/netplugd K99microcode_ctl -> ../init.d/microcode_ctl S04readahead_early -> ../init.d/readahead_early S05kudzu -> ../init.d/kudzu S06cpuspeed -> ../init.d/cpuspeed S08ip6tables -> ../init.d/ip6tables S08iptables -> ../init.d/iptables S09isdn -> ../init.d/isdn S10network -> ../init.d/network S12syslog -> ../init.d/syslog S13irqbalance -> ../init.d/irqbalance S13portmap -> ../init.d/portmap S15mdmonitor -> ../init.d/mdmonitor S15zebra -> ../init.d/zebra S16bgpd -> ../init.d/bgpd S16ospf6d -> ../init.d/ospf6d S16ospfd -> ../init.d/ospfd S16ripd -> ../init.d/ripd S16ripngd -> ../init.d/ripngd S20random -> ../init.d/random S24pcmcia -> ../init.d/pcmcia S25netfs -> ../init.d/netfs S26apmd -> ../init.d/apmd S27ypbind -> ../init.d/ypbind S28autofs -> ../init.d/autofs S40smartd -> ../init.d/smartd S44acpid -> ../init.d/acpid S54hpoj -> ../init.d/hpoj S55cups -> ../init.d/cups S55sshd -> ../init.d/sshd S56rawdevices -> ../init.d/rawdevices S56xinetd -> ../init.d/xinetd S58ntpd -> ../init.d/ntpd S75postgresql -> ../init.d/postgresql S80sendmail -> ../init.d/sendmail S85gpm -> ../init.d/gpm S87iiim -> ../init.d/iiim S90canna -> ../init.d/canna S90crond -> ../init.d/crond S90xfs -> ../init.d/xfs S95atd -> ../init.d/atd S96readahead -> ../init.d/readahead S97messagebus -> ../init.d/messagebus S97rhnsd -> ../init.d/rhnsd S99local -> ../rc.local
De acordo com esta listagem, nenhum dos scripts que na verdade iniciam e param os serviços encontram-se no diretório
/etc/rc.d/rc5.d/. Ao invés disso, todos os arquivos em /etc/rc.d/rc5.d/ são links simbólicos apontando para scripts localizados no diretório /etc/rc.d/init.d/. Links simbólicos são usados em cada um dos diretórios rc, e portanto os níveis de execução podem ser reconfigurados através da criação, modificação, e remoção dos links simbólicos sem afetar os scripts aos quais eles fazem referência.
O nome de cada link simbólico começa com um
K ou um S. Os links K são processos que são eliminados naquele nível de execução, enquanto que aqueles começando com um S são iniciados.
O comando
init primeiro pára todos os links simbólicos K no diretório através do comando /etc/rc.d/init.d/<comando> stop, onde <comando> é o processo a ser eliminado. Ele então inicia todos os links simbólicos S através do comando /etc/rc.d/init.d/<comando> start.
Nota
Após o sistema ter terminado de inicializar, é possível autenticar-se como root e executar estes mesmos scripts para iniciar e parar serviços. Por exemplo, o comando
/etc/rc.d/init.d/httpd stop para o servidor de HTTP Apache.
A numeração dos links simbólicos indica a ordem de inicialização. Este número pode ser usado para alterar a ordem em que serviços são iniciados ou parados. Quanto menor o número, mais cedo a inicialização. Links simbólicos com o mesmo número são iniciados em ordem alfabética.
Nota
Uma das últimas coisas executadas pelo programa
init é o arquivo /etc/rc.d/rc.local. Este arquivo é útil para a personalização do sistema. Consulte a Seção F.3, “Rodando Programas Adicionais Durante a Inicialização” para maiores informações sobre como usar o arquivo rc.local.
Depois do comando
init ter avançado para o diretório rc apropriado ao nível de execução (runlevel), o Upstart divide um processo /sbin/mingettypara cada console virtual (janela do login) alocado ao nível de execução pela definição do trabalho no diretório /etc/event.d. Os Níveis de execução entre 2 e 5 possuem todos os seis consoles virtuais, enquanto o nível 1 (modo de usuário único) possui um, e níveis 0 e 6 não possuem nenhum. O processo /sbin/mingetty abre os caminhos de comunicação para os dispositivos do tty [16], define seus módulos, imprime a janela de login, aceita o nome de usuário e senha do usuário e inicia o processso de login.
No nível de execução 5, o Upstart executa um script chamado
/etc/X11/prefdm. O script prefdm executa o gerenciador de exibição X preferido[17] — gdm, kdm, ou xdm, dependendo do conteúdo do arquivo /etc/sysconfig/desktop.
Uma vez concluído o processo, o sistema opera em nível de execução 5 e exibe uma tela de autenticação.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.