\input{configpres}

\title{The Linux Boot Procedure}
\maketitle

\subsection{Boot Process}

\begin{frame}
\frametitle{Responsibilities of the Bootloader}
Low-Level Initialization:
\pause
\begin{itemize}
\item clocks (CPU, PLLs, peripherals...)
\item memory (DRAM-controller, NAND-controller...)
\item serial interface
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Common Bootloaders}
\begin{itemize}
\item U-Boot
\item Redboot
\item Barebox
\item minimal concept with IPL and boot-kernel
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Boot Procedure}
\begin{itemize}
\item bootloader initializes hardware
\pause
\item bootloader loads the kernel (device tree, initrd)
\pause
\item bootloader jumps to kernel instructions...
\pause
\item ...providing kernel parameters
\pause
\item kernel initializes internal structures and drivers
\pause
\item kernel mounts a root filesystem
\pause
\item kernel starts '/sbin/init'
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Common Problems: 1. Bootloader}
\pause
\begin{itemize}
\item not correctly written to flash
\item incorrect DRAM or NAND timings
\item incorrect load address of the kernel
\item not enough space available for the kernel
\item incorrect IP address (for TFTP booting)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Common Problems: 2. Kernel}
\pause
\begin{itemize}
\item bootloader incorrectly initialized the hardware
\item bootloader provided incorrect parameters
\item incorrect device-tree information
\item root filesystem drivers not in kernel
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Common Problems: 3. Userspace}
\pause
\begin{itemize}
\item missing device nodes in the root filesystem
\item missing drivers (static or kernel modules)
\item missing necessary programs, configuration files, or links in the root filesystem
\item start scripts not capable of handling all situations
\end{itemize}
\end{frame}

\input{tailpres}
