30.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.
The
init command then runs the /etc/inittab script, which describes how the system should be set up in each SysV init runlevel. Runlevels are a state, or mode, defined by the services listed in the SysV /etc/rc.d/rc<x>.d/ directory, where <x> is the number of the runlevel. For more information on SysV init runlevels, refer to Seção 30.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/:
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.
The
init command first stops all of the K symbolic links in the directory by issuing the /etc/rc.d/init.d/<command> stop command, where <command> is the process to be killed. It then starts all of the S symbolic links by issuing /etc/rc.d/init.d/<command> 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
One of the last things the
init program executes is the /etc/rc.d/rc.local file. This file is useful for system customization. Refer to Seção 30.3, “Rodando Programas Adicionais Durante a Inicialização” for more information about using the rc.local file.
After the
init command has progressed through the appropriate rc directory for the runlevel, the /etc/inittab script forks an /sbin/mingetty process for each virtual console (login prompt) allocated to the runlevel. Runlevels 2 through 5 have all six virtual consoles, while runlevel 1 (single user mode) has one, and runlevels 0 and 6 have none. The /sbin/mingetty process opens communication pathways to tty devices[14], sets their modes, prints the login prompt, accepts the user's username and password, and initiates the login process.
Em nível de execução 5, o
/etc/inittab roda um script chamado /etc/X11/prefdm. O script prefdm executa o gerenciador de ambiente gráfico[15] preferido — 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.