O uso do mundo real do init “sinit” de suckless [closed]

2

Estou tentando definir sinit como init para o linux (em um pc ..). Meu objetivo no momento é simplesmente executar um único tty/bash dele. Nenhuma montagem especial é necessária, pois o kernel já recebe um root=/dev/sda2 para um 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 o sinit deve executá-los ou associá-los a bash .

    
por user156556 15.02.2016 / 08:16

2 respostas

4

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 como poweroff nome do script, enquanto o SIGINT força o init a executar o mesmo script com reboot 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.

    
por 15.02.2016 / 08:51
2

Acontece, o kernel do Linux analisa o Shebang por si só.

Portanto, qualquer script "Shebanged" (com caminho completo para binários) pode ser usado para sinit .

    
por 15.02.2016 / 10:39