diff options
| author | Manuel Traut <manut@linutronix.de> | 2015-07-01 16:12:36 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@linutronix.de> | 2015-07-01 16:12:36 +0200 |
| commit | 1d13e674d7be4bf9aa69139deac6737bf60af17b (patch) | |
| tree | 5cacf42d37efa861d2487efa4585e4eb3b99d7ae /distribution/elbe-adk | |
| parent | 6723cb895ae583ed95724a5d3d7acab756340263 (diff) | |
rework elbe training stuff to match current elbe
also delete presentations that are completely outdated
and rename presentations to better identify their content
Signed-off-by: Manuel Traut <manut@linutronix.de>
Diffstat (limited to 'distribution/elbe-adk')
| -rw-r--r-- | distribution/elbe-adk/Kconfig | 5 | ||||
| -rw-r--r-- | distribution/elbe-adk/Makefile | 1 | ||||
| -rw-r--r-- | distribution/elbe-adk/mini.xml | 27 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/AUTHORS | 0 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/ChangeLog | 0 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/Makefile.am | 5 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/NEWS | 0 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/README | 0 | ||||
| -rwxr-xr-x | distribution/elbe-adk/myapp/autogen.sh | 2 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/configure.ac | 23 | ||||
| -rw-r--r-- | distribution/elbe-adk/myapp/myapp.c | 12 | ||||
| -rw-r--r-- | distribution/elbe-adk/myrepo/conf/distributions | 12 | ||||
| -rw-r--r-- | distribution/elbe-adk/myrepo/conf/updates | 6 | ||||
| -rw-r--r-- | distribution/elbe-adk/pres_elbe-adk_en.tex | 540 |
14 files changed, 633 insertions, 0 deletions
diff --git a/distribution/elbe-adk/Kconfig b/distribution/elbe-adk/Kconfig new file mode 100644 index 0000000..e44a76b --- /dev/null +++ b/distribution/elbe-adk/Kconfig @@ -0,0 +1,5 @@ +config ELBE_ADK + bool "ELBE ADK" + default y + help + Example how to use the elbe adk diff --git a/distribution/elbe-adk/Makefile b/distribution/elbe-adk/Makefile new file mode 100644 index 0000000..f768656 --- /dev/null +++ b/distribution/elbe-adk/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_ELBE_ADK) += pres_elbe-adk_en.pdf diff --git a/distribution/elbe-adk/mini.xml b/distribution/elbe-adk/mini.xml new file mode 100644 index 0000000..956ffc9 --- /dev/null +++ b/distribution/elbe-adk/mini.xml @@ -0,0 +1,27 @@ +<ns0:RootFileSystem xmlns:ns0="https://www.linutronix.de/projects/Elbe" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" created="2009-05-20T08:50:56" revision="6" xsi:schemaLocation="https://www.linutronix.de/projects/Elbe dbsfed.xsd"> + <project> + <name>mini xml</name> + <version>1</version> + <description> + optimal to use as buildenv + </description> + <buildtype>armhf</buildtype> + <mirror> + <primary_host>ftp.debian.org</primary_host> + <primary_path>/debian</primary_path> + <primary_proto>http</primary_proto> + </mirror> + <suite>wheezy</suite> + </project> + <target> + <hostname>mini</hostname> + <domain>linutronix</domain> + <passwd>foo</passwd> + <finetuning> + </finetuning> + <pkg-list> + <pkg>bash</pkg> + </pkg-list> + </target> +</ns0:RootFileSystem> diff --git a/distribution/elbe-adk/myapp/AUTHORS b/distribution/elbe-adk/myapp/AUTHORS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/distribution/elbe-adk/myapp/AUTHORS diff --git a/distribution/elbe-adk/myapp/ChangeLog b/distribution/elbe-adk/myapp/ChangeLog new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/distribution/elbe-adk/myapp/ChangeLog diff --git a/distribution/elbe-adk/myapp/Makefile.am b/distribution/elbe-adk/myapp/Makefile.am new file mode 100644 index 0000000..73ff4e8 --- /dev/null +++ b/distribution/elbe-adk/myapp/Makefile.am @@ -0,0 +1,5 @@ +bin_PROGRAMS = myapp +myapp_SOURCES = myapp.c + +EXTRA_DIST = debian/changelog debian/compat debian/control debian/rules \ + debian/source/format diff --git a/distribution/elbe-adk/myapp/NEWS b/distribution/elbe-adk/myapp/NEWS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/distribution/elbe-adk/myapp/NEWS diff --git a/distribution/elbe-adk/myapp/README b/distribution/elbe-adk/myapp/README new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/distribution/elbe-adk/myapp/README diff --git a/distribution/elbe-adk/myapp/autogen.sh b/distribution/elbe-adk/myapp/autogen.sh new file mode 100755 index 0000000..9088512 --- /dev/null +++ b/distribution/elbe-adk/myapp/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/bash +autoreconf -sif diff --git a/distribution/elbe-adk/myapp/configure.ac b/distribution/elbe-adk/myapp/configure.ac new file mode 100644 index 0000000..109e8ea --- /dev/null +++ b/distribution/elbe-adk/myapp/configure.ac @@ -0,0 +1,23 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.69]) +AC_INIT([myapp], [1.0], [manut@linutronix.de]) +AM_INIT_AUTOMAKE([-Wall -Werror]) +AC_CONFIG_SRCDIR([myapp.c]) +AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CC + +# Checks for libraries. + +# Checks for header files. + +# Checks for typedefs, structures, and compiler characteristics. + +# Checks for library functions. + +AC_CONFIG_FILES([Makefile]) + +AC_OUTPUT diff --git a/distribution/elbe-adk/myapp/myapp.c b/distribution/elbe-adk/myapp/myapp.c new file mode 100644 index 0000000..4e39438 --- /dev/null +++ b/distribution/elbe-adk/myapp/myapp.c @@ -0,0 +1,12 @@ +#include <stdio.h> +#include <time.h> + +int main (int argc, char **argv) +{ + while (1) { + printf ("Hello ELBE\n"); + sleep (1); + } + + return 0; +} diff --git a/distribution/elbe-adk/myrepo/conf/distributions b/distribution/elbe-adk/myrepo/conf/distributions new file mode 100644 index 0000000..9cd8d3b --- /dev/null +++ b/distribution/elbe-adk/myrepo/conf/distributions @@ -0,0 +1,12 @@ +Origin: myrepo +Label: myrepo +Suite: stable +Codename: wheezy +Update: - myremoterepo +Version: +Architectures: i386 amd64 armel source +Components: main +Description: my debian packages +DebIndices: Packages Release . .gz .bz2 +UDebIndices: Packages . .gz .bz2 +DscIndices: Sources Release .gz .bz2 diff --git a/distribution/elbe-adk/myrepo/conf/updates b/distribution/elbe-adk/myrepo/conf/updates new file mode 100644 index 0000000..e8df2b1 --- /dev/null +++ b/distribution/elbe-adk/myrepo/conf/updates @@ -0,0 +1,6 @@ +Name: myremoterepo +Method: http://localhost/myrepo +Components: main +Architectures: i386 amd64 source +VerifyRelease: blindtrust +IgnoreRelease: yes diff --git a/distribution/elbe-adk/pres_elbe-adk_en.tex b/distribution/elbe-adk/pres_elbe-adk_en.tex new file mode 100644 index 0000000..4e9fc1a --- /dev/null +++ b/distribution/elbe-adk/pres_elbe-adk_en.tex @@ -0,0 +1,540 @@ +\input{configpres} + +\title{ELBE ADK example} +\maketitle + +\subsection{What will be done?} + +\begin{frame} +\frametitle{Goal} +\begin{itemize} +\item generate an ELBE buildenv +\item generate a software component and manage it with debian tools +\item build own software component inside the ELBE buildenv +\item include own application in target RFS +\item define a stripped target RFS +\item setup a local debian mirror +\end{itemize} +\end{frame} + +\subsection{generate a buildenv} + +\begin{frame}[fragile] +\frametitle{use elbe-init.xml} +\begin{lstlisting} +$ cp /usr/share/doc/elbe-doc/examples/elbe-init.xml . +$ elbe init --directory=./initvm elbe-init.xml +$ cd initvm +$ make +$ make run-con +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{mini.xml} + \begin{lstlisting} + <project> + <name>mini xml</name> + <version>1</version> + <description> + optimal to use as buildenv + </description> + <buildtype>armhf</buildtype> + <mirror> + <primary_host>ftp.debian.org</primary_host> + <primary_path>/debian</primary_path> + <primary_proto>http</primary_proto> + </mirror> + <suite>wheezy</suite> + </project> + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{mini.xml} + \begin{lstlisting} + <target> + <hostname>mini</hostname> + <domain>linutronix</domain> + <passwd>foo</passwd> + <finetuning> + </finetuning> + <pkg-list> + <pkg>bash</pkg> + </pkg-list> + </target> + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{build mini.xml} +\begin{lstlisting} +$ elbe control create_project mini.xml +$ elbe control list_projects +$ elbe build /var/cache/elbe/... +\end{lstlisting} +\end{frame} + +\subsection{build an own application} + +\begin{frame}[fragile] +\frametitle{myapp.c} +\begin{lstlisting} +$ mkdir myapp +$ cd myapp +$ $EDITOR myapp.c +\end{lstlisting} +\begin{lstlisting} +#include <stdio.h> +#include <time.h> + +int main (int argc, char **argv) +{ + while (1) { + printf ("Hello ELBE\n"); + sleep (1); + } + + return 0; +} +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{use autotools} +\begin{lstlisting} +$ $EDITOR Makefile.am +\end{lstlisting} +\begin{lstlisting} +bin_PROGRAMS = myapp +myapp_SOURCES = myapp.c +\end{lstlisting} +\begin{lstlisting} +$ autoscan +$ mv configure.scan configure.ac +$ rm autoscan.log +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle {use autotools} +\begin{lstlisting} +$ $EDITOR configure.ac +\end{lstlisting} +\begin{verbatim} +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.69]) +AC_INIT([myapp], [1.0], [manut@linutronix.de]) +AM_INIT_AUTOMAKE([-Wall -Werror]) +AC_CONFIG_SRCDIR([myapp.c]) +AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CC + +# Checks for libraries. + +# Checks for header files. + +# Checks for typedefs, structures, and compiler characteristics. + +# Checks for library functions. + +AC_CONFIG_FILES([Makefile]) + +AC_OUTPUT +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{use autotools} +\begin{lstlisting} +$ touch NEWS README AUTHORS ChangeLog +$ $EDITOR autogen.sh +\end{lstlisting} +\begin{lstlisting} +#!/bin/bash +automake --add-missing +autoreconf -sif +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{use autotools} +\begin{lstlisting} +$ chmod +x autogen.sh +$ ls -lh +insgesamt 12K +-rw-r--r-- 1 local local 0 Jan 7 09:45 AUTHORS +-rwxr-xr-x 1 local local 28 Jan 7 09:24 autogen.sh +-rw-r--r-- 1 local local 0 Jan 7 09:45 ChangeLog +-rw-r--r-- 1 local local 496 Jan 7 09:20 configure.ac +-rw-r--r-- 1 local local 35 Jan 7 09:35 Makefile.am +-rw-r--r-- 1 local local 143 Jan 7 09:18 myapp.c +-rw-r--r-- 1 local local 0 Jan 7 09:45 NEWS +-rw-r--r-- 1 local local 0 Jan 7 09:45 README +# these files may be added to your vcs +$ ./autogen.sh +$ ./configure +$ make +$ ./myapp +Hello ELBE +Hello ELBE +^C +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{debianize myapp} +\begin{lstlisting} +$ dh_make -n -p myapp_1.0 -e manut@linutronix.de +$ cd debian +$ rm *.ex *.EX docs README* copyright +$ $EDITOR changelog +\end{lstlisting} +\begin{lstlisting} +myapp (1.0) stable; urgency=low + + * Initial Release. + + -- Manuel Traut <manut@linutronix.de> Tue, 07 Jan 2014 10:20:20 +0100 +\end{lstlisting} +\begin{lstlisting} +$ ls -lh +insgesamt 16K +-rw-r--r-- 1 local local 122 Jan 7 10:20 changelog +-rw-r--r-- 1 local local 2 Jan 7 10:20 compat +-rw-r--r-- 1 local local 517 Jan 7 10:20 control +-rwxr-xr-x 1 local local 135 Jan 7 10:20 rules +drwxr-xr-x 2 local local 19 Jan 7 10:20 source +# these files may be added to your vcs +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{debianize myapp} +\begin{lstlisting} +$ cd .. +$ $EDITOR Makefile.am +\end{lstlisting} +\begin{lstlisting} +bin_PROGRAMS = myapp +myapp_SOURCES = myapp.c + +EXTRA_DIST = debian/changelog debian/compat debian/control debian/rules \ + debian/source/format +\end{lstlisting} +\begin{lstlisting} +$ dpkg-buildpackage +$ ls .. +myapp myapp_1.0_i386.deb +myapp_1.0.dsc myapp_1.0.tar.gz +myapp_1.0_i386.changes +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{host myapp source in a debian repository} +\begin{lstlisting} +$ cd .. +$ mkdir -p myrepo/conf +$ cd myrepo +$ $EDITOR conf/distributions +\end{lstlisting} +\begin{verbatim} +Origin: myrepo +Label: myrepo +Suite: stable +Codename: wheezy +Update: - myremoterepo +Version: +Architectures: armhf source +Components: main +Description: my debian packages +\end{verbatim} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{host myapp source in a debian repository} +\begin{lstlisting} +$ reprepro includedsc wheezy ../myapp_1.0.dsc +$ sudo mkdir /var/www/ +$ sudo rsync -av --exclude=db --exclude=conf * \ +/var/www/myrepo/ +\end{lstlisting} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{build debian package inside the buildenv} +\begin{lstlisting} +# login to elbe-initvm +$ elbe initvm attach (login: root, password: root) +\end{lstlisting} +change into buildenv and configure apt to use myrepo +\begin{lstlisting} +$ elbe chroot /var/cache/elbe/... +$ echo 'deb-src http://10.0.2.2/myrepo wheezy main' >> /etc/apt/sources.list +$ apt-get update +\end{lstlisting} +retrive myapp source package and build armhf binary package +\begin{lstlisting} +$ apt-get source myapp +$ cd myapp-1.0 +$ ./autogen.sh +$ dpkg-buildpackage -b +\end{lstlisting} +copy the package to the host PC and install it into the buildenv +\begin{lstlisting} +$ scp ../myapp*.changes ../myapp*.deb 10.0.2.2:/tmp +$ dpkg -i ../myapp*.deb +$ myapp +\end{lstlisting} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{add myapp armhf package to the repo} +\begin{lstlisting} +$ cd ../myrepo +$ reprepro include wheezy /tmp/myapp_1.0_armhf.changes +$ sudo rsync -av --exclude=db --exclude=conf * \ +/var/www/myrepo/ +\end{lstlisting} +\end{frame} + + +\subsection{include app in target RFS} + +\begin{frame}[fragile] +\frametitle{add repo including myapp} +\begin{lstlisting} +$ cd .. +$ $EDIT mini.xml +\end{lstlisting} +\begin{verbatim} +... + <mirror> + <primary_host>ftp.debian.org</primary_host> + <primary_path>/debian</primary_path> + <primary_proto>http</primary_proto> + <url-list> + <url> + <binary>http://LOCALMACHINE/myrepo wheezy main</binary> + <source>http://LOCALMACHINE/myrepo wheezy main</source> + </url> + </url-list> + </mirror> + <noauth/> +... +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{add myapp} +\begin{verbatim} +... + <target> + <hostname>mini</hostname> + <domain>linutronix</domain> + <passwd>foo</passwd> + <finetuning> + <rm>var/cache/apt/archives/*.deb</rm> + </finetuning> + <pkg-list> + <pkg>bash</pkg> + <pkg>myapp</pkg> + </pkg-list> + </target> +</ns0:RootFileSystem> +\end{verbatim} +\end{frame} + +\subsection{define a striped target RFS} +\begin{frame}[fragile] +\frametitle{define sdcard image} +\begin{verbatim} +... + <target> + <hostname>mini</hostname> + <domain>linutronix</domain> + <passwd>foo</passwd> + <console>ttyAMA0,115200</console> + <package> + <tar> + <name>rootfs.tar.gz</name> + </tar> + </package> + <images> + <msdoshd> + <name>my.img</name> + <size>64MiB</size> + <partition> + <size>remain</size> + <label>rfs</label> + </partition> + </msdoshd> + </images> +... +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{create fstab and set elbe mode} +\begin{verbatim} +... + </images> + <fstab> + <bylabel> + <label>rfs</label> + <mountpoint>/</mountpoint> + <fs> + <type>ext2</type> + <tune2fs>-i 0</tune2fs> + </fs> + </bylabel> + </fstab> + <diet /> + <norecommend /> + <finetuning> +... +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{build and extract target as nfsroot} +\begin{lstlisting} +$ elbe control set_xml /var/cache/elbe/.. mini.xml +$ elbe control build /var/cache/elbe/.. +$ elbe list_files /var/cache/elbe/.. +$ elbe get_file /var/cache/elbe/.. elbe-report.txt +$ elbe get_file /var/cache/elbe/.. rootfs.tar.gz +\end{lstlisting} +hint: it is possible to generate a html page from the elbe-report.txt: +\begin{lstlisting} +$ asciidoc elbe-report.txt +\end{lstlisting} +host the nfs root filesystem +\begin{lstlisting} +$ sudo mkdir -p /nfs/elbe-armhf +$ sudo tar xzf rootfs.tar.gz -C /nfs/elbe-armhf +$ su -c \ +'echo "/nfs *(rw,sync,no_subtree_check,insecure) \ +>> /etc/exports"' +$ sudo /etc/init.d/nfs-kernel-server restart +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{build current kernel for qemu armhf boot} +\begin{verbatim} +$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux +$ cd linux +$ mkdir ../linux-qemu-arm +$ ARCH=arm CROSS_COMPILE=arm-none-eabi- make O=../linux-qemu-arm versatile_defconfig +$ # enable Kernel Features / Use the ARM EABI to compile the kernel +$ # Allow old ABI binaries to run with this kernel +$ # Networking support / Networking options / TCP/IP networking / +$ # IP: kernel level autoconfiguration / IP: DHCP Support +$ ARCH=arm CROSS_COMPILE=arm-none-eabi- make O=../linux-qemu-arm menuconfig +$ ARCH=arm CROSS_COMPILE=arm-none-eabi- make O=../linux-qemu-arm -j5 +$ cd .. +\end{verbatim} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{boot nfsroot with qemu} +\begin{lstlisting} +qemu-system-arm -M versatilepb -no-reboot \ + -m 256 -usb \ + -kernel linux-qemu-arm/arch/arm/boot/zImage \ + -append 'root=/dev/nfs nfsroot=10.0.2.2:/nfs/elbe-armhf + ip=dhcp init=/usr/bin/myapp' +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{strip the nfsroot} +\begin{verbatim} +$ sudo rm -rf /nfs/elbe-armhf/etc +$ sudo rm -rf /nfs/elbe-armhf/sbin +$ sudo rm -rf /nfs/elbe-armhf/var +$ sudo rm -rf /nfs/elbe-armhf/usr/share +$ sudo rm -rf /nfs/elbe-armhf/usr/lib +$ sudo rm -rf /nfs/elbe-armhf/usr/sbin +$ sudo cp /nfs/elbe-armhf/usr/bin/myapp . +$ sudo rm -rf /nfs/elbe-armhf/usr/bin/* +$ sudo mv myapp /nfs/elbe-armhf/usr/bin/ +$ sudo cp -a /nfs/elbe-armhf/lib/arm-linux-gnueabi/ld-* . +$ sudo cp -a /nfs/elbe-armhf/lib/arm-linux-gnueabi/libc-2.13.so . +$ sudo cp -a /nfs/elbe-armhf/lib/arm-linux-gnueabi/libc.so.6 . +$ sudo rm /nfs/elbe-armhf/lib/arm-linux-gnueabi/* +$ sudo mv libc-2.13.so /nfs/elbe-armhf/lib/arm-linux-gnueabi/ +$ sudo mv libc.so.6 /nfs/elbe-armhf/lib/arm-linux-gnueabi/ +$ sudo mv ld-* /nfs/elbe-armhf/lib/arm-linux-gnueabi/ +\end{verbatim} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{update the ELBE XML file} +\begin{verbatim} +$ sudo mkdir /nfs/elbe-armhf-orig +$ sudo tar xzf rootfs.tar.gz -C /nfs/elbe-armhf-orig/ +$ elbe pkgdiff +$ sudo elbe diff /nfs/elbe-armhf-orig /nfs/elbe-armhf > diff.txt +$ cd .. +\end{verbatim} +\begin{verbatim} +$ vim mini.xml +$ # place cursor in finetuning section +$ <ESC>:read target/diff.txt<RETURN> +$ # remove everything until 'suggesting:' +$ <ESC>:x<RETURN> +\end{verbatim} +\begin{verbatim} +$ elbe create --directory=target-stripped mini.xml +$ cd target-stripped +$ make +$ # get debian kernel and initrd from the buildenv: +$ make .elbe-vm/vmkernel .elbe-vm/vminitrd +$ # boot the image +$ qemu-system-arm -M versatilepb \ +-kernel .elbe-vm/vmkernel -initrd .elbe-vm/vminitrd \ +-append 'root=/dev/sda1 init=/usr/bin/myapp' my.img +\end{verbatim} +\end{frame} + +\subsection{setup own debian mirror} + +\begin{frame}[fragile] +\frametitle{partial clone a remote debian mirror} +\begin{lstlisting} +$ mkdir -p /mirrors/debian +$ cd debian +$ debmirror -p -d wheezy, -a i386,amd64,armhf \ + --di-dist=wheezy \ + --method=http --no-check-gpg \ + -h ftp.de.debian.org . +$ cd /var/www/html +$ ln -s /mirrors/debian +\end{lstlisting} +\end{frame} + +\subsection{Conclusion} +\begin{frame} +\begin{itemize} +\item generate an ELBE buildenv with a minimal XML file +\item manage software components with autotools, dpkg and reprepro +\item build own software component inside the ELBE buildenv +\item include own debian packages in the target RFS +\item edit a running rootfs and make it reproducable +\item setup a partial, local debian mirror +\end{itemize} +\end{frame} + +\input{tailpres} |
