With the provisioning services enabled, the next step is to define and
customize a system image that can subsequently be used to provision one or more
{\em compute} nodes. The following subsections highlight this process.

\subsubsection{Build initial BOS image} \label{sec:assemble_bos}

The \OHPC{} build of \Warewulf{} includes specific enhancements enabling support for
\baseOS{}. The following steps illustrate the process to build a minimal, default
image for use with \Warewulf{}. We begin by creating a directory structure on the
{\em master} host that will represent the root filesystem of the compute node. The
default location for this example is in
\texttt{/opt/ohpc/admin/images/\baseos{}}.

\iftoggle{isSLES_ww_pbs_aarch}{\vspace*{-.5cm}}

% begin_ohpc_run
% ohpc_comment_header Create compute image for Warewulf \ref{sec:assemble_bos}
\begin{lstlisting}[language=bash,literate={-}{-}1,keywords={},upquote=true,keepspaces,literate={BOSVER}{\baseos{}}1]
# Define chroot location
[sms](*\#*) export CHROOT=/opt/ohpc/admin/images/BOSVER
# Build initial chroot image
[sms](*\#*) mkdir -p -m 755 $CHROOT                        # create chroot housing dir
[sms](*\#*) mkdir -m 755 $CHROOT/dev                       # create chroot /dev dir
[sms](*\#*) mknod -m 666 $CHROOT/dev/zero c 1 5            # create /dev/zero device
[sms](*\#*) wwmkchroot -v opensuse-15.5 $CHROOT            # create base image
# Enable OpenHPC repo in chroot
[sms](*\#*) cp -p /etc/zypp/repos.d/OpenHPC*.repo $CHROOT/etc/zypp/repos.d
# Import GPG keys for chroot repository usage
[sms](*\#*) zypper -n --root $CHROOT --no-gpg-checks --gpg-auto-import-keys refresh
\end{lstlisting}
% end_ohpc_run
