首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >logind.conf `IdleAction=kexec`到底做了什么?

logind.conf `IdleAction=kexec`到底做了什么?
EN

Unix & Linux用户
提问于 2019-02-22 09:23:14
回答 1查看 2K关注 0票数 4

logind.conf手册页说:

IdleAction=配置系统空闲时要采取的操作。取“忽略”、“断电”、“重新启动”、“停止”、"kexec“、”暂停“、"hibernate”、“混合睡眠”、“暂停-然后-hibernate”和“锁”。默认为“忽略”。

我没有看到kexec值在任何地方被解释过。kexec到底是做什么的?

是否有一个等价的kexec(8)命令行来运行?

在什么情况下,在系统空闲的情况下重新启动到一个新内核是有用的呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 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这里提出一个单独的问题,也许非常合适!)

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/502259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档