> On Windows/macOS it just works, on Linux you'll probably break secure boot with it.
The way it works on my Windows laptop is it’ll stay in sleep overnight, then when I open the laptop in the morning it’ll wake up, then hibernate itself, then I have to wait for the computer to turn itself back on. Thankfully this feature can be turned off.
The way it works on mine is that I open it in the morning to find it powered off because it chose to force quit my running applications to apply updates.
That's because MSFT doesn't really do hibernate any more but does "modern sleep" where it functions like a phone with the screen off. It keeps active network connections, downloads patches and keeps checking for notifications and other such nonsense.
BIOS support for proper hibernation has been getting worse too because with MSFT demanding it, there is little reason to continue support.
I've had older laptops that do the sleep->hibernate setup without too much issue but now it is a crap-shoot on if it is even supported in the hardware.
That's because the goal is not to have functional hibernation, but to start up faster. If the goal can be achieved by using less power instead of shutting down the whole machine and restoring it identically and that's easier it's a valid alternative.
You used to be able to edit ACPI tables to reenable S3 sleep but these days they're stripping the functionality from firmware entirely.
For example, HP's enterprise lines have S3 stubs in their firmware. If you enable them, nothing happens, because someone deliberately removed the S3 blobs entirely.
In most cases your kernel will tell you it's "locked down" and refuse to hibernate. In my case - on a cutting edge kernel no less with Fedora - it refused to believe that the default disk encryption setup with Swap on encrypted LVM actually is encrypted and locked me out.
Linux security bros followed Apple and others here and refused to add any ability for us to configure or tell kernel that it's wrong about that and to fscking allow resume.
This stuff just works out of the box on both macOS and even the mess that is Windows.
Setting that up is pure hell on Linux, with poor documentation and security people actively fighting against making this easy.
On Windows/macOS it just works, on Linux you'll probably break secure boot with it.