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
init
configura 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/
:
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/mingetty
para 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.