在我当前所在的机器上,sudo reboot
只会给我一个热重启。
是sudo reboot -f
一种安全的方法寒冷的重新启动(通过BIOS)?
我通过 MBR 启动,而不是 EFI,并且我使用 upstart(Linux Mint 17.3(基于 Ubuntu 14.04))。
这似乎有点太快了,所以我有点担心它是否会损坏我的文件系统。
答案1
要点reboot -f
是在初始化系统执行的所有关闭步骤失败或预期失败的情况下绕过这些步骤:-)。我强烈建议不要在这种情况之外使用它。
您可以正确地假设以有序方式卸载文件系统就是这样的步骤之一upstart
。
(systemd
将是一个完全不同的蜡球,效果可能会有所不同......这是您应该警惕戳戳的另一个原因reboot -f
。这是一个相当模糊的细节,显然您没有找到任何记录在案它与您观察到的效果之间的联系)。
man 2 reboot
AFAICT,其中提到内核 2.1.122 和旧 i386 架构的评论仍然正确。至少从内核 v4.17 开始,以及适用于 32 位和 64 位的新统一 x86 架构。
内核是热重启还是冷重启由 决定reboot_mode
。还有仅有的reboot=
这是由内核选项设置的,例如reboot=cold
。
鉴于您关心它并且默认值似乎没有记录,天真的第一步是尝试指定它。这看起来像是一个纯粹的启动选项,无法在正在运行的系统上更改。
https://elixir.bootlin.com/linux/v4.17/source/Documentation/admin-guide/kernel-parameters.txt#L3732
https://elixir.bootlin.com/linux/v4.17/source/kernel/reboot.c#L518
https://elixir.bootlin.com/linux/v4.17/source/arch/x86/kernel/reboot.c#L545
如果您查看最后一个链接,一种理论上的可能性是重新启动之一类型在所有其他初始化脚本都停止之后,后备链中的方法不起作用upstart
(反之亦然??)。因此,手动调用reboot -f
使用不同的重新启动类型,并且它尊重的方式有所不同reboot_mode
。 (在您的特定系统上?)。
如果您能够报告 Linux 和 Windows 重启行为之间的差异,内核开发人员可能会感兴趣。不过他们最感兴趣的是 Linux 是否完全无法重新启动:)。我想通过重新编译一些 printk() 和 sleep 调用来确认上述疯狂的猜测,并找出正在使用的实际重新启动类型......
还可以尝试在启动选项中传递不同的重启类型。感觉就像你做出了一个相当间接的猜测……但似乎传递一个特定的重启选项是最好的选择,除非这段复杂的内核代码可以为您的系统提供一些巧妙的修复。
答案2
AFAIKreboot -f
是在旧系统上使用的命令。我不会使用它。
更安全的方法是sudo shutdown -r now
。关闭机器电源的替代方法是sudo shutdown -P now
。在这两种情况下,now
都可以替换为数值来定义开始关闭的时间。
看关闭(8)完整的文档。