diff options
Diffstat (limited to 'distribution/elbe-usage/pres_elbe-usage_en.tex')
| -rw-r--r-- | distribution/elbe-usage/pres_elbe-usage_en.tex | 550 |
1 files changed, 0 insertions, 550 deletions
diff --git a/distribution/elbe-usage/pres_elbe-usage_en.tex b/distribution/elbe-usage/pres_elbe-usage_en.tex deleted file mode 100644 index 452d678..0000000 --- a/distribution/elbe-usage/pres_elbe-usage_en.tex +++ /dev/null @@ -1,550 +0,0 @@ -\input{configpres} - -\title{ELBE - Embedded Linux Build Environment} -\maketitle - -\subsection{ELBE usage} - -\begin{frame} -\frametitle{What is ELBE?} -ELBE is a Debian based system to generate root-filesystems for embedded devices -\end{frame} - -\begin{frame}[fragile] -\frametitle{How to install ELBE} -\begin{verbatim} -# On a Debian based system -$ echo 'deb http://debian.linutronix.de/elbe \ -wheezy main' >> /etc/apt/sources.list -$ aptitude install elbe -\end{verbatim} -Or get the latest source from github: -\begin{verbatim} -git clone https://github.com/Linutronix/elbe.git -\end{verbatim} -\end{frame} - -\begin{frame} -\frametitle{Overview} -\begin{itemize} -\item The Elbe system consists of the program elbe which is implemented in Python -\item Similar to git, it can be called with several sub commands -\item An Elbe project consists of an xml file that describes the project -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{Documentation} -\begin{itemize} -\item Have a look at /usr/share/doc/elbe/ -\item Please read /usr/share/doc/elbe/elbeoverview-en.html -\item There are man pages e.g. 'man elbe', 'man elbe-create', \dots -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{How ELBE works} -\begin{figure}[h] -\centering -\includegraphics[width=10cm]{images/elbe-process.png} -\end{figure} -\end{frame} - -\begin{frame} -\frametitle{How ELBE works} -\begin{figure}[h] -\centering -\includegraphics[width=10cm]{images/emu-process.png} -\end{figure} -\end{frame} - -\begin{frame} -\frametitle{The ELBE workflow} -\begin{enumerate} -\item Create a XML file -\item Create a project based on that XML file -\item Change to the project directory an run make -\end{enumerate} -\end{frame} - -\begin{frame}[fragile] -\frametitle{command overview} -Create a new project: -\begin{verbatim} -$ elbe create \ - --directory /home/user/example example.xml -\end{verbatim} -\end{frame} - -\begin{frame}[fragile] -\frametitle{start build} -\begin{verbatim} -$ cd /home/user/example -$ ls -a -. .. .elbe-in Makefile -$ make -\end{verbatim} -.elbe-in contains the files needed inside the virtual build machine -\end{frame} - -\begin{frame}[fragile] -\frametitle{generated files} -\begin{verbatim} -$ ls -a -. elbe-report.txt sdcard.img -.. install.iso source.xml -buildenv.img licence.txt .stamps -.elbe-gen Makefile validation.txt -.elbe-in rootfs.tar.gz -\end{verbatim} -\end{frame} - -\begin{frame} -\frametitle{buildenv.img} -\begin{itemize} -\item Qemu HD image containing a complete Debian system -\item was used to generate the RFS for the target -\item can be used as build environment for own applications -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{.elbe-gen} -\begin{itemize} -\item files generated by the Makefile -\item including the modified initrd that contains the debian-installer -\item and a list containing the files that are copied from the buildenv to the -host PC -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{elbe-report.txt} -\begin{itemize} -\item logfile of the build process in asciidoc format -\item 'asciidoc elbe-report.txt' generates a html file -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{install.iso} -\begin{itemize} -\item ISO image that contains all used packages -\item the --skip-cds parameter of 'elbe create' can be used to skip the - generation of the image -\item the --build-source parameter of 'elbe create' can be used to also generate - a cdrom image that contains all Debian source packages -\item All mirrors configured in an elbe XML file can be replaced by an ISO image - using the command 'elbe setcdrom' -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{licence.txt} -\begin{itemize} -\item contains the licence text of all used debian packages -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{rootfs.tar.gz, sdcard.img} -\begin{itemize} -\item Images or archives containing the target RFS -\item The 'target' section in the XML file describes which image and archive - files are created; the 'fstab' section describes their content. -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{source.xml} -\begin{itemize} -\item based on the XML file given to 'elbe create' -\item added a 'fullpkgs' section containing informations about all installed - packages and their version -\item added a 'sources\_list' section that contains the used mirrors -\item added a 'apt\_prefs' section that contains the pinning settings -\item added a 'elbe\_version' section that contains the version number of - the elbe tool that generated the file -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{.stamps} -\begin{itemize} -\item status information used by the Makefile -\end{itemize} -\end{frame} - -\begin{frame} -\frametitle{validation.txt} -\begin{itemize} -\item if elbe create was called with a XML file containing a 'fullpkgs' section - the file contains informations if a package version differs -\item if a package in the 'pkg-list' was not found on one of the mirrors this - will be logged in this file -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Using the VM} -\begin{verbatim} -$ make run -\end{verbatim} -A Qemu with the buildenv.img will be started. -\end{frame} - -\begin{frame}[fragile] -\frametitle{The ELBE XML format} -/usr/share/doc/elbe/examples/ contains a couple of examples that can be used -as templates for an own project: -\begin{verbatim} -$ ls /usr/share/doc/elbe/examples/ -amd64-example.xml beaglebone.xml -arm-complex-example.xml i386-example.xml -arm-example.xml ppc-example.xml -arm-wheezy-example.xml x86-example.xml -\end{verbatim} -Take a look at the different modes and finetuning sections. Also various -iamge generation methods are used. -\end{frame} - -\begin{frame}[fragile] -\frametitle{The ELBE XML format: Project setup} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<project> - <name>ARMexample</name> - <version>08.15</version> - <description> - creates an UBI based target system without debian package management - tools for version control and package build are added to the buildimage - </description> - <buildtype>armel</buildtype> - ... -</project> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{The ELBE XML format: Project setup} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<project> -... - <mirror> - <primary_host>ftp.de.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> - <source>http://debian.linutronix.de/elbe wheezy main</source> - </url> - </url-list> - </mirror> - <noauth /> -... -</project> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{The ELBE XML format: Project setup} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<project> -... - <suite>wheezy</suite> - <buildimage> - <kinitrd>elbe-bootstrap</kinitrd> - <pkg-list> - <pkg>build-essential</pkg> - <pkg>debhelper</pkg> - <pkg>git</pkg> - </pkg-list> - </buildimage> -</project> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{The ELBE XML format: Defining a target} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<target> - <hostname>myARM</hostname> - <domain>tec.linutronix.de</domain> - <passwd>foo</passwd> - <console>ttyS0,115200</console> - <package> - <tar> - <name>nfsroot.tar.gz</name> - </tar> - </package> - <finetuning> - <rm>usr/share/doc</rm> <!-- remove from target --> - <rm>/usr/share/doc</rm> <!-- remove from buildenv --> - </finetuning> - <pkg-list> - <pkg>bash</pkg> - </pkg-list> - </target> -\end{lstlisting} -\end{scriptsize} -\end{frame} - - -\begin{frame} -\frametitle{ELBE modes} -\begin{itemize} -\item norecommend (can be combined with any of the other modes): - Don't install recommended packages -\item default: target is a copy of the buildenv -\item diet: Only copy files referenced in the package management. - Only use this for small and simple root filesystems! -\item setsel: The resulting image will just contain dpkg. - This mode offers a finegrained control on which packages should be installed -\item tighten: ignore dependencies, this is useful for very minimalistic busybox - based systems. Normally setsel mode should be used. -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{ELBE modes: Example} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<target> -... - <diet /> - <norecommend /> - <pkg-list> - <pkg>bash</pkg> - </pkg-list> -... -</target> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-setsel usage} -\begin{enumerate} -\item Create package list: -\begin{verbatim} -hostpc$ make run-con -# remove all pkgs not wanted on the target -target$ dpkg --purge vim-nox libxml2-dev -# export installed package list -target$ dpkg --get-selections > selections.list -# copy list to hostpc -target$ scp selections.list 10.0.2.2:/tmp -\end{verbatim} -\item Import the package list to your xml file: -\begin{verbatim} -hostpc$ elbe setsel rfs.xml /tmp/selections.list -\end{verbatim} -\end{enumerate} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Using a CDROM} -\begin{itemize} -\item Each ELBE build will create a CD-ROM image with the packages - needed for an elbe image build. -\item this ISO image can be used for future builds: -\end{itemize} -\begin{verbatim} -$ elbe setcdrom rfs.xml \ -/home/user/elbe-test/install.iso -\end{verbatim} -This command removes all configured mirrors and additional urls from the XML -file and sets the given ISO image as the only mirror. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-chg\_archive} -It is possible to include an archive into the xml file, that is unpacked into -the target RFS before and after the finetuning step: -\begin{verbatim} -$ mkdir archive/testd -$ cd archive -$ echo 'port = 1234' > archive/testd/myconfig -$ tar cjf ../archive.tar.bz2 * -$ cd .. -$ elbe chg_archive <xmlfile> archive.tar.bz2 -\end{verbatim} -NOTE: The file must be a bzip2 compressed tar (.tar.bz2) -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-get\_archive} -It is also possible to extract an archive from an XML file: -\begin{verbatim} -$ elbe get_archive <xmlfile> <archive> -\end{verbatim} -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-show} -The elbe show command prints out some textual information about an -ELBE xml file: -\begin{verbatim} -$ elbe show --verbose arm-example.xml -== arm-example.xml: ARMexample - version 08.15 == -Debian suite: wheezy/armel -[...] -\end{verbatim} -The '--verbose' parameter shows more informations, like the complete package -list. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-xsdtoasciidoc} -Create an asciidoc documentation from an annotated XML Schema file -\begin{verbatim} -# Create asciidoc format -$ elbe xsdtoasciidoc --output=myasciidoc dbsfed.xsd -# Create HTML doc -$ asciidoc myasciidoc -\end{verbatim} -This is used to create the documentation of the ELBE XML schema. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-checkupdates} -Use a source.xml file to check if there are updates available for an existing -image: -\begin{verbatim} -$ elbe check_updates source.xml -checking /home/user/rfs/build-release/source.xml -armel -Reading package lists... Done -Building dependency tree... Done -Reading package lists... Done -Building dependency tree... Done -adduser 3.113+nmu1 != 3.113+nmu3 -1 updates required -\end{verbatim} -This can be used e.g. as cronjob to get notifications if updates are availabe. - -Than the person responsible for updates can decide what needs to be done. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-diff} -compares to RFS trees and suggests commands to update the archive tar and a -'finetuning' section: -\begin{verbatim} -$ sudo elbe diff rfs rfs-modified -suggesting: - -<rm>/etc/init.d/mountall-bootclean.sh</rm> -<rm>/etc/init.d/bootmisc.sh</rm> -tar rf archive.tar -C build/rfs /sbin/dhclient-script -tar rf archive.tar -C build/rfs /etc/init.d/mountfstab.sh -\end{verbatim} -This can be used if a (nfsroot) filesystem was modified and these modifications -should be included in an ELBE XML file. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-pkgdiff} -compares to RFS trees and displays the difference of the installed packages -\begin{verbatim} -$ sudo elbe pkgdiff `pwd`/rfs `pwd`/rfs-modified --<pkg>firmware-ivtv</pkg> --<pkg>firmware-ipw2x00</pkg> -\end{verbatim} -This can be used if a (nfsroot) filesystem was modified and these modifications -should be included in an ELBE XML file. -\end{frame} - -\begin{frame}[fragile] -\frametitle{elbe-validate} -validates the xmlfile provided, and prints out errors: -\begin{verbatim} -$ elbe validate rfs.xml -rfs.xml:101 error Element 'type': [facet 'enumeration'] The value 'ext5' is -not an element of the set {'ext2', 'ext3', 'ext4', 'xfs', 'ubifs', 'tmpfs', -'debugfs', 'configfs', 'proc', 'sysfs', 'vfat'}. -rfs.xml:101 error Element 'type': 'ext5' is not a valid value of the atomic -type '{https://www.linutronix.de/projects/Elbe}fs_type'. -validation failed -\end{verbatim} -\dots there is an typo in the XML file line 105: ext5 instead of ext4 -\end{frame} - - -\begin{frame}[fragile] -\frametitle{Creating UBI images} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} -<images> - <mtd> - <name>linux.img</name> 1 - <nr>0</nr> - <size>60MB</size> - <ubivg> - <label>nand</label> - <miniosize>2048</miniosize> - <maxlogicaleraseblockcount>1533</maxlogicaleraseblockcount> - <logicaleraseblocksize>126976</logicaleraseblocksize> - <physicaleraseblocksize>128KiB</physicaleraseblocksize> - <ubi> - <type>static</type> - <label>kernel</label> - <id>0</id> - <size>4MiB</size> - <binary>/boot/vmlinuz</binary> - </ubi> - <ubi> - <type>dynamic</type> - <label>rfs</label> - <id>1</id> - <size>26MiB</size> - </ubi> - </mtd> - </images> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Creating UBI images} -\lstset{language=XML} -\begin{scriptsize} -\begin{lstlisting} - <fstab> - <bylabel> - <label>rfs</label> - <mountpoint>/</mountpoint> - <fs> - <type>ubifs</type> - <mkfs>-x lzo</mkfs> - </fs> - </bylabel> - </fstab> -\end{lstlisting} -\end{scriptsize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Future? elbe buildchroot} -Something like this may be used in the future: -\begin{lstlisting} -sudo elbe buildchroot -t build-chroot -o buildchroot.log -n myrfs \ ---skip-validation --skip-cdrom --debug --buildtype=armel -\end{lstlisting} -Testing and feedback is welcome! -\end{frame} - -\input{tailpres} |
