In Linux, the kernel correctly resets the drive from all sleepy modes automatically, so it was never a problem. That is, I've never needed to "wake up" a SATA drive.
I'm not sure I understand but precisely what I do not want is the OS waking the drive automatically because it is doing some internal housekeeping.
Ah, I misunderstood. But yes, in Linux, assuming you can spend the effort to learn and control the system, you can control such housekeeping.
Aside from delayed writeback (which itself is configurable, typically on the order of few seconds to half a minute; and can be forced to be done immediately via the
sync command, and monitored via e.g.
/proc/meminfo), the kernel doesn't do any such housekeeping, only running services do.
Indexing services (like the one for the
locate database) and smart daemon (for running drive self tests and scrubbing the drives at low priority at specific intervals to detect data degradation early) are typical services that could trigger an unexpected (non-human-user-caused spinup), but their intervals can be configured, and the services (temporarily or permanently) disabled and re-enabled with a single command.
Of course, all that only if you can spend the time to learn to do all that without too much cognitive load, so it becomes routine. Not all have that sort of time to spend just to enhance their control of their workstation.
I am not sure what kind of housekeeping tasks various Windows versions do, nor which ones are configurable to sufficient degree.