To initialize and boot a computer system, various software components interact. Firmware might perform low-
level initialization of the system hardware before passing control to software su
ch as an operating system, boot-
loader, or hypervisor. Bootloaders and hypervisors can, in turn, load and transfer control to operating systems.
Standard, consistent interfaces and conventions facilitate the interactions between these software components. In
this document the term boot program is used to generically refer to a software component that initializes the sys-
tem state and executes another software component referred to as a client program. Examples of a boot programs
include: ﬁrmware, bootloaders, and hypervisors. Examples of a client program include: bootloaders, hypervisors,
operating systems, and special purpose programs. A piece of software may be both a client program and a boot
program (e.g. a hypervisor).
This speciﬁcation, the Devicetree Speciﬁcation (DTSpec), provides a complete boot program to client program
interface deﬁnition, combined with minimum system requirements that facilitate the development of a wide variety