Every now and then a colleague of mine tries to bump Linux’s user count share by arguing that Android can be considered a Linux distro because it uses the Linux kernel.
Let me sort this misunderstanding of whether Android can be considered a Linux distro out once and for all.
If you haven’t read our article on the difference between Unix and Linux you should start from there. I defined what Unix and Linux are, their history, and how they differ. The crux of the matter is that Linux is the kernel which was developed by Linus Torvalds in 1991 based on the MINIX OS.
Over time, contributors have taken advantage of the fact that Linux (coupled with its GNU component) is open-source and have adjusted it to suit their ideas and implementations; creating a variety of distros with a plethora of unique features.
What is Android?
Android Inc. was founded in October 2003 by Andy Rubin, Rich Miner, Nick Sears, and Chris White in California, USA. The Android project was described as a project with “tremendous potential in developing smarter mobile devices that are more aware of its owner’s location and preferences”.
The open-source Android OS was first developed with the aim of creating an advanced OS for digital cameras until when they figured out that the market for digital cameras wasn’t big enough and they realigned their focus to build an OS for handsets that would compete with Microsoft’s Windows Mobile and Symbian.
Google Inc. bought the company in 2005 and as we know now, the rest is history.
Under the hood, Android uses a modified Linux kernel which provides developers with tons of pre-built and well-maintained features. This, in turn, saves time and allows Android developers to focus on the most important features for mobile devices.
Drawing from the implication of the details in the GNU Manifesto by Richard Stallman, an OS has four elements:
- The kernel
- The HAL (Hardware Abstraction Layer) – where drivers that are not compiled into the kernel ‘reside’.
- The Userspace – where applications ‘reside’.
- The Desktop Environment or UI e.g. GNOME and KDE.
The aspect of Android that is Linux is its Monolithic kernel, which is a modified version of the Linux kernel and comes with its own libraries and APIs. The modifications to the Linux kernel are mainly for the specialized power requirements of portable devices with somewhat small batteries and the specialized libraries and APIs are for interacting with the cellular communications part of a cell-phone as well as to implement a common programming and User Interface for app support so that they don’t have to be specific to a particular manufacturer’s phone model line.
Another relevant detail is that when the Linux operating system was developed in 1991 as an open source operating system for desktop computers by Linus Torvalds, it was developed as the MINIX operating system and did not support 32-bit features with Intel 80386 machines. A significant difference between the two at that time is that Android architecture supported only x86 and ARM which it employs for Mobile Internet Devices (MIDs) and mobile phones.
In Conclusion
Android is not a GNU/Linux distro but its Kernel (its powerhouse) is Linux and since it is the convention that a collection of software put together around the Linux Kernel is referred to as Linux, Android is Linux.
- Android is an open source OS that was first created by Android Inc. and is now owned by Google while Linux is the kernel that was created by Linus Torvalds (and contributed to by many others) under the GNU project.
- Android is developed for mobile phones and Mobile Internet devices while Linux is developed for desktops/laptops/servers.
- Android uses its own C library, Bionic; while Linux distros use GNU C
- Android cannot run any programs that are meant for GNU/Linux distros
- Android implements a modified version of the Linux kernel with specialized libraries and APIs for interacting with cellular networks and providing support for apps that can be used by phone models irrespective of their vendors.
- You can go through the “About” info section in your settings to check the kernel version that your phone is running.
I hope this article has helped you understand the relationship between Android and Linux and why although Android is Linux, it is not a Linux distribution?
Do you have any disagreements, questions, or comments relating to the topic? Share them with us in the comments section below.
How can I sync my AK47 with my pehony?
When you say “coax” near the beginning, I assume mean “crux” (as in, “crux of the matter”).
Hate to break it to ya bud, but Android is technically still Linux. It can’t run certain apps, but it indeed is still Linux from the core outward. Not sure where you got this notion of it no being Linux… is it ’cause it has Google in the mix?
android OS is using embedded Linux kernel and running Android UI on top of Linux kernel. Sure, Android can not run Linux Apps without GDM like Gnome, KDE, etc.
Android may not be a GNU / LINUX Distro but it’s a LINUX distro. Think about the difference.
I simply can not agree with this. Android is no different than other Linux distros. It is commonly accepted that when a collection of software is put together around the Linux kernel, it is called Linux. In some cases, the only thing that is Linux is the kernel itself. In other cases, there are other parts included from kernel.org. Take a look at OpenWRT for example: It has the option of working with other C runtime libs than Glibc. It has no desktop or graphical user interface. It also has its own custom init scrits and init daemon. And OpenWRT is still a Linux distro. This applies to literally dozens of other embedded Linux distros. This article is attempting to compare Android to common desktop Linux distros, and is not taking into account the endless list of embedded distros that are even more highly modified than Android that still identify as being Linux or Linux based. The bottom line is that we call Debian a Linux distro, even though only about 2% of the code is Linux, and the C libs are and many other parts GNU. Using the logic of the author, this should not be called Linux, it should be called GNU. In reality this is not the case, there are concensus rules here, and these rules say that Android is a flavor of Linux because it is based on the Linux kernel API which has not been changed by the people at Android, it has only been added to. As long as the API that is used between the OS and the kernel is the Linux API, we call it Linux. Period.
Completely agree. I have no idea what this guy is on, but he’s obviously new to Linux all together.
Out of a great curiosity, I used the search feature to look for “HAL”, “userspace” and “desktop” in the GNU Manifesto and they are not mentioned. I have no idea where did you get that information from. There’s also no such thing as the operating system elements listed/defined in that document. But even if they were, as a CS graduate you should know that most of the servers don’t need and don’t run desktop environments. So what do they run if not operating systems? If you heard that claim from someone else, “desktop” should’ve definitely rang a bell.
Android it based on a modified Linux kernel, which doesn’t mean it becomes something other than a Linux-based operating system. The Linux kernel is not completely rewritten for Android, but rather stripped of everything irrelevant for the mobile devices, then it has various required changes and additions for the correct functionality on the target platform. The kernels inside top 50 distros are different in various ways, and they are all based on Linux.
And lastly, your title says “Linux”, and your conclusion says “GNU/Linux”. Please do some more research. This article needs a serious rewrite.
Your article is concise but of one point of view. I know when one hears the word Linux they think of an operating system. But in actuality I would say that Linux is a kernel (part of an OS). The kernel is what communicates with the hardware, the next layer the shell is the part where the user sends commands. Now by commands I mean software written to communicate to the hardware via the kernel. Last but not least is the GUI aka the graphic user interface, where a visual interface allows for hopefully a smooth self intuitive experience.
So now with that said any device using a Linux kernel, be it modified, is running Linux. Hence a Linux device https://uploads.disquscdn.com/images/a2081bc3093993841e596d815355b09e6d79342644d5011fad9c72f474937a1c.png
“Android is an open source OS…”
wtf? that dont means it isnt linux.
“Android is developed for mobile phones and Mobile Internet devices while Linux is developed for desktops/laptops/servers.”
linux can be used at phones too (android), just beacuse its modified dont mean isnt linux, otherwise no distro would be considered linux, everyone customize their kernel.
iot cover a lot of stuff and isnt android only.
linux isnt used only on servers, routers, dvd players, digital cameras, iot devices…
“Android cannot run any programs that are meant for Linux.”
that is the main issue, that is what the article should focus on, what is the point of counting android as linux if it cant run linux programs? or linux cant run android programs…
“You can go through the “About” info section in your settings to check the kernel version that your phone is running.”
so what?
I disagree: Android CAN run programs programs meant for Linux. You just need arm (or arm64, respectively) compiled binaries and put them into /system/bin or /system/xbin.
Other distros also use a heavily modified version of the kernel (Raspbian, anyone?).
You can also check the version of the kernel in the “About” section of most desktop environments for Linux distributions.