O SysVinit funciona assim. Os scripts de inicialização de cada pacote estão localizados em /etc/init.d . Links para esses scripts estão localizados em /etc/rcS.d e / etc / rc [0-6] .d . Esses links começam com S (start) ou K (kill) e um número de 2 dígitos.
-
Quando o sistema inicializa e o processo SysVinit é iniciado, ele procura em /etc/rcS.d e executa os scripts que começam com S , ordenados pelo número . (Acredito que passe o argumento "start" para os scripts, mas não tenho certeza.)
-
Depois que todos os scripts /etc/rcS.d são processados, o sistema começa a se mover para um determinado nível de execução. No Ubuntu, inicializando na área de trabalho normal, o nível de execução padrão é 2 . Então o SysVinit procura em /etc/rc2.d e
- interrompe todos os serviços com links que começam com K , ordenados pelo número; e
- inicia todos os serviços com links que começam com S , ordenados pelo número.
Se você inicializou no modo de recuperação do Ubuntu, estará inicializando no nível de execução 1 . Depois que todos os serviços são iniciados, o nível de execução do sistema é definido oficialmente.
-
Finalmente, o sistema executa o script /etc/rc.local .
Se você alternar os níveis de execução mais tarde, o SysVinit executará o mesmo processo básico: ele não verifica /etc/rcS.d , mas vai direto ao processamento dos links em / etc / rcN .d <(onde N é o nível de execução que está sendo digitado).
Você também pode escrever um script Upstart. Eu tenho escrito sobre o Upstart anteriormente , portanto, verifique lá para mais detalhes. Scripts upstart são mantidos em / etc / init ; para escrevê-los, examine os scripts existentes para ter uma ideia de como funciona e leia as init (5) manpage .