Uso no mundo real do init "sinit" do sugarless

Uso no mundo real do init "sinit" do sugarless

Estou tentando definirsinitcomo initpara linux (em um pc..). Meu objetivo no momento é simplesmente executar um single tty/bashdele. Nenhuma montagem especial é necessária, pois o kernel já possui um root=/dev/sda2arquivo cmdline.

Eu tenho sinitbinário como meu /sbin/inite não tenho certeza do que fazer a seguir. Eu sei que alguns scripts precisam ser colocados, mas não entendo como sinitpoder 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.inito script como um processo filho separado
  • ele é executado /bin/rc.initcomo um processo separado, portanto, /bin/rc.initconté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.shutdowncomo poweroffnome do script, enquanto SIGINT força o init a executar o mesmo script com rebootnome, 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.

Responder2

Acontece que o kernel do LinuxanalisaoShebangpor si próprio.

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

informação relacionada