Wednesday, 12 March 2014

LINUX KERNEL TYPES

Two main types of kernels exist - monolithic kernels and microkernels. Linux is a monolithic kernel and Hurd is a microkernel. 

Microkernels offer the bare essentials to get a system operating. Microkernel systems have small kernelspaces and large userspaces. 

Monolithic kernels, however, contain much more. Monolithic systems have large kernelspaces. For instance, one difference is the placement of device drivers. Monolithic kernels contain drivers (modules) and place them in kernelspace while microkernels lack drivers. In such systems, the device drivers are offered in another way and placed in the userspace. This means microkernel system still have drivers, but they are not part of the kernel. In other words, the drivers exist in another part of the operating system. There is a lot more to the definition and more differences, but these are the main defining characteristics.

Hybrid kernel which lies on the boundary between monolithic kernels and microkernels. This means it has qualities of both, but hybrid kernels cannot be classified as a monolithic kernel or microkernel exclusively.

Userland refers to the user-space applications. For instance, Mastodon Linux (FreeBSD/Linux) uses the Linux kernel, but has FreeBSD applications (userland).

Debian is a system that has many variants. All Debian systems use GNU, but may have different kernels. Most people have at least heard of the GNU/Linux form that has many derivatives (like Ubuntu). Some interesting forms of Debian include GNU/Hurd, GNU/NetBSD, and GNU/kFreeBSD (FreeBSD Kernel). 

NOTE: The Hurd kernel contains the GNU-Mach kernel.

Nextenta OS is an OpenSolaris system (GNU/kOpenSolaris). Once installed, it appears to be GNU/Linux with the GNOME user-interface and typical applications seen on Linux systems. However, Nextenta OS is not Linux.

MkLinux is technically not Linux. This system uses the Mach kernel. Even though the userland is specifically RedHat Linux, this does not make MkLinux a Linux distro. The Mach kernel is an example of a microkernel.

StormOS is another example of an operating system that uses the GNU userland, but is not Linux. StormOS is a GNU/Illumos system.

"Is Android a Linux system?". Yes, Android is Linux, but not GNU/Linux. Android uses the Linux kernel and the Dalvik userland, thus making Android - "Dalvik/Linux". Android also uses a modified Linux kernel. Yes, there are different Linux kernels, but they are all still Linux.

All Linux kernels have come from the Vanilla kernel directly or indirectly. The Vanilla kernel is the Linux kernel that can be downloaded from Kernel.org. The Vanilla kernel is the mainstream, official kernel that is made and managed by Linus Torvalds.

RTLinux is a real-time microkernel from of Vanilla. Yes, not all Linux kernels are monolithic, but most are monolithic.

μClinux not only refers to the distro, but also the specialized kernel for very small, weak microcontrollers.

Firefox-OS is a mobile operating system that uses the Gonk kernel which contains various needed drivers (modules) for mobile devices like phones. Gonk also has enhancements for the system's software.

DS-Linux is the kernel used by Nintendo for the Nintendo-DS consoles. Sony also has a special Linux kernel for their Playstation. The kernel is called "Runix" or "PSXLinux".


Linux-libre is a Linux kernel that completely lacks proprietary code and modules. Basically, it is the Vanilla Kernel with code removed. This is perfect for people that want to avoid all proprietary software. Beware, some device will not work with this kernel.

CoLinux is a specialized kernel that was modified to allow Linux to run with Windows at the same time.

Compute-Node-Linux (CNL) is a kernel for the Cray computers. The INK kernel is used in IBM's Blue Gene Supercomputer.

The L4Linux kernel is designed to run on the L4 microkernel.
L4Android is the kernel that Dalvik/Android used for version 2.2-2.3. This is a combination of Google's changes and code with L4Linux. 

NOTE: These kernels are different not because they were configured or compiled differently. Rather, the source code itself was greatly changed.

1 comment: