У меня есть какое-то приблизительное представление о том, как пользовательское пространство и init-система (будь то классическая init sysV / upstart / systemd) работают при выключении системы. (По сути, есть последовательность заказов: «Стоп!», «Пожалуйста, остановите сейчас действительно», «Процесс, который мне нужен, чтобы убить вас, чтобы остановить» и ожидание ... что-то происходит).
В любом случае, я не очень понимаю, как происходит отключение системы в ядре (где, конечно же, есть много чего сделать)?
Я попытался заглянуть в документацию ядра https://www.kernel.org/doc/htmldocs/ и даже использовал инструмент поиска АНБ, чтобы дать мне понять, как он работает.
Также я искал на SE U + L и ничего не нашел (я это пропустил?)
В любом случае, этот вопрос, хотя и может быть немного сложным, заслуживает ответа в этой сети вопросов и ответов, так как я предполагаю, что все больше людей заинтересованы в получении эскиза того, что происходит в ядре Linux при завершении работы.
Потенциально есть также изменение, чтобы ссылаться на некоторые более подробные объяснения.
Возможно, ответ будет включать какие системные вызовы и какие сигналы ядра используются?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c, похоже, используется x86-файл, связанный с перезагрузкой (уже близко к завершению работы, а?)
может быть, фрагмент, найденный здесь http://lxr.free-electrons.com/source/kernel/reboot.c#L176, можно использовать для объяснения
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 («Выключить \ n»);
184 kmsg_dump (KMSG_DUMP_POWEROFF);
185 machine_power_off ();
186}
187 EXPORT_SYMBOL_GPL (kernel_power_off);
shutdown(8) то есть устаревшая, -n которую я думаю в старой документации Unix, используемой для чтения « выключите систему самостоятельно - основной блок включен на пожаре! », Фактически запутанный переключатель блокировки системы, который оставил бы / мог бы разбросать биты по полу (или, по крайней мере, файловые системы в поврежденном состоянии) - можно представить, что это будет использоваться для системы типа основной рамы, где кто-то только что схватил их за руку в охлаждающий вентилятор. Ly