De alguma forma, tenho uma idéia aproximada de como o espaço do usuário e o sistema init (seja o clássico init sysV / upstart / systemd) funcionam no desligamento do sistema. (Essencialmente, há uma sucessão de ordens de "Pare!", "Por favor, pare agora mesmo", "Processo que preciso matar você para parar" e aguarde ... as coisas estão acontecendo).
De qualquer forma, eu não estou ciente de como o desligamento do sistema funciona no kernel (onde certamente também há muito o que fazer)?
Tentei examinar a documentação do kernel https://www.kernel.org/doc/htmldocs/ e até usei a ferramenta de busca da NSA para me dar uma vantagem inicial em descobrir como funciona.
Também procurei no SE U + L e não encontrei nada (eu o ignorei?)
De qualquer forma, a pergunta, embora potencialmente um pouco desafiadora, mereceria uma resposta nesta rede de perguntas e respostas, pois presumo que mais pessoas estejam interessadas em obter um esboço do que acontece no kernel do Linux no desligamento.
Potencialmente, também há alterações para vincular a algumas explicações mais detalhadas.
Uma resposta pode incluir quais chamadas do sistema e quais sinais kernais são usados?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c parece ser o arquivo usado x86 relacionado à reinicialização (já perto de desligar, não é?)
talvez o trecho encontrado aqui http://lxr.free-electrons.com/source/kernel/reboot.c#L176 possa ser usado para dar uma explicação
176 void kernel_power_off (void) 177 { 178 kernel_shutdown_prepare (SYSTEM_POWER_OFF); 179 if (pm_power_off_prepare) 180 pm_power_off_prepare (); 181 migrate_to_reboot_cpu (); 182 syscore_shutdown (); 183 pr_emerg ("Desligar \ n"); 184 kmsg_dump (KMSG_DUMP_POWEROFF); 185 machine_power_off (); 186} 187 EXPORT_SYMBOL_GPL (kernel_power_off);
shutdown(8)
isto é o obsoleto -n
um que eu penso na velha documentação do UNIX usado para ler " desligar o sistema nos - a unidade central está em chamas " efetivamente um sistema confuso kill-chave que deixaria / poderia deixar bits espalhados pelo chão (ou pelo menos os sistemas de arquivos em um estado corrompido) - imaginamos que isso seria usado para um sistema do tipo quadro principal em que alguém apenas pegasse a mão em um ventilador de refrigeração. S