The startup of HelenOS happens in several steps.
Depending on the platform these steps can be either
described as \textit{piggybacker loading}:
\begin{enumerate}
\item Platform boot loader loads the piggybacker image
and jumps to its entry point.
\item The piggybacker unwraps the kernel image and
the images of the initial user space tasks, creates
a boot information structure and jumps to the
entry point of the kernel.
\item The kernel initializes and runs the initial tasks
according the boot information structure from the
piggybacker.
\end{enumerate}
If the platform supports a more sophisticated native boot loader,
a \textit{multiboot loading} contains following steps:
\begin{enumerate}
\item Platform boot loader loads the kernel image and initial
user space tasks, creates a boot information structure
and jumps to the entry point of the kernel.
\item The kernel initializes and runs the initial tasks
according the boot information structure from the
boot loader.
\end{enumerate}
A third kind of boot loading occurs on platforms with no support
of boot loader. It is called \textit{image loading} and is
used mostly on simulated architectures.
\begin{enumerate}
\item The kernel and initial user space images are placed
on well-known physical memory locations (usually
by a simulator configuration file). The execution
starts directly on the kernel entry point.
\item The kernel initializes and runs a previously hardwired
number of initial user space tasks.
\end{enumerate}
The following sections describe the particual features of the
boot loading process on the supported platforms.
On both platforms HelenOS depends on a boot loader which
supports the Multiboot Specification (i.e. GRUB). The kernel
image (usually called \texttt{image.bin}) is loaded by the
boot loader just above the 1st megabyte of the physical
memory (the exact location is 1081344 bytes).