Página manual incluída sinit.8 bem como o README é muito explicativo para mim. No entanto, uma introdução rápida para você enquanto examino a origem:
- principal executável do sinit,
/sbin/init
é iniciado pelo kernel como pid 1 - ele prepara o ambiente inicial para executar o script
/bin/rc.init
como processo filho separado - ele executa
/bin/rc.init
como processo separado, portanto,/bin/rc.init
contém comandos para inicializar o sistema além desse ponto - entra em loop infinito, onde captura qualquer processo zumbificado e lê seus códigos de saída em lugar nenhum
- enquanto em loop infinito, no entanto, pode ser interrompido por sinais. Os sinais que define para serem escutados são SIGUSR1 e SIGINT. SIGUSR1 força o init a executar
/bin/rc.shutdown
comopoweroff
nome do script, enquanto o SIGINT força o init a executar o mesmo script comreboot
name, para distinguir os modos de operação dentro do script. Note que esses dois sinais são apenas aqueles que o init escuta, qualquer coisa, incluindo SIGKILL e SIGSTOP, ele irá ignorar. E somente o superusuário tem permissão para enviar sinais para o init. SIGINT é gerado pelo kernel quando você pressiona Ctrl-Alt-Delete, mas apenas quando é dito (há um syscall especial que o processo init normalmente faz, para habilitar o envio de SIGINT em c-a-d)
Então, fora disso, sinit não fornece :
- scripts de inicialização (você precisa escrever seus próprios ou adaptar os fornecidos por distribuição)
- formas de controle (como runlevels), apenas dois comandos simples
No entanto, sinit é um pequeno e simpático init que funciona. Aposto que é muito bom em sistemas embarcados, bem como em sistemas de desktop simples, sem problemas nos ambientes de área de trabalho modernos.