J'ai en quelque sorte une idée approximative de la façon dont l'espace utilisateur et le système init (que ce soit le sysV / upstart / systemd classique init) fonctionnent à l'arrêt du système. (Essentiellement, il y a une succession d'ordres "Stop!", "S'il vous plaît, arrêtez vraiment maintenant", "Processus dont j'ai besoin pour vous tuer pour arrêter" et attendez ... que les choses se passent).
Je ne sais pas comment fonctionne l'arrêt du système dans le noyau (où il y a sûrement aussi beaucoup de choses à faire)?
J'ai essayé de consulter la documentation du noyau https://www.kernel.org/doc/htmldocs/ et j'ai même utilisé l' outil de recherche de copains de la NSA pour me donner une longueur d'avance sur la façon de savoir comment cela fonctionne.
De plus, j'ai cherché sur SE U + L et je n'ai rien trouvé (l'ai-je oublié?)
Quoi qu'il en soit, la question, bien que potentiellement un peu difficile, mériterait une réponse dans ce réseau de questions / réponses, car je suppose que plus de gens sont intéressés à obtenir un croquis de ce qui se passe dans le noyau Linux à l'arrêt.
Potentiellement, il y a aussi un changement pour établir un lien avec des explications plus détaillées.
Une réponse pourrait peut-être inclure quels appels système et quels signaux kernal sont utilisés?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c semble être le fichier x86 utilisé lié au redémarrage (déjà proche de l'arrêt, hein?)
peut-être que l'extrait trouvé ici http://lxr.free-electrons.com/source/kernel/reboot.c#L176 peut être utilisé pour donner une explication
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 ("Mise hors tension \ n"); 184 kmsg_dump (KMSG_DUMP_POWEROFF); 185 machine_power_off (); 186} 187 EXPORT_SYMBOL_GPL (kernel_power_off);
shutdown(8)
dire celle obsolète -n
qui, je pense, dans la vieille documentation Unix utilisée pour lire " arrêter le système nous-mêmes - l'unité centrale est EN FEU! " laisserait / pourrait laisser des morceaux éparpillés sur le sol (ou au moins les systèmes de fichiers dans un état corrompu) - on imagine que cela serait utilisé pour un système de type cadre principal où quelqu'un vient de prendre la main dans un ventilateur de refroidissement. 🕱