When I have some Linux distribution installed on a x64 system, for example I can pretty much unplug my storage drive put it into another x64 machine, install a few HL drivers, like the graphics driver and it will most likely run without any hassle.
When it comes to ARM systems, especially ARM SoCs, like smartphones of any sort, there is a completely different picture. There is a different build of the same OS (for a example a OEM Android distro) for every singly smartphone.
My question is: Why is that?
I understand that unlike PCs with there standardized architecture, there are lots and lots of SoC chips and architectures. But with the device tree in mind I ask myself why there isn't a way to put the device tree, as the hardware description, together with the bootloader on some ROM chip and build the Linux OS independently from any hardware specs, at least within some defined limits.