4 ms·
Android is far from a typical Linux distribution. In addition to custom kernel features (see https://lwn.net/Articles/514901/ https://lwn.net/Articles/514901/ )
by ttuominen 14y ago
Android is far from a typical Linux distribution. In addition to custom kernel features (see https://lwn.net/Articles/514901/ https://lwn.net/Articles/514901/ ), most of the rest of the system hasn't got anything to do with GNU or GPL and is structured very differently from a typical distribution. O'Reilly's "Embedded Android" is a great source on Android internals.
I'm not saying Android isn't good for Linux. I also do appreciate the ability to read and learn from the source code and modify it.
- gte910h 14y agoEmbedded linux, which is a vast majority of those installs, never DID use typical shells for smaller targets.
- vidarh 14y agoBusybox + Ash is far from typical for a desktop Linux distribution. It is on the other hand exceedingly common for embedded Linux, and has been for well over a decade.
- josteink 14y agoYup. Describes both my router and NAS which I work with all the time.
- ttuominen 14y agoMy sources tell me that Busybox is actually not included in at least vanilla Android. Not in the AOSP tree at least (just checked (v4.1.2)). I'm not sure if OEMs have included it in actual products, but why would they have? I might be wrong. There are separate installers available to get Busybox on a rooted Android device. https://play.google.com/store/apps/details?id=stericson.busybox&hl=en https://play.google.com/store/apps/details?id=stericson.busy... They have a version of the Ash shell, Berkeley licensed, with the original notice by Kenneth Almquist. The Busybox Ash is also derived from the same origin. As others have pointed out, they also have their own libc. Most of these decisions seem to have been made to avoid using the GPL outside of the kernel. And a custom libc seems to entail that patches have been necessary to enable some of the standard GNU based tools they do have. If I understand correctly, mainly because of Bionic, you often can't just take a standard piece of Linux userland software and make it work without modifications or without including the GNU libc. Also because of avoiding the GPL, the hardware driver model is different, with most of the driver logic being in closed source userland code. The filesystem layout is non-POSIX-like, the way the user accounts and processes are handled is non-standard, they have their own dynamic linker, etc. Not to mention that a large part of the system relies on their Dalvik (Java) virtual machine, with a large application framework implemented in C++ and Java through JNI. I'm not familiar with the embedded Linux landscape, so I don't know if this heavy avoidance of the GPL is common there. But I do know Android does not resemble GNU/Linux for these reasons.