summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@linutronix.de>2014-01-09 11:11:53 +0100
committerManuel Traut <manut@linutronix.de>2014-01-09 11:11:53 +0100
commit0996948c27a1c3668bf36fa6ada78ed99da3b561 (patch)
tree9efa195b8c6de0de4e8ed441303b61a051c6e466
parentd7da5da17cad611293c655860b9656d4156eaa1f (diff)
add elbe example
and hands-on slides Signed-off-by: Manuel Traut <manut@linutronix.de>
-rw-r--r--distribution/elbe-example/Makefile9
-rw-r--r--distribution/elbe-example/mini-incl-target.xml77
-rw-r--r--distribution/elbe-example/mini.xml42
-rw-r--r--distribution/elbe-example/myapp/AUTHORS0
-rw-r--r--distribution/elbe-example/myapp/ChangeLog0
-rw-r--r--distribution/elbe-example/myapp/Makefile.am5
-rw-r--r--distribution/elbe-example/myapp/NEWS0
-rw-r--r--distribution/elbe-example/myapp/README0
-rwxr-xr-xdistribution/elbe-example/myapp/autogen.sh2
-rw-r--r--distribution/elbe-example/myapp/configure.ac23
-rw-r--r--distribution/elbe-example/myapp/myapp.c12
-rw-r--r--distribution/elbe-example/myrepo/conf/distributions9
-rw-r--r--distribution/elbe-example/myrepo/conf/updates6
-rw-r--r--distribution/elbe-example/pres_elbe-example_en.tex448
14 files changed, 633 insertions, 0 deletions
diff --git a/distribution/elbe-example/Makefile b/distribution/elbe-example/Makefile
new file mode 100644
index 0000000..d641258
--- /dev/null
+++ b/distribution/elbe-example/Makefile
@@ -0,0 +1,9 @@
+all:
+ for pdf in `ls -1 *.tex` ; do \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ done
+
+clean:
+ rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out
+
diff --git a/distribution/elbe-example/mini-incl-target.xml b/distribution/elbe-example/mini-incl-target.xml
new file mode 100644
index 0000000..fcb8181
--- /dev/null
+++ b/distribution/elbe-example/mini-incl-target.xml
@@ -0,0 +1,77 @@
+<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>
+ minimal target rfs including a simple app
+ buildenv to build the simple app
+ </description>
+ <buildtype>armel</buildtype>
+ <mirror>
+ <primary_host>ftp.debian.org</primary_host>
+ <primary_path>/debian</primary_path>
+ <primary_proto>http</primary_proto>
+ <url-list>
+ <url>
+ <binary>http://debian.linutronix.de/elbe wheezy main</binary>
+ </url>
+ <url>
+ <binary>http://LOCALMACHINE/debian wheezy main</binary>
+ <source>http://LOCALMACHINE/debian wheezy main</source>
+ </url>
+ </url-list>
+ </mirror>
+ <suite>wheezy</suite>
+ <buildimage>
+ <kinitrd>elbe-bootstrap</kinitrd>
+ <pkg-list>
+ <pkg>build-essential</pkg>
+ <pkg>debhelper</pkg>
+ <pkg>devscripts</pkg>
+ <pkg>autotools-dev</pkg>
+ <pkg>automake</pkg>
+ </pkg-list>
+ </buildimage>
+ </project>
+ <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>200MiB</size>
+ <partition>
+ <size>remain</size>
+ <label>rfs</label>
+ </partition>
+ </msdoshd>
+ </images>
+ <fstab>
+ <bylabel>
+ <label>rfs</label>
+ <mountpoint>/</mountpoint>
+ <fs>
+ <type>ext4</type>
+ <tune2fs>-i 0</tune2fs>
+ </fs>
+ </bylabel>
+ </fstab>
+ <diet />
+ <norecommend />
+ <finetuning>
+ <rm>var/cache/apt/archives/*.deb</rm>
+ <command>echo "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100" &gt;&gt; etc/inittab</command>
+ </finetuning>
+ <pkg-list>
+ <pkg>bash</pkg>
+ <pkg>myapp</pkg>
+ </pkg-list>
+ </target>
+</ns0:RootFileSystem>
diff --git a/distribution/elbe-example/mini.xml b/distribution/elbe-example/mini.xml
new file mode 100644
index 0000000..fe1d65f
--- /dev/null
+++ b/distribution/elbe-example/mini.xml
@@ -0,0 +1,42 @@
+<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>armel</buildtype>
+ <mirror>
+ <primary_host>ftp.debian.org</primary_host>
+ <primary_path>/debian</primary_path>
+ <primary_proto>http</primary_proto>
+ <url-list>
+ <url>
+ <binary>http://debian.linutronix.de/elbe wheezy main</binary>
+ </url>
+ </url-list>
+ </mirror>
+ <suite>wheezy</suite>
+ <buildimage>
+ <kinitrd>elbe-bootstrap</kinitrd>
+ <pkg-list>
+ <pkg>build-essential</pkg>
+ <pkg>debhelper</pkg>
+ <pkg>devscripts</pkg>
+ <pkg>autotools-dev</pkg>
+ <pkg>automake</pkg>
+ </pkg-list>
+ </buildimage>
+ </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-example/myapp/AUTHORS b/distribution/elbe-example/myapp/AUTHORS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/distribution/elbe-example/myapp/AUTHORS
diff --git a/distribution/elbe-example/myapp/ChangeLog b/distribution/elbe-example/myapp/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/distribution/elbe-example/myapp/ChangeLog
diff --git a/distribution/elbe-example/myapp/Makefile.am b/distribution/elbe-example/myapp/Makefile.am
new file mode 100644
index 0000000..73ff4e8
--- /dev/null
+++ b/distribution/elbe-example/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-example/myapp/NEWS b/distribution/elbe-example/myapp/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/distribution/elbe-example/myapp/NEWS
diff --git a/distribution/elbe-example/myapp/README b/distribution/elbe-example/myapp/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/distribution/elbe-example/myapp/README
diff --git a/distribution/elbe-example/myapp/autogen.sh b/distribution/elbe-example/myapp/autogen.sh
new file mode 100755
index 0000000..9088512
--- /dev/null
+++ b/distribution/elbe-example/myapp/autogen.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+autoreconf -sif
diff --git a/distribution/elbe-example/myapp/configure.ac b/distribution/elbe-example/myapp/configure.ac
new file mode 100644
index 0000000..109e8ea
--- /dev/null
+++ b/distribution/elbe-example/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-example/myapp/myapp.c b/distribution/elbe-example/myapp/myapp.c
new file mode 100644
index 0000000..4e39438
--- /dev/null
+++ b/distribution/elbe-example/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-example/myrepo/conf/distributions b/distribution/elbe-example/myrepo/conf/distributions
new file mode 100644
index 0000000..f6cb43a
--- /dev/null
+++ b/distribution/elbe-example/myrepo/conf/distributions
@@ -0,0 +1,9 @@
+Origin: myrepo
+Label: myrepo
+Suite: stable
+Codename: wheezy
+Update: - myremoterepo
+Version:
+Architectures: i386 amd64 armel source
+Components: main
+Description: my debian packages
diff --git a/distribution/elbe-example/myrepo/conf/updates b/distribution/elbe-example/myrepo/conf/updates
new file mode 100644
index 0000000..8430306
--- /dev/null
+++ b/distribution/elbe-example/myrepo/conf/updates
@@ -0,0 +1,6 @@
+Name: myremoterepo
+Method: http://localhost/debian
+Components: main
+Architectures: i386 amd64 source
+VerifyRelease: blindtrust
+IgnoreRelease: yes
diff --git a/distribution/elbe-example/pres_elbe-example_en.tex b/distribution/elbe-example/pres_elbe-example_en.tex
new file mode 100644
index 0000000..eb64782
--- /dev/null
+++ b/distribution/elbe-example/pres_elbe-example_en.tex
@@ -0,0 +1,448 @@
+\input{configpres}
+
+\lstset{language=c}
+
+\title{ELBE 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
+\end{itemize}
+\end{frame}
+
+\subsection{generate a buildenv}
+
+\begin{frame}[fragile]
+\frametitle{minimal XML file}
+\begin{lstlisting}
+<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>armel</buildtype>
+ <mirror>
+ <primary_host>ftp.debian.org</primary_host>
+ <primary_path>/debian</primary_path>
+ <primary_proto>http</primary_proto>
+ <url-list>
+ <url>
+ <binary>http://debian.linutronix.de/elbe wheezy main</binary>
+ </url>
+ </url-list>
+ </mirror>
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{minimal XML file}
+\begin{lstlisting}
+ <suite>wheezy</suite>
+ <buildimage>
+ <kinitrd>elbe-bootstrap</kinitrd>
+ <pkg-list>
+ <pkg>build-essential</pkg>
+ <pkg>debhelper</pkg>
+ <pkg>devscripts</pkg>
+ <pkg>autotools-dev</pkg>
+ <pkg>automake</pkg>
+ </pkg-list>
+ </buildimage>
+ </project>
+ <target>
+ <hostname>mini</hostname>
+ <domain>linutronix</domain>
+ <passwd>foo</passwd>
+ <finetuning>
+ </finetuning>
+ <pkg-list>
+ <pkg>bash</pkg>
+ </pkg-list>
+ </target>
+</ns0:RootFileSystem>
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{create and build mini.xml}
+\begin{lstlisting}
+$ elbe create --directory=./buildenv mini.xml
+$ cd buildenv
+$ make
+\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{lstlisting}
+# -*- 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{lstlisting}
+\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
+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 in a debian repository}
+\begin{lstlisting}
+$ cd ..
+$ mkdir -p myrepo/conf
+$ cd myrepo
+$ $EDITOR conf/distributions
+\end{lstlisting}
+\begin{lstlisting}
+Origin: myrepo
+Label: myrepo
+Suite: stable
+Codename: wheezy
+Update: - myremoterepo
+Version:
+Architectures: i386 amd64 source
+Components: main
+Description: my debian packages
+\end{lstlisting}
+\begin{lstlisting}
+$ $EDITOR conf/updates
+\end{lstlisting}
+\begin{lstlisting}
+Name: myremoterepo
+Method: http://localhost/debian
+Components: main
+Architectures: i386 amd64 armel source
+VerifyRelease: blindtrust
+IgnoreRelease: yes
+\end{lstlisting}
+\end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{host myapp in a debian repository}
+\begin{lstlisting}
+$ reprepro include wheezy ../myapp_1.0_i386.changes
+$ sudo mkdir /var/www/
+$ sudo rsync -av --exclude=db --exclude=conf * /var/www/debian/
+\end{lstlisting}
+\end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{build debian package inside the buildenv}
+\begin{lstlisting}
+$ cd ../buildenv
+$ make run-con
+# login into buildenv
+$ echo 'deb-src http://10.0.2.2/debian wheezy main' >> /etc/apt/sources.list
+$ apt-get update
+$ apt-get source myapp
+$ cd myapp-1.0
+$ ./autogen.sh
+$ dpkg-buildpackage -b
+$ scp ../myapp*.changes ../myapp*.deb 10.0.2.2:/tmp
+$ dpkg -i ../myapp*.deb
+\end{lstlisting}
+\end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{add myapp armel package to the repo}
+\begin{lstlisting}
+$ cd ../myrepo
+$ reprepro include wheezy /tmp/myapp_1.0_armel.changes
+$ sudo rsync -av --exclude=db --exclude=conf * /var/www/debian/
+\end{lstlisting}
+\end{frame}
+
+
+\subsection{include own application in target RFS}
+
+\begin{frame}[fragile]
+\frametitle{create target image and add myapp}
+\begin{lstlisting}
+$ cd ..
+$ $EDIT mini.xml
+\end{lstlisting}
+\begin{lstlisting}
+<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>
+ minimal target rfs including a simple app
+ buildenv to build the simple app
+ </description>
+ <buildtype>armel</buildtype>
+ <mirror>
+ <primary_host>ftp.debian.org</primary_host>
+ <primary_path>/debian</primary_path>
+ <primary_proto>http</primary_proto>
+ <url-list>
+ <url>
+ <binary>http://debian.linutronix.de/elbe wheezy main</binary>
+ </url>
+ <url>
+ <binary>http://LOCALMACHINE/debian wheezy main</binary>
+ <source>http://LOCALMACHINE/debian wheezy main</source>
+ </url>
+ </url-list>
+ </mirror>
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{create target image and add myapp}
+\begin{lstlisting}
+ <suite>wheezy</suite>
+ <buildimage>
+ <kinitrd>elbe-bootstrap</kinitrd>
+ <pkg-list>
+ <pkg>build-essential</pkg>
+ <pkg>debhelper</pkg>
+ <pkg>devscripts</pkg>
+ <pkg>autotools-dev</pkg>
+ <pkg>automake</pkg>
+ </pkg-list>
+ </buildimage>
+ </project>
+ <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{lstlisting}
+\end{frame}
+
+\subsection{define a striped target RFS}
+\begin{frame}[fragile]
+\frametitle{set elbe mode and define images}
+\begin{lstlisting}
+...
+ <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>200MiB</size>
+ <partition>
+ <size>remain</size>
+ <label>rfs</label>
+ </partition>
+ </msdoshd>
+ </images>
+ <fstab>
+ <bylabel>
+ <label>rfs</label>
+ <mountpoint>/</mountpoint>
+ <fs>
+ <type>ext4</type>
+ <tune2fs>-i 0</tune2fs>
+ </fs>
+ </bylabel>
+ </fstab>
+ <diet />
+ <norecommend />
+ <finetuning>
+ <rm>var/cache/apt/archives/*.deb</rm>
+ <command>echo "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100" &gt;&gt; etc/inittab</command>
+ </finetuning>
+ <pkg-list>
+ <pkg>bash</pkg>
+ <pkg>myapp</pkg>
+ </pkg-list>
+ </target>
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{build target rfs}
+\begin{lstlisting}
+$ elbe create mini.xml --directory=./target
+$ cd target
+$ make
+
+\input{tailpres}