The part which sets embedded systems apart from a desktop PC is the lack of a BIOS/UEFI. This interface does a lot for setting up clocks and power regulators, so on, and is why Windows and Linux do not need a custom version for every single motherboard made. Embedded systems must do this setup in software, and thus use custom software setup for the boot stages prior to starting the operating system; every single carrier board or SBC made must have this customized and is not portable across SBCs. Most of the operating system itself is portable among same architecture, but firmware is likely needed to tell the system where to find different parts of the hardware.