Android using Linux Kernel
As you know Android uses the Linux Kernel since the very beginning. So Android is Linux on your smartphone or not? Is Android Linux Based or not? Let’s find it out…
If you are running Linux on your laptop then you are using Linux distribution which means it is a Linux Kernel and a whole bunch of other tools on top of it including the command line stuff, including compilers, including a desktop, including applications that come bundled with that distribution of Linux. Linux as a kernel is great but it is actually useless without these tools, all these tools are a part of the Gnome toolchain.
Find more about Kernel here
Android is Linux
So, here are a couple of reasons why we could say that Android is Linux.
First of all, it uses the Linux kernel. So when you boot up an android phone, it boots up with a Linux kernel. The same or very similar kernel what you would get on desktops or on servers. So android is basically compatible with Linux on other systems. and to confirm this you can do the following test.
- Take a Raspberry Pi One and write some C code and statically link it. Copy the binary output you get from the Raspberry Pi One.
- Now take the same binary and copy it over to an Android phone and run it via the ADB tools and the same binary will run on the Android phone showing the same output.
So, in that way Linux is certainly not windows, it is not iOS, it is certainly not the kernel you will find in a Mac Os, So Android is Linux.
Android is not Linux
But by the same argument, Android is not Linux because in the above procedure we used static linking. Static linking basically means that when everything that is needed for that program is built inside of the binary itself. Normally most operating system uses dynamic linking which means that the same code does not need to be copied again. So the code to concatenate two strings together does not need to be included in every single binary, in the system there is a library that contains that information. In fact, it contains lots of functions, that a program might need to do with the files.
Basically, when the program runs up it states what libraries it might need and all the functions of these libraries are then available in the program, this is what DLL is in windows.
Basically, if you run a normal program on a Raspberry Pi, and copy over to an Android phone, it wouldn’t run because of all those DLLs are not there in the android phone. In, fact standard Linux distribution uses the GNU C library for its runtime, and on Android Google has its own C library called Bionic, and they both are not binary compatible with each other.
So you can not copy an app from your android smartphone and run on your desktop, But if you use Chromebook which has got ChromeOS which is basically Linux than you can run android applications on it.
The main point is, Android has its own stack, its own functions all that stuff to do with the Java and the Java virtual machine, and how applications work, fragments and intents and all the things that make up android apps have to be built into Linux distributions somehow including ChromeOS or using some emulator to get to work so at that level Linux and Android are two separate operating systems based on the same core technology which is the Linux kernel.
So concluding the above discussion we form an opinion that-
- They both use Linux as they use the Linux Kernel.
- They are not GNU Linux because Android is not GNU Linux.
- You could consider to be a Linux distribution if it means an operating system that is created with Linux at the core and then a whole bunch of stuff built on top, Well that is what Android is, and that anything like redhat, CentOs, or Ubuntu is. But there aims and functional goals are different and at some point, you lose compatibility between the two.
Click here to read: How Linux is a better operating system than Windows?