A nanokernel is a small kernel that offers hardware abstraction, but without system services. Larger kernels are designed to offer more features and manage more hardware abstraction. Modern microkernels lack system services as well, hence, the terms microkernal and nanokernal have become analogous.
A kernel in which the total volume of kernel code, that is, the code being executed in the hardware's privileged mode, is quite small.
A virtualization layer beneath an operating system, which is more precisely called a hypervisor.
A hardware abstraction layer (HAL), which forms the lowest level portion of a kernel.
Occasionally, the term nanokernel is used to describe a kernel that supports a nanosecond clock resolution.
The term nanokernel first appeared in the paper "The KeyKOS NanoKernel Architecture." The KeyKOS nanokernel is a capability-based, object-oriented operating system (OS) that has been on the market since 1983. It was implemented to address requirements, such as reliability, security and consistent availability, for applications on the Tymnet hosts. It was intended for running several instances of multiple operating systems on a single hardware system. The KeyKOS nanokernel is roughly 20,000 lines of C code, which includes checkpoint, capability and virtual memory support. It can run within just 100 kilobytes of memory.