\subsection{Image customizations} \begin{frame}[fragile] \frametitle{Adding a bootscript} \begin{itemize} \item Add 'systemd' to DISTRO\_FEATURES \item Inherit from systemd.bbclass \item Your package needs to set SYSTEMD\_SERVICE variable; e.g. \begin{verbatim} SYSTEMD_SERVICE_${PN} = "connman.service" \end{verbatim} \item To disable the service, set SYSTEMD\_AUTO\_ENABLE to 'disable' \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{User and group configuration} Use this in an image recipe: \begin{verbatim} inherit extrausers EXTRA_USERS_PARAMS = "\ useradd -p '' tester; \ groupadd developers; \ userdel nobody; \ groupdel -g video; \ groupmod -g 1020 developers; \ usermod -s /bin/sh tester; \ " \end{verbatim} Or the useradd class for creating a user if a package is installed. For an example see useradd-example.bb \end{frame} \begin{frame}[fragile] \frametitle{External sources} E.g. for a heavily customized kernel \begin{itemize} \item Kernel source directory on the development machine \item Inherit externalsrc class \item Set EXTERNALSRC variable to point to your external source code \end{itemize} This local.conf extension: \begin{verbatim} INHERIT += "externalsrc" EXTERNALSRC_pn-myrecipe = "/some/path/to/your/source/tree" \end{verbatim} overrides the SOURCE\_URI of pn-myrecipe.bb \end{frame} \begin{frame}[fragile] \frametitle{Blacklist packages} To blacklist a package, inherit the blacklist.bbclass globally and set PNBLACKLIST for each recipe you wish to blacklist. Specify the PN value as a variable flag (varflag) and provide a reason, which is reported, if the package is requested to be built as the value: \begin{verbatim} INHERIT += "blacklist" PNBLACKLIST[exoticware] = "Not supported by our organization." \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{Override oe-init-buildenv templates} Default templates can be overridden by setting TEMPLATECONF to e.g. meta-foo/conf during ./oe-init-buildenv. Then meta-foo/conf bblayers.conf.sample and local.conf.sample will be used. The default location is specified in \begin{verbatim} % cat .templateconf # Template settings TEMPLATECONF=${TEMPLATECONF:-meta-yocto/conf} \end{verbatim} \end{frame}