重启参数 RB_HALT_SYSTEM 和 RB_POWER_OFF 有什么区别?

What is the difference between reboot arguments RB_HALT_SYSTEM and RB_POWER_OFF?

reboot() 系统调用的 LINUX_REBOOT_CMD_HALTLINUX_REBOOT_CMD_POWER_OFF 参数之间的真正区别是什么(分别给出的 RB_HALT_SYSTEMRB_POWER_OFF 参数到它的包装函数)?

reboot(2) 手册页有以下描述(强调差异):

RB_HALT_SYSTEM

LINUX_REBOOT_CMD_HALT

(RB_HALT_SYSTEM, 0xcdef0123; since Linux 1.1.76). The message "System halted." is printed, and the system is halted. Control is given to the ROM monitor, if there is one. If not preceded by a sync(2), data will be lost.


LINUX_REBOOT_CMD_POWER_OFF

(RB_POWER_OFF, 0x4321fedc; since Linux 2.1.30). The message "Power down." is printed, the system is stopped, and all power is removed from the system, if possible. If not preceded by a sync(2), data will be lost.

阅读描述,提出几个问题:

  1. haltedstopped 有什么区别?

  2. reboot(RB_HALT_SYSTEM) 呼叫不会切断电源吗 系统?

  3. "System halted." 和 "Power down." 消息会在哪里打印?

  1. 我认为没有区别;这些词是普通英语中的同义词,我认为本文档只是使用它们的英文含义,而不是特定的技术术语。

  2. 正确,这正是文档试图告诉您的内容。

  3. 在控制台上 and/or 内核日志,呃。通常打印内核消息的地方,比如在启动期间。

您可以轻松地自己尝试这些,看看它们的作用; user-space shutdown(8) 命令有 -H(暂停)和 -P / -h(关机)选项,以及 -r。阅读手册页。我假设它最终会进行 reboot(2) 系统调用,或者导致 initsync.

之后进行系统调用

是的,传统的shutdown -h命令是halt + power off,即POWER_OFF。过去,计算机无法自行关闭电源,但现在人们通常认为 non-reboot 关机。特别是在内核无法 "return" 到 BIOS / 固件命令接口的系统上。


在 PC 上,我能想象的少数几个 use-cases 不关机的暂停是在按下重置按钮(或 ctrl+alt+delete)之前插入 USB 驱动器或 CD。但是也许您根本不希望 currently-booted Linux 内核对新硬件做出反应,因此您想先停止 Linux。

可以 关闭电源来执行此操作,但您不需要,也没有必要 start/stop 您的旋转磁盘并对其电机造成额外磨损。