From 1d13e674d7be4bf9aa69139deac6737bf60af17b Mon Sep 17 00:00:00 2001
From: Manuel Traut <manut@linutronix.de>
Date: Wed, 1 Jul 2015 16:12:36 +0200
Subject: 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>
---
 distribution/elbe-example/pres_elbe-example_en.tex | 540 ---------------------
 1 file changed, 540 deletions(-)
 delete mode 100644 distribution/elbe-example/pres_elbe-example_en.tex

(limited to 'distribution/elbe-example/pres_elbe-example_en.tex')

diff --git a/distribution/elbe-example/pres_elbe-example_en.tex b/distribution/elbe-example/pres_elbe-example_en.tex
deleted file mode 100644
index dd39b24..0000000
--- a/distribution/elbe-example/pres_elbe-example_en.tex
+++ /dev/null
@@ -1,540 +0,0 @@
-\input{configpres}
-
-\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
-\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
-$ make run-con
-\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}
-- 
cgit v1.2.3

