\input{configpres}

\begin{frame}[fragile]
	\includegraphics[width=\textwidth]{images/Dresden_Elbe_Terrassenufer.jpg}
\end{frame}

\title{\includegraphics[width=8cm]{images/elbe-logo.png}}
\subtitle{embedded linux build environment}
\author[manut]{Manuel Traut \texttt{<manut@linutronix.de>}}
\institute{Linutronix GmbH}

\maketitle

\begin{frame}[fragile]
\frametitle{overview}
\begin{block}{1) What is \includegraphics[height=0.8em]{images/elbe-logo.png}?}
\end{block}
\pause
\begin{block}{2) SDCARD Image for Beaglebone Black:}
\begin{itemize}
\item bootloader
\item kernel
\item Debian RFS (wheezy/armhf)
\end{itemize}
\end{block}
\pause
\begin{block}{3) Internals}
\begin{itemize}
\item resources
\item elbe architecture
\item SOAP interface
\end{itemize}
\end{block}
\pause
\begin{block}{4) Roadmap}
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{what is \includegraphics[height=0.7em]{images/elbe-logo.png}?}
  \begin{columns}
    \begin{column}{.5\linewidth}
\includegraphics[width=4.5cm]{images/distri.jpg}
    \end{column}
    \begin{column}{.5\linewidth}
      \begin{tabular}{cc}
\begin{lstlisting}
  open-embedded

                 eldk

buildroot

           ptxdist

       yocto
\end{lstlisting}
      \end{tabular}
    \end{column}
  \end{columns}
\pause
\includegraphics[width=2.5cm]{images/elbe-logo.png}
\hspace{2em}uses Debian packages and infrastructure
\end{frame}

\begin{frame}[fragile]
\frametitle{what is \includegraphics[height=0.7em]{images/elbe-logo.png}?}
\begin{block}{highlights}
\begin{itemize}
\item no more cross compiling
\pause
\item security
\pause
\item reproducable target images
\pause
\item sourcecode cdrom
\pause
\item licence informations
\end{itemize}
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{what is \includegraphics[height=0.7em]{images/elbe-logo.png}?}
	\includegraphics[height=\textheight]{images/elbe-io-chart.png}
\end{frame}

\section{prepare environment}
\begin{frame}[fragile]
\frametitle{init}
create a new \includegraphics[height=0.7em]{images/elbe-logo.png} \ virtual-machine:
\begin{verbatim}
$ elbe init example.xml
\end{verbatim}
\pause
\begin{itemize}
\item creates a project directory and Makefile
\item downloads the elbe-bootstrap package
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{initvm section}
\begin{scriptsize}
\begin{lstlisting}
<initvm>
  <buildtype>amd64</buildtype>
  <mirror>
    <primary_host>ftp.de.debian.org</primary_host>
    <primary_path>/debian</primary_path>
    <primary_proto>http</primary_proto>
\end{lstlisting}
\pause
\begin{lstlisting}
    <!-- elbe-buildenv -->
    <url-list> <url> <binary>
      http://debian.linutronix.de/elbe-testing wheezy main
    </binary> </url> </url-list>
  </mirror>
  <suite>wheezy</suite>
</initvm>
\end{lstlisting}
\end{scriptsize}
\end{frame}

\begin{frame}[fragile]
\includegraphics[width=\textwidth]{images/elbe-init.png}
\end{frame}

\section{build project}
\begin{frame}[fragile]
\frametitle{buildchroot}
build a project:
\begin{verbatim}
$ elbe buildchroot \
  -t /opt/elbe/build \
  -o /opt/elbe/build.log \
  example.xml
\end{verbatim}
\pause
\begin{itemize}
\item creates a project directory
\item builds the project
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\includegraphics[width=\textwidth]{images/elbe-buildchroot.png}
\end{frame}

\begin{frame}[fragile]
\frametitle{project section}
\begin{scriptsize}
\begin{lstlisting}
<project>
  <name>beaglebone-black</name>
  <buildtype>armhf</buildtype>
  <mirror>
    <primary_host>ftp.de.debian.org</primary_host>
    <primary_path>/debian</primary_path>
    <primary_proto>http</primary_proto>
\end{lstlisting}
\pause
\begin{lstlisting}
    <!-- kernel -->
    <url-list><url><binary>
      http://debian.linutronix.de/elbe wheezy main
    </binary></url></url-list>
  </mirror>
  <noauth />
  <suite>wheezy</suite>
</project>
\end{lstlisting}
\end{scriptsize}
\end{frame}

\begin{frame}[fragile]
\frametitle{target section [1/3]}
\begin{scriptsize}
\begin{lstlisting}
<target>
  <hostname>bbb</hostname>
  <passwd>foo</passwd>
  <console>ttyS0,115200</console>
\end{lstlisting}
\pause
\begin{lstlisting}
  <images>
    <msdoshd>
      <name>sdcard.images</name>
      <size>1900MiB</size>
\end{lstlisting}
\pause
\begin{lstlisting}
        <partition>
          <size>100MB</size>
          <label>boot</label>
          <bootable />
        </partition>
\end{lstlisting}
\pause
\begin{lstlisting}
        <partition>
          <size>remain</size>
          <label>rfs</label>
        </partition>
    </msdoshd>
  </images>
\end{lstlisting}
\end{scriptsize}
\end{frame}

\begin{frame}[fragile]
\frametitle{target section [2/3]}
\begin{scriptsize}
\begin{lstlisting}
  <fstab>
    <bylabel>
      <label>boot</label>
      <mountpoint>/boot</mountpoint>
      <fs>
        <type>vfat</type>
      </fs>
    </bylabel>
\end{lstlisting}
\pause
\begin{lstlisting}
    <bylabel>
      <label>rfs</label>
      <mountpoint>/</mountpoint>
      <fs>
        <type>ext4</type>
        <tune2fs>-i 0</tune2fs>
      </fs>
    </bylabel>
  </fstab>
\end{lstlisting}
\end{scriptsize}
\end{frame}

\begin{frame}[fragile]
\frametitle{target section [3/3]}
\begin{scriptsize}
\begin{lstlisting}
  <finetuning>
    <rm>/var/cache/apt/archives/*.deb</rm>
    <mv path="/boot/vmlinuz-3.12.4-rt6-*">
      /boot/zImage
    </mv>
  </finetuning>
\end{lstlisting}
\pause
\begin{lstlisting}
  <pkg-list>
    <pkg>linux-image-3.12.4-rt6</pkg>
    <pkg>openssh-server</pkg>
  </pkg-list>
</target>
\end{lstlisting}
\pause
\begin{lstlisting}
<!-- /boot/[MLO, uboot.images] -->
<archive>
QlpoOTFBWSZTWbr9i8ICOcH//////
...
</archive>
\end{lstlisting}
\end{scriptsize}
\end{frame}

\section{result}
\begin{frame}[fragile]
\frametitle{generated files}
\begin{verbatim}
$ ls
buildenv.images         licence.txt
elbe-report.txt      sdcard.images
install.iso          source.xml
Makefile             validation.txt
\end{verbatim}
\end{frame}

\section{minimal target systems}
\begin{frame}
\includegraphics[height=\textheight]{images/tux-fullblown-beer.jpg}
\end{frame}

\begin{frame}
\frametitle{modes}

are used to strip target-images

\pause
\begin{description}
\item[setsel]
\begin{itemize}
\item automatic dependency resolution

(can be overridden)
\item files from postinst-scripts are on the target
\item dpkg and perl needs to be on the target
\end{itemize}

\pause
\item[diet]
\begin{itemize}
\item reverse dependency resolution
\item postinst-scripts are executed (but may fail)
\end{itemize}

\pause
\item[tighten]
\begin{itemize}
\item no dependency resolution
\item files from postinst-scripts are not on the target
\end{itemize}
\end{description}
\end{frame}

\begin{frame}
\includegraphics[width=\textwidth]{images/slimtux.jpg}
\end{frame}

\begin{frame}
\includegraphics[width=\textheight]{images/tux-keys.png}
\end{frame}

\begin{frame}[fragile]
\frametitle{using the native ADK}
\begin{itemize}
\item start the virtual-machine:
\begin{lstlisting}
$ make run
\end{lstlisting}
\pause
\item enter the native ADK:
\begin{lstlisting}
$ elbe chroot /opt/elbe/build
\end{lstlisting}
\pause
\item build your application like on a native Debian machine
\pause
\item package own application as debian package (dh\_make)
\pause
\item host debian application in own repository (reprepro)
\pause
\item add own packages to XML description, rerun buildchroot
\end{itemize}
\end{frame}

\begin{frame}
\center
	\includegraphics[width=5cm]{images/happytux.jpg}
\endcenter
\end{frame}

\begin{frame}[fragile]
\frametitle{resources}
\begin{description}
	\item[website] http://elbe-rfs.org/
\pause
	\item[mailing-list] https://linutronix.de/mailman/listinfo/elbe-devel
\pause
	\item[github] https://github.com/linutronix/elbe
\end{description}
\pause
\begin{verbatim}
git clone https://github.com/Linutronix/elbe.git
git checkout -b devel/elbe-1.0 -t devel/elbe-1.0
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{install}
\begin{verbatim}
# on a Debian based system
$ echo 'deb http://debian.linutronix.de/elbe-testing \
         wheezy main' >> /etc/apt/sources.list
$ aptitude install elbe
\end{verbatim}
\end{frame}


\section{Internals}

\begin{frame}
\center
	\includegraphics[width=10cm]{images/tux-chamber.jpg}
\endcenter
\end{frame}

\begin{frame}[fragile]
\frametitle{Packaging}
\begin{description}
\item[elbe-doc] man-pages, overview, XSD documentation
\pause
\item[elbe-common] shared python modules, XML schema
\pause
\item[elbe] needed on host PC (init, chg\_archive, \dots)
\pause
\item[elbe-buildenv] for virtual machine (buildchroot, db, chroot, \dots)
\pause
\item[elbe-updated] for embedded target to apply update packages
\pause
\item[elbe-daemon] for virtual machine (wsgi server)
\pause
\item[elbe-soap] for virtual machine
	
	implements SOAP interface
\pause
\item[elbe-control] for host PC
	
	controls SOAP interface
\end{description}
\end{frame}

\section{architecture}
\begin{frame}[fragile]
\frametitle{architecture}
\begin{block}{technologies}
\begin{itemize}
	\item python
\pause
	\item qemu-user
\pause
	\item python-apt
\pause
	\item python-mako
\pause
	\item python-parted
\pause
	\item sqlalchemy
\end{itemize}
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{architecture}
	\includegraphics[width=\textwidth]{images/workflow.png}
\end{frame}

\begin{frame}[fragile]
	\includegraphics[width=\textwidth]{images/uml-elbepack.png}
\end{frame}


\section{SOAP interface / automated testing}
\begin{frame}[fragile]
\frametitle{SOAP interface / automated testing}
\includegraphics[width=\textwidth]{images/tux-testing.jpg}
\end{frame}

\begin{frame}[fragile]
\includegraphics[height=\textheight]{images/testing1.png}
\end{frame}

\begin{frame}[fragile]
\includegraphics[height=\textheight]{images/testing2.png}
\end{frame}

\section{Roadmap}
\begin{frame}[fragile]
\frametitle{open issues for 1.0 release}
\begin{itemize}
	\item modify commands to use the project manager
	\pause
	\item status reporting
	\pause
	\item (automated) testing
	\pause
	\item CDROM generation
	\pause
	\item documentation
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Debian integration}
\begin{itemize}
	\item with help from Wolfgang Borgert - debacle@debian.org
	\item http://anonscm.debian.org/gitweb/?p=collab-maint/elbe.git
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{ideas?}
\begin{itemize}
	\item packaging templates for kernel and bootloader
	\pause
	\item improve ADK usage / eclipse plugin?
	\pause
	\item ??
\end{itemize}
\end{frame}

\include{tailpres}
