But Linux can run on arm just fine? I used to run my website and a bunch of other stuff on an arm64 VPS.
ARM servers use UEFI, and have enumerable buses for hardware detection, while most ARM SoCs require a custom bootloader or a forked open source one, and can't enumerate over hardware, thus requiring something like the DeviceTree in Linux.
Here's an idea of what kind of work ARM SoCs need for Linux to run on them[1].
Edit: and also uboot, which bootstraps the kernel, and hands it a dtb.