\subsection{Add RT PREEMPT Linux kernel patch}

\begin{frame}[fragile]
\frametitle{Define an 'rt' override}
\begin{lstlisting}
$ cd ~/poky/meta-schulung
$ pluma conf/machine/vexpress.conf
\end{lstlisting}
\begin{verbatim}
DEFAULTTUNE ?= "armv7athf-neon"
require conf/machine/include/tune-cortexa8.inc
SERIAL_CONSOLE = "115200 ttyAMA0"
PREFERRED_PROVIDER_virtual/kernel = "linux-vanilla"
UBOOT_MACHINE = "vexpress_ca9x4_defconfig"
IMAGE_FSTYPES = "wic"
MACHINEOVERRIDES .= ":rt"
\end{verbatim}
NOTE: this could also be done e.g. in distro/schulung.conf within
DISTROOVERRIDES.
\end{frame}

\begin{frame}[fragile]
\frametitle{Add patch to kernel recipe}
\begin{lstlisting}
$ cd ~/poky/meta-schulung
$ pluma recipes-bsp/linux-vanilla/linux-vanilla-4.19.1.bb
\end{lstlisting}
\begin{verbatim}
SECTION = "kernel"
DESCRIPTION = "Linux vanilla kernel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"

inherit kernel

COMPATIBLE_MACHINE_vexpress = "vexpress"
KERNEL_DEVICETREE_vexpress = "vexpress-v2p-ca9.dtb"
SRC_URI = "file://linux-${PV}.tar.gz file://defconfig"

RTPATH = "pub/linux/kernel/projects/rt"
SRC_URI_rt := "${SRC_URI} \
 https://kernel.org/${RTPATH}/4.19/patch-4.19.1-rt3.patch.gz;name=rt"

SRC_URI[rt.md5sum] = "ce96db835c310c195dd0f0046b2ea993"
SRC_URI[rt.sha256sum] = "649334844cfa427b08dc72debb1d5e672a3dcafc64089770fcdfa06dcc433e31"

S = "${WORKDIR}/linux-${PV}"
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{Enable full preemption}
\begin{lstlisting}
$ cd ~/poky/build-schulung
$ bitbake -c menuconfig linux-vanilla
\end{lstlisting}
select from the menu:
\begin{verbatim}
 | 'General Setup
 |     'Preemption Model'('Fully Preemtpible Kernel (RT)')
\end{verbatim}
Exit and save changes
\begin{lstlisting}
$ bitbake -c diffconfig linux-vanilla
$ mv tmp/work/vexpress-schulung-*/linux-vanilla/*/fragment.cfg \
  ../meta-schulung/recipes-bsp/linux-vanilla/files/rt.cfg
$ cd ~/poky/meta-schulung
$ pluma recipes-bsp/linux-vanilla/linux-vanilla-4.19.1.bb
\end{lstlisting}
\begin{verbatim}
[..]
SRC_URI_rt := "${SRC_URI} \
 https://kernel.org/${RTPATH}/4.19/patch-4.19.1-rt3.patch.gz;name=rt \
 file://rt.cfg \
[..]
"
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{Rebuild image}
\begin{lstlisting}
$ cd ~/poky/build-schulung
$ bitbake core-image-schulung
\end{lstlisting}
\end{frame}
