Comment Linux is a Kernel. Android is not *GNU*/Linux. (Score 5, Insightful) 233
What ever are you babbling on about? Android is a general purpose OS built on a Linux foundation that can run any code you want to run on it
This is one of the few cases where RMS's rambling about GNU and how distros should be called "GNU/Linux" actually makes sense.
LINUX is only a KERNEL.
As in the stuff that directly talks to your hardware and handles low-level stuff.
Above this kernel, you need a "userland" actual regular programs which are called.
And Android DOES NOT use the same GNU userland as most distributions.
Whereas regular distribution are "GNU/Linux" (i.e.: runs the Linux kernel and a bunch of userland program, lots from the GNU project [for low-level stuff like C library, shell, etc.], but quite a lots of other stuff [KDE, Firefox, LibreOffice.org]) and are fully POSIX compatible and can run almost any general purpose UNIX software out of the box (as long it was compiled for it), Android is Linux kernel + a very special userland made by Google (among which the most well known part is the Dalvik java-like environment. Even the C library is Google's own Bionic instead of the usual glibc, ulibc and other forks).
Out-of-the box, Android doesn't run most Unix software because several parts are missing.
(This is different from other mobile OS: Maemo/Meego/whatever-the-nom-du-jour-is, OpenMoko's SHR, Palm/HP WebOS, etc. all run a normal GNU/Linux stack, although in WebOS case, it uses a non standard gui instead of X.
Even router provide a unix like environment, only using more light-wieght embed-friendly components like Busyboy and ulibc or eglibc and without a graphic interface at all)
Again, the usual user-land, the "GNU/" part of "GNU/Linux" is missing.
(I run Debian in a chroot environment on my Android phone as just one example).
That's what your compensating by running a Debian chroot. You provide the missing userland.
You share the same kernel (Linux), but run a different set of userland programs on it. You provied a C library (I think Debian moved to eglibc ?) a shell, and hundreds of other part that make the userland environment. You provide back the "GNU/" part of "GNU/Linux".
And now, thanks to all the pieces provided by your chroot, you can run any Unix code.
Now, indeed, this is possible because Android uses the Linux kernel as a foundation, and its opensource make it possible to port a Debian userland to Android and run it along the normal system. So in a way you're right.
But I insist, Android is unlike any other GNU/Linux distribution around. (And until recently, it needed some special kernel functions that weren't in stock kernels).
This is unlike other Linux based mobile device, which already are based mostly on these pieces. You don't need to provide them. You can already run most of what you want on Maemo/Meego, OpenMoko, webOS based device (except for the part of webOS lacking X out of the box).
Out of the box, an Android machine is designed to run the default apps packaged with it and to fetch special android-apps from a special app market.
Now, thank to the general openness of the platform, it is possible to repurpose it, but out of the box, this is not your regular Unix-like OS. You need to install a chroot, or at least a lot of userland components.
And that's what the parent was referring to:
- Android stick : runs android, designed to run a few android apps (but you can do more if you want).
- RPi : runs a GNU/Linux disto, designed to pretty much do anything you want out of the box.
but that in no way makes the Android device limited to only certain things.
Android makes the device limited to run only Android apps out-of-the-box, unless you go out of the way and install the missing userland bit to turn it into a full Unix-like box.
But thanks to the open nature of the Linux kernel, this is actually possible. (It's not a locked down device that needs to be hacked)
Android and the classic Unix-like userland (of debian) are completely orthogonal one to another.