The main problem is well summarized by Greg Kroah-Hartman's blog post. In short, on the driver level the Android fork of the Linux kernel is incompatible with the mainline Linux kernel. Thus, you can't write a single graphic driver that is compatible with both. Since Android is more popular on phones than mainline Linux, everybody just writes graphic drivers for Android, not mainline Linux. (Note: there are very few drivers which had a version for the mainline Linux kernel, eg. the NVidia Tegra, and the OMAP SGX driver, perhaps more?) Basically, nobody but Nokia invested in mainline GNU/Linux on ARM phones... Even the Android userspace is basically incompatible with the userspace of "normal" desktop Linux distributions. (They use a different set of libraries, etc.) "Normal" distributions usually run a GNU system, while Android uses something called bionic. But the most troubling issue is with the graphic drivers. So when you want to run a "normal" distribution (Fedora, Debian, Arch, whatever) on a phone, even if it has an ARM version, you have two choices: either get a mainline Linux driver for your chip (which almost nobody develops), or just use software rendering, resulting in bad user experience. How Jolla does it (and how Ubuntu Touch and Plasma, etc. did it) is through something called libhybris which allows to create a "mix-and-match" system by combining the Android kernel and drivers with the userspace of a "normal" Linux distribution. It is basically a hack that allows us to run a GNU system on top of the Android kernel with hardware grahics acceleration, thus allowing to create a non-Android system from the Android kernel. Needless to say, this hacky approach with libhybris is quite incompatible with the way how a "normal" Linux distribution delivers its kernel. Also, chip vendors usually only support one specific (old) version of the kernel, with closed-source graphics drivers, and it almost never gets updated (or only gets minor fixes and security patches). They have no interest in maintaining a newer kernel for their old chips, so they just don't do it, with few exceptions (OMAP maybe?). Hope this helps!