The Linux® kernel is an extremely complex piece of open-source software that provides instructions needed to drive computer hardware such as the system board, central processing unit (CPU) and optical drives. This piece of software also acts as the manager of the numerous processes and interactions between processes that must take place within an operating system. It is, in other words, the core, foundation or "heart" of all Linux® operating systems.
Although numerous people worldwide, many of whom are programmers, collaborate on kernel development, Linus Benedict Torvalds is the developer of Linux® kernel source and the largest contributor to this valuable piece of free software released under the GNU General Public License (GPL). Despite international collaboration on the Linux® kernel, Torvalds still maintains the kernel and has the final word on what code will appear in official releases. These official releases are sometimes referred to as the "Linus" Linux® kernel or the "vanilla" kernel.
With regard to the role of the Linux® kernel in the various distributions, the software can be compared to a basic food recipe to which different ingredients can be added to create a number of distinct yet similar dishes. For example, pasta comes in various shapes and is covered with various types of sauce, including tomato-based and cheese-based sauces, depending on whether spaghetti, macaroni or some other dish is desired. The base is still the same — pasta. Anyone who has the necessary programming knowledge can obtain the Linux® kernel source, with which he or she can literally further develop his or her own customized operating system from the same base used by many others to develop systems with different features, capabilities and support. This is why the different distributions of Linux® are called "flavors."
Development of distributions, or "distros," almost always includes the use of Richard Stallman's GNU tools, which is why these operating systems should be referred to as GNU/Linux systems. Users of a Linux® distribution hardly ever interact directly with the kernel. They generally indirectly interact with it via programs that run under the management of the Linux® kernel. There are times, however, when intermediate and advanced users need to or want to recompile a kernel to add support for a piece of hardware, improve performance or incorporate options lacking in the compiled kernel on which their distribution is based.
The Linux® kernel source and the compiled kernel come with distributions allowing users complete freedom and control over the handling of their computing needs. The compiled kernel, however, is almost always sufficient. There is more than one type of kernel: modular and single block code. Almost all systems are based on the modular approach, which eliminates the need to recompile the kernel every time that support for hardware needs to be removed or added. Most of the kernel is compiled into modules that can simply be loaded and unloaded as needed, which means that support can be loaded and unloaded as needed.