VMware’s ESXi is a highly regarded product, but there is often confusion about the relationship between ESXi and the Linux kernel.
The most frequently asked question is:
Is the ESXi kernel actually Linux?
Conclusion: It used to be, but not anymore.
- In earlier versions of ESX (note: without the “i”), the kernel was indeed based on the Linux kernel.
- However, after moving to the newer ESXi platform, the dependency on the Linux kernel was removed.
- ESXi now has its own kernel, known as the vmkernel.
In this blog post, we will delve into the architecture of ESXi and its historical connection with the Linux kernel, providing insights into the evolution of ESXi’s core technology.
The Architecture and History of the ESXi Kernel
ESXi is a bare-metal virtualization solution that runs directly on hardware without needing a separate operating system, unlike some other VMware products. It has its own kernel, called vmkernel.
In earlier VMware ESX versions, the Linux kernel was first booted, and it was used to load various specialized virtualization components, including the vmkernel. Back then, the Linux kernel acted as the main virtual machine, initiated by the service console. During normal operation, the vmkernel ran directly on the physical machine, while the Linux-based service console functioned as the first virtual machine.
However, starting from version 4.1, VMware stopped developing ESX and fully transitioned to ESXi. This shift marked the complete removal of the Linux kernel from ESXi. Since then, ESXi has relied entirely on vmkernel for virtualization management, without needing support from the Linux kernel.
The Role of vmkernel
vmkernel is a microkernel that provides three main interfaces: hardware interfaces, guest system interfaces, and the service console (Console OS) interface.
Hardware Interface
vmkernel directly handles CPU and memory, using techniques like Scan Before Execution (SBE) to manage special or privileged CPU instructions. It also utilizes the System Resource Allocation Table (SRAT) to track allocated memory.
Module Access
Access to other hardware, such as network or storage devices, is managed through modules. Some of these modules are derived from Linux kernel modules. To facilitate this, vmkernel includes an additional module called vmklinux, which implements a Linux module interface. According to the README file, “this module contains the Linux emulation layer used by vmkernel.”
ESXi’s Independence from the Linux Kernel
Although earlier versions of VMware ESX relied on the Linux kernel for the service console, this dependency has been eliminated with the shift to ESXi. The vmkernel in ESXi operates independently of the Linux kernel, directly managing hardware resources and handling hardware access through dedicated modules.
While some modules in ESXi may borrow designs from Linux kernel modules, this does not mean that ESXi itself includes or relies on the Linux kernel.
Conclusion
The ESXi kernel is not based on the Linux kernel. VMware’s shift from ESX to ESXi marked a transition to a standalone microkernel, vmkernel, which independently manages hardware and provides efficient virtualization without relying on the Linux kernel. This evolution allows ESXi to serve as a robust and streamlined solution for modern virtualization needs.