\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{}} \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 initvm create --build-bin --build-source example.xml \end{verbatim} \pause \begin{itemize} \item creates an elbe initvm and builds the target image and cdroms \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{initvm section} \begin{scriptsize} \begin{lstlisting} amd64 ftp.de.debian.org /debian http \end{lstlisting} \pause \begin{lstlisting} http://debian.linutronix.de/elbe-testing wheezy main wheezy \end{lstlisting} \end{scriptsize} \end{frame} \begin{frame}[fragile] \includegraphics[width=\textwidth]{images/elbe-init.png} \end{frame} \begin{frame}[fragile] \includegraphics[width=\textwidth]{images/elbe-buildchroot.png} \end{frame} \begin{frame}[fragile] \frametitle{project section} \begin{scriptsize} \begin{lstlisting} beaglebone-black armhf ftp.de.debian.org /debian http \end{lstlisting} \pause \begin{lstlisting} http://debian.linutronix.de/elbe wheezy main wheezy \end{lstlisting} \end{scriptsize} \end{frame} \begin{frame}[fragile] \frametitle{target section [1/3]} \begin{scriptsize} \begin{lstlisting} bbb foo ttyS0,115200 \end{lstlisting} \pause \begin{lstlisting} sdcard.images 1900MiB \end{lstlisting} \pause \begin{lstlisting} 100MB \end{lstlisting} \pause \begin{lstlisting} remain \end{lstlisting} \end{scriptsize} \end{frame} \begin{frame}[fragile] \frametitle{target section [2/3]} \begin{scriptsize} \begin{lstlisting} /boot vfat \end{lstlisting} \pause \begin{lstlisting} / ext4 -i 0 \end{lstlisting} \end{scriptsize} \end{frame} \begin{frame}[fragile] \frametitle{target section [3/3]} \begin{scriptsize} \begin{lstlisting} /var/cache/apt/archives/*.deb /boot/zImage \end{lstlisting} \pause \begin{lstlisting} linux-image-3.12.4-rt6 openssh-server \end{lstlisting} \pause \begin{lstlisting} QlpoOTFBWSZTWbr9i8ICOcH////// ... \end{lstlisting} \end{scriptsize} \end{frame} \section{result} \begin{frame}[fragile] \frametitle{generated files} \begin{verbatim} $ ls elbe-build-$DATE bin-cdrom.iso elbe-report.txt log.txt licence.txt sdcard.img source.xml src-cdrom.iso 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 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}