Estou tentando definirsinitcomo init
para linux (em um pc..). Meu objetivo no momento é simplesmente executar um single tty/bash
dele. Nenhuma montagem especial é necessária, pois o kernel já possui um root=/dev/sda2
arquivo cmdline
.
Eu tenho sinit
binário como meu /sbin/init
e não tenho certeza do que fazer a seguir. Eu sei que alguns scripts precisam ser colocados, mas não entendo como sinit
poder executá-los ou associá-los a arquivos bash
.
Responder1
A página de manual incluída sinit.8, bem como o README, são muito explicativos para mim. No entanto, uma introdução rápida para você enquanto analiso a fonte:
- sinit executável principal,
/sbin/init
é iniciado pelo kernel como pid 1 - prepara o ambiente inicial para executar
/bin/rc.init
o script como um processo filho separado - ele é executado
/bin/rc.init
como um processo separado, portanto,/bin/rc.init
contém comandos para inicializar o sistema além desse ponto - ele entra em um loop infinito onde captura qualquer processo zumbificado e lê seus códigos de saída para lugar nenhum
- enquanto estiver em loop infinito, porém pode ser interrompido por sinais. Os sinais que ele define para serem escutados são SIGUSR1 e SIGINT. SIGUSR1 força o init a ser executado
/bin/rc.shutdown
comopoweroff
nome do script, enquanto SIGINT força o init a executar o mesmo script comreboot
nome, para distinguir os modos de operação dentro do script. Observe que esses dois sinais são apenas aqueles que o init escuta, qualquer coisa,IncluindoSIGKILL e SIGSTOP serão ignorados. E somente o superusuário tem permissão para enviar sinais para init. SIGINT é gerado pelo kernel quando você pressiona Ctrl-Alt-Delete, mas somente quando assim é dito (há um syscall especial que o processo init normalmente faz, para permitir o envio de SIGINT no cad)
Então, fora disso, sinitnão fornece:
- scripts de inicialização (você deve escrever os seus próprios ou adaptar os fornecidos pela distribuição)
- formas de controle (como níveis de execução), apenas dois comandos simples
No entanto, sinit é um pequeno e bonito init que funciona. Aposto que é muito bom em sistemas embarcados, bem como em sistemas de desktop simples, sem complicações em ambientes de desktop modernos.