IdleAction=配置系统空闲时要采取的操作。取“忽略”、“断电”、“重新启动”、“停止”、"kexec“、”暂停“、"hibernate”、“混合睡眠”、“暂停-然后-hibernate”和“锁”。默认为“忽略”。
我没有看到kexec值在任何地方被解释过。kexec到底是做什么的?
是否有一个等价的kexec(8)命令行来运行?
在什么情况下,在系统空闲的情况下重新启动到一个新内核是有用的呢?
发布于 2019-02-23 07:04:03
是的,有一个kexec命令行工具,您可以使用它将kexec放入一个新内核中。
从用户的角度来看,使用kexec与使用reboot差不多,只不过由于当前内核加载新内核并开始执行它(绕过BIOS、固件、引导加载程序等),它的速度更快。
logind提供诸如"kexec“(或" reboot ")之类的空闲操作的目的是帮助您的系统始终保持最新,这对于内核升级通常需要重新启动。空闲检测有助于确定何时是重新启动系统的好时机(希望在系统不会造成太大干扰的时候),并且经常重新启动它(假设它足够频繁)将确保它在包管理器安装更新后不久引导到新内核。
当然,这是一个并非所有用户都同意的设置,所以这当然不是该选项的默认设置(默认的设置是“忽略”,它不会做任何事情.)
要确切地了解kexec操作触发的是什么,您可以开始查看systemctl kexec,它与systemctl reboot是并行的。它的文件说:
关闭并通过kexec重新启动系统。这相当于systemctl启动kexec.target --作业模式=替换-不可逆转--无块。
因此,这需要经过一个特殊的kexec.target,它通常被配置为要求 a systemd-kexec.service,然后使用kexec参数对/usr/lib/systemd/systemd-shutdown工具进行呼叫 (通过systemctl --force kexec,结果是.)。
为了更进一步,您需要查看源代码,您将看到systemd-shutdown kexec只是尝试使用kexec -e,如果失败的话,逻辑将回到“正常”重新引导。
查看kexec(8)手册页面,您将看到执行kexec重新引导所需的全部kexec -e,所以这就是系统集成的全部内容。
缺少的另一部分是将引导内核加载到内存中的部分,执行kexec -l以便实际执行的部分。那是另一个兔子洞。我建议给读者一个练习(或者在U&L这里提出一个单独的问题,也许非常合适!)
https://unix.stackexchange.com/questions/502259
复制相似问题