У меня есть какое-то приблизительное представление о том, как пользовательское пространство и 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