From 1d13e674d7be4bf9aa69139deac6737bf60af17b Mon Sep 17 00:00:00 2001 From: Manuel Traut 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 --- distribution/elbe-example/Kconfig | 5 - distribution/elbe-example/Makefile | 1 - distribution/elbe-example/mini.xml | 27 -- distribution/elbe-example/myapp/AUTHORS | 0 distribution/elbe-example/myapp/ChangeLog | 0 distribution/elbe-example/myapp/Makefile.am | 5 - distribution/elbe-example/myapp/NEWS | 0 distribution/elbe-example/myapp/README | 0 distribution/elbe-example/myapp/autogen.sh | 2 - distribution/elbe-example/myapp/configure.ac | 23 - distribution/elbe-example/myapp/myapp.c | 12 - .../elbe-example/myrepo/conf/distributions | 12 - distribution/elbe-example/myrepo/conf/updates | 6 - distribution/elbe-example/pres_elbe-example_en.tex | 540 --------------------- 14 files changed, 633 deletions(-) delete mode 100644 distribution/elbe-example/Kconfig delete mode 100644 distribution/elbe-example/Makefile delete mode 100644 distribution/elbe-example/mini.xml delete mode 100644 distribution/elbe-example/myapp/AUTHORS delete mode 100644 distribution/elbe-example/myapp/ChangeLog delete mode 100644 distribution/elbe-example/myapp/Makefile.am delete mode 100644 distribution/elbe-example/myapp/NEWS delete mode 100644 distribution/elbe-example/myapp/README delete mode 100755 distribution/elbe-example/myapp/autogen.sh delete mode 100644 distribution/elbe-example/myapp/configure.ac delete mode 100644 distribution/elbe-example/myapp/myapp.c delete mode 100644 distribution/elbe-example/myrepo/conf/distributions delete mode 100644 distribution/elbe-example/myrepo/conf/updates delete mode 100644 distribution/elbe-example/pres_elbe-example_en.tex (limited to 'distribution/elbe-example') diff --git a/distribution/elbe-example/Kconfig b/distribution/elbe-example/Kconfig deleted file mode 100644 index e70c6d1..0000000 --- a/distribution/elbe-example/Kconfig +++ /dev/null @@ -1,5 +0,0 @@ -config ELBE_EXAMPLE - bool "ELBE example" - default y - help - Example project for ELBE diff --git a/distribution/elbe-example/Makefile b/distribution/elbe-example/Makefile deleted file mode 100644 index 26f94cc..0000000 --- a/distribution/elbe-example/Makefile +++ /dev/null @@ -1 +0,0 @@ -obj-$(CONFIG_ELBE_EXAMPLE) += pres_elbe-example_en.pdf diff --git a/distribution/elbe-example/mini.xml b/distribution/elbe-example/mini.xml deleted file mode 100644 index 956ffc9..0000000 --- a/distribution/elbe-example/mini.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - mini xml - 1 - - optimal to use as buildenv - - armhf - - ftp.debian.org - /debian - http - - wheezy - - - mini - linutronix - foo - - - - bash - - - diff --git a/distribution/elbe-example/myapp/AUTHORS b/distribution/elbe-example/myapp/AUTHORS deleted file mode 100644 index e69de29..0000000 diff --git a/distribution/elbe-example/myapp/ChangeLog b/distribution/elbe-example/myapp/ChangeLog deleted file mode 100644 index e69de29..0000000 diff --git a/distribution/elbe-example/myapp/Makefile.am b/distribution/elbe-example/myapp/Makefile.am deleted file mode 100644 index 73ff4e8..0000000 --- a/distribution/elbe-example/myapp/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index e69de29..0000000 diff --git a/distribution/elbe-example/myapp/README b/distribution/elbe-example/myapp/README deleted file mode 100644 index e69de29..0000000 diff --git a/distribution/elbe-example/myapp/autogen.sh b/distribution/elbe-example/myapp/autogen.sh deleted file mode 100755 index 9088512..0000000 --- a/distribution/elbe-example/myapp/autogen.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -autoreconf -sif diff --git a/distribution/elbe-example/myapp/configure.ac b/distribution/elbe-example/myapp/configure.ac deleted file mode 100644 index 109e8ea..0000000 --- a/distribution/elbe-example/myapp/configure.ac +++ /dev/null @@ -1,23 +0,0 @@ -# -*- 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 deleted file mode 100644 index 4e39438..0000000 --- a/distribution/elbe-example/myapp/myapp.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -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 deleted file mode 100644 index 9cd8d3b..0000000 --- a/distribution/elbe-example/myrepo/conf/distributions +++ /dev/null @@ -1,12 +0,0 @@ -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-example/myrepo/conf/updates b/distribution/elbe-example/myrepo/conf/updates deleted file mode 100644 index e8df2b1..0000000 --- a/distribution/elbe-example/myrepo/conf/updates +++ /dev/null @@ -1,6 +0,0 @@ -Name: myremoterepo -Method: http://localhost/myrepo -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 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} - - mini xml - 1 - - optimal to use as buildenv - - armhf - - ftp.debian.org - /debian - http - - wheezy - - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{mini.xml} - \begin{lstlisting} - - mini - linutronix - foo - - - - bash - - - \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 -#include - -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 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} -... - - ftp.debian.org - /debian - http - - - http://LOCALMACHINE/myrepo wheezy main - http://LOCALMACHINE/myrepo wheezy main - - - - -... -\end{verbatim} -\end{frame} - -\begin{frame}[fragile] -\frametitle{add myapp} -\begin{verbatim} -... - - mini - linutronix - foo - - var/cache/apt/archives/*.deb - - - bash - myapp - - - -\end{verbatim} -\end{frame} - -\subsection{define a striped target RFS} -\begin{frame}[fragile] -\frametitle{define sdcard image} -\begin{verbatim} -... - - mini - linutronix - foo - ttyAMA0,115200 - - - rootfs.tar.gz - - - - - my.img - 64MiB - - remain - - - - -... -\end{verbatim} -\end{frame} - -\begin{frame}[fragile] -\frametitle{create fstab and set elbe mode} -\begin{verbatim} -... - - - - - / - - ext2 - -i 0 - - - - - - -... -\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 -$ :read target/diff.txt -$ # remove everything until 'suggesting:' -$ :x -\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