How to make linux power off when halt is run?

前端 未结 2 1844
南笙
南笙 2021-01-18 21:34

I have successfully used the pm_power_off function pointer to make my custom Linux board call its power management chip over i2c (to turn the power off).

<
2条回答
  •  粉色の甜心
    2021-01-18 22:24

    You should use poweroff command or halt -p. As per man 8 halt, halt command (with no arguments) doesn't guarantee to power off your machine. Reasons are described here:

    halt was used before ACPI (which today will turn off the power for you)*. It would halt the system and then print a message to the effect of "it's ok to power off now". Back then there were physical on/off switches, rather than the combo ACPI controlled power button of modern computers.

    *These days halt is smart enough to automatically call poweroff if ACPI is enabled. In fact, they are functionally equivalent now.

    As you can see from halt tool source code, it issues reboot() system call with cmd = RB_POWER_OFF = LINUX_REBOOT_CMD_POWER_OFF.

    In kernel, that system call is implemented here, and on cmd = LINUX_REBOOT_CMD_POWER_OFF, it calls:
       -> kernel_power_off()
       -> machine_power_off()
       -> pm_power_off()

提交回复
热议问题