Sort of, each platform has it's own boot sequence, which also defines how the user can gain the control over the machine.
For example in x86 world the first code run is from BIOS ROM (hardwired firmware from motherboard vendor), which will then load initial bootloader (sector 0 on storage block-device, so the BIOS firmware must already contain some simplistic/full drivers for all kind of different devices = it's not some kind of trivial couple instructions warming up the PC, but an small OS itself). Then bootloader will handle further loading of remaining code (either extended bootloader code if it doesn't fit into single sector or kernel or whatever user provided).
So if your bootloader is complex enough, it may understand even ELF binary for kernel, and load it from it.
But as long as you track down the very initial code to be run (BIOS firmware on x86 PC), then that one must be flat binary, starting code at some specified address (defined by CPU/board vendor, depending on the state of CPU after RST signal).
Also the OS may be already too late into the process, so it has no guarantee it runs directly on the bare metal, it may land into already some virtualised environment. Usually it's possible to detect it, but with perfect emulation/virtualisation it may be undetectable (then again, achieving something perfect tends to be very elusive in computer world). But that doesn't change anything (*) from the OS point of view, it may still proceed as if it runs on bare metal, it's up to the emulation/virtualisation to catch up and live up to OS expectations.
*) actually it may be very important for security sensitive installations, to detect any tampering over the environment, and handle such situations to mitigate security risks (self destruction or wiping sensitive information).
Update: also with the modern boards supporting UEFI (modern BIOS), TPM (Trusted Platform Module) chip, IME (Intel Management Engine) that initial flat binary can be encrypted, and digitally signed, so the CPU will not execute it unless the decryption and validation of signature are successful.
With IME the situation is even more complicated, it's like computer within computer, so there may be something going on in the background, even when the wrapping x86 machine is not awaken (just on power in stand-by).
If you are just starting to look into OS development, don't worry about this. If you are planning to create some x86 based security/medical device, then maybe pay additional attention to these.