使用reboot命令时如何选择冷重启和热重启?

使用reboot命令时如何选择冷重启和热重启?

维基百科区分了冷重启和热重启

那么在Linux上使用reboot命令时如何选择热重启和冷重启呢?

编辑:维基百科提到了 Linux 上的第三种重启模式。那么这三种模式该如何选择呢?

答案1

在 x86 上,还有更多重启类型,在 Linux 上,您可以使用以下命令在其中进行选择内核reboot命令行参数/sys/kernel/reboot/mode/sys/kernel/reboot/typereboot=cold并将reboot=warm分别选择冷重启和热重启(符合维基百科的定义);其他类型包括 ACPI、EFI 和三重故障。

kexec可以通过运行来调用“重新启动” systemctl kexec

答案2

那么在Linux上使用reboot命令时如何选择热重启和冷重启呢?

不是以你想要的方式。您正在并且打算进行热重启。

请注意,任何描述您的 PC 上发生的情况且涉及 IBM PC 的文章都是目前技术上很可能不准确

在这种情况下,情况就是如此。 IBM PC 上的情况与现在发生的事情关系不大(IBM PC 已经有 42 岁了)。至少从 ATX 出现以来,计算机就一直有持续运行的固件,那是近 30 年前的事了。因此,基本上,忽略其中所涉及的组件所写的内容:

您计算机的固件(与 BIOS 非常不同,BIOS 实际上是一个过时的 API,而不是实现它的软件,并且许多固件甚至不再模拟 BIOS,因此该文章的措辞非常不精确)课程进行一些自检,无论您是从“关闭电源”启动还是通过软件重新启动。

所以,忽略那篇维基百科文章。您可以看到不同类型的方法发起在 x86 上重新启动在Linux源代码中;请注意,该方法并不能真正强制固件执行不同的操作!

当 Linux 被指示重新启动时,PC 上会发生的情况是,所有服务都会停止,文件系统会被卸载,硬件会尽可能地被取消初始化,然后主板的固件会通过 ACPI 被告知它应该进行启动。

然后它做什么完全取决于固件。然而,我还没有看到它与正常启动时的效果有任何区别。通常,它甚至不会跳过耗时的内存检查!

所谓“第三种方法”,kexec确实有所不同。但你通常不能“选择”该方法,除非你真的知道你在做什么——它通常是在多阶段启动过程中完成的。

所发生的情况是将kexec新的内核映像复制到 RAM,设置寄存器和必要的硬件,然后跳转到新内核的入口点 - 这是引导加载程序 (GRUB) 或固件的 UEFI 实现会执行的操作。

相关内容