Linux and Windows both power off my desktop consistently, but FreeBSD 10.2-RELEASE does so only once in a dozen tries or so. The rest of the time it reboots. I've had this problem since the install was fresh. I've used poweroff
and shutdown -p now
. I assume this is some ACPI bug in my BIOS, but there must be some way Linux and Windows are working around it.
Is there anything I can try?
You are not doing anything wrong (probably (in this case)). Hardware powerdown seems to be a perennial problem that doesn't really have a solid solution yet (on FreeBSD (as far as I can tell (are these nested parenthesis annoying? (Lisp warped my mind)))).
Section
"12.5. Shutdown Sequence" of the Handbook says "Note: Power management requires
acpi(4) to be loaded as a module or statically compiled into a custom kernel".
grep -i acpi /usr/src/sys/i386/conf/GENERIC
acpi(4) seems to be compiled into the GENERIC kernel so loading and unloading modules isn't needed. Okay, moving on.
Section
"11.13.2.5. System Powers Up After Suspend or Shutdown" of the Handbook says:
First, try setting [FONT=Times New Roman]hw.acpi.disable_on_poweroff="0"[/FONT] in /boot/loader. This keeps ACPI from disabling various events during the shutdown process. Some systems need this value set to 1 (the default) for the same reason. This usually fixes the problem of a system powering up spontaneously after a suspend or poweroff.
But on my system that knob doesn't seem to exist:
sysctl -a | grep hw.acpi.disable
Code:
hw.acpi.disable_on_reboot: 0
(an issue report needs to be sent to the Handbook maintainers?)
acpi(4) describes the [FONT=Times New Roman]hw.acpi.disable
_on
_reboot[/FONT] variable as:
hw.acpi.disable
_on
_reboot
Disable ACPI during the reboot process. Most systems reboot fine
with ACPI still enabled, but some require exiting to legacy mode
first. Default is 0, leave ACPI enabled.
Maybe you could try:
sudo sysctl hw.acpi.disable_on_reboot=1
sudo halt -p
And see what happens...
Now, to rub a little salt into this wound, OpenBSD solved this problem 15 years ago:
proposed sysctl for i386 halt -p problem