<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dh-electronics.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pzimmermann</id>
	<title>Wiki-DB - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dh-electronics.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pzimmermann"/>
	<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Special:Contributions/Pzimmermann"/>
	<updated>2026-04-27T21:21:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Avenger96&amp;diff=3859</id>
		<title>Avenger96</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Avenger96&amp;diff=3859"/>
		<updated>2023-10-20T06:49:13Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: /* Useful instructions */ Added link to page of display calibration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The Avenger96 board is the official DHCOR STM32MP1 reference design!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__TOC__&lt;br /&gt;
|[[Image:Avenger96Board.png|600px|COM Avenger96Board]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The AVENGER Board is a 96Boards compliant consumer edition board based on the STM32MP15 series of SoCs. The STM32MP15 series &lt;br /&gt;
is a highly integrated multi-market applications processor designed to enable secure and portable applications within the Internet of Things. &lt;br /&gt;
AVENGER board features Dual-core Arm® Cortex®-A7 processors operating at up to 650 MHz, Single core Arm® Cortex® M4 operating up to &lt;br /&gt;
209 MHz. In addition, an extensive set of interfaces and connectivity peripherals are included to interface to cameras, touch-screen displays, &lt;br /&gt;
MMC/SD cards and media processor engine. It also fully supports wireless communication, including WLAN and BLE.&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 100%; color: #000000; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 50%; background: #076b8d; border: 0pt;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;width: 50%; background: #076b8d; border: 0pt;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 0pt;&amp;quot; | &lt;br /&gt;
* &#039;&#039;&#039;STM32MP157AAC&lt;br /&gt;
**2x ARM® Cortex-A7 up to 650 MHz&lt;br /&gt;
**1x ARM® Cortex-M4 up to 209 MHz &lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;GPU&#039;&#039;&#039; 1x 3D GPU Vivante®  @ 533 MHz - OpenGL® ES 2.0&lt;br /&gt;
*&#039;&#039;&#039;PMIC&#039;&#039;&#039; STPMIC1A&lt;br /&gt;
*&#039;&#039;&#039;DDR3 DRAM&#039;&#039;&#039; 1024 Mbyte  @ 533 MHz&lt;br /&gt;
*&#039;&#039;&#039;eMMC Flash&#039;&#039;&#039; 8 Gbyte, v4.51 interface&lt;br /&gt;
*&#039;&#039;&#039;NOR Flash&#039;&#039;&#039; 2 Mbyte, Quad SPI interface&lt;br /&gt;
*&#039;&#039;&#039;EEPROM&#039;&#039;&#039; 128 byte&lt;br /&gt;
*&#039;&#039;&#039;microSD Socket&#039;&#039;&#039; UHS-I speed grade, v3.01&lt;br /&gt;
*&#039;&#039;&#039;USB Host&#039;&#039;&#039; 2x type A, 2.0 high-speed&lt;br /&gt;
*&#039;&#039;&#039;USB OTG&#039;&#039;&#039; 1x type micro-AB, 2.0 high-speed&lt;br /&gt;
*&#039;&#039;&#039;HDMI&#039;&#039;&#039; WXGA (1366x768) @ 60 fps, HDMI 1.4&lt;br /&gt;
*&#039;&#039;&#039;WiFi / Bluetooth&#039;&#039;&#039; &lt;br /&gt;
**WiFi 5 GHz &amp;amp; 2.4GHz IEEE 802.11a / b / g / n / ac&lt;br /&gt;
**Bluetooth® v4.2 (BR/EDR/BLE)&lt;br /&gt;
**PCB antenna&lt;br /&gt;
*&#039;&#039;&#039;Ethernet&#039;&#039;&#039; 10 / 100 / 1000 Mbit/s, IEEE 802.3-compliant&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 0pt;&amp;quot; |&lt;br /&gt;
*&#039;&#039;&#039;Push-Buttons&#039;&#039;&#039; Power and reset&lt;br /&gt;
*&#039;&#039;&#039;Battery Socket&#039;&#039;&#039; CR1216, CR1220 and CR1225&lt;br /&gt;
*&#039;&#039;&#039;LEDs&#039;&#039;&#039;&lt;br /&gt;
**4x green user controlled LEDs &lt;br /&gt;
**1x blue Bluetooth enabled &lt;br /&gt;
**1x yellow WiFi enabled&lt;br /&gt;
**1x red power supply okay&lt;br /&gt;
*&#039;&#039;&#039;Boot Mode&#039;&#039;&#039; 3 bit boot mode switch&lt;br /&gt;
*&#039;&#039;&#039;Debug Interface&#039;&#039;&#039; JTAG interface via tag-connect&lt;br /&gt;
*&#039;&#039;&#039;Supply (SYS_DCIN)&#039;&#039;&#039; 8 - 18 VDC&lt;br /&gt;
*&#039;&#039;&#039;Temperature Range&#039;&#039;&#039; 0 - 40 °C&lt;br /&gt;
*&#039;&#039;&#039;Dimensions &#039;&#039;&#039; 100 x 85 mm&lt;br /&gt;
*&#039;&#039;&#039;Expansion Connectors&#039;&#039;&#039;  &lt;br /&gt;
**2 x UART&lt;br /&gt;
**2 x I2C&lt;br /&gt;
**1 x I2S&lt;br /&gt;
**1 x SPI&lt;br /&gt;
**12 x GPIOs (also useable as 2x CAN, 2x ADC)&lt;br /&gt;
**1 x MIPI-CSI2&lt;br /&gt;
**1 x MIPI-DSI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Product Change Notifications (PCN) ==&lt;br /&gt;
==== DHCOR STM32MP15====&lt;br /&gt;
* [[media:PCN_DHCOR-STM32MP1-001_R01_2022-10-07.pdf|PCN_DHCOR-STM32MP1-001_R01_2022-10-07.pdf (New default bootloader, based on testbench configuration)]]&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
* [https://github.com/dh-electronics/kas-dhsom/releases/tag/2023-08-28 DH Mainline based starter image 2023-09-20 (based on 6.1.54 Linux Kernel)]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
* [[media:DOC_Getting-Started-588-200_R04_2023-09-19.pdf|Getting-Started with Avenger96 (R04)]]&lt;br /&gt;
* [[media:USM_DHCOR-STM32MP1_R05_2019-12-12.pdf|DHCOR STM32MP1 User Manual R05 &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&#039;&#039;&#039;IMPORTANT: Please have a look at NEW chapter 24. Hardware design checklist&#039;&#039;&#039;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
* More about the STM32 MPU is on the [[Avenger96#Links | Links section]]&lt;br /&gt;
&lt;br /&gt;
== Design Files ==&lt;br /&gt;
* [[media:SCH_588-200-HS00008-public_R07_2019-08-01.pdf|Avenger96 Schematic]]&lt;br /&gt;
* [[media:BOM_588-200-HS00008-public_R07_2019-08-01.xlsx|Avenger96 Bill of Material]]&lt;br /&gt;
* [[media:588-200_TOP_ASSEMBLY__R04_2019-04-12.pdf|Avenger96 Assembly Top]]&lt;br /&gt;
* [[media:588-200_BOTTOM_ASSEMBLY__R04_2019-04-12.pdf|Avenger96 Assembly Bottom]]&lt;br /&gt;
* [[media:BRD_588-200-with-DHCOR_2020-06-22.STEP|Avenger96 3D STEP file]]&lt;br /&gt;
* [[media:DHCOR-STM32MP1-Design-Symbols_2019-10-16.zip|DHCOR STM32MP1 Allegro/Orcad schematic and layout symbols (release date: 16.10.2019) &#039;&#039;&#039;Now with Allegro *.brd file and 3D information&#039;&#039;&#039;]]&lt;br /&gt;
* [[media:DHCOR_STM32MP1_3D_STEP_586-100_R02.zip|DHCOR STM32MP1 3D STEP file]]&lt;br /&gt;
* [[media:Stm32mp15xx-dhcor-avenger96_2023-04-18.zip | Avenger96 CubeMX configuration (release date: 18.04.2023)]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
=== DH Mainline based Linux ===&lt;br /&gt;
* [https://github.com/dh-electronics/kas-dhsom Build your own Yocto Kirkstone LTS via kas (GitHub)]&lt;br /&gt;
* [https://github.com/dh-electronics/meta-dhsom-stm32-bsp Yocto BSP meta layer (Github)]&lt;br /&gt;
* [[Default Bootloader &amp;quot;stm32mp15xx-dhcor-testbench&amp;quot; | Default Bootloader &amp;quot;stm32mp15xx-dhcor-testbench&amp;quot; programmed with delivered DHCOR module]]&lt;br /&gt;
* [[DHCOR_STM32MP1_Linux| Linux and bootloader documentation]]&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;&#039;&#039;&#039;NEW How to start with custom DHCOR design?&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
:The patch below is an example patch which applies on top of u-boot v2021.01 and implements a custom board derived from 3V3 option of DHCOR STM32MP1 SoM. That&#039;s pretty much all you have to change to implement the board. But, please tweak the DTs esp. where there are the FIXME comments.&lt;br /&gt;
:[[media:0001-ARM-dts-stm32-Add-DHCOR-based-FOO-board-u-boot-v2021.01.patch|&#039;&#039;&#039;NEW&#039;&#039;&#039; 0001-ARM-dts-stm32-Add-DHCOR-based-FOO-board-u-boot-v2021.01.patch]]&lt;br /&gt;
* [[Add Yocto SDK with QT5 to QT Creator | Start with Qt]]&lt;br /&gt;
* [[Debugging_M4_on_STM32MP15xxxx|STM32MP1: Debugging M4]]&lt;br /&gt;
* [https://wiki.dh-electronics.com/index.php/STM32MP1_Browser_Performance STM32MP1 Browser Performance]&lt;br /&gt;
* [[DHSOM device tree structure | DHSOM device tree structure]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSTLinux ===&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;This project is NOT maintained from DH electronics!!! Please use the &amp;quot;DH Mainline based Linux&amp;quot; version for your project. The OpenSTLinux should only be used for testing!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* &#039;&#039;&#039;Info:&#039;&#039;&#039; &lt;br /&gt;
:- Based on OpenSTLinux v3.0&lt;br /&gt;
:- GPU support based on original vivante GPU driver.&lt;br /&gt;
:- Based on kernel 5.10.x and Yocto version dunfell&lt;br /&gt;
* [https://github.com/dh-electronics/manifest-av96 Yocto meta layer (Github)]&lt;br /&gt;
:DH electronics Github contains the meta-av96 layer for ST SDK. Please see readme.txt which describes the build process.&lt;br /&gt;
&lt;br /&gt;
* [[media:Avenger96_v7.0_2021-10-29.img.zip|OpenSTLinux-3.0 based on Yocto Dunfell LTS and Linux 5.10.10 - v7.0 Starter Image]] (Supported by Arrow Electronics) &lt;br /&gt;
:[[Starter Image Changelog]]&lt;br /&gt;
: This Image includes four different bootmodes to support some additional mezzanine boars. [https://wiki.dh-electronics.com/index.php/Starter_Image_Bootmode Click here to learn, how to change them.]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;X-LINUX-AI OpenSTLinux Expansion Package:&#039;&#039;&#039; Description: Expansion Package that targets artificial intelligence for STM32MP1 Series devices.&lt;br /&gt;
* [https://wiki.st.com/stm32mpu/wiki/X-LINUX-AI_OpenSTLinux_Expansion_Package &#039;&#039;&#039;NEW&#039;&#039;&#039; X-LINUX-AI OpenSTLinux Expansion Package]&lt;br /&gt;
* [https://wiki.st.com/stm32mpu/wiki/How_to_install_X-LINUX-AI_v2.0.0_on_Avenger96_board &#039;&#039;&#039;NEW&#039;&#039;&#039; How to install X-LINUX-AI v2.0.0 on Avenger96 board]&lt;br /&gt;
&lt;br /&gt;
== Useful instructions ==&lt;br /&gt;
==== How to test OV5640 camera ==== &lt;br /&gt;
To use the D3 mezzanine board with AV96 and the OV5640 camera, one has to apply the correct DTO first:&lt;br /&gt;
 STM32MP&amp;gt; setenv loaddtos &#039;#conf-stm32mp157a-avenger96.dtb#conf-stm32mp15xx-avenger96-overlay-ov5640-x7.dtbo&#039;; boot&lt;br /&gt;
&lt;br /&gt;
Afterward it is possible to stream frames from the camera:&lt;br /&gt;
 $ XDG_RUNTIME_DIR=/var/run/user/$(id -u weston)/ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720 ! queue ! waylandsink&lt;br /&gt;
&lt;br /&gt;
==== How to load U-Boot with dfu-util ==== &lt;br /&gt;
*[[U-Boot recovery for STM32MP1 DHSOM via DFU |U-Boot recovery for STM32MP1 DHSOM via DFU]]&lt;br /&gt;
&lt;br /&gt;
==== SPI Flash and eMMC Image Programming via UMS (universal mass storage) ====&lt;br /&gt;
*[[Avenger96 UMS Image Programming | Avenger96 UMS Image Programming]]&lt;br /&gt;
&lt;br /&gt;
==== SPI Flash and eMMC Image Programming via Cube Programmer (OLD) ====&lt;br /&gt;
*[[Avenger96 Image Programming | Avenger96 Image Programming]]&lt;br /&gt;
&lt;br /&gt;
==== How to calibrate resistive touchscreens ====&lt;br /&gt;
*[[Calibration of resistive touchscreens]]&lt;br /&gt;
&lt;br /&gt;
== Mezzanine Boards by DH electronics ==&lt;br /&gt;
&lt;br /&gt;
==== DSI Display Adaptor Board ====&lt;br /&gt;
You can easily add an DSI display to your Avenger96 with the help of the DSI Display Adaptor Board. &lt;br /&gt;
The display can be activated easily on our Mainline Image with a device tree overlay as described [[DHCOR_STM32MP1_Linux| here]]. &lt;br /&gt;
To get one of the boards, simply reach out to us and we&#039;ll prepare one for you.&lt;br /&gt;
&lt;br /&gt;
[[File:DSI Display Adaptor Board.jpg|400px|DSI Display Adaptor Board]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://wiki.st.com/stm32mpu/wiki/Main_Page STM32 MPU wiki]&lt;br /&gt;
* [https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration STM32 MPU wiki - Device tree configuration]&lt;br /&gt;
* [https://wiki.st.com/stm32mpu/index.php/STM32MP15_resources STM32MP15 resources]&lt;br /&gt;
* [https://www.96boards.org 96Boards]&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=COM_iMX6_Linux&amp;diff=3858</id>
		<title>COM iMX6 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=COM_iMX6_Linux&amp;diff=3858"/>
		<updated>2023-10-20T06:45:49Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added Subpage for calibration of resistive touchscreens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Storage Layout ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
::[[Image:DHCM_Boot_Storage_imx6.jpg|500px|DHCOM Boot Storage i.MX6]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
:[[Image:DHCM_Storage_Layout_imx6.jpg|1000px|DHCOM Storage Layout i.MX6]]&lt;br /&gt;
&lt;br /&gt;
== Linux virtual machine for development ==&lt;br /&gt;
:* Please have a look at: &#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
=== Sources: Look at page [[DHCOM iMX6-D2#BSP Sources|i.MX6 BSP Sources]] ===&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-imx6qdl.git --branch dev/4.4.60_dhcom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-imx6qdl&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make imx6_dhcom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
*The built &amp;lt;font size=5&amp;gt;&amp;lt;tt&amp;gt;imx6&amp;lt;font color=&amp;quot;#B8A71A&amp;quot;&amp;gt;x&amp;lt;/font&amp;gt;-dhcom&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;#&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0EC3C1&amp;quot;&amp;gt;Y&amp;lt;/font&amp;gt;-&amp;lt;font color=&amp;quot;#C90646&amp;quot;&amp;gt;BOARD&amp;lt;/font&amp;gt;.dtb&amp;lt;/tt&amp;gt;&amp;lt;/font&amp;gt; devicetree files are available in &amp;lt;tt&amp;gt;arch/arm/boot/dts&amp;lt;/tt&amp;gt;&lt;br /&gt;
**&amp;lt;font color=&amp;quot;#B8A71A&amp;quot;&amp;gt;x = s, dl, d, q&amp;lt;/font&amp;gt;&lt;br /&gt;
**&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;# = 2 for HW200, 3 for HW300, 4 for HW400&amp;lt;/font&amp;gt;&lt;br /&gt;
**&amp;lt;font color=&amp;quot;#0EC3C1&amp;quot;&amp;gt;Y = B for Base, H for Hi-Speed-Interfaces&amp;lt;/font&amp;gt;&lt;br /&gt;
**&amp;lt;font color=&amp;quot;#C90646&amp;quot;&amp;gt;BOARD = pdk1, pdk2, ...&amp;lt;/font&amp;gt;&lt;br /&gt;
*The built &amp;lt;tt&amp;gt;zImage&amp;lt;/tt&amp;gt; kernel file will you find in &amp;lt;tt&amp;gt;arch/arm/boot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update the Kernel and Device Tree with U-Boot ===&lt;br /&gt;
:Please refere to the [[DHCOM Update Mechanism|DHCOM Update Mechanism for i.MX6]].&lt;br /&gt;
&lt;br /&gt;
=== Update Kernel and Device Tree on a running Linux ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
==== Kernel ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Copy the kernel &#039;&#039;&#039;zImage&#039;&#039;&#039; file to the path &#039;&#039;&#039;/boot&#039;&#039;&#039; (You can rename it after the Kernel version &#039;&#039;&#039;zImage_X.Y.Z&#039;&#039;&#039;)&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Check &#039;&#039;&#039;zImage_file&#039;&#039;&#039; variable in &#039;&#039;&#039;/boot/uLinuxEnv.txt&#039;&#039;&#039; (e.g. &amp;lt;tt&amp;gt;&#039;&#039;&#039;zImage_file=zImage_4.4.60&#039;&#039;&#039;&amp;lt;/tt&amp;gt;)&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==== Device Tree ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Copy the Device Tree &#039;&#039;&#039;*.dtb&#039;&#039;&#039; file to the path &#039;&#039;&#039;/boot/dtbs_X.Y.Z&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Check &#039;&#039;&#039;fdt_file&#039;&#039;&#039; variable in &#039;&#039;&#039;/boot/uLinuxEnv.txt&#039;&#039;&#039; (e.g. &amp;lt;tt&amp;gt;&#039;&#039;&#039;fdtfile=/dtbs_4.4.60/imx6dl-dhcom4B-pdk2.dtb&#039;&#039;&#039;&amp;lt;/tt&amp;gt;) &amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==== Reboot System ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; Restart the system (e.g. &amp;lt;tt&amp;gt;&#039;&#039;&#039;reboot&#039;&#039;&#039;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Make your own Device Tree for your board ===&lt;br /&gt;
:The recommended proceeding for making your our Device Tree should be the following:&lt;br /&gt;
&lt;br /&gt;
:1. Clone the DH Device Tree Board file and change it to fit for your board&lt;br /&gt;
::- Based on i.MX6 and PDK1 (works with i.MX6 HW200)&lt;br /&gt;
:::&amp;lt;code&amp;gt;imx6qdl-dh_pdk1.dtsi --&amp;gt; imx6qdl-COMPANY_BOARDNAME.dtsi&amp;lt;/code&amp;gt;&lt;br /&gt;
::- Based on i.MX6 and PDK2 (works with i.MX6 HW300)&lt;br /&gt;
:::&amp;lt;code&amp;gt;imx6qdl-dh_pdk2.dtsi --&amp;gt; imx6qdl-COMPANY_BOARDNAME.dtsi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:2. Clone the main Device Tree file and change the included boad file to yours&lt;br /&gt;
:: E.g. based on i.MX6DL HW300 with PDK2&lt;br /&gt;
:::&amp;lt;code&amp;gt;imx6dl-dhcom3B-pdk2.dts --&amp;gt; imx6dl-dhcom3B-BOARDNAME.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:3. Add your new main Device Tree file to &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; (located in the same folder)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;DH Device Tree pattern (Kernel 4.4.x)&#039;&#039;&#039;:&lt;br /&gt;
:[[Image:DHCM_Device_Tree_pattern.jpg|1200px|DHCOM Device Tree pattern]]&lt;br /&gt;
&lt;br /&gt;
== Rootfilesystem ==&lt;br /&gt;
&lt;br /&gt;
=== Available Rootfilesystems ===&lt;br /&gt;
:Please have a look at the [[DHCOM_iMX6-D2#Download binaries/images | iMX6 Images]] section.&lt;br /&gt;
&lt;br /&gt;
=== Login ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
dhcom login: &#039;&#039;&#039;root&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Password: &#039;&#039;&#039;foo&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reboot ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;# reboot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:or&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;# shutdown -r now&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shutdown ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;# poweroff&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:or&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;# shutdown -h now&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:Note: If the watchdog is active, the system will be reset.&lt;br /&gt;
&lt;br /&gt;
=== Calibrating the touchscreen (only on Debian 6.0) ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 400px; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;# ts_calibrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:Check the enviroment variable &amp;quot;TSLIB_TSDEVICE=/dev/input/event0&amp;quot; with &amp;lt;tt&amp;gt; printenv &amp;lt;/tt&amp;gt; if an error occurs.&lt;br /&gt;
&lt;br /&gt;
=== How to calibrate resistive touchscreens (only on Yocto images) ===&lt;br /&gt;
{{:Calibration of resistive touchscreens}}&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware == &lt;br /&gt;
&lt;br /&gt;
=== Ethernet Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM ENET 1||&amp;lt;tt&amp;gt;ethsom0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM ENET 2||&amp;lt;tt&amp;gt;ethsom1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serial (UART) Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM (FF) UART 1||&amp;lt;tt&amp;gt;/dev/ttymxc0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM (BT) UART 2 ||&amp;lt;tt&amp;gt;/dev/ttymxc4&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM (STD) UART 3 ||&amp;lt;tt&amp;gt;/dev/ttymxc3&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== I2C Interfaces ===&lt;br /&gt;
:Hardware revision &#039;&#039;&#039;300&#039;&#039;&#039; and &#039;&#039;&#039;newer&#039;&#039;&#039; (dhcom3.., dhcom4.., ...)&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM I2C 1||&amp;lt;tt&amp;gt;/dev/i2c-1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM I2C 2 ||&amp;lt;tt&amp;gt;/dev/i2c-0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||On Module Devices ||&amp;lt;tt&amp;gt;/dev/i2c-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:Hardware revision &#039;&#039;&#039;100 / 200&#039;&#039;&#039; (dhcom1.. / dhcom2..)&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM I2C 1||&amp;lt;tt&amp;gt;/dev/i2c-0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM I2C 2 ||&amp;lt;tt&amp;gt;/dev/i2c-1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||On Module Devices ||&amp;lt;tt&amp;gt;/dev/i2c-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== SPI Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||&amp;lt;b&amp;gt;Device&amp;lt;/b&amp;gt;||&amp;lt;b&amp;gt;Kernel &amp;lt;= 5.4.xxx&amp;lt;/b&amp;gt;||&amp;lt;b&amp;gt;Kernel &amp;gt;= 5.10.xxx&amp;lt;/b&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM SPI 1||&amp;lt;tt&amp;gt;/dev/spidev0.2&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;/dev/spidev0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM SPI 2 ||&amp;lt;tt&amp;gt;/dev/spidev1.0&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;/dev/spidev1.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;&#039;Remark:&#039;&#039;&#039; DHCOM SPI1 interface doesn‘t work with DHCOM Premium Developer Kit (HD00013).&lt;br /&gt;
::Reason: At DHCOM Premium Developer Kit SPI 1 isn‘t connected, because otherwise i.MX6 doesn‘t boot with the current schematic.&lt;br /&gt;
&lt;br /&gt;
=== MMC/SD/eMMC Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM SD-Interface ||&amp;lt;tt&amp;gt;/dev/mmcblk0pX&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||on module µSD Card ||&amp;lt;tt&amp;gt;/dev/mmcblk1pX&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||on module eMMC ||&amp;lt;tt&amp;gt;/dev/mmcblk2pX&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
: &#039;X&#039; has to be replaced with the partition number&lt;br /&gt;
&lt;br /&gt;
=== Control the display brightness ===&lt;br /&gt;
:Set brightness level (X = 0...10)&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo X &amp;gt;/sys/class/backlight/display/brightness&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Control GPIOs ===&lt;br /&gt;
:See which gpio is already used by the system&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat /sys/kernel/debug/gpio &amp;amp;#x007C; grep -v &amp;quot;gpio-... ( &amp;quot;&#039;&#039;&amp;lt;/tt&amp;gt; &amp;lt;br&amp;gt;or&amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;&#039;&#039;gpioinfo &amp;amp;#x007C; grep -v unnamed&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 1000px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DHCOM Name: !! alt. DHCOM Name: !! SO-DIMM Pin# !! CPU Pad Name !! Linux &amp;lt;GPIO#&amp;gt; * !! gpiod label (deprecated): !! gpiod label:&lt;br /&gt;
|-&lt;br /&gt;
| GPIO A || || 154 || PAD_GPIO_2 || 2 || A || DHCOM-A&lt;br /&gt;
|-&lt;br /&gt;
| GPIO B || || 156 || PAD_GPIO_4 || 4 || B || DHCOM-B&lt;br /&gt;
|-&lt;br /&gt;
| GPIO C || || 162 || PAD_GPIO_5 || 5 || C || DHCOM-C&lt;br /&gt;
|-&lt;br /&gt;
| GPIO D || || 163 || PAD_CSI0_DAT17 || 163 || D || DHCOM-D&lt;br /&gt;
|-&lt;br /&gt;
| GPIO E || || 164 || PAD_GPIO_19 || 101 || E || DHCOM-E&lt;br /&gt;
|-&lt;br /&gt;
| GPIO F || || 165 || PAD_DI0_PIN4 || 116 || F || DHCOM-F&lt;br /&gt;
|-&lt;br /&gt;
| GPIO G || || 167 || PAD_EIM_D27 || 91 || G || DHCOM-G&lt;br /&gt;
|-&lt;br /&gt;
| GPIO H || || 173 || PAD_KEY_ROW0 || 103 || H || DHCOM-H&lt;br /&gt;
|-&lt;br /&gt;
| GPIO I || || 175 || PAD_KEY_COL1 || 104 || I || DHCOM-I&lt;br /&gt;
|-&lt;br /&gt;
| GPIO J || CIF HSYNC || 74 || PAD_NANDF_CS1 || 174 || J || DHCOM-J&lt;br /&gt;
|-&lt;br /&gt;
| GPIO K || CIF PCLK || 72 || PAD_NANDF_CS2 || 175 || K || DHCOM-K&lt;br /&gt;
|-&lt;br /&gt;
| GPIO L || CIF MCLK || 70 || PAD_KEY_ROW1 || 105 || L || DHCOM-L&lt;br /&gt;
|-&lt;br /&gt;
| GPIO M || CIF VSYNC || 68 || PAD_SD3_DAT5 || 192 || M || DHCOM-M&lt;br /&gt;
|-&lt;br /&gt;
| GPIO N || CIF D9 || 66 || PAD_SD3_DAT4 || 193 || N || DHCOM-N&lt;br /&gt;
|-&lt;br /&gt;
| GPIO O || CIF D8 || 64 || PAD_CSI0_VSYNC || 149 || O || DHCOM-O&lt;br /&gt;
|-&lt;br /&gt;
| GPIO P || CIF D7 || 62 || PAD_GPIO_18 || 205 || P || DHCOM-P&lt;br /&gt;
|-&lt;br /&gt;
| GPIO Q || CIF D6 || 60 || PAD_SD1_CMD || 18 || Q || DHCOM-Q&lt;br /&gt;
|-&lt;br /&gt;
| GPIO R || CIF D5 || 58 || PAD_SD1_DAT0 || 16 || R || DHCOM-R&lt;br /&gt;
|-&lt;br /&gt;
| GPIO S || CIF D4 || 56 || PAD_SD1_DAT1 || 17 || S || DHCOM-S&lt;br /&gt;
|-&lt;br /&gt;
| GPIO T || CIF D3 || 54 || PAD_SD1_DAT2 || 19 || T || DHCOM-T&lt;br /&gt;
|-&lt;br /&gt;
| GPIO U || CIF D2 || 52 || PAD_SD1_CLK || 20 || U || DHCOM-U&lt;br /&gt;
|-&lt;br /&gt;
| GPIO V || CIF D1 || 50 || PAD_CSI0_PIXCLK || 146 || V || DHCOM-V&lt;br /&gt;
|-&lt;br /&gt;
| GPIO W || CIF D0 || 48 || PAD_CSI0_MCLK || 147 || W || DHCOM-W&lt;br /&gt;
|-&lt;br /&gt;
| INT HIGHEST PRIORITY || || 151 || PAD_KEY_COL0|| 102 || INT || DHCOM-INT&lt;br /&gt;
|}&lt;br /&gt;
:: * = Valid if you didn&#039;t change the CONFIG_ARCH_NR_GPIO value in kernel config &#039;&#039;&#039;AND&#039;&#039;&#039; if your kernel doesn&#039;t probe another GPIO controller before the imx6 GPIO controller&lt;br /&gt;
:: &#039;&#039;&#039;Remark:&#039;&#039;&#039; Depending on your board configuration some of the additional gpios shared with the camera interface are not available on your system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;GPIO pin configuration&#039;&#039;&#039;&lt;br /&gt;
:: The default Linux Device Tree pin configurarion of the DHCOM GPIOs A - W is &amp;lt;code&amp;gt;0x400120b0&amp;lt;/code&amp;gt;&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Pad Mux Register (0x020E_xxxx) = 0x0000_0015&lt;br /&gt;
  SION:        1  Enabled (Force input path of pad)&lt;br /&gt;
  MUX_MODE: 0101  ALT5&lt;br /&gt;
 &lt;br /&gt;
 Pad Control Register (0x020E_xxxx) = 0x0001_20B0&lt;br /&gt;
  HYS:         1  Hysteresis enabled (Schmitt trigger input)&lt;br /&gt;
  ==============&lt;br /&gt;
  PUS:        00  100k Pull Down&lt;br /&gt;
  PUE:         1  PULL (Pull enabled)&lt;br /&gt;
  PKE:         0  Disable (Pull/Keeper disabled)&lt;br /&gt;
  ODE:         0  Disable (Output is CMOS)&lt;br /&gt;
  RESERVED:  000&lt;br /&gt;
  --------------&lt;br /&gt;
  SPEED:      10  imx6:    100MHz (medium)&lt;br /&gt;
                  imx6ull: 100MHz (medium)&lt;br /&gt;
  DSE:       110  Drive strength imx6:     40 Ohm&lt;br /&gt;
                                 imx6ull:  43 Ohm @ 3.3V&lt;br /&gt;
  RESERVED    00&lt;br /&gt;
  SRE:         0  SLOW (Slow Slew Rate)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Controlled by gpiod tools (need Kernel v4.7 or higher)&#039;&#039;&#039;&lt;br /&gt;
::Set state&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset $(gpiofind GPIO_LABEL)=0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset $(gpiofind GPIO_LABEL)=1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::Get state&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioget $(gpiofind GPIO_LABEL)&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioget $(gpiofind GPIO_LABEL)&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:: &#039;&#039;&#039;Remark:&#039;&#039;&#039; GPIO_LABEL could be DHCOM-A, DHCOM-B, DHCOM-C, ... see table above&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Controlled by sysfs (since Kernel v4.8 deprecated)&#039;&#039;&#039;&lt;br /&gt;
::Export&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo &amp;lt;GPIO#&amp;gt; &amp;gt;/sys/class/gpio/export&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:: &#039;&#039;&#039;Remark:&#039;&#039;&#039; Have a look into &amp;lt;tt&amp;gt; /sys/class/gpio/ &amp;lt;/tt&amp;gt; for already configured gpios.&lt;br /&gt;
::Set direction&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo in &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/direction&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo out &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/direction&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::Set state&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo 0 &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/value&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo 1 &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/value&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::Get state&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat /sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/value&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Initialize and Test CAN Interface ===&lt;br /&gt;
:Initialize:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 up type can bitrate 500000&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Send test message via cansend (part of can-utils):&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cansend can0 100#11.2233.44556677.88&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Receive can messages (part of can-utils):&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;candump can0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Get can-utils:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;apt-get install can-utils&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parallel Address- / Databus ===&lt;br /&gt;
&lt;br /&gt;
:To use the 16-bit address / databus from Linux userspace you can use the UIO driver interface. To enable and configure the interface it is necessary to setup the WEIM controller with the device tree. See the documentation of the device tree bindings of weim [https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/Documentation/devicetree/bindings/bus/imx-weim.txt here].&lt;br /&gt;
&lt;br /&gt;
:Here is an example code which demonstrates how to do enable and configure the WEIM interface (parallel address- / databus):&lt;br /&gt;
:{|&lt;br /&gt;
|&amp;lt;tt&amp;gt;&lt;br /&gt;
 &amp;amp;weim {&lt;br /&gt;
 	pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
 	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_dhcom_weim &amp;amp;pinctrl_dhcom_weim_cs0 &amp;amp;pinctrl_dhcom_weim_cs1&amp;gt;;&lt;br /&gt;
 	#address-cells = &amp;lt;2&amp;gt;;&lt;br /&gt;
 	#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
 	/* it is necessary to setup 2x 64MB otherwise setting gpr fails */&lt;br /&gt;
 	ranges = &amp;lt;0 0  0x08000000  0x04000000&amp;gt;,					// Chip select 0 == DHCOM CS A&lt;br /&gt;
 		 &amp;lt;1 0  0x0c000000  0x04000000&amp;gt;;					// Chip select 1 == DHCOM CS B&lt;br /&gt;
 	fsl,weim-cs-gpr = &amp;lt;&amp;amp;gpr&amp;gt;;&lt;br /&gt;
 	status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	uiomap_cs0@0,0 {&lt;br /&gt;
 		compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
 		reg = &amp;lt;0 0x00000000 0x04000000&amp;gt;;&lt;br /&gt;
 		reg-names = &amp;quot;uio_cs0&amp;quot;;&lt;br /&gt;
 		interrupt-parent = &amp;lt;&amp;amp;gpio1&amp;gt;;&lt;br /&gt;
 		interrupts = &amp;lt;2 2&amp;gt;;						// Add gpio A == interrupt&lt;br /&gt;
 		#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
 		#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
 		fsl,weim-cs-timing = &amp;lt;0x00610089 0x00001002 0x0F011061&lt;br /&gt;
 				      0x00000000 0x0F068A31 0x00000000&amp;gt;;&lt;br /&gt;
 		status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	uiomap_cs1@0,1 {&lt;br /&gt;
 		compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
 		reg = &amp;lt;1 0x00000000 0x04000000&amp;gt;;&lt;br /&gt;
 		reg-names = &amp;quot;uio_cs1&amp;quot;;&lt;br /&gt;
 		interrupt-parent = &amp;lt;&amp;amp;gpio1&amp;gt;;&lt;br /&gt;
 		interrupts = &amp;lt;4 2&amp;gt;;						// Add gpio B == interrupt&lt;br /&gt;
 		#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
 		#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
 		fsl,weim-cs-timing = &amp;lt;0x00610089 0x00001002 0x0F011061&lt;br /&gt;
 				      0x00000000 0x0F068A31 0x00000000&amp;gt;;&lt;br /&gt;
 		status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
: We have already written some demo code at [https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6qdl-dhcom_cfg-weim.dtsi /arch/arm/boot/dts/imx6qdl-dhcom_cfg-weim.dtsi]. It is easy to enable in the matching device-tree file:&lt;br /&gt;
::*[https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6s-dhcom3B-pdk2.dts /arch/arm/boot/dts/imx6s-dhcom3B-pdk2.dts]&lt;br /&gt;
::*[https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6dl-dhcom3B-pdk2.dts /arch/arm/boot/dts/imx6dl-dhcom3B-pdk2.dts]&lt;br /&gt;
::*[https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6d-dhcom3B-pdk2.dts /arch/arm/boot/dts/imx6d-dhcom3B-pdk2.dts]&lt;br /&gt;
::*[https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6q-dhcom3B-pdk2.dts /arch/arm/boot/dts/imx6q-dhcom3B-pdk2.dts]&lt;br /&gt;
:{|&lt;br /&gt;
| &amp;lt;tt&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF1010&amp;quot;&amp;gt;- // #include &amp;quot;imx6qdl-dhcom_cfg-weim.dtsi&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#00FF10&amp;quot;&amp;gt;+ #include &amp;quot;imx6qdl-dhcom_cfg-weim.dtsi &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To use the generic uio driver it has to be enabled in the kernel configuration (&amp;lt;code&amp;gt;[[#Linux Kernel|make menuconfig]]&amp;lt;/code&amp;gt;)&lt;br /&gt;
::*Device Drivers -&amp;gt; Userspace I/O Drivers -&amp;gt; Userspace I/O platform driver with generic IRQ handling&lt;br /&gt;
: The device-tree of_id of the uio driver has to be set via kernel command line&lt;br /&gt;
::*Add &amp;quot;optargs=&#039;uio_pdrv_genirq.of_id=generic-uio&#039;&amp;quot; to uLinuxEnv.txt&lt;br /&gt;
&lt;br /&gt;
:Example for a UIO userspace driver:&lt;br /&gt;
:* [[media:uio_access.zip| uio_access.cpp]]&lt;br /&gt;
:* for further information have a look at the paper [https://www.osadl.org/fileadmin/dam/rtlws/12/Koch.pdf Userspace I/O drivers in a realtime context]&lt;br /&gt;
&lt;br /&gt;
=== Configure your own display ===&lt;br /&gt;
&lt;br /&gt;
:To configure your own display you have to do the following steps:&lt;br /&gt;
&lt;br /&gt;
:1. Configure your display and build a settings file by our tool DHCOMSettingsGenerator ([[media:DHCOMSettingsGeneratorV2_V2.0.0.2.zip|Download v2.0.0.2]])&lt;br /&gt;
&lt;br /&gt;
:2. Place generated file into the first partition (label: &amp;quot;boot&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
:3. Create a symbolic link to the file settings.bin ($ ln -s YourSettingsFile.bin settings.bin)&lt;br /&gt;
&lt;br /&gt;
:Remake: It is still possible to config the display via Device Tree e.g. &amp;lt;code&amp;gt;[https://github.com/dh-electronics/linux-imx6qdl/blob/dev/4.4.60_dhcom/arch/arm/boot/dts/imx6qdl-dh_pdk2.dtsi dev/4.4.60_dhcom/arch/arm/boot/dts/imx6qdl-dh_pdk2.dtsi]&amp;lt;/code&amp;gt; (not recommended by DH)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;The following picture showing the sequence and priorities:&#039;&#039;&#039;&lt;br /&gt;
:[[Image:DHCM_Display_Settings.jpg|1300px|DHCOM Display Settings]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For detailed description of the &#039;&#039;&#039;display boot args&#039;&#039;&#039; please have a look at [[DHCOM iMX6 Bootloader U-Boot#Display and Hardware settings|Display and Hardware settings]] of the iMX6 Bootloader.&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
:*[[Linux Kernel Features | Linux Kernel Features ]]&lt;br /&gt;
:*[[ELBE Overview| Embedded Linux Build Environment (ELBE)]]&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3857</id>
		<title>DHCOM STM32MP1 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3857"/>
		<updated>2023-10-20T06:40:51Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added Subpage for calibration of resistive touchscreens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Linux virtual machine for development ==&lt;br /&gt;
:* Please have a look at: &#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Sources: Look at page [[DHCOM iMX6ULL-D2#BSP Sources|i.MX6ULL BSP Sources]] === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-stm32mp1.git --branch dev/5.4.69_dhsom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-stm32mp1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make stm32mp1_dhsom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Create the FIT-image with our script ([[media:Dh-create-fitimage_1.0_all.deb|Download link]])&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interactive mode for selecting device trees&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Device trees are set as parameter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees to include (e.g. if you want to include the device tree for the PDK2 include the number of &amp;lt;tt&amp;gt;&#039;&#039;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb&#039;&#039;&amp;lt;/tt&amp;gt; (usually 3).&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees overlays to include (e.g. for the PDK2 enter the files which contain &amp;lt;tt&amp;gt;&#039;&#039;PDK2&#039;&#039;&amp;lt;/tt&amp;gt; (usually 8 9 10 11 12 13 14).&lt;br /&gt;
|&lt;br /&gt;
(Example is for the PDK2) &amp;lt;br&amp;gt;&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage --dtb ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb --dtbo ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-460-200-x11.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-497-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-505-200-x12-ch101olhlwh.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x21.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x22.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-560-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-638-100-x12-rpi7inch.dtbo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DHSOM device tree structure ===&lt;br /&gt;
 DHCOM and PDK2&lt;br /&gt;
 --------------&lt;br /&gt;
 * stm32mp15xx-dhcom-som.dtsi [1] -------------------------.&lt;br /&gt;
    [ STM32MP15xx based DHCOM SoM DT, common for all    ]   |&lt;br /&gt;
    [ variants of the SoC populated on the SoM.         ]   +--.&lt;br /&gt;
                                                            |  |&lt;br /&gt;
 * stm32mp15xx-dhcom-pdk2.dtsi -----------------------------&#039;  |&lt;br /&gt;
    [ STM32MP15xx based DHCOM PDK2 carrier board DT,    ]      |&lt;br /&gt;
    [ common for all of the PDK2 and SoM combinations.  ]      |&lt;br /&gt;
                                                               |&lt;br /&gt;
    * stm32mp157c-dhcom-pdk2.dts &amp;lt;-----------------------------&#039;&lt;br /&gt;
      [ STM32MP157C based DHCOM SoM populated on PDK2   ]      :&lt;br /&gt;
      [ carrier board combined DT. This DT describes    ]      :&lt;br /&gt;
      [ specific combination of SoM populated on PDK2   ]      :&lt;br /&gt;
      [ carrier board.                                  ]      :&lt;br /&gt;
                                                               :&lt;br /&gt;
                                                               :&lt;br /&gt;
        Both common SoM and PDK2 DTs can be extended by DTOs   :&lt;br /&gt;
    .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - &#039;&lt;br /&gt;
    :   DTOs add additional bindings into base DTs at runtime.&lt;br /&gt;
    :&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-460-200-x11.dts&lt;br /&gt;
    : [ DH 460-200 FMC2 SRAM expansion card inserted into header X11.   ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-497-200-x12.dts&lt;br /&gt;
    : [ DH 497-200 7&amp;quot; 800x480 DPI TFT LCD and resistive touchscreen     ]&lt;br /&gt;
    : [ expansion card inserted into header X12.                        ]&lt;br /&gt;
    : [ This DT uses common DPI panel base DT, see [2].                 ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-505-200-x12-ch101olhlwh.dts&lt;br /&gt;
    : [ DH 505-200 10&amp;quot; 1280x800 LVDS TFT LCD and capacitive             ]&lt;br /&gt;
    : [ touchscreen expansion card inserted into header X12.            ]&lt;br /&gt;
    : [ The panel interface is LVDS, connected to SoC via DPI-to-LVDS   ]&lt;br /&gt;
    : [ bridge chip OnSemi FIN3385.                                     ]&lt;br /&gt;
    : [ This DT uses common CH101 panel base DT, see [3].               ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-560-200-x12.dts&lt;br /&gt;
    : [ DH 560-200 7&amp;quot; 800x480 DPI TFT LCD and capacitive touchscreen    ]&lt;br /&gt;
    : [expansion card inserted into header X12.                         ]&lt;br /&gt;
    : [ This DT uses common DPI panel base DT, see [2].                 ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-638-100-x12-rpi7inch.dts&lt;br /&gt;
    : [ DH 638-100 adapter card connected to 7&amp;quot; 800x480 DSI TFT LCD and ]&lt;br /&gt;
    : [ capacitive touchscreen module, and inserted into header X12.    ]&lt;br /&gt;
    : [ The panel interface is DPI, connected to SoC via DSI-to-DPI     ]&lt;br /&gt;
    : [ bridge chip Toshiba TC358762.                                   ]&lt;br /&gt;
    : [ This DT uses common DPI panel base DT, see [2].                 ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-672-100-x18.dts&lt;br /&gt;
    : [ DH 672-100 CAN transceiver chip expansion board inserted into   ]&lt;br /&gt;
    : [ header X18.                                                     ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-531-100-x21.dts&lt;br /&gt;
    : [ DH 531-100 I2C and SPI EEPROM expansion board inserted into     ]&lt;br /&gt;
    : [ header X21.                                                     ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-pdk2-overlay-531-100-x22.dts&lt;br /&gt;
      [ DH 531-100 I2C and SPI EEPROM expansion board inserted into     ]&lt;br /&gt;
      [ header X22.                                                     ]&lt;br /&gt;
&lt;br /&gt;
 DHCOM and PicoITX&lt;br /&gt;
 -----------------&lt;br /&gt;
 * stm32mp15xx-dhcom-som.dtsi -----------------------------.&lt;br /&gt;
    [ STM32MP15xx based DHCOM SoM DT, see also [1] above.]  |&lt;br /&gt;
                                                            +----.&lt;br /&gt;
                                                            |    |&lt;br /&gt;
 * stm32mp15xx-dhcom-picoitx.dtsi --------------------------&#039;    |&lt;br /&gt;
    [ STM32MP15xx based DHCOM PicoITX carrier board DT,  ]       |&lt;br /&gt;
    [ common for all of the PicoITX and SoM combinations.]       |&lt;br /&gt;
                                                                 |&lt;br /&gt;
    * stm32mp157c-dhcom-picoitx.dts &amp;lt;----------------------------&#039;&lt;br /&gt;
      [ STM32MP157C based DHCOM SoM populated on PicoITX ]       :&lt;br /&gt;
      [ carrier board combined DT. This DT describes     ]       :&lt;br /&gt;
      [ specific combination of SoM populated on PicoITX ]       :&lt;br /&gt;
      [ carrier board.                                   ]       :&lt;br /&gt;
                                                                 :&lt;br /&gt;
                                                                 :&lt;br /&gt;
        Both common SoM and PicoITX DTs can be extended by DTOs  :&lt;br /&gt;
    .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - &#039;&lt;br /&gt;
    :   DTOs add additional bindings into base DTs at runtime.&lt;br /&gt;
    :&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-picoitx-overlay-548-200-x2-mi0700s4t-6.dts&lt;br /&gt;
    : [ DH 548-200 7&amp;quot; 800x480 DPI TFT LCD and resistive touchscreen   ]&lt;br /&gt;
    : [ expansion card inserted into header X2.                       ]&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-picoitx-overlay-626-100-x2-ch101olhlwh.dts&lt;br /&gt;
      [ DH 626-100 10&amp;quot; 1280x800 LVDS TFT LCD and capacitive           ]&lt;br /&gt;
      [ touchscreen expansion card inserted into header X2.           ]&lt;br /&gt;
      [ The panel interface is LVDS, connected to SoC via DPI-to-LVDS ]&lt;br /&gt;
      [ bridge chip OnSemi FIN3385.                                   ]&lt;br /&gt;
      [ This DT uses common CH101 panel base DT, see [3].             ]&lt;br /&gt;
&lt;br /&gt;
 DHCOM and DRC02&lt;br /&gt;
 ---------------&lt;br /&gt;
 * stm32mp15xx-dhcom-som.dtsi -----------------------------.&lt;br /&gt;
    [ STM32MP15xx based DHCOM SoM DT, see also [1] above.]  |&lt;br /&gt;
                                                            +--.&lt;br /&gt;
                                                            |  |&lt;br /&gt;
 * stm32mp15xx-dhcom-picoitx.dtsi --------------------------&#039;  |&lt;br /&gt;
    [ STM32MP15xx based DHCOM DRC02 carrier board DT,  ]       |&lt;br /&gt;
    [ common for all of the DRC02 and SoM combinations.]       |&lt;br /&gt;
                                                               |&lt;br /&gt;
    * stm32mp153c-dhcom-picoitx.dts &amp;lt;--------------------------&#039;&lt;br /&gt;
      [ STM32MP153C based DHCOM SoM populated on DRC02 ]       :&lt;br /&gt;
      [ carrier board combined DT. This DT describes   ]       :&lt;br /&gt;
      [ specific combination of SoM populated on DRC02 ]       :&lt;br /&gt;
      [ carrier board.                                 ]       :&lt;br /&gt;
                                                               :&lt;br /&gt;
                                                               :&lt;br /&gt;
        Both common SoM and DRC02 DTs can be extended by DTOs  :&lt;br /&gt;
    .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - &#039;&lt;br /&gt;
    :   DTOs add additional bindings into base DTs at runtime.&lt;br /&gt;
    :&lt;br /&gt;
    :&lt;br /&gt;
    * stm32mp15xx-dhcom-drc02-overlay-wifi-rsi.dts&lt;br /&gt;
      [ DH DHCOM DRC02 populated with DHCOM carrying RSI WiFi.        ]&lt;br /&gt;
      [ The carrier board MicroSD card is not available in this setup.]&lt;br /&gt;
&lt;br /&gt;
 DHCOM common DTSIs&lt;br /&gt;
 ------------------&lt;br /&gt;
    * stm32mp15xx-dhcom-overlay-panel-dpi-ch101olhlwh.dtsi [3]&lt;br /&gt;
      [ Common CH101 panel DT bindings used by all DHCOM systems.     ]&lt;br /&gt;
      [ This DT uses common DPI panel base DT, see [2].               ]&lt;br /&gt;
    * stm32mp15xx-dhcom-overlay-panel-dpi.dtsi [2]&lt;br /&gt;
      [ Common DPI panel DT bindings used by all DHCOM systems.       ]&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware == &lt;br /&gt;
&lt;br /&gt;
=== Control GPIOs ===&lt;br /&gt;
:Show gpio definition in Linux&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioinfo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:: &#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
:: gpiochip0 = STM port-A, gpiochip1 = STM port-B, ...&lt;br /&gt;
&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 800px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DHCOM Name: !! alt. DHCOM Name: !! SO-DIMM Pin# !! CPU Pad Name !! gpiod label:&lt;br /&gt;
|-&lt;br /&gt;
| GPIO A || || 154 || PF3 || DHCOM-A&lt;br /&gt;
|-&lt;br /&gt;
| GPIO B || || 156 || PD6 || DHCOM-B&lt;br /&gt;
|-&lt;br /&gt;
| GPIO C || || 162 || PG0 || DHCOM-C&lt;br /&gt;
|-&lt;br /&gt;
| GPIO D || || 163 || PD12 || DHCOM-D&lt;br /&gt;
|-&lt;br /&gt;
| GPIO E || || 164 || PC6 || DHCOM-E&lt;br /&gt;
|-&lt;br /&gt;
| GPIO F || || 165 || PD11 || DHCOM-F&lt;br /&gt;
|-&lt;br /&gt;
| GPIO G || || 167 || PI0 || DHCOM-G&lt;br /&gt;
|-&lt;br /&gt;
| GPIO H || || 173 || PI2 || DHCOM-H&lt;br /&gt;
|-&lt;br /&gt;
| GPIO I || || 175 || PI3 || DHCOM-I&lt;br /&gt;
|-&lt;br /&gt;
| GPIO J || CIF HSYNC || 74 || PH8 || DHCOM-J&lt;br /&gt;
|-&lt;br /&gt;
| GPIO K || CIF PCLK || 72 || PA6 || DHCOM-K&lt;br /&gt;
|-&lt;br /&gt;
| GPIO L || CIF MCLK || 70 || PG8 || DHCOM-L&lt;br /&gt;
|-&lt;br /&gt;
| GPIO M || CIF VSYNC || 68 || PI5 || DHCOM-M&lt;br /&gt;
|-&lt;br /&gt;
| GPIO N || CIF D9 || 66 || PH7 || DHCOM-N&lt;br /&gt;
|-&lt;br /&gt;
| GPIO O || CIF D8 || 64 || PI1 || DHCOM-O&lt;br /&gt;
|-&lt;br /&gt;
| GPIO P || CIF D7 || 62 || PE6 || DHCOM-P&lt;br /&gt;
|-&lt;br /&gt;
| GPIO Q || CIF D6 || 60 || PB8 || DHCOM-Q&lt;br /&gt;
|-&lt;br /&gt;
| GPIO R || CIF D5 || 58 || PI4 || DHCOM-R&lt;br /&gt;
|-&lt;br /&gt;
| GPIO S || CIF D4 || 56 || PH14 || DHCOM-S&lt;br /&gt;
|-&lt;br /&gt;
| GPIO T || CIF D3 || 54 || PH12 || DHCOM-T&lt;br /&gt;
|-&lt;br /&gt;
| GPIO U || CIF D2 || 52 || PH11 || DHCOM-U&lt;br /&gt;
|-&lt;br /&gt;
| GPIO V || CIF D1 || 50 || PH10 || DHCOM-V&lt;br /&gt;
|-&lt;br /&gt;
| GPIO W || CIF D0 || 48 || PH9 || DHCOM-W&lt;br /&gt;
|-&lt;br /&gt;
| INT HIGHEST PRIORITY || || 151 || PI8 || DHCOM-INT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Set state&#039;&#039;&#039;&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset $(gpiofind DHCOM-&amp;lt;#&amp;gt;)=0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset $(gpiofind DHCOM-&amp;lt;#&amp;gt;)=1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::or&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset gpiochip&amp;lt;port#&amp;gt; &amp;lt;pin#&amp;gt;=0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioset gpiochip&amp;lt;port#&amp;gt; &amp;lt;pin#&amp;gt;=1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Get state&#039;&#039;&#039;&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioget $(gpiofind DHCOM-&amp;lt;#&amp;gt;)&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::or&lt;br /&gt;
::{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gpioget gpiochip&amp;lt;port#&amp;gt; &amp;lt;pin#&amp;gt;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== RS-485 (only picoITX or DRC02) ===&lt;br /&gt;
:&#039;&#039;&#039;RS-485 device&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 2||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Compilation on target&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_test_v1.1.c -o tty_rs485_test&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_flags_v1.0.c -o tty_rs485_flags&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Show UART flags&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_flags /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Set tty device to raw mode&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;stty -F /dev/ttySTM2 115200 raw -echo -echoe&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo -n -e &amp;quot;\n\rHallo RS485 Welt!&amp;quot; &amp;amp;brvbar; ./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Receive data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Download example source code&#039;&#039;&#039;&lt;br /&gt;
:* [[media:tty_rs485_test_v1.1.zip | tty_rs485_test_v1.1.c &amp;amp; tty_rs485_flags_v1.0.c]]&lt;br /&gt;
&lt;br /&gt;
=== CAN interface ===&lt;br /&gt;
:&#039;&#039;&#039;Setup CAN interface with baudrate 500kbit/sec.&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 up type can bitrate 500000&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Start to listen on CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;candump can0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send test message&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cansend can0 100#11.2233.44556677.88&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Deinitialize CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 down&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UART Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 1 ||&amp;lt;tt&amp;gt;/dev/ttySTM0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM UART 2 ||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM UART 3 ||&amp;lt;tt&amp;gt;/dev/ttySTM1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== I2C Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM I2C 1||&amp;lt;tt&amp;gt;/dev/i2c-1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM I2C 2 ||&amp;lt;tt&amp;gt;/dev/i2c-0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||On Module Devices ||&amp;lt;tt&amp;gt;/dev/i2c-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== ADC/DAC Interfaces ===&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 800px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DHCOM Name !! SO-DIMM Pin# !! PDK2 Header !! Linux device !! sysfs in/out name !! STM32MP1 pin&lt;br /&gt;
|-&lt;br /&gt;
| AD0 || 8 || X18 Pin 8|| iio:device2 || in_voltage0_* || ANA0&lt;br /&gt;
|-&lt;br /&gt;
| AD1 || 6 || X18 Pin 6 || iio:device3 || in_voltage1_* || ANA1&lt;br /&gt;
|-&lt;br /&gt;
| AD2 || 4 || X18 Pin 4 || iio:device0 || out_voltage1_* || PA4_DAC_OUT1&lt;br /&gt;
|-&lt;br /&gt;
| AD3 || 2 || X18 Pin 2 || iio:device1 || out_voltage2_* || PA5_DAC_OUT2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ADC inputs ====&lt;br /&gt;
:sysfs path &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;/sys/bus/iio/devices/iio:device*&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Show offset and voltage scale&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat in_voltage_scale&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat in_voltage_offset&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
:*Voltage = (RAW + OFFSET) * SCALE&lt;br /&gt;
:*Maximum input voltage = 2.9V (VDDA is connected to PMIC LDO1)&lt;br /&gt;
&lt;br /&gt;
:Read analog value&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat in_voltage*_raw&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DAC outputs ====&lt;br /&gt;
:sysfs path &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;/sys/bus/iio/devices/iio:device*&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Show output voltage scale&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cat out_voltage*_scale&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Enable DAC&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo 0 &amp;gt; out_voltage*_powerdown&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
:*Voltage = RAW * SCALE&lt;br /&gt;
:*Maximum output voltage = 2.9V (VDDA is connected to PMIC LDO1)&lt;br /&gt;
&lt;br /&gt;
:Set analog output value&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo xxxx &amp;gt; out_voltage*_raw&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
==== How to connect to  WiFi network with WPA2 PSK? ====&lt;br /&gt;
:&#039;&#039;&#039;Establish connection&#039;&#039;&#039; &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;wpa_passphrase &amp;quot;SSID&amp;quot; &amp;gt;/etc/wpa_supplicant.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:-&amp;gt; In the next step, please enter the password&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;ip link set wlan0 up&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;udhcpc -i wlan0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:&#039;&#039;&#039;Disconnect&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;fg&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:-&amp;gt; Moves a background process  wpa_supplicant on your current Linux shell to the foreground. Then Press &amp;quot;Strg + C&amp;quot; to end the process.&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;ip link set wlan0 down&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== How to set up WiFi AP? ====&lt;br /&gt;
:Create new AP configuration file&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;nano /etc/hostapd_myAP.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:Insert the following to the file: (SSID = rsiwifi and default password = rsiTest1)&lt;br /&gt;
 ctrl_interface=/var/run/hostapd&lt;br /&gt;
 ctrl_interface_group=0&lt;br /&gt;
 interface=wlan0&lt;br /&gt;
 ssid=rsiwifi&lt;br /&gt;
 hw_mode=g&lt;br /&gt;
 channel=6&lt;br /&gt;
 wpa=2&lt;br /&gt;
 wpa_passphrase=rsiTest1&lt;br /&gt;
 wpa_key_mgmt=WPA-PSK&lt;br /&gt;
:Configure the AP wlan0 interface or start DHCP server on it etc.&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;nano /etc/systemd/network/80-wlan0.network&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:Insert the following to the file: &lt;br /&gt;
 [Match]&lt;br /&gt;
 Path=platform-soc&lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 Address=11.11.11.11/24&lt;br /&gt;
 DHCPServer=yes&lt;br /&gt;
:-&amp;gt; Reboot the system&lt;br /&gt;
&lt;br /&gt;
:Start hostapd to start the AP:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;hostapd -d hostapd_DRC02.conf &amp;gt;/dev/null &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Stop AP&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;fg&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
:-&amp;gt; Moves a background process hostapd on your current Linux shell to the foreground. Then Press &amp;quot;Strg + C&amp;quot; to end the process.&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;ip link set wlan0 down&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== How to enable WiFi/BT support, if missing? How to configure RSI mode (WiFi alone, Bluetooth, ...)? ====&lt;br /&gt;
:The needed sdmmc3 interface will be activated by the stm32mp15xx-dhcom-som.dtsi file. This is included by default with picoITX, PDK2 and DRC02 configuration.&lt;br /&gt;
&lt;br /&gt;
:Next to this the kernel module is needed. The Yocto build instructions can be found at the following file: &lt;br /&gt;
:https://github.com/dh-electronics/meta-dhsom-stm32-bsp/blob/dunfell-3.1/conf/machine/dh-stm32mp1-dhcom-picoitx.conf&lt;br /&gt;
&lt;br /&gt;
 # Ship kernel modules&lt;br /&gt;
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += &amp;quot; linux-firmware-rs9116 &amp;quot;&lt;br /&gt;
 KERNEL_MODULE_AUTOLOAD += &amp;quot; rsi_sdio &amp;quot;&lt;br /&gt;
 KERNEL_MODULE_PROBECONF += &amp;quot; rsi_sdio &amp;quot;&lt;br /&gt;
 module_conf_rsi_sdio = &amp;quot;options rsi_sdio dev_oper_mode=1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:If you are using a different root filesystem (compared to our Yocto configuration) please ensure, that the firmware files and the rsi_sdio.conf file are included in the filesystem:&lt;br /&gt;
:[[media:rsi_firmware.zip|rsi_firmware.zip]]&lt;br /&gt;
:* Copy the directory rsi to /lib/firmware/&lt;br /&gt;
:* Copy the file rsi_sdio.conf to /etc/modprobe.d/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note to DRC02:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:DRC02 default images with date Oct. 2021 or newer support WiFi/BT by an additional device tree overlay. &lt;br /&gt;
:To use the DTO, please add it to the U-Boot environment:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;setenv loaddtos &#039;#conf-stm32mp153c-dhcom-drc02.dtb#conf-stm32mp15xx-dhcom-drc02-overlay-wifi-rsi.dtbo&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;RSI mode:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:By default, the RSI module is configured to WiFi alone mode with our Yocto image. The mode can be configured by rsi_sdio.conf file:&lt;br /&gt;
 According to Linux kernel source, the dev_oper_mode has the following meaning:&lt;br /&gt;
 linux-2.6$ git grep -n DEV_OPMODE_ drivers/net/wireless/rsi/ [...]&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:21:#define DEV_OPMODE_WIFI_ALONE     1&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:22:#define DEV_OPMODE_BT_ALONE       4&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:23:#define DEV_OPMODE_BT_LE_ALONE    8&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:24:#define DEV_OPMODE_BT_DUAL        12&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:25:#define DEV_OPMODE_STA_BT         5&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:26:#define DEV_OPMODE_STA_BT_LE      9&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:27:#define DEV_OPMODE_STA_BT_DUAL    13&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:28:#define DEV_OPMODE_AP_BT          6&lt;br /&gt;
 drivers/net/wireless/rsi/rsi_hal.h:29:#define DEV_OPMODE_AP_BT_DUAL     14&lt;br /&gt;
&lt;br /&gt;
:If you like to use Bluetooth alone mode, change dev_oper_mode to 12. Then you can use the standard hci commands. Start with &#039;hciconfig hci0 up&#039; to activate the interface.&lt;br /&gt;
&lt;br /&gt;
==== USB 1.1 problems: Custom board without USB 2.0 hub inbetween the MP1 USB host port? ====&lt;br /&gt;
And in that case, have a look at arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi and how the OHCI (!) is enabled there. And of course, make sure the kernel config options are enabled accordingly (like for the PicoITX machine)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;meta-dhsom-stm32-bsp$ git grep OHCI&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;recipes-kernel/linux/linux-stable/5.10/dh-stm32mp1-common/dh-stm32mp1-dhsom-common.cfg:CONFIG_USB_OHCI_HCD=y&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;recipes-kernel/linux/linux-stable/5.10/dh-stm32mp1-common/dh-stm32mp1-dhsom-common.cfg:CONFIG_USB_OHCI_HCD_PLATFORM=y&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi snippet:&lt;br /&gt;
 &amp;amp;usbh_ehci {&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbh_ohci { // &amp;lt;---------------- HERE&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbotg_hs {&lt;br /&gt;
          dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
          pinctrl-0 = &amp;lt;&amp;amp;usbotg_hs_pins_a&amp;gt;;&lt;br /&gt;
          pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
          phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port1 0&amp;gt;;&lt;br /&gt;
          vbus-supply = &amp;lt;&amp;amp;vbus_otg&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc {&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port0 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port1 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== System stability or USB Host problems? ====&lt;br /&gt;
If a display with higher resolution and pixel clock &amp;gt; 48 MHz is used, then this can case USB host and/or system stability problems.&lt;br /&gt;
&lt;br /&gt;
Workaround:&lt;br /&gt;
The OSPEEDR must be set to OSPEEDR = 1 for LCD_CLK and OSPEEDR = 0 for all other LTDC signals.&lt;br /&gt;
 &amp;amp;pinctrl {&lt;br /&gt;
 	ltdc_pins_ customhmi: ltdc-dh-1 {&lt;br /&gt;
 		pins1 {&lt;br /&gt;
 			pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 14, AF14)&amp;gt;; /* LCD_CLK */&lt;br /&gt;
 			bias-disable;&lt;br /&gt;
 			drive-push-pull;&lt;br /&gt;
 			&#039;&#039;&#039;slew-rate = &amp;lt;1&amp;gt;;&#039;&#039;&#039;&lt;br /&gt;
 		};&lt;br /&gt;
 		pins2 {&lt;br /&gt;
 				pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 12, AF14)&amp;gt;, /* LCD_HSYNC */&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;I&#039;, 13, AF14)&amp;gt;, /* LCD_VSYNC */&lt;br /&gt;
                                  ...&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;K&#039;,  6, AF14)&amp;gt;; /* LCD_B7 */&lt;br /&gt;
 			bias-disable;&lt;br /&gt;
 			drive-push-pull;&lt;br /&gt;
 			&#039;&#039;&#039;slew-rate = &amp;lt;0&amp;gt;;&#039;&#039;&#039;&lt;br /&gt;
 		};&lt;br /&gt;
 	};&lt;br /&gt;
 	&lt;br /&gt;
 	ltdc_sleep_pins_ customhmi: ltdc-sleep-dh-1 {&lt;br /&gt;
 		pins {&lt;br /&gt;
 			pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 14, ANALOG)&amp;gt;, /* LCD_CLK */&lt;br /&gt;
                                  ...&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;K&#039;,  6, ANALOG)&amp;gt;; /* LCD_B7 */&lt;br /&gt;
 		};&lt;br /&gt;
 	};	&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== USB OTG: Custom board where the USB-OTG port is only used as host? ====&lt;br /&gt;
&lt;br /&gt;
On the DHCOM standard, the second USB port of the STM32MP1 is usually an USB-OTG port. If you have a custom board where you want to use the USB-OTG port in host mode only, you should consider the following:&lt;br /&gt;
&lt;br /&gt;
The USB-OTG controller on the STM32MP1, DWC2, does support host mode but is rather inefficient (in comparison to a dedicated USB host controller). The following block diagram shows, that it is possible on the STM32MP1 to alter the pinmuxing, so that the USB-OTG port is used with the USB Host controller of the STM32MP1 (instead of using the DWC2 OTG controller):   &lt;br /&gt;
&lt;br /&gt;
    Host port#1: EHCI/OHCI controller _________ HS PHY port #1 (SoC balls D+/D- #1)&lt;br /&gt;
       &lt;br /&gt;
       &lt;br /&gt;
    Host port#2: EHCI/OHCI controller __ &lt;br /&gt;
                                         \   &lt;br /&gt;
                                         |_____ HS PHY port #2 (SoC balls D+/D- #2)&lt;br /&gt;
    DWC2 OTG controller_________________/|&lt;br /&gt;
                                         |&lt;br /&gt;
            UTIM switch__________________|&lt;br /&gt;
&lt;br /&gt;
This change can be made in the device tree with disabling the DWC2 controller and adding the second usb_phyc port to the nodes of usbh_ehci and (if applicable) usbh_ohci. These nodes are usually in the .dtsi file of the board (e.g. for the PicoITX: arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi). Here a is snippet how this could look like:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;usbh_ehci {&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;&#039;&#039;&#039;, &amp;lt;&amp;amp;usbphyc_port1 1&amp;gt;&#039;&#039;&#039;; // &amp;lt;-------- HERE&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbh_ohci { &lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;&#039;&#039;&#039;, &amp;lt;&amp;amp;usbphyc_port1 1&amp;gt;&#039;&#039;&#039;; // &amp;lt;-------- HERE&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbotg_hs {&lt;br /&gt;
          &#039;&#039;&#039;status = &amp;quot;disabled&amp;quot;;&#039;&#039;&#039; // &amp;lt;-------- HERE&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc {&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port0 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port1 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== How to try QtWebengine ====&lt;br /&gt;
The QtWebengine is part of the DH default images. &lt;br /&gt;
Please stop the Weston desktop, before the start of the Browser.&lt;br /&gt;
 Older images: &amp;quot;systemctl stop weston@root.service&amp;quot;  &lt;br /&gt;
 Newer images: &amp;quot;systemctl stop weston.service&amp;quot;&lt;br /&gt;
How to start the Browser:&lt;br /&gt;
 QT_QPA_PLATFORM=eglfs QT_QPA_EGLFS_ALWAYS_SET_MODE=1 QT_QPA_EGLFS_KMS_CONFIG=/etc/default/qt5-eglfs-kms.json qtwebengine-minimal http://YOUR-TEST-PAGE/ --no-sandbox&lt;br /&gt;
&lt;br /&gt;
==== How is the Browser Perfomance on the STM32MP1? ====&lt;br /&gt;
[https://wiki.dh-electronics.com/index.php/STM32MP1_Browser_Performance STM32MP1 Browser Performance]&lt;br /&gt;
&lt;br /&gt;
==== How to calibrate resistive touchscreens ====&lt;br /&gt;
{{:Calibration of resistive touchscreens}}&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3856</id>
		<title>Calibration of resistive touchscreens</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3856"/>
		<updated>2023-10-20T06:39:56Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Remove headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On devices with resistive touchscreens, the touchscreen has to be calibrated.&lt;br /&gt;
&lt;br /&gt;
At our yocto images, we usually use libinput as library for handling input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Prerequisites&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Yocto packages &#039;&#039;weston&#039;&#039;, &#039;&#039;weston-init&#039;&#039; and &#039;&#039;weston-examples&#039;&#039; have to be installed inside the image.&lt;br /&gt;
* The config file &amp;lt;tt&amp;gt;/etc/xdg/weston/weston.ini&amp;lt;/tt&amp;gt; needs the following lines (to enable touchscreen calibration):&lt;br /&gt;
 [libinput]&lt;br /&gt;
 touchscreen_calibrator=true&lt;br /&gt;
After changing the configuration of weston, weston needs to be restarted:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;systemctl restart weston&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Steps for calibration&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Get the touchscreen device name with weston-touch-calibrator&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example result (bold part is needed for next steps):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;device &amp;quot;&#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;quot; - head &amp;quot;DPI-1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Run weston-touch-calibrator on the device for starting the calibration. With the example part of the last result, the command looks like this (bold part is from the last result):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator -v &#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now you press the highlighted points at the touchscreen to calibrate it. You will now get an output on the console like this (the important part is marked bold):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;Calibration values: &#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; To make the calibration permanent, you need to add a udev rule. Create the file &amp;lt;tt&amp;gt;/etc/udev/rules.d/touchscreen-cal.rules&amp;lt;/tt&amp;gt; and use the calibration values there. With the result of the previous example, the file looks like this (bold part is the result of the last example):&lt;br /&gt;
 SUBSYSTEM==&amp;quot;input&amp;quot;, KERNEL==&amp;quot;event[0-9]*&amp;quot;, ENV{ID_INPUT_TOUCHSCREEN}==&amp;quot;1&amp;quot;, ENV{LIBINPUT_CALIBRATION_MATRIX}=&amp;quot;&#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3855</id>
		<title>Calibration of resistive touchscreens</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3855"/>
		<updated>2023-10-20T06:38:32Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Change the level of the heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On devices with resistive touchscreens, the touchscreen has to be calibrated.&lt;br /&gt;
&lt;br /&gt;
At our yocto images, we usually use libinput as library for handling input.&lt;br /&gt;
&lt;br /&gt;
===== Prerequisites =====&lt;br /&gt;
* Yocto packages &#039;&#039;weston&#039;&#039;, &#039;&#039;weston-init&#039;&#039; and &#039;&#039;weston-examples&#039;&#039; have to be installed inside the image.&lt;br /&gt;
* The config file &amp;lt;tt&amp;gt;/etc/xdg/weston/weston.ini&amp;lt;/tt&amp;gt; needs the following lines (to enable touchscreen calibration):&lt;br /&gt;
 [libinput]&lt;br /&gt;
 touchscreen_calibrator=true&lt;br /&gt;
After changing the configuration of weston, weston needs to be restarted:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;systemctl restart weston&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Steps for calibration =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Get the touchscreen device name with weston-touch-calibrator&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example result (bold part is needed for next steps):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;device &amp;quot;&#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;quot; - head &amp;quot;DPI-1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Run weston-touch-calibrator on the device for starting the calibration. With the example part of the last result, the command looks like this (bold part is from the last result):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator -v &#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now you press the highlighted points at the touchscreen to calibrate it. You will now get an output on the console like this (the important part is marked bold):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;Calibration values: &#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; To make the calibration permanent, you need to add a udev rule. Create the file &amp;lt;tt&amp;gt;/etc/udev/rules.d/touchscreen-cal.rules&amp;lt;/tt&amp;gt; and use the calibration values there. With the result of the previous example, the file looks like this (bold part is the result of the last example):&lt;br /&gt;
 SUBSYSTEM==&amp;quot;input&amp;quot;, KERNEL==&amp;quot;event[0-9]*&amp;quot;, ENV{ID_INPUT_TOUCHSCREEN}==&amp;quot;1&amp;quot;, ENV{LIBINPUT_CALIBRATION_MATRIX}=&amp;quot;&#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3854</id>
		<title>Calibration of resistive touchscreens</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Calibration_of_resistive_touchscreens&amp;diff=3854"/>
		<updated>2023-10-20T06:31:49Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Create page for calibration of touchscreen, it is meant to be included in other pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On devices with resistive touchscreens, the touchscreen has to be calibrated.&lt;br /&gt;
&lt;br /&gt;
At our yocto images, we usually use libinput as library for handling input.&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
* Yocto packages &#039;&#039;weston&#039;&#039;, &#039;&#039;weston-init&#039;&#039; and &#039;&#039;weston-examples&#039;&#039; have to be installed inside the image.&lt;br /&gt;
* The config file &amp;lt;tt&amp;gt;/etc/xdg/weston/weston.ini&amp;lt;/tt&amp;gt; needs the following lines (to enable touchscreen calibration):&lt;br /&gt;
 [libinput]&lt;br /&gt;
 touchscreen_calibrator=true&lt;br /&gt;
After changing the configuration of weston, weston needs to be restarted:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;systemctl restart weston&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Steps for calibration ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Get the touchscreen device name with weston-touch-calibrator&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example result (bold part is needed for next steps):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;device &amp;quot;&#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;quot; - head &amp;quot;DPI-1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Run weston-touch-calibrator on the device for starting the calibration. With the example part of the last result, the command looks like this (bold part is from the last result):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;XDG_RUNTIME_DIR=/var/run/user/$(id -u weston) weston-touch-calibrator -v &#039;&#039;&#039;/sys/devices/platform/soc/2100000.bus/21a8000.i2c/i2c-2/2-0049/input/input0/event0&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now you press the highlighted points at the touchscreen to calibrate it. You will now get an output on the console like this (the important part is marked bold):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;Calibration values: &#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; To make the calibration permanent, you need to add a udev rule. Create the file &amp;lt;tt&amp;gt;/etc/udev/rules.d/touchscreen-cal.rules&amp;lt;/tt&amp;gt; and use the calibration values there. With the result of the previous example, the file looks like this (bold part is the result of the last example):&lt;br /&gt;
 SUBSYSTEM==&amp;quot;input&amp;quot;, KERNEL==&amp;quot;event[0-9]*&amp;quot;, ENV{ID_INPUT_TOUCHSCREEN}==&amp;quot;1&amp;quot;, ENV{LIBINPUT_CALIBRATION_MATRIX}=&amp;quot;&#039;&#039;&#039;-0.001472 -1.081086 1.033880 -1.135099 0.000319 1.082698&#039;&#039;&#039;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3450</id>
		<title>DHCOM STM32MP1 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3450"/>
		<updated>2021-08-18T10:22:00Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: /* FAQ */  Added entry for switching USB-OTG to Host controller&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Linux virtual machine for development ==&lt;br /&gt;
:* Please have a look at: &#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Sources: Look at page [[DHCOM iMX6ULL-D2#BSP Sources|i.MX6ULL BSP Sources]] === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-stm32mp1.git --branch dev/5.4.69_dhsom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-stm32mp1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make stm32mp1_dhsom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Create the FIT-image with our script ([[media:Dh-create-fitimage_1.0_all.deb|Download link]])&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interactive mode for selecting device trees&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Device trees are set as parameter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees to include (e.g. if you want to include the device tree for the PDK2 include the number of &amp;lt;tt&amp;gt;&#039;&#039;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb&#039;&#039;&amp;lt;/tt&amp;gt; (usually 3).&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees overlays to include (e.g. for the PDK2 enter the files which contain &amp;lt;tt&amp;gt;&#039;&#039;PDK2&#039;&#039;&amp;lt;/tt&amp;gt; (usually 8 9 10 11 12 13 14).&lt;br /&gt;
|&lt;br /&gt;
(Example is for the PDK2) &amp;lt;br&amp;gt;&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage --dtb ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb --dtbo ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-460-200-x11.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-497-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-505-200-x12-ch101olhlwh.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x21.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x22.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-560-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-638-100-x12-rpi7inch.dtbo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware == &lt;br /&gt;
&lt;br /&gt;
=== RS-485 on picoITX ===&lt;br /&gt;
:&#039;&#039;&#039;RS-485 device&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 2||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Compilation on target&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_test_v1.1.c -o tty_rs485_test&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_flags_v1.0.c -o tty_rs485_flags&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Show UART flags&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_flags /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Set tty device to raw mode&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;stty -F /dev/ttySTM2 115200 raw -echo -echoe&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo -n -e &amp;quot;\n\rHallo RS485 Welt!&amp;quot; &amp;amp;brvbar; ./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Receive data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Download example source code&#039;&#039;&#039;&lt;br /&gt;
:* [[media:tty_rs485_test_v1.1.zip | tty_rs485_test_v1.1.c &amp;amp; tty_rs485_flags_v1.0.c]]&lt;br /&gt;
&lt;br /&gt;
=== CAN interface ===&lt;br /&gt;
:&#039;&#039;&#039;Setup CAN interface with baudrate 500kbit/sec.&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 up type can bitrate 500000&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Start to listen on CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;candump can0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send test message&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cansend can0 100#11.2233.44556677.88&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Deinitialize CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 down&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UART Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 1 ||&amp;lt;tt&amp;gt;/dev/ttySTM0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM UART 2 ||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM UART 3 ||&amp;lt;tt&amp;gt;/dev/ttySTM1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== I2C Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM I2C 1||&amp;lt;tt&amp;gt;/dev/i2c-1&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||DHCOM I2C 2 ||&amp;lt;tt&amp;gt;/dev/i2c-0&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ||On Module Devices ||&amp;lt;tt&amp;gt;/dev/i2c-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
==== &#039;&#039;&#039;USB 1.1 problems: Custom board without USB 2.0 hub inbetween the MP1 USB host port?&#039;&#039;&#039; ====&lt;br /&gt;
And in that case, have a look at arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi and how the OHCI (!) is enabled there. And of course, make sure the kernel config options are enabled accordingly (like for the PicoITX machine)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;meta-dhsom-stm32-bsp$ git grep OHCI&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;recipes-kernel/linux/linux-stable/5.10/dh-stm32mp1-common/dh-stm32mp1-dhsom-common.cfg:CONFIG_USB_OHCI_HCD=y&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;recipes-kernel/linux/linux-stable/5.10/dh-stm32mp1-common/dh-stm32mp1-dhsom-common.cfg:CONFIG_USB_OHCI_HCD_PLATFORM=y&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi snippet:&lt;br /&gt;
 &amp;amp;usbh_ehci {&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbh_ohci { // &amp;lt;---------------- HERE&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbotg_hs {&lt;br /&gt;
          dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
          pinctrl-0 = &amp;lt;&amp;amp;usbotg_hs_pins_a&amp;gt;;&lt;br /&gt;
          pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
          phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port1 0&amp;gt;;&lt;br /&gt;
          vbus-supply = &amp;lt;&amp;amp;vbus_otg&amp;gt;;&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc {&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port0 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port1 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;System stability or USB Host problems?&#039;&#039;&#039; ====&lt;br /&gt;
If a display with higher resolution and pixel clock &amp;gt; 48 MHz is used, then this can case USB host and/or system stability problems.&lt;br /&gt;
&lt;br /&gt;
Workaround:&lt;br /&gt;
The OSPEEDR must be set to OSPEEDR = 1 for LCD_CLK and OSPEEDR = 0 for all other LTDC signals.&lt;br /&gt;
 &amp;amp;pinctrl {&lt;br /&gt;
 	ltdc_pins_ customhmi: ltdc-dh-1 {&lt;br /&gt;
 		pins1 {&lt;br /&gt;
 			pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 14, AF14)&amp;gt;; /* LCD_CLK */&lt;br /&gt;
 			bias-disable;&lt;br /&gt;
 			drive-push-pull;&lt;br /&gt;
 			&#039;&#039;&#039;slew-rate = &amp;lt;1&amp;gt;;&#039;&#039;&#039;&lt;br /&gt;
 		};&lt;br /&gt;
 		pins2 {&lt;br /&gt;
 				pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 12, AF14)&amp;gt;, /* LCD_HSYNC */&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;I&#039;, 13, AF14)&amp;gt;, /* LCD_VSYNC */&lt;br /&gt;
                                  ...&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;K&#039;,  6, AF14)&amp;gt;; /* LCD_B7 */&lt;br /&gt;
 			bias-disable;&lt;br /&gt;
 			drive-push-pull;&lt;br /&gt;
 			&#039;&#039;&#039;slew-rate = &amp;lt;0&amp;gt;;&#039;&#039;&#039;&lt;br /&gt;
 		};&lt;br /&gt;
 	};&lt;br /&gt;
 	&lt;br /&gt;
 	ltdc_sleep_pins_ customhmi: ltdc-sleep-dh-1 {&lt;br /&gt;
 		pins {&lt;br /&gt;
 			pinmux = &amp;lt;STM32_PINMUX(&#039;I&#039;, 14, ANALOG)&amp;gt;, /* LCD_CLK */&lt;br /&gt;
                                  ...&lt;br /&gt;
 				 &amp;lt;STM32_PINMUX(&#039;K&#039;,  6, ANALOG)&amp;gt;; /* LCD_B7 */&lt;br /&gt;
 		};&lt;br /&gt;
 	};	&lt;br /&gt;
 };&lt;br /&gt;
==== &#039;&#039;&#039;USB OTG: Custom board where the USB-OTG port is only used as host?&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
On the DHCOM standard, the second USB port of the STM32MP1 is usually an USB-OTG port. If you have a custom board where you want to use the USB-OTG port in host mode only, you should consider the following:&lt;br /&gt;
&lt;br /&gt;
The USB-OTG controller on the STM32MP1, DWC2, does support host mode but is rather inefficient (in comparison to a dedicated USB host controller). The following block diagram shows, that it is possible on the STM32MP1 to alter the pinmuxing, so that the USB-OTG port is used with the USB Host controller of the STM32MP1 (instead of using the DWC2 OTG controller):   &lt;br /&gt;
&lt;br /&gt;
    Host port#1: EHCI/OHCI controller _________ HS PHY port #1 (SoC balls D+/D- #1)&lt;br /&gt;
       &lt;br /&gt;
       &lt;br /&gt;
    Host port#2: EHCI/OHCI controller __ &lt;br /&gt;
                                         \   &lt;br /&gt;
                                         |_____ HS PHY port #2 (SoC balls D+/D- #2)&lt;br /&gt;
    DWC2 OTG controller_________________/|&lt;br /&gt;
                                         |&lt;br /&gt;
            UTIM switch__________________|&lt;br /&gt;
&lt;br /&gt;
This change can be made in the device tree with disabling the DWC2 controller and adding the second usb_phyc port to the nodes of usbh_ehci and (if applicable) usbh_ohci. These nodes are usually in the .dtsi file of the board (e.g. for the PicoITX: arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi). Here a is snippet how this could look like:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;usbh_ehci {&lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;&#039;&#039;&#039;, &amp;lt;&amp;amp;usbphyc_port1 1&amp;gt;&#039;&#039;&#039;; // &amp;lt;-------- HERE&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbh_ohci { &lt;br /&gt;
          phys = &amp;lt;&amp;amp;usbphyc_port0&amp;gt;&#039;&#039;&#039;, &amp;lt;&amp;amp;usbphyc_port1 1&amp;gt;&#039;&#039;&#039;; // &amp;lt;-------- HERE&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbotg_hs {&lt;br /&gt;
          &#039;&#039;&#039;status = &amp;quot;disabled&amp;quot;;&#039;&#039;&#039; // &amp;lt;-------- HERE&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc {&lt;br /&gt;
          status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port0 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;usbphyc_port1 {&lt;br /&gt;
          phy-supply = &amp;lt;&amp;amp;vdd_usb&amp;gt;;&lt;br /&gt;
          vdda1v1-supply = &amp;lt;&amp;amp;reg11&amp;gt;;&lt;br /&gt;
          vdda1v8-supply = &amp;lt;&amp;amp;reg18&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;How to try QtWebengine&#039;&#039;&#039; ====&lt;br /&gt;
The QtWebengine is part of the DH default images. &lt;br /&gt;
Please stop the Weston desktop, before the start of the Browser.&lt;br /&gt;
 Older images: &amp;quot;systemctl stop weston@root.service&amp;quot;  &lt;br /&gt;
 Newer images: &amp;quot;systemctl stop weston.service&amp;quot;&lt;br /&gt;
How to start the Browser:&lt;br /&gt;
 QT_QPA_PLATFORM=eglfs QT_QPA_EGLFS_ALWAYS_SET_MODE=1 QT_QPA_EGLFS_KMS_CONFIG=/etc/default/qt5-eglfs-kms.json qtwebengine-minimal http://YOUR-TEST-PAGE/ --no-sandbox&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=FAQ_General&amp;diff=3275</id>
		<title>FAQ General</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=FAQ_General&amp;diff=3275"/>
		<updated>2021-04-27T12:16:34Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: /* Root Filesystem */  Added section for autologin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
==== &#039;&#039;Do the DHCOM modules have a serial numbers included? If yes, how is it accessible?&#039;&#039; ====&lt;br /&gt;
The serial number of a DHCOM module is stored inside the bootloader environment. It can be retrieved by u-boot commands like printenv or by Linux commands like “fw_printenv”&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
====&#039;&#039;How can I access the bootloader u-boot console?&#039;&#039; ====&lt;br /&gt;
It is not possible to enter to the bootloader console by pressing a various key (e.g. &amp;quot;Enter&amp;quot;) on your keyboard. You have to send &amp;quot;DEL&amp;quot; (ASCII 0x7F) to the device. We recommend you to use the terminal program &#039;&#039;&#039;teraterm&#039;&#039;&#039; if you are working on windows and to use &#039;&#039;&#039;kermit&#039;&#039;&#039; or &#039;&#039;&#039;minicom&#039;&#039;&#039; if you use a linux operating system on your pc. &lt;br /&gt;
:*You can configure teraterm to send &amp;quot;DEL&amp;quot; when the delete key or the backspace key is pressed by clicking through the menu to &amp;lt;code&amp;gt; Setup-&amp;gt;Keyboard-Setup &amp;lt;/code&amp;gt; and enable the required checkbox.&lt;br /&gt;
&lt;br /&gt;
:*Kermit is sending a &amp;quot;DEL&amp;quot; if you hit the backspace key.&lt;br /&gt;
&lt;br /&gt;
:*Minicom is able to send &amp;quot;DEL&amp;quot; when you hit the backspace key if you configure minicom to do that within a terminal window: run &amp;lt;code&amp;gt; $ minicom -s &amp;lt;/code&amp;gt; and navigate to &amp;lt;code&amp;gt; Screen and keyboard &amp;lt;/code&amp;gt; press &amp;quot;B&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;The automatic update does not execute before the operating system boots!&#039;&#039; ====&lt;br /&gt;
Check if the command &amp;lt;code&amp;gt; update auto &amp;lt;/code&amp;gt; is included in the bootloader environment variable &amp;lt;code&amp;gt;bootcmd&amp;lt;/code&amp;gt; or in a script-variable which is called within &amp;lt;code&amp;gt; bootcmd &amp;lt;/code&amp;gt; before &amp;lt;code&amp;gt; bootm &amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;The automatic update does not work with my desired update-media!&#039;&#039; ====&lt;br /&gt;
The command &amp;lt;code&amp;gt; update auto &amp;lt;/code&amp;gt; can be configured with flags within the DHCOM settings.bin block. It is possible to disable a interface for the update mechanism. You can run a update from a disabled interface if you use the command &amp;lt;code&amp;gt; update &amp;lt;/code&amp;gt; without the argument &amp;lt;code&amp;gt; auto &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Which USB Port should i use to run updates with the bootloader?&#039;&#039; ====&lt;br /&gt;
Our systems are designed to run updates via the DHCOM USB Host 1 interface. We can support additional usb nterfaces on request.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;My usb stick (flash memory) device is not recognized by the bootloader&#039;&#039; ====&lt;br /&gt;
The are limitations when you use usb flash memory devices with u-boot. Please check that a master boot record is available and that a FAT32 filesystem is used on the first primary partition of the device. Please use gparted to format the device. &lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
=== Root Filesystem ===&lt;br /&gt;
==== &#039;&#039;How to handle &amp;quot;FATAL: Could not load /lib/modules/.../modules.dep: No such file or directory&amp;quot;?&#039;&#039; ====&lt;br /&gt;
Check the path to your loadable kernel modules. It has to be &amp;lt;tt&amp;gt;/lib/modules/$(uname -r)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
If your system works without loadable Linux kernel modules:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# mkdir /lib/modules/$(uname -r)&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# depmod –m&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==== &#039;&#039;Could not install standard packages on the Debian Squeeze based file system&#039;&#039; ====&lt;br /&gt;
Reason: The Debian package server address was changed.&lt;br /&gt;
&lt;br /&gt;
Fix: Add the following lines into the &amp;lt;tt&amp;gt;/etc/apt/sources.list&amp;lt;/tt&amp;gt; file&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;deb http://archive.debian.org/debian squeeze main&amp;lt;br/&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;deb-src http://archive.debian.org/debian squeeze main&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Ethernet does not work&#039;&#039; ====&lt;br /&gt;
Check if the line &amp;quot;allow-hotplug eth0&amp;quot; in the file &amp;quot;/etc/network/interfaces&amp;quot; is activated. You can activate the ethernet interface on a running system with the command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ifconfig eth0 up&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark:&#039;&#039;&#039; To work with a nfs-rootfilesystem you have to disable the line &amp;quot;allow-hotplug eth0&amp;quot; in the file &amp;quot;/etc/network/interfaces&amp;quot;. Maybe the system was prepared for this method for development and nobody did change it back.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;How to set a Linux environment variable?&#039;&#039; ====&lt;br /&gt;
This example shows you how to configure the system to use a proxy-server with a environment variable.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;export http_proxy=http://192.168.xxx.xxx:xxxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;How to schedule jobs to run periodically at certain times or dates?&#039;&#039; ====&lt;br /&gt;
You can use the cron daemon and/or anacron. To use anacron you have to copy or link your program or script into one of the the following folders:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/cron.hourly&amp;lt;br/&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/cron.daily&amp;lt;br/&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/cron.weekly&amp;lt;br/&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/cron.monthly&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
For further information have a look at the general linux documentation.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Enable autologin on a serial console with systemd&#039;&#039; ====&lt;br /&gt;
If you want to automaticly log into the serial console at bootup, you can alter the configuration of systemd.&lt;br /&gt;
Open the file &amp;lt;tt&amp;gt;/lib/systemd/system/serial-getty@.service&amp;lt;/tt&amp;gt; with a text editor.&lt;br /&gt;
Look for the following line:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;ExecStart=-/sbin/agetty -8 -L %I 115200 $TERM&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Add &amp;lt;tt&amp;gt;--autologin &amp;lt;username&amp;gt;&amp;lt;/tt&amp;gt; before the &amp;lt;tt&amp;gt;%I&amp;lt;/tt&amp;gt; so it looks like this (with root as an example):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;ExecStart=-/sbin/agetty -8 -L &#039;&#039;&#039;--autologin root&#039;&#039;&#039; %I 115200 $TERM&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark&#039;&#039;&#039;: If the &amp;lt;tt&amp;gt;-o&amp;lt;/tt&amp;gt; option of agetty is used to alter the call of the login-program, then you have to add &amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; to the options which are given to the login program. If you do not this, you will have still enter your password. Here is an example:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;ExecStart=-/sbin/agetty -8 -L -o &#039;-p &#039;&#039;&#039;-f&#039;&#039;&#039; -- \\u&#039; --autologin root %I 115200 $TERM&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NAND ===&lt;br /&gt;
==== &#039;&#039;We would like to use UBIFS for the root filesystem volume&#039;&#039; ====&lt;br /&gt;
UBI/UBIFS is the standard file system for DHCOM systems with NAND flash storage.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;We have the need for additional UBI/UBIFS volumens (partitions)&#039;&#039; ==== &lt;br /&gt;
It shouldn&#039;t be necessary to make changes in the Bootloader u-boot, the Linux kernel, or devicetree. We recommend to use the available NAND Flash storage as a single UBI partition and create if needed multiple UBIFS volumes on it.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;We want to backup the root filesystem from the NAND-Flash of the target&#039;&#039; ==== &lt;br /&gt;
You can use the DHCOM Update Mechanism of root filesystem of the bootloader for the rootfs in the backup mode. This feature is available on i.MX25 and AM35x DHCOMs. Further information at: [[DHCOM Update: Linux Root Filesystem|DHCOM Update: Linux Root Filesystem]]&lt;br /&gt;
&lt;br /&gt;
=== GPIOs ===&lt;br /&gt;
==== &#039;&#039;How to use the GPIO sysfs?&#039;&#039; ====&lt;br /&gt;
export&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo &amp;lt;GPIO#&amp;gt; &amp;gt;/sys/class/gpio/export&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
: &#039;&#039;&#039;Remark:&#039;&#039;&#039; Have a look into &amp;lt;tt&amp;gt; /sys/class/gpio/ &amp;lt;/tt&amp;gt; for already configured gpios.&lt;br /&gt;
Set direction&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo in &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/direction&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo out &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/direction&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Set state&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo 0 &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/value&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo 1 &amp;gt;/sys/class/gpio/gpio&amp;lt;GPIO#&amp;gt;/value&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
unexport&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo &amp;lt;GPIO#&amp;gt; &amp;gt;/sys/class/gpio/unexport&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==== &#039;&#039;I want to use GPIO buttons/keys&#039;&#039; ====&lt;br /&gt;
We recommend to add a gpio-keys section to the devicetree of your board. For example:&lt;br /&gt;
 gpio-keys {&lt;br /&gt;
 	compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	volume-up {&lt;br /&gt;
 		label = &amp;quot;Volume Up&amp;quot;;&lt;br /&gt;
 		gpios = &amp;lt;&amp;amp;gpio1 4 0&amp;gt;;&lt;br /&gt;
 		gpio-key,wakeup;&lt;br /&gt;
 		linux,code = &amp;lt;115&amp;gt;; /* KEY_VOLUMEUP */&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-down {&lt;br /&gt;
 		label = &amp;quot;Volume Down&amp;quot;;&lt;br /&gt;
 		gpios = &amp;lt;&amp;amp;gpio1 5 0&amp;gt;;&lt;br /&gt;
 		gpio-key,wakeup;&lt;br /&gt;
 		linux,code = &amp;lt;114&amp;gt;; /* KEY_VOLUMEDOWN */&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
Please check for the &amp;quot;input/gpio-keys.c&amp;quot; driver to be enabled. For further details how to customize the device tree please refer to [https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.txt www.kernel.org].&lt;br /&gt;
&lt;br /&gt;
You should get a device &amp;lt;tt&amp;gt;&#039;&#039;&#039;/dev/input/eventX&#039;&#039;&#039;&amp;lt;/tt&amp;gt; which provides the key events. Validate your configuration with &amp;lt;tt&amp;gt;cat /dev/input/eventX&amp;lt;/tt&amp;gt; or use &amp;quot;evtest&amp;quot; which is available on [https://packages.debian.org/de/squeeze/evtest debian] .&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;How to cleanly shutdown the target using a GPIO?&#039;&#039; ====&lt;br /&gt;
A common solution is to define a [[FAQ_General#We want to use GPIO buttons/keys. | gpio key]] &#039;&#039;&#039;&amp;quot;KEY_POWER&amp;quot;&#039;&#039;&#039; in the devicetree of your target. Please have a look on the following example:&lt;br /&gt;
 gpio-keys {&lt;br /&gt;
    compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;pinctrl_gpiopowerkey&amp;gt;;&lt;br /&gt;
    power {&lt;br /&gt;
            label = &amp;quot;Power-Key&amp;quot;;&lt;br /&gt;
            gpios = &amp;lt;&amp;amp;gpio1 9 GPIO_ACTIVE_HIGH&amp;gt;;&lt;br /&gt;
            linux,code = &amp;lt;KEY_POWER&amp;gt;;&lt;br /&gt;
            debounce-interval = &amp;lt;5&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Depending on your root filesystem configuration you have to add a daemon which handles the event. Please have a look at &amp;quot;esekeyd&amp;quot; or &amp;quot;triggerhappy&amp;quot;. There are Debian Packages available ([https://packages.debian.org/search?keywords=esekeyd esekeyd][https://packages.debian.org/wheezy/triggerhappy triggerhappy ]). Alternative it is possible to use a udev rule (e.g. /etc/udev/rules.d/..).&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;The target should power off ifself after a shutdown&#039;&#039; ====&lt;br /&gt;
To switch off the power after shutdown you can use a GPIO. Keep in mind that the hardware design of you baseboard has to support this feature (The Premium Developer Kit does not). The Linux Kernel provides a specific GPIO power-off driver to handle this requirement. It has to be enabled with CONFIG_POWER_RESET_GPIO in the kernel configuration. Add a gpio-poweroff section to the device-tree of your board:&lt;br /&gt;
&lt;br /&gt;
 gpio-poweroff {&lt;br /&gt;
     compatible = &amp;quot;gpio-poweroff&amp;quot;;&lt;br /&gt;
     gpios = &amp;lt;&amp;amp;gpio1 2 GPIO_ACTIVE_LOW&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Use the &amp;lt;tt&amp;gt;poweroff&amp;lt;/tt&amp;gt; command to power-off the system&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# poweroff&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For further details please have a look at [https://www.kernel.org/doc/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt www.kernel.org]&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
==== &#039;&#039;We want to capture the screen content&#039;&#039; ==== &lt;br /&gt;
The VLC media player provides the necessary features: [http://www.howtogeek.com/120202/how-to-record-your-desktop-to-a-file-or-stream-it-over-the-internet-with-vlc/ Capture Sceen Content with VLC media player: http://www.howtogeek.com] A x-window-system is required. Have a look at our Yocto tutorial: [[Building Chromium, VLC and X11VNC using Yocto | Building Chromium, VLC and X11VNC using Yocto]]&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;View and interact (mouse, keyboard) with a target running the x window system&#039;&#039; ====&lt;br /&gt;
Install x11vnc and execute on the target. You can use ssvnc to connect via SSH. See &#039;[[Building Chromium, VLC and X11VNC using Yocto | Building Chromium, VLC and X11VNC using Yocto]]&#039; and &#039;SSVNC (SSL/SSH VNC viewer): [http://www.karlrunge.com/x11vnc/ssvnc.html http://www.karlrunge.com/x11vnc/ssvnc.html]&#039;&lt;br /&gt;
&lt;br /&gt;
=== Power Management ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;How to use CPU Frequency scaling?&#039;&#039; ====&lt;br /&gt;
If your target supports CPU Frequency scaling (e.g. DHCOM i.MX6, DHCOM AM335x) it is possible to change the clock speed of CPUs on the fly. Check if &amp;lt;tt&amp;gt;CONFIG_CPU_FREQ=y&amp;lt;/tt&amp;gt; is enabled in your kernel configuration. Note that this driver doesn&#039;t automatically change the CPU clock speed, you need to either enable a dynamic cpufreq governor after boot, or use a userspace tool. Have a look at the [https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt cpufreq user guide].&lt;br /&gt;
&lt;br /&gt;
* So far we use the CPU Frequency scaling with the dynamic cpufreq governor. Please have a look at [https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt www.kernel.org].&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Thermal Management: Reasonable Values For Thermal Thresholds&#039;&#039; ====&lt;br /&gt;
To get some general information we reference to [https://www.kernel.org/doc/Documentation/thermal/sysfs-api.txt www.kernel.org]. The general meaning of passive and critical threshold:&lt;br /&gt;
* The &#039;&#039;&#039;passive trip point&#039;&#039;&#039; is a preventative measure before reaching critical that does things to lower temperature such as reducing cpu/gpu frequencies &lt;br /&gt;
* The &#039;&#039;&#039;critical trip point&#039;&#039;&#039; should not be exceeded to avoid damaging the SoC and as such when this threshold is reached the operating systems shutdown function is called to attempt to shut down the OS.&lt;br /&gt;
&lt;br /&gt;
A (carefull) example for industrial grade i.MX6 SoC (-40 to 105C):&lt;br /&gt;
* critical Trip Point = maxT – 5C = 100C&lt;br /&gt;
* passive Trip Point = maxT – 20C = 85C&lt;br /&gt;
&lt;br /&gt;
Sysfs path on i.MX6 with Linux Kernel based on Freescale 3.10.17_1.0.2&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt; /sys/class/thermal/thermal_zone0 &amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt; /sys/class/thermal/thermal_zone0/trip_point_0_temp &amp;lt;/tt&amp;gt; (critical trip point)&amp;lt;br/&amp;gt; &lt;br /&gt;
&amp;lt;tt&amp;gt; /sys/class/thermal/thermal_zone0/trip_point_1_temp &amp;lt;/tt&amp;gt; (passive trip point)&amp;lt;br/&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Attention:&#039;&#039;&#039; The thermal driver does not detect the thermal grade of your SoC. This does mean that you have to adjust the thresholds in some cases.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Thermal Management: i.MX6 Vivante GPU&#039;&#039; ====&lt;br /&gt;
The Vivante GPU does some frequency scaling based on temperature which enabled by default in the Vivante driver.  If enabled the driver will scale the GPU frequency down by a specified divisor. By default it is 1/64. Please have a look the your sysfs (when using 3.10.17_1.0.2 Kernel):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# echo 3 &amp;gt; /sys/module/galcore/parameters/gpu3DMinClock  &amp;lt;/tt&amp;gt; # set gpu frequency divisor to 3/64&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark:&#039;&#039;&#039; It is possible to do some further customizations at other parameters, too. This should be done depending on your use case.&lt;br /&gt;
&lt;br /&gt;
=== Tweaks ===&lt;br /&gt;
==== &#039;&#039;Simulate SoC with less cpu cores&#039;&#039; ====&lt;br /&gt;
To use ony n number of CPU cores instead of available cores for example to simulate another system on chip performane add &amp;quot;maxcpus=n&amp;quot; to the linux bootargs. For example add &amp;quot;optargs=&#039;maxcpus=1&#039;&amp;quot; to /boot/uLinuxEnv.txt to use only one cpu core.&lt;br /&gt;
&lt;br /&gt;
=== Kernel version ===&lt;br /&gt;
==== &#039;&#039;Get Kernel version (on target)&#039;&#039; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# uname -a&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Linux dhcom 3.14.12-rt9-g&#039;&#039;&#039;a81067a&#039;&#039;&#039; #1 SMP PREEMPT RT Thu Mar 3 09:32:46 CET 2016 armv7l GNU/Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
short git SHA = a81067a (this is an identifier for each git commit)&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;git commit of a specific version (on a develop machine)&#039;&#039; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# git show SHA&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;# git show a81067a&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark:&#039;&#039;&#039; Before you can do this you have to clone the DH repository from GitHub (look at the Linux section of your module type)&lt;br /&gt;
&lt;br /&gt;
=== Write/Clone/Copy a SD/µSD card Images ===&lt;br /&gt;
==== &#039;&#039;How to write a *.sdcard binary image to a sdcard?&#039;&#039; ====&lt;br /&gt;
The easiest way is to use &amp;lt;tt&amp;gt;&#039;&#039;&#039;dd&#039;&#039;&#039;&amp;lt;/tt&amp;gt; on your Linux development PC. &lt;br /&gt;
* Insert your µSD Card in your Card-Reader and connect it to your PC.&lt;br /&gt;
* Find out the /dev/DEVNAME device name for example with &amp;lt;tt&amp;gt;&#039;&#039;&#039;dmesg&#039;&#039;&#039;&amp;lt;/tt&amp;gt; in the terminal.&lt;br /&gt;
* &#039;&#039;&#039;Important:&#039;&#039;&#039; Be sure to write in the following step to the correct device.&lt;br /&gt;
* Flash your Image.sdcard with:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;dd if=/path/to/Image.sdcard of=/dev/DEVNAME bs=1M&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
* You can use &amp;lt;tt&amp;gt;&#039;&#039;&#039;dd&#039;&#039;&#039;&amp;lt;/tt&amp;gt; to create a backup of a µSD card when you swap the &amp;lt;tt&amp;gt;&#039;&#039;&#039;if=&#039;&#039;&#039;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&#039;&#039;&#039;of=&#039;&#039;&#039;&amp;lt;/tt&amp;gt; args.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Cloning the complete card (bit by bit)&#039;&#039; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Insert source card&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# mount | grep ^/dev &amp;lt;/tt&amp;gt;# Identify the device name DEVNAME of the sd card (the device name is without a number at the end: e.g. sde / sdf / ...)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sudo dd if=/dev/DEVNAME of=image.sdcard bs=1M &amp;lt;/tt&amp;gt;# Copy the source card content to an image file image.sdcard&amp;lt;br/&amp;gt;&lt;br /&gt;
Replace source card with target card&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sudo dd if=image.sdcard of=/dev/DEVNAME bs=1M &amp;lt;/tt&amp;gt;# Copy the image file to the target card&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sync &amp;lt;/tt&amp;gt;# write cached content to card&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark:&#039;&#039;&#039; Only possible if the card size are identical or the target card is greater!&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Copy the sd card content via a copmpressed archive file&#039;&#039; ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Insert source card&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# mount | grep ^/dev &amp;lt;/tt&amp;gt;# Identify the partition SOURCEPART to copy e.g. /media/devel/rootfs&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# cd SOURCEPART &amp;lt;/tt&amp;gt;# change to source partition&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sudo tar cfJv path/image.tar.xz . &amp;lt;/tt&amp;gt;# Compress the source card to an archive file image.tar.xz&amp;lt;br/&amp;gt;&lt;br /&gt;
Replace source card with target card&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# cd TARGETPART &amp;lt;/tt&amp;gt;# change to target partition&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sudo tar xfJv path/image.tar.xz&amp;lt;/tt&amp;gt;# Decompress the archive file to the target partition&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;# sync &amp;lt;/tt&amp;gt;# write cached content to card&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Remark:&#039;&#039;&#039;&lt;br /&gt;
You have to partition an format the target sd card&amp;lt;br/&amp;gt;&lt;br /&gt;
We therefore recommend the tool &amp;quot;Disks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
Our recommendation is to use two partitions:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. ext3 partition named &amp;quot;boot&amp;quot; with 50BM - 100MB&amp;lt;br/&amp;gt;&lt;br /&gt;
2. ext3 partition named &amp;quot;rootfs&amp;quot; with the remaining storage size&lt;br /&gt;
&lt;br /&gt;
=== fb_videomode struct description ===&lt;br /&gt;
To integrate support for an additional display it is necessary to expand the fb_videomode struct in linux. &lt;br /&gt;
 struct fb_videomode {&lt;br /&gt;
        const char *name;	/* optional */&lt;br /&gt;
        u32 refresh;		/* optional */&lt;br /&gt;
        u32 xres;&lt;br /&gt;
        u32 yres;&lt;br /&gt;
        u32 pixclock;		/* value in pico seconds */&lt;br /&gt;
        u32 left_margin;         /* H back porch */&lt;br /&gt;
        u32 right_margin;        /* H front porch */&lt;br /&gt;
        u32 upper_margin;	/* V back porch */&lt;br /&gt;
        u32 lower_margin;	/* V front porch */&lt;br /&gt;
        u32 hsync_len;&lt;br /&gt;
        u32 vsync_len;&lt;br /&gt;
        u32 sync;&lt;br /&gt;
        u32 vmode;&lt;br /&gt;
        u32 flag;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;width: 100%; color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
sync flags:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;FB_SYNC_HOR_HIGH_ACT &amp;lt;/tt&amp;gt; --&amp;gt; HSYNC pulse is active high&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;FB_SYNC_VERT_HIGH_ACT &amp;lt;/tt&amp;gt; --&amp;gt; VSYNC pulse is active high&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;FB_SYNC_CLK_LAT_FALL &amp;lt;/tt&amp;gt;  --&amp;gt; Display must sample data on falling edge&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;FB_SYNC_OE_LOW_ACT &amp;lt;/tt&amp;gt;  --&amp;gt; OE pulse is active low&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;FB_SYNC_DATA_INVERT &amp;lt;/tt&amp;gt;  --&amp;gt; Data inverted&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3231</id>
		<title>Environment for running local DHCOM Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3231"/>
		<updated>2021-02-01T10:00:01Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added explanation of some additional variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to make a update of your DHSOM system, without using an USB-stick or a SD-card, it is possible to alter the environment of U-Boot to start a local version of the DHCOM Update Mechanism.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The DHSOM system requires the following things:&lt;br /&gt;
* A spare partition on the eMMC (NAND-flash is usually too small) where the components of the update are stored.&lt;br /&gt;
* U-Boot must be built with the &amp;lt;tt&amp;gt;setexpr&amp;lt;/tt&amp;gt;-command included (This command is used for arithmetic expressions).&lt;br /&gt;
* The Linux on the DHSOM-System needs the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; for accessing the bootloader environment. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: The configuration of the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; must match the layout of the bootflash, else when setting the environment, the command may write to the wrong location on the flash. This may cause that the system won&#039;t work anymore.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Environment ==&lt;br /&gt;
&lt;br /&gt;
Use the following commands as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; (or prepend them with &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt;) to set up the bootloader environment:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv local_update_max_tries 3 &lt;br /&gt;
 fw_setenv check_if_local_update &#039;if test &amp;quot;${local_update}&amp;quot; = &amp;quot;true&amp;quot; -a ${local_update_tries} -lt ${local_update_max_tries} ; then run do_local_update; fi&#039; &lt;br /&gt;
 fw_setenv do_local_update &#039;setexpr local_update_tries ${local_update_tries} + 1; saveenv; load ${src_intf} ${src_dev_part} ${loadaddr} zImage_${dhcom}.update; run setupdateargs; bootz ${loadaddr}&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a short explanation what each variable does:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Function of the variable&lt;br /&gt;
|-&lt;br /&gt;
| local_update || This is a flag which determines if an update via local DHCOM_Update should be made. The user can set this to true to activate the update.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_tries || Here the number of tries to update the system is stored. On each start of an update this counter is increased by one. If the update finishes successful the counter should be set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_max_tries || This variable stores a number which says how often an update should be tried, before it is aborted. At the command atop this is set to 3.&lt;br /&gt;
|-&lt;br /&gt;
| check_if_local_update || This variable contains a script. Here is checked if &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is true and if &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; is less then &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. If both are true, the script at variable &amp;lt;tt&amp;gt;do_local_update&amp;lt;/tt&amp;gt; is run, else nothing happens.&lt;br /&gt;
|-&lt;br /&gt;
| do_local_update || This script increments &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; by one and saves the new value. Then the update-kernel is loaded into memory. The variables &amp;lt;tt&amp;gt;src_intf&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;src_dev_part&amp;lt;/tt&amp;gt; determine which interface, device and partition are used for this. After that the script &amp;lt;tt&amp;gt;setupdateargs&amp;lt;/tt&amp;gt; (which is also used by the regular update kernel) is run. Now the update-kernel is loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These variables are referenced by the prior variables:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Function of the variable&lt;br /&gt;
|-&lt;br /&gt;
| src_intf|| This is the type of interface where the update is located (mmc or usb). The variable has to be set when the update is activated. &lt;br /&gt;
|-&lt;br /&gt;
| src_dev_part || Here the device number of the used device and the partition where the update is stored in the form &amp;lt;tt&amp;gt;&amp;lt;device_number&amp;gt;:&amp;lt;partition&amp;gt;&amp;lt;/tt&amp;gt;. The variable has to be set when the update is activated. Note that the device numbers start with 0, while the partition numbers start with 1.&lt;br /&gt;
|-&lt;br /&gt;
| loadaddr || This variable contains an address where the kernel is loaded onto RAM. This is preset in the environment and nothing has to be changed here by the user.&lt;br /&gt;
|-&lt;br /&gt;
| setupdateargs || This variable contains a script, which sets up the bootargs of the update-kernel. &amp;lt;tt&amp;gt;src_intf&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;src_dev_part&amp;lt;/tt&amp;gt; are given to the kernel as arguments, so the software inside the kernel can determine where the update is located (the &amp;lt;tt&amp;gt;CMDLINE&amp;lt;/tt&amp;gt; environment variable contains a list of all bootargs of the kernel).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You have to alter the &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; variable (is always executed at startup of the module) that the check is run. You have to add &amp;lt;tt&amp;gt; run check_if_local_update;&amp;lt;/tt&amp;gt; after the &amp;lt;tt&amp;gt;update auto;&amp;lt;/tt&amp;gt; part.&lt;br /&gt;
For a standard i.MX6-based DHSOM-module the needed command should look like this:&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv bootcmd &#039;update auto; run check_if_local_update; mmc dev ${mmcdev}; if mmc rescan; then run bootlinux; else echo Boot failed, because mmc${mmcdev} not found!;fi;&amp;lt;/tt&amp;gt;&lt;br /&gt;
On other DHSOM-modules the needed &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; may vary.&lt;br /&gt;
&lt;br /&gt;
When connected to the DHSOM module via serial cable, it is also possible to make these changes to the environment from the U-Boot console. There are two differences when doing this from the U-Boot console:&lt;br /&gt;
* Instead of using the &amp;lt;tt&amp;gt;fw_setenv&amp;lt;/tt&amp;gt; command you have to use &amp;lt;tt&amp;gt;setenv&amp;lt;/tt&amp;gt; which is the built in command of U-Boot. &lt;br /&gt;
* After the last command you have to use &amp;lt;tt&amp;gt;saveenv&amp;lt;/tt&amp;gt; to save the changed environment. Without doing this the changes will be lost after the next reboot of the module.&lt;br /&gt;
&lt;br /&gt;
== Activate Booting Update Kernel ==&lt;br /&gt;
&lt;br /&gt;
After the update image and the update-kernel is put onto the device, you can activate the update from inside the Linux. The following example assumes that the components of the update are on the third partition of the eMMC of an i.MX6 based DHSOM-module. The eMMC on the i.MX6 has the device number 2, on other modules this can be different (like the AM335X: There the eMMC has the device number 1).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update true &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf mmc &lt;br /&gt;
 fw_setenv src_dev_part 2:3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the next reboot the update will be executed.&lt;br /&gt;
&lt;br /&gt;
After the update has finished, the update mechanism must disable the local update or else the update will be triggered again. The following commands do unset the source variables and reset the counter and flag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf &lt;br /&gt;
 fw_setenv src_dev_part&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the update fails the update will be tried again until &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; hits the number in &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. After that the bootloader tries to boot the system as normal. You can see that the update was aborted from inside the Linux system if the variables &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; contains the same number as &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. You can use the command &amp;lt;tt&amp;gt;fw_printenv&amp;lt;/tt&amp;gt; to read the content of these variables.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3230</id>
		<title>Environment for running local DHCOM Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3230"/>
		<updated>2021-01-29T07:23:44Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to make a update of your DHSOM system, without using an USB-stick or a SD-card, it is possible to alter the environment of U-Boot to start a local version of the DHCOM Update Mechanism.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The DHSOM system requires the following things:&lt;br /&gt;
* A spare partition on the eMMC (NAND-flash is usually too small) where the components of the update are stored.&lt;br /&gt;
* U-Boot must be built with the &amp;lt;tt&amp;gt;setexpr&amp;lt;/tt&amp;gt;-command included (This command is used for arithmetic expressions).&lt;br /&gt;
* The Linux on the DHSOM-System needs the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; for accessing the bootloader environment. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: The configuration of the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; must match the layout of the bootflash, else when setting the environment, the command may write to the wrong location on the flash. This may cause that the system won&#039;t work anymore.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Environment ==&lt;br /&gt;
&lt;br /&gt;
Use the following commands as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; (or prepend them with &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt;) to set up the bootloader environment:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv local_update_max_tries 3 &lt;br /&gt;
 fw_setenv check_if_local_update &#039;if test &amp;quot;${local_update}&amp;quot; = &amp;quot;true&amp;quot; -a ${local_update_tries} -lt ${local_update_max_tries} ; then run do_local_update; fi&#039; &lt;br /&gt;
 fw_setenv do_local_update &#039;setexpr local_update_tries ${local_update_tries} + 1; saveenv; load ${src_intf} ${src_dev_part} ${loadaddr} zImage_${dhcom}.update; run setupdateargs; bootz ${loadaddr}&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a short explanation what each variable does:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Function of the variable&lt;br /&gt;
|-&lt;br /&gt;
| local_update || This is a flag which determines if an update via local DHCOM_Update should be made. The user can set this to true to activate the update.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_tries || Here the number of tries to update the system is stored. On each start of an update this counter is increased by one. If the update finishes successful the counter should be set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_max_tries || This variable stores a number which says how often an update should be tried, before it is aborted. At the command atop this is set to 3.&lt;br /&gt;
|-&lt;br /&gt;
| check_if_local_update || This variable contains a script. Here is checked if &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is true and if &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; is less then &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. If both are true, the script at variable &amp;lt;tt&amp;gt;do_local_update&amp;lt;/tt&amp;gt; is run, else nothing happens.&lt;br /&gt;
|-&lt;br /&gt;
| do_local_update || This script increments &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; by one and saves the new value. Then the update-kernel is loaded into memory. The variables &amp;lt;tt&amp;gt;src_intf&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;src_dev_part&amp;lt;/tt&amp;gt; determine which interface, device and partition are used for this. After that the script &amp;lt;tt&amp;gt;setupdateargs&amp;lt;/tt&amp;gt; (which is also used by the regular update kernel) is run. Now the update-kernel is loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You have to alter the &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; variable (is always executed at startup of the module) that the check is run. You have to add &amp;lt;tt&amp;gt; run check_if_local_update;&amp;lt;/tt&amp;gt; after the &amp;lt;tt&amp;gt;update auto;&amp;lt;/tt&amp;gt; part.&lt;br /&gt;
For a standard i.MX6-based DHSOM-module the needed command should look like this:&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv bootcmd &#039;update auto; run check_if_local_update; mmc dev ${mmcdev}; if mmc rescan; then run bootlinux; else echo Boot failed, because mmc${mmcdev} not found!;fi;&amp;lt;/tt&amp;gt;&lt;br /&gt;
On other DHSOM-modules the needed &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; may vary.&lt;br /&gt;
&lt;br /&gt;
When connected to the DHSOM module via serial cable, it is also possible to make these changes to the environment from the U-Boot console. There are two differences when doing this from the U-Boot console:&lt;br /&gt;
* Instead of using the &amp;lt;tt&amp;gt;fw_setenv&amp;lt;/tt&amp;gt; command you have to use &amp;lt;tt&amp;gt;setenv&amp;lt;/tt&amp;gt; which is the built in command of U-Boot. &lt;br /&gt;
* After the last command you have to use &amp;lt;tt&amp;gt;saveenv&amp;lt;/tt&amp;gt; to save the changed environment. Without doing this the changes will be lost after the next reboot of the module.&lt;br /&gt;
&lt;br /&gt;
== Activate Booting Update Kernel ==&lt;br /&gt;
&lt;br /&gt;
After the update image and the update-kernel is put onto the device, you can activate the update from inside the Linux. The following example assumes that the components of the update are on the third partition of the eMMC of an i.MX6 based DHSOM-module. The eMMC on the i.MX6 has the device number 2, on other modules this can be different (like the AM335X: There the eMMC has the device number 1).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update true &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf mmc &lt;br /&gt;
 fw_setenv src_dev_part 2:3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the next reboot the update will be executed.&lt;br /&gt;
&lt;br /&gt;
After the update has finished, the update mechanism must disable the local update or else the update will be triggered again. The following commands do unset the source variables and reset the counter and flag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf &lt;br /&gt;
 fw_setenv src_dev_part&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the update fails the update will be tried again until &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; hits the number in &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. After that the bootloader tries to boot the system as normal. You can see that the update was aborted from inside the Linux system if the variables &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; contains the same number as &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. You can use the command &amp;lt;tt&amp;gt;fw_printenv&amp;lt;/tt&amp;gt; to read the content of these variables.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3229</id>
		<title>Environment for running local DHCOM Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3229"/>
		<updated>2021-01-29T06:45:32Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Revising some phrases, error correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to make a update of your DHSOM system, without using an USB-stick or a SD-card, it is possible to alter the environment of U-Boot to start a local version of the DHCOM Update Mechanism.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The DHSOM system requires the following things:&lt;br /&gt;
* A spare partition on the eMMC (NAND-flash is usually too small) where the components of the update are stored.&lt;br /&gt;
* U-Boot must be built with the &amp;lt;tt&amp;gt;setexpr&amp;lt;/tt&amp;gt;-command included (This command is used for arithmetic expressions).&lt;br /&gt;
* The Linux on the DHSOM-System needs the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; for accessing the bootloader environment. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: The configuration of the &amp;lt;tt&amp;gt;fw-tools&amp;lt;/tt&amp;gt; must match the layout of the bootflash, else when setting the environment, the command may write to the wrong location on the flash. This may cause that the system won&#039;t work anymore.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Environment ==&lt;br /&gt;
&lt;br /&gt;
Use the following commands as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; (or prepend them with &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt;) to set up the bootloader environment:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv local_update_max_tries 3 &lt;br /&gt;
 fw_setenv check_if_local_update &#039;if test &amp;quot;${local_update}&amp;quot; = &amp;quot;true&amp;quot; -a ${local_update_tries} -lt ${local_update_max_tries} ; then run do_local_update; fi&#039; &lt;br /&gt;
 fw_setenv do_local_update &#039;setexpr local_update_tries ${local_update_tries} + 1; saveenv; load ${src_intf} ${src_dev_part} ${loadaddr} zImage_${dhcom}.update; run setupdateargs; bootz ${loadaddr}&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a short explanation what each variable does:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Function of the variable&lt;br /&gt;
|-&lt;br /&gt;
| local_update || This is a flag which determines if an update via local DHCOM_Update should be made. The user can set this to true to activate the update.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_tries || Here the number of tries to update the system is stored. On each start of an update this counter is increased by one. If the update finishes successful the counter should be set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_max_tries || This variable stores a number which says how often an update should be tried, before it is aborted. At the command atop this is set to 3.&lt;br /&gt;
|-&lt;br /&gt;
| check_if_local_update || This variable contains a script. Here is checked if &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is true and if &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; is less then &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. If both are true, the script at variable &amp;lt;tt&amp;gt;do_local_update&amp;lt;/tt&amp;gt; is run, else nothing happens.&lt;br /&gt;
|-&lt;br /&gt;
| do_local_update || This script increments &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; by one and saves the new value. Then the update-kernel is loaded into memory. The variables &amp;lt;tt&amp;gt;src_intf&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;src_dev_part&amp;lt;/tt&amp;gt; determine which interface, device and partition are used for this. After that the script &amp;lt;tt&amp;gt;setupdateargs&amp;lt;/tt&amp;gt; (which is also used by the regular update kernel) is run. Now the update-kernel is loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You have to alter the &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; variable (is always executed at startup of the module) that the check is run. You have to add &amp;lt;tt&amp;gt; run check_if_local_update;&amp;lt;/tt&amp;gt; after the &amp;lt;tt&amp;gt;update auto;&amp;lt;/tt&amp;gt; part.&lt;br /&gt;
For a standard i.MX6-based DHSOM-module the needed command should look like this:&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv bootcmd &#039;update auto; run check_if_local_update; mmc dev ${mmcdev}; if mmc rescan; then run bootlinux; else echo Boot failed, because mmc${mmcdev} not found!;fi;&amp;lt;/tt&amp;gt;&lt;br /&gt;
On other DHSOM-modules the needed &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; may vary.&lt;br /&gt;
&lt;br /&gt;
When connected to the DHSOM module via serial cable, it is also possible to make these changes to the environment from the U-Boot console. There are two differences when doing this from the U-Boot console:&lt;br /&gt;
* Instead of using the &amp;lt;tt&amp;gt;fw_setenv&amp;lt;/tt&amp;gt; command you have to use &amp;lt;tt&amp;gt;setenv&amp;lt;/tt&amp;gt; which is the built in command of U-Boot. &lt;br /&gt;
* After the last command you have to use &amp;lt;tt&amp;gt;saveenv&amp;lt;/tt&amp;gt; to save the changed environment. Without doing this the changes will be lost after the next reboot of the module.&lt;br /&gt;
&lt;br /&gt;
== Activate Booting Update Kernel ==&lt;br /&gt;
&lt;br /&gt;
When the update image and the update-kernel is put onto the device, you can activate the update from inside the Linux. The following example assumes that the components of the update are on the third partition of the eMMC of an i.MX6 based DHSOM-module. The eMMC on the i.MX6 has the device number 2, on other modules this can be different (like the AM335X: There the eMMC has the device number 1).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update true &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf mmc &lt;br /&gt;
 fw_setenv src_dev_part 2:3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the next reboot the update will be executed.&lt;br /&gt;
&lt;br /&gt;
After the update has finished, the update mechanism must disable the local update or else the update will be triggered again. The following commands do unset the source variables and reset the counter and flag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf &lt;br /&gt;
 fw_setenv src_dev_part&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the update fails the update will be tried again until &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; hits the number in &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. After that the bootloader tries to boot the system as normal. You can see that the update was aborted from inside the Linux system if the variables &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; contains the same number as &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. You can use the command &amp;lt;tt&amp;gt;fw_printenv&amp;lt;/tt&amp;gt; to read the content of these variables.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3228</id>
		<title>Environment for running local DHCOM Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3228"/>
		<updated>2021-01-28T15:39:40Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Finished writing the draft of the documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to make a update of your DHSOM system, without using an USB-stick or a SD-card, it is possible to alter the environment of U-Boot to start a local version of the DHCOM Update Mechanism.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The DHSOM system requires the following things:&lt;br /&gt;
* A spare partition on the eMMC (NAND-flash is usually too small) where the components of the update are stored.&lt;br /&gt;
* U-Boot must be built with the &amp;lt;tt&amp;gt;setexpr&amp;lt;/tt&amp;gt;-command included (This command is used for arithmetic expressions).&lt;br /&gt;
* The Linux on the DHSOM-System needs the fw-tools for accessing the bootloader environment. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: The configuration of the fw-tools must match the layout of the bootflash, else when setting the environment, the command will write to the wrong location on the flash. This may cause that the system won&#039;t work anymore.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Environment ==&lt;br /&gt;
&lt;br /&gt;
Use the following commands as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; (or prepend them with &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt;) to set up the bootloader environment:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv local_update_max_tries 3 &lt;br /&gt;
 fw_setenv check_if_local_update &#039;if test &amp;quot;${local_update}&amp;quot; = &amp;quot;true&amp;quot; -a ${local_update_tries} -lt ${local_update_max_tries} ; then run do_local_update; fi&#039; &lt;br /&gt;
 fw_setenv do_local_update &#039;setexpr local_update_tries ${local_update_tries} + 1; saveenv; load ${src_intf} ${src_dev_part} ${loadaddr} zImage_${dhcom}.update; run setupdateargs; bootz ${loadaddr}&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a short explanation what each variable does:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Function of the variable&lt;br /&gt;
|-&lt;br /&gt;
| local_update || This is a flag which determines if an update via local DHCOM_Update should be made. The user can set this to true to activate the update.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_tries || Here the number of tries to update the system is stored. On each start of an update this counter is increased by one. If the update finishes successful the counter should be set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| local_update_max_tries || This variable stores a number which says how often an update should be tried, before it is aborted. At the command atop this is set to 3.&lt;br /&gt;
|-&lt;br /&gt;
| check_if_local_update || This variable contains a script. Here is checked if &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is true and if &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; is less then &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. If both are true, the script at variable &amp;lt;tt&amp;gt;do_local_update&amp;lt;/tt&amp;gt; is run, else nothing happens.&lt;br /&gt;
|-&lt;br /&gt;
| do_local_update || This script increments &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; by one and saves the new value. Then the update-kernel is loaded into memory. The variables &amp;lt;tt&amp;gt;src_intf&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;src_dev_part&amp;lt;/tt&amp;gt; determine which interface, device and partition are used for this. After that the script &amp;lt;tt&amp;gt;setupdateargs&amp;lt;/tt&amp;gt; (which is also used by the regular update kernel) is run. Now the update-kernel is loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You have to alter the &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; variable that the check is run. You have to add &amp;lt;tt&amp;gt; run check_if_local_update;&amp;lt;/tt&amp;gt; after the &amp;lt;tt&amp;gt;update auto;&amp;lt;/tt&amp;gt; part.&lt;br /&gt;
For a standard i.MX6-based DHSOM-module the needed command should look like this:&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv bootcmd &#039;update auto; run check_if_local_update; mmc dev ${mmcdev}; if mmc rescan; then run bootlinux; else echo Boot failed, because mmc${mmcdev} not found!;fi;&amp;lt;/tt&amp;gt;&lt;br /&gt;
On other DHSOM-modules the needed &amp;lt;tt&amp;gt;bootcmd&amp;lt;/tt&amp;gt; may vary.&lt;br /&gt;
&lt;br /&gt;
When connected to the DHSOM module via serial cable, it is also possible to make these changes to the environment from the U-Boot console. There are two differences when doing this from the U-Boot console:&lt;br /&gt;
* Instead of using the &amp;lt;tt&amp;gt;fw_setenv&amp;lt;/tt&amp;gt; command you have to use &amp;lt;tt&amp;gt;setenv&amp;lt;/tt&amp;gt; which is the built in command of U-Boot. &lt;br /&gt;
* After the last command you have to use &amp;lt;tt&amp;gt;saveenv&amp;lt;/tt&amp;gt; to save the changed environment. Without doing this the changes will be lost after the next reboot of the module.&lt;br /&gt;
&lt;br /&gt;
== Activate Booting Update Kernel ==&lt;br /&gt;
&lt;br /&gt;
When the update image and the update-kernel is put onto the device, you can activate the update from inside the Linux. The following example assumes that the components of the update are on the third partition of the eMMC of an i.MX6 based DHSOM-module. The eMMC on the i.MX6 has the device number 2, other modules can differ here (like the AM335X: There the eMMC has the device number 1).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update true &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf mmc &lt;br /&gt;
 fw_setenv src_dev_part 2:3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the next reboot the update will be executed.&lt;br /&gt;
&lt;br /&gt;
After the update has finished, the update mechanism must disable the local update or else the update will be triggered again. The following commands do unset the source variables and reset the counter and flag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;fw_setenv local_update false &lt;br /&gt;
 fw_setenv local_update_tries 0 &lt;br /&gt;
 fw_setenv src_intf &lt;br /&gt;
 fw_setenv src_dev_part&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the update fails the update tried again until &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; hits the number in &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. After that the bootloader tries to boot the system as normal. You can see that the update was aborted from inside the Linux system if the variables &amp;lt;tt&amp;gt;local_update&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;local_update_tries&amp;lt;/tt&amp;gt; contains the same number as &amp;lt;tt&amp;gt;local_update_max_tries&amp;lt;/tt&amp;gt;. You can use the command &amp;lt;tt&amp;gt;fw_printenv&amp;lt;/tt&amp;gt; to read the content of these variables.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3226</id>
		<title>Environment for running local DHCOM Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Environment_for_running_local_DHCOM_Update&amp;diff=3226"/>
		<updated>2021-01-25T15:28:01Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: First part of the site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to make a update of your DHSOM system, without using an USB-stick or a SD-card, it is possible to alter the environment of U-Boot to start a local version of the DHCOM Update Mechanism.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The DHSOM system requires the following things:&lt;br /&gt;
* A spare partition on the eMMC (NAND-flash is usually too small) where the components of the update are stored.&lt;br /&gt;
* U-Boot must be built with the &amp;lt;tt&amp;gt;setexpr&amp;lt;/tt&amp;gt;-command included (This command is used for arithmetic expressions).&lt;br /&gt;
* The Linux on the DHSOM-System needs the fw-tools for accessing the bootloader environment.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Environment ==&lt;br /&gt;
&lt;br /&gt;
Use the following commands as root (or prepend them with sudo) to set up the bootloader environment. If you are in the U-Boot console, you have to use &amp;lt;tt&amp;gt;setenv&amp;lt;/tt&amp;gt; instead and after the last command you have to use &amp;lt;tt&amp;gt;saveenv&amp;lt;/tt&amp;gt; to save the changed environment.&lt;br /&gt;
&lt;br /&gt;
fw_setenv local_update false &lt;br /&gt;
fw_setenv local_update_tries 0 &lt;br /&gt;
fw_setenv local_update_max_tries 3 &lt;br /&gt;
fw_setenv check_if_local_update &#039;if test &amp;quot;${local_update}&amp;quot; = &amp;quot;true&amp;quot; -a ${local_update_tries} -lt ${local_update_max_tries} ; then run do_local_update; fi&#039; &lt;br /&gt;
fw_setenv do_local_update &#039;setexpr local_update_tries ${local_update_tries} + 1; saveenv; load ${src_intf} ${src_dev_part} ${loadaddr} zImage_${dhcom}.update; run setupdateargs; bootz ${loadaddr}&#039; &lt;br /&gt;
fw_setenv bootcmd &#039;update auto; run check_if_local_update; mmc dev ${mmcdev}; if mmc rescan; then run bootlinux; else echo Boot failed, because mmc${mmcdev} not found!;fi;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3187</id>
		<title>DHCOM STM32MP1 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3187"/>
		<updated>2020-10-23T09:24:23Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Error correction at FIT-Image example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Linux virtual machine for development ==&lt;br /&gt;
:* Please have a look at: &#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Sources: Look at page [[DHCOM iMX6ULL-D2#BSP Sources|i.MX6ULL BSP Sources]] === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-stm32mp1.git --branch dev/5.4.69_dhsom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-stm32mp1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make stm32mp1_dhsom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Create the FIT-image with our script ([[media:Dh-create-fitimage_1.0_all.deb|Download link]])&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interactive mode for selecting device trees&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Device trees are set as parameter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees to include (e.g. if you want to include the device tree for the PDK2 include the number of &amp;lt;tt&amp;gt;&#039;&#039;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb&#039;&#039;&amp;lt;/tt&amp;gt; (usually 3).&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees overlays to include (e.g. for the PDK2 enter the files which contain &amp;lt;tt&amp;gt;&#039;&#039;PDK2&#039;&#039;&amp;lt;/tt&amp;gt; (usually 8 9 10 11 12 13 14).&lt;br /&gt;
|&lt;br /&gt;
(Example is for the PDK2) &amp;lt;br&amp;gt;&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage --dtb ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb --dtbo ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-460-200-x11.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-497-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-505-200-x12-ch101olhlwh.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x21.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x22.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-560-200-x12.dtbo,./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-638-100-x12-rpi7inch.dtbo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware == &lt;br /&gt;
&lt;br /&gt;
=== RS-485 on picoITX ===&lt;br /&gt;
:&#039;&#039;&#039;RS-485 device&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 2||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Compilation on target&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_test.c -o tty_rs485_test&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Set tty device to raw mode&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;stty -F /dev/ttySTM2 115200 cs8 raw -echo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo -n -e &amp;quot;\n\rHallo RS485 Welt!&amp;quot; | ./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Receive data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Download example source code&#039;&#039;&#039;&lt;br /&gt;
:* [[media:Tty_rs485_test.zip | tty_rs485_test.c]]&lt;br /&gt;
&lt;br /&gt;
=== CAN interface ===&lt;br /&gt;
:&#039;&#039;&#039;Setup CAN interface with baudrate 500kbit/sec.&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 up type can bitrate 500000&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Start to listen on CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;candump can0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send test message&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cansend can0 100#11.2233.44556677.88&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Deinitialize CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 down&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHCOR_STM32MP1_Linux&amp;diff=3186</id>
		<title>DHCOR STM32MP1 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHCOR_STM32MP1_Linux&amp;diff=3186"/>
		<updated>2020-10-23T09:19:37Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added &amp;quot;How to build the Linux Kernel&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== U-Boot Bootloader Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Activating Device Tree Overlays ===&lt;br /&gt;
:Some of the hardware features can be activated with the help of a device tree overlay. To activate a device tree overlay, you have to go into the U-Boot console first. This can be done during the first seconds after startup, by simply hitting any button on a keyboard once the system tells you to do so. &lt;br /&gt;
&lt;br /&gt;
:When you are in the bootloder, you can view a list of all available device tree overlays with the following command. &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; ls mmc 0:4 /boot &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:After that, you can select a device tree overlay with the following commands:&lt;br /&gt;
&lt;br /&gt;
:To activate CAN support:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; setenv loaddtos &#039;#conf@stm32mp157a-avenger96.dtb#conf@stm32mp157a-avenger96-overlay-fdcan1-x6.dtbo#conf@stm32mp157a-avenger96-overlay-fdcan2-x6.dtbo&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To activate the 96Boards D3Camera Mezzanine Board enter:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; setenv loaddtos &#039;#conf@stm32mp157a-avenger96.dtb#conf@stm32mp157a-avenger96-overlay-ov5640-x7.dtbo&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:If you want to make use of the MIPI DSI interface, you can start with an MIPI DSI interface board developed by DH electronics. If you want to use it, simply contact us to find out more about it. &lt;br /&gt;
:To activate the MIPI DSI Interface enter the following device tree overlay. &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; setenv loaddtos &#039;#conf@stm32mp157a-avenger96.dtb#conf@stm32mp157a-avenger96-overlay-644-100-x6-otm8009a.dtbo&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:If you want to save your settings, so that you don&#039;t have to enter the device tree overlay after every reboot, enter this command: &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; saveenv &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To reset your device tree overlay, simply override the last settings:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; setenv loaddtos &#039;#conf@stm32mp157a-avenger96.dtb&#039; &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Once the device tree overlay is set, you can boot up your board by entering boot:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;&amp;gt; boot &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Linux Userspace Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Logging in after Startup ===&lt;br /&gt;
:After booting, you con login as the user &amp;quot;root&amp;quot; without any password. Note, that the standard console is connected to the UART 1 port (96Boards name). &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh-stm32mp1-dhcor-avenger96 login: &#039;&#039;&#039;root&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interacting with GPIOs ===&lt;br /&gt;
:An GPIO can be activated with the gpioset command. To find out which GPIO is connected to what gpiochip-device, take a look at the Hardware Section below. &lt;br /&gt;
:The GPIO &amp;quot;A&amp;quot; can be turned on by &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# gpioset gpiochip0 14=1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:and off by &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# gpioset gpiochip0 14=0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interacting with the User LEDs ===&lt;br /&gt;
:In between the two USB-Host connectors of the Avenger96, you can find four so called User LEDs. These LEDs can be used for simple programming examples and be accessed and manipulated by the user form the userspace. &lt;br /&gt;
:The LEDs are located under /sys/class/leds. &lt;br /&gt;
:To disable the blinking of the LED0 hit following command:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# echo none &amp;gt; /sys/class/leds/green:user0/trigger&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:The LEDs can also be turned on or off permanently by writing either &amp;quot;1&amp;quot; or &amp;quot;0&amp;quot; to the following file:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# echo 1 &amp;gt; /sys/class/leds/green:user0/brightness&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# echo 0 &amp;gt; /sys/class/leds/green:user0/brightness&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Accessing Devices over I2C ===&lt;br /&gt;
:Once you have connected some I2C devices to the Avenger96, you can scan the I2C bus and see if your device is available.&lt;br /&gt;
:To scan for devices on the I2C-Bus 1 enter the following command:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# i2cdetect -y 1 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To write on the device on the address 0x50 to its register number 0x10 the value 0x20 enter the following command:  &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# i2cset -y 1 0x50 0x10 0x20 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To read the data of the device on the address 0x50 at its register 0x10 enter this:   &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# i2cget -y 1 0x50 0x10 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:For a dump of the entire registers of the device at address 0x50 enter the following command:   &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# i2cdump -f 1 0x50 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unsing the internal RTC ===&lt;br /&gt;
:Read out the current date and time of the system (not the RTC itself)&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# date&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Set a specific system time &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# date -s &amp;quot;2020-01-30 10:00:00&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Save the current system time to the RTC of the STM32MP1&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# hwclock -w&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:When you allready have stored a date on the RTC and you want to read it out, use the next command. This command only gives back the time, but does not synchronize it with the system time. This is done in the next step. &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# hwclock -r&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:The system time can be synchronised to the RTC by this command: &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# hwclock -s&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Using the second UART port ===&lt;br /&gt;
:If you want to use the second UART Port available on the Low Speed Expansion Connector of the Avenger96, you can access it easily with the tool called minicom&lt;br /&gt;
:To open up its configuration enter the following command&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# minicom -s&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Once you&#039;ve opend minicom, navigate to &#039;&#039;&amp;lt;tt&amp;gt;Serial port setup&amp;lt;/tt&amp;gt;&#039;&#039; and change the Serial Device to &#039;&#039;&amp;lt;tt&amp;gt;/dev/ttySTM1&amp;lt;/tt&amp;gt;&#039;&#039;. &lt;br /&gt;
:Now you can hit &#039;&#039;&amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;&#039;&#039; and you are in a terminal which is connected to the second UART port. &lt;br /&gt;
&lt;br /&gt;
:To reopen the settings of minicom press &#039;&#039;&amp;lt;tt&amp;gt;CTRL + A&amp;lt;/tt&amp;gt;&#039;&#039; and then &#039;&#039;&amp;lt;tt&amp;gt;O&amp;lt;/tt&amp;gt;&#039;&#039; on your keyboard. &lt;br /&gt;
:To close minicom press &#039;&#039;&amp;lt;tt&amp;gt;CTRL + A&amp;lt;/tt&amp;gt;&#039;&#039; and then &#039;&#039;&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;&#039;&#039; on your keyboard.&lt;br /&gt;
&lt;br /&gt;
=== Connecting to a WiFi network ===&lt;br /&gt;
:After bootup, you have to enter the following commands: &lt;br /&gt;
&lt;br /&gt;
:activating the wlan0 interface&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# ifconfig wlan0 up&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Enter the SSID and the WPA Key&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# wpa_passphrase &amp;quot;YOUR SSID&amp;quot; your-wpa-key &amp;gt; wpa_supplicant.conf &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Defining the settings&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# wpa_supplicant -B -Dnl8011 -iwlan0 -cwpa_supplicant.conf &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:After that you should get the message &amp;quot;successfully initialized wpa_supplicant&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Requesting an IP-Address from the DHCP-Server&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# udhcpc -i wlan0 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Checking your IP Address &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# ifconfig &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to a Bluetooth Device ===&lt;br /&gt;
:In this example you can see how to connect a bluetooth headset to the Avenger96 and play a song over it. &lt;br /&gt;
:For this you have to first store a *.wav audiofile in the home directory (/home/root). &lt;br /&gt;
&lt;br /&gt;
:First start pulsaudio&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# pulseaudio --start&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Bring up the Bluetooth Device&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# hciconfig hci0 up&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Start the Bluetooth configuration tool&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# bluetoothctl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Now you are controlling the configuration tool. Here you can start the scanning for bluetooth devices&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# scan on&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Once you see the device you like to connect to stop the scanning. &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# scan off&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Now Copy the MAC-address of your bluetooth device and pair to it&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# pair xx:xx:xx:xx:xx:xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Next add it to the list of trusted devices&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# trust xx:xx:xx:xx:xx:xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Finally connect to it&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# connect xx:xx:xx:xx:xx:xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Your Headphone should now be connected to the Avenger96, so you can leave the bluetooth configuration tool&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# exit&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Now you can start playing your audiofile &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# aplay audiofile.wav&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:When you want to remove your device from the Avenger96, open &#039;&#039;&amp;lt;tt&amp;gt;bluetoothctl&amp;lt;/tt&amp;gt;&#039;&#039; again and remove its MAC-address&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;[bluetooth]# remove xx:xx:xx:xx:xx:xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Activating the CAN interface ===&lt;br /&gt;
:The Avenger96 has two CAN FD ports which can be accessed from the GPIOs on the Low Speed Expansion Connector: &lt;br /&gt;
::FDCAN 1:&lt;br /&gt;
:::PA12 - TX&lt;br /&gt;
:::PA11 - RX&lt;br /&gt;
&lt;br /&gt;
::FDCAN 2:&lt;br /&gt;
:::PB13 - TX&lt;br /&gt;
:::PB5 - RX&lt;br /&gt;
&lt;br /&gt;
:To activate them, you have to add a Device Tree Overlay in the bootloader, like mentioned in the beginning of this page. &lt;br /&gt;
:Once this is done, you have to connect a CAN-Transceiver to the GPIOs and from here you can access the CAN-Bus. &lt;br /&gt;
&lt;br /&gt;
:Setup CAN interface with baudrate 500kbit/sec.&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# ip link set can0 up type can bitrate 500000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Start to listen on CAN port &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# candump can0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Send test message &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cansend can0 100#11.2233.44556677.88&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Deinitialize CAN port &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# ip link set can0 down&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Activating the MIPI CSI Interface ===&lt;br /&gt;
:The Avenger96 is compatible with the [https://www.96boards.org/product/d3camera/ D3Camera Mezzanine Board] available on the 96Boards website. &lt;br /&gt;
&lt;br /&gt;
:To activate this Mezzanine Board you have to connect it to the Avenger96 before you power it up. Note, that you also have to access the UART0 which is then available on the Solderpins of the D3Camera Mezzanine board. &lt;br /&gt;
:Like for CAN you also have to activate the proper device tree overlay as describte in the beginning of this page. &lt;br /&gt;
&lt;br /&gt;
:Once the system is booted, you have to connect a display to the Avenger96 via HDMI and then enter the following command. &lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# XDG_RUNTIME_DIR=/var/run/user/0/ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,pixelformat=RGB565 ! waylandsink&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mounting a USB Drive ===&lt;br /&gt;
:To mount a USB drive connect it to the Avenger96 and mount it with the following command&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# mount /dev/sda1 /mnt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Now your USB drive is available under the following directory&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cd /mnt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To unmount the drive enter the following command&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# umount /dev/sda1 &amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Formatting and mounting the eMMC ===&lt;br /&gt;
:At first you can check all block devices by this command&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# lsblk&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:First partitionate the eMMC device&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cfdisk /dev/mmcblk2&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Now select the partitiontable &#039;&#039;&amp;lt;tt&amp;gt;gpt&amp;lt;/tt&amp;gt;&#039;&#039;. Then in the menu you can add a new partiton by entering &#039;&#039;&amp;lt;tt&amp;gt;new&amp;lt;/tt&amp;gt;&#039;&#039; and then the size of your partition e.g. &#039;&#039;&amp;lt;tt&amp;gt;7G&amp;lt;/tt&amp;gt;&#039;&#039;. &lt;br /&gt;
:After that enter &#039;&#039;&amp;lt;tt&amp;gt;write&amp;lt;/tt&amp;gt;&#039;&#039; and confirm it with &#039;&#039;&amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;&#039;&#039;. Then you can &#039;&#039;&amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;&#039;&#039; this tool. &lt;br /&gt;
&lt;br /&gt;
:Now you can format the new partition&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# mkfs.ext4 /dev/mmcblk2p1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:To access this partition you have to mount it just like an USB-Stick&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# mount /dev/mmcblk2p1 /mnt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Read out the ADC Pins ===&lt;br /&gt;
:The GPIOs G and H are mapped as ADC pins. These pins can meassure a value from 0 V to 2,9 V. This reference voltage of 2,9 V is driven by the LDO1 of the PMIC. &lt;br /&gt;
:The value measured is calculated as followed:&lt;br /&gt;
::&#039;&#039;&amp;lt;tt&amp;gt;Umeassured = ( RAW + OFFSET ) * SCALE&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:You can read out the values as followed:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;GPIO G:&#039;&#039;&#039;&lt;br /&gt;
:Navigate to its directory&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cd /sys/bus/iio/devices/iio:device0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Read out &#039;&#039;&amp;lt;tt&amp;gt;SCALE&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage_scale&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Read out &#039;&#039;&amp;lt;tt&amp;gt;OFFSET&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage_offset&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Once you know these two values, you can read the actual ADC value&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage6_raw&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;GPIO H:&#039;&#039;&#039;&lt;br /&gt;
:Navigate to its directory&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cd /sys/bus/iio/devices/iio:device1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Read out &#039;&#039;&amp;lt;tt&amp;gt;SCALE&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage_scale&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Read out &#039;&#039;&amp;lt;tt&amp;gt;OFFSET&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage_offset&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Once you know these two values, you can read the actual ADC value&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;color: #000000; background: #FFFFFF;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;# cat in_voltage2_raw&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware ==&lt;br /&gt;
The pinmuxing of the DHCOR STM32MP1 can be configured just as needed by you as a customer and therefore the interfaces used in each configuration might be different. However, to give you an easy way to start developing with the DHCOR STM32MP1 you can use the Avenger96 Board, which is the reference design for our DHCOR module. Thus, the interfaces described here, are the configuration for the Avenger96.&lt;br /&gt;
&lt;br /&gt;
=== Serial (UART) Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | 96Boards Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Linux Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Hardware Name&lt;br /&gt;
|-&lt;br /&gt;
| UART 0&lt;br /&gt;
| &amp;lt;tt&amp;gt;/dev/ttySTM1&amp;lt;/tt&amp;gt;&lt;br /&gt;
| UART 7&lt;br /&gt;
|-&lt;br /&gt;
| UART 1 (Standard UART)&lt;br /&gt;
| &amp;lt;tt&amp;gt;/dev/ttySTM0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| UART 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== I²C Interfaces ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | 96Boards Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Linux Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Hardware Name&lt;br /&gt;
|-&lt;br /&gt;
| I2C0&lt;br /&gt;
| &amp;lt;tt&amp;gt;/dev/i2c-1&amp;lt;/tt&amp;gt;&lt;br /&gt;
| I2C2&lt;br /&gt;
|-&lt;br /&gt;
| I2C1&lt;br /&gt;
| &amp;lt;tt&amp;gt;/dev/i2c-0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| I2C1&lt;br /&gt;
|-&lt;br /&gt;
| OnBoard&lt;br /&gt;
| &amp;lt;tt&amp;gt;/dev/i2c-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| I2C4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== microSD and eMMC ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | 96Boards Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Linux Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Hardware Name&lt;br /&gt;
|-&lt;br /&gt;
| microSD&lt;br /&gt;
| &amp;lt;tt&amp;gt;mmcblk1&amp;lt;/tt&amp;gt;&lt;br /&gt;
| SDMMC1&lt;br /&gt;
|-&lt;br /&gt;
| eMMC&lt;br /&gt;
| &amp;lt;tt&amp;gt;mmcblk2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| SDMMC2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPIOs ===&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | 96Boards Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Linux Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Hardware Name&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip0 14&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PA14&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip1 11&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PB11&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip2 3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PC3&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip3 8&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PD8&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip3 14&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PD14&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip3 15&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PD15&lt;br /&gt;
|-&lt;br /&gt;
| G (mapped as ADC)&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip5 12&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PF12&lt;br /&gt;
|-&lt;br /&gt;
| H (mapped as ADC)&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip5 13&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PF13&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip0 12&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PA12&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip1 5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PB5&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip0 11&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PA11&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| &amp;lt;tt&amp;gt;gpiochip1 13&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PB13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Beside the GPIOs, the Avenger96 has also four user LEDs, which are controlled the same way as the GPIOs.&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | 96Boards Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Linux Name&lt;br /&gt;
! style=&amp;quot;background-color:#efefef; width: 200px; text-align:left&amp;quot; | Hardware Name&lt;br /&gt;
|-&lt;br /&gt;
| LED 0&lt;br /&gt;
| &amp;lt;tt&amp;gt;/sys/class/leds/green:user0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PZ7&lt;br /&gt;
|-&lt;br /&gt;
| LED 1&lt;br /&gt;
| &amp;lt;tt&amp;gt;/sys/class/leds/green:user1&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PF3&lt;br /&gt;
|-&lt;br /&gt;
| LED 2&lt;br /&gt;
| &amp;lt;tt&amp;gt;/sys/class/leds/green:user2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PG0&lt;br /&gt;
|-&lt;br /&gt;
| LED 3&lt;br /&gt;
| &amp;lt;tt&amp;gt;/sys/class/leds/green:user3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| PG1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Sources: Look at page [[DHCOM iMX6ULL-D2#BSP Sources|i.MX6ULL BSP Sources]] === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-stm32mp1.git --branch dev/5.4.69_dhsom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-stm32mp1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make stm32mp1_dhsom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Create the FIT-image with our script ([[media:Dh-create-fitimage_1.0_all.deb|Download link]])&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interactive mode for selecting device trees&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Device trees are set as parameter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees to include (e.g. if you want to include the device tree for the Avenger96 include the number of &amp;lt;tt&amp;gt;&#039;&#039;./arch/arm/boot/dts/stm32mp157a-avenger96.dtb&#039;&#039;&amp;lt;/tt&amp;gt; (usually 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees overlays to include (e.g. for the Avenger96 enter the files which contain &amp;lt;tt&amp;gt;&#039;&#039;Avenger96&#039;&#039;&amp;lt;/tt&amp;gt; (usually 0 1 2 3 4 5 6 7).&lt;br /&gt;
|&lt;br /&gt;
(Example is for the Avenger96) &amp;lt;br&amp;gt;&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage --dtb ./arch/arm/boot/dts/stm32mp157a-avenger96.dtb --dtbo ./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-644-100-x6-otm8009a.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-644-100-x6-rpi7inch.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-fdcan1-x6.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-fdcan2-x6.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-i2c1-eeprom-x6.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-i2c2-eeprom-x6.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-ov5640-x7.dtbo,./arch/arm/boot/dts/stm32mp157a-avenger96-overlay-spi2-eeprom-x6.dtbo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3182</id>
		<title>DHCOM STM32MP1 Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHCOM_STM32MP1_Linux&amp;diff=3182"/>
		<updated>2020-10-22T14:13:53Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added &amp;quot;How to build the Linux Kernel&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Linux virtual machine for development ==&lt;br /&gt;
:* Please have a look at: &#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Sources: Look at page [[DHCOM iMX6ULL-D2#BSP Sources|i.MX6ULL BSP Sources]] === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to build a Kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; |  style=&amp;quot;width: 98%; background: #f3f3f3;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
Get sources from Github&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
1. Start the Console on Linux&amp;lt;br/&amp;gt;&lt;br /&gt;
2. &amp;lt;tt&amp;gt;&#039;&#039;git clone https://github.com/dh-electronics/linux-stm32mp1.git --branch dev/5.4.69_dhsom&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
3. &amp;lt;tt&amp;gt;&#039;&#039;cd linux-stm32mp1&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Configure and build the Device Tree + Kernel&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
| &lt;br /&gt;
4. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make stm32mp1_dhsom_defconfig&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
5. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make menuconfig&#039;&#039;&amp;lt;/tt&amp;gt; (optional: If you want to add/remove Kernel features)&amp;lt;br/&amp;gt;&lt;br /&gt;
6. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make dtbs&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
7. &amp;lt;tt&amp;gt;&#039;&#039;ARCH=arm CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- make zImage&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Create the FIT-image with our script ([[media:Dh-create-fitimage_1.0_all.deb|Download link]])&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; color: #000000; background: #ffffff;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interactive mode for selecting device trees&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Device trees are set as parameter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees to include (e.g. if you want to include the device tree for the PDK2 include the number of &amp;lt;tt&amp;gt;&#039;&#039;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb&#039;&#039;&amp;lt;/tt&amp;gt; (usually 3).&amp;lt;br/&amp;gt;&lt;br /&gt;
Enter the numbers (space seperated) of the device trees overlays to include (e.g. for the PDK2 enter the files which contain &amp;lt;tt&amp;gt;&#039;&#039;PDK2&#039;&#039;&amp;lt;/tt&amp;gt; (usually 8 9 10 11 12 13 14).&lt;br /&gt;
|&lt;br /&gt;
(Example is for the PDK2) &amp;lt;br&amp;gt;&lt;br /&gt;
8. &amp;lt;tt&amp;gt;&#039;&#039;create_fitimage --dtb ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dtb --dtbo ./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-460-200-x11.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-497-200-x12.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-505-200-x12-ch101olhlwh.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x21.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-531-100-x22.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-560-200-x12.dtbo;./arch/arm/boot/dts/stm32mp157c-dhcom-pdk2-overlay-638-100-x12-rpi7inch.dtbo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kernel Userspace Interfaces to Access Hardware == &lt;br /&gt;
&lt;br /&gt;
=== RS-485 on picoITX ===&lt;br /&gt;
:&#039;&#039;&#039;RS-485 device&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px&amp;quot;&lt;br /&gt;
 ||DHCOM UART 2||&amp;lt;tt&amp;gt;/dev/ttySTM2&amp;lt;/tt&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Compilation on target&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;gcc tty_rs485_test.c -o tty_rs485_test&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Set tty device to raw mode&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;stty -F /dev/ttySTM2 115200 cs8 raw -echo&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;echo -n -e &amp;quot;\n\rHallo RS485 Welt!&amp;quot; | ./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Receive data with demo program&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;./tty_rs485_test /dev/ttySTM2&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Download example source code&#039;&#039;&#039;&lt;br /&gt;
:* [[media:Tty_rs485_test.zip | tty_rs485_test.c]]&lt;br /&gt;
&lt;br /&gt;
=== CAN interface ===&lt;br /&gt;
:&#039;&#039;&#039;Setup CAN interface with baudrate 500kbit/sec.&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 up type can bitrate 500000&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Start to listen on CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;candump can0&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Send test message&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;cansend can0 100#11.2233.44556677.88&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Deinitialize CAN port&#039;&#039;&#039;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&#039;&#039;ip link set can0 down&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3181</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3181"/>
		<updated>2020-10-12T14:36:05Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added Debian package information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper&amp;lt;/tt&amp;gt; is installable over a Debian package.&lt;br /&gt;
To install the package call &amp;quot;&amp;lt;tt&amp;gt;sudo dpkg -i&amp;lt;/tt&amp;gt;&amp;quot; with the name of the package file.&lt;br /&gt;
If the dependencies are not installed call &amp;quot;&amp;lt;tt&amp;gt;sudo apt -f install&amp;lt;/tt&amp;gt;&amp;quot; to install the dependencies.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: On Debian Stretch, Docker isn&#039;t included in the official package repository, you have to install docker with Docker&#039;s own repository.&lt;br /&gt;
Here is the link to the installation instructions of Docker: https://docs.docker.com/engine/install/debian/.&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlinks and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it. If something is piped into STDIN of the symlink, the docker-symlink-wrapper script passes this to the STDIN of the program inside the container. The return value of the container is captured and returned. &lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
    &amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objdump&amp;quot;,&lt;br /&gt;
        &amp;quot;make-cross&amp;quot;,&lt;br /&gt;
        &amp;quot;cmake-cross&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;:&amp;quot;dhelectronics/linaro-cross-build&amp;quot;,&lt;br /&gt;
    &amp;quot;tag&amp;quot;:&amp;quot;buster-arm32v7-8&amp;quot;,&lt;br /&gt;
    &amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
There are some limitations of the script:&lt;br /&gt;
&lt;br /&gt;
* Only containers which do not need any special adjustments (like additional capabilities) can be started.&lt;br /&gt;
* The container image is only pulled from the registry if the image isn&#039;t already in the image storage of the local docker instance. This can result that you work with an older version of a container, even if there is a new version available. (Docker version 20.03 (not released yet as of 10/2020) will introduce a pull-policy flag at docker run, maybe the Python library will get this too, then this can be fixed in future versions of the wrapper)&lt;br /&gt;
* If a symlink is called, only the current working directory is mounted into the container. If the program needs to access files outside of the current working directory, you have to properly adjust the current working directory before calling the symlink.&lt;br /&gt;
* When you use a script which calls a symlinked program in a huge number of times, the performance is reduced. This is because at each call of the symlinked program, a new container is created and after the execution of the program has finished, the container is destroyed (creation and destruction of containers are a ressource-heavy operation).&lt;br /&gt;
* The &amp;lt;tt&amp;gt;list-versions&amp;lt;/tt&amp;gt;-command won&#039;t work with an image which only exists localy. This is because the command uses the API of the corresponding docker registry to get all available versions.&lt;br /&gt;
* If you make symlinks of software which is also installed on the host system, it depends on the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-varaiable which of them is used (when calling the command without the absolute path). It may happen that you use accidently the wrong version of the software without noticing.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3180</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3180"/>
		<updated>2020-10-08T09:21:06Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlinks and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it. If something is piped into STDIN of the symlink, the docker-symlink-wrapper script passes this to the STDIN of the program inside the container. The return value of the container is captured and returned. &lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
    &amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objdump&amp;quot;,&lt;br /&gt;
        &amp;quot;make-cross&amp;quot;,&lt;br /&gt;
        &amp;quot;cmake-cross&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;:&amp;quot;dhelectronics/linaro-cross-build&amp;quot;,&lt;br /&gt;
    &amp;quot;tag&amp;quot;:&amp;quot;buster-arm32v7-8&amp;quot;,&lt;br /&gt;
    &amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
There are some limitations of the script:&lt;br /&gt;
&lt;br /&gt;
* Only containers which do not need any special adjustments (like additional capabilities) can be started.&lt;br /&gt;
* The container image is only pulled from the registry if the image isn&#039;t already in the image storage of the local docker instance. This can result that you work with an older version of a container, even if there is a new version available. (Docker version 20.03 (not released yet as of 10/2020) will introduce a pull-policy flag at docker run, maybe the Python library will get this too, then this can be fixed in future versions of the wrapper)&lt;br /&gt;
* If a symlink is called, only the current working directory is mounted into the container. If the program needs to access files outside of the current working directory, you have to properly adjust the current working directory before calling the symlink.&lt;br /&gt;
* When you use a script which calls a symlinked program in a huge number of times, the performance is reduced. This is because at each call of the symlinked program, a new container is created and after the execution of the program has finished, the container is destroyed (creation and destruction of containers are a ressource-heavy operation).&lt;br /&gt;
* The &amp;lt;tt&amp;gt;list-versions&amp;lt;/tt&amp;gt;-command won&#039;t work with an image which only exists localy. This is because the command uses the API of the corresponding docker registry to get all available versions.&lt;br /&gt;
* If you make symlinks of software which is also installed on the host system, it depends on the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-varaiable which of them is used (when calling the command without the absolute path). It may happen that you use accidently the wrong version of the software without noticing.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3179</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3179"/>
		<updated>2020-10-08T09:14:15Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlinks and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it. If something is piped into STDIN of the symlink, the docker-symlink-wrapper script passes this to the STDIN of the program inside the container. The return value of the the container and captured and returned. &lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
    &amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objdump&amp;quot;,&lt;br /&gt;
        &amp;quot;make-cross&amp;quot;,&lt;br /&gt;
        &amp;quot;cmake-cross&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;:&amp;quot;dhelectronics/linaro-cross-build&amp;quot;,&lt;br /&gt;
    &amp;quot;tag&amp;quot;:&amp;quot;buster-arm32v7-8&amp;quot;,&lt;br /&gt;
    &amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
There are some limitations of the script:&lt;br /&gt;
&lt;br /&gt;
* Only containers which do not need any special adjustments (like additional capabilities) can be started.&lt;br /&gt;
* The container image is only pulled from the registry if the image isn&#039;t already in the image storage of the local docker instance. This can result that you work with an older version of a container, even if there is a new version available. (Docker version 20.03 (not released yet as of 10/2020) will introduce a pull-policy flag at docker run, maybe the Python library will get this too, then this can be fixed in future versions of the wrapper)&lt;br /&gt;
* If a symlink is called, only the current working directory is mounted into the container. If the program needs to access files outside of the current working directory, you have to properly adjust the current working directory before calling the symlink.&lt;br /&gt;
* When you use a script which calls a symlinked program in a huge number of times, the performance is reduced. This is because at each call of the symlinked program, a new container is created and after the execution of the program has finished, the container is destroyed (creation and destruction of containers are a ressource-heavy operation).&lt;br /&gt;
* The &amp;lt;tt&amp;gt;list-versions&amp;lt;/tt&amp;gt;-command won&#039;t work with an image which only exists localy. This is because the command uses the API of the corresponding docker registry to get all available versions.&lt;br /&gt;
* If you make symlinks of software which is also installed on the host system, it depends on the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-varaiable which of them is used (when calling the command without the absolute path). It may happen that you use accidently the wrong version of the software without noticing.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3178</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3178"/>
		<updated>2020-10-08T08:15:06Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added more Information about the symlink-script, little corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
Note that running a conatiner on emulated hardware affects the performance of the compiler.&lt;br /&gt;
Tests have indicated that building the Linux kernel with one thread on the native armhf compiler running on an amd64 machine with emulation is about 9 times slower than building the same kernel with one thread on the same machine via a crossbuild compiler.&lt;br /&gt;
&lt;br /&gt;
For easing the use with the [[Toolchain_Container_Images#Use_the_symlink_wrapper|symlink-wrapper]] script, aliases for &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; are created: &amp;lt;tt&amp;gt;make-container&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake-container&amp;lt;/tt&amp;gt;. These can be used at the symlink-script as additional symlinks which won&#039;t collide with the host system&#039;s &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; so that the complete build can run inside one container.&lt;br /&gt;
&lt;br /&gt;
=== Images with Debian crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the Debian GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
All images are based on the debian images (slim varaiant) and run on an amd64 host. The standard Debian crossbuild toolchain is used. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
The packages &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bison&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ca-certificates&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;flex&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;libssl-dev&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; additionally installed, so that the images are suited to build the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The tags have the schema &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which debian version the container image is based on.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which the architecture for which the cross toolchain builds. Note that the architecture names of Docker are used as an example Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; corresponds to &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For easing the use with the [[Toolchain_Container_Images#Use_the_symlink_wrapper|symlink-wrapper]] script, aliases for &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; are created: &amp;lt;tt&amp;gt;make-cross&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake-cross&amp;lt;/tt&amp;gt;. These can be used at the symlink-script as additional symlinks which won&#039;t collide with the host system&#039;s &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; so that the complete build can run inside one container.&lt;br /&gt;
&lt;br /&gt;
=== Images with Linaro/ARM toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/linaro-cross-build dhelectronics/linaro-cross-build]&amp;lt;/tt&amp;gt; images with the Linaro/ARM GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) and uses the debian-slim image as a basis for this image.&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
The packages &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bison&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ca-certificates&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;flex&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;libssl-dev&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; additionally installed, so that the images are suited to build the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The tags have the schema &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt;&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which debian version the container image is based on.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which the architecture for which the cross toolchain builds. Note that the architecture names of Docker are used as an example Debian&#039;s `armhf` corresponds to &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which version of the toolchain is used. There are two kinds of versions: &#039;&#039;&#039;&amp;lt;tt&amp;gt;X.Y\[.Z\]-yyyy.mm&amp;lt;/tt&amp;gt;&#039;&#039;&#039; does explictly point to a specific version of the toolchain. &#039;&#039;&#039;&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;&#039;&#039;&#039; points to the latest version of the major version of the toolchain, of which a image is existing. It is possible that some versions of the toolchain are skipped.&lt;br /&gt;
&lt;br /&gt;
For easing the use with the [[Toolchain_Container_Images#Use_the_symlink_wrapper|symlink-wrapper]] script, aliases for &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; are created: &amp;lt;tt&amp;gt;make-cross&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake-cross&amp;lt;/tt&amp;gt;. These can be used at the symlink-script as additional symlinks which won&#039;t collide with the host system&#039;s &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt; so that the complete build can run inside one container.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/linaro-cross-build:buster-arm32v7-8.3-2019.03&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/linaro-cross-build:stretch-arm32v7-6.3.1-2017.05 make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point to a container.&lt;br /&gt;
Technicly, these symlinks point to the script.&lt;br /&gt;
If the script called over a symlink, it looks up which container should be called.&lt;br /&gt;
This container is then started with the name of the symlink as command to execute.&lt;br /&gt;
All arguments are passed to the container, If something is piped into STDIN, it is passed into the container, too.&lt;br /&gt;
It is possible to set the tag of the container image which should be started.&lt;br /&gt;
&lt;br /&gt;
This example uses the &amp;lt;tt&amp;gt;linaro-cross-build&amp;lt;/tt&amp;gt;-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation of the symlink wrapper]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
    &amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
        &amp;quot;arm-linux-gnueabihf-objdump&amp;quot;,&lt;br /&gt;
        &amp;quot;make-cross&amp;quot;,&lt;br /&gt;
        &amp;quot;cmake-cross&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;:&amp;quot;dhelectronics/linaro-cross-build&amp;quot;,&lt;br /&gt;
    &amp;quot;tag&amp;quot;:&amp;quot;buster-arm32v7-8&amp;quot;,&lt;br /&gt;
    &amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
Note that when calling a symlink only the current working directory is mounted into the container!&lt;br /&gt;
If you want to compile a file, you have to be inside the directory of the file or one of its parent directories.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use version 6.3.1-2017.05 of the Linaro toolchain (based on Debian stretch):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-arm32v7-6.3.1-2017.05&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove images which aren&#039;t needed anymore ===&lt;br /&gt;
&lt;br /&gt;
If you want to delete a container image which you do not need anymore you can enter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker image rm &amp;lt;imagename+tag&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you download a newer version of an image, the old version won&#039;t be automaticly removed, the old image won&#039;t be accessible by its name and tag. This kind of image is called &amp;quot;dangling image&amp;quot;. To remove all dangling images (so they won&#039;t take any space on disk) you can enter&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker image prune&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you only need libraries which came on your root filesystem, we recommend using the ELBE/Yocto-SDK which came with this root filesystem.&lt;br /&gt;
In the SDK the corresponding headers and libraries are already preinstalled.&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
You can a new container image which includes the needed library.&lt;br /&gt;
For this you need to create a new Dockerfile inside an empty container.&lt;br /&gt;
Here is an example &amp;lt;tt&amp;gt;Dockerfile&amp;lt;/tt&amp;gt; to include the C/C++ libraries of mosquitto (MQTT-broker/client) into the &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FROM dhelectronics/debian-build-essential:buster-arm32v7&lt;br /&gt;
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y --no-install-recommends libmosquitto-dev libmosquittopp-dev &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can create the new container image with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker build -t your-custom-image:latest .&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the container can be started like any other container.&lt;br /&gt;
If you want to use the symlink script, you have to create your own JSON file to create the symlinks.&lt;br /&gt;
The symlinks of the normal &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; container images have to be removed because they would collide with each other (unless you install the symlinks into another directory but then the symlink which comes first inside the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; enviornmental variable will be prefered over the other which can cause unwanted behavior).&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;br /&gt;
&lt;br /&gt;
When you run a console inside the container, you can run apt to install addional libraries. Note that when the container is removed, any changes to the container are lost.&lt;br /&gt;
&lt;br /&gt;
=== Include libraries and headers into your project folder ===&lt;br /&gt;
&lt;br /&gt;
You can include needed libraries and headers into a sub directory of your project directory which is mounted into the container. So you do not need to modify the image or the container at runtime.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3177</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3177"/>
		<updated>2020-10-07T13:38:54Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added limitations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlinks and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it. If something is piped into STDIN of the symlink, the docker-symlink-wrapper script passes this to the STDIN of the program inside the container. The return value of the the container and captured and returned. &lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/linaro-cross-build&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;buster-arm32v7-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
There are some limitations of the script:&lt;br /&gt;
&lt;br /&gt;
* Only containers which do not need any special adjustments (like additional capabilities) can be started.&lt;br /&gt;
* The container image is only pulled from the registry if the image isn&#039;t already in the image storage of the local docker instance. This can result that you work with an older version of a container, even if there is a new version available. (Docker version 20.03 (not released yet as of 10/2020) will introduce a pull-policy flag at docker run, maybe the Python library will get this too, then this can be fixed in future versions of the wrapper)&lt;br /&gt;
* If a symlink is called, only the current working directory is mounted into the container. If the program needs to access files outside of the current working directory, you have to properly adjust the current working directory before calling the symlink.&lt;br /&gt;
* When you use a script which calls a symlinked program in a huge number of times, the performance is reduced. This is because at each call of the symlinked program, a new container is created and after the execution of the program has finished, the container is destroyed (creation and destruction of containers are a ressource-heavy operation).&lt;br /&gt;
* The &amp;lt;tt&amp;gt;list-versions&amp;lt;/tt&amp;gt;-command won&#039;t work with an image which only exists localy. This is because the command uses the API of the corresponding docker registry to get all available versions.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3176</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3176"/>
		<updated>2020-10-05T08:57:27Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Some corrections and inclusion of the docker parts for review&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a buildsystem to generate root-filesystems for embedded devices. This is only a short explanation what ELBE is and a brief tutorial for using ELBE, &#039;&#039;&#039;please go to the [https://elbe-rfs.org/docs/sphinx/index.html official documentation of ELBE] for a detailed documentation&#039;&#039;&#039;. This article was made when version 12.4 was the current version of ELBE.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE Build schema.png|frame|none|Basic structure of ELBE building a root-filesystem (as of version 12.4). Orange are inputs for ELBE, green are things that the result of ELBE. &amp;quot;&amp;lt;tt&amp;gt;buildenv.img&amp;lt;/tt&amp;gt;&amp;quot; is a special case because the initvm is created at &amp;quot;elbe initvm create&amp;quot; and it is reused by &amp;quot;elbe initvm submit&amp;quot;. Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview]]&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software in form of Debian packages (.deb). Usually the official Debian repositories are used, but it is possible to use custom repositories to get special packages into the root-filesystem. Resulting root-filesystems are basicly customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
Xml-files can be appended with a bzip2 compressed archive. At the end of the buildprocess, the content of the archive will be extracted into the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
The form of the finished root-filesystem is customizeable. The following variants are possible:&lt;br /&gt;
* Tarball: The root-filesystem can be packed as a tarball (usually compressed with gzip). The tarball can be extracted onto an empty partition or can be used for the [[DHCOM Update Mechanism]].&lt;br /&gt;
* Disk-/SD-card-image: An image with full partition table can be created. This can be a image of a hard disk or a sd-card. The size, type, label and mountpoint of each partition can be customized via the xml-file.&lt;br /&gt;
* UBIFS-Image: ELBE can output images for &amp;quot;Unsorted Block Image&amp;quot;-devices (UBI). These are needed if you want to use the NAND-Flash of our DHSOM modules for the root-filesystem. More information about that type of filesystem can be found under [[UBI/UBIFS Filesystem]].&lt;br /&gt;
As an addition ELBE is able to create a cdrom image which can be used as a input to reconstruct the exact root-filesystem that was created.&lt;br /&gt;
&lt;br /&gt;
ELBE can also create a Software Development Kit (SDK) for the built root-filesystem. The SDK contains the toolchain with the cross compiler and other tools and the corresponding sysroot with needed headers. These can be used to create software for the specific root-filesystem. The SDK is very similar to Yocto&#039;s Standard-SDK and can be used in the same way. An explanation how to use the SDK with some IDEs/buildsystems can be found here: [[Using Yocto/ELBE SDK for application development]]&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to install ELBE:&lt;br /&gt;
&lt;br /&gt;
===Debian Package===&lt;br /&gt;
&lt;br /&gt;
The developers of ELBE have their own package repository which can be used to install ELBE.&lt;br /&gt;
&lt;br /&gt;
To add the repository to the &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; directory and install the public key for the repo:&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &#039;deb http://debian.linutronix.de/elbe buster main&#039; &amp;gt;&amp;gt; /etc/apt/sources.list.d/elbe.list&lt;br /&gt;
 wget http://debian.linutronix.de/elbe/elbe-repo.pub &amp;amp;&amp;amp; apt-key add elbe-repo.pub&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can install ELBE with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt update&lt;br /&gt;
 apt install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cloning the git repository of ELBE===&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to clone the git repository of ELBE.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Up to version 12.5&#039;&#039;&#039; the following packages have to be installed on the system:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python python-debian python-mako python-lxml python-apt python-gpg python-suds python-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Starting with version 13.0&#039;&#039;&#039; ELBE did switch to version 3 of Python (due to the EOL of Python 2), so the following packages have to be installed:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python3 python3-debian python3-mako python3-lxml python3-apt python3-gpg python3-suds python3-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can clone the repo with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;git clone https://github.com/Linutronix/elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Premade Docker container===&lt;br /&gt;
&lt;br /&gt;
We created docker container images with ELBE preinstalled, these can be found at [https://hub.docker.com/r/dhelectronics/elbe Docker Hub] under the name dhelectronics/elbe. There are two different versions of container tags available:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Version the tag is pointing to.&lt;br /&gt;
|-&lt;br /&gt;
| git-latest-tested || Points to the latest version we have used and confirmed that is working with our own recipies. This version will change from time to time and some versions may be skipped.&lt;br /&gt;
|-&lt;br /&gt;
| git-vX || Always points to the specific version X of ELBE (as an example git-v12.4 points to version 12.4 of ELBE).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To get an image enter (e.g. version 12.4)&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker pull dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The container can be started with the following command: (the container does need extensive rights because a virtual machine is started inside it):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker run --name=elbe --mount type=bind,src=./,dst=/workdir-w /workdir/ --cap-add SYS_ADMIN --security-opt seccomp:unconfined --security-opt apparmor:unconfined --mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup --device /dev/kvm --device /dev/fuse --group-add kvm dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have to start a shell inside the container with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker exec elbe /bin/bash&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the container you can now run your ELBE build, you can exit the shell with CTRL+D and remove the container with &amp;lt;tt&amp;gt;docker container rm -f elbe&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
The ELBE buildsystem consists of the program elbe which is implemented in Python. Similar to git, it can be called with several sub commands. If you installed ELBE through the Debian package, the program is inside your PATH environment and can be called by &amp;quot;&amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;&amp;quot;, else you have to call it by the complete path. The most important commands are:&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm create --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command initializes a new initvm in the directory &amp;quot;/example&amp;quot; and builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; . This command can only be used if there isn&#039;t any initvm defined yet. If you cloned ELBE from git, you can add the switch &amp;quot;&amp;lt;tt&amp;gt;--devel&amp;lt;/tt&amp;gt;&amp;quot;, then ELBE copies the local ELBE version into the initvm (instead of downloading ELBE from their repository). &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm submit --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; and reuses an existing initvm at the directory &amp;quot;/example&amp;quot;. &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive example.xml example-archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command appends the xml-file &amp;quot;example.xml&amp;quot; with the archive &amp;quot;example-archive.tar.bz2&amp;quot;. The binary content of the archive is stored in BASE64 encoding inside a xml tag.&lt;br /&gt;
&lt;br /&gt;
If you add  &amp;lt;tt&amp;gt;--build-sdk&amp;lt;/tt&amp;gt; at the &amp;quot;&amp;lt;tt&amp;gt;initvm create/submit&amp;lt;/tt&amp;gt;&amp;quot;-command then as an addition to creating the root-filesystem, the SDK (for developing software for the root-filesystem) is created too. Usually CD-Images with all binary packages and all source packages (for the exact recreation of the rootfilesystem) are created. The creation of these can be skipped with the commandline switches &amp;lt;tt&amp;gt;--skip-build-bin&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;--skip-build-sources&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If an error happens while building the rootfilesystem, no files are returned. It is possible to get the log and other files of the build with an extra command. The complete call of the command (which differs for each build) is printed as exit-message of the ELBE build.&lt;br /&gt;
&lt;br /&gt;
===Script for easy use with container images===&lt;br /&gt;
&lt;br /&gt;
We created a script for easing the use of ELBE inside the container. This script is preinstalled in our [[Virtual_Machine_for_Application_Development|Virtual Machine for Application Development]] starting with version &#039;&#039;&#039;Not yet available&#039;&#039;&#039;. The script is called &#039;&#039;&#039;elbe_container_build_start.sh [OPTIONS] &amp;lt;elbe_build_description.xml&amp;gt;&#039;&#039;&#039;. In the standard configuration the CD-images with binary and source packages are created. The SDK is also created.&lt;br /&gt;
&lt;br /&gt;
It is possible to start an additional container with a debian repository, the given path at --repodir has to point at the root of a debian repository. The directory is mounted into the directory &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;/repo/dh_debian_repo&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; of the container. Any container which is configured to publish the mounted directory can be used. Inside the xml the repository can be used by adding the repo to the list of mirrors. Note that after the build process the repository is still inside the &amp;lt;tt&amp;gt;/etc/apt/sources.list&amp;lt;/tt&amp;gt; of the resulting rootfilesystem. You have to remove this line at the finetuning section of the xml file or when the device running with the rootfilesystem has started. If you do not remove the repo, &amp;lt;tt&amp;gt;apt-get update&amp;lt;/tt&amp;gt; will fail with an error if you want to update the system or install new packages afterwards.&lt;br /&gt;
&lt;br /&gt;
The following options are available for the script:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| --elbedockerimage &amp;lt;REPO:TAG&amp;gt; || Sets the docker image which is used for the elbe build.&lt;br /&gt;
|-&lt;br /&gt;
| --repodir &amp;lt;path&amp;gt; || Starts an additional container with a Debian repo webserver, which uses this repo path. If this option isn&#039;t set, then no container with the repo is started.&lt;br /&gt;
|-&lt;br /&gt;
| --repodockerimage &amp;lt;REPO:TAG&amp;gt; || Sets Debian repo webserver docker image. Has no effect if &amp;lt;tt&amp;gt;--repodir&amp;lt;tt&amp;gt; is not set.&lt;br /&gt;
|-&lt;br /&gt;
| --initvmtopdir &amp;lt;path&amp;gt; || Change initvm top directory, default value is the &amp;lt;tt&amp;gt;&amp;lt;current-working-directory&amp;gt;/initvm-docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| --fast || Speed up the build of the rootfilesystem with only building the rootfilesystem itself, and skipping the creation of the CD-images and of the SDK.&lt;br /&gt;
|-&lt;br /&gt;
| --console || Ignore every other option and start the container and enter a console inside of the container. The current working directory is mounted into the container&lt;br /&gt;
|-&lt;br /&gt;
| --version || Display version info of the script and exit&lt;br /&gt;
|-&lt;br /&gt;
| --help || Display the command line help and exit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is not possible to append a XML file with an archive via an option of the script. If you need to do this you have to use the &amp;quot;&amp;lt;tt&amp;gt;--console&amp;lt;/tt&amp;gt;&amp;quot;-option to open a console inside the container where you can use the &amp;quot;&amp;lt;tt&amp;gt;elbe chg_archive&amp;lt;/tt&amp;gt;&amp;quot;-command.&lt;br /&gt;
&lt;br /&gt;
When the build is finished, the container exits and is removed. If an error happenes the container is not exited, and a console inside the container is opened, where you can get the logs and files of the failed build.&lt;br /&gt;
&lt;br /&gt;
==XML-Example==&lt;br /&gt;
&lt;br /&gt;
This is a simple example for a xml file. If you start the build process a root-filesystem for a device of the &amp;quot;ARM EABI with hard float&amp;quot;-architecture (usually ARMv7) based on Debian 10 is built. In extra to the main mirror, the security and buster-updates mirror is also configured, so that the root-filesystem can get security updates. After the package installation is finished, the cached Debian package files are removed to slim down the image. At the end, the finished root-filesystem is packed into gzip-compressed tarball &amp;quot;&amp;lt;tt&amp;gt;rootfs.tar.gz&amp;lt;/tt&amp;gt;&amp;quot;. Note that the resulting root-filesystem has no kernel, bootloader and device tree, these have to be supplied externally. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1.0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ftp.de.debian.org&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;buster&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rootfs.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/cache/apt/archives/*.deb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;curl&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;vim&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;iperf3&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;i2c-tools&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Official documentation of the current ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3168</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3168"/>
		<updated>2020-09-25T10:31:52Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Reflect split of the crossbuild toolchains, added documentation for removing images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
Note that running a conatiner on emulated hardware affects the performance of the compiler.&lt;br /&gt;
Tests have indicated that building the Linux kernel with one thread on the native armhf compiler running on an amd64 machine with emulation is about 9 times slower than building the same kernel with one thread on the same machine via a crossbuild compiler.&lt;br /&gt;
&lt;br /&gt;
=== Images with Debian crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the Debian GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
All images are based on the debian images (slim varaiant) and run on an amd64 host. The standard Debian crossbuild toolchain is used. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
The packages &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bison&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ca-certificates&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;flex&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;libssl-dev&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; additionally installed, so that the images are suited to build the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The tags have the schema &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which debian version the container image is based on.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which the architecture for which the cross toolchain builds. Note that the architecture names of Docker are used as an example Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; corresponds to &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Images with Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/linaro-cross-build dhelectronics/linaro-cross-build]&amp;lt;/tt&amp;gt; images with the Linaro/ARM GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) and uses the debian-slim image as a basis for this image.&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
The packages &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bison&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ca-certificates&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;flex&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;libssl-dev&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; additionally installed, so that the images are suited to build the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The tags have the schema &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;-&amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt;&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which debian version the container image is based on.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;ARCH&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which the architecture for which the cross toolchain builds. Note that the architecture names of Docker are used as an example Debian&#039;s `armhf` corresponds to &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt;&#039;&#039;&#039;: Determines which version of the toolchain is used. There are two kinds of versions: &#039;&#039;&#039;&amp;lt;tt&amp;gt;X.Y\[.Z\]-yyyy.mm&amp;lt;/tt&amp;gt;&#039;&#039;&#039; does explictly point to a specific version of the toolchain. &#039;&#039;&#039;&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;&#039;&#039;&#039; points to the latest version of the major version of the toolchain, of which a image is existing. It is possible that some versions of the toolchain are skipped.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started. This example uses the debian-cross-build-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
Note that when calling a symlink only the current working directory is mounted into the container!&lt;br /&gt;
If you want to compile a file, you have to be inside the directory of the file or one of its parent directories.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use Linaro GCC 6:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-linaro-6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove images which aren&#039;t needed anymore ===&lt;br /&gt;
&lt;br /&gt;
If you want to delete a container image which you do not need anymore you can enter:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker image rm &amp;lt;imagename+tag&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you download a newer version of an image, the old version won&#039;t be automaticly removed, the old image won&#039;t be accessible by its name and tag. This kind of image is called &amp;quot;dangling image&amp;quot;. To remove all dangling images (so they won&#039;t take any space on disk) you can enter&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker image prune&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you only need libraries which came on your root filesystem, we recommend using the ELBE/Yocto-SDK which came with this root filesystem.&lt;br /&gt;
In the SDK the corresponding headers and libraries are already preinstalled.&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
You can a new container image which includes the needed library.&lt;br /&gt;
For this you need to create a new Dockerfile inside an empty container.&lt;br /&gt;
Here is an example &amp;lt;tt&amp;gt;Dockerfile&amp;lt;/tt&amp;gt; to include the C/C++ libraries of mosquitto (MQTT-broker/client) into the &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FROM dhelectronics/debian-build-essential:buster-arm32v7&lt;br /&gt;
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y --no-install-recommends libmosquitto-dev libmosquittopp-dev &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can create the new container image with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker build -t your-custom-image:latest .&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the container can be started like any other container.&lt;br /&gt;
If you want to use the symlink script, you have to create your own JSON file to create the symlinks.&lt;br /&gt;
The symlinks of the normal &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; container images have to be removed because they would collide with each other (unless you install the symlinks into another directory but then the symlink which comes first inside the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; enviornmental variable will be prefered over the other which can cause unwanted behavior).&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;br /&gt;
&lt;br /&gt;
When you run a console inside the container, you can run apt to install addional libraries. Note that when the container is removed, any changes to the container are lost.&lt;br /&gt;
&lt;br /&gt;
=== Include libraries and headers into your project folder ===&lt;br /&gt;
&lt;br /&gt;
You can include needed libraries and headers into a sub directory of your project directory which is mounted into the container. So you do not need to modify the image or the container at runtime.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3167</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3167"/>
		<updated>2020-09-21T07:03:07Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
Note that running a conatiner on emulated hardware affects the performance of the compiler.&lt;br /&gt;
Tests have indicated that building the Linux kernel with one thread on the native armhf compiler running on an amd64 machine with emulation is about 9 times slower than building the same kernel with one thread on the same machine via a crossbuild compiler.&lt;br /&gt;
&lt;br /&gt;
=== Images with crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
All images run on an amd64 host.&lt;br /&gt;
There are two kinds of images:&lt;br /&gt;
&lt;br /&gt;
==== Debian crossbuild toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images are using the standard Debian crossbuild toolchain for &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt;. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
At the moment there are images based on &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==== Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) in the version &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and uses Debian &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt; as a basis for this image (e.g. stretch-linaro-8).&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
At the moment all images are based on Debian &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and the GCC versions 4.9, 6, 7 and 8 are available.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) --user $(id -u):$(id -g) dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started. This example uses the debian-cross-build-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
Note that when calling a symlink only the current working directory is mounted into the container!&lt;br /&gt;
If you want to compile a file, you have to be inside the directory of the file or one of its parent directories.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use Linaro GCC 6:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-linaro-6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you only need libraries which came on your root filesystem, we recommend using the ELBE/Yocto-SDK which came with this root filesystem.&lt;br /&gt;
In the SDK the corresponding headers and libraries are already preinstalled.&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
You can a new container image which includes the needed library.&lt;br /&gt;
For this you need to create a new Dockerfile inside an empty container.&lt;br /&gt;
Here is an example &amp;lt;tt&amp;gt;Dockerfile&amp;lt;/tt&amp;gt; to include the C/C++ libraries of mosquitto (MQTT-broker/client) into the &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FROM dhelectronics/debian-build-essential:buster-arm32v7&lt;br /&gt;
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y --no-install-recommends libmosquitto-dev libmosquittopp-dev &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can create the new container image with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker build -t your-custom-image:latest .&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the container can be started like any other container.&lt;br /&gt;
If you want to use the symlink script, you have to create your own JSON file to create the symlinks.&lt;br /&gt;
The symlinks of the normal &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; container images have to be removed because they would collide with each other (unless you install the symlinks into another directory but then the symlink which comes first inside the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; enviornmental variable will be prefered over the other which can cause unwanted behavior).&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;br /&gt;
&lt;br /&gt;
When you run a console inside the container, you can run apt to install addional libraries. Note that when the container is removed, any changes to the container are lost.&lt;br /&gt;
&lt;br /&gt;
=== Include libraries and headers into your project folder ===&lt;br /&gt;
&lt;br /&gt;
You can include needed libraries and headers into a sub directory of your project directory which is mounted into the container. So you do not need to modify the image or the container at runtime.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3165</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3165"/>
		<updated>2020-09-18T10:42:10Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
Note that running a conatiner on emulated hardware affects the performance of the compiler.&lt;br /&gt;
Tests have indicated that building the Linux kernel with one thread on the native armhf compiler running on an amd64 machine with emulation is about 9 times slower than building the same kernel with one thread on the same machine via a crossbuild compiler.&lt;br /&gt;
&lt;br /&gt;
=== Images with crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
All images run on an amd64 host.&lt;br /&gt;
There are two kinds of images:&lt;br /&gt;
&lt;br /&gt;
==== Debian crossbuild toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images are using the standard Debian crossbuild toolchain for &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt;. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
At the moment there are images based on &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==== Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) in the version &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and uses Debian &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt; as a basis for this image (e.g. stretch-linaro-8).&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
At the moment all images are based on Debian &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and the GCC versions 4.9, 6, 7 and 8 are available.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=$(pwd)/,dst=$(pwd) --workdir $(pwd) dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started. This example uses the debian-cross-build-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
Note that when calling a symlink only the current working directory is mounted into the container!&lt;br /&gt;
If you want to compile a file, you have to be inside the directory of the file or one of its parent directories.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use Linaro GCC 6:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-linaro-6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you only need libraries which came on your root filesystem, we recommend using the ELBE/Yocto-SDK which came with this root filesystem.&lt;br /&gt;
In the SDK the corresponding headers and libraries are already preinstalled.&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
You can a new container image which includes the needed library.&lt;br /&gt;
For this you need to create a new Dockerfile inside an empty container.&lt;br /&gt;
Here is an example &amp;lt;tt&amp;gt;Dockerfile&amp;lt;/tt&amp;gt; to include the C/C++ libraries of mosquitto (MQTT-broker/client) into the &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FROM dhelectronics/debian-build-essential:buster-arm32v7&lt;br /&gt;
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y --no-install-recommends libmosquitto-dev libmosquittopp-dev &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can create the new container image with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker build -t your-custom-image:latest .&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the container can be started like any other container.&lt;br /&gt;
If you want to use the symlink script, you have to create your own JSON file to create the symlinks.&lt;br /&gt;
The symlinks of the normal &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; container images have to be removed because they would collide with each other (unless you install the symlinks into another directory but then the symlink which comes first inside the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; enviornmental variable will be prefered over the other which can cause unwanted behavior).&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;br /&gt;
&lt;br /&gt;
When you run a console inside the container, you can run apt to install addional libraries. Note that when the container is removed, any changes to the container are lost.&lt;br /&gt;
&lt;br /&gt;
=== Include libraries and headers into your project folder ===&lt;br /&gt;
&lt;br /&gt;
You can include needed libraries and headers into a sub directory of your project directory which is mounted into the container. So you do not need to modify the image or the container at runtime.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3157</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3157"/>
		<updated>2020-09-16T09:30:12Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
&lt;br /&gt;
=== Images with crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
All images run on an amd64 host.&lt;br /&gt;
There are two kinds of images:&lt;br /&gt;
&lt;br /&gt;
==== Debian crossbuild toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images are using the standard Debian crossbuild toolchain for &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt;. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
At the moment there are images based on &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==== Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) in the version &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and uses Debian &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt; as a basis for this image (e.g. stretch-linaro-8).&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
At the moment all images are based on Debian &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and the GCC versions 4.9, 6, 7 and 8 are available.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started. This example uses the debian-cross-build-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
Note that when calling a symlink only the current working directory is mounted into the container!&lt;br /&gt;
If you want to compile a file, you have to be inside the directory of the file or one of its parent directories.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use Linaro GCC 6:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-linaro-6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you only need libraries which came on your root filesystem, we recommend using the ELBE/Yocto-SDK which came with this root filesystem.&lt;br /&gt;
In the SDK the corresponding headers and libraries are already preinstalled.&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
You can a new container image which includes the needed library.&lt;br /&gt;
For this you need to create a new Dockerfile inside an empty container.&lt;br /&gt;
Here is an example &amp;lt;tt&amp;gt;Dockerfile&amp;lt;/tt&amp;gt; to include the C/C++ libraries of mosquitto (MQTT-broker/client) into the &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FROM dhelectronics/debian-build-essential:buster-arm32v7&lt;br /&gt;
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y --no-install-recommends libmosquitto-dev libmosquittopp-dev &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can create the new container image with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker build -t your-custom-image:latest .&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the container can be started like any other container.&lt;br /&gt;
If you want to use the symlink script, you have to create your own JSON file to create the symlinks.&lt;br /&gt;
The symlinks of the normal &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt; container images have to be removed because they would collide with each other (unless you install the symlinks into another directory but then the symlink which comes first inside the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; enviornmental variable will be prefered over the other which can cause unwanted behavior).&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;br /&gt;
&lt;br /&gt;
When you run a console inside the container, you can run apt to install addional libraries. Note that when the container is removed, any changes to the container are lost.&lt;br /&gt;
&lt;br /&gt;
=== Include libraries and headers into your project folder ===&lt;br /&gt;
&lt;br /&gt;
You can include needed libraries and headers into a sub directory of your project directory which is mounted into the container. So you do not need to modify the image or the container at runtime.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3156</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3156"/>
		<updated>2020-09-15T14:43:13Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
&lt;br /&gt;
=== Images with crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
All images run on an amd64 host.&lt;br /&gt;
There are two kinds of images:&lt;br /&gt;
&lt;br /&gt;
==== Debian crossbuild toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images are using the standard Debian crossbuild toolchain for &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt;. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
At the moment there are images based on &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==== Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) in the version &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and uses Debian &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt; as a basis for this image (e.g. stretch-linaro-8).&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
At the moment all images are based on Debian &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and the GCC versions 4.9, 6, 7 and 8 are available.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started. This example uses the debian-cross-build-toolchain, what the commands are doing exactly, [[Docker_Symlink_Wrapper#Available_Commands|look at the documentation]].&lt;br /&gt;
&lt;br /&gt;
To create the symlinks, you need a JSON file which defines the needed things about the container images:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can call the symlink script with superuser privileges to create the symlinks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py install cross-build install.json&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the symlinks are installed and every call to &amp;lt;tt&amp;gt;arm-linux-gnueabihf-gcc&amp;lt;/tt&amp;gt; and the other symlinks will go into the container.&lt;br /&gt;
&lt;br /&gt;
To get the list of available versions of the toolchain you can use the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;docker-symlink-wrapper.py list-versions cross-build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the tag (= version of the toolchain) of the container, there is a command. As an example if you want to use Linaro GCC 6:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo docker-symlink-wrapper.py set-version cross-build stretch-linaro-6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3155</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3155"/>
		<updated>2020-09-15T14:17:54Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlink and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it.&lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3151</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3151"/>
		<updated>2020-09-15T07:55:08Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Finished this page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlink and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use &amp;lt;tt&amp;gt;docker login &amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 440px&amp;quot;| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; -&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Installs new symlinks to a container and adds them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below). Instead of using a JSON file as a parameter you can substitue that with an &#039;&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;&#039;, then the script reads the JSON from STDIN.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Removes the symlinks from a container and from the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; &lt;br /&gt;
| When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it.&lt;br /&gt;
|}&lt;br /&gt;
== JSON-format for adding new symlinks ==&lt;br /&gt;
&lt;br /&gt;
When adding new symlinks, JSON must be supplied which contains all neccessary information.&lt;br /&gt;
It must consists of one object with the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;symlinks&#039;&#039;&#039;: List of strings which are the application names that should be calles inside the container.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;registry&#039;&#039;&#039;: A string that is the address of the container registry. If this field is empty, Docker&#039;s own registry Docker Hub is used as a default. This field is needed, because the is no way to definitly distinguish if the first segment of the image name is the address of the registry or that it is the first part of the container repository name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;image&#039;&#039;&#039;: A string that contains the name of the docker image which is used for the applications. The image name usually contains the address of the registry. If the registry is omitted, the image is either local or uses Docker Hub as a registry.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tag&#039;&#039;&#039;: A string that is used as default tag of the container image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;installpath&#039;&#039;&#039;: A string that defines the path in the system where the symlinks are installed.&lt;br /&gt;
&lt;br /&gt;
Here an example for a JSON file which can be used to add new symlinks:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&lt;br /&gt;
	&amp;quot;symlinks&amp;quot;:[&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-as&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ld&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-gcc&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-g++&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-ar&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-nm&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-strip&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objcopy&amp;quot;,&lt;br /&gt;
		&amp;quot;arm-linux-gnueabihf-objdump&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;registry&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;image&amp;quot;:&amp;quot;dhelectronics/debian-cross-build-essential&amp;quot;,&lt;br /&gt;
	&amp;quot;tag&amp;quot;:&amp;quot;stretch-linaro-8&amp;quot;,&lt;br /&gt;
	&amp;quot;installpath&amp;quot;:&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When adding the configuration of the symlink to the configfile of the wrapper script, the JSON object is prepended by the &#039;name&#039; (the other param of the install command) and added to the main object of the configuration.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3150</id>
		<title>Docker Symlink Wrapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Docker_Symlink_Wrapper&amp;diff=3150"/>
		<updated>2020-09-14T14:34:51Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Created page with &amp;quot;== Overview ==  &amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications. If the symlink is called the script starts the corresoponding a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; is a wrapper script which creates symlinks for applications.&lt;br /&gt;
If the symlink is called the script starts the corresoponding application in a container and passes all parameters to it.&lt;br /&gt;
The script can manage multiple symlinks which can point to different container images.&lt;br /&gt;
It is also possible to set the tag of the docker image which is used (= version of the application).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;docker-symlink-wrapper.py&amp;lt;/tt&amp;gt; requires the python modules &amp;lt;tt&amp;gt;requests&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;docker&amp;lt;/tt&amp;gt;. The versions supplied by the Debian package repository is, at least in stretch, too old (especially the docker module), so install the recent version via pip:&lt;br /&gt;
&amp;lt;tt&amp;gt;pip3 install -r requirements.txt&amp;lt;/tt&amp;gt; with using the requirements file supplied at this repository or &amp;lt;tt&amp;gt;pip3 install requests docker&amp;lt;/tt&amp;gt; for directly installing the requirements.&lt;br /&gt;
&lt;br /&gt;
The wrapper script uses a configuration file for storing the known symlink and their configration.&lt;br /&gt;
This file is located at &amp;lt;tt&amp;gt;/var/lib/docker-symlink-wrapper/symlinks.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This concludes that you need to superuser privileges if you want to call a command of the script which changes the configuration.&lt;br /&gt;
&lt;br /&gt;
For authentification at docker registries the saved credentials of the Docker CLI are used (usually at &amp;lt;tt&amp;gt;~/.docker/config.json)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
So use docker login &amp;lt;tt&amp;gt;&amp;lt;registry-address&amp;gt;&amp;lt;/tt&amp;gt; to login into the registry before using the script.&lt;br /&gt;
&lt;br /&gt;
== Available Commands ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;docker-symlink-wrapper.py install &amp;lt;name&amp;gt; &amp;lt;json file&amp;gt;|-&amp;lt;/tt&amp;gt; for installing new symlinks to a container and adding them to the configuration file of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword for the entry in the configuration file (so that the entry can be recognized later), while &#039;&amp;lt;tt&amp;gt;json file&amp;lt;/tt&amp;gt;&#039; is a file in the JSON format which has the configuration of the container (Definition of the fields of the JSON file is below).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;docker-symlink-wrapper.py uninstall &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; for removing the symlinks from a container and removing them from the configuration of the script. &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; is an unique keyword of the entry in the configuration file.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list&amp;lt;/tt&amp;gt; for listing all known symlinks, its keyword and the corresponding container.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;docker-symlink-wrapper.py list-versions &amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; lists all available versions of a container (= tag) for this &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039;. This command does connect to the corresponding container registry and reads the available tags. This command does NOT work with images which are only local! For using this command with registies which require the addition of certificates (like corporate internal registries) you have to add the certificate (or its root certificate) to the system certificates (usually at /etc/ssl/certs/ca-certificates.crt).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;docker-symlink-wrapper.py set-version &amp;lt;name&amp;gt; &amp;lt;tag&amp;gt;&amp;lt;/tt&amp;gt; sets the used version of the container for the &#039;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&#039; to the &#039;&amp;lt;tt&amp;gt;tag&amp;lt;/tt&amp;gt;&#039;,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;symlinkname&amp;gt; [...]&amp;lt;/tt&amp;gt; When the script is called trough one of the symlinks, it looks at the configuration to determine the correct container to start. After that it starts that container and calls inside the container the applictaion which has the same name as the symlink and passes all parameter to it.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3149</id>
		<title>Toolchain Container Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Toolchain_Container_Images&amp;diff=3149"/>
		<updated>2020-09-14T14:34:48Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Created page with &amp;quot;DH electronics provides Docker images with preinstalled toolchains.  __TOC__  == Introduction ==  For cross developing of applications we provide Docker container images with...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DH electronics provides Docker images with preinstalled toolchains. &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For cross developing of applications we provide Docker container images with preinstalled toolchains.&lt;br /&gt;
These are made for use by the [[Virtual Machine for Application Development|VM for Application Development]].&lt;br /&gt;
You need to have Docker installed ([https://docs.docker.com/engine/install/ How to install Docker]), in our VM starting with Stretch Vxx Docker is preinstalled and preconfigured.&lt;br /&gt;
The container images are available [https://hub.docker.com/ Docker Hub].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For userspace application development, we recommend using the ELBE/Yocto-SDK which came with your root filesystem.&lt;br /&gt;
This is because the SDKs comes with all needed development headers and libraries for its respective root filesystem.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
&lt;br /&gt;
=== Images with native Debian GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-build-essential dhelectronics/debian-build-essential]&amp;lt;/tt&amp;gt; images with the standard native GCC toolchain of Debian are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
The Debian GCC toolchain is installed via the package &amp;lt;tt&amp;gt;debian-build-essential&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tags consists of a combination of the used version of Debian and the architecture of the image (e.g. &amp;lt;tt&amp;gt;buster-amd64&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Currently there is any combination of the Debian versions &amp;lt;tt&amp;gt;jessie&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; with the architectures &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; is possible.&lt;br /&gt;
Note that Docker uses another names for distinguishing the different architectures of ARM processors: &amp;lt;tt&amp;gt;arm32v5&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armel&amp;lt;/tt&amp;gt; while &amp;lt;tt&amp;gt;arm32v7&amp;lt;/tt&amp;gt; corresponds to Debian&#039;s &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt; architecture.&lt;br /&gt;
&lt;br /&gt;
You can use QEMU&#039;s user mode emulation for running the ARM-containers on an amd64-machine, the resulting software of a build still runs on the respective ARM architecture.&lt;br /&gt;
To use this you have to install the packages &amp;lt;tt&amp;gt;binfmt-support&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;qemu-user-static&amp;lt;/tt&amp;gt; on the host.&lt;br /&gt;
To activate this for the container:&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;stretch or earlier&#039;&#039;&#039;, you have to include the usermode emulator into the container at the start of your container. This can be done with a bind mount. Add the option &amp;lt;tt&amp;gt;--mount type=bind,src=/usr/bin/qemu-arm-static,dst=/usr/bin/qemu-arm-static&amp;lt;/tt&amp;gt; to the run command of the container.&lt;br /&gt;
* If your host is on Debian &#039;&#039;&#039;buster or later&#039;&#039;&#039;, this works automaticly. You don&#039;t have to alter the run command of the container.&lt;br /&gt;
&lt;br /&gt;
=== Images with crossbuild GCC toolchain ===&lt;br /&gt;
&lt;br /&gt;
At the Docker repository &amp;lt;tt&amp;gt;[https://hub.docker.com/r/dhelectronics/debian-cross-build-essential dhelectronics/debian-cross-build-essential]&amp;lt;/tt&amp;gt; images with the GCC toolchain for crosscompiling are located.&lt;br /&gt;
&lt;br /&gt;
The images are based on the Debian (slim-varaiant) image with &amp;lt;tt&amp;gt;build-essential&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ccache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lzop&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xz-utils&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;jq&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ketchup&amp;lt;/tt&amp;gt; additionally installed.&lt;br /&gt;
All images run on an amd64 host.&lt;br /&gt;
There are two kinds of images:&lt;br /&gt;
&lt;br /&gt;
==== Debian crossbuild toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images are using the standard Debian crossbuild toolchain for &amp;lt;tt&amp;gt;armhf&amp;lt;/tt&amp;gt;. This toolchain is installed via the package &amp;lt;tt&amp;gt;crossbuild-essentail-armhf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
At the moment there are images based on &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;buster&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==== Linaro/ARM toolchain (&amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt;-linaro-&amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
These images use the toolchain of Linaro (up to GCC 7) or ARM (beginning with GCC 8) in the version &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and uses Debian &amp;lt;tt&amp;gt;DIST&amp;lt;/tt&amp;gt; as a basis for this image (e.g. stretch-linaro-8).&lt;br /&gt;
The toolchain is installed inside &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;-variable is extened to include the directory with the binaries of the toolchain.&lt;br /&gt;
At the moment all images are based on Debian &amp;lt;tt&amp;gt;stretch&amp;lt;/tt&amp;gt; and the GCC versions 4.9, 6, 7 and 8 are available.&lt;br /&gt;
&lt;br /&gt;
== Using the containers ==&lt;br /&gt;
&lt;br /&gt;
=== Open console inside the container ===&lt;br /&gt;
&lt;br /&gt;
You can start the container with the current work directory mounted into the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the container has started a console is open, now you can run any command to build the application (e.g. &amp;lt;tt&amp;gt;make all&amp;lt;/tt&amp;gt;).&lt;br /&gt;
When the build is finished, you can quit the console with &amp;lt;tt&amp;gt;CTRL+D&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Call the buildsystem at container start ===&lt;br /&gt;
&lt;br /&gt;
Alternativly you can call the build command directly at the run command of the container:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;$ docker run -it --rm --mount type=bind,src=./,dst=/workdir dhelectronics/debian-cross-build-essential:buster make all&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use the symlink wrapper ===&lt;br /&gt;
&lt;br /&gt;
We created a python script called &amp;lt;tt&amp;gt;[[Docker Symlink Wrapper|docker-symlink-wrapper.py]]&amp;lt;/tt&amp;gt; (Not yet downloadable).&lt;br /&gt;
This script can create symlinks which point into container.&lt;br /&gt;
If one of these symlink is called the script itself is called and the script does start the apropiate container for this symlink and calls the command inside of it and passes all arguments.&lt;br /&gt;
It is possible to set the tag of the container image which should be started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extend the container with libraries ==&lt;br /&gt;
&lt;br /&gt;
=== Create a modified container image ===&lt;br /&gt;
&lt;br /&gt;
=== Install libraries at runtime ===&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3118</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3118"/>
		<updated>2020-09-04T09:47:22Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Prepare for ELBE docker container&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a buildsystem to generate root-filesystems for embedded devices. This is only a short explanation what ELBE is and a brief tutorial for using ELBE, &#039;&#039;&#039;please go to the [https://elbe-rfs.org/docs/sphinx/index.html official documentation of ELBE] for a detailed documentation&#039;&#039;&#039;. This article was made when version 12.4 was the current version of ELBE.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE Build schema.png|frame|none|Basic structure of ELBE building a root-filesystem (as of version 12.4). Orange are inputs for ELBE, green are things that the result of ELBE. &amp;quot;&amp;lt;tt&amp;gt;buildenv.img&amp;lt;/tt&amp;gt;&amp;quot; is a special case because the initvm is created at &amp;quot;elbe initvm create&amp;quot; and it is reused by &amp;quot;elbe initvm submit&amp;quot;. Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview]]&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software in form of Debian packages (.deb). Usually the official Debian repositories are used, but it is possible to use custom repositories to get special packages into the root-filesystem. Resulting root-filesystems are basicly customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
Xml-files can be appended with a bzip2 compressed archive. At the end of the buildprocess, the content of the archive will be extracted into the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
The form of the finished root-filesystem is customizeable. The following variants are possible:&lt;br /&gt;
* Tarball: The root-filesystem can be packed as a tarball (usually compressed with gzip). The tarball can be extracted onto an empty partition or can be used for the [[DHCOM Update Mechanism]].&lt;br /&gt;
* Disk-/SD-card-image: An image with full partition table can be created. This can be a image of a hard disk or a sd-card. The size, type, label and mountpoint of each partition can be customized via the xml-file.&lt;br /&gt;
* UBIFS-Image: ELBE can output images for &amp;quot;Unsorted Block Image&amp;quot;-devices (UBI). These are needed if you want to use the NAND-Flash of our DHSOM modules for the root-filesystem. More information about that type of filesystem can be found under [[UBI/UBIFS Filesystem]].&lt;br /&gt;
As an addition ELBE is able to create a cdrom image which can be used as a input to reconstruct the exact root-filesystem that was created.&lt;br /&gt;
&lt;br /&gt;
ELBE can also create a Software Development Kit (SDK) for the built root-filesystem. The SDK contains the toolchain with the cross compiler and other tools and the corresponding sysroot with needed headers. These can be used to create software for the specific root-filesystem. The SDK is very similar to Yocto&#039;s Standard-SDK and can be used in the same way. An explanation how to use the SDK with some IDEs/buildsystems can be found here: &#039;&#039;Link following&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to install ELBE:&lt;br /&gt;
&lt;br /&gt;
===Debian Package===&lt;br /&gt;
&lt;br /&gt;
The developers of ELBE have their own package repository which can be used to install ELBE.&lt;br /&gt;
&lt;br /&gt;
To add the repository to the &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; directory and install the public key for the repo:&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &#039;deb http://debian.linutronix.de/elbe buster main&#039; &amp;gt;&amp;gt; /etc/apt/sources.list.d/elbe.list&lt;br /&gt;
 wget http://debian.linutronix.de/elbe/elbe-repo.pub &amp;amp;&amp;amp; apt-key add elbe-repo.pub&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can install ELBE with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt update&lt;br /&gt;
 apt install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cloning the git repository of ELBE===&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to clone the git repository of ELBE. To do this the following packages have to be installed on the system:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python python-debian python-mako python-lxml python-apt python-gpg python-suds python-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can clone the repo with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;git clone https://github.com/Linutronix/elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Premade Docker container===&lt;br /&gt;
&lt;br /&gt;
We created docker container images with ELBE preinstalled, these can be found at [https://hub.docker.com/r/dhelectronics/elbe Docker Hub] under the name dhelectronics/elbe. There are two different versions of container tags available:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Version the tag is pointing to.&lt;br /&gt;
|-&lt;br /&gt;
| git-latest-tested || Points to the latest version we have used and confirmed that is working with our own recipies. This version will change from time to time and some versions may be skipped.&lt;br /&gt;
|-&lt;br /&gt;
| git-vX || Always points to the specific version X of ELBE (as an example git-v12.4 points to version 12.4 of ELBE).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To get an image enter (e.g. version 12.4)&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker pull dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The container can be started with (the container does need extensive rights because a virtual machine is started inside it):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker run --name=elbe --mount type=bind,src=./,dst=/workdir-w /workdir/ --cap-add SYS_ADMIN --security-opt seccomp:unconfined --security-opt apparmor:unconfined --mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup --device /dev/kvm --device /dev/fuse --group-add kvm dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have to start a shell inside the container with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker exec elbe /bin/bash&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the container you can now run your ELBE build, you can exit the shell with CTRL+D and remove the container with &amp;lt;tt&amp;gt;docker container rm -f elbe&amp;lt;/tt&amp;gt;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
The ELBE buildsystem consists of the program elbe which is implemented in Python. Similar to git, it can be called with several sub commands. If you installed ELBE through the Debian package, the program is inside your PATH environment and can be called by &amp;quot;&amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;&amp;quot;, else you have to call it by the complete path. The most important commands are:&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm create --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command initializes a new initvm in the directory &amp;quot;/example&amp;quot; and builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; . This command can only be used if there isn&#039;t any initvm defined yet. If you cloned ELBE from git, you can add the switch &amp;quot;&amp;lt;tt&amp;gt;--devel&amp;lt;/tt&amp;gt;&amp;quot;, then ELBE copies the local ELBE version into the initvm (instead of downloading ELBE from their repository). &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm submit --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; and reuses an existing initvm at the directory &amp;quot;/example&amp;quot;. &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive example.xml example-archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command appends the xml-file &amp;quot;example.xml&amp;quot; with the archive &amp;quot;example-archive.tar.bz2&amp;quot;. The binary content of the archive is stored in BASE64 encoding inside a xml tag.&lt;br /&gt;
&lt;br /&gt;
If you add  &amp;lt;tt&amp;gt;--build-sdk&amp;lt;/tt&amp;gt; at the &amp;quot;&amp;lt;tt&amp;gt;initvm create/submit&amp;lt;/tt&amp;gt;&amp;quot;-command then as an addition to creating the root-filesystem, the SDK (for developing software for the root-filesystem) is created too. Usually CD-Images with all binary packages and all source packages (for the exact recreation of the rootfilesystem) are created. The creation of these can be skipped with the commandline switches &amp;lt;tt&amp;gt;--skip-build-bin&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;--skip-build-sources&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If an error happens while building the rootfilesystem, no files are returned. It is possible to get the log and other files of the build with an extra command. The complete call of the command (which differs for each build) is printed as exit-message of the ELBE build.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Script for easy use with container images===&lt;br /&gt;
&lt;br /&gt;
We created a script for easing the use of ELBE inside the container. This script is preinstalled in our [[Virtual_Machine_for_Application_Development|Virtual Machine for Application Development]] starting with version Stretch Vx. The script is called &#039;&#039;&#039;elbe_container_build_start.sh [OPTIONS] &amp;lt;elbe_build_description.xml&amp;gt;&#039;&#039;&#039;. In the standard configuration the CD-images with binary and source packages are created. The SDK is also created.&lt;br /&gt;
&lt;br /&gt;
It is possible to start an additional container with a debian repository, the given path at --repodir has to point at the root of a debian repository. Inside the xml the repository can be used by adding the repo &amp;quot;&amp;lt;tt&amp;gt;http:&amp;lt;nowiki/&amp;gt;//dhdebrepo/dh_debian_repo &amp;lt;distro&amp;gt; &amp;lt;component&amp;gt;&amp;lt;/tt&amp;gt;&amp;quot; to the list of mirrors. Note that after the build process the repository is still inside the &amp;lt;tt&amp;gt;/etc/apt/sources.list&amp;lt;/tt&amp;gt; of the resulting rootfilesystem. You have to remove this line at the finetuning section of the xml file or when the device running with the rootfilesystem has started. If you do not remove the repo, &amp;lt;tt&amp;gt;apt-get update&amp;lt;/tt&amp;gt; will fail with an error if you want to update the system or install new packages afterwards.&lt;br /&gt;
&lt;br /&gt;
The following options are available for the script:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| --elbedockerimage &amp;lt;REPO:TAG&amp;gt; || Sets the docker image which is used for the elbe build.&lt;br /&gt;
|-&lt;br /&gt;
| --repodir &amp;lt;path&amp;gt; || Starts an additional container with a Debian repo webserver, which uses this repo path. If this option isn&#039;t set, then no container with the repo is started.&lt;br /&gt;
|-&lt;br /&gt;
| --repodockerimage &amp;lt;REPO:TAG&amp;gt; || Sets Debian repo webserver docker image. Has no effect if &amp;lt;tt&amp;gt;--repodir&amp;lt;tt&amp;gt; is not set.&lt;br /&gt;
|-&lt;br /&gt;
| --initvmtopdir &amp;lt;path&amp;gt; || Change initvm top directory, default value is the &amp;lt;tt&amp;gt;&amp;lt;current-working-directory&amp;gt;/initvm-docker&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| --fast || Speed up the build of the rootfilesystem with only building the rootfilesystem itself, and skipping the creation of the CD-images and of the SDK.&lt;br /&gt;
|-&lt;br /&gt;
| --console || Ignore every other option and start the container and enter a console inside of the container.&lt;br /&gt;
|-&lt;br /&gt;
| --version || Display version info of the script and exit&lt;br /&gt;
|-&lt;br /&gt;
| --help || Display the command line help and exit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When the build is finished, the container exits and is removed. If an error happenes the container is not exited, and a console inside the container is opened, where you can get the logs and files of the failed build.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==XML-Example==&lt;br /&gt;
&lt;br /&gt;
This is a simple example for a xml file. If you start the build process a root-filesystem for a device of the &amp;quot;ARM EABI with hard float&amp;quot;-architecture (usually ARMv7) based on Debian 10 is built. In extra to the main mirror, the security and buster-updates mirror is also configured, so that the root-filesystem can get security updates. After the package installation is finished, the cached Debian package files are removed to slim down the image. At the end, the finished root-filesystem is packed into gzip-compressed tarball &amp;quot;&amp;lt;tt&amp;gt;rootfs.tar.gz&amp;lt;/tt&amp;gt;&amp;quot;. Note that the resulting root-filesystem has no kernel, bootloader and device tree, these have to be supplied externally. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1.0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ftp.de.debian.org&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;buster&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rootfs.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/cache/apt/archives/*.deb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;curl&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;vim&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;iperf3&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;i2c-tools&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Official documentation of the current ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3117</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=3117"/>
		<updated>2020-09-03T14:45:25Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Prepare for ELBE docker container&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a buildsystem to generate root-filesystems for embedded devices. This is only a short explanation what ELBE is and a brief tutorial for using ELBE, &#039;&#039;&#039;please go to the [https://elbe-rfs.org/docs/sphinx/index.html official documentation of ELBE] for a detailed documentation&#039;&#039;&#039;. This article was made when version 12.4 was the current version of ELBE.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE Build schema.png|frame|none|Basic structure of ELBE building a root-filesystem (as of version 12.4). Orange are inputs for ELBE, green are things that the result of ELBE. &amp;quot;&amp;lt;tt&amp;gt;buildenv.img&amp;lt;/tt&amp;gt;&amp;quot; is a special case because the initvm is created at &amp;quot;elbe initvm create&amp;quot; and it is reused by &amp;quot;elbe initvm submit&amp;quot;. Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview]]&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software in form of Debian packages (.deb). Usually the official Debian repositories are used, but it is possible to use custom repositories to get special packages into the root-filesystem. Resulting root-filesystems are basicly customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
Xml-files can be appended with a bzip2 compressed archive. At the end of the buildprocess, the content of the archive will be extracted into the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
The form of the finished root-filesystem is customizeable. The following variants are possible:&lt;br /&gt;
* Tarball: The root-filesystem can be packed as a tarball (usually compressed with gzip). The tarball can be extracted onto an empty partition or can be used for the [[DHCOM Update Mechanism]].&lt;br /&gt;
* Disk-/SD-card-image: An image with full partition table can be created. This can be a image of a hard disk or a sd-card. The size, type, label and mountpoint of each partition can be customized via the xml-file.&lt;br /&gt;
* UBIFS-Image: ELBE can output images for &amp;quot;Unsorted Block Image&amp;quot;-devices (UBI). These are needed if you want to use the NAND-Flash of our DHSOM modules for the root-filesystem. More information about that type of filesystem can be found under [[UBI/UBIFS Filesystem]].&lt;br /&gt;
As an addition ELBE is able to create a cdrom image which can be used as a input to reconstruct the exact root-filesystem that was created.&lt;br /&gt;
&lt;br /&gt;
ELBE can also create a Software Development Kit (SDK) for the built root-filesystem. The SDK contains the toolchain with the cross compiler and other tools and the corresponding sysroot with needed headers. These can be used to create software for the specific root-filesystem. The SDK is very similar to Yocto&#039;s Standard-SDK and can be used in the same way. An explanation how to use the SDK with some IDEs/buildsystems can be found here: &#039;&#039;Link following&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to install ELBE:&lt;br /&gt;
&lt;br /&gt;
===Debian Package===&lt;br /&gt;
&lt;br /&gt;
The developers of ELBE have their own package repository which can be used to install ELBE.&lt;br /&gt;
&lt;br /&gt;
To add the repository to the &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; directory and install the public key for the repo:&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &#039;deb http://debian.linutronix.de/elbe buster main&#039; &amp;gt;&amp;gt; /etc/apt/sources.list.d/elbe.list&lt;br /&gt;
 wget http://debian.linutronix.de/elbe/elbe-repo.pub &amp;amp;&amp;amp; apt-key add elbe-repo.pub&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can install ELBE with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt update&lt;br /&gt;
 apt install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cloning the git repository of ELBE===&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to clone the git repository of ELBE. To do this the following packages have to be installed on the system:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python python-debian python-mako python-lxml python-apt python-gpg python-suds python-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can clone the repo with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;git clone https://github.com/Linutronix/elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Docker container===&lt;br /&gt;
&lt;br /&gt;
We created docker container images with ELBE preinstalled, these can be found at [https://hub.docker.com/r/dhelectronics/elbe Docker Hub] under the name dhelectronics/elbe. There are two different versions of container tags available:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| git-latest-tested || This tag always points to the latest version we have used and confirmed that is working with our own recipies. This version will change from time to time.&lt;br /&gt;
|-&lt;br /&gt;
| git-vX || These tags always point to a specific version of ELBE (e.g. git-v12.4 points to version 12.4 of ELBE).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To get an image enter (e.g. version 12.4)&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker pull dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The container can be started with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker run --name=elbe --mount type=bind,src=./,dst=/workdir-w /workdir/ --cap-add SYS_ADMIN --security-opt seccomp:unconfined --security-opt apparmor:unconfined --mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup --device /dev/kvm --device /dev/fuse --group-add kvm dhelectronics/elbe:git-v12.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have to start a shell inside the container with:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docker exec elbe /bin/bash&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the container you can now run your ELBE build, you can exit the shell with CTRL+D and remove the container with &amp;lt;tt&amp;gt;docker container rm -f elbe&amp;lt;/tt&amp;gt;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
The ELBE buildsystem consists of the program elbe which is implemented in Python. Similar to git, it can be called with several sub commands. If you installed ELBE through the Debian package, the program is inside your PATH environment and can be called by &amp;quot;&amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;&amp;quot;, else you have to call it by the complete path. The most important commands are:&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm create --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command initializes a new initvm in the directory &amp;quot;/example&amp;quot; and builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; . This command can only be used if there isn&#039;t any initvm defined yet. If you cloned ELBE from git, you can add the switch &amp;quot;&amp;lt;tt&amp;gt;--devel&amp;lt;/tt&amp;gt;&amp;quot;, then ELBE copies the local ELBE version into the initvm (instead of downloading ELBE from their repository). &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm submit --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; and reuses an existing initvm at the directory &amp;quot;/example&amp;quot;. &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive example.xml example-archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command appends the xml-file &amp;quot;example.xml&amp;quot; with the archive &amp;quot;example-archive.tar.bz2&amp;quot;. The binary content of the archive is stored in BASE64 encoding inside a xml tag.&lt;br /&gt;
&lt;br /&gt;
If you add  &amp;lt;tt&amp;gt;--build-sdk&amp;lt;/tt&amp;gt; at the &amp;quot;&amp;lt;tt&amp;gt;intvm create/submit&amp;lt;/tt&amp;gt;&amp;quot;-command then as an addition to creating the root-filesystem, the SDK (for developing software for the root-filesystem) is created too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Script for easy use with container images===&lt;br /&gt;
&lt;br /&gt;
We created a script for easing the use of ELBE inside the container. This script is preinstalled in our [[Virtual_Machine_for_Application_Development|Virtual Machine for Application Development]] starting with version Stretch Vx. The script is called &#039;&#039;&#039;elbe_container_build_start.sh [OPTIONS] &amp;lt;elbe_build_description.xml&amp;gt;&#039;&#039;&#039;. The following options are available:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option !! Meaning of the option&lt;br /&gt;
|-&lt;br /&gt;
| --elbedockerimage &amp;lt;REPO:TAG&amp;gt; || Change elbe docker image&lt;br /&gt;
|-&lt;br /&gt;
| --repodir &amp;lt;path&amp;gt; || Initiates a Debian repo web server to start, which uses this repo path&lt;br /&gt;
|-&lt;br /&gt;
| --repodockerimage &amp;lt;REPO:TAG&amp;gt; || Change Debian repo webserver docker image&lt;br /&gt;
|-&lt;br /&gt;
| --initvmtopdir &amp;lt;path&amp;gt; || Change initvm top directory&lt;br /&gt;
|-&lt;br /&gt;
| --fast || Using elbe fast option (--skip-build-bin --skip-build-sources)&lt;br /&gt;
|-&lt;br /&gt;
| --console || Ignore everything  and start console in docker&lt;br /&gt;
|-&lt;br /&gt;
| --version || Display version info&lt;br /&gt;
|-&lt;br /&gt;
| --help || Display this help and exit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is possible to start an additional container with a debian repository, the given path at --repodir has to point at the root of a debian repository.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==XML-Example==&lt;br /&gt;
&lt;br /&gt;
This is a simple example for a xml file. If you start the build process a root-filesystem for a device of the &amp;quot;ARM EABI with hard float&amp;quot;-architecture (usually ARMv7) based on Debian 10 is built. In extra to the main mirror, the security and buster-updates mirror is also configured, so that the root-filesystem can get security updates. After the package installation is finished, the cached Debian package files are removed to slim down the image. At the end, the finished root-filesystem is packed into gzip-compressed tarball &amp;quot;&amp;lt;tt&amp;gt;rootfs.tar.gz&amp;lt;/tt&amp;gt;&amp;quot;. Note that the resulting root-filesystem has no kernel, bootloader and device tree, these have to be supplied externally. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1.0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ftp.de.debian.org&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;buster&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rootfs.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/cache/apt/archives/*.deb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;curl&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;vim&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;iperf3&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;i2c-tools&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Official documentation of the current ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2983</id>
		<title>Add Yocto SDK with QT5 to QT Creator</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2983"/>
		<updated>2020-07-15T14:40:34Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Reworked the envrionment setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following instructions are based on &#039;&#039;&#039;DHCOM STM32MP1&#039;&#039;&#039; computer on module and Yocto version &amp;quot;zeus&amp;quot;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prepairing your virtual machine ==&lt;br /&gt;
&lt;br /&gt;
Get the [[Virtual Machine for Application Development]].&lt;br /&gt;
&lt;br /&gt;
Install the following package:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install qtcreator qt5default&lt;br /&gt;
&lt;br /&gt;
== Download and install the SDK package ==&lt;br /&gt;
&lt;br /&gt;
Get the [[media:Dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.zip|QT5 SDK for STM32mp1]]&lt;br /&gt;
&lt;br /&gt;
Unpack the archive and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 $ sh ./dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.sh&lt;br /&gt;
&lt;br /&gt;
Choose the installation directory (default: /opt/dhlinux/nodistro.0/).&lt;br /&gt;
&lt;br /&gt;
The toolchain is now installed to your system.&lt;br /&gt;
&lt;br /&gt;
== Configure Qt Creator ==&lt;br /&gt;
&lt;br /&gt;
Run QT Creator&lt;br /&gt;
&lt;br /&gt;
In Qt Creator go to Tools &amp;gt; Options &amp;gt; Devices and add your Wandboard as a generic linux device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-device.jpg|550px]]&lt;br /&gt;
&lt;br /&gt;
go to Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run and:&lt;br /&gt;
&lt;br /&gt;
Add a new c++ compiler. Select your compiler: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-g++&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-compiler.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new debugger. Select your debugger: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-debugger.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add your Qt version by selecting the qmake located in /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/qmake&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-qt-version.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new kit selecting your new Qt5 version and compiler and setting the sysroot to /opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi and leave the Qt mkspec empty.&lt;br /&gt;
Then select your device&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-kit.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
If there is a warning/error shown, please click apply between each step.&lt;br /&gt;
&lt;br /&gt;
There is one last point. The SDK comes with an environment-setup which sets some variables that are needed if you want to use the toolchain. There are two ways to get this environment into Qt Creator:&lt;br /&gt;
* The first way is rather simple: Open a shell and source the environment-setup script (in the example &amp;lt;tt&amp;gt;/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&amp;lt;/tt&amp;gt;). After that start Qt Creator in the same shell session. If you want to use another toolchain, you have start a new shell session, source the corresponding environment-setup and start QtCreator from there.&lt;br /&gt;
* The other possible way is bit more complicated, but in return it is possible to change the toolchain without restarting Qt Creator: In the settings of the kit there is a button for setting the environment of this kit (&amp;quot;Change&amp;quot;-button right of &amp;quot;Environment&amp;quot;). When this button is pressed, a window for editing text opens. There you can set environment variables by the schema &amp;lt;variable&amp;gt;=&amp;lt;value&amp;gt;, one variable can be set per line. You cannot simply copy the setup script, because at the script the shell is called and other variables are referenced which isn&#039;t supported by Qt Creator. It is also possible that the setup script imports additional scripts from the &amp;quot;environment-setup.d&amp;quot; directory of each sysroot. &amp;lt;br /&amp;gt; So you have to source the setup script and look what variables have been set and write them and their respective values into the window. &amp;lt;br /&amp;gt; If you want to use another toolchain, than you can change the used kit. An example for configuring the environment of a kit is inside the collapsible box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;&amp;quot;&amp;gt;Example for setting the environment variables at the kit&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;# Check for LD_LIBRARY_PATH being set, which can break SDK and generally is a bad practice&lt;br /&gt;
 # http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&lt;br /&gt;
 # http://xahlee.info/UnixResource_dir/_/ldpath.html&lt;br /&gt;
 # Only disable this check if you are absolutely know what you are doing!&lt;br /&gt;
 if [ ! -z &amp;quot;$LD_LIBRARY_PATH&amp;quot; ]; then&lt;br /&gt;
     echo &amp;quot;Your environment is misconfigured, you probably need to &#039;unset LD_LIBRARY_PATH&#039;&amp;quot;&lt;br /&gt;
     echo &amp;quot;but please check why this was set in the first place and that it&#039;s safe to unset.&amp;quot;&lt;br /&gt;
     echo &amp;quot;The SDK will not operate correctly in most cases when LD_LIBRARY_PATH is set.&amp;quot;&lt;br /&gt;
     echo &amp;quot;For more references see:&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://xahlee.info/UnixResource_dir/_/ldpath.html&amp;quot;&lt;br /&gt;
     return 1&lt;br /&gt;
 fi&lt;br /&gt;
 export SDKTARGETSYSROOT=/opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export PATH=/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/../x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-musl:$PATH&lt;br /&gt;
 export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT&lt;br /&gt;
 export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig:$SDKTARGETSYSROOT/usr/share/pkgconfig&lt;br /&gt;
 export CONFIG_SITE=/opt/dhlinux/nodistro.0/site-config-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export OECORE_NATIVE_SYSROOT=&amp;quot;/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_SYSROOT=&amp;quot;$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_ACLOCAL_OPTS=&amp;quot;-I /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/share/aclocal&amp;quot;&lt;br /&gt;
 export OECORE_BASELIB=&amp;quot;lib&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_ARCH=&amp;quot;arm&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_OS=&amp;quot;linux-gnueabi&amp;quot;&lt;br /&gt;
 unset command_not_found_handle&lt;br /&gt;
 export CC=&amp;quot;arm-dhlinux-linux-gnueabi-gcc  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CXX=&amp;quot;arm-dhlinux-linux-gnueabi-g++  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CPP=&amp;quot;arm-dhlinux-linux-gnueabi-gcc -E  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export AS=&amp;quot;arm-dhlinux-linux-gnueabi-as &amp;quot;&lt;br /&gt;
 export LD=&amp;quot;arm-dhlinux-linux-gnueabi-ld  --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export GDB=arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
 export STRIP=arm-dhlinux-linux-gnueabi-strip&lt;br /&gt;
 export RANLIB=arm-dhlinux-linux-gnueabi-ranlib&lt;br /&gt;
 export OBJCOPY=arm-dhlinux-linux-gnueabi-objcopy&lt;br /&gt;
 export OBJDUMP=arm-dhlinux-linux-gnueabi-objdump&lt;br /&gt;
 export READELF=arm-dhlinux-linux-gnueabi-readelf&lt;br /&gt;
 export AR=arm-dhlinux-linux-gnueabi-ar&lt;br /&gt;
 export NM=arm-dhlinux-linux-gnueabi-nm&lt;br /&gt;
 export M4=m4&lt;br /&gt;
 export TARGET_PREFIX=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 export CONFIGURE_FLAGS=&amp;quot;--target=arm-dhlinux-linux-gnueabi --host=arm-dhlinux-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export CXXFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export LDFLAGS=&amp;quot;-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed&amp;quot;&lt;br /&gt;
 export CPPFLAGS=&amp;quot;&amp;quot;&lt;br /&gt;
 export KCFLAGS=&amp;quot;--sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_DISTRO_VERSION=&amp;quot;0.0.1&amp;quot;&lt;br /&gt;
 export OECORE_SDK_VERSION=&amp;quot;nodistro.0&amp;quot;&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 # Append environment subscripts&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_TARGET_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do &lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_NATIVE_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do&lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are additional scripts in the &amp;quot;environment-setup.d&amp;quot;-directories of the sysroots which are included at the main setup-script. These scripts have the following content:&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/cmake.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OE_CMAKE_TOOLCHAIN_FILE=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake&amp;quot;&lt;br /&gt;
 export OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX=&amp;quot;`echo $OECORE_BASELIB | sed -e s/lib//`&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/openssl.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH&lt;br /&gt;
 export OE_QMAKE_CFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXXFLAGS=&amp;quot;$CXXFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LDFLAGS=&amp;quot;$LDFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CC=&amp;quot;$CC&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXX=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LINK=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_AR=$AR&lt;br /&gt;
 export OE_QMAKE_STRIP=$STRIP&lt;br /&gt;
 export QT_CONF_PATH=$OECORE_NATIVE_SYSROOT/usr/bin/qt.conf&lt;br /&gt;
 export OE_QMAKE_LIBDIR_QT=`qmake -query QT_INSTALL_LIBS`&lt;br /&gt;
 export OE_QMAKE_INCDIR_QT=`qmake -query QT_INSTALL_HEADERS`&lt;br /&gt;
 export OE_QMAKE_MOC=$OECORE_NATIVE_SYSROOT/usr/bin/moc&lt;br /&gt;
 export OE_QMAKE_UIC=$OECORE_NATIVE_SYSROOT/usr/bin/uic&lt;br /&gt;
 export OE_QMAKE_RCC=$OECORE_NATIVE_SYSROOT/usr/bin/rcc&lt;br /&gt;
 export OE_QMAKE_QDBUSCPP2XML=$OECORE_NATIVE_SYSROOT/usr/bin/qdbuscpp2xml&lt;br /&gt;
 export OE_QMAKE_QDBUSXML2CPP=$OECORE_NATIVE_SYSROOT/usr/bin/qdbusxml2cpp&lt;br /&gt;
 export OE_QMAKE_QT_CONFIG=`qmake -query QT_INSTALL_LIBS`/mkspecs/qconfig.pri&lt;br /&gt;
 export OE_QMAKE_PATH_HOST_BINS=$OECORE_NATIVE_SYSROOT/usr/bin&lt;br /&gt;
 export QMAKESPEC=`qmake -query QT_INSTALL_LIBS`/mkspecs/linux-oe-g++&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/qt5.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OPENSSL_CONF=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/lib/ssl-1.1/openssl.cnf&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This results in the following environment configuration:&lt;br /&gt;
&lt;br /&gt;
[[File:Qtcreator-set-environment.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=File:Qtcreator-set-environment.png&amp;diff=2982</id>
		<title>File:Qtcreator-set-environment.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=File:Qtcreator-set-environment.png&amp;diff=2982"/>
		<updated>2020-07-15T12:55:58Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Pzimmermann uploaded a new version of File:Qtcreator-set-environment.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example configuration of the environment of using the Yocto toolchain with Qt 5 in Qt Creator&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2981</id>
		<title>UBI/UBIFS Filesystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2981"/>
		<updated>2020-07-14T05:39:38Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
On DHCOM Systems with Linux the UBIFS Filesystem is used for the NAND-Flash root-filesystem. The Unsorted Block Image File System (UBIFS) is a filesystem for use with raw flash memory media. UBIFS works on top of an Unsorted Block Images (UBI) device, which is itself on top of an MTD device.&lt;br /&gt;
&lt;br /&gt;
For further details please have a look at&lt;br /&gt;
&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubi.html UBI documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubifs.html UBIFS documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/general.html MTD documentation]&lt;br /&gt;
&lt;br /&gt;
== Create Images ==&lt;br /&gt;
&lt;br /&gt;
To create UBI-Images or UBIFS-Images you need to install the &amp;quot;mtd-utils&amp;quot; on your Linux host pc. We recommend to download the latest version of the mtd-utils form the [http://git.infradead.org/mtd-utils.git mtd-utils git-repository] because it is reported that some versions from the distribution repositorys are buggy and/or out of date.&lt;br /&gt;
&lt;br /&gt;
=== Create UBIFS Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBIFS Image you need some hardware-depended information. &lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;LEB size&amp;gt;           &amp;lt;/code&amp;gt; Logical Erase Block size&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; maximum logical erase block count&lt;br /&gt;
&lt;br /&gt;
If got this information, you can create a UBIFS-Image from a directory-tree with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sodu mkfs.ubifs -F -r &amp;lt;/path/to/your/rootfs/tree&amp;gt; -m &amp;lt;min io size&amp;gt; -e &amp;lt;LEB size&amp;gt; -c &amp;lt;Erase Blocks count&amp;gt; -o &amp;lt;/path/to/output/Image.ubifs&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 126976 -c 1700 -o am35x.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 129024 -c 1700 -o imx25.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark&#039;&#039;&#039;&lt;br /&gt;
To use the option -F you habe to run a kernel version 3.0 or higher. You need to have the &amp;quot;mtd-utils&amp;quot; version 1.5.x or higher, too.&lt;br /&gt;
&lt;br /&gt;
Use the &amp;lt;code&amp;gt;ubinfo&amp;lt;/code&amp;gt; command on your device to check the LEB size and count.&lt;br /&gt;
Example: &amp;lt;code&amp;gt;# ubinfo /dev/ubi0 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create UBI Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBI image you have to have already a UBIFS image. Use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# ubinize -vv -o &amp;lt;output image&amp;gt; -m &amp;lt;min io size&amp;gt; -p &amp;lt;PEB size&amp;gt;KiB -s &amp;lt;subpage-size&amp;gt; -O &amp;lt;VID-hdr-offset&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;PEB size&amp;gt;           &amp;lt;/code&amp;gt; Physical Erase Block size (in KiB) - Equals the block size of the NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; Count of the available Erase Blocks&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;subpage-size&amp;gt;       &amp;lt;/code&amp;gt; Subpage size in bytes. Default value is the minimum input/output size (page-size)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;VID-hdr-offset&amp;gt;     &amp;lt;/code&amp;gt; offset if the VID header from start of the PEB (default is the next min I/O unit or sub-page after the EC header)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt; Path to a configuration file.&lt;br /&gt;
&lt;br /&gt;
Example of a configuration file content (config.ini):&lt;br /&gt;
 &amp;lt;code&amp;gt; [rootfs_volume]&lt;br /&gt;
  mode=ubi&lt;br /&gt;
  image=imx25.ubifs&lt;br /&gt;
  vol_id=0&lt;br /&gt;
  vol_type=dynamic&lt;br /&gt;
  vol_name=nand_rootfs&lt;br /&gt;
  vol_flags=autoresize&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o am3517_rtfs.ubi -m 2048 -p 128KiB config.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o imx25_rtfs.ubi -m 2048 -p 128KiB -s 512 -O 512 config.ini &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User-space tools ==&lt;br /&gt;
&lt;br /&gt;
The UBI/UBIFS user-space tools are included within the mtd-utils. &lt;br /&gt;
&lt;br /&gt;
some commands are:&lt;br /&gt;
* &amp;lt;code&amp;gt;ubinfo       &amp;lt;/code&amp;gt; - provides information about UBI devices and volumes found in the system;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiattach    &amp;lt;/code&amp;gt; - attaches MTD devices (which describe raw flash) to UBI and creates corresponding UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubidetach    &amp;lt;/code&amp;gt; - detaches MTD devices from UBI devices (the opposite to what ubiattach does);&lt;br /&gt;
* &amp;lt;code&amp;gt;ubimkvol     &amp;lt;/code&amp;gt; - creates UBI volumes on UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubirmvol     &amp;lt;/code&amp;gt; - removes UBI volumes from UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiupdatevol &amp;lt;/code&amp;gt; - updates UBI volumes;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiformat    &amp;lt;/code&amp;gt; - formats empty flash, erases flash and preserves erase counters, flashes UBI images to MTD devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdinfo      &amp;lt;/code&amp;gt; - reports information about MTD devices found in the system.&lt;br /&gt;
 &lt;br /&gt;
Use the &amp;quot;-h&amp;quot; option to get more information about the commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Flashing UBI/UBIFS Images ==&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to flash UBI/UBIFS Images on a running linux device (you can not flash your active root filesystem). When you want to run a linux root-filesystem update please use the subfunction [[DHCOM Update: Linux Root Filesystem| Root Filesystem Update]] of the [[DHCOM Flash Update|DHCOM Update Mechnism]]. In special cases you can use the following commands:&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBIFS Image ===&lt;br /&gt;
 &amp;lt;code&amp;gt;ubiformat /dev/mtdX&lt;br /&gt;
 ubiattach -m X -d Y /dev/ubi_ctrl&lt;br /&gt;
 ubimkvol /dev/ubiY -N volume_name -s -m&lt;br /&gt;
 ubiupdatevol /dev/ubiY_0 /path/to/Image.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBI Image ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt; ubiformat /dev/mtdX –f Image.ubi &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Check the health of a NAND-flash with features of the UBI device ==&lt;br /&gt;
&lt;br /&gt;
If an UBI Device is used on top of NAND-flash, you can use &amp;lt;code&amp;gt;ubinfo /dev/ubiY&amp;lt;/code&amp;gt; to check the health of the NAND-flash.&lt;br /&gt;
&lt;br /&gt;
Here an example:&lt;br /&gt;
 &amp;lt;tt&amp;gt;root@dhcom1bimx6ull:~# ubinfo /dev/ubi0&lt;br /&gt;
 ubi0&lt;br /&gt;
 Volumes count:                           2&lt;br /&gt;
 Logical eraseblock size:                 126976 bytes, 124.0 KiB&lt;br /&gt;
 Total amount of logical eraseblocks:     1019 (129388544 bytes, 123.3 MiB)&lt;br /&gt;
 Amount of available logical eraseblocks: 0 (0 bytes)&lt;br /&gt;
 Maximum count of volumes                 128&lt;br /&gt;
 Count of bad physical eraseblocks:       5&lt;br /&gt;
 Count of reserved physical eraseblocks:  15&lt;br /&gt;
 Current maximum erase counter value:     40&lt;br /&gt;
 Minimum input/output unit size:          2048 bytes&lt;br /&gt;
 Character device major/minor:            242:0&lt;br /&gt;
 Present volumes:                         0, 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important are the following fields:&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of bad physical eraseblocks&#039;&#039;&#039;&amp;quot;: This value indicates how many eraseblocks are bad. Note that there may be some eraseblocks that are bad when the NAND-flash memory was manufactured.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of reserved physical eraseblocks&#039;&#039;&#039;&amp;quot;: This number indicates how many eraseblocks are available as a reserve if other eraseblock gets bad. If this reserve is depleted then it is a sign that the NAND-flash is at the end of its life.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Current maximum erase counter value&#039;&#039;&#039;&amp;quot;: This value indicates how often the eraseblock with the highest number of erases was erased. Note that UBI devices use wear leveling to distribute the erases of heavely used eraseblocks to different eraseblocks. The number of erases an eraseblock can usually last until it gets bad depends on the NAND flash itself. &#039;&#039;&#039;Important&#039;&#039;&#039;: The erase counter is saved inside the data structure of the UBI device, so if you erase the NAND flash without using &amp;lt;code&amp;gt;ubiformat&amp;lt;/code&amp;gt; the current erase counter will get lost and reset to 1!&lt;br /&gt;
&lt;br /&gt;
You can also check the health of the NAND flash at the bootloader (for example when the linux isn&#039;t booting anymore). The following commands are needed for doing this:&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdparts&amp;lt;/code&amp;gt; to get the name of the UBI device (in this example: &amp;quot;main-nand&amp;quot;).&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi part main-nand&amp;lt;/code&amp;gt; to set the current partition to the UBI device (in this case it is set to main-nand).&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi info&amp;lt;/code&amp;gt; to print the information about the UBI device.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2980</id>
		<title>UBI/UBIFS Filesystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2980"/>
		<updated>2020-07-13T07:55:03Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
On DHCOM Systems with Linux the UBIFS Filesystem is used for the NAND-Flash root-filesystem. The Unsorted Block Image File System (UBIFS) is a filesystem for use with raw flash memory media. UBIFS works on top of an Unsorted Block Images (UBI) device, which is itself on top of an MTD device.&lt;br /&gt;
&lt;br /&gt;
For further details please have a look at&lt;br /&gt;
&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubi.html UBI documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubifs.html UBIFS documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/general.html MTD documentation]&lt;br /&gt;
&lt;br /&gt;
== Create Images ==&lt;br /&gt;
&lt;br /&gt;
To create UBI-Images or UBIFS-Images you need to install the &amp;quot;mtd-utils&amp;quot; on your Linux host pc. We recommend to download the latest version of the mtd-utils form the [http://git.infradead.org/mtd-utils.git mtd-utils git-repository] because it is reported that some versions from the distribution repositorys are buggy and/or out of date.&lt;br /&gt;
&lt;br /&gt;
=== Create UBIFS Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBIFS Image you need some hardware-depended information. &lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;LEB size&amp;gt;           &amp;lt;/code&amp;gt; Logical Erase Block size&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; maximum logical erase block count&lt;br /&gt;
&lt;br /&gt;
If got this information, you can create a UBIFS-Image from a directory-tree with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sodu mkfs.ubifs -F -r &amp;lt;/path/to/your/rootfs/tree&amp;gt; -m &amp;lt;min io size&amp;gt; -e &amp;lt;LEB size&amp;gt; -c &amp;lt;Erase Blocks count&amp;gt; -o &amp;lt;/path/to/output/Image.ubifs&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 126976 -c 1700 -o am35x.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 129024 -c 1700 -o imx25.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark&#039;&#039;&#039;&lt;br /&gt;
To use the option -F you habe to run a kernel version 3.0 or higher. You need to have the &amp;quot;mtd-utils&amp;quot; version 1.5.x or higher, too.&lt;br /&gt;
&lt;br /&gt;
Use the &amp;lt;code&amp;gt;ubinfo&amp;lt;/code&amp;gt; command on your device to check the LEB size and count.&lt;br /&gt;
Example: &amp;lt;code&amp;gt;# ubinfo /dev/ubi0 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create UBI Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBI image you have to have already a UBIFS image. Use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# ubinize -vv -o &amp;lt;output image&amp;gt; -m &amp;lt;min io size&amp;gt; -p &amp;lt;PEB size&amp;gt;KiB -s &amp;lt;subpage-size&amp;gt; -O &amp;lt;VID-hdr-offset&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;PEB size&amp;gt;           &amp;lt;/code&amp;gt; Physical Erase Block size (in KiB) - Equals the block size of the NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; Count of the available Erase Blocks&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;subpage-size&amp;gt;       &amp;lt;/code&amp;gt; Subpage size in bytes. Default value is the minimum input/output size (page-size)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;VID-hdr-offset&amp;gt;     &amp;lt;/code&amp;gt; offset if the VID header from start of the PEB (default is the next min I/O unit or sub-page after the EC header)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt; Path to a configuration file.&lt;br /&gt;
&lt;br /&gt;
Example of a configuration file content (config.ini):&lt;br /&gt;
 &amp;lt;code&amp;gt; [rootfs_volume]&lt;br /&gt;
  mode=ubi&lt;br /&gt;
  image=imx25.ubifs&lt;br /&gt;
  vol_id=0&lt;br /&gt;
  vol_type=dynamic&lt;br /&gt;
  vol_name=nand_rootfs&lt;br /&gt;
  vol_flags=autoresize&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o am3517_rtfs.ubi -m 2048 -p 128KiB config.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o imx25_rtfs.ubi -m 2048 -p 128KiB -s 512 -O 512 config.ini &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User-space tools ==&lt;br /&gt;
&lt;br /&gt;
The UBI/UBIFS user-space tools are included within the mtd-utils. &lt;br /&gt;
&lt;br /&gt;
some commands are:&lt;br /&gt;
* &amp;lt;code&amp;gt;ubinfo       &amp;lt;/code&amp;gt; - provides information about UBI devices and volumes found in the system;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiattach    &amp;lt;/code&amp;gt; - attaches MTD devices (which describe raw flash) to UBI and creates corresponding UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubidetach    &amp;lt;/code&amp;gt; - detaches MTD devices from UBI devices (the opposite to what ubiattach does);&lt;br /&gt;
* &amp;lt;code&amp;gt;ubimkvol     &amp;lt;/code&amp;gt; - creates UBI volumes on UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubirmvol     &amp;lt;/code&amp;gt; - removes UBI volumes from UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiupdatevol &amp;lt;/code&amp;gt; - updates UBI volumes;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiformat    &amp;lt;/code&amp;gt; - formats empty flash, erases flash and preserves erase counters, flashes UBI images to MTD devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdinfo      &amp;lt;/code&amp;gt; - reports information about MTD devices found in the system.&lt;br /&gt;
 &lt;br /&gt;
Use the &amp;quot;-h&amp;quot; option to get more information about the commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Flashing UBI/UBIFS Images ==&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to flash UBI/UBIFS Images on a running linux device (you can not flash your active root filesystem). When you want to run a linux root-filesystem update please use the subfunction [[DHCOM Update: Linux Root Filesystem| Root Filesystem Update]] of the [[DHCOM Flash Update|DHCOM Update Mechnism]]. In special cases you can use the following commands:&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBIFS Image ===&lt;br /&gt;
 &amp;lt;code&amp;gt;ubiformat /dev/mtdX&lt;br /&gt;
 ubiattach -m X -d Y /dev/ubi_ctrl&lt;br /&gt;
 ubimkvol /dev/ubiY -N volume_name -s -m&lt;br /&gt;
 ubiupdatevol /dev/ubiY_0 /path/to/Image.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBI Image ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt; ubiformat /dev/mtdX –f Image.ubi &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Check the health of a NAND-flash with features of the UBI device ==&lt;br /&gt;
&lt;br /&gt;
If an UBI Device is used on top of NAND-flash, you can use &amp;lt;code&amp;gt;ubinfo /dev/ubiY&amp;lt;/code&amp;gt; to check the health of the NAND-flash.&lt;br /&gt;
&lt;br /&gt;
Here an example:&lt;br /&gt;
 &amp;lt;tt&amp;gt;root@dhcom1bimx6ull:~# ubinfo /dev/ubi0&lt;br /&gt;
 ubi0&lt;br /&gt;
 Volumes count:                           2&lt;br /&gt;
 Logical eraseblock size:                 126976 bytes, 124.0 KiB&lt;br /&gt;
 Total amount of logical eraseblocks:     1019 (129388544 bytes, 123.3 MiB)&lt;br /&gt;
 Amount of available logical eraseblocks: 0 (0 bytes)&lt;br /&gt;
 Maximum count of volumes                 128&lt;br /&gt;
 Count of bad physical eraseblocks:       5&lt;br /&gt;
 Count of reserved physical eraseblocks:  15&lt;br /&gt;
 Current maximum erase counter value:     40&lt;br /&gt;
 Minimum input/output unit size:          2048 bytes&lt;br /&gt;
 Character device major/minor:            242:0&lt;br /&gt;
 Present volumes:                         0, 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important are the following fields:&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of bad physical eraseblocks&#039;&#039;&#039;&amp;quot;: This value indicates how many eraseblocks are bad. Note that there may be some eraseblocks that are bad when the NAND-flash memory was manufactured.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of reserved physical eraseblocks&#039;&#039;&#039;&amp;quot;: This number indicates how many eraseblocks are available as a reserve if other eraseblock gets bad. If this reserve is depleted then it is a sign that the NAND-flash is at the end of its life.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Current maximum erase counter value&#039;&#039;&#039;&amp;quot;: This value indicates how often the eraseblock with the highest number of erases was erased. Note that UBI devices use wear leveling to distribute the erases of heavely used eraseblocks to different eraseblocks. The number of erases an eraseblock can usually last until it gets bad depends on the NAND flash itself. &#039;&#039;&#039;Important&#039;&#039;&#039;: The erase counter is saved inside the data structure of the UBI device, so if you erase the NAND flash without using &amp;lt;code&amp;gt;ubiformat&amp;lt;/code&amp;gt; the current erase counter will get lost and reset to 1!&lt;br /&gt;
&lt;br /&gt;
You can also check the health of the NAND flash at the bootloader (for example when the linux isn&#039;t booting anymore). The following commands are needed for doing this:&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdparts&amp;lt;/code&amp;gt; to get the name of the UBI device (in this example: &amp;quot;main-nand&amp;quot;).&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi part main-nand&amp;lt;/code&amp;gt; to set the current partition to the UBI device.&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi info&amp;lt;/code&amp;gt; to print the information about the UBI device.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2979</id>
		<title>UBI/UBIFS Filesystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=UBI/UBIFS_Filesystem&amp;diff=2979"/>
		<updated>2020-07-13T07:53:50Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Added information on how to check the health status of the NAND flash trough features of UBI devices&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
On DHCOM Systems with Linux the UBIFS Filesystem is used for the NAND-Flash root-filesystem. The Unsorted Block Image File System (UBIFS) is a filesystem for use with raw flash memory media. UBIFS works on top of an Unsorted Block Images (UBI) device, which is itself on top of an MTD device.&lt;br /&gt;
&lt;br /&gt;
For further details please have a look at&lt;br /&gt;
&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubi.html UBI documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/ubifs.html UBIFS documentation]&lt;br /&gt;
* [http://www.linux-mtd.infradead.org/doc/general.html MTD documentation]&lt;br /&gt;
&lt;br /&gt;
== Create Images ==&lt;br /&gt;
&lt;br /&gt;
To create UBI-Images or UBIFS-Images you need to install the &amp;quot;mtd-utils&amp;quot; on your Linux host pc. We recommend to download the latest version of the mtd-utils form the [http://git.infradead.org/mtd-utils.git mtd-utils git-repository] because it is reported that some versions from the distribution repositorys are buggy and/or out of date.&lt;br /&gt;
&lt;br /&gt;
=== Create UBIFS Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBIFS Image you need some hardware-depended information. &lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;LEB size&amp;gt;           &amp;lt;/code&amp;gt; Logical Erase Block size&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; maximum logical erase block count&lt;br /&gt;
&lt;br /&gt;
If got this information, you can create a UBIFS-Image from a directory-tree with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sodu mkfs.ubifs -F -r &amp;lt;/path/to/your/rootfs/tree&amp;gt; -m &amp;lt;min io size&amp;gt; -e &amp;lt;LEB size&amp;gt; -c &amp;lt;Erase Blocks count&amp;gt; -o &amp;lt;/path/to/output/Image.ubifs&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 126976 -c 1700 -o am35x.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25 with 256MB NAND-Flash&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo mkfs.ubifs –F -r /work/rootfs -m 2048 -e 129024 -c 1700 -o imx25.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark&#039;&#039;&#039;&lt;br /&gt;
To use the option -F you habe to run a kernel version 3.0 or higher. You need to have the &amp;quot;mtd-utils&amp;quot; version 1.5.x or higher, too.&lt;br /&gt;
&lt;br /&gt;
Use the &amp;lt;code&amp;gt;ubinfo&amp;lt;/code&amp;gt; command on your device to check the LEB size and count.&lt;br /&gt;
Example: &amp;lt;code&amp;gt;# ubinfo /dev/ubi0 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create UBI Images ===&lt;br /&gt;
&lt;br /&gt;
To create a UBI image you have to have already a UBIFS image. Use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# ubinize -vv -o &amp;lt;output image&amp;gt; -m &amp;lt;min io size&amp;gt; -p &amp;lt;PEB size&amp;gt;KiB -s &amp;lt;subpage-size&amp;gt; -O &amp;lt;VID-hdr-offset&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;min io size&amp;gt;        &amp;lt;/code&amp;gt; Equals the page-size of the used NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;PEB size&amp;gt;           &amp;lt;/code&amp;gt; Physical Erase Block size (in KiB) - Equals the block size of the NAND-Flash&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;Erase Blocks count&amp;gt; &amp;lt;/code&amp;gt; Count of the available Erase Blocks&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;subpage-size&amp;gt;       &amp;lt;/code&amp;gt; Subpage size in bytes. Default value is the minimum input/output size (page-size)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;VID-hdr-offset&amp;gt;     &amp;lt;/code&amp;gt; offset if the VID header from start of the PEB (default is the next min I/O unit or sub-page after the EC header)&lt;br /&gt;
* &amp;lt;code&amp;gt; &amp;lt;configuration file&amp;gt; &amp;lt;/code&amp;gt; Path to a configuration file.&lt;br /&gt;
&lt;br /&gt;
Example of a configuration file content (config.ini):&lt;br /&gt;
 &amp;lt;code&amp;gt; [rootfs_volume]&lt;br /&gt;
  mode=ubi&lt;br /&gt;
  image=imx25.ubifs&lt;br /&gt;
  vol_id=0&lt;br /&gt;
  vol_type=dynamic&lt;br /&gt;
  vol_name=nand_rootfs&lt;br /&gt;
  vol_flags=autoresize&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for am3517&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o am3517_rtfs.ubi -m 2048 -p 128KiB config.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;for i.MX25&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# sudo ubinize -vv -o imx25_rtfs.ubi -m 2048 -p 128KiB -s 512 -O 512 config.ini &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User-space tools ==&lt;br /&gt;
&lt;br /&gt;
The UBI/UBIFS user-space tools are included within the mtd-utils. &lt;br /&gt;
&lt;br /&gt;
some commands are:&lt;br /&gt;
* &amp;lt;code&amp;gt;ubinfo       &amp;lt;/code&amp;gt; - provides information about UBI devices and volumes found in the system;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiattach    &amp;lt;/code&amp;gt; - attaches MTD devices (which describe raw flash) to UBI and creates corresponding UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubidetach    &amp;lt;/code&amp;gt; - detaches MTD devices from UBI devices (the opposite to what ubiattach does);&lt;br /&gt;
* &amp;lt;code&amp;gt;ubimkvol     &amp;lt;/code&amp;gt; - creates UBI volumes on UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubirmvol     &amp;lt;/code&amp;gt; - removes UBI volumes from UBI devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiupdatevol &amp;lt;/code&amp;gt; - updates UBI volumes;&lt;br /&gt;
* &amp;lt;code&amp;gt;ubiformat    &amp;lt;/code&amp;gt; - formats empty flash, erases flash and preserves erase counters, flashes UBI images to MTD devices;&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdinfo      &amp;lt;/code&amp;gt; - reports information about MTD devices found in the system.&lt;br /&gt;
 &lt;br /&gt;
Use the &amp;quot;-h&amp;quot; option to get more information about the commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Flashing UBI/UBIFS Images ==&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to flash UBI/UBIFS Images on a running linux device (you can not flash your active root filesystem). When you want to run a linux root-filesystem update please use the subfunction [[DHCOM Update: Linux Root Filesystem| Root Filesystem Update]] of the [[DHCOM Flash Update|DHCOM Update Mechnism]]. In special cases you can use the following commands:&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBIFS Image ===&lt;br /&gt;
 &amp;lt;code&amp;gt;ubiformat /dev/mtdX&lt;br /&gt;
 ubiattach -m X -d Y /dev/ubi_ctrl&lt;br /&gt;
 ubimkvol /dev/ubiY -N volume_name -s -m&lt;br /&gt;
 ubiupdatevol /dev/ubiY_0 /path/to/Image.ubifs &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flash a UBI Image ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt; ubiformat /dev/mtdX –f Image.ubi &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check the health of the NAND-flash ===&lt;br /&gt;
&lt;br /&gt;
If an UBI Device is used on top of NAND-flash, you can use &amp;lt;code&amp;gt;ubinfo /dev/ubiY&amp;lt;/code&amp;gt; to check the health of the NAND-flash.&lt;br /&gt;
&lt;br /&gt;
Here an example:&lt;br /&gt;
 &amp;lt;tt&amp;gt;root@dhcom1bimx6ull:~# ubinfo /dev/ubi0&lt;br /&gt;
 ubi0&lt;br /&gt;
 Volumes count:                           2&lt;br /&gt;
 Logical eraseblock size:                 126976 bytes, 124.0 KiB&lt;br /&gt;
 Total amount of logical eraseblocks:     1019 (129388544 bytes, 123.3 MiB)&lt;br /&gt;
 Amount of available logical eraseblocks: 0 (0 bytes)&lt;br /&gt;
 Maximum count of volumes                 128&lt;br /&gt;
 Count of bad physical eraseblocks:       5&lt;br /&gt;
 Count of reserved physical eraseblocks:  15&lt;br /&gt;
 Current maximum erase counter value:     40&lt;br /&gt;
 Minimum input/output unit size:          2048 bytes&lt;br /&gt;
 Character device major/minor:            242:0&lt;br /&gt;
 Present volumes:                         0, 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important are the following fields:&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of bad physical eraseblocks&#039;&#039;&#039;&amp;quot;: This value indicates how many eraseblocks are bad. Note that there may be some eraseblocks that are bad when the NAND-flash memory was manufactured.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Count of reserved physical eraseblocks&#039;&#039;&#039;&amp;quot;: This number indicates how many eraseblocks are available as a reserve if other eraseblock gets bad. If this reserve is depleted then it is a sign that the NAND-flash is at the end of its life.&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;Current maximum erase counter value&#039;&#039;&#039;&amp;quot;: This value indicates how often the eraseblock with the highest number of erases was erased. Note that UBI devices use wear leveling to distribute the erases of heavely used eraseblocks to different eraseblocks. The number of erases an eraseblock can usually last until it gets bad depends on the NAND flash itself. &#039;&#039;&#039;Important&#039;&#039;&#039;: The erase counter is saved inside the data structure of the UBI device, so if you erase the NAND flash without using &amp;lt;code&amp;gt;ubiformat&amp;lt;/code&amp;gt; the current erase counter will get lost and reset to 1!&lt;br /&gt;
&lt;br /&gt;
You can also check the health of the NAND flash at the bootloader (for example when the linux isn&#039;t booting anymore). The following commands are needed for doing this:&lt;br /&gt;
* &amp;lt;code&amp;gt;mtdparts&amp;lt;/code&amp;gt; to get the name of the UBI device (in this example: &amp;quot;main-nand&amp;quot;).&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi part main-nand&amp;lt;/code&amp;gt; to set the current partition to the UBI device.&lt;br /&gt;
* &amp;lt;code&amp;gt;ubi info&amp;lt;/code&amp;gt; to print the information about the UBI device.&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2973</id>
		<title>Add Yocto SDK with QT5 to QT Creator</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2973"/>
		<updated>2020-07-02T06:43:30Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Commented the section about the environment, because it makes problems with qmake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following instructions are based on &#039;&#039;&#039;DHCOM STM32MP1&#039;&#039;&#039; computer on module and Yocto version &amp;quot;zeus&amp;quot;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prepairing your virtual machine ==&lt;br /&gt;
&lt;br /&gt;
Get the [[Virtual Machine for Application Development]].&lt;br /&gt;
&lt;br /&gt;
Install the following package:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install qtcreator qt5default&lt;br /&gt;
&lt;br /&gt;
== Download and install the SDK package ==&lt;br /&gt;
&lt;br /&gt;
Get the [[media:Dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.zip|QT5 SDK for STM32mp1]]&lt;br /&gt;
&lt;br /&gt;
Unpack the archive and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 $ sh ./dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.sh&lt;br /&gt;
&lt;br /&gt;
Choose the installation directory (default: /opt/dhlinux/nodistro.0/).&lt;br /&gt;
&lt;br /&gt;
The toolchain is now installed to your system.&lt;br /&gt;
&lt;br /&gt;
== Configure Qt Creator ==&lt;br /&gt;
&lt;br /&gt;
Run QT Creator&lt;br /&gt;
&lt;br /&gt;
In Qt Creator go to Tools &amp;gt; Options &amp;gt; Devices and add your Wandboard as a generic linux device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-device.jpg|550px]]&lt;br /&gt;
&lt;br /&gt;
go to Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run and:&lt;br /&gt;
&lt;br /&gt;
Add a new c++ compiler. Select your compiler: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-g++&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-compiler.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new debugger. Select your debugger: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-debugger.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add your Qt version by selecting the qmake located in /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/qmake&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-qt-version.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new kit selecting your new Qt5 version and compiler and setting the sysroot to /opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi and leave the Qt mkspec empty.&lt;br /&gt;
Then select your device&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-kit.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
As the final point you have to set the environment of the kit: Select &amp;quot;Change&amp;quot; at &amp;quot;Environment:&amp;quot;. Now a window for editing text opens. Copy all environment variables (all lines with &amp;quot;export&amp;quot;-statement) from the environment setup script /opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi and its imported files (at the end of the script) into the window. Each line should contain one environment variable assignment and &amp;quot;export&amp;quot; has to be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;&amp;quot;&amp;gt;Examlpe for setting the environment variables&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi also includes the files /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/cmake.sh , /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/openssl.sh and /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/qt5.sh . The files have the following content:&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;# Check for LD_LIBRARY_PATH being set, which can break SDK and generally is a bad practice&lt;br /&gt;
 # http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&lt;br /&gt;
 # http://xahlee.info/UnixResource_dir/_/ldpath.html&lt;br /&gt;
 # Only disable this check if you are absolutely know what you are doing!&lt;br /&gt;
 if [ ! -z &amp;quot;$LD_LIBRARY_PATH&amp;quot; ]; then&lt;br /&gt;
     echo &amp;quot;Your environment is misconfigured, you probably need to &#039;unset LD_LIBRARY_PATH&#039;&amp;quot;&lt;br /&gt;
     echo &amp;quot;but please check why this was set in the first place and that it&#039;s safe to unset.&amp;quot;&lt;br /&gt;
     echo &amp;quot;The SDK will not operate correctly in most cases when LD_LIBRARY_PATH is set.&amp;quot;&lt;br /&gt;
     echo &amp;quot;For more references see:&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://xahlee.info/UnixResource_dir/_/ldpath.html&amp;quot;&lt;br /&gt;
     return 1&lt;br /&gt;
 fi&lt;br /&gt;
 export SDKTARGETSYSROOT=/opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export PATH=/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/../x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-musl:$PATH&lt;br /&gt;
 export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT&lt;br /&gt;
 export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig:$SDKTARGETSYSROOT/usr/share/pkgconfig&lt;br /&gt;
 export CONFIG_SITE=/opt/dhlinux/nodistro.0/site-config-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export OECORE_NATIVE_SYSROOT=&amp;quot;/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_SYSROOT=&amp;quot;$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_ACLOCAL_OPTS=&amp;quot;-I /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/share/aclocal&amp;quot;&lt;br /&gt;
 export OECORE_BASELIB=&amp;quot;lib&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_ARCH=&amp;quot;arm&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_OS=&amp;quot;linux-gnueabi&amp;quot;&lt;br /&gt;
 unset command_not_found_handle&lt;br /&gt;
 export CC=&amp;quot;arm-dhlinux-linux-gnueabi-gcc  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CXX=&amp;quot;arm-dhlinux-linux-gnueabi-g++  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CPP=&amp;quot;arm-dhlinux-linux-gnueabi-gcc -E  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export AS=&amp;quot;arm-dhlinux-linux-gnueabi-as &amp;quot;&lt;br /&gt;
 export LD=&amp;quot;arm-dhlinux-linux-gnueabi-ld  --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export GDB=arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
 export STRIP=arm-dhlinux-linux-gnueabi-strip&lt;br /&gt;
 export RANLIB=arm-dhlinux-linux-gnueabi-ranlib&lt;br /&gt;
 export OBJCOPY=arm-dhlinux-linux-gnueabi-objcopy&lt;br /&gt;
 export OBJDUMP=arm-dhlinux-linux-gnueabi-objdump&lt;br /&gt;
 export READELF=arm-dhlinux-linux-gnueabi-readelf&lt;br /&gt;
 export AR=arm-dhlinux-linux-gnueabi-ar&lt;br /&gt;
 export NM=arm-dhlinux-linux-gnueabi-nm&lt;br /&gt;
 export M4=m4&lt;br /&gt;
 export TARGET_PREFIX=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 export CONFIGURE_FLAGS=&amp;quot;--target=arm-dhlinux-linux-gnueabi --host=arm-dhlinux-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export CXXFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export LDFLAGS=&amp;quot;-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed&amp;quot;&lt;br /&gt;
 export CPPFLAGS=&amp;quot;&amp;quot;&lt;br /&gt;
 export KCFLAGS=&amp;quot;--sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_DISTRO_VERSION=&amp;quot;0.0.1&amp;quot;&lt;br /&gt;
 export OECORE_SDK_VERSION=&amp;quot;nodistro.0&amp;quot;&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 # Append environment subscripts&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_TARGET_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do &lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_NATIVE_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do&lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/cmake.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OE_CMAKE_TOOLCHAIN_FILE=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake&amp;quot;&lt;br /&gt;
 export OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX=&amp;quot;`echo $OECORE_BASELIB | sed -e s/lib//`&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/openssl.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH&lt;br /&gt;
 export OE_QMAKE_CFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXXFLAGS=&amp;quot;$CXXFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LDFLAGS=&amp;quot;$LDFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CC=&amp;quot;$CC&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXX=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LINK=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_AR=$AR&lt;br /&gt;
 export OE_QMAKE_STRIP=$STRIP&lt;br /&gt;
 export QT_CONF_PATH=$OECORE_NATIVE_SYSROOT/usr/bin/qt.conf&lt;br /&gt;
 export OE_QMAKE_LIBDIR_QT=`qmake -query QT_INSTALL_LIBS`&lt;br /&gt;
 export OE_QMAKE_INCDIR_QT=`qmake -query QT_INSTALL_HEADERS`&lt;br /&gt;
 export OE_QMAKE_MOC=$OECORE_NATIVE_SYSROOT/usr/bin/moc&lt;br /&gt;
 export OE_QMAKE_UIC=$OECORE_NATIVE_SYSROOT/usr/bin/uic&lt;br /&gt;
 export OE_QMAKE_RCC=$OECORE_NATIVE_SYSROOT/usr/bin/rcc&lt;br /&gt;
 export OE_QMAKE_QDBUSCPP2XML=$OECORE_NATIVE_SYSROOT/usr/bin/qdbuscpp2xml&lt;br /&gt;
 export OE_QMAKE_QDBUSXML2CPP=$OECORE_NATIVE_SYSROOT/usr/bin/qdbusxml2cpp&lt;br /&gt;
 export OE_QMAKE_QT_CONFIG=`qmake -query QT_INSTALL_LIBS`/mkspecs/qconfig.pri&lt;br /&gt;
 export OE_QMAKE_PATH_HOST_BINS=$OECORE_NATIVE_SYSROOT/usr/bin&lt;br /&gt;
 export QMAKESPEC=`qmake -query QT_INSTALL_LIBS`/mkspecs/linux-oe-g++&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/qt5.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OPENSSL_CONF=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/lib/ssl-1.1/openssl.cnf&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This results in the following environment configuration:&lt;br /&gt;
&lt;br /&gt;
[[File:Qtcreator-set-environment.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
If there is a warning/error shown, please click apply between each step&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2972</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2972"/>
		<updated>2020-06-30T14:22:06Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: little corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a buildsystem to generate root-filesystems for embedded devices. This is only a short explanation what ELBE is and a brief tutorial for using ELBE, &#039;&#039;&#039;please go to the [https://elbe-rfs.org/docs/sphinx/index.html official documentation of ELBE] for a detailed documentation&#039;&#039;&#039;. This article was made when version 12.4 was the current version of ELBE.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE Build schema.png|frame|none|Basic structure of ELBE building a root-filesystem (as of version 12.4). Orange are inputs for ELBE, green are things that the result of ELBE. &amp;quot;&amp;lt;tt&amp;gt;buildenv.img&amp;lt;/tt&amp;gt;&amp;quot; is a special case because the initvm is created at &amp;quot;elbe initvm create&amp;quot; and it is reused by &amp;quot;elbe initvm submit&amp;quot;. Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview]]&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software in form of Debian packages (.deb). Usually the official Debian repositories are used, but it is possible to use custom repositories to get special packages into the root-filesystem. Resulting root-filesystems are basicly customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
Xml-files can be appended with a bzip2 compressed archive. At the end of the buildprocess, the content of the archive will be extracted into the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
The form of the finished root-filesystem is customizeable. The following variants are possible:&lt;br /&gt;
* Tarball: The root-filesystem can be packed as a tarball (usually compressed with gzip). The tarball can be extracted onto an empty partition or can be used for the [[DHCOM Update Mechanism]].&lt;br /&gt;
* Disk-/SD-card-image: An image with full partition table can be created. This can be a image of a hard disk or a sd-card. The size, type, label and mountpoint of each partition can be customized via the xml-file.&lt;br /&gt;
* UBIFS-Image: ELBE can output images for &amp;quot;Unsorted Block Image&amp;quot;-devices (UBI). These are needed if you want to use the NAND-Flash of our DHSOM modules for the root-filesystem. More information about that type of filesystem can be found under [[UBI/UBIFS Filesystem]].&lt;br /&gt;
As an addition ELBE is able to create a cdrom image which can be used as a input to reconstruct the exact root-filesystem that was created.&lt;br /&gt;
&lt;br /&gt;
ELBE can also create a Software Development Kit (SDK) for the built root-filesystem. The SDK contains the toolchain with the cross compiler and other tools and the corresponding sysroot with needed headers. These can be used to create software for the specific root-filesystem. The SDK is very similar to Yocto&#039;s Standard-SDK and can be used in the same way. An explanation how to use the SDK with some IDEs/buildsystems can be found here: &#039;&#039;Link following&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to install ELBE:&lt;br /&gt;
&lt;br /&gt;
===Debian Package===&lt;br /&gt;
&lt;br /&gt;
The developers of ELBE have their own package repository which can be used to install ELBE.&lt;br /&gt;
&lt;br /&gt;
To add the repository to the &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; directory and install the public key for the repo:&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &#039;deb http://debian.linutronix.de/elbe buster main&#039; &amp;gt;&amp;gt; /etc/apt/sources.list.d/elbe.list&lt;br /&gt;
 wget http://debian.linutronix.de/elbe/elbe-repo.pub &amp;amp;&amp;amp; apt-key add elbe-repo.pub&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can install ELBE with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt update&lt;br /&gt;
 apt install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cloning the git repository of ELBE===&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to clone the git repository of ELBE. To do this the following packages have to be installed on the system:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python python-debian python-mako python-lxml python-apt python-gpg python-suds python-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can clone the repo with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;git clone https://github.com/Linutronix/elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
The ELBE buildsystem consists of the program elbe which is implemented in Python. Similar to git, it can be called with several sub commands. If you installed ELBE through the Debian package, the program is inside your PATH environment and can be called by &amp;quot;&amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;&amp;quot;, else you have to call it by the complete path. The most important commands are:&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm create --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command initializes a new initvm in the directory &amp;quot;/example&amp;quot; and builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; . This command can only be used if there isn&#039;t any initvm defined yet. If you cloned ELBE from git, you can add the switch &amp;quot;&amp;lt;tt&amp;gt;--devel&amp;lt;/tt&amp;gt;&amp;quot;, then ELBE copies the local ELBE version into the initvm (instead of downloading ELBE from their repository). &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm submit --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; and reuses an existing initvm at the directory &amp;quot;/example&amp;quot;. &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive example.xml example-archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command appends the xml-file &amp;quot;example.xml&amp;quot; with the archive &amp;quot;example-archive.tar.bz2&amp;quot;. The binary content of the archive is stored in BASE64 encoding inside a xml tag.&lt;br /&gt;
&lt;br /&gt;
If you add  &amp;lt;tt&amp;gt;--build-sdk&amp;lt;/tt&amp;gt; at the &amp;quot;&amp;lt;tt&amp;gt;intvm create/submit&amp;lt;/tt&amp;gt;&amp;quot;-command then as an addition to creating the root-filesystem, the SDK (for developing software for the root-filesystem) is created too.&lt;br /&gt;
&lt;br /&gt;
==XML-Example==&lt;br /&gt;
&lt;br /&gt;
This is a simple example for a xml file. If you start the build process a root-filesystem for a device of the &amp;quot;ARM EABI with hard float&amp;quot;-architecture (usually ARMv7) based on Debian 10 is built. In extra to the main mirror, the security and buster-updates mirror is also configured, so that the root-filesystem can get security updates. After the package installation is finished, the cached Debian package files are removed to slim down the image. At the end, the finished root-filesystem is packed into gzip-compressed tarball &amp;quot;&amp;lt;tt&amp;gt;rootfs.tar.gz&amp;lt;/tt&amp;gt;&amp;quot;. Note that the resulting root-filesystem has no kernel, bootloader and device tree, these have to be supplied externally. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1.0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ftp.de.debian.org&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;buster&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rootfs.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/cache/apt/archives/*.deb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;curl&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;vim&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;iperf3&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;i2c-tools&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Official documentation of the current ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Using_Yocto/ELBE_SDK_for_application_development&amp;diff=2971</id>
		<title>Using Yocto/ELBE SDK for application development</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Using_Yocto/ELBE_SDK_for_application_development&amp;diff=2971"/>
		<updated>2020-06-29T14:42:28Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Reworked the structure of the SDK + minor error correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&amp;lt;big&amp;gt;This site is under construction!&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Root filesystems made by Yocto and ELBE can each come with a SDK to build applications for the rootFS.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The following packages are required for the installation of the SDK:&lt;br /&gt;
* xz-utils&lt;br /&gt;
* file&lt;br /&gt;
* patchelf&lt;br /&gt;
&lt;br /&gt;
Run the setup-script (e.g. setup-elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0.sh) as root to start the installation.&lt;br /&gt;
&lt;br /&gt;
== Using the SDK ==&lt;br /&gt;
&lt;br /&gt;
The main structure between the SDKs of Yocto and ELBE is very similar, these consist of two parts:&lt;br /&gt;
* A folder &amp;quot;sysroots&amp;quot; with two subfolders:&lt;br /&gt;
** In one of the folders are the programms for the development host for using the SDK (e.g. compiler, debugger, ...). In Yocto this folder has the name of the development host archictecture and &amp;quot;sdk&amp;quot; in it. In ELBE this folder is usually called &amp;quot;host&amp;quot;.&lt;br /&gt;
** The second folder contains headers and libraries needed by the linker to build applications for the rootFS. In Yocto this folder has the name of the target archictecture in it. In ELBE this folder is usually called &amp;quot;target&amp;quot;.&lt;br /&gt;
* A file with environment variables to setup the build environment (sourcing this file sets variables like ${CC} or ${LD}). The name of the file usually starts with &amp;quot;environment-setup-&amp;quot;&lt;br /&gt;
The default installation folder varies between the two tools: Both do install into &amp;quot;/opt/&amp;quot; but Yocto uses two subfolders (one for the distribution name, the other for the version), while ELBE uses only one subfolder.&lt;br /&gt;
&lt;br /&gt;
Following are instructions how to use the SDK with different build-systems and IDEs (All examples using an ELBE toolchain installed at &amp;quot;&amp;lt;tt&amp;gt;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/tt&amp;gt;&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
=== Makefiles ===&lt;br /&gt;
&lt;br /&gt;
Open a shell and source the file with the environment variables:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use make to build applications in this shell session.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# make&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use another toolchain, you have to start a new shell session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do not overwrite variables which were set by SDK in the makefile (or call make with &#039;-e&#039; to discard variables set in the makefile).&lt;br /&gt;
&lt;br /&gt;
=== CMake ===&lt;br /&gt;
&lt;br /&gt;
Setting up CMake to use the toolchain in the SDK is not much different than makefiles:&lt;br /&gt;
&lt;br /&gt;
At first source the file with the environment variables inside a shell:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, for the remainder of this shell session, you can use CMake with this SDK:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# cd build&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;/build# cmake ..&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;/build# cd ..&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;# cmake --build build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use another toolchain, you have to start a new shell session.&lt;br /&gt;
&lt;br /&gt;
=== Qt-Creator ===&lt;br /&gt;
&lt;br /&gt;
Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
Now open the &amp;quot;Options&amp;quot;-window (Tools -&amp;gt; Options).&lt;br /&gt;
&lt;br /&gt;
In the section &amp;quot;Build &amp;amp; Run&amp;quot; add in the &amp;quot;Compilers&amp;quot;-tab new compilers for C and C++ (Add -&amp;gt; GCC --&amp;gt; C / C++). Set the compiler path to the fitting executable in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorGCC.png|none|Example configuration for the compiler of the SDK]]&lt;br /&gt;
&lt;br /&gt;
If the toolchain in the SDK includes Qt, switch to the &amp;quot;Qt Versions&amp;quot;-tab and add the qmake executable of the toolchain (usually in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/qt5/qmake&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
For the debugger, change to the &amp;quot;Debuggers&amp;quot;-tab and add the gdb-multiarch executable of the toolchain (usually in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/gdb-multiarch&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorGDB.png]]&lt;br /&gt;
&lt;br /&gt;
If you want to deploy built software directly onto the embedded device, then change to the section &amp;quot;Devices&amp;quot; and add a new device. Select &amp;quot;Generic Linux Device&amp;quot; and set the IP-address, username and password.&lt;br /&gt;
&lt;br /&gt;
[[File:QTCreatorDevice.png]]&lt;br /&gt;
&lt;br /&gt;
Now change back to the section &amp;quot;Build &amp;amp; Run&amp;quot;. In the tab &amp;quot;Kits&amp;quot; you have to add a new Kit for the toolchain. Set the compilers, debuggers, Qt and the device to these, which you have defined at the preceding steps. If the SDK does not include Qt you have to set Qt to &amp;quot;None&amp;quot; (like in the example).&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorKit.png]]&lt;br /&gt;
&lt;br /&gt;
Now you have to define the environment. Set the environment for the kit according to the environment setup file (but remove the &amp;quot;export&amp;quot; statements). If there are files inside the folders &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/environment-setup.d/&amp;quot; or &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/target/environment-setup.d/&amp;quot;, any environment variables which are set in those have also be included.&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorEnv.png|1311px]]&lt;br /&gt;
&lt;br /&gt;
Now any project in Qt Creator can use the toolchain of the SDK if the kit is selected for the project. If you want to use another SDK-toolchain, you can switch the used kit for the project.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
&lt;br /&gt;
To use Eclipse with the SDK you have to start a shell and source the environment setup file and then open eclipse through that shell (note that Eclipse has to be in your PATH, when starting it like in the example):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;user@machine:~# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&lt;br /&gt;
 user@machine:~# eclipse&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When creating a new Eclipse project, use &amp;quot;Linux GCC&amp;quot; as the toolchain, the additional settings when selecting &amp;quot;Cross GCC&amp;quot; are conflicting with the environment of the SDK.&lt;br /&gt;
&lt;br /&gt;
After creating the project open the project settings and go to the section &amp;quot;C/C++ Build -&amp;gt; Settings&amp;quot;. Now go to &amp;quot;GCC C Compiler&amp;quot; and set the &amp;quot;Command&amp;quot; to &amp;quot;${CC}&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseGCC.png]]&lt;br /&gt;
&lt;br /&gt;
Now go to &amp;quot;GCC C Linker&amp;quot;, change the &amp;quot;Command&amp;quot; to &amp;quot;${CC}&amp;quot; and add at &amp;quot;Command line pattern&amp;quot; between &amp;quot;${COMMAND}&amp;quot; and &amp;quot;${FLAGS}&amp;quot; &amp;quot;${LDFLAGS}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseLinker.png]]&lt;br /&gt;
&lt;br /&gt;
Now go to &amp;quot;GCC Assembler&amp;quot; and change the &amp;quot;Command&amp;quot; to &amp;quot;${AS}&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseAs.png]]&lt;br /&gt;
&lt;br /&gt;
The toolchain of the SDK con now be used by Eclipse as long Eclipse is not closed. If you want to use a toolchain of another SDK you have to close Eclipse and source the environment setup of the other SDK and start Eclipse from that shell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;&amp;quot;&amp;gt;Linking against libraries of the SDK&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
If you want to link against libraries of the SDK change to subitem &amp;quot;Libraries&amp;quot; of the &amp;quot;GCC C Linker&amp;quot; settings. There you can add the name auf the library (without the prefix &amp;quot;lib&amp;quot;). The screenshot of the example shows the mosquitto library (libmosquitto) for sending and receiving MQTT messages.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseLib.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Visual Studio Code===&lt;br /&gt;
&lt;br /&gt;
If you want to develop in C/C++ you have to install the extension &amp;quot;C/C++&amp;quot; inside Visual Studio Code.&lt;br /&gt;
&lt;br /&gt;
To use Visual Studio Code with the SDK you have to start a shell and source the environment setup file and then open Visual Studio Code through that shell:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;user@machine:~# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&lt;br /&gt;
 user@machine:~# code&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open a folder as workspace where you have your code.&lt;br /&gt;
&lt;br /&gt;
When you want to build your program select &amp;quot;Terminal -&amp;gt; Configure Default Build Task&amp;quot; and choose your appropiate action with gcc. The file &amp;quot;tasks.json&amp;quot; is now generated. After that change the command to the appropiate command (e.g. to &amp;quot;${CC}&amp;quot; if you want to directly use the compiler of the toolchain, or if you use a makefile change it to &amp;quot;make&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File:VSCodeTasks.png]]&lt;br /&gt;
&lt;br /&gt;
To configure Intellisense for syntax highlighting and finding the headers of libraries, press CTRL + SHIFT + P and select &amp;quot;C/C++: Edit Configurations (JSON)&amp;quot;. The file &amp;quot;c_cpp_properties.json&amp;quot; is now generated for this workspace. Here add &amp;quot;${SDKTARGETSYSROOT}/**&amp;quot; to the includePath, set the compilerPath to &amp;quot;${CC}&amp;quot; and set the intelliSenseMode to &amp;quot;gcc-arm&amp;quot;. Now save the file and reload the workspace, then Intellisense should find the headers of the SDK.&lt;br /&gt;
&lt;br /&gt;
[[File:VSCodeIntellisense.png]]&lt;br /&gt;
&lt;br /&gt;
To run the build, you have to select &amp;quot;Terminal -&amp;gt; Run Build Task&amp;quot; from the menu.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://www.yoctoproject.org/docs/3.1/sdk-manual/sdk-manual.html Yocto SDK documentation]&lt;br /&gt;
* [https://www.ics.com/blog/configuring-qt-creator-yocto-development Blog on configuring Qt Creator for Yocto SDK]&lt;br /&gt;
* [https://wiki.phytec.com/productinfo/how-to-articles/how-to-set-up-yocto-plugin-for-eclipse How-to for using the Yocto SDK with Eclipse] - NOTE: The Yocto plugin for Eclipse mentioned at this site is no longer maintained (in 2020) and is not available on recent versions of Eclipse!&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2970</id>
		<title>Add Yocto SDK with QT5 to QT Creator</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Add_Yocto_SDK_with_QT5_to_QT_Creator&amp;diff=2970"/>
		<updated>2020-06-26T11:16:56Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following instructions are based on &#039;&#039;&#039;DHCOM STM32MP1&#039;&#039;&#039; computer on module and Yocto version &amp;quot;zeus&amp;quot;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prepairing your virtual machine ==&lt;br /&gt;
&lt;br /&gt;
Get the [[Virtual Machine for Application Development]].&lt;br /&gt;
&lt;br /&gt;
Install the following package:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install qtcreator qt5default&lt;br /&gt;
&lt;br /&gt;
== Download and install the SDK package ==&lt;br /&gt;
&lt;br /&gt;
Get the [[media:Dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.zip|QT5 SDK for STM32mp1]]&lt;br /&gt;
&lt;br /&gt;
Unpack the archive and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 $ sh ./dhlinux-glibc-x86_64-meta-toolchain-qt5-cortexa7t2hf-neon-vfpv4-toolchain-nodistro.0.sh&lt;br /&gt;
&lt;br /&gt;
Choose the installation directory (default: /opt/dhlinux/nodistro.0/).&lt;br /&gt;
&lt;br /&gt;
The toolchain is now installed to your system.&lt;br /&gt;
&lt;br /&gt;
== Configure Qt Creator ==&lt;br /&gt;
&lt;br /&gt;
Run QT Creator&lt;br /&gt;
&lt;br /&gt;
In Qt Creator go to Tools &amp;gt; Options &amp;gt; Devices and add your Wandboard as a generic linux device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-device.jpg|550px]]&lt;br /&gt;
&lt;br /&gt;
go to Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run and:&lt;br /&gt;
&lt;br /&gt;
Add a new c++ compiler. Select your compiler: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-g++&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-compiler.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new debugger. Select your debugger: /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi/arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-debugger.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add your Qt version by selecting the qmake located in /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/qmake&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-qt-version.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
Add a new kit selecting your new Qt5 version and compiler and setting the sysroot to /opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi and leave the Qt mkspec empty.&lt;br /&gt;
Then select your device&lt;br /&gt;
&lt;br /&gt;
[[Image:Qtcreator-add-kit.jpg|850px]]&lt;br /&gt;
&lt;br /&gt;
As the final point you have to set the environment of the kit: Select &amp;quot;Change&amp;quot; at &amp;quot;Environment:&amp;quot;. Now a window for editing text opens. Copy all environment variables (all lines with &amp;quot;export&amp;quot;-statement) from the environment setup script /opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi and its imported files (at the end of the script) into the window. Each line should contain one environment variable assignment and &amp;quot;export&amp;quot; has to be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;&amp;quot;&amp;gt;Examlpe for setting the environment variables&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi also includes the files /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/cmake.sh , /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/openssl.sh and /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/qt5.sh . The files have the following content:&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/environment-setup-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;# Check for LD_LIBRARY_PATH being set, which can break SDK and generally is a bad practice&lt;br /&gt;
 # http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&lt;br /&gt;
 # http://xahlee.info/UnixResource_dir/_/ldpath.html&lt;br /&gt;
 # Only disable this check if you are absolutely know what you are doing!&lt;br /&gt;
 if [ ! -z &amp;quot;$LD_LIBRARY_PATH&amp;quot; ]; then&lt;br /&gt;
     echo &amp;quot;Your environment is misconfigured, you probably need to &#039;unset LD_LIBRARY_PATH&#039;&amp;quot;&lt;br /&gt;
     echo &amp;quot;but please check why this was set in the first place and that it&#039;s safe to unset.&amp;quot;&lt;br /&gt;
     echo &amp;quot;The SDK will not operate correctly in most cases when LD_LIBRARY_PATH is set.&amp;quot;&lt;br /&gt;
     echo &amp;quot;For more references see:&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80&amp;quot;&lt;br /&gt;
     echo &amp;quot;  http://xahlee.info/UnixResource_dir/_/ldpath.html&amp;quot;&lt;br /&gt;
     return 1&lt;br /&gt;
 fi&lt;br /&gt;
 export SDKTARGETSYSROOT=/opt/dhlinux/nodistro.0/sysroots/cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export PATH=/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/sbin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/../x86_64-oesdk-linux/bin:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-gnueabi:/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/bin/arm-dhlinux-linux-musl:$PATH&lt;br /&gt;
 export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT&lt;br /&gt;
 export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig:$SDKTARGETSYSROOT/usr/share/pkgconfig&lt;br /&gt;
 export CONFIG_SITE=/opt/dhlinux/nodistro.0/site-config-cortexa7t2hf-neon-vfpv4-dhlinux-linux-gnueabi&lt;br /&gt;
 export OECORE_NATIVE_SYSROOT=&amp;quot;/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_SYSROOT=&amp;quot;$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_ACLOCAL_OPTS=&amp;quot;-I /opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/usr/share/aclocal&amp;quot;&lt;br /&gt;
 export OECORE_BASELIB=&amp;quot;lib&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_ARCH=&amp;quot;arm&amp;quot;&lt;br /&gt;
 export OECORE_TARGET_OS=&amp;quot;linux-gnueabi&amp;quot;&lt;br /&gt;
 unset command_not_found_handle&lt;br /&gt;
 export CC=&amp;quot;arm-dhlinux-linux-gnueabi-gcc  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CXX=&amp;quot;arm-dhlinux-linux-gnueabi-g++  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CPP=&amp;quot;arm-dhlinux-linux-gnueabi-gcc -E  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export AS=&amp;quot;arm-dhlinux-linux-gnueabi-as &amp;quot;&lt;br /&gt;
 export LD=&amp;quot;arm-dhlinux-linux-gnueabi-ld  --sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export GDB=arm-dhlinux-linux-gnueabi-gdb&lt;br /&gt;
 export STRIP=arm-dhlinux-linux-gnueabi-strip&lt;br /&gt;
 export RANLIB=arm-dhlinux-linux-gnueabi-ranlib&lt;br /&gt;
 export OBJCOPY=arm-dhlinux-linux-gnueabi-objcopy&lt;br /&gt;
 export OBJDUMP=arm-dhlinux-linux-gnueabi-objdump&lt;br /&gt;
 export READELF=arm-dhlinux-linux-gnueabi-readelf&lt;br /&gt;
 export AR=arm-dhlinux-linux-gnueabi-ar&lt;br /&gt;
 export NM=arm-dhlinux-linux-gnueabi-nm&lt;br /&gt;
 export M4=m4&lt;br /&gt;
 export TARGET_PREFIX=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 export CONFIGURE_FLAGS=&amp;quot;--target=arm-dhlinux-linux-gnueabi --host=arm-dhlinux-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export CFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export CXXFLAGS=&amp;quot; -O2 -pipe -g -feliminate-unused-debug-types &amp;quot;&lt;br /&gt;
 export LDFLAGS=&amp;quot;-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed&amp;quot;&lt;br /&gt;
 export CPPFLAGS=&amp;quot;&amp;quot;&lt;br /&gt;
 export KCFLAGS=&amp;quot;--sysroot=$SDKTARGETSYSROOT&amp;quot;&lt;br /&gt;
 export OECORE_DISTRO_VERSION=&amp;quot;0.0.1&amp;quot;&lt;br /&gt;
 export OECORE_SDK_VERSION=&amp;quot;nodistro.0&amp;quot;&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=arm-dhlinux-linux-gnueabi-&lt;br /&gt;
 # Append environment subscripts&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_TARGET_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do &lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d &amp;quot;$OECORE_NATIVE_SYSROOT/environment-setup.d&amp;quot; ]; then&lt;br /&gt;
     for envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do&lt;br /&gt;
            . $envfile&lt;br /&gt;
     done&lt;br /&gt;
 fi&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/cmake.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OE_CMAKE_TOOLCHAIN_FILE=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake&amp;quot;&lt;br /&gt;
 export OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX=&amp;quot;`echo $OECORE_BASELIB | sed -e s/lib//`&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/openssl.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH&lt;br /&gt;
 export OE_QMAKE_CFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXXFLAGS=&amp;quot;$CXXFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LDFLAGS=&amp;quot;$LDFLAGS&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CC=&amp;quot;$CC&amp;quot;&lt;br /&gt;
 export OE_QMAKE_CXX=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_LINK=&amp;quot;$CXX&amp;quot;&lt;br /&gt;
 export OE_QMAKE_AR=$AR&lt;br /&gt;
 export OE_QMAKE_STRIP=$STRIP&lt;br /&gt;
 export QT_CONF_PATH=$OECORE_NATIVE_SYSROOT/usr/bin/qt.conf&lt;br /&gt;
 export OE_QMAKE_LIBDIR_QT=`qmake -query QT_INSTALL_LIBS`&lt;br /&gt;
 export OE_QMAKE_INCDIR_QT=`qmake -query QT_INSTALL_HEADERS`&lt;br /&gt;
 export OE_QMAKE_MOC=$OECORE_NATIVE_SYSROOT/usr/bin/moc&lt;br /&gt;
 export OE_QMAKE_UIC=$OECORE_NATIVE_SYSROOT/usr/bin/uic&lt;br /&gt;
 export OE_QMAKE_RCC=$OECORE_NATIVE_SYSROOT/usr/bin/rcc&lt;br /&gt;
 export OE_QMAKE_QDBUSCPP2XML=$OECORE_NATIVE_SYSROOT/usr/bin/qdbuscpp2xml&lt;br /&gt;
 export OE_QMAKE_QDBUSXML2CPP=$OECORE_NATIVE_SYSROOT/usr/bin/qdbusxml2cpp&lt;br /&gt;
 export OE_QMAKE_QT_CONFIG=`qmake -query QT_INSTALL_LIBS`/mkspecs/qconfig.pri&lt;br /&gt;
 export OE_QMAKE_PATH_HOST_BINS=$OECORE_NATIVE_SYSROOT/usr/bin&lt;br /&gt;
 export QMAKESPEC=`qmake -query QT_INSTALL_LIBS`/mkspecs/linux-oe-g++&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/opt/dhlinux/nodistro.0/sysroots/x86_64-oesdk-linux/environment-setup.d/qt5.sh:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export OPENSSL_CONF=&amp;quot;$OECORE_NATIVE_SYSROOT/usr/lib/ssl-1.1/openssl.cnf&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This results in the following environment configuration:&lt;br /&gt;
&lt;br /&gt;
[[File:Qtcreator-set-environment.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there is a warning/error shown, please click apply between each step&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=File:Qtcreator-set-environment.png&amp;diff=2969</id>
		<title>File:Qtcreator-set-environment.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=File:Qtcreator-set-environment.png&amp;diff=2969"/>
		<updated>2020-06-26T07:24:37Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example configuration of the environment of using the Yocto toolchain with Qt 5 in Qt Creator&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=Using_Yocto/ELBE_SDK_for_application_development&amp;diff=2968</id>
		<title>Using Yocto/ELBE SDK for application development</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=Using_Yocto/ELBE_SDK_for_application_development&amp;diff=2968"/>
		<updated>2020-06-26T05:42:26Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: /* Qt-Creator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&amp;lt;big&amp;gt;This site is under construction!&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Root filesystems made by Yocto and ELBE can come with a SDK to build applications for the rootFS.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
To install the SDK the following packets have to be installed on the machine:&lt;br /&gt;
* xz-utils&lt;br /&gt;
* file&lt;br /&gt;
* patchelf&lt;br /&gt;
&lt;br /&gt;
Run the setup-script (e.g. setup-elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0.sh) as root to start the installation.&lt;br /&gt;
&lt;br /&gt;
== Using the SDK ==&lt;br /&gt;
&lt;br /&gt;
The SDK consists of two parts:&lt;br /&gt;
* A folder with two sysroots&lt;br /&gt;
** &amp;quot;host&amp;quot;: In this folder are the programms for the development host for using the SDK (e.g. compiler, debugger, ...).&lt;br /&gt;
** &amp;quot;target&amp;quot;: This sysroot contains headers and libraries needed by the linker to build applications for the rootFS.&lt;br /&gt;
* A file with environment variables to setup the build environment (sourcing this file sets variables like ${CC} or ${LD})&lt;br /&gt;
&lt;br /&gt;
Folowing are instructions how to use the SDK with different build-systems and IDEs (All examples using an ELBE toolchain installed at &amp;quot;&amp;lt;nowiki&amp;gt;opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/nowiki&amp;gt;&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
=== Makefiles ===&lt;br /&gt;
&lt;br /&gt;
Open a shell and source the file with the environment variables:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use make to build applications in this shell session.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# make&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use another toolchain, you have to start a new shell session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do not overwrite variables which were set by SDK in the makefile (or call make with &#039;-e&#039; to discard variables set in the makefile).&lt;br /&gt;
&lt;br /&gt;
=== CMake ===&lt;br /&gt;
&lt;br /&gt;
Setting up CMake to use the toolchain in the SDK is not much different than makefiles:&lt;br /&gt;
&lt;br /&gt;
At first source the file with the environment variables inside a shell:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, for the remainder of this shell session, you can use CMake with this SDK:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:/&amp;lt;projectdir&amp;gt;# cd build&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;/build# cmake ..&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;/build# cd ..&lt;br /&gt;
user@machine:/&amp;lt;projectdir&amp;gt;# cmake --build build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use another toolchain, you have to start a new shell session.&lt;br /&gt;
&lt;br /&gt;
=== Qt-Creator ===&lt;br /&gt;
&lt;br /&gt;
Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
Now open the &amp;quot;Options&amp;quot;-window (Tools -&amp;gt; Options).&lt;br /&gt;
&lt;br /&gt;
In the section &amp;quot;Build &amp;amp; Run&amp;quot; add in the &amp;quot;Compilers&amp;quot;-tab new compilers for C and C++ (Add -&amp;gt; GCC --&amp;gt; C / C++). Set the compiler path to the fitting executable in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorGCC.png|none|Example configuration for the compiler of the SDK]]&lt;br /&gt;
&lt;br /&gt;
If the toolchain in the SDK includes Qt, switch to the &amp;quot;Qt Versions&amp;quot;-tab and add the qmake executable of the toolchain (usually in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/qt5/qmake&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
For the debugger, change to the &amp;quot;Debuggers&amp;quot;-tab and add the gdb-multiarch executable of the toolchain (usually in &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/usr/bin/gdb-multiarch&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorGDB.png]]&lt;br /&gt;
&lt;br /&gt;
If you want to deploy built software directly onto the embedded device, then change to the section &amp;quot;Devices&amp;quot; and add a new device. Select &amp;quot;Generic Linux Device&amp;quot; and set the IP-address, username and password.&lt;br /&gt;
&lt;br /&gt;
[[File:QTCreatorDevice.png]]&lt;br /&gt;
&lt;br /&gt;
Now change back to the section &amp;quot;Build &amp;amp; Run&amp;quot;. In the tab &amp;quot;Kits&amp;quot; you have to add a new Kit for the toolchain. Set the compilers, debuggers, Qt and the device to these, which you have defined at the preceding steps. If the SDK does not include Qt you have to set Qt to &amp;quot;None&amp;quot; (like in the example).&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorKit.png]]&lt;br /&gt;
&lt;br /&gt;
Now you have to define the environment. Set the environment for the kit according to the environment setup file (but remove the &amp;quot;export&amp;quot; statements). If there are files inside the folders &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/host/environment-setup.d/&amp;quot; or &amp;quot;/opt/elbe-sdk-arm-linux-gnueabihf-dhcom-buster-1.0/sysroots/target/environment-setup.d/&amp;quot;, any environment variables which are set in those have also be included.&lt;br /&gt;
&lt;br /&gt;
[[File:QtCreatorEnv.png|1311px]]&lt;br /&gt;
&lt;br /&gt;
Now any project in Qt Creator can use the toolchain of the SDK if the kit is selected for the project. If you want to use another SDK-toolchain, you can switch the used kit for the project.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
&lt;br /&gt;
To use Eclipse with the SDK you have to start a shell and source the environment setup file and then open eclipse through that shell:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:~# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&lt;br /&gt;
user@machine:~# eclipse&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When creating a new Eclipse project, use &amp;quot;Linux GCC&amp;quot; as the toolchain, the variables set by the environment setup are enough.&lt;br /&gt;
&lt;br /&gt;
After creating the project open the project settings and go to the section &amp;quot;C/C++ Build -&amp;gt; Settings&amp;quot;. Now go to &amp;quot;GCC C Compiler&amp;quot; and set the &amp;quot;Command&amp;quot; to &amp;quot;${CC}&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseGCC.png]]&lt;br /&gt;
&lt;br /&gt;
Now go to &amp;quot;GCC C Linker&amp;quot;, change the &amp;quot;Command&amp;quot; to &amp;quot;${CC}&amp;quot; and add at &amp;quot;Command line pattern&amp;quot; between &amp;quot;${COMMAND}&amp;quot; and &amp;quot;${FLAGS}&amp;quot; &amp;quot;${LDFLAGS}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseLinker.png]]&lt;br /&gt;
&lt;br /&gt;
Now go to &amp;quot;GCC Assembler&amp;quot; and change the &amp;quot;Command&amp;quot; to &amp;quot;${AS}&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseAs.png]]&lt;br /&gt;
&lt;br /&gt;
The toolchain of the SDK con now be used by Eclipse as long Eclipse is not closed. If you want to a toolchain of another SDK you have to close Eclipse and source the environment setup of the other SDK and start Eclipse from that shell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold;&amp;quot;&amp;gt;Linking against libraries of the SDK&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
If you want to link against libraries of the SDK change to subitem &amp;quot;Libraries&amp;quot; of the &amp;quot;GCC C Linker&amp;quot; settings. There you can add the name auf the library (without the prefix &amp;quot;lib&amp;quot;). The screenshot of the example shows the mosquitto library (libmosquitto) for sending and receiving MQTT messages.&lt;br /&gt;
&lt;br /&gt;
[[File:EclipseLib.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Visual Studio Code===&lt;br /&gt;
&lt;br /&gt;
If you want to develop in C/C++ you have to install the extension &amp;quot;C/C++&amp;quot; inside Visual Studio Code.&lt;br /&gt;
&lt;br /&gt;
To use Visual Studio Code with the SDK you have to start a shell and source the environment setup file and then open Visual Studio Code through that shell:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@machine:~# source /opt/elbe-sdk-arm-linux-gnueabi-dhcom-buster-1.0/environment-setup-elbe-arm-linux-gnueabihf-dhcom-buster-1.0&lt;br /&gt;
user@machine:~# code&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open a folder as workspace where you have your code.&lt;br /&gt;
&lt;br /&gt;
When you want to build your program select &amp;quot;Terminal -&amp;gt; Configure Default Build Task&amp;quot; and choose your appropiate action with gcc. The file &amp;quot;tasks.json&amp;quot; is now generated. After that change the command to the appropiate command (e.g. to &amp;quot;${CC}&amp;quot; if you want to directly use the compiler of the toolchain, or if you use a makefile change it to &amp;quot;make&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File:VSCodeTasks.png]]&lt;br /&gt;
&lt;br /&gt;
To configure Intellisense for syntax highlighting and finding the headers of libraries, press CTRL + SHIFT + P and select &amp;quot;C/C++: Edit Configurations (JSON)&amp;quot;. The file &amp;quot;c_cpp_properties.json&amp;quot; is now generated for this workspace. Here add &amp;quot;${SDKTARGETSYSROOT}/**&amp;quot; to the includePath, set the compilerPath to &amp;quot;${CC}&amp;quot; and set the intelliSenseMode to &amp;quot;gcc-arm&amp;quot;. Now save the file and reload the workspace, then Intellisense should find the headers of the SDK.&lt;br /&gt;
&lt;br /&gt;
[[File:VSCodeIntellisense.png]]&lt;br /&gt;
&lt;br /&gt;
To run the build, you have to select &amp;quot;Terminal -&amp;gt; Run Build Task&amp;quot; from the menu.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://www.yoctoproject.org/docs/3.1/sdk-manual/sdk-manual.html Yocto SDK documentation]&lt;br /&gt;
* [https://www.ics.com/blog/configuring-qt-creator-yocto-development Blog on configuring Qt Creator for Yocto SDK]&lt;br /&gt;
* [https://wiki.phytec.com/productinfo/how-to-articles/how-to-set-up-yocto-plugin-for-eclipse How-to for using the Yocto SDK with Eclipse] - NOTE: The Yocto plugin for Eclipse mentioned at this site is no longer maintained (in 2020) and is not available on recent versions of Eclipse!&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=File:QTCreatorDevice.png&amp;diff=2967</id>
		<title>File:QTCreatorDevice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=File:QTCreatorDevice.png&amp;diff=2967"/>
		<updated>2020-06-26T05:42:03Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shows an example configuration to add a device to Qt Creator (here i.MX6)&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=DHSOM&amp;diff=2966</id>
		<title>DHSOM</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=DHSOM&amp;diff=2966"/>
		<updated>2020-06-25T14:51:05Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Changed the link to the Debian Users&amp;#039; Manual to the english version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width: 100%; color: #000000; border-spacing: 2px; border: 1px solid darkgray;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 25%; text-align: center;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 50%; text-align: center;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 25%; text-align: center;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | [[Image:DHSOM_DIN.jpg‎|400px|Computer On Module - DHCOM Standard]]&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | [[Image:LOGO_DH_electronics.jpg|180px|Computer On Module - DHCOM Standard]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 100%; color: #000000;&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;| &lt;br /&gt;
== System On Module ==&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:IM6Modul.png|100px|COM iMX6-D2|link=COM iMX6-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM iMX6-D2|DHCOM iMX6-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:DHCOM STM32MP1 Pers medres.jpg|100px|COM STM32MP1-D2|link=COM STM32MP1-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM STM32MP1-D2|DHCOM STM32MP1-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:DHCOR_STM32MP1_pers.jpg|100px|DHCOR STM32MP1|link=Avenger96]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[Avenger96|DHCOR STM32MP1-LG]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:IMX6ULLModul.png|100px|COM iMX6ULL-D2|link=COM iMX6ULL-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM iMX6ULL-D2|DHCOM iMX6ULL-D2&amp;lt;br/&amp;gt;DHCOR i.MX6ULL-LG (is soldered onto the module)]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:AM335xModul.png|100px|COM AM335-D2|link=COM AM335-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM AM335-D2|DHCOM AM335-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:COMAM35.png|100px|COM AM35-D2|link=COM AM35-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM AM35-D2|DHCOM AM35-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:COMiMX25.png|100px|COM iMX25-D2|link=COM iMX25-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM iMX25-D2|DHCOM iMX25-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:COMPXA270.png|100px|COM PXA270-D2|link=COM PXA270-D2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[[DHCOM PXA270-D2|DHCOM PXA270-D2]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
== Development Kit ==&lt;br /&gt;
{|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:PDK2.png|100px|PDK2|link=DHCOM Premium Developer Kit 2]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[https://www.dh-electronics.com/produkte/dhsom-system-on-modules/dh-pdk2/ DHCOM PDK2]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[PDK PLD Example Firmware]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[media:DOC_PDK2-Quick-Start-Guide-Linux_R01_2017-02-22.pdf|Quick Start Guide Linux]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== pico ITX ==&lt;br /&gt;
{|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:PicoITX_Front_medres.png|100px|picoITX|link=picoITX]]&lt;br /&gt;
|&lt;br /&gt;
*&#039;&#039;&#039;[https://www.dh-electronics.com/produkte/dhsom-system-on-modules/dh-picoitx2/ DHCOM picoITX2 Baseboard]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[media:DOC_DHpicoITX-Quick-Start-Guide-Linux_R01_2017-02-24.pdf|Quick Start Guide Linux]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware Development ==&lt;br /&gt;
*&#039;&#039;&#039;[[media:DOC_DHCOM-Design-Guide_R04_2018-06-28.pdf|DHCOM Design Guide]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Software Development ==&lt;br /&gt;
=== Linux ===&lt;br /&gt;
*&#039;&#039;&#039;[[Virtual Machine for Application Development]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[ELBE Overview| Embedded Linux Build Environment (ELBE)]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Yocto | Yocto]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Linux Kernel Features | Optional Linux Kernel Features ]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[UBI/UBIFS Filesystem|UBI/UBIFS Filesystem Basics]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== External Documentation ====&lt;br /&gt;
*  [https://www.debian.org/doc/user-manuals.en.html Debian Users&#039; Manual]&lt;br /&gt;
*  [https://debian-handbook.info/browse/stable/ Administrator&#039;s Handbook for Debian 8 Jessie]: A reference book presenting the Debian distribution, from initial installation to configuration of services. The administration and configuration chapters apply to our Debian based root filesystems.&lt;br /&gt;
* [http://doc.qt.io/qt-5/ Qt5 Documentation]&lt;br /&gt;
&amp;lt;!-- Inhalt hinzufügen&lt;br /&gt;
=== Windows Embedded Compact ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[FAQ_General |&amp;lt;span style=&amp;quot;color:black;&amp;quot;&amp;gt;FAQ&amp;lt;/span&amp;gt;]] ==&lt;br /&gt;
*&#039;&#039;&#039;[[FAQ_Get Started | Get Started]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[FAQ_General | General]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[FAQ_General#Bootloader | Bootloader]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[FAQ_General#Linux | Linux]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Series Manufacturing ==&lt;br /&gt;
* &#039;&#039;&#039;[[Ingredients of a System Image | Ingredients of a System Image ]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2965</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2965"/>
		<updated>2020-06-25T13:06:05Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a system to generate root-filesystems for embedded devices. This is only a short explanation what ELBE is and a brief tutorial for using ELBE, &#039;&#039;&#039;please go to the [https://elbe-rfs.org/docs/sphinx/index.html official documentation of ELBE] for a detailed documentation&#039;&#039;&#039;. This article was made when version 12.4 was the current version of ELBE.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE Build schema.png|frame|none|Basic structure of ELBE building a root-filesystem (as of version 12.4). Orange are inputs for ELBE, green are things that the result of ELBE. &amp;quot;&amp;lt;tt&amp;gt;buildenv.img&amp;lt;/tt&amp;gt;&amp;quot; is a special case because the initvm is created at &amp;quot;elbe initvm create&amp;quot; and it is reused by &amp;quot;elbe initvm submit&amp;quot;. Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview]]&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software in form of Debian packages (.deb). Usually the official Debian repositories are used, but it is possible to use custom repositories to get special packages into the root-filesystem. Resulting root-filesystems are basicly customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
Xml-files can be appended with a bzip2 compressed archive. At the end of the buildprocess, the content of the archive will be extracted into the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
The form of the finished root-filesystem is customizeable. The following variants are possible:&lt;br /&gt;
* Tarball: The root-filesystem can be packed as a tarball (usually compressed with gzip). The tarball can be extracted onto an empty partition.&lt;br /&gt;
* Disk-/SD-card-image: An image with full partition table can be created. This can be a image of a hard disk or a sd-card. The size, type, label and mountpoint of each partition can be customized via the xml-file.&lt;br /&gt;
* UBIFS-Image: ELBE can output images for &amp;quot;Unsorted Block Image&amp;quot;-devices (UBI). In the case of our DHSOM modules this can be raw NAND-Flash. More information about that type of filesystem can be found under [[UBI/UBIFS Filesystem]].&lt;br /&gt;
As an addition ELBE is able to create a cdrom image which can be used as a input to reconstruct the exact root-filesystem that was created.&lt;br /&gt;
&lt;br /&gt;
ELBE can also create a Software Development Kit (SDK) for the built root-filesystem. The SDK contains the toolchain with the cross compiler and other tools and the corresponding sysroot with needed headers. These can be used to create software for the spefific root-filesystem. The SDK is very similar to Yocto&#039;s Standard-SDK and can be used in the same way. An explanation how to use the SDK with some IDEs/buildsystems can be found here: &#039;&#039;Link following&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to install ELBE:&lt;br /&gt;
&lt;br /&gt;
===Debian Package===&lt;br /&gt;
&lt;br /&gt;
The developers of ELBE have their own package repository which can be used to install ELBE.&lt;br /&gt;
&lt;br /&gt;
To add the repository to the &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; directory and install the public key for the repo:&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &#039;deb http://debian.linutronix.de/elbe buster main&#039; &amp;gt;&amp;gt; /etc/apt/sources.list.d/elbe.list&lt;br /&gt;
 wget http://debian.linutronix.de/elbe/elbe-repo.pub &amp;amp;&amp;amp; apt-key add elbe-repo.pub&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can install ELBE with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt update&lt;br /&gt;
 apt install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cloning the git repository of ELBE===&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to clone the git repository of ELBE. To do this the following packages have to be installed on the system:&lt;br /&gt;
 &amp;lt;tt&amp;gt;apt install python python-debian python-mako python-lxml python-apt python-gpg python-suds python-libvirt qemu-utils qemu-kvm p7zip-full make libvirt-daemon libvirt-daemon-system libvirt-clients&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can clone the repo with:&lt;br /&gt;
 &amp;lt;tt&amp;gt;git clone https://github.com/Linutronix/elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: You have to add your user to the libvirt groups if you want to use ELBE without root:&lt;br /&gt;
 &amp;lt;tt&amp;gt;adduser &amp;lt;user&amp;gt; libvirt &amp;amp;&amp;amp; adduser &amp;lt;user&amp;gt; libvirt-qemu&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
The ELBE system consists of the program elbe which is implemented in Python. Similar to git, it can be called with several sub commands. If you installed ELBE through the Debian package, the program is inside your PATH environment and can be called by &amp;quot;&amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;&amp;quot;, else you have to call it by the complete path. The most important commands are:&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm create --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command initializes a new initvm in the directory &amp;quot;/example&amp;quot; and builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; . This command can only be used if there isn&#039;t any initvm defined yet. If you cloned ELBE from git, you can add the switch &amp;quot;&amp;lt;tt&amp;gt;--devel&amp;lt;/tt&amp;gt;&amp;quot;, then ELBE copies the local ELBE version into the initvm (instead of downloading ELBE from their repository). &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe initvm submit --directory /example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command builds a new root-filesystem based on &amp;quot;example.xml&amp;quot; and reuses an existing initvm at the directory &amp;quot;/example&amp;quot;. &lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive example.xml example-archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
This command appends the xml-file &amp;quot;example.xml&amp;quot; with the archive &amp;quot;example-archive.tar.bz2&amp;quot;. The binary content of the archive is stored in BASE64 encoding inside a xml tag.&lt;br /&gt;
&lt;br /&gt;
If you add  &amp;lt;tt&amp;gt;--build-sdk&amp;lt;/tt&amp;gt; at the &amp;quot;&amp;lt;tt&amp;gt;intvm create/submit&amp;lt;/tt&amp;gt;&amp;quot;-command then as an addition to creating the root-filesystem, the SDK (for developing software for the root-filesystem) is created too.&lt;br /&gt;
&lt;br /&gt;
==XML-Example==&lt;br /&gt;
&lt;br /&gt;
This is a simple example for a xml file. If you start the build process a root-filesystem for a device of the &amp;quot;ARM EABI with hard float&amp;quot;-architecture (usually ARMv7) based on Debian 10 is built. In extra to the main mirror, the security and buster-updates mirror is also configured, so that the root-filesystem can get security updates. After the package installation is finished, the cached Debian package files are removed to slim down the image. At the end, the finished root-filesystem is packed into gzip-compressed tarball &amp;quot;&amp;lt;tt&amp;gt;rootfs.tar.gz&amp;lt;/tt&amp;gt;&amp;quot;. Note that the resulting root-filesystem has no kernel, bootloader and device tree, these have to be supplied externally. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1.0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildtype&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ftp.de.debian.org&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://security.debian.org/debian-security buster/updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://ftp.de.debian.org/debian buster-updates main&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url_list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;buster&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armhf-example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rootfs.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/cache/apt/archives/*.deb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;curl&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;vim&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;iperf3&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;i2c-tools&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Official documentation of the current ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=File:ELBE_Build_schema.png&amp;diff=2964</id>
		<title>File:ELBE Build schema.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=File:ELBE_Build_schema.png&amp;diff=2964"/>
		<updated>2020-06-25T11:46:36Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: Pzimmermann uploaded a new version of File:ELBE Build schema.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic structure of ELBE building a root-filesystem (as of version 12.4). Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=File:ELBE_Build_schema.png&amp;diff=2963</id>
		<title>File:ELBE Build schema.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=File:ELBE_Build_schema.png&amp;diff=2963"/>
		<updated>2020-06-25T07:13:03Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic structure of ELBE building a root-filesystem (as of version 12.4). Loosely based on both diagrams at https://elbe-rfs.org/docs/sphinx/releases_v12.4/article-elbeoverview-en.html#overview&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
	<entry>
		<id>https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2962</id>
		<title>ELBE Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.dh-electronics.com/index.php?title=ELBE_Overview&amp;diff=2962"/>
		<updated>2020-06-24T14:40:30Z</updated>

		<summary type="html">&lt;p&gt;Pzimmermann: First part of rework done, the rework is currently inside a comment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;big&amp;gt;&#039;&#039;&#039;This site is being reworked at the moment!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELBE (Embedded Linux Build Environment) is a system to generate root-filesystems for embedded devices.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
ELBE uses a virtual machine to create root-filesystems, this VM is called &amp;quot;initvm&amp;quot;. At the first time of running ELBE the initvm has to be initialized (a complete automatic installation of Debian is made), subsequent runs of ELBE can reuse that initvm.&lt;br /&gt;
&lt;br /&gt;
Recepies what a built root-filesystem should contain are supplied in form of a xml-file. ELBE doesn&#039;t build the software for the root-filesystem, it does instead use pre-built software from the official Debian repository. Resulting root-filesystems are customized Debian installations, which can be maintained through Debian&#039;s tools like APT. This is the biggest difference of ELBE to other buildsystems like Yocto or Buildroot.&lt;br /&gt;
&lt;br /&gt;
It is possible to define &amp;quot;finetuning&amp;quot;-commands in the xml-file, which are executed when the creation of the root-filesystem is completed. With this it is possible to remove files, add additional users and much more ...&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* [https://elbe-rfs.org/ ELBE homepage]&lt;br /&gt;
* [https://elbe-rfs.org/docs/sphinx/index.html Documentation of the ELBE version]&lt;br /&gt;
* [https://github.com/Linutronix/elbe ELBE repository at Github] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Embedded Linux Build Environment (elbe) is a system to generate root-filesystems for embedded devices. For the latest documentation and version please have a look at [https://github.com/Linutronix/elbe https://github.com/Linutronix/elbe]. The following tutorial was made to get started with elbe 0.3.1 which was used to build debian &#039;&#039;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Notes ==&lt;br /&gt;
&lt;br /&gt;
Generally root-filesystem creation faces the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Creation of root-filesystem for a specific architecture.&lt;br /&gt;
* Generation of a development environment for the specific architecture.&lt;br /&gt;
&lt;br /&gt;
Trying to solve this via cross-compilation of the required packages, we face the following problems:&lt;br /&gt;
&lt;br /&gt;
* Many packages are not designed and tested for cross-compilation.&lt;br /&gt;
* Big projects consume a significant amount of time to cross compile.&lt;br /&gt;
* Dependencies are not resolved automatically. The Engineer is required to manually find out which package versions of dependencies are required.&lt;br /&gt;
* Changes and patches to the packages need to be updated to new version, this process makes an update a very time consuming process.&lt;br /&gt;
* One must make sure that the same toolchain is used in the development environment, and root-filesystem.&lt;br /&gt;
&lt;br /&gt;
Elbe takes a different approach at solving these Problems:&lt;br /&gt;
&lt;br /&gt;
* Standard Packages are not self compiled. We use the Debian distributions binary packages.&lt;br /&gt;
* Own applications are not cross compiled, but built natively on the target architecture in a virtual machine or emulator.&lt;br /&gt;
* The root-filesystem is a subset of of the debian system on the virtual development machine. This implicitly ensures, that the same toolchain is used on development machine and target.&lt;br /&gt;
* Updates, addition or package removal is done via debians package-management (apt), which also solves all the dependency problems.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Elbe is shipped as debian package. This package will pull the necessary dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &amp;lt;tt&amp;gt;/etc/apt/sources.list.d&amp;lt;/tt&amp;gt; appropriately and install it using the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;aptitude install elbe&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Elbe system consists of the Program &amp;lt;tt&amp;gt;elbe&amp;lt;/tt&amp;gt;, which is completely implemented in Python. Similar to git, it can be called with several sub commands. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe &amp;lt;command&amp;gt;&lt;br /&gt;
 elbe create --directory /scratch/example example.xml&lt;br /&gt;
 elbe chg_archive example.xml archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An elbe Project consist of an xml file, that describes the project. This description includes the kernel and initrd, which is used to boot the emulator. When creating a project, this kernel and initrd can be downloaded using the &#039;&#039;elbe dl_kernel&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Then we use the &#039;&#039;elbe create&#039;&#039; command to generate the project directory, which contains the virtual hard disk image and &#039;&#039;Makefile&#039;&#039; to create the buildimage and root file system. We change to the project directory, and run &#039;&#039;make&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This will start the root-filesystem generation process:&lt;br /&gt;
&lt;br /&gt;
* The stock debian installer initrd is modified by elbe, so that it doesn’t ask questions during install. And it hooks the image generation into the install process.&lt;br /&gt;
* emulator is run with the specified kernel and initrd.&lt;br /&gt;
* inside the emulator, Debian installer will install the distribution without asking questions.&lt;br /&gt;
* The final step of the installer is to start the image generation.&lt;br /&gt;
* Image generation creates a copy of the buildimage. (We have a set of modes for this copy)&lt;br /&gt;
* To this copy the fine-tuning commands are applied.&lt;br /&gt;
* And the archive is unpacked into the copy.&lt;br /&gt;
* According to what is specified in the xml file. The copy is then baked into a tar archive or filesystem image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This diagram illustrates the Process:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Process_Illustration.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Inside the emulator, the following happens:&lt;br /&gt;
&lt;br /&gt;
[[File:ELBE_Emulator_process.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example XML Files ===&lt;br /&gt;
&lt;br /&gt;
A root-filesystem-project is described via an xml file.&lt;br /&gt;
&lt;br /&gt;
Elbe ships with a set of example xml files.&lt;br /&gt;
&lt;br /&gt;
This xml file describes a simple system in the default full copy mode. The root filesystem is essentially identical to the build system, and it will be saved as &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;arm-example.xml&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ns0:RootFileSystem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This xml file is lacking the &amp;lt;tt&amp;gt;kernel&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; tags, which are necessary for a successful build.&lt;br /&gt;
&lt;br /&gt;
The following command will download these, and include them into the xml file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe dl_kernel example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the project directory from the xml file the following command is used:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe create --directory /scratch/example example.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project-directory must not exist before calling this command. It will contain several scripts, files and a Makefile, which controls the creation of the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Creation of build system ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change to the project directory and run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start the debian installer in the virtual machine, which will install the build system according to the xml file description. It also generates the archive &amp;lt;tt&amp;gt;nfsroot.tar.gz&amp;lt;/tt&amp;gt; with a copy of the buildimage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This takes a while.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working inside the virtual machine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After successful installation, the virtual machine can be started with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or without graphical terminal with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;make run-con&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing the subset that is extracted as the root filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe has several methods to select the subset that is packaged as the root-filesystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The finetuning section allows to remove, copy or move files before the archive or image is generated.&lt;br /&gt;
* The &#039;&#039;norecommend&#039;&#039; tag.&lt;br /&gt;
* The initial copy has several modes, which allow to extract very small subsets.&lt;br /&gt;
* The embedded archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The finetuning section allows to copy, move and delete files in the target root-filesystem. Additionally it is possible to run commands. Here is an example finetuning section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mv&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;/var&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var_ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;cp&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/copy/me&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/my/name/on/target&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copy, mv, and rm commands operate on full directories.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Advanced Copy&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To copy files from the buildimage into the target image, the &amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;&amp;lt;/tt&amp;gt; tag can be used. The current directory is the target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to copy &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; from the buildenvironment into the target, the following command can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;command&amp;gt;cp /etc/passwd etc/ &amp;lt;/command&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Useful directories to trim with finetuning ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section provides some useful directories that can safely be removed, and which generate big space savings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/usr/share/doc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                         (1)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/archives/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;               (2)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/pkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/apt/srcpkgcache.bin&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Release&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Packages&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/lib/apt/lists/*_Sources&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;boot&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                   (3)&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;lib/modules/2.6.32-5-versatile/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (4)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/man/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                        (5)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;opt/elbe&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                               (6)&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;var/cache/debconf/*&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/rm&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                    (7)&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The doc file are not necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The apt cache can be downloaded, when necessary.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The boot directory contains the kernel used for the VM. On embedded targets this is generally loaded through u-boot.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The kernel modules for the standard debian kernel.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The man page cache&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The full copy mode, will also copy elbe onto the root-filesystem.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| debconf cache is also not necessary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archive===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s also possible to include an archive into the xml file, that is unpacked into the target root-filesystem after the finetuning step. This archive must be a bzip2 compressed tar (.tar.bz2) and the following command can be used to embed the archive into the xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;elbe chg_archive &amp;lt;xmlfile&amp;gt; archive.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature is useful to place custom configuration-files into the final image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slimming the root filesystem with the different modes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The copying process has several modes. The mode is configured in the &#039;&#039;target&#039;&#039; tag. It needs to be the tag before &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following commented example illustrates where the mode is configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;example.com&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;diet&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;        (1)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;norecommend&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039; (2)&lt;br /&gt;
 &lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;lt;/font&amp;gt;&#039;&#039;&#039; \&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The mode is configured at this place, leaving it out, enables the default mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;norecommend&#039;&#039; should be placed here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===norecommend===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;norecommend&#039;&#039; disables installation of recommended packages. This is a frequent cause for big root-filesystems. Installed programs will still work, but some functionality requiring external programs might be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not strictly a mode as described in the following paragraphs. It can be combined with any of them, and the following modes are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default mode generates a full copy of the build image. This mode is the easiest to use, but its not possible to generate images which have the debian package management removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===setsel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode can be used to generate images which only contain &#039;&#039;dpkg&#039;&#039;, and offers a more fine-grained control on which packages are installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended usage is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ulist&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate an image in the default mode.&lt;br /&gt;
* Run the image and use aptitude to purge unwanted packages.&lt;br /&gt;
* Maybe even use dpkg to remove apt and aptitude.&lt;br /&gt;
* Then generate the list of selected Packages using &amp;lt;tt&amp;gt;dpkg --get-selections &amp;gt; selections.list&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Transfer this file to the host System.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;elbe setsel &amp;lt;xmlfile&amp;gt; selections.list&amp;lt;/tt&amp;gt; to import the pkg-list into the xml file.&lt;br /&gt;
* Rebuild using setsel mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How it works&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setsel mode works by feeding the pkg list to &amp;lt;tt&amp;gt;dpkg --set-selections&amp;lt;/tt&amp;gt; in the target image copy. It has the advantage that we do not have to cope with some unregistered configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===diet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diet Mode only copies the files that are referenced in the Package management. It resolves the dependencies so that one does not need to reference library packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;But&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some packages rely on files generated in the post-inst scripts, which are not tracked by the package management. Work is in progress to execute the post-inst scripts in the target copy, but we are still facing some problems with corner-cases, when dependencies of these scripts get removed in the &#039;&#039;finetuning&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also holds for the &#039;&#039;tighten&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===tighten===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tighten mode only extracts the files referenced by the packages in &#039;&#039;pkg-list&#039;&#039;. No dependencies are resolved. This mode is intended for compatibility with old xml files, do not use in new elbe projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;sectionbody&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is a step by step rundown of the arm example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml file starts with the following header, which should always be the same:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ns0:RootFileSystem&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:ns0&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xmlns:xsi&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;created&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;2009-05-20T08:50:56&amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;revision&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;4&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      &amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;xsi:schemaLocation&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;https://www.linutronix.de/projects/Elbe dbsfed.xsd&amp;quot;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this Header follows the project description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ARMexample&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;08.15&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/version&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debian.tu-bs.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;    (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/debian&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_path&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/primary_proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;http://192.168.1.2/custom/pkgs ./&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/url-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mirror&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;noauth&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;/&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                              (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;squeeze&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/suite&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (4)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The &#039;&#039;mirror&#039;&#039; tag contains &#039;&#039;primary_host&#039;&#039;, &#039;&#039;primary_path&#039;&#039; and &#039;&#039;primary_proto&#039;&#039;. It describes the debian mirror used.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| The &#039;&#039;url-list&#039;&#039; can contain additional binary package sources.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| The &#039;&#039;noauth&#039;&#039; tag can be used to disable authentication, when custom unsigned packages, are supposed to be installed.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The suite also controls which kernel and initrd is downloaded with the elbe dl_kernel` command. It also selects the distribution codename used from the primary mirror.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We did not close the &#039;&#039;project&#039;&#039; tag yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following section describes the virtual machine in which the debian installer will run, and where we want to build our custom packages in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;                &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;armel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/arch&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                              (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;20G&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (2)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;256&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mem&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                  (3)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;qemu-system-arm&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/interpreter&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;      (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyAMA0,115200n1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;             (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;versatilepb&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/machine&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;smc91c111&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/model&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;de:ad:be:ef:be:05&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/MAC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/NIC&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                (7)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tcp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/proto&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;22&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildenv&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;5022&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/host&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/forward&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/portforwarding&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (8)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/buildimage&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/project&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| &#039;&#039;arch&#039;&#039; is the debian architecture of the target.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| &#039;&#039;size&#039;&#039; is the size of the hard-disk image.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| &#039;&#039;mem&#039;&#039; controls the amount of RAM that is allocated to the virtual machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| The &#039;&#039;interpreter&#039;&#039; is either &#039;&#039;qemu-system-&amp;lt;arch&amp;gt;&#039;&#039; or &#039;&#039;qemu-kvm&#039;&#039;. Usage of kvm is usually only possible, when the target is &#039;&#039;x86&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| The &#039;&#039;console&#039;&#039; line needs special attention, because it is different on different emulation targets.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The &#039;&#039;machine&#039;&#039; tag contains the &#039;&#039;-machine&#039;&#039; parameter, that is provided to qemu.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(7)&lt;br /&gt;
| &#039;&#039;portforwarding&#039;&#039; of network server ports from the virtual machine to the host. This example forwards the ssh port to port 5022 on the host.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(8)&lt;br /&gt;
| This is the package list of buildimage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sidebarblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Note&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our advice is to only change the sizes of hard-disk and RAM, if thats necessary. The other values come correctly configured in the example files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We provide examples for arm, powerpc and x86.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;        &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                      (1)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;              (2)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                            (3)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfsroot.tar.gz&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (4)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/tar&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                    (5)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                      (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;build-essential&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;bash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;less&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;git&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;debhelper&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nfs-common&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;openssh-server&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| The hostname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| and domainname&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| This is the root password of the machine.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| This describes, that the resulting rootfilesystem, shall be generated as &#039;&#039;nfsroot.tar.gz&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Empty finetuning section. Format of this section was already explained above.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| The Packages list resides here.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;sect2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building ubi images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;paragraph&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elbe also has the ability to generate ubi images, including different partitions and mountpoints. Lets look at an example &#039;&#039;target&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;listingblock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;myARM&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/hostname&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tec.linutronix.de&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/domain&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;foo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/passwd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ttyS0,115200&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/console&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;linux.img&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                  (1)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/nr&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;60MB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;nand&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2048&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/miniosize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;     (2)&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1533&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/maxlogicaleraseblockcount&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;126976&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/logicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;128KiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/physicaleraseblocksize&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                           (3)&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;static&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;kernel&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;4MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/boot/vmlinuz-2.6.33.9-rt31&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/binary&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;26MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dynamic&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;30MiB&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/size&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubi&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/ubivg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mtd&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/images&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                                 (4)&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                       (5)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;data&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/opt&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rw&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;rfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ubifs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;-x lzo&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mkfs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;ro&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bylabel&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;                                         (6)&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;proc&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/sys&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;sysfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/log&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=4M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;/var/run&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/mountpoint&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;tmpfs&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/type&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fs&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;size=2M&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/options&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/bydev&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/fstab&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/finetuning&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;dash&#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/pkg-list&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;colist arabic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
(1)&lt;br /&gt;
| This specifies an mtd image with 60MB size whose filename is linux.img&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(2)&lt;br /&gt;
| Parameters for the ubi tools, describing the NAND geometry.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(3)&lt;br /&gt;
| Specification of ubi volumes.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(4)&lt;br /&gt;
| Because we are dealing with a root-filesystem split into more than one partition, we need to specify the fstab, so that everything can be copied into the right place.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(5)&lt;br /&gt;
| Normal partition entries are by label.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
(6)&lt;br /&gt;
| Since we now create the target fstab ourselves, we also need to include the entries for &#039;&#039;/proc&#039;&#039;, &#039;&#039;/sys&#039;&#039; etc. These can be generated with &#039;&#039;bydev&#039;&#039; nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pzimmermann</name></author>
	</entry>
</feed>