summaryrefslogtreecommitdiffstats
path: root/doc/book-enea-linux-user-guide/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/book-enea-linux-user-guide/doc')
-rw-r--r--doc/book-enea-linux-user-guide/doc/application_development.xml282
-rw-r--r--doc/book-enea-linux-user-guide/doc/book.xml22
-rw-r--r--doc/book-enea-linux-user-guide/doc/eltf_params_template.xml151
-rw-r--r--doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml313
-rw-r--r--doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt320
-rw-r--r--doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml145
-rw-r--r--doc/book-enea-linux-user-guide/doc/getting_started.xml108
-rw-r--r--doc/book-enea-linux-user-guide/doc/images/install_new_sw.pngbin0 -> 48962 bytes
-rw-r--r--doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg888
-rw-r--r--doc/book-enea-linux-user-guide/doc/introduction.xml55
-rw-r--r--doc/book-enea-linux-user-guide/doc/preface.xml157
-rw-r--r--doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml101
-rw-r--r--doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml26
-rw-r--r--doc/book-enea-linux-user-guide/doc/troubleshooting.xml10
-rw-r--r--doc/book-enea-linux-user-guide/doc/using_eclipse.xml1225
-rw-r--r--doc/book-enea-linux-user-guide/doc/using_enea_linux.xml806
16 files changed, 4609 insertions, 0 deletions
diff --git a/doc/book-enea-linux-user-guide/doc/application_development.xml b/doc/book-enea-linux-user-guide/doc/application_development.xml
new file mode 100644
index 0000000..0e2edf4
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/application_development.xml
@@ -0,0 +1,282 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="app_dev">
3 <title>Application Development</title>
4
5 <section id="cross_comp_apps">
6 <title>Cross-Compiling Applications</title>
7
8 <para>Running <command>make</command> cross-compiles your applications
9 according to the environment settings. By installing a Cross-Compilation
10 Toolchain for your target, the environment variables are set up for
11 cross-compilation. For more details, see <xref
12 linkend="install_el_sdk" />.</para>
13
14 <para>Once the cross-compilation environment is set up, you can make your
15 applications as usual and get them compiled for your target. Below you see
16 how to cross-compile from the command line. If Eclipse is installed, you
17 can also cross-compile your code from the Eclipse IDE. For more details,
18 see <xref linkend="crosscomp" />.</para>
19
20 <orderedlist>
21 <listitem>
22 <para>Create a Makefile for your application. Example of a simple
23 Makefile and application:</para>
24
25 <programlisting>helloworld:helloworld.o
26 $(CC) -o helloworld helloworld.o
27
28clean:
29 rm -f *.o helloworld</programlisting>
30
31 <programlisting>#include &lt;stdio.h&gt;
32
33int main(void) {
34 printf("Hello World\n");
35 return 0;
36}</programlisting>
37 </listitem>
38
39 <listitem>
40 <para>Run <command>make</command> to cross-compile your application
41 according to the environment set up:</para>
42
43 <programlisting>$ make</programlisting>
44
45 <tip>
46 <para>If the build fails, check if the GNU Make workaround solves
47 your problem.</para>
48 </tip>
49 </listitem>
50
51 <listitem>
52 <para>Copy the <filename>helloworld</filename> program to your target
53 and run it:</para>
54
55 <programlisting># ./helloworld
56Hello World</programlisting>
57 </listitem>
58 </orderedlist>
59 </section>
60
61 <section id="cross_comp_kern_mod">
62 <title>Cross-Compiling Kernel modules</title>
63
64 <para>Running <command>make</command> cross-compiles your kernel modules
65 according to the environment settings. By installing a Cross-Compilation
66 Toolchain for your target, the environment variables are set up for
67 cross-compilation. For more details, see <xref
68 linkend="install_el_sdk" />.</para>
69
70 <para>Before cross-compiling kernel modules, you need to make sure the
71 installed toolchain includes the kernel source tree, which should be
72 available at:
73 <literal>&lt;sdkdir&gt;/sysroots/&lt;targetarch&gt;-enea-linux/usr/src/kernel</literal>.
74 If the kernel source tree is not included in the toolchain, you need to
75 add the kernel-dev package into the image recipe enea-image-&lt;name&gt;
76 and build the toolchain again.</para>
77
78 <para>Once the cross-compilation environment is set up, you can make your
79 kernel modules as usual and get them compiled for your target. Below you
80 see how to cross-compile a kernel module.</para>
81
82 <orderedlist>
83 <listitem>
84 <para>Create a Makefile for the kernel module. Example of a simple
85 Makefile and kernel module:</para>
86
87 <programlisting>obj-m := hello.o
88PWD := $(shell pwd)
89
90KERNEL_SRC := &lt;full path to kernel source tree&gt;
91
92all: scripts
93 $(MAKE) -C $(KERNEL_SRC) M=$(PWD) LDFLAGS="" modules
94scripts:
95 $(MAKE) -C $(KERNEL_SRC) scripts
96clean:
97 $(MAKE) -C $(KERNEL_SRC) M=$(PWD) LDFLAGS="" clean</programlisting>
98
99 <programlisting>#include &lt;linux/module.h&gt; /* Needed by all modules */
100#include &lt;linux/kernel.h&gt; /* Needed for KERN_INFO */
101#include &lt;linux/init.h&gt; /* Needed for the macros */
102
103static int __init hello_start(void)
104{
105 printk(KERN_INFO "Loading hello module...\n");
106 printk(KERN_INFO "Hello, world\n");
107 return 0;
108}
109
110static void __exit hello_end(void)
111{
112 printk(KERN_INFO "Goodbye, world\n");
113}
114
115module_init(hello_start);
116module_exit(hello_end);
117
118MODULE_LICENSE("GPL");</programlisting>
119 </listitem>
120
121 <listitem>
122 <para>Run <command>make</command> to cross-compile your kernel module
123 according to the environment set up:</para>
124
125 <programlisting>$ make</programlisting>
126 </listitem>
127
128 <listitem>
129 <para>Copy the kernel module <filename>hello.ko</filename> to your
130 target and install/remove it:</para>
131
132 <programlisting># insmod hello.ko
133# rmmod hello.ko
134# dmesg
135[...] Loading hello module...
136[...] Hello, world
137[...] Goodbye, world</programlisting>
138 </listitem>
139 </orderedlist>
140 </section>
141
142 <section id="use_devtool">
143 <title>Add an Application using devtool</title>
144
145 <para>As a prerequisite, you need to install the SDK and set up the
146 environment. For this, see <xref linkend="install_el_sdk" />.</para>
147
148 <para>The following section, <ulink
149 url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#sdk-use-devtool-to-add-an-application">Use
150 devtool add to Add an Application</ulink>, in Yocto Project Software
151 Development Kit (SDK) Developer's Guide, explains how to use devtool to
152 generate recipes from existing application code, edit and build recipes,
153 and deploy the output on target. If needed, replace the Yocto version in
154 the link.</para>
155
156 <para>This example will show how to generate a recipe from the existing
157 application code and Makefile, edit the recipe in order to provide an
158 installation path for the application, build the recipe, and deploy the
159 output on a target, or create a DEB package from the recipe and install
160 the package.</para>
161
162 <orderedlist>
163 <listitem>
164 <para>Create a simple application and Makefile in
165 <literal>&lt;workspace_dir&gt;/my_app</literal>:</para>
166
167 <para><literal>&lt;workspace_dir&gt;/my_app/my_hello_app.c</literal></para>
168
169 <programlisting>#include &lt;stdio.h&gt;
170
171int main(void)
172{
173 printf("Hello world!\n");
174 return 0;
175}</programlisting>
176
177 <para><literal>&lt;workspace_dir&gt;/my_app/Makefile</literal></para>
178
179 <programlisting>my_hello_app:</programlisting>
180 </listitem>
181
182 <listitem>
183 <para>Generate a recipe (my-hello-recipe) using the source tree of the
184 application (<literal>&lt;workspace_dir&gt;/my_app</literal>):</para>
185
186 <programlisting>$ devtool add my-hello-recipe &lt;workspace_dir&gt;/my_app
187NOTE: Using source tree as build directory since that would be the default for this
188recipe
189NOTE: Recipe &lt;SDK_dir&gt;/workspace/recipes/my-hello-recipe/my-hello-recipe.bb has been
190automatically created; further editing may be required to make it fully functional</programlisting>
191
192 <programlisting>$ cat &lt;SDK_dir&gt;/workspace/recipes/my-hello-recipe/my-hello-recipe.bb
193# Recipe created by recipetool
194# This is the basis of a recipe and may need further editing in order to be fully
195# functional.
196# (Feel free to remove these comments when editing.)
197#
198# Unable to find any files that looked like license statements. Check the
199# accompanying documentation and source headers and set LICENSE and
200# LIC_FILES_CHKSUM accordingly.
201#
202# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if
203# this is not accurate with respect to the licensing of the software being built (it
204# will not be in most cases) you must specify the correct value before using this
205# recipe for anything other than initial testing/development!
206LICENSE = "CLOSED"
207LIC_FILES_CHKSUM = ""
208
209# No information for SRC_URI yet (only an external source tree was specified)
210SRC_URI = ""
211
212
213# NOTE: this is a Makefile-only piece of software, so we cannot generate much of the
214# recipe automatically - you will need to examine the Makefile yourself and ensure
215# that the appropriate arguments are passed in.
216
217do_configure () {
218 # Specify any needed configure commands here
219 :
220}
221
222do_compile () {
223 # You will almost certainly need to add additional arguments here
224 oe_runmake
225}
226
227do_install () {
228 # NOTE: unable to determine what to put here - there is a Makefile but no
229 # target named "install", so you will need to define this yourself
230 :
231}</programlisting>
232 </listitem>
233
234 <listitem>
235 <para>Edit the recipe to provide an installation path for the
236 application:</para>
237
238 <programlisting>$ devtool edit-recipe my-hello-recipe</programlisting>
239
240 <programlisting>$ cat &lt;SDK_dir&gt;/workspace/recipes/my-hello-recipe/my-hello-recipe.bb
241...
242do_install () {
243 # NOTE: unable to determine what to put here - there is a Makefile but no
244 # target named "install", so you will need to define this yourself
245 install -d ${D}${bindir}
246 install -m 0777 ${S}/my_hello_app ${D}${bindir}
247}
248...</programlisting>
249 </listitem>
250
251 <listitem>
252 <para>Build the recipe:</para>
253
254 <programlisting>$ devtool build my-hello-recipe</programlisting>
255
256 <para>The recipe build results can be seen here:
257 <literal>&lt;SDK_dir&gt;/tmp/work/&lt;arch&gt;-enea-linux/my-hello-recipe/1.0-r0/</literal></para>
258 </listitem>
259
260 <listitem>
261 <para>Deploy the output (in this case, the application) on
262 target:</para>
263
264 <programlisting>$ devtool deploy-target my-hello-recipe root@&lt;target_ip_address&gt;
265Parsing recipes..done.
266NOTE: Successfully deployed
267&lt;SDK_dir&gt;/tmp/work/&lt;arch&gt;-enea-linux/my-hello-recipe/1.0-r0/image</programlisting>
268
269 <para>As an alternative you can create a DEB package:</para>
270
271 <programlisting>$ devtool package my-hello-recipe
272...
273NOTE: Your packages are in &lt;SDK_dir&gt;/tmp/deploy/deb</programlisting>
274
275 <para>Then copy the DEB package on the target and install it using
276 dpkg:</para>
277
278 <programlisting># dpkg -i my-hello-recipe-1.0-r0.1.&lt;arch&gt;.deb</programlisting>
279 </listitem>
280 </orderedlist>
281 </section>
282</chapter>
diff --git a/doc/book-enea-linux-user-guide/doc/book.xml b/doc/book-enea-linux-user-guide/doc/book.xml
new file mode 100644
index 0000000..48747ef
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/book.xml
@@ -0,0 +1,22 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4<!ENTITY % local.common.attrib "xml:base CDATA #IMPLIED">
5]>
6<book id="book_enea_linux_user_guide_rt">
7 <title><trademark class="registered">Enea</trademark> Linux User's Guide</title>
8 <subtitle>Release Version
9 <xi:include href="eltf_params_updated.xml" xpointer="element(EneaLinux_REL_VER/1)"
10 xmlns:xi="http://www.w3.org/2001/XInclude" /></subtitle>
11 <!-- OLINKDBPATH_USED_BY_XMLMIND ../../s_docbuild/olinkdb -->
12 <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
13 <xi:include href="preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
14 <xi:include href="introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
15 <xi:include href="prerequisites_and_requirements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
16 <xi:include href="getting_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
17 <xi:include href="using_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
18 <xi:include href="application_development.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
19 <xi:include href="using_eclipse.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
20 <xi:include href="real_time_in_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
21 <xi:include href="troubleshooting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
22</book>
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml b/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml
new file mode 100644
index 0000000..eaa7ebd
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml
@@ -0,0 +1,151 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4<section id="eltf_created_params">
5 <title>File with Parameters in the Book Auto-updated by ELFT</title>
6
7 <note>
8 <para>See the <emphasis
9 role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text
10 file for description of how to create the final <emphasis
11 role="bold">eltf_params_updated.xml</emphasis> from this template and for
12 all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command
13 "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all
14 ELTF variables, which always begins with ELTF_ and don't only rely on the
15 howto text file list! The plan is that ELTF will auto-update this when
16 needed.</para>
17 </note>
18
19 <section id="host_prereq">
20 <title>Common Parameters</title>
21
22 <bridgehead>A programlisting, ID
23 "eltf-prereq-apt-get-commands-host"</bridgehead>
24
25 <para id="eltf-prereq-apt-get-commands-host"><programlisting>ELTF_PL_HOST_PREREQ</programlisting></para>
26
27 <bridgehead>A programlisting, ID
28 "eltf-getting-repo-install-command"</bridgehead>
29
30 <para id="eltf-getting-repo-install-command"><programlisting>ELTF_PL_GET_REPO</programlisting></para>
31
32 <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is
33 correct also compared to the "previous" REL VER in pardoc-distro.xml
34 "prev_baseline".</bridgehead>
35
36 <para id="EneaLinux_REL_VER"><phrase>ELTF_EL_REL_VER</phrase></para>
37
38 <para id="Yocto_VER"><phrase>ELTF_YOCTO_VER</phrase></para>
39
40 <para id="Yocto_NAME"><phrase>ELTF_YOCTO_NAME</phrase></para>
41
42 <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink
43 url="ELTF_YOCTO_PROJ_DOWNLOAD_URL">ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL</ulink></para>
44
45 <para id="ULINK_ENEA_LINUX_URL"><ulink
46 url="ELTF_EL_DOWNLOAD_URL">ELTF_EL_DOWNLOAD_TXTURL</ulink></para>
47
48 <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use
49 $MACHINE/default.xml as parameter, where MACHINE is one of the target
50 directory names in the manifest.</bridgehead>
51
52 <para id="eltf-repo-cloning-enea-linux"><programlisting>ELTF_PL_CLONE_W_REPO</programlisting></para>
53
54 <bridgehead>A table with ONE row, only the row with ID
55 "eltf-eclipse-version-row" is included in the book. MANUALLY BOTH in the
56 template.xml and in the updated.xml, set condition hidden on the
57 &lt;row&gt;, if eclipse is not in the release.</bridgehead>
58
59 <informaltable>
60 <tgroup cols="1">
61 <tbody>
62 <row id="eltf-eclipse-version-row">
63 <entry>Eclipse version ELTF_ECLIPSE_VERSION plus command line
64 development tools are included in this Enea NFV Access release.</entry>
65 </row>
66 </tbody>
67 </tgroup>
68 </informaltable>
69
70 <bridgehead>Below is one big section with title "Supported Targets with
71 Parameters". The entire section is included completely in the book via ID
72 "eltf-target-tables-section" and shall be LAST in the template. The
73 template contains ONE target subsection. COPY/APPEND it, if multiple
74 targets exist in the release and optionally add rows with additional
75 target parameters in each target subsection table.</bridgehead>
76 </section>
77
78 <section id="eltf-target-tables-section">
79 <title>Supported Targets with Parameters</title>
80
81 <para>The tables below describes the target(s) supported in this Enea
82 NFV Access release.</para>
83
84 <section id="eltf-target-table-ELTF_T_MANIFEST_DIR">
85 <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title>
86
87 <para><informaltable>
88 <tgroup cols="2">
89 <colspec colwidth="6*" />
90
91 <colspec colwidth="9*" />
92
93 <tbody>
94 <row>
95 <entry>Target official name</entry>
96
97 <entry>ELTF_T_NAME</entry>
98 </row>
99
100 <row>
101 <entry>Architecture and Description</entry>
102
103 <entry>ELTF_T_ARC_DESC</entry>
104 </row>
105
106 <row>
107 <entry>Link to target datasheet</entry>
108
109 <entry>See <ulink
110 url="ELTF_T_DS_URL">ELTF_T_DS_TXTURL</ulink></entry>
111 </row>
112
113 <row>
114 <entry>Poky version</entry>
115
116 <entry>ELTF_T_POKY_VER</entry>
117 </row>
118
119 <row>
120 <entry>GCC version</entry>
121
122 <entry>ELTF_T_GCC_VER</entry>
123 </row>
124
125 <row>
126 <entry>Linux Kernel Version</entry>
127
128 <entry>ELTF_T_KERN_VER</entry>
129 </row>
130
131 <row>
132 <entry>Supported Drivers</entry>
133
134 <entry>ELTF_T_DRIVERS</entry>
135 </row>
136
137 <row>
138 <entry>Enea rpm folder for downloading RPM packages for this
139 target</entry>
140
141 <entry><ulink
142 url="ELTF_T_EL_RPM_URL">ELTF_T_EL_RPM_TXTURL</ulink></entry>
143 </row>
144 </tbody>
145 </tgroup>
146 </informaltable></para>
147 </section>
148
149 <!-- ELTFADD_MORE_TARGET_SECTIONS_BELOW_IF_NEEDED -->
150 </section>
151</section> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml b/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml
new file mode 100644
index 0000000..b557335
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml
@@ -0,0 +1,313 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4<section id="eltf_created_params">
5 <title>File with Parameters in the Book Auto-updated by ELFT</title>
6
7 <note>
8 <para>See the <emphasis
9 role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text
10 file for description of how to create the final <emphasis
11 role="bold">eltf_params_updated.xml</emphasis> from this template and for
12 all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command
13 "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all
14 ELTF variables, which always begins with ELTF_ and don't only rely on the
15 howto text file list! The plan is that ELTF will auto-update this when
16 needed.</para>
17 </note>
18
19 <section id="host_prereq">
20 <title>Common Parameters</title>
21
22 <bridgehead>A programlisting, ID
23 "eltf-prereq-apt-get-commands-host"</bridgehead>
24
25 <para id="eltf-prereq-apt-get-commands-host"><programlisting># Host Ubuntu 16.04.2 LTS 64bit
26sudo apt-get -y update
27sudo apt-get -y install sed wget subversion git-core coreutils unzip texi2html \
28 texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \
29 make gcc build-essential xsltproc g++ desktop-file-utils chrpath \
30 libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \
31 libxml-parser-perl</programlisting></para>
32
33 <bridgehead>A programlisting, ID
34 "eltf-getting-repo-install-command"</bridgehead>
35
36 <para id="eltf-getting-repo-install-command"><programlisting>mkdir -p ~/bin
37curl https://storage.googleapis.com/git-repo-downloads/repo &gt; ~/bin/repo
38chmod a+x ~/bin/repo
39export PATH=~/bin:$PATH</programlisting></para>
40
41 <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is
42 correct also compared to the "previous" REL VER in pardoc-distro.xml
43 "prev_baseline".</bridgehead>
44
45 <para id="EneaLinux_REL_VER"><phrase>8</phrase></para>
46
47 <para id="Yocto_VER"><phrase>2.5</phrase></para>
48
49 <para id="Yocto_NAME"><phrase>sumo</phrase></para>
50
51 <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink
52 url="http://www.yoctoproject.org/downloads/core/pyro23">http://www.yoctoproject.org/downloads</ulink></para>
53
54 <para id="ULINK_ENEA_LINUX_URL"><ulink
55 url="http://linux.enea.com/EneaLinux8.0">http://linux.enea.com/EneaLinux8.0</ulink></para>
56
57 <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use
58 $MACHINE/default.xml as parameter, where MACHINE is one of the target
59 directory names in the manifest.</bridgehead>
60
61 <para id="eltf-repo-cloning-enea-linux"><programlisting>mkdir enea-linux
62cd enea-linux
63repo init -u git@git.enea.com:linux/manifests/el_manrtt.git \
64 -b refs/tags/Enea_Linux_8.0 -m intel-corei7-64/default.xml
65repo sync</programlisting></para>
66
67 <bridgehead>A table with ONE row, only the row with ID
68 "eltf-eclipse-version-row" is included in the book. MANUALLY in book, set
69 condition hidden if eclipse is not in the release.</bridgehead>
70
71 <informaltable>
72 <tgroup cols="1">
73 <tbody>
74 <row id="eltf-eclipse-version-row">
75 <entry>Eclipse version 4.7 (Oxygen) plus command line development
76 tools are included in this Enea Linux release.</entry>
77 </row>
78 </tbody>
79 </tgroup>
80 </informaltable>
81
82 <bridgehead>Below is one big section with title "Supported Targets with
83 Parameters". The entire section is included completely in the book via ID
84 "eltf-target-tables-section" and shall be LAST in the template. The
85 template contains ONE target subsection. COPY/APPEND it, if multiple
86 targets exist in the release and optionally add rows with additional
87 target parameters in each target subsection table.</bridgehead>
88 </section>
89
90 <section id="eltf-machine-tables-section">
91 <title>Supported Targets with Parameters</title>
92
93 <para>The section(s) below describe the target(s) supported in this Enea
94 Linux release.</para>
95
96 <section id="eltf-target-tables-section">
97 <title>MACHINE Information</title>
98
99 <para>The table(s) below describes the target(s) supported in this Enea
100 Linux release.</para>
101
102 <table>
103 <title>MACHINE Information Intel Xeon D</title>
104
105 <tgroup cols="2">
106 <colspec align="center" />
107
108 <thead>
109 <row>
110 <entry align="center">Component</entry>
111
112 <entry align="center">Description</entry>
113 </row>
114 </thead>
115
116 <tbody>
117 <row>
118 <entry align="left">Target official name</entry>
119
120 <entry>Intel Xeon D</entry>
121 </row>
122
123 <row>
124 <entry align="left">Architecture and Description</entry>
125
126 <entry>x86-64</entry>
127 </row>
128
129 <row>
130 <entry align="left">Link to target datasheet</entry>
131
132 <entry><ulink
133 url="https://www.intel.com/content/www/us/en/processors/xeon/xeon-d-1500-datasheet-vol-1.html">Intel
134 Xeon D datasheet</ulink></entry>
135 </row>
136
137 <row>
138 <entry align="left">Poky version</entry>
139
140 <entry>Git-commit-id: TBD</entry>
141 </row>
142
143 <row>
144 <entry align="left">GCC version</entry>
145
146 <entry>7.3</entry>
147 </row>
148
149 <row>
150 <entry align="left">Linux Kernel Version</entry>
151
152 <entry>4.14</entry>
153 </row>
154
155 <row condition="hidden">
156 <entry align="left">Supported Drivers</entry>
157
158 <entry>Ethernet, RTC, UART</entry>
159 </row>
160
161 <row>
162 <entry>Enea deb folder for downloading DEB packages for this
163 target</entry>
164
165 <entry><ulink
166 url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry>
167 </row>
168 </tbody>
169 </tgroup>
170 </table>
171
172 <table>
173 <title>MACHINE Information Intel Atom C3000</title>
174
175 <tgroup cols="2">
176 <colspec align="center" />
177
178 <thead>
179 <row>
180 <entry align="center">Component</entry>
181
182 <entry align="center">Description</entry>
183 </row>
184 </thead>
185
186 <tbody>
187 <row>
188 <entry align="left">Target official name</entry>
189
190 <entry>Intel Atom C3000</entry>
191 </row>
192
193 <row>
194 <entry align="left">Architecture and Description</entry>
195
196 <entry>x86-64</entry>
197 </row>
198
199 <row>
200 <entry align="left">Link to target datasheet</entry>
201
202 <entry><ulink
203 url="https://www.intel.com/content/www/us/en/products/docs/processors/atom/c-series/c3000-family-datasheet.html">Intel
204 Atom datasheet</ulink></entry>
205 </row>
206
207 <row>
208 <entry align="left">Poky version</entry>
209
210 <entry>Git-commit-id: TBD</entry>
211 </row>
212
213 <row>
214 <entry align="left">GCC version</entry>
215
216 <entry>7.3</entry>
217 </row>
218
219 <row>
220 <entry align="left">Linux Kernel Version</entry>
221
222 <entry>4.14</entry>
223 </row>
224
225 <row condition="hidden">
226 <entry align="left">Supported Drivers</entry>
227
228 <entry>Ethernet, RTC, UART</entry>
229 </row>
230
231 <row>
232 <entry>Enea deb folder for downloading DEB packages for this
233 target</entry>
234
235 <entry><ulink
236 url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry>
237 </row>
238 </tbody>
239 </tgroup>
240 </table>
241
242 <table>
243 <title>MACHINE Information Intel NUC Kaby Lake</title>
244
245 <tgroup cols="2">
246 <colspec align="center" />
247
248 <thead>
249 <row>
250 <entry align="center">Component</entry>
251
252 <entry align="center">Description</entry>
253 </row>
254 </thead>
255
256 <tbody>
257 <row>
258 <entry align="left">Target official name</entry>
259
260 <entry>Intel NUC Kaby Lake</entry>
261 </row>
262
263 <row>
264 <entry align="left">Architecture and Description</entry>
265
266 <entry>x86-64</entry>
267 </row>
268
269 <row>
270 <entry align="left">Link to target datasheet</entry>
271
272 <entry><ulink
273 url="https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/nuc-kit-nuc7i5bnh-nuc7i5bnk-brief.pdf">Intel
274 NUC Kaby Lake datasheet</ulink></entry>
275 </row>
276
277 <row>
278 <entry align="left">Poky version</entry>
279
280 <entry>Git-commit-id: TBD</entry>
281 </row>
282
283 <row>
284 <entry align="left">GCC version</entry>
285
286 <entry>7.3</entry>
287 </row>
288
289 <row>
290 <entry align="left">Linux Kernel Version</entry>
291
292 <entry>4.14</entry>
293 </row>
294
295 <row condition="hidden">
296 <entry align="left">Supported Drivers</entry>
297
298 <entry>Ethernet, RTC, UART</entry>
299 </row>
300
301 <row>
302 <entry>Enea deb folder for downloading DEB packages for this
303 target</entry>
304
305 <entry><ulink
306 url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry>
307 </row>
308 </tbody>
309 </tgroup>
310 </table>
311 </section>
312 </section>
313</section>
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt b/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt
new file mode 100644
index 0000000..62e5d02
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt
@@ -0,0 +1,320 @@
1eltf_params_template_updated_howto_use.txt
2
3This is a way to collect all parameters for an Enea NFV Access release
4in one parameter file, easy to automatically update by ELTF regularly.
5
6NOTE: Both the release info AND the open source books use parameters from
7 here, but the XML file is inside the release info book directory.
8
9NOTE: The manifest_conf.mk, or overridden by the environment variable
10 MANIFESTHASH, contains the full tag (or hashvalue) for downloading
11 the manifest when the books are built. The list of target
12 directories are fetched from the manifest into the book.
13 The eltf_params_updates.xml can all the time contain
14 the final next complete tag e.g. refs/tags/EL6 or similar
15 in the ELTF_PL_CLONE_W_REPO parameter command lines.
16
17The ordinary book XML files use xi:include statements to include elements
18from this parameter file. The book XML files can thus be manually edited.
19Before editing, you must run "make init".
20Any other text in the template or updated.xml file, outside the parts that
21are included in the book, are not used but still all must be correct
22DocBook XML files.
23
24ELTF work:
25 template => ELTF replaces ALL ELTF_xxx variables => updated XML file
26 => push to git only if changed
27
28
29eltf_params_template.xml (in git)
30 File used by ELTF to autocreate/update the real parameter
31 file eltf_params_updated.xml.
32
33eltf_params_updated.xml (in git)
34 Real parameter file where ELTF has replaced all ELTF_xx variables with
35 strings, in several cases with multiline strings.
36 No spaces or linefeed allowed in beginning or end of the variable values!
37
38
39xi:include: Each parameter is xi:include'ed in various book files, using
40 the IDs existing in the parameter files.
41 In most cases the 1:st element inside an element with an ID is included
42 using a format like eltf-prereq-apt-get-commands-host/1.
43 In very few cases the element with the ID is included in the book, one
44 example is the target section which has an ID, but which contains
45 multiple subsections, one per target.
46 All IDs in a book must be unique.
47
48DocBook XML: All XML files must be correct DocBook XML files.
49
50Do NOT edit/save the real *updated.xml file with XMLmind to avoid changes
51 not done by ELTF. But it is OK to open the real file in XMLmind to
52 check that the format is correct.
53
54ELTF should autocreate a temporary "real" file but only replace
55 and push the eltf_params_updated.xml if it is changed.
56
57
58make eltf
59 This lists all ELTF_xxx variables and some rules how to treat them
60
61DocBook Format: All elements - rules:
62 Several strict generic XML rules apply for all strings:
63 1. No TABs allowed or any other control chr than "linefeed"
64 2. Only 7-bit ASCII
65 3. Any < > & must be converted to &lt; &gt; and &amp;
66 Similar for any other non-7-bit-ASCII but avoid those!
67 4. No leading spaces or linefeeds when replacing the ELTF_* variable
68 5. No trailing spaces or linefeeds when replacing the ELTF_* variable
69 6. Note: Keep existing spaces before/efter ELTF_* in a few cases.
70
71DocBook Format: <programlisting> - rules: ELTF*PL* variables
72 Several strict rules apply for the multiline string in programlisting
73 in addition to the general XML rules above:
74 7. Max line length < 80 char
75 8. Use backslash (\) to break longer lines
76 9. Use spaces (e.g. 4) to indent continuation lines in programlistings
77 10. No trailing spaces on any line
78 11. No spaces or linefeed immediately after leading <programlisting>
79 12. No spaces or linefeed before trailing </programlisting>
80
81DocBook Format: <ulink> - rules: ELTF_*URL* variables
82 13. ELTF_*URL and corresponding ELTF_*TXTURL shall be identical strings
83 14. Only if the URL is extremely long, the TXTURL can be a separate string
84
85Each target has one section with target parameters:
86 <section id="eltf-target-table-ELTF_T_MANIFEST_DIR">
87 <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title>
88 ..... with many ELTF_ variables ....
89 </section>
90
91 15. If there is only one target. ELTF just replaces ELTF parameters
92
93 16. It there are multiple targets. ELTF copies the section and appends the
94 section the required number of times.
95 Each section ID will become unique: eltf-target-table-ELTF_T_MANIFEST_DIR
96 Each section title will become unique
97
98Tables with target parameters in each target section:
99 17. It is possible for ELTF to append more rows with one parameter each
100 to these tables, because the entire tables are included in the book
101
102Special - NOT YET READY DEFINED how to handle the optionally included
103 Eclipse and its version, but this is a first suggestion:
104 18. Just now ELTF can define ELFT_ECLIPSE_VERSION as a full string
105 with both version number and name,
106 19. MANUALLY if Eclipse is NOT included in the release,
107 the release manager should manually set condition="hidden" on
108 the entire section in the book XML about Eclipse
109
110
111
112BELOW WE TRY TO EXPLAIN EACH ELTF_* variable, but always check with make eltf
113if there are more new variables, missing in this description file.
114
115_____________________________________________________________________________
116ELTF_PL_HOST_PREREQ Multiline list of host prerequisites, e.g. commands
117 like sudo apt-get install xxxx or similar.
118 First line = comment with the complete host name!
119 It is possible to include multiple hosts by just
120 adding an empty line, comment with host name, etc.
121 xi:include eltf-prereq-apt-get-commands-host/1
122 This is a <programlisting>...</programlisting>
123 Example:
124# Host Ubuntu 14.04.5 LTS 64bit
125sudo apt-get update
126sudo apt-get install sed wget subversion git-core coreutils unzip texi2html \
127 texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \
128 make gcc build-essential xsltproc g++ desktop-file-utils chrpath \
129 libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \
130 libxml-parser-perl
131
132_____________________________________________________________________________
133ELTF_PL_GET_REPO Multiline commands to download the repo tool
134 xi:include eltf-getting-repo-install-command/1
135 This is a <programlisting>...</programlisting>
136 Example:
137mkdir -p ~/bin
138curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
139chmod a+x ~/bin/repo
140export PATH=~/bin:$PATH
141
142_____________________________________________________________________________
143ELTF_EL_REL_VER General parameter string: The version of this Enea
144 NFV Access release. Major version and optional .Minor
145 Typically created from MAJOR and MINOR in enea.conf
146 MINOR in enea.conf is empty or contains a dot+minor
147 xi_include EneaLinux_REL_VER/1
148 This is a <phrase>X.x</phrase> used in many places.
149 Examples:
1506
151 or
1526.1
153
154_____________________________________________________________________________
155ELTF_YOCTO_VER General parameter string: Yocto version, created
156 from DISTRO in poky.ent
157 xi:include Yocto_VER/1
158 This is a <phrase>X.x</phrase> used in many places.
159 Example:
1602.1
161
162_____________________________________________________________________________
163ELTF_YOCTO_NAME General parameter string: Yocto name (branch), created
164 from DISTRO_NAME_NO_CAP in poky.ent
165 xi:include Yocto_NAME/1
166 This is a <phrase>X.x</phrase> used in many places.
167 Example:
168krogoth
169
170_____________________________________________________________________________
171ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL
172ELTF_YOCTO_PROJ_DOWNLOAD_URL strings with correct Yocto version string
173 at the end, typically without "dot".
174 xi:include ULINK_YOCTO_PROJECT_DOWNLOAD/1
175 This is an <ulink url="...">...</ulink>
176 Example:
177http://www.yoctoproject.org/downloads/core/krogoth/21
178
179_____________________________________________________________________________
180ELTF_EL_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL strings
181ELTF_EL_DOWNLOAD_URL and shall be the http:/..... address where
182 Enea NFV Access can be downloaded
183 Often containing same version as in ELTF_EL_REL_VER
184 xi:include ULINK_ENEA_LINUX_URL/1
185 This is an <ulink url="...">...</ulink>
186 Example:
187http://linux.enea.com/6
188
189_____________________________________________________________________________
190ELTF_PL_CLONE_W_REPO Multiline commands to run repo to clone everything.
191 Use the variable $MACHINE/default.xml (the text in
192 the book will list the avaiable values of MACHINE,
193 taken from the manifest repository)
194 xi:include eltf-repo-cloning-enea-linux/1
195 This is a <programlisting>...</programlisting>
196 Example:
197mkdir enea-linux
198cd enea-linux
199repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \
200 -b refs/tags/EL6 -m $MACHINE/default.xml
201repo sync
202
203_____________________________________________________________________________
204ELTF_ECLIPSE_VERSION Optional general parameter string.
205 NOT YET READY DEFINED
206 Just now a release manage must manually set
207 condition="hidden" on the Eclipse section,
208 if Eclipse is not included in the release.
209 ELTF just replaces ELTF_ECLIPSE_VERSION with a full
210 string with "X.Y (name)"
211 It includes the ID and can only be ONCE in the book.
212 xi:include eltf-eclipse-version-row
213 Example.
2144.5 (Mars)
215
216
217_____________________________________________________________________________
218ELTF_T_* All these are in each target (MACHINE) and ELTF
219 must separately replace them with strings for
220 each target
221 NOTE: All (except the MANIFEST_DIR) are in rows
222 in a table and ELTF can select to append
223 more parameters by adding more rows
224
225_____________________________________________________________________________
226ELTF_T_MANIFEST_DIR This happens to be in two places. Must be exactly
227ELTF_T_MANIFEST_DIR the directory name in the manifest, e.g. same
228 as the MACHINE names in $MACHINE/default.xml.
229 In book: a) Part of section ID
230 b) Part of section title
231 Examples:
232p2041rgb
233 or
234ls1021aiot
235 or
236qemuarm
237
238_____________________________________________________________________________
239ELTF_T_NAME Target specific: "Target Official Name"
240 NOT same as the target directory name in most cases.
241 In book: An <entry> element in a row
242 Examples:
243P2041RGB
244 or
245LS1021a-IoT
246 or
247qemuarm
248
249_____________________________________________________________________________
250ELTF_T_ARC_DESC Target specific: "Architecture and Description"
251 It can be a short identification string or
252 it can be a longer descriptive sentence.
253 In book: An <entry> element in a row
254 Examples:
255Power, e500mc
256 or
257ARM Cortex-A7
258
259_____________________________________________________________________________
260ELTF_T_DS_TXTURL Target specific: "Link to target datasheet. These
261ELTF_T_DS_URL two usually are IDENTICAL strings with correct
262 hyperlink to the target's official datasheet.
263 In book: an <ulink url="...">...</ulink>
264 Only if the link is VERY LONG, the text part shall
265 instead be a descriptive string (see 2:nd example).
266 NOTE: Also here no spaces or line-feeds!
267 Examples:
268url="http://wiki.qemu.org">http://wiki.qemu.org
269or
270url="http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/qoriq-arm-processors/qoriq-ls1021a-iot-gateway-reference-design:LS1021A-IoT">link to NXP's datasheet
271
272_____________________________________________________________________________
273ELTF_T_POKY_VER Target specific: "Poky version" created either
274 from POKYVERSION in poky.ent
275 or using a hashvalue with a leading string, in
276 which case it may be different per target.
277 In book: An <entry> in a row
278 Examples:
27915.0.0
280or
281Git commit id: 75ca53211488a3e268037a44ee2a7ac5c7181bd2
282
283_____________________________________________________________________________
284ELTF_T_GCC_VER Target specific: "GCC Version". Should be in poky
285 but not easy to find among various parameters.
286 ELTF would extract it from build logs building SDK
287 and it is possibly different per target.
288 In book: An <entry> in a row
289 Example:
2905.3
291
292_____________________________________________________________________________
293ELTF_T_KERN_VER Target specific: "Linux Kernel Version". Often
294 different per target.
295 In book: An <entry> in a row
296 Example:
2973.12
298
299_____________________________________________________________________________
300ELTF_T_DRIVERS Target specific: "Supported Drivers". This is a
301 comma-separated list of driver names.
302 ELTF should create the list in same order for each
303 target, e.g. alphabetic migth be OK.
304 In book: An <entry> in a row
305 Example:
306Ethernet, I2C, SPI, PCI, USB, SD/SDHC/SDXC
307
308
309_____________________________________________________________________________
310ELTF_T_EL_RPM_TXTURL Target specific: "Enea rpm folder for downloading
311ELTF_T_EL_RPM_URL RPM packages for this target". These two are
312 INDENTICAL strings with hyperlink to the web site
313 at Enea where the customer can download RPMs
314 Note: Often the ELFT_EL_REL_VER value and
315 the ELTF_T_MANIFEST_DIR are used in the link.
316 In book: an <ulink url="...">...</ulink>
317 Example:
318url="https://linux.enea.com/6/ls1021aiot/rpm">https://linux.enea.com/6/ls1021aiot/rpm
319
320_____________________________________________________________________________
diff --git a/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml
new file mode 100644
index 0000000..e58726e
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml
@@ -0,0 +1,145 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="getting_el">
3 <title>Getting Enea Linux</title>
4
5 <para>Enea Linux is available as both pre-built binary images and source
6 code. Both serve a specific purpose and each have their advantages. However,
7 using the pre-built binary images allows for getting up and running faster.
8 Please refer to the sections below for details on how to get Enea Linux as
9 pre-built binary images or source code.</para>
10
11 <section id="get_prebuilt_bin">
12 <title>Getting Pre-Built Binaries</title>
13
14 <para>Enea Linux pre-built binaries are available for download on <ulink
15 url="https://portal.enea.com/login/?redirect_to=https%3A%2F%2Fportal.enea.com%2F">Enea
16 Download Portal</ulink>. Log in using the credentials provided. Using the
17 menu, browse to the <emphasis role="bold">Linux</emphasis> section. You
18 will now have access to the <emphasis role="bold">Files</emphasis> section
19 and the <emphasis role="bold">Online Documentation</emphasis>
20 section.</para>
21
22 <para>The Files section lists each Enea Linux distribution, one for each
23 version and profile, as a separate download package. Clicking on the name
24 of the distribution will open a new page, which presents further details
25 about the content of the release and a list of downloadable archives, one
26 for each hardware target included in the release. Each archive provides
27 the following content:</para>
28
29 <itemizedlist>
30 <listitem>
31 <para><emphasis>images</emphasis> directory - this directory includes
32 the binary image files needed to boot the target with Enea Linux. This
33 includes the kernel, the root file system, device tree, etc.</para>
34 </listitem>
35
36 <listitem>
37 <para><emphasis>sdk</emphasis> directory - this directory includes the
38 installer for the SDK.</para>
39 </listitem>
40
41 <listitem>
42 <para><emphasis>deb</emphasis> directory - this directory contains all
43 the packages included in the distribution in deb format, which can be
44 installed using the package manager.</para>
45 </listitem>
46 </itemizedlist>
47
48 <para>For faster downloads, each archive is mirrored in several places,
49 geographically. Choose the archive in the region closest to you.</para>
50
51 <para>The Documentation section lists all the documents delivered with the
52 release.</para>
53 </section>
54
55 <section id="getting_sources">
56 <title>Getting the Sources</title>
57
58 <para>Enea Linux sources are available for cloning from a set of Git
59 repositories on <ulink url="https://git.enea.com">git.enea.com</ulink>.
60 Since Enea Linux requires multiple repositories, Google Repo tool is used
61 in order to manage configurations and make the cloning step simpler.
62 Google Repo tool uses files, known as manifests, which store a list of
63 tuples (repository URL, version). The Repo tool is then used to traverse
64 the list of tuples in the manifest file and clone the specified versions
65 of each repository. See <ulink
66 url="https://code.google.com/p/git-repo/">https://code.google.com/p/git-repo/</ulink>
67 for more info.</para>
68
69 <section id="get_sourcecode_stepone">
70 <title>Get access to git.enea.com</title>
71
72 <para>In order to get access to git.enea.com, a ssh key is required for
73 Git authentication. If you don't already have such a key, follow the
74 steps below to generate one:</para>
75
76 <orderedlist>
77 <listitem>
78 <para>Generate the ssh key pair:</para>
79
80 <programlisting>$ ssh-keygen -t rsa</programlisting>
81
82 <para>When asked for a password, just press Enter. This will create
83 two files in the .ssh directory in your home directory.</para>
84
85 <programlisting>id_rsa
86id_rsa.pub</programlisting>
87 </listitem>
88
89 <listitem>
90 <para>Copy the public key into an authorized_keys file:</para>
91
92 <programlisting>$ cat id_rsa.pub &gt;&gt; authorized_keys</programlisting>
93 </listitem>
94 </orderedlist>
95
96 <para>Once these steps are done and you have a valid ssh key pair, send
97 the public key, <emphasis>id_rsa.pub</emphasis>, via email to
98 <email>mailto:git_support@list.enea.se</email> in order to get access to
99 <ulink url="https://git.enea.com">git.enea.com</ulink>.</para>
100 </section>
101
102 <section id="get_sourcecode_steptwo">
103 <title>Get Sources</title>
104
105 <para>To use the Repo tool to download the sources for Enea Linux, do
106 the following:</para>
107
108 <orderedlist>
109 <listitem>
110 <para>Make sure that the repo tool is installed. If not, do the
111 following: <remark>Below is include of ID
112 "eltf-getting-repo-install-command" from
113 eltf_params_updated.xml</remark></para>
114
115 <xi:include href="../../book-enea-linux-release-info/doc/eltf_params_updated.xml"
116 xmlns:xi="http://www.w3.org/2001/XInclude"
117 xpointer="element(eltf-getting-repo-install-command/1)" />
118 </listitem>
119
120 <listitem>
121 <para>Then use the repo command below:</para>
122
123 <xi:include href="../../book-enea-linux-release-info/doc/eltf_params_updated.xml"
124 xmlns:xi="http://www.w3.org/2001/XInclude"
125 xpointer="element(eltf-repo-cloning-enea-linux/1)" />
126 </listitem>
127 </orderedlist>
128
129 <para>Once the source code is downloaded, the current directory will
130 contain a <filename>README</filename> file with instructions on how to
131 build the distro and boot the machine you choose. .</para>
132
133 <para>It's not necessary to explicitly clone the manifest repository
134 since that is done automatically by the repo tool. To see the current
135 manifest, use the following command:</para>
136
137 <programlisting>$ repo manifest</programlisting>
138
139 <remark>The UG should be updated with instructions on how to add
140 customizations. That section should also contain more info about the
141 manifest: the manifest templates, using a branch instead of the tag EL6,
142 etc. When this is done a reference from here should be added.</remark>
143 </section>
144 </section>
145</chapter>
diff --git a/doc/book-enea-linux-user-guide/doc/getting_started.xml b/doc/book-enea-linux-user-guide/doc/getting_started.xml
new file mode 100644
index 0000000..61ffea5
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/getting_started.xml
@@ -0,0 +1,108 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="getting_started">
3 <title>Getting Started</title>
4
5 <section id="use_enealinux">
6 <title>Using Enea Linux</title>
7
8 <para></para>
9
10 <section id="sys_req">
11 <title>System Requirements</title>
12
13 <para></para>
14 </section>
15
16 <section id="install_el">
17 <title>Installing Enea Linux</title>
18
19 <para>(downloading prebuit artifacts, brief description of files
20 etc.)</para>
21 </section>
22
23 <section id="install_el_sdk">
24 <title>Installing Enea Linux SDK</title>
25
26 <para></para>
27 </section>
28
29 <section id="boot_images">
30 <title>Booting the images (RAM, SD Card)</title>
31
32 <para></para>
33 </section>
34
35 <section id="pkg_mg">
36 <title>Package Management</title>
37
38 <para></para>
39 </section>
40 </section>
41
42 <section id="build_enealinux">
43 <title>Building Enea Linux</title>
44
45 <para></para>
46
47 <section id="build_sys_req">
48 <title>System Requirements</title>
49
50 <para>(covers shell configurations, required host packages, etc.)</para>
51 </section>
52
53 <section id="getting_sources">
54 <title>Getting Enea Linux sources</title>
55
56 <para>(covers repo tool basic info, instructions how to clone repos,
57 etc.)</para>
58 </section>
59
60 <section id="setup_buildenv">
61 <title>Set up the build environment</title>
62
63 <para></para>
64 </section>
65
66 <section id="build_elimages_sources">
67 <title>Build Enea Linux Images from sources</title>
68
69 <para></para>
70 </section>
71
72 <section id="build_crosscomp_tc">
73 <title>Build Cross-Compilation Toolchain</title>
74
75 <para></para>
76 </section>
77 </section>
78
79 <section id="custom_enealinux">
80 <title>Customizing Enea Linux</title>
81
82 <para></para>
83
84 <section id="layers_adaptations">
85 <title>Layers and Adaptations</title>
86
87 <para>(covers building with a new layer etc.)</para>
88 </section>
89
90 <section id="add_recipe">
91 <title>Adding a Recipe</title>
92
93 <para></para>
94 </section>
95
96 <section id="config_pkg_recipes">
97 <title>Configuring Packages via Recipes</title>
98
99 <para></para>
100 </section>
101
102 <section id="build_com_licenses">
103 <title>Building with Commercial Licenses</title>
104
105 <para></para>
106 </section>
107 </section>
108</chapter> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png
new file mode 100644
index 0000000..fe1ccd9
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png
Binary files differ
diff --git a/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg
new file mode 100644
index 0000000..d73f03d
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg
@@ -0,0 +1,888 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 id="svg2985"
14 version="1.1"
15 inkscape:version="0.48.4 r9939"
16 width="635"
17 height="536"
18 sodipodi:docname="install_new_sw.png">
19 <metadata
20 id="metadata2991">
21 <rdf:RDF>
22 <cc:Work
23 rdf:about="">
24 <dc:format>image/svg+xml</dc:format>
25 <dc:type
26 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
27 <dc:title></dc:title>
28 </cc:Work>
29 </rdf:RDF>
30 </metadata>
31 <defs
32 id="defs2989" />
33 <sodipodi:namedview
34 pagecolor="#ffffff"
35 bordercolor="#666666"
36 borderopacity="1"
37 objecttolerance="10"
38 gridtolerance="10"
39 guidetolerance="10"
40 inkscape:pageopacity="0"
41 inkscape:pageshadow="2"
42 inkscape:window-width="1618"
43 inkscape:window-height="1027"
44 id="namedview2987"
45 showgrid="false"
46 inkscape:zoom="1.5671642"
47 inkscape:cx="317.5"
48 inkscape:cy="268"
49 inkscape:window-x="1358"
50 inkscape:window-y="-8"
51 inkscape:window-maximized="1"
52 inkscape:current-layer="svg2985"
53 showborder="false"
54 inkscape:showpageshadow="false"
55 fit-margin-top="0"
56 fit-margin-left="0"
57 fit-margin-right="0"
58 fit-margin-bottom="0" />
59 <image
60 width="635"
61 height="536"
62 xlink:href="data:image/png;base64,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
94zyz+DggIsN14iZOTU9++fbOzs5ctW9a9e/fhw4f36NHj888/v3fvXt++fR0dHe3s7ON0CiGEkDlC
95gEl7fksvNgEoC7rSKVHiTmauLPSSspOnZOJvo+hLiNE9qR7/OO6OHTtycnIGDx5sPEMfPHhwdnb2
96zp07AWDUqFGBgYHbtm3btm1b48aNR44cKW4o7il1d3fXarULFy60p+5yN5k3b15mZmZWVtb8+fMB
97YM6cOeZ5Zs2aBQDz58/PyckpKirav3//0KFDLVbXr1+/nTt33r17V6/Xx8bGAkBISIi46rXXXgOA
98r776qqCg4MsvvwSAadOmWWu2t7c3PDzhFg/WXrhwISwsDADCwsIuXboEDx/ErdD42N8phBBCtpRd
99w1N2RFAMuFB2FRCA0Y0dSelVQMToPzB6AYSIlwYxxkC8nPexzlX+7rvvAOD11183ThRfiicTcRw3
100Y8aMe/fuZWdnv/322+K5tQCwdevWdu3aDR48uE2bNuJhyHKVu8n48eOHDx/epEmTGzdurFu3zqRV
101olmzZm3btu3WrVvBwcENGjT49ttv582bZ7E6d3f3hQsXNmnSxMXFZc6cOdOnT1+3bp246t13312y
102ZMnff//t6+t76NChr7/+WjxlzKJPP/20bt26wcHB0nnLYmR1cHCYMGECAISGhioUCgAYNmyY/Z19
103tE4hhBCygZZGyLIpKQCAuKO57L/S31JElv5PnBmLp0eRsvylK8TZLa3gHLdi+6ARQgihWk56dtBP
104P+3Zs3U5lB58LdtpLO5tLrsjhhhCS0OvFJ6lyFqazgTKeIHqeao3UJ2e1xmojhd4nvGUnrpye3A7
105T+kujyEDepTGVsaAgHhrKwaE4X2VEUIIPcXKJqulOyVZ6VVCxuEWrIXbsiKY0VS4dKLM4FHmuBhx
106EUIIPYXEw36UsdJTiwlhTLwlBnk43D6Irybh9sH0l5Xtl6bM+H7LzJ67PBLC85RS4AWGERchhNDT
1075sEJxaVBlAADRhhj4n0wHgq3RodzLYTbspXMeHYLZeHWNOCWTaUFgQkGKgBQyihlAIQynOMihBB6
108uhjfVZgyxhFCgFEGMnGGC6bh1sJkF4zCLZP+VzrZZdL5z5bOVdbrqUCBMuk+Vw9YfXYQQggh9MR7
1098OwgKZoaHb21K9waHesF6RkGYOE4LiEAIFjfzYwRFyGE0FOLGT/yVjoLyjT2moRbeCjcPjhnqvR4
110LhhdGvRgjmvHU1wx4iKEEHpqsbL9wNJjB9jDE1ZL4ZY9FG4frHsQdNmDm2BU4GRlPI6LEELoKcAA
111xFvnUp+6zhwHjEH75wLlclp2cjKhADIG0oP7Htz78eEdzQ8mwEYXDlHpzKmyO2mwij/8HSMuQgih
112J5oYawUAAYACsBbBnjKZjBDi6NDDSUUpJZQSyggDxhjHaOn5TMx0H/ODSbBZJGZUYAJl4onHAgVK
113qfiMhArd5REjLkIIoScUKwu0PM8b0u7mp98tzsotKdEKJVoDMHB2VOSevtnQp45fPTc3F0fKOF6g
114AiWUle1bNprXSkd5H1pVFoMFSnmB8QLlKaO09GxkKpjOcW0fy8WIixBC6IkjntvEAxh0et0/ifdu
115pxc4qThfb9KxOVXKHZwc6zs41NXouBKNJiO78OSlVCdHh1aN69X3dtUTyvOEp6WnPpVNc41mtwyk
116I79Qtg9ZustjWdBlgmB6B4xyT516rIhLSCXclrmihVRKpTXrKeiCuSexU1Kbn8TGI/RsowAGAENS
117Wu7l+Hs+Xg6928lVDiWM6YAIhCgAXGQc5+7i7O7s7O3m1cyb3ssvjL2ZfvPO/U6tfB0cZDwlvIEK
118DICVPu1AvIKWgXQ1UWk8FqOqQBlPmSAFXYFSxmjZdUdgR7iFZ22Oi1+sj6NGRg/fMoSQGQHAwAu6
119czEZeYWaLq1UzqoiAiWMGUoPuhI5IVQ8MksFEHTAa4grce9Yr06m+t6BUzd6tA2o46Ey8EynA4GW
120nhglXfMDAJRJZ0iV/iceu+Up4wXKC0ygjFHxuqMKfEHZdXVQQkLCSy+95OXlpVQqu3Tp8ssvvzza
121ID0aYsdFTnaShqYSy7THY1ZXza21plL2Z1RPpbVkxBBCVYACCIzpjl24U6zWN2vgJuO0jJYA05dd
122NwvSLY8BgFEwaJigA0EH+hLmBfVaeTc9dPp61t0ipQPlZIKBF3S8oDcIOgPVGQS9gWr1gs4g6Ay8
123zsBr9YJWL2j0VGfgxQwGnhkEKpSeP/VgjltOoxkDeyLujRs3+vfv37NnzytXrhQWFq5Zs2bHjh2P
124PFQIIYTQoxKP3eouxmUaeOZXr45axxVpFAJVAsgezlZ6DpTAg0EHvAEEHng9GLTgQut0D2z759F4
125bZFe6QCEowaDYDBQPS/oeaoTf5cGYKovDcO83kB1vGDgmV4QBIFRysT7JVfyHPfjjz8ODw+fN29e
126QECAUqns1q2b8Rx33bp1gYGBjo6OPXr0iI2NFRMppUuWLGncuLGnp+frr7+uVqvFdJ7nP/roo0aN
127Gnl4eKxYscKkokuXLjVo0OCbb74xThQnK4QQ41lLhSq1WJpJmda2JYSsXbs2KChIqVS2adPm5MmT
128GzdubNasmVh1QkKCmC0yMrJjx46Ojo6BgYHr16+3Vmm5Xbh+/fq4ceO8vLzc3d3Hjh2bk5NjbXNR
1293759jf/6uXPnjp+fX0FBgU6nmz17to+Pj4+Pz+zZs3U6nXFLTBpmrEmTJnFxceLypk2bxIW4uLgm
130TZoY57fWX4udsjEO1tppsZGEEIvlmzfGvCKLA4sQegJRAD7tbkFWjqahbx29AfQ8V6JzLta58kwp
131PqXAGGPA65igJ7wBqAGoHqgAlGfuMrdezVrvPhzr5EAUDsAIMwiU55mBf/Cb56mBZwaeGnhqEJhe
132oDzPeIEKAhMo5UuvDqrYXrjyI25kZOTEiROtrT148ODRo0dzcnKGDx8+bdo0MXHVqlVHjx6Nioq6
133deuWwWD46KOPxPTly5efOHEiKioqKSkpLS3NuJx9+/YNHz78u+++mzVr1sPjVXZHLaN+VahSc+Zl
1342tj2r7/+ioiIuH///qRJk0aMGLF3794DBw7k5OSMHDlSqjosLGzRokX5+fnHjx8/e/ZsudVZ68L4
1358ePffvvttLS0O3fu+Pv7L1iwwNrmokWLFn366aeUihd9w6effjpr1ix3d/fPPvssLi7u4sWLFy9e
136jI6OXrp0qbWhMDF06NDjx48DQFpaWnh4eFFREQAcO3Zs2LBhxtms9ddip2yMQ0XbabF888aYV2Rx
137YBFCTxoGIPACfz4my6+eq4EnDDjCyQSmLNa6avSuQJQmEwmqZwYNCDqgPAg8UIEAA44DQliwj6/K
138weFCXKqzCmSECZQJlAqU8VTcY0z50t9UoEwQqCCUrqKUCfTBXR4rduZvubkdHByKiopUKpWFjQnJ
139zMz08fEBgJKSEm9v75KSEgBo2bLlb7/91rx5cwC4e/dut27dbt++DQBNmzbdu3dvmzZtTApZs2bN
1400qVLf/vtty5dulis5aHTrytYqcWiTMq0ti0hJCMjw9fXV6zL2dnZYtUBAQHvvPPOmDFjGjZsaHEM
1417eyCscLCwtatW6empppvbqxr166zZ8+eNGnSjRs3Bg4cmJiY6OTkFBwc/Oeff7Zq1QoAYmNjx4wZ
142c/PmTYvNMCn2jz/+2LZt244dO5YvX75ixYqlS5f++9//njBhwpQpU0aOHCnlt9hfezplUqO1dlrc
143xFr51hpjbcQsDiyen4XQk4ACaGNvZqZmFjXy89bqH9wQCoA6KnXujvcdHYoAdJTJdXpX3uCtlNUn
144aldNIfA6EHggQGQKUDiDoxuoXEmuJm/1jsg3J3SJuVVwK11t4Okjt2xwO8+k1NKdZ717dAX24NlB
1454t5nKn7TlPtF4+Pjc/r06aCgIPNV1r7BnZycNBqNlM5xnCAIAODo6JiXl2cSvAkhQUFBEyZMsDbF
146sR0nyq3UYlEmhVjb1s6qL1++vHjx4hMnTnh6en7zzTfDhw9/tC5cvHjxvffeu3LlSl5eHgDIZDKe
147583zG/v999/fe++9uLi4sLCwHj16hIeHw8PjrNVqPTw8xN6VG3GLi4tbt26dkpLStm3bZcuWLV26
1489NSpU40aNYqPj3d2drbd33ILN0+01k6Lm1Ro8E0ylzuwGHERehIYALS/RiQ0CfDm5AqeL71zlPhv
149lxDeWVmiJBkqhZYyyC/kCvIV6kKZjHfxVAWpOA/GQK4ClRs4uROlM5MpCRC2fs/R1k28Gvu75+Tp
150dHrTkFEh9kTc8vcqDxo0aOfOnRWqOCAgIDk5mZWRIl/Dhg3NJzEAcOzYsd27d3/55ZcWS7PzvFNr
151ldpTZoW2NdexY8e9e/dmZ2evXLny9ddff+QuhIaGvvrqqzdv3uR5Pjc3V2qGjc1HjRqlUCgWLFhw
1525syZqVOniol+fn5JSUni8s2bN/39/cVllUolzTuzsrLMS3NxcQkKCtq1a5ejo+Pzzz/P8/zvv/8e
153HBzs7Oxcof5aY9IRa+2sEIuNManI2sAihJ4cDIAWFGkMPHV0VBLgZBzhOMJxHMcRjiOMyVNS76Vm
154qItLgFIgAJQCNYBaXXwnO1bD56lcwbUuuNUjKnfKqSgjBsb0rZv4XEnI1Bl0d3MLbt3JNv/Z8euR
155Hb8euZWacys1Z8eeIzv2lC7v3HNk554jSak5SWXLVlttxK4zp1avXr1y5cq0tDSdTnf+/Plx48bZ
1563mT69OlvvvnmtWvX9Hp9TExMaGiomP7aa6+Fh4cnJSXl5eXNmTNHyt+gQYNjx45t2LBh2bJl5qV5
157e3tfu3at3HZaq9QikzIrtK25iRMnxsfHGwwGAOA4C0NqZxfUarWbm5uzs3NKSspbb71lz+aEkEWL
158Fn355ZcffPCBQqGQ2jNr1qy0tLS0tLRZs2ZJh+E7der01VdfqdXq5ORkKTybGDZs2Ny5c6dMmQIA
159kydPnjFjhslBXHv6a41JR6y1s0IsNsakImsDaxFeWYRQrcQAaNrdIq86jgAciKHWKOgWF+UUFhbl
160F3O5+axEwyhlTACBB8aAyGmOPsHR2+DkKcic9EymM/AleoNaqy9uFexxKzVXoZArFTKL//QvXIy9
161cLH0PM0LF2IvXIgFAAJw/kLs+Qul6cbLtpX/ddm0adOoqKgTJ04899xzbm5uM2bMKDcghYeHjxo1
162auzYsW5ubpMnT5a+Sd95552ePXv269cvODg4ICDAeBM/P7+jR4/+/PPPixcvNint/fff79mzZ7nf
163g9YqtcikzApta2706NFjx451d3f/8MMPt2zZUm511mzYsOH99993dXUdMGBAv3797NxcJpM1bdr0
1641VdflVI++OCDli1bdu7cuXPnzq1bt160aJGYvm7duv3793t7ew8YMMA8joqGDh169+5d8S0ODQ3N
165ysoaOnRoRftrjUlHrLWzQiw2xqQiawOLEHpyUACaW6BxcVIygAexlpQuFObfIwT0POQVkIy8+mn5
166jXL0dTSUyFWgcGZEpSnmU5m8mBcK9Xo1z7Q81THg5XIil8s0OoODnOM4C9+xXbq06dKljfGymKlr
167lzZdy9KNl23Dw1dPvFGjRk2cOPHRJogIIfSE4AF0fx9PrOflVsfdnRcAyh5nC8C0Wu3t5Bgxn1JV
168p0njwGaB/joD/+OOo0F1BYWCAie4u9UJahwMAAQIIYQjhAEBgC9+Oj6oq//V+NtnLt8q0ejNK960
1696kOgAgMCjFACBAgDoFQgQChjAIQxIp21XHYhcNlxXPGekWXHcZ+tuzw+ZSil69evv3379oQJE2q6
170LQghVNWYziA4yGSEEI4jZTd0BADCmIEjpY+9VShc3FzcBAEUcrnA4H5xcT1PGVDCC3pKBfFKfQYc
171ZSDuBVPIZYIAKoWDs0oJZlf0Vi6MuE8wmUwWGBi4e/fuCh1MRQihJxORccQgCBwhwBEGRJxWEmBK
172pUImHtslDpoS/tbtQldHVyCGlPScwHZyShkhjAARIy4jRHxJOA4ASnQGhYJzkMtUSofK2udrbecx
173RtwnGB4RQAg9MwgAOKkcdHqeIwCEADACQDiQAXFycM519uANMgKuAnVOTVHvP34oX53TMoApHBwY
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
22204wZMwYOHLhr1y4pMTU1tVGjRoWFhXq9fsaMGT4+Pg0bNlyxYoVCoRAzMMaWLVvWtGnT+vXrv/nm
223myUlJWK6QqH48ccfmzZt6ubm1qdPn/j4eBuNNAcA5puLM1qFQiHWbvJSTFmxYkWDBg18fHxmzZpl
224MBikAqU8hJDIyMjBgwebLBsMhpkzZ4od/Prrr6VR1ev18+bNa9iwYcOGDefNm6fX6wkhLVq0uHbt
225mpjh559/FheuXbvWokULG323XSYh5ObNm6GhoT4+Pt7e3i+//HJubq6Ybq1txqy9EYIgfPLJJ02a
226NKlXr96qVatMWlLu0B05cqRr165ubm5Nmzb96aefbNdlzFofFQrF6tWrg4KClEqlmM3i58r4rTHZ
227xFrtUqesZbA2vFIfzXshlVzu19DWHTv7hwyz+LPx5y0V/RYTPeY3Y0WdO3/Bzc119MgX3N3dz124
228KKXr9fpV33436qXxL74cun3Xbqlh1tJrj6obVQCYMmni9l2/SCk7du8OmzxJKj81Le2jTxePemn8
229iDFjP/j40/z8fDG9f8iw3//cNyHslZDnR/5n1uyk5GTb+XU63dervxUHedvOXf1DhonpgiBs3rot
230NOzVkS+NW/7VCo1GUyn9sofJeFqNuN27dkm8fiM/vwAAYq9d69ypY2xcHADk5OYmJSV379ply46d
231t1Pu/Pe7b//73be3kpO37tgpbftPdPTa1d9EHfhbSjlz9tx7H3w4O3zGS2NGG9fSpVOnf6JjACA7
232J2f1d9+XaDQAcDU6ukunjlIecd/ykYP7jY/pXrh0adWXX/z+y65uXbp8vXqNtV5UVGRk5JQpU4xT
233wsLCIiMjAWDlypWbNm3avXs3AOzatWvz5s2rVq1asGDBkiVLpF0HS5YsCQ8Pd3d3X7p06Z07d65c
234uXL+/PmoqCiptNWrVx87duzw4cOJiYk8z3/88cfSqkOHDkVGRmZlZQ0bNuw///lPRVtuvrnBYBB/
235SwvGL0WHDx8+f/785cuXr1+/vnz5cvNi9Xr9qVOnBgwYYLL8+eef37hx4/Lly2fPnj1w4ICUf9my
236ZfHx8WfPnj179mxMTMznn38OACEhISdOnACAtLS02bNnFxUVAcDx48eHDh1qT98tlgkAEyZMmD59
237+u3bt5OSkvz8/BYtWiSmW2ubMWtvxJdffnny5MmIiIjr16+npaXZGHCLQ/faa68tWLAgJycnKirq
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
270it7Zo5w7YAwdMnjDTxvbt30OANq3a7txy5ahIaXnQw7s3+/b79dl5+Rk5+R8u3bdwP79rBVS19v7
271m6+++vvAwW07d5mv7dq583frfggZNBAAhgwc8M2a77p27mySx93dPeVOqj39eczriD788MPvv/9+
2721apVWVlZWVlZq1atWrt27QcffAAAarX6lVde+fnnn8eMGfPdd9+FhoaKf48TQhYuXPjVV18tXLhQ
273uvwmNDR0/vz5GRkZGRkZ8+fPl8qfOnXq1KlTr127ptfrY2NjJ02a9DitLZe3t/e1a9esvQSAefPm
274paenp6enz5s3z7gx4nw6Ly/v+vXr3bt3N1kGgIkTJ0rbzpnzYIdEaGjonDlz0tLSxEO2oaGhYvrQ
275oUPnz58/efJkAJg0adLMmTOlg7jlslamWq12c3NzdnZOSUmZNu3B/klrbQOj/QTW3ohXXnll5syZ
276SUlJeXl58+bNs9Eqi0M3efLk+Ph4cZ+89FBMG2+61B5rfTQfCvPPlclbY6Lcj5y1DNaG17iP1ti/
277z02r1YZNmhg2aWKFTmZ5zEof05Fjx9q0buXk6JhXxtnJqVWLFkePHWeMDQ0ZsvbH9eIX4/f//VFq
278mLV0xtjgES+Uu1wNqm5UpXImjB937sSxCeNeMknXarUKhcKg1yckJn68eImUbtKAcvMPHTL4v+v/
279l5OTm5OTu279Bil97JjRHy/+7J/omOzs7MtXrs57b4FUZlUPvsl4lhNxBw/ory4pad+uHQC0a/uc
280wcAPHtBfXBU2eVJAQMOpb4dPfTs8sFGjKZMm2ijHy8tz1VdfHDp8+Oet20xWde3cKS8/f0C/vgAw
281sH//+3l55gdxJ708fsacuZV1Va61cywJIS1atIiIiIiIiGjevHnz5s0PHTp06NCh5s2bE0JmzJgR
282Hh7et29fQsjIkSPDwsLCw8PFreRyedOmTV999VWpnEWLFjVs2LBdu3adO3fu1auXg4ODmB4eHj5q
2831Kjx48d7eHiEhYVNnDhROr3T5GxPG400Z23z9957r0+fPnK53OJLABg0aFCXLl3at28fHBy8YMEC
284kxKOHj3aq1cv8YRY42VCyMKFC4OCgtq3b9+lSxfxcKzU8ZYtW3br1q1bt26tW7deuHChmD506NC7
285d++GhoYSQkJDQ7OysoYOHWq78eWWuX79+oULF9apU2fw4MH9+vWT8ltrm3GZ1t6Id955p2fPngMH
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
430f/9+WlpaTk7Ojz/+SBauWbMmMzMzNTU1NTU1LS1t7dq1ZHloaOiSJUsqKytv3Lhx584dnf3SRlv7
4312sopGgMAAACAEELC1w4dOkRoceTosdmR88h/q9dFP83L11bz0KFDZQyUlJTEx8crLzj/5DZB2UFB
4322cH5J7cRBHF+c3tc9AQXPTm/uT1BEOHRSUXl1UXl1eHRScpLGRkZ1dbWqp8IJV96eHg8fvyYnC4t
433LXV1daWqkQ8TJAhCJBJxOByd9Z89e6axv1VVVW3atKGqqVegCvl8fnBwcHBwsMbK1EuVdSGEMjMz
434yemMjAx3d3dyun379lR5eno6Vd62bdvY2NjCwkLlxrX1iyZabe1rK6cW1BgAAAAAgiAa/xcw6nmM
435q8AlckIiJzAFjhDCMQJhMqSQ4q/PKssxTIZhKse4dnZ2RUVFKomWellQUODh4cFischvIinXpL6Y
436ZGZmJhaLddZ3cXGhplNTU/v162djY8NisaysrEpKSugHhGzQ09PT0NCQyTVm5XUhhNq3b09OuLu7
4378/l8clogEFDlHTp0oMrPnDmTnJzs6enZsWPHS5cu6eyXNtra11ZO0RgAAAAAVNffnHJychw44It2
438bq40dZhcx8UwjHjz1DSGYVUSRZVYQZ5AxhSEorJIUVWEKf7NuNUS6SuJVCXjBgYGHjhwQFskLi4u
439+fn51B8X1KnpetRXvuwaHBw8adKk3NxchUIhFAp1Nku2VlZWFh8fb29vTxay2eza2lpyurS0VLm+
440yiXevLw8aqJ169bkNI/Ho8pzc3Opci8vr9OnT5eXl8fExEydOrV+40DTvrZyisYAAAAAoDplXDLd
441MvmOkM4DXPUWcAyvEmNVEgzHyGNcXFFZpKgsJl9iGPZKIqmWSHD8jWyxcuXKw4cPz58/Pzs7WywW
442v3z5MjExkZo7c+bMadOmZWdny2Sy9PT04OBg+rAZ1heJRJaWllwut6CgYPr06fRtatOjR4+NGzeK
443RKL8/PxvvvmGpmZUVBSfz+fz+VFRURMmTCALQ0JCIiIiiouLi4uLIyIiQkJCqPKsrCzy21nkvVfM
444+6WMpn2N5coLqgcAAAAAMc+4DNMti8XCcdzQ0JAm3RoaGuI4rrI7NjU0PnH31Ym7r4xZhgghQxPL
44586dXnT+9ysCIixBimxjuO/pw/9GHJkZvLOXq6nr79u2XL1/279/f0tLygw8+2L9//59//knOnTNn
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
510x+N16tRJ2zdrAQAAgBapkTNuSUnJo0ePevfuHRAQoK1OdXX1rVu3yMe3Ne7amWOxWBp/aoN5BX0G
5118z6AQQAAtHiMziqXlT1nuDfMycnx8fHhcrk0jwDicrk+Pj45OTkNi7xJaPxV5+auRXYKAACaHUbH
512uGkZGTY21l7du+vcdxcVFfn6+pLPeqPB5XIFAoFyybrkeLFchhBiGxl/2y/0+qGeckklQsjIxMJ/
513SuqKPX/WShUIIY6p0cppvailWCxW586dMzIyqMAIgujSpUt2dnb9DpjencMsskcsFsvCwqJ9+/aB
514gYH/+9//7O3t69FUwzvViME0F3DMDQBodMyOcZ8/v/zblfsPH+rcBxEEofMxtwqFQiaTqVzlrZFI
515ZngazvA0FEmlCCG5pLJfaGK/0ESF7BVCSCSRzw32nBvsWStRzeVmZmaJiYnUy7Nnz3K5LeS3lAmC
516wHFcIBDs379fLBZ379792bNnEAwAADRTTO9VLi0tY5h0MQbUb6rCFbjyBIYRr1sjEELY6yfMY5jq
517ggsXLoyOjqZeRkdHL1q0iHoplUojIyOdnJycnJwiIyOlUik1a/369Y6Ojra2trNnz5bJZGSh+kE8
518juOrV69u166djY3N1KlTRSKRepefPHkyevRoW1tbKyuroKCgiooKqrW4uDg3NzcOh+Pn55eRkUGW
519y2Sy8PBwW1tbJyenDRs20I0mQlwu19PTc+vWrV999dWyZcu0RfXixQt7e/uXL19SC7548cLR0fHl
520y5dUpxQKxfLly11dXa2trTdt2sS8g40YjM7VadtkLBZL2ybbuXNn+/btTU1Nu3btevPmzYMHD3bs
5212JEc88ePH9N3U+M2oo7p4YQ8AKAR1eHbQQyTLpNjXIVCobIUhmHKE2oJmJqrmnFHjRr1/PnzP//8
522EyGUkpIiFAqDgoKouWvWrMnMzExNTU1NTU1LS1u7di0168qVK/fv309LS8vJyfnxxx+1dWfLli0p
523KSnJyclPnz6Vy+XLly9XrzNmzJjw8PDi4uLCwsLWrVt/++231KykpKSUlJSKiopBgwbNmDGDLFy7
524du2TJ0/S0tJSU1MvXbqkfSzf8PXXX1+9elVbVDY2NqNHj969ezdVf/fu3ePHj7e2tqZKoqOj//jj
525j+Tk5Ly8vOLiYuYdbMRgdK6uHpvswoULV65cefHixfjx4wcPHnz69OnLly9XVFQMHTqUGnOa9apv
526I/IdTj5BmsloAAAAI8LXDh06pO2x9UeOHpsdOY/8t3pd9NO8fG01Dx06VMZASUlJfHy88oLzT24T
527lB0UlB2cf3IbQRDnN7fHRU9w0ZPzm9sTBBEenVRUXl1UXh0enaS8FEKIIIhdu3YNGzaMIIjAwMDd
528u3cr7y7bt2+fmZlJTqenp7u7u1MLUuUZGRnK5SoTHh4ejx8/JqdLS0tdXV219Z1UVVXVpk0bqhHy
529+YMEQYhEIg6HQ067u7srR0WtS71rymQymbGxMU1U2dnZLi4ucrmcIAi5XO7m5lZQUKDcVIcOHdLT
53001WaZdLBRgxG2+oasskEAgE5TR65ahxzmvVqrK9xowAAQEM0/vdx1Y9f1amfVcYUuEROkBMIIRwj
531ECZDBIG/PqssxzBC0zEuQmjSpEkrVqw4duxYWlra2bNnlWcJBIL27f99In2HDh34fD41iyp3d3dX
532LldRUFDg4eFBvTQw0HBWIDU1ddGiRQ8ePCDPoxoaGlKzqG9AmZmZicVicprP5ytHpW3VKkpKSuzs
5337Gii8vDw6NKly6lTp8aNG/fLL7/06tXLxcVFuYXi4mL11THpYCMGo3N19dhk1He7zczMkJYxp1mv
534xvoAANDo6vabU05OjgMHfNHOzZWmDpPruBiGEW+er8MwrEqiqBIryBPImIJQVBYpqoowxb8Zt1oi
535fSWRasy4pqamc+fODQsLi4iIMDU1VZ7F4/Hy8vLI6dzc3NatW1OzqPK8vDzlchUuLi75+fnUXyjU
536+W1lwcHBkyZNys3NVSgUQqFQYx1lrVu3ptb+9OlT+sqUvXv39u/fnz6qyMjIrVu3IoS2bt06f/58
537lRbatm2bm5tbjw42YjA6V9fwTaZRXbsJV3ABAI2uDhmXTLdMviOk8yKuhhuUMLxKjFVJMBwjj3Fx
538RWWRorKYfIlh2CuJpFoiwXHNO8rFixfL5XLle6ZIISEhERERxcXFxcXFERERISEh1KyoqCg+n8/n
53986OioiZMmKCtLzNnzpw2bVp2drZMJktPTw8ODlavIxKJLC0tuVxuQUHB9OnT6QcHITR+/Hhq7ZGR
540kfSVa2trHzx4EBkZuW/fvh9++IE+qgEDBlRXV2/bts3c3NzT01OlqcmTJ8+ZMycvL+/ly5dRUVHM
541O9iIwehcXcM3mUZ16iZCyM7OLjs7u06rAAAAekzPKjNMtywWC8dxQ0ND5buCVZiamuI4rnI60dTQ
542+MTdVwghtrExQsjQxPL86VUIIWNTc4QQ28Rw39GHCCGOad1Ogy9dunThwoXe3t4IobFjxy5ZsoSa
5431a9fPy8vL7lcHhwc/N1332lrYc6cOQYGBkFBQfn5+R07dly1apV6nX379s2bN2/s2LHOzs7z588/
544deoUfVRLliyJjIzs1q2bsbHx/PnzqVuQVJD3ynK5XHd398DAwAcPHjg4OOiMKjIy8ptvvtF4Q9aC
545BQtEIlGfPn1EIhF1pzGTDjZiMDpX1/BNphHDblIWL17cq1evyspKAm6eAgA0EpZQKCSnEhMTw8LC
546NFa6ci2Z4S9gJCcnW1hYODs7czgcjZUJghCLxaWlpTU1Nf7+/g0LHrxH4CcpAADNHaNDxo+6dnVw
547sGdyZcvDw+POnTtyuZzmBhwcx0tLS/38/OoQJgAAANDMMcq4jo4ODJvj8Xi+vr5ZWVnkNy7UK7BY
548LB6P5+fnB88OAgAA8F5p/G8H8Xg8Ho/X6M2C9xycUgYANHfwRHoAAABAHyDjAgAAAPoAGRcAAADQ
549B8i4AAAAgD5AxgUAAAD0ATIuAAAAoA+N/+0ggUCQk5PD5/PVHxCEEDIwMODxeJ06dYLv4wIAAHiv
550NHLGLSkpefToUe/evQMCArTVqa6uvnXrFovFop6S9tbp/AVB+IlBAAAADcTorHJZ2XOG+SYnJ8fH
551x4fL5dI8OIjL5fr4+OTk5DQs8rcDHuIGAACgfhgd46ZlZDB8kkFRUZGvr69cLqevxuVyBQKBcsm6
5525HixXIYQYhsZf9sv9PqhnnJJJULIyMTCf0rqij1/1koVCCGOqdHKab2opVgsVufOnTMyMqjACILo
5530qVLdnZ2Ex2SwpEuAACA+mGUccueP/8rNRUhpDPpEgShUCh0NohhmMpV3hqJJNzbGCG0PVWKEJJL
554KvuFJiKErh0ZghASSeQRIV4Ioa3H7qs0ZWZmlpiYOHToUPLl2bNnuVwuk04BAAAA+sT0XuXS0rLL
555v125//ChzoM8jAH1m6pwBa48gWHE69YIhBCG4a9fqi64cOHC6Oho6mV0dLTyc+mlUmlkZKSTk5OT
556k1NkZCT11F6ZTBYeHm5ra+vk5LRhw4b/wsDx1atXt2vXzsbGZurUqSKRSGV11B8cLBYrLi7Ozc2N
557w+H4+fllZGRQa5w5cybZ8vr16+EsNAAAAFIdvh3EMOnSXMFVprIUhmHKE2oJmJqrmnFHjRr1/Pnz
558P//8EyGUkpIiFAqDgoKouWvWrMnMzExNTU1NTU1LS1u7di1Zvnbt2idPnqSlpaWmpio/L33Lli0p
559KSnJyclPnz6Vy+XLly+n6WlSUlJKSkpFRcWgQYNmzJhBFq5evbqgoCA9Pf3+/fvXrl2jWRwAAMB7
560pW7fxyWTbv6zApo6TI5xqQxKYXyMq7qggYHB/PnzycPcdevWLViwQPnRvAkJCVu3bm3Tpk2bNm1i
561Y2MTEhLI8vj4+K1bt7Zu3Zosp+rv2bNn+/bt7dq1s7a23rhx46lTp2h6unPnTjc3Ny6XO3/+/Pv3
562/z3dffTo0c2bN5MPUIqJiaFZHAAAwHuFJRQKyanExMS3GwoAAADQgv2XcQEAAADQdOBXHgEAAAB9
563gIwLAAAA6ANkXAAAAEAfIOMCAAAA+gAZFwAAANAHyLgAAACAPkDGBQAAAPQBMi4AAACgD5BxAQAA
564AH3472l9OI7n5OTw+XyJRPIWA2qm2Gx2mzZtOnbsqPyrzhQY24agH1sAAGgu/vuVx8ePH9fW1vr5
565+cHzZetBJBLdvn3bzMzMw8NDfS6MbUPQjy0AADQX/x3jFhUVDR482NjYmHqILGDO2Nj4k08+uXz5
566ssasAGPbEPRjCwAAzcV/GVcqlZqYmKg/Kx4wQRCEqamptpPGMLYNQT+2AADQXBgpv4CU0BAEQdDM
567hbFtCPqxBQCAZgEyrp7A2AIAwHvujYwLRxJNB8YWAADec2983YJ4q3oH9NP/uhp3pTQD3YhraUTN
568aMyb+IMAAABN7t06xtVnANS69LPStz622rTgMQcAgHdKU13HFYlE8cdP3Pjj5vPyclNTk4+7dQsa
569MbyHpyf9UvUIoM8XgdevJNFUOHby59379k//amrI2DEa16WfK6z16xpCiMVicTgcnrNzTx/vsaOC
570WrVq9S4E1izGHAAA3ilNdYy7Ys1aZ0en2M0bec7Or169+vvevSMJx7y6d6dfqn4B0CyF4/i5xAvz
571IyMSjp8YOypI+UeLmsUx7r3btxBCtbW1BYWF5y5cnDpj5vYtMU6Ojm89sGYx5gAA8E5pqoz7KC19
5727ekVxsbGYrHY2Nj4808/7RcQUFtbixDCcTzh+ImLl5NEtaJP/fzmhs9is9nKAWirgGHYoYSjv125
573KqqtDQ0JHjt6VEDgIISQ/4CBCKHfky6ph3H3r78tLS2GDx2SeOny3b9TfT/xUe/su5xxq6urEUIs
574FsulbduoObMtLCz2HTz83cL5SPso3X/4MG7PvoKCAmsb69CQkC8HDaSpjFr0mAMAwDulqe6c8vby
575Wr1u/aO0NKlUiuO4TCYTiUTkrF9+PZ2WnrFr+09nf/4ZJ9D+w0eoW2PoKxw9cTIjMzNuW+y5X35+
5768fIlQRDkIeC927fu3b6lMYxzFy6MGTVKKpWODhpxLjGRKqfW1bi9phno+rVGTuA4rlAoxGLx4MAB
5779x88IAu1jdLa9Ru/mjwp5UrS3p07Hj95Ql+5GY1507z/AQBAf5oq4/6wfGm7dm6x23cOGzVmwuSp
578cXv21tTUkLMuJv22YF6kpYUFQsTc8Jl/3LpF7VLpK/x29eqCqMhWVlYIERGzwwmCqKysRAhVVlZW
579VlaqxyAoKcnOedLns08Jgvj800+zc56UlJaqrKtxe00z0PVrTaXE0sKiqrqanNY2SkaGhiUlJQWF
580heZc7ncLF9BXbkZj3iRvfwAA0KOmOqvMYrG+mhQ24+uvDAwMnublHU44umb9hjUrvkcIlZaVjZsY
581RtU0MDAg3jzZqK1CeXmFra0thmEIIfIENX3Y5xIvVFZW9h/0pXLJtKlTVJbSz968fmtRWep5eXmr
582Vq3oR2nDj2v3Hjhw8Ei8ubl5+Izpn3h701RGLXrMAQDgnWKku0q9EAQhkUjI38J1dHCInB0+Ysw4
583cpaTo+O2LZudnZyoyuRhE0VbBQcHh6KiIjdXV+XKLBZLYwAyufy3a8nnf/2FakdQUhL21bRJoRNN
584jI0boYdvw+UrVz/x7kFOaxultm1aR69ZbWhoeOvP26t+XHcy4QhNZQqMOQAANLWmOqv8v0Xfpty4
5858eLlS7lcXsznx+7Y2f3jj8lZQSOGr1i15lFaenl5+f0HD/+36FvqtCF9hSGDB/20M05QUlJd/WrH
586rt1kYatWrQoKi9QD+P369a5dOptxOC9f45qZdfbwSLl+g2huZ5UlEsk/ubnb43ZdSkr6avIkslDb
587KK1cszYrO1soFEqlUgNDA/rKzWjMm+oTAAAA+tJUZ5WnTZ1y4pdTW7fvkEqkNjY2vf18v1/6Hdn+
5888CFfshBauWZtSWlpm9a8b77+mnjzZKO2CmOCRtbW1v5v0bcSqWRyaChZOGnC+Ij5C2pqan5LPKcc
589wPnEi9O+mkKeDiVhGDZy+NB9Bw/37xuAmslZ5S++HMpisdhsU56Ts2/PTxIOHDA0NCC/zKptlPr6
590+69YvbasrMzV1XXV8uXv85gDAMA75b8n0icmJg4YMKCx2jU2Nmaz2UZGRiwWC8dxuVxeW1tL7WfZ
591bDabzTYwMMAwTCwWy2QyhJCNjc2LFy9oKiCEzMzMTExMWCyWWCwmT1mz2WwOh8NisahlSVZWVrW1
592tXK5XLnQxMSEw+FUVVVR61JeacP99ttvQ4YMUS+v39ja2NhQ0xiGyeVyiUSi/NsRGkfJxMTEzMyM
593LFQegeY+5trGFgAAmoumOsaVyWTULludWCwWi8UqhVTu11YBISQSiUQikc6mkNp1SpJUKiWfCU+t
594S3mlTaoeY6szNo19p/rIpHLLHnMAAHinvFu/q9yCwdgCAMB7zkB3FQAAAAA0GBzj6gmMLQAAvOcg
5954+oJjC0AALznIOPqCYwtAAC85/7LuKamphKJxNTU9C1G06xJJBLqgTwqYGwbiGZsAQCgufgv47q5
596ueXk5HTs2BESQz1IpdKcnBw3NzeNc2FsG4J+bAEAoLn47xcwTE1Ns7Ky8vPzyV85AHXCZrPbtWvX
597uXNnjd+FhbFtCPqxBQCA5oIFP0cAAAAA6AF8HxcAAADQB8i4AAAAgD5AxgUAAAD0ATIuAAAAoA//
598fTuorKzsLcYBAAAAtGxwrzIAAACgD3BWGQAAANAHyLgAAACAPkDGBQAAAPQBMi4AAACgD5BxAQAA
599AH2AjAsAAADoA2RcAAAAQB8g4wIAAAD68JYzbkDgoLcbAAAAAKAfbyfjQqIFAADwvjHSNoNMiiwW
600i8Ph8JydP/HuMSZoZKtWreibCwgc9HvSJZ1rZVIHAAAAaEm0Zlz0Oi9KJJKi4uLLV65+PSt8W8xm
601J0dHfcUGAAAAtBx0GZfEZrM/6NDhgw4duFzu/kNHvls4HyGE43jC8RMXLyeJakWf+vnNDZ/FZrPJ
602w2LyfzJbF/P5e/YfePgoTYFhXt27z4+ca2VlhTQdCt9/+DBuz76CggJrG+vQkJAvBw1sit4CAAAA
603b0sdruN+OTDw3v375PSp02cePkrbvH5dwoEDCgzff/gIep1lf0+6RGXTFavXjBw27Oej8SfjD9vb
6042e45cFBb42uiN0wMCT7/6y9bN27Ievy43v0BAAAA3k11yLi2NjbVr16R04mXLkfOCXd2crKwMJ85
605/esbN29qXGTvzh3dP/7IxMSEy+V+PWXyX3+namvcyNBQKBRWVlU5OjgsiIqsUx8AAACAd99/Z5UT
606ExOp6SFDhqhXFb54YWlpSU6XlpWFfTWNmmVgoDlz5/zzz669+3KfPn31qoamGkJo9YrvDyckHIpP
607MDc3nzNrRk8fH+V4AAAAgObujeu4GhMt5cLlpB6e3clpRweH9WtXq99FxWKxlF+uWrsubMJ436VL
608zLncGpFo+Oix2hr/oIP7qu+XEwRx96+/12+KOXX8KH0wAAAAQPOi+6yyVCr9Jzd32864i5cvT50U
609RhYOHzpkY8zWgsIiuVyel//sh7XryHIrK6uCwiJqWbFYbGZmxjY1LS0r27RlK81aVv24rqCwUKFQ
610IIRYBiyamgAAAEBzRHevckDgIBaLxWabtnbm+Xj32LtjR6tWVuSskcOGGrBYy39YVVpW1qY1b+qk
611SWT5+LFjZkfNq6mpIW+eWjAvaseu3SvXrLW1sRk3etSNm7e0rau3n9+ylavKyspcXV2XLlrUeB0E
612AAAA3gksoVBITiUmJsKJXAAAAKCJwJMMAAAAAH2AjAsAAADoA2RcAAAAQB8g4wIAAAD6ABkXAAAA
6130AfIuAAAAIA+QMYFAAAA9AEyLgAAAKAPkHEBAAAAfYCMCwAAAOjDG7+rbGNj87biAAAAAFq2Rj7G
614VXlaH43bt2937NiRef2W533uOwAAvIfe2lnlhQsXRkdHEwTxtgIAAAAA9OmNjMvSpIlWnJaWNnjw
6154HovXlVV9e2333bs2NHMzMzGxmbEiBHXrl2j5mZkZAwePNjCwsLCwmLw4MHp6ekqi2/YsMHIyGjD
616hg3a2if7bmBgYGVl5enpuXjx4vLy8npHCwAAALyRcYnXVKabQnV1tampab0XHzdunFAovHDhQmVl
617ZU5Ozvjx41etWkXOys3N7du3b//+/f/5559//vnniy++6NevX25uLrUsjuM7d+6MiYmJi4vDcVzb
618KgiCwHFcIBDs379fLBZ379792bNn9Q4YAADA+0742qFDh9QzrkQiiYiIcHR0dHR0jIiIkEgk9OXU
619glevXvX09GSz2a6urnv27CHepBwAfWubN29u06YNi8VSaYHD4VRWVhKaTJgw4fvvv1cuWb58+cSJ
620E6mXiYmJXl5eBEH4+PhcuHBBYyNI6W8O0rJly6hGMAxbtWqVm5ubtbX1lClTampqhEKhnZ3dixcv
621qPpCodDBweHFixfqlVVWQdP96OhoBwcHGxub8PBwqVSqbe0ah4t+EwAAANAzHddx16xZk5mZmZqa
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
7346tMMOLVdNMassb8A1ImRkVHA559d/f13hFBGZubk0InpmVkIod+uXgvo87mR0b/n26LmznFydGSz
7352eNGj3ryzz9k4d6dO7p//JGJiQmXy/16yuS//k6tw3oNDYVCYWVVlaODw4KoSPUKB6e4ebqYmRqx
736zE0Npn9ur55UEEIR/R3szP+N8NzDynkDHHmtjC3YhuF97a8/qaFv57esVxH9HO0tjOwtjCL7O5CF
737n7TjcowNrmVXI4SKX8rv5otGe9NdpJsf6ORsZcw2ZoX0tHlS+u8n3dAQVdRglbW4o6XxokFOGhdk
7380jv6fmmMn/L9qtXTpk75ol8/muABRcO9ygqFAiFEJsXBAwP/FzGXIIiNW7Ze/u0KQqiVldW2mM2O
739DqrjTrr7d+rWjXQn9B+lpe2M3Wpra4MQij9+4llB4a7tPyGE1q7fkHD8xJSwUPpw791/sGfHdoTQ
740ug2bjp44OWmi5mTwe9IllROwp06fefgobfP6deZc8592xu0/fGTW9GnkrDt//73hxzW2Njanzpxd
741vHRZ948/Wr92tY219akzZ2Nit8VsiEYIrYneEBE+y/cTn5eVlYcTjqqfmNIY28Tg4O27dvl//pmB
742gQFC6HDC0VEjhnO5XOWljp38OS09fdP/27vzuCaufQHgJ6SQSAgISciCil5pe/teq1RAlnolUJf6
743WnEBRVBs1SrIouBG3607LogiooCEVSkgonaxraJWQKvv3daliO21fV4XsJDEJFplCTAkeX+MneYm
744k0lCNVj6+3766SeZmXPO73fOkDNb4o7tzmznsooKfOHGLVsT4+I+TF2DYVjxgYOFpQdWJS+3PKny
745Q1Vy+f0SST5CKD0zk9ieosOJcbl0+YpxzNSDAoCF3po0cUdm1rR33m5ra//PV15pa3vc09NTc/rM
746+r9/QGzj5uqKv2AwGMRB4U83b0qKiv9161ZbWztCCN85LbRl44ayioqD5RVOTk5J8XH+foZ3uH6S
747deXVKW7e727r0iCE6HY040r4zvbEa/ljbG7hHeItsbmpehSPMZHrk+JD3ByIgu++wdlfpwj9K7v4
748gnKuP4fxAkm7BDfWk0vBjBdo3b1PTo23zxxy4KKy9KKSzbRbPoEf8BeWcUFLsqPOy1T8uNt37gb/
749bRxF5ECfyXNcR0dHhNCJmlNZe3PSd2Xi062zs3POnt0iocDUjd5Hjx6583jEW/yETP+cNWnpUny6
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
884"
885 id="image2993"
886 x="0"
887 y="0" />
888</svg>
diff --git a/doc/book-enea-linux-user-guide/doc/introduction.xml b/doc/book-enea-linux-user-guide/doc/introduction.xml
new file mode 100644
index 0000000..ccbdb0a
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/introduction.xml
@@ -0,0 +1,55 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="intro">
3 <title>Introduction</title>
4
5 <para>Welcome to Enea<trademark class="registered"></trademark> Linux</para>
6
7 <para>Enea<trademark class="registered"></trademark> Linux is based on the
8 open source configuration system Yocto which is becoming the de facto
9 standard for building and configuring embedded Linux. Yocto development is
10 coordinated by the Yocto Project which was initiated by the Linux
11 Foundation.</para>
12
13 <para>The Yocto-based development environment of Enea Linux allows you to
14 build embedded Linux kernels and tool chains on a Linux host. It aids you in
15 customizing embedded Linux kernels for a specific hardware architecture, and
16 in building and troubleshooting embedded Linux applications on targets or
17 emulated in QEMU.</para>
18
19 <para>Enea Linux also provides verified and easily installed board support
20 packages (BSP) for a number of hardware architectures. Each BSP includes a
21 Linux kernel and a root filesystem (rootfs), plus a number of packages that
22 can be extended on request.</para>
23
24 <para>Providing true open source Linux with customer interests in mind, is
25 the cornerstone for Enea when supplying Enea Linux. We provide:</para>
26
27 <itemizedlist>
28 <listitem>
29 <para>A Yocto compatible environment, familiar for those who have used
30 Yocto from any other distribution.</para>
31 </listitem>
32
33 <listitem>
34 <para>The Enea Linux environment is fully independent from hardware
35 vendor leverage and does not push for a particular hardware
36 architecture.</para>
37 </listitem>
38
39 <listitem>
40 <para>Enea has initiated and contributes the ptest package test
41 framework to the Yocto Project. Enea also uses ptest to verify the
42 packages on target.</para>
43 </listitem>
44 </itemizedlist>
45
46 <para>By using, testing Yocto and sharing Linux patches with upstream
47 projects, Enea assists the open source community in providing mature
48 software in less time. As an Enea Linux user, you are welcome to contribute
49 to the global development of Linux by propagating your Linux patches through
50 Enea.</para>
51
52 <para>Enea can also assist a customer by analyzing source code and producing
53 valid open source reports, as required by the community when open source
54 components are used.</para>
55</chapter> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/preface.xml b/doc/book-enea-linux-user-guide/doc/preface.xml
new file mode 100644
index 0000000..1752ff5
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/preface.xml
@@ -0,0 +1,157 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="preface">
3 <title>Preface</title>
4
5 <section id="guide_purpose">
6 <title>The Purpose of this Guide</title>
7
8 <para>This guide is intended for all Enea Linux developers who want to
9 configure and build customized Linux kernel images for embedded system
10 targets, but also for developers who want to build and run applications in
11 Enea Linux.</para>
12
13 <note>
14 <para>Always read the README files and the Release Information before
15 this User's Guide.</para>
16 </note>
17
18 <para>The recommended order of operations for developers are:</para>
19
20 <orderedlist>
21 <listitem>
22 <para>Receive information from Enea and read the initial documentation
23 online.</para>
24 </listitem>
25
26 <listitem>
27 <para>Update the development host with the needed packages, then
28 download and install Enea Linux.</para>
29 </listitem>
30
31 <listitem>
32 <para>Download and install the Cross-Compilation Toolchain.</para>
33 </listitem>
34
35 <listitem>
36 <para>Start developing your own Enea Linux applications or building
37 your own Enea Linux images.</para>
38 </listitem>
39 </orderedlist>
40
41 <para>It is assumed that the reader of this User's Guide has a deep
42 knowledge about Linux, how to configure the Linux kernel, and knows how to
43 use the Yocto build system. The variety of information provided in this
44 guide can serve as a quick start introduction to the standards and best
45 practices we share with the Linux community. In this spirit, Enea provides
46 <ulink url="http://www.enea.com/training">training courses</ulink>.</para>
47
48 <para>With this Enea Linux release you have a verified and easy to install
49 board support package for a number of supported hardware types. The board
50 support package includes a set of prebuilt utilities, accessible and setup
51 to rapidly reach your objectives as a developer. In this regard, the
52 support package contains a Linux kernel and root file system, a Software
53 Development Kit (SDK) which includes the cross-compilation toolchain, a
54 variety of tools and scripts for development and customization, and if
55 opted for, a user-friendly Eclipse version with an integrated development
56 environment.</para>
57
58 <para>The documentation for Enea Linux consists of generic and
59 distribution-specific documents. The generic documents are common for
60 several Enea Linux distributions. The main documents are:</para>
61
62 <table>
63 <tgroup cols="2">
64 <tbody>
65 <row>
66 <entry>Enea Linux Release Information</entry>
67
68 <entry>A distribution specific document detailing what the current
69 release contains, including supported features, references to
70 other documentation, known problems and limitations, and Enea
71 support contact information.</entry>
72 </row>
73
74 <row>
75 <entry>README files for the distribution</entry>
76
77 <entry>Distribution specific documents that serve as an
78 introduction and how-to for this release, where you also find
79 target specific commands and parameters, replacing the generic
80 examples in the User's Guide. These files also point to Build,
81 Boot, and Configuration information details for this
82 distribution.</entry>
83 </row>
84
85 <row>
86 <entry>Enea Linux User's Guide</entry>
87
88 <entry>The generic manual for developers who build Linux kernels
89 for embedded systems or use prebuilt Linux kernels.</entry>
90 </row>
91
92 <row>
93 <entry>Enea Linux Open Source Report</entry>
94
95 <entry>The distribution specific list of software packages with
96 corresponding Open Source Licenses, that are included in the Enea
97 Linux distribution.</entry>
98 </row>
99
100 <row>
101 <entry>Enea Linux Security Report</entry>
102
103 <entry>The release specific document listing the CVEs affecting
104 this distribuition.</entry>
105 </row>
106 </tbody>
107 </tgroup>
108 </table>
109
110 <para>See also the following generic documentation related to the Yocto
111 project, which actually is based on OpenEmbedded.</para>
112
113 <itemizedlist>
114 <listitem>
115 <para><ulink
116 url="https://www.yoctoproject.org/documentation/archived">https://www.yoctoproject.org/documentation/archived</ulink>
117 - Yocto project documentation. Search for the Yocto version included
118 in your Enea Linux distribution.</para>
119 </listitem>
120 </itemizedlist>
121
122 <itemizedlist>
123 <listitem>
124 <para><ulink
125 url="http://docs.openembedded.org">http://docs.openembedded.org</ulink>
126 - OpenEmbedded documentation, useful since Yocto is based on
127 OpenEmbedded.</para>
128 </listitem>
129 </itemizedlist>
130
131 <itemizedlist>
132 <listitem>
133 <para><ulink
134 url="https://wiki.yoctoproject.org/wiki">https://wiki.yoctoproject.org/wiki
135 </ulink>- Yocto Wiki, useful information for Yocto users</para>
136 </listitem>
137 </itemizedlist>
138
139 <itemizedlist>
140 <listitem>
141 <para><ulink
142 url="https://wiki.yoctoproject.org/wiki/Ptest">https://wiki.yoctoproject.org/wiki/Ptest</ulink>
143 - Ptest wiki. Ptest was initiated by Enea, for building, installing
144 and running package test suites</para>
145 </listitem>
146 </itemizedlist>
147
148 <itemizedlist>
149 <listitem>
150 <para><ulink
151 url="http://www.crashcourse.ca/wiki/index.php/Poky_Variable_Glossary">http://www.crashcourse.ca/wiki/index.php/Poky_Variable_Glossary</ulink>
152 - Explanation of some Yocto/Poky variables used in the build
153 configuration files.</para>
154 </listitem>
155 </itemizedlist>
156 </section>
157</chapter> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml b/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml
new file mode 100644
index 0000000..2215ba8
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml
@@ -0,0 +1,101 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="prereq_reqs">
3 <title>Prerequisites and Requirements</title>
4
5 <para>Building Enea Linux or compiling applications requires that your git
6 environment be setup properly and for certain packages to be installed on
7 your Linux development host. The following chapter details the
8 configurations needed on the build environment in order to properly use Enea
9 Linux.</para>
10
11 <section id="gitconfig">
12 <title>Git Configuration</title>
13
14 <para>If you intend to get Enea Linux sources and build Enea Linux
15 yourself, you will need Git installed in your build environemtn. Please
16 refer to <ulink
17 url="https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup">Getting
18 Started - First-Time Git Setup</ulink>, for more details on how to set up
19 your git environment correctly, including how to set your identity using
20 the following commands:</para>
21
22 <programlisting>$ git config --global user.name "John Doe"
23$ git config --global user.email johndoe@example.com</programlisting>
24 </section>
25
26 <section id="hostpackages">
27 <title>Host Packages</title>
28
29 <para>In order to work with Enea Linux, you need a set of tools installed
30 on the build machine, depending on the scenario you use. The following
31 chapters will describe what tools to install on the build machine.</para>
32
33 <section id="prebuiltprereq">
34 <title>Using Pre-Build Binaries</title>
35
36 <para>Using the pre-built binaries, you can get up and running more
37 quickly. Since building is not required, there are not a lot of packaes
38 and tools that need to be installed but a few are still required:</para>
39
40 <itemizedlist>
41 <listitem>
42 <para>wget - for downloading the Enea Linux binaries</para>
43 </listitem>
44
45 <listitem>
46 <para>tar - for decompressing the Enea Linux release</para>
47 </listitem>
48
49 <listitem>
50 <para>tftpboot server - for deploying Enea Linux on target</para>
51 </listitem>
52
53 <listitem>
54 <para>NFS server - in case you want to mount the root file system
55 over NFS</para>
56 </listitem>
57 </itemizedlist>
58 </section>
59
60 <section id="hostprereqpackages">
61 <title>Required Packages for the Host Development System</title>
62
63 <para>Building Enea Linux requires a set of packages to be installed on
64 your Linux development host. The list of required packages is described
65 in the <ulink
66 url="https://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#required-packages-for-the-host-development-system">Yocto
67 Project reference manual</ulink>.</para>
68 </section>
69 </section>
70
71 <section id="sysshell_config">
72 <title>Default Shell Configuration</title>
73
74 <para>Before installing Enea Linux, make sure that
75 <filename>bash</filename> is the default shell.</para>
76
77 <para><emphasis role="bold">To verify the default system
78 shell</emphasis></para>
79
80 <itemizedlist>
81 <listitem>
82 <para>If your system runs Ubuntu, use list to verify if
83 <filename>/usr/bin</filename> is a symbolic link to <emphasis
84 role="bold">bash</emphasis>:</para>
85
86 <programlisting># ls -l /bin/sh
87lrwxrwxrwx 1 root root 4 2012-03-02 11:53 /bin/sh -&gt; bash</programlisting>
88 </listitem>
89
90 <listitem>
91 <para>Optionally, in case the link points to <literal>dash</literal>,
92 change it through the following steps:</para>
93
94 <programlisting># ls -l /bin/sh
95lrwxrwxrwx 1 root root 4 2012-03-02 11:53 /bin/sh -&gt; dash
96# sudo dpkg-reconfigure dash
97Use dash as the default system shell (/bin/sh)? No</programlisting>
98 </listitem>
99 </itemizedlist>
100 </section>
101</chapter>
diff --git a/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml
new file mode 100644
index 0000000..8f3ada0
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<chapter id="real_time">
3 <title>Real-Time in Enea Linux</title>
4
5 <para>Additional packages providded by RT profile:</para>
6
7 <itemizedlist>
8 <listitem>
9 <para>bitcalc, 1.0-r0.0</para>
10 </listitem>
11
12 <listitem>
13 <para>count-ticks, 1.1-r1.0</para>
14 </listitem>
15
16 <listitem>
17 <para>partrt, 1.1-r0.0</para>
18 </listitem>
19 </itemizedlist>
20
21 <section id="Benchmark">
22 <title>Benchmark</title>
23
24 <para>TBD.</para>
25 </section>
26</chapter> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/troubleshooting.xml b/doc/book-enea-linux-user-guide/doc/troubleshooting.xml
new file mode 100644
index 0000000..298bdd9
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/troubleshooting.xml
@@ -0,0 +1,10 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter condition="hidden" id="troubleshooting">
3 <title>Troubleshooting</title>
4
5 <section id="placeholder_id">
6 <title></title>
7
8 <para></para>
9 </section>
10</chapter> \ No newline at end of file
diff --git a/doc/book-enea-linux-user-guide/doc/using_eclipse.xml b/doc/book-enea-linux-user-guide/doc/using_eclipse.xml
new file mode 100644
index 0000000..f6c7759
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/using_eclipse.xml
@@ -0,0 +1,1225 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="use_eclipse">
3 <title>Using Eclipse</title>
4
5 <section id="install_eclipse">
6 <title>Installing Eclipse</title>
7
8 <para>For instructions on how to install Eclipse Oxygen, please refer to
9 the <ulink
10 url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#adt-eclipse">Yocto
11 Project Software Development Kit (SDK) Developer's Guide</ulink>, chapter
12 4.3.2.1. Although the instructions listed there currently, refer to the
13 Neon release of Eclipse, the same steps still apply to the Oxygen release,
14 with some small differences:</para>
15
16 <itemizedlist>
17 <listitem>
18 <para>In <emphasis role="bold">step 1</emphasis> from chapter
19 4.3.2.1.1, the URL for downloading Eclipse should be <ulink
20 url="http://www.eclipse.org/oxygen">http://www.eclipse.org/oxygen</ulink>
21 instead.</para>
22 </listitem>
23
24 <listitem>
25 <para>In <emphasis role="bold">step 3</emphasis> from chapter
26 4.3.2.1.2, the correct option in the drop-down menu should look like:
27 <emphasis>Oxygen -
28 http://download.eclipse.org/releases/oxygen</emphasis>.</para>
29 </listitem>
30
31 <listitem>
32 <para>In <emphasis role="bold">step 5</emphasis> from chapter
33 4.3.2.1.2, under the category <emphasis role="bold">Mobile and Device
34 Development</emphasis>, select <emphasis role="bold">C/C++ GDB
35 Hardware Debugging</emphasis> as well.</para>
36 </listitem>
37 </itemizedlist>
38 </section>
39
40 <section id="install_yocto">
41 <title>Installing Yocto Plug-ins</title>
42
43 <para>Retrieve the archive containing the Yocto Plug-ins from the Enea
44 Linux release location and save it on your local machine. The archive file
45 has the following format:
46 <filename>org.yocto.sdk-&lt;release&gt;-&lt;date&gt;-archive.zip</filename>.</para>
47
48 <para>To install the Yocto Plugins in Eclipse, follow the instructions in
49 <ulink
50 url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#adt-eclipse">chapter
51 4.3.2.1.3.2</ulink>. of the Yocto Manual, starting with <emphasis
52 role="bold">step 8</emphasis>. In <emphasis role="bold">step 12</emphasis>
53 use the local archive that you downloaded previously.</para>
54
55 <para>To make sure that all required packages have been installed, go to
56 the menu <emphasis role="bold">Help &gt; Install New Software &gt; Eclipse
57 version</emphasis>, and select the version you use (e.g. Oxygen), to add
58 any missing packages. You can also check what packages are currently
59 installed by pressing the <emphasis role="bold">What is Already
60 Installed?</emphasis> link, as seen below.</para>
61
62 <mediaobject>
63 <imageobject role="fo">
64 <imagedata align="center" contentwidth="600"
65 fileref="images/install_new_sw.svg" />
66 </imageobject>
67
68 <imageobject role="html">
69 <imagedata align="center" fileref="images/install_new_sw.png" />
70 </imageobject>
71 </mediaobject>
72 </section>
73
74 <section id="eclipse_remote_connection">
75 <title>Setting up a TCF Connection from Eclipse</title>
76
77 <para>Eclipse supports several types of remote connections to reference
78 boards. Among these is the Target Communication Framework (TCF) type of
79 connection. This information will be referenced throughout this guide, as
80 it is used by several features.</para>
81
82 <para><emphasis role="bold">How to set up a TCF connection to the target
83 to be used later on</emphasis><remark>Should we add images to this
84 procedure to make it easier to understand?</remark></para>
85
86 <orderedlist>
87 <listitem>
88 <para>Make sure the <literal>tcf-agent</literal> is running on the
89 target:</para>
90
91 <programlisting>ps aux | grep tcf-agent
92root 329 0.0 0.2 1864824 2600 ? Ssl 12:47 0:08 /usr/sbin/tcf-agent -d -L- -l0</programlisting>
93 </listitem>
94
95 <listitem>
96 <para>Open the Target Explorer perspective from <emphasis
97 role="bold">Window &gt; Perspective &gt; Open Perspective &gt;
98 Other... &gt; Target Explorer</emphasis>.</para>
99
100 <para>This will open a new perspective, containing the <emphasis
101 role="bold">System Management</emphasis> view.</para>
102 </listitem>
103
104 <listitem>
105 <para>The <emphasis role="bold">System Management</emphasis> window
106 displays all existing TCF connections and allows you to manage them.
107 To create a new connection, go to <emphasis role="bold">Connections
108 &gt; Create New Connection...</emphasis></para>
109 </listitem>
110
111 <listitem>
112 <para>Type in an appropriate name in the <emphasis
113 role="bold">Connection Name</emphasis> field.</para>
114 </listitem>
115
116 <listitem>
117 <para>Select <literal>TCP</literal> in the <emphasis
118 role="bold">Transport Type</emphasis> section.</para>
119 </listitem>
120
121 <listitem>
122 <para>Fill in the target's IP address and leave the <emphasis
123 role="bold">Port</emphasis> as it is (1534).</para>
124 </listitem>
125
126 <listitem>
127 <para>Check the <emphasis role="bold">Connect on finish</emphasis>
128 checkbox and click <emphasis role="bold">Finish</emphasis>.</para>
129 </listitem>
130 </orderedlist>
131
132 <para>The connections created will be persistent and accessible from the
133 <emphasis role="bold">Debug Configurations</emphasis> plugins.</para>
134 </section>
135
136 <section id="eclipse_devapps">
137 <title>Developing Applications in Eclipse</title>
138
139 <section id="crosscomp">
140 <title>Cross-Compiling from Eclipse</title>
141
142 <tip>
143 <para>Watch Enea's video about <ulink
144 url="https://www.youtube.com/watch?v=i6KaMrhVOw8&amp;list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Cross-compiling
145 and Remote Debugging of Applications</ulink>.</para>
146 </tip>
147
148 <para>In order to use Eclipse to compile an application for a certain
149 target architecture, you need to first install a cross-compilation
150 toolchain<indexterm>
151 <primary>cross-compilation toolchain</primary>
152 </indexterm><indexterm>
153 <primary>toolchain</primary>
154
155 <secondary>cross-compilation</secondary>
156 </indexterm> (SDK<indexterm>
157 <primary>SDK</primary>
158 </indexterm>), configure the cross-compiler in Eclipse, and then
159 create a <emphasis>Yocto ADT Autotools project</emphasis> , which uses
160 the Yocto SDK.<remark>INFO: This project type is still called ADT in
161 Eclipse even though Yocto talks about standard and extentible
162 SDK</remark></para>
163
164 <para>Installing the cross-compilation toolchain is pretty
165 straightforward. All you have to do is to run the shell script provided
166 with the release and follow the instructions, see <link
167 linkend="install_el_sdk">Installing a Cross-Compilation Toolchain
168 (SDK)</link>.</para>
169
170 <para>Before creating the project, you must first configure the
171 cross-compiler<indexterm>
172 <primary>cross-compiler</primary>
173 </indexterm> in Eclipse:<remark>Should images be added to the
174 procedure below for ease of understanding?</remark></para>
175
176 <orderedlist>
177 <listitem>
178 <para>Select <emphasis role="bold">Window &gt; Preferences &gt;
179 Yocto Project ADT</emphasis> to open a dialog.<remark>INFO: This
180 project type is still called ADT in Eclipse even though Yocto talks
181 about standard and extentible SDK</remark></para>
182 </listitem>
183
184 <listitem>
185 <para>Choose a <emphasis role="bold">Stand-alone pre-built
186 toolchain</emphasis>.</para>
187 </listitem>
188
189 <listitem>
190 <para>For the <emphasis role="bold">Toolchain Root
191 Location</emphasis> option, specify the path to the
192 cross-compilation toolchain, e.g.
193 <filename>/opt/enea/&lt;sdkversion&gt;</filename>.</para>
194 </listitem>
195
196 <listitem>
197 <para>For the <emphasis role="bold">Sysroot Location</emphasis>
198 option, specify the path to the target sysroot directory inside the
199 toolchain root location e.g.
200 <literal>&lt;extsdkdir&gt;/tmp/sysroots/corei7-64-enea-linux/</literal></para>
201 </listitem>
202
203 <listitem>
204 <para>If multiple architectures are supported by the SDK, select the
205 desired target architecture from the drop-down list.</para>
206
207 <tip>
208 <para>You can save different profiles with different
209 configurations. This makes it easy to compile the same code for
210 different architectures by simply choosing the desired development
211 profile.</para>
212 </tip>
213 </listitem>
214
215 <listitem>
216 <para>In <emphasis role="bold">Target Options</emphasis>, select the
217 <emphasis role="bold">External HW</emphasis> option.</para>
218 </listitem>
219 </orderedlist>
220
221 <tip>
222 <para>More details on how to configure the cross-compiler can be found
223 in the <ulink
224 url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html"><emphasis>Yocto
225 Project Software Development Kit (SDK) Developer's Guide
226 2.5</emphasis></ulink>. Change the Yocto version in the link if
227 needed.</para>
228
229 <para>There is also a good cheat sheet available in Eclipse, under
230 <emphasis role="bold">Help &gt; Cheat Sheets &gt; Yocto Project &gt;
231 Creating a Hello World ANSI C or C++ Autotools Project</emphasis>.
232 This cheat sheet covers all the steps up to building the
233 project.</para>
234 </tip>
235
236 <para>Once you have configured the default options for the
237 cross-compiler you can create a project:</para>
238
239 <orderedlist>
240 <listitem>
241 <para>Follow the steps in the wizard to create the project:</para>
242
243 <orderedlist numeration="loweralpha" spacing="compact">
244 <listitem>
245 <para>Select <emphasis role="bold">File &gt; New &gt; Project
246 &gt; C Project</emphasis> and click <emphasis
247 role="bold">Next</emphasis>.</para>
248 </listitem>
249
250 <listitem>
251 <para>Select <emphasis role="bold">Yocto Project ADT Autotools
252 Project &gt; Hello World ANSI C Autotools Project</emphasis>,
253 and give the project a <emphasis role="bold">Project
254 name</emphasis> before clicking <emphasis
255 role="bold">Next</emphasis>.<note>
256 <para>Having a hyphen character '<literal>-</literal>' in
257 the name can cause configuration errors.</para>
258 </note></para>
259 </listitem>
260
261 <listitem>
262 <para>Enter the <emphasis role="bold">Author</emphasis> and
263 click <emphasis role="bold">Finish</emphasis>.</para>
264 </listitem>
265 </orderedlist>
266
267 <para>This will automatically generate all the files needed,
268 creating all necessary configurations for cross-compiling. For more
269 on how to create a project, watch <ulink
270 url="https://www.youtube.com/watch?v=2qxWae7srzE&amp;list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Enea's
271 video about setting up an ADT project</ulink>.</para>
272 </listitem>
273
274 <listitem>
275 <para>Optionally, if you want to have specific options for
276 cross-compiling this project, select <emphasis role="bold">Project
277 &gt; Change Yocto Project Settings</emphasis> and modify the options
278 for this project only.</para>
279 </listitem>
280
281 <listitem>
282 <para>Right-click on the project from the Project Explorer and
283 choose <emphasis role="bold">Reconfigure Project</emphasis>. This
284 will generate the necessary makefiles to build the project.</para>
285 </listitem>
286
287 <listitem>
288 <para>Finally, build the project from <emphasis role="bold">Project
289 &gt; Build Project</emphasis>, or by right-clicking on the project
290 in the Project Explorer and selecting <emphasis role="bold">Build
291 Project</emphasis>. A binary file for the target architecture is
292 created in the project directory.</para>
293 </listitem>
294 </orderedlist>
295
296 <tip>
297 <para>If you need to add more files or compiler flags or parameters to
298 the Makefile, edit <filename>Makefile.am</filename> accordingly and
299 then reconfigure the project.</para>
300 </tip>
301
302 <note>
303 <para>Eclipse displays the results from building a project in one
304 Eclipse console, and reconfiguring a project in another one. Switching
305 between the two consoles is necessary to view both outputs.</para>
306 </note>
307 </section>
308
309 <section id="eclipse_debug">
310 <title>Debugging Applications from Eclipse</title>
311
312 <tip>
313 <para>Watch Enea's video about <ulink
314 url="https://www.youtube.com/watch?v=i6KaMrhVOw8&amp;list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Cross-compiling
315 and Remote Debugging of Applications</ulink>.</para>
316 </tip>
317
318 <para>Using Eclipse you can build an application, deploy it on the
319 target, and debug <indexterm>
320 <primary>debug</primary>
321 </indexterm>the source code remotely, all with a single mouse click.
322 However, in order to achieve this you need to make certain
323 configurations.</para>
324
325 <para>When setting the cross-compiler options for a target, a run/debug
326 configuration is created as a <emphasis role="bold">C/C++ Remote
327 Application</emphasis> instance. The configuration is named according to
328 this syntax <literal>&lt;project&gt;_gdb_-&lt;suffix&gt;</literal>, for
329 example: <filename>hello_gdb_aarch64-enea-linux</filename>.</para>
330
331 <note>
332 <para>If a run/debug configuration is not created when setting the
333 cross-compiler options, perform the steps in <link
334 linkend="troubleshoot_build_debug_config">Run/Debug Configuration Not
335 Created</link>.</para>
336 </note>
337
338 <para>The instructions below describes how to use Eclipse to debug
339 single-process applications on a target. For information on how to debug
340 multi-process applications, see <link
341 linkend="eclipse_multi_debug">Debugging Multi-Process Applications from
342 Eclipse</link>.</para>
343
344 <para>Use the run/debug configuration to connect the Eclipse GDB
345 interface to the remote target, by doing the following:</para>
346
347 <remark>Should we add images for the procedure below as well?</remark>
348
349 <orderedlist>
350 <listitem>
351 <para>Select <emphasis role="bold">Run &gt; Debug Configurations
352 &gt; C/C++ Remote application</emphasis> from the menu and choose
353 the run/debug configuration from the instances under <literal>C/C++
354 Remote Application</literal> in the left pane. You can rename,
355 duplicate or remove the configuration as needed.</para>
356 </listitem>
357
358 <listitem>
359 <para>In the <emphasis role="bold">Main</emphasis> tab, do the
360 following:</para>
361
362 <orderedlist spacing="compact">
363 <listitem>
364 <para>Select an existing <emphasis
365 role="bold">Connection</emphasis> from the drop-down list, or
366 create a new one following the steps below:</para>
367
368 <orderedlist>
369 <listitem>
370 <para>To create a new connection, click the <emphasis
371 role="bold">New...</emphasis> button and select a connection
372 type. For debugging applications an <emphasis
373 role="bold">SSH</emphasis> connection is recommended.</para>
374 </listitem>
375
376 <listitem>
377 <para>Choose a connection name and fill in the <emphasis
378 role="bold">Host information</emphasis> section with the
379 target's IP and the username.</para>
380
381 <note>
382 <para>For Enea Linux, the default username is <emphasis
383 role="bold">root</emphasis> and there is no password
384 set.</para>
385 </note>
386 </listitem>
387
388 <listitem>
389 <para>Depending on your network setup, select either
390 <emphasis role="bold">Public key</emphasis> or <emphasis
391 role="bold">Password-based authentication</emphasis>. If
392 using Password-based authentication, leave the field empty
393 when using the default <emphasis role="bold">root</emphasis>
394 username.</para>
395 </listitem>
396
397 <listitem>
398 <para>Click Finish. The new connection should now be
399 available in the dropdown menu. This connection will be
400 persist through all Run/Debug configurations.</para>
401
402 <para>You can manage your saved connections in the <emphasis
403 role="bold">Connections </emphasis>view from <emphasis
404 role="bold">Window -&gt; Show View -&gt; Other... -&gt;
405 Connections</emphasis>.</para>
406 </listitem>
407 </orderedlist>
408 </listitem>
409
410 <listitem>
411 <para>Select the binary <emphasis role="bold">C/C++
412 Application</emphasis> you want to deploy.</para>
413
414 <para>If you click the <emphasis role="bold">Search
415 Project</emphasis> button, Eclipse will parse the project and
416 provide a list of all compiled binaries to choose from.
417 Alternatively, you can <emphasis role="bold">Browse</emphasis>
418 the file system for a binary, or use <emphasis
419 role="bold">Variables</emphasis> to manually define the
420 path.</para>
421 </listitem>
422
423 <listitem>
424 <para>The <emphasis role="bold">Remote Absolute File
425 Path</emphasis> is the path to which the binary on the target
426 shall be deployed. Type it directly or click the <emphasis
427 role="bold">Browse</emphasis> button and select a location on
428 the remote target. Note that you need to specify the path
429 including the filename.</para>
430 </listitem>
431
432 <listitem>
433 <para>Optionally, you may choose not to download the application
434 to the target, but instead debug an already downloaded
435 application.</para>
436 </listitem>
437
438 <listitem>
439 <para>You can also configure Eclipse to execute commands prior
440 to launching the application, by specifying the commands in the
441 corresponding field.</para>
442 </listitem>
443 </orderedlist>
444 </listitem>
445
446 <listitem>
447 <para>In the <emphasis role="bold">Arguments</emphasis> tab you can
448 specify various arguments to be passed to your application at
449 launch-time.</para>
450 </listitem>
451
452 <listitem>
453 <para>The <emphasis role="bold">Debugger</emphasis> tab deals with
454 GDB specific configurations. This is automatically populated when
455 configuring the cross-compiler. You may optionally choose
456 additionally useful options as with any Eclipse GDB interface, e.g.
457 whether to break at entering the main function or uploading shared
458 libraries.</para>
459 </listitem>
460
461 <listitem>
462 <para>To enable debugging with shared libraries, do the
463 following:</para>
464
465 <itemizedlist>
466 <listitem>
467 <para>Retrieve the debug sources from the target, and store them
468 in a dedicated folder on the local host. They are found in
469 <literal>/usr/src/debug</literal> in the target rootfs.</para>
470 </listitem>
471
472 <listitem>
473 <para>Set a path mapping your debug configuration. In the
474 <emphasis role="bold">Source</emphasis> tab, click <emphasis
475 role="bold">Add</emphasis>, select <emphasis role="bold">Path
476 Mapping</emphasis>, and assign paths to the mapping:</para>
477
478 <simplelist>
479 <member><emphasis role="bold">Compilation path</emphasis>:
480 <filename>/usr/src/debug</filename></member>
481
482 <member><emphasis role="bold">Local file system
483 path</emphasis> (path to the debug sources retrieved from the
484 target):<filename>
485 &lt;path_to_chosen_folder&gt;/usr/src/debug</filename></member>
486 </simplelist>
487 </listitem>
488
489 <listitem>
490 <para>In the <emphasis role="bold">Debugger/Shared
491 Libraries</emphasis> tab, select option <emphasis
492 role="bold">Load shared library symbols automatically</emphasis>
493 and set the path to the shared library. The path depends on the
494 processor architecture of your target.</para>
495
496 <para>For <emphasis role="bold">32-bit</emphasis> targets:
497 <filename>&lt;extsdkdir&gt;/sysroots/&lt;arch&gt;-enea-linux/lib/.debug
498 </filename></para>
499
500 <para>For <emphasis role="bold">64-bit</emphasis> targets:
501 <filename>&lt;extsdkdir&gt;/sysroots/&lt;arch&gt;-enea-linux/lib64/.debug</filename></para>
502
503 <para>Note that inside Eclipse you must load the shared
504 libraries with debug information (not stripped). Shared
505 libraries that get built into the rootfs of the target image
506 have debug information stripped off, for size and speed
507 optimizations.</para>
508 </listitem>
509
510 <listitem>
511 <para>To debug applications that depend on shared libraries
512 built outside the rootfs of the target image, the same procedure
513 applies, with the exception that you must upload the required
514 shared libraries to the target prior to starting the debugging
515 session.</para>
516
517 <para>If you upload them to <literal>/lib</literal> or
518 <literal>/lib64</literal> (depending on the target architecture)
519 they get loaded by default. Otherwise, you must correctly update
520 the <emphasis role="bold"><literal>
521 LD_LIBRARY_PATH</literal></emphasis> environment variable to
522 match their look-up path. In Eclipse, you can automatically
523 update this variable by setting the <emphasis
524 role="bold">Commands to execute before application</emphasis>
525 field to: <emphasis role="bold">export
526 <literal>LD_LIBRARY_PATH=&lt;path to uploaded shared
527 libs&gt;</literal> </emphasis></para>
528 </listitem>
529 </itemizedlist>
530 </listitem>
531
532 <listitem>
533 <para>Once you have set up all the debug configurations, click
534 <emphasis role="bold">Apply</emphasis> and <emphasis
535 role="bold">Debug</emphasis>. This will launch the GDB on the target
536 and open the <literal>Debug perspective</literal>. This is the
537 standard Eclipse GDB interface when debugging a remote target. You
538 can use all GDB features, such as setting breakpoints, stepping
539 through code, reading variable values, reading registers, viewing
540 memory, etc.</para>
541 </listitem>
542 </orderedlist>
543
544 <para>When the debugger starts, Eclipse opens three consoles:</para>
545
546 <orderedlist numeration="upperalpha" spacing="compact">
547 <listitem>
548 <para>The <emphasis role="bold">Remote Shell</emphasis> - used to
549 launch the application and display its output.</para>
550 </listitem>
551
552 <listitem>
553 <para>The <emphasis role="bold">GDB console</emphasis> - named as
554 the path to its GDB binary. You can use this console to control the
555 GDB from the command line.</para>
556 </listitem>
557
558 <listitem>
559 <para>The third console is named as the path of the binary on the
560 local machine, and is in fact an artifact that must be
561 ignored.</para>
562 </listitem>
563 </orderedlist>
564
565 <para>After having set up the debug configuration once, you can modify
566 and rebuild your application and then relaunch it by simply clicking the
567 <emphasis role="bold">Debug</emphasis> icon (the bug symbol) on the
568 toolbar. You can also select the drop-down list for more configurations,
569 and even add your configuration to the <emphasis
570 role="bold">Favorites</emphasis> to easily retrieve it next time.</para>
571
572 <para>If you only want to deploy and run the application, without
573 debugging, you can use the same configuration as the one set up for
574 debugging, but simply click the <emphasis role="bold">Run</emphasis>
575 icon (the Play button symbol) from the toolbar menu, or select <emphasis
576 role="bold">Run &gt; Run Configurations</emphasis> and Run the chosen
577 configuration.</para>
578 </section>
579
580 <section id="eclipse_multi_debug">
581 <title>Debugging Multi-Process Applications from Eclipse</title>
582
583 <para>In Eclipse, remote debugging of an application that uses multiple
584 processes<indexterm>
585 <primary>multiple processes</primary>
586 </indexterm> is slightly different compared to debugging a single
587 process application as described in <link
588 linkend="eclipse_debug">Debugging Applications from
589 Eclipse</link>.</para>
590
591 <para>The following limitations exist for multi-process
592 debugging:</para>
593
594 <itemizedlist spacing="compact">
595 <listitem>
596 <para>All debugged processes must share the same binary.</para>
597 </listitem>
598
599 <listitem>
600 <para>Debugging only works in non-stop mode, i.e. stopping at a
601 breakpoint only stops the current thread while other threads
602 continue to execute.</para>
603 </listitem>
604 </itemizedlist>
605
606 <note>
607 <para>When using the GDB to debug multiple instances of the same
608 process or thread, using the same symbols file, breakpoints will be
609 common to all instances. That is, when setting a breakpoint in the
610 code, all instances will stop there, and there is no way to filter
611 them. The current thread filter in Eclipse is ineffective.</para>
612 </note>
613
614 <para><emphasis role="bold">Use the run/debug configuration to connect
615 the Eclipse GDB client to the remote target</emphasis>:</para>
616
617 <orderedlist>
618 <listitem>
619 <para>Go to <emphasis role="bold">Window &gt; Preferences &gt;
620 Run/Debug &gt; Launching &gt; Default Launchers</emphasis>. Under
621 <emphasis role="bold">C/C++ Attach to Applicaton &gt;
622 Debug</emphasis> select the checkbox <emphasis role="bold">GDB (DSF)
623 Attach to Process via TCF/TE Launcher</emphasis>.</para>
624 </listitem>
625
626 <listitem>
627 <para>Select <emphasis role="bold">Run &gt; Debug Configurations...
628 </emphasis> from the menu and choose the run/debug configuration
629 from the instances under <literal>C/C++ Attach to
630 Application</literal> in the left pane. You can create, rename,
631 duplicate, or remove the configurations as needed.</para>
632 </listitem>
633
634 <listitem>
635 <para>If you followed <emphasis role="bold">step 1</emphasis>, in
636 the lower part of the dialog you will see that <emphasis
637 role="bold">Using GDB (DSF) Attach to Process via TCF/TE
638 Launcher</emphasis> is selected. If not, redo <emphasis
639 role="bold">step 1</emphasis> or click the <emphasis
640 role="bold">Select Other...</emphasis> link, and use configuration
641 specific settings by selecting the checkbox <emphasis
642 role="bold">GDB (DSF) Attach to Process via TCF/TE
643 Launcher</emphasis>.</para>
644 </listitem>
645
646 <listitem>
647 <para>In the <emphasis role="bold">Main</emphasis> tab, do the
648 following:</para>
649
650 <orderedlist spacing="compact">
651 <listitem>
652 <para>Select the binary <emphasis role="bold">C/C++
653 Application</emphasis> you want to deploy. If you click the
654 <emphasis role="bold">Search Project</emphasis> button, Eclipse
655 will parse the project and provide a list of all compiled
656 binaries to choose from. Alternatively, you can <emphasis
657 role="bold">Browse</emphasis> the file system for a binary, or
658 use <emphasis role="bold">Variables</emphasis> to manually
659 define the path.</para>
660 </listitem>
661
662 <listitem>
663 <para>Select an existing <emphasis
664 role="bold">Connection</emphasis> from the drop-down list. If a
665 connection is not available, create a new one following the
666 steps in <link linkend="eclipse_remote_connection">Setting up a
667 TCF Connection from Eclipse</link>.</para>
668 </listitem>
669
670 <listitem>
671 <para>The <emphasis role="bold">Remote Absolute File
672 Path</emphasis> is the path to the binary of the process you are
673 planning to debug. Type it directly or click the <emphasis
674 role="bold">Browse</emphasis> button and select a location on
675 the remote target. You need an active TCF connection to the
676 target for the <emphasis role="bold">Browse</emphasis> button to
677 work (see chapter <emphasis role="bold">Setting up a TCF
678 Connection from Eclipse</emphasis>). Note that you need to
679 specify the path including the filename.</para>
680 </listitem>
681
682 <listitem>
683 <para>Specify the PID of the remote process you are planning to
684 attach.</para>
685 </listitem>
686 </orderedlist>
687 </listitem>
688
689 <listitem>
690 <para>The <emphasis role="bold">Debugger</emphasis> tab deals with
691 GDB specific configurations. Select the <emphasis
692 role="bold">gdbserver</emphasis> in the Debugger dropdown. You may
693 also choose other useful options as with any Eclipse GDB interface,
694 e.g. whether to break at entering the main function or uploading
695 shared libraries. The following actions are important:</para>
696
697 <orderedlist spacing="compact">
698 <listitem>
699 <para>In the <emphasis role="bold">Main</emphasis> tab, enter
700 the path to the GDB binary in the SDK. For example:
701 <literal>&lt;extsdkdir&gt;/tmp/sysroots/x86_64-linux/usr/bin/&lt;arch&gt;-enea-linux/&lt;arch&gt;-enea-linux-gdb</literal>.</para>
702 </listitem>
703
704 <listitem>
705 <para>Select option <literal>Non-stop mode</literal>.</para>
706 </listitem>
707 </orderedlist>
708 </listitem>
709
710 <listitem>
711 <para>Once you have set up all the debug configurations, click
712 <emphasis role="bold">Apply</emphasis> and <emphasis
713 role="bold">Debug</emphasis>. This will launch the GDB and
714 optionally open the <literal>Debug perspective</literal> for the
715 process you selected. This is the standard Eclipse GDB interface
716 when debugging a remote target. You can use all GDB features, such
717 as setting breakpoints, stepping through code, reading variable
718 values, reading registers, viewing memory, etc.</para>
719 </listitem>
720 </orderedlist>
721
722 <para>Repeat these steps for each process you want to debug. You can
723 have multiple debug sessions running simultaneously for multiple
724 processes sharing the same source code.</para>
725 </section>
726
727 <section id="eclipse_postmortem">
728 <title>Using the Postmortem Debugger</title>
729
730 <para>When a program crashes<indexterm>
731 <primary>post-mortem debugging</primary>
732 </indexterm><indexterm>
733 <primary>core dump</primary>
734 </indexterm>, it may leave a core dump which can be used to figure out
735 exactly why the program crashed. Core dumps are disabled by default and
736 have to be activated before debugging. After retrieving and transferring
737 a core dump file to a host machine, Eclipse and the SDK tool generated
738 for the target, can be used to analyze the application state at the time
739 of the crash.</para>
740
741 <para>If deep debugging within Linux libraries is needed, the debug SDK
742 is required. See <link linkend="install_el_sdk">Installing Enea Linux
743 SDK</link>.</para>
744
745 <para>To enable writing core dump files, two steps need to be performed
746 on the target: <emphasis>allowing resources for core dumps</emphasis>
747 and <emphasis>defining a core file name pattern</emphasis>. These
748 settings are valid until the next reboot, unless made permanent by
749 configuration changes in the root file system.</para>
750
751 <para>Use the <command>ulimit</command> command to allow the system to
752 use resources for core dumps. The <command>ulimit</command> command
753 controls the resources available to a process started by the shell, on
754 systems that allow such control. Type the following to use this
755 command:</para>
756
757 <programlisting>ulimit -c unlimited</programlisting>
758
759 <para>To verify the result, type <command>ulimit -a</command> and see if
760 the core file size is set to <literal>unlimited</literal>. User limits
761 can also be changed from the application code using the function
762 <function>setrlimit(...)</function> declared in the
763 <literal>sys/resource.h</literal> header (see the manual available
764 through <command>man setrlimit</command>). To make this permanent across
765 a reboot, adjust the configuration in
766 <filename>/etc/security/limits.conf</filename>.</para>
767
768 <para>The next step is to specify the core pattern which defines the
769 core dump file pattern name. The core pattern is defined in the
770 <literal>/proc/sys/kernel/core_pattern</literal>.</para>
771
772 <para>The format of a core pattern follows certain rules:</para>
773
774 <itemizedlist>
775 <listitem>
776 <para>The maximum length is 128 characters</para>
777 </listitem>
778
779 <listitem>
780 <para>Default core dump name is <filename>core</filename></para>
781 </listitem>
782
783 <listitem>
784 <para>The string stored in <literal>core_pattern</literal> is used
785 as a pattern template for the output filename. Certain string
786 patterns (beginning with <literal>%</literal>) are substituted with
787 their actual values. The patterns are:</para>
788
789 <programlisting>%&lt;NUL&gt; '%' is dropped
790%% output one '%'
791%p pid
792%P global pid (init PID namespace)
793%i tid
794%I global tid (init PID namespace)
795%u uid (in initial user namespace)
796%g gid (in initial user namespace)
797%d dump mode, matches PR_SET_DUMPABLE and /proc/sys/fs/suid_dumpable
798%s signal number
799%t UNIX time of dump
800%h hostname
801%e executable filename (may be shortened)
802%E executable path
803%&lt;OTHER&gt; both are dropped</programlisting>
804 </listitem>
805
806 <listitem>
807 <para>If the first character of the pattern is a
808 '<literal>|</literal>', the kernel will treat the rest of the
809 pattern as a command to run. The core dump will be written to the
810 standard input of that program instead of to a file.</para>
811 </listitem>
812
813 <listitem>
814 <para>By setting the value <literal>core_uses_pid</literal> to
815 <literal>1</literal>, the core dump filename gets the extension
816 <filename>.PID</filename>, if the <literal>core_pattern</literal>
817 does not contain "<literal><literal>%p</literal></literal>".</para>
818
819 <para>For example, the default file name <filename>core</filename>
820 becomes <filename>core.PID</filename> if the
821 <literal>core_uses_pid</literal> is set, and no
822 <literal>core_pattern</literal> is defined.</para>
823 </listitem>
824 </itemizedlist>
825
826 <para>Specify a core pattern by writing it to
827 <literal>/proc/sys/kernel/core_pattern</literal>. For example:
828 <programlisting><literal>echo "&lt;suitable_directory&gt;/core.%e.%p.%h.%t" &gt; /proc/sys/kernel/core_pattern</literal></programlisting></para>
829
830 <para>To make the core dump file name permanent across a reboot,
831 configure <filename>/etc/sysctl.conf</filename>. to reflect this choice,
832 by adding a line like in the following example:
833 <literal>kernel.core_pattern=&lt;suitable_directory&gt;/core.%e.%p.%h.%t</literal>.</para>
834
835 <para>How to use the Eclipse post mortem debug configuration in order to
836 view the call trace, for the core dump in the Eclipse GDB
837 interface:</para>
838
839 <orderedlist spacing="compact">
840 <listitem>
841 <para>Ensure a core dump can be created on the target, see the
842 information above. To see the full call stack, the application
843 object files, compiled with debug information, are needed (the
844 <literal>-g</literal> option in gcc).</para>
845 </listitem>
846
847 <listitem>
848 <para>After a core dump has been created, retrieve the core dump
849 file from the target and store it on the host.</para>
850 </listitem>
851
852 <listitem>
853 <para>In Eclipse on the host, you need the core dump file, the SDK
854 for the target, the application executable, and access to the source
855 code. Once you have those, do the following:<orderedlist
856 spacing="compact">
857 <listitem>
858 <para>Switch to the <literal>Debug</literal> perspective in
859 Eclipse.</para>
860 </listitem>
861
862 <listitem>
863 <para>Select <emphasis role="bold">Run -&gt; Debug
864 Configurations ...</emphasis> (scroll down if you don't see
865 the option at first glance) <emphasis role="bold">-&gt; C/C++
866 Postmortem Debugger</emphasis>.</para>
867 </listitem>
868
869 <listitem>
870 <para>Make sure the <literal>C/C++ Application</literal> field
871 refers to your project executable, and fill in the
872 <literal>Core file</literal> field with the path to the
873 downloaded core file.</para>
874 </listitem>
875
876 <listitem>
877 <para>Under the <emphasis role="bold">Debugger</emphasis> tab,
878 fill in the <literal>GDB Debugger</literal> field with the
879 path to the GDB binary from the SDK. Example path:
880 <filename>&lt;extsdkdir&gt;/tmp/sysroots/x86_64-linux/usr/bin/&lt;arch&gt;-enea-linux/&lt;arch&gt;-enea-linux-gdb</filename></para>
881 </listitem>
882
883 <listitem>
884 <para>Click the <literal>Debug</literal> button. Eclipse
885 should switch into the <literal>Debug</literal> perspective
886 (if it hasn't already) and the debugging instance should break
887 somewhere inside the application. The call stack should be
888 observable in the console and should show a termination
889 message.</para>
890 </listitem>
891 </orderedlist></para>
892 </listitem>
893 </orderedlist>
894 </section>
895 </section>
896
897 <section id="eclipse_kern_debug">
898 <title>Debugging the Linux Kernel in Eclipse</title>
899
900 <para>In this section you learn to set up Eclipse for KGDB<indexterm>
901 <primary>KGDB</primary>
902 </indexterm> kernel debugging over the serial port, with examples for
903 the <literal>raspberrypi3</literal> target. This is only given as an
904 example, your Enea Linux distribution may contain other targets. The
905 corresponding instruction for debugging outside Eclipse is available in
906 Debugging the Linux Kernel (KGDB) from Command Line.<remark>LATER: Merge
907 the two instructions to shrink the amount of text; most of it is the
908 same.</remark></para>
909
910 <para>How to set up Eclipse for KGDB kernel debugging over a serial
911 port:</para>
912
913 <orderedlist>
914 <listitem>
915 <para>Make sure that the cross-compilation toolchain<indexterm>
916 <primary>cross-compilation toolchain</primary>
917 </indexterm><indexterm>
918 <primary>toolchain</primary>
919
920 <secondary>cross-compilation</secondary>
921 </indexterm> (SDK<indexterm>
922 <primary>SDK</primary>
923 </indexterm>) is installed on the host, see <link
924 linkend="install_el_sdk">Installing Enea Linux SDK</link>.</para>
925 </listitem>
926
927 <listitem>
928 <para>Ensure that the kernel debug image
929 (<literal>vmlinux)</literal>is accessible on the host where you run
930 Eclipse, and that you have permissions to execute it. You will later
931 point to it in Eclipse.</para>
932
933 <para>If you are using the default kernel delivered with Enea Linux,
934 you can find it in the rootfs under the <literal>/boot</literal>
935 folder. If you build your own kernel using bitbake, it should be
936 available in your build folder. Located in, for example:
937 <filename><filename>tmp/work/raspberrypi3_64-enea-linux/linux-raspberrypi/1_4.9.59+gitAUTOINC+meta_machine-r0/image/boot/vmlinux-4.9.59</filename></filename></para>
938 </listitem>
939
940 <listitem>
941 <para>In Eclipse:</para>
942
943 <orderedlist>
944 <listitem>
945 <para>Optional: The Linux kernel has a considerable amount of
946 sources, and indexing the whole of it might take a lot of time.
947 Save time by disabling C/C++ project indexing:<orderedlist
948 spacing="compact">
949 <listitem>
950 <para>Select <emphasis role="bold">Window &gt; Preferences
951 &gt; C/C++ &gt; Indexer</emphasis>.</para>
952 </listitem>
953
954 <listitem>
955 <para>Unselect the <emphasis role="bold">Enable
956 indexer</emphasis> checkbox.</para>
957 </listitem>
958 </orderedlist></para>
959 </listitem>
960
961 <listitem>
962 <para>Create a project from the kernel tree:</para>
963
964 <orderedlist spacing="compact">
965 <listitem>
966 <para>Select <emphasis role="bold">File &gt; New &gt; Project
967 &gt; C/C++ &gt; C project</emphasis>.</para>
968 </listitem>
969
970 <listitem>
971 <para>In the left panel, select <emphasis role="bold">Makefile
972 project &gt; Empty project</emphasis>, and give the project a
973 name.</para>
974 </listitem>
975
976 <listitem>
977 <para>Unselect the <emphasis role="bold">Use default
978 location</emphasis> option.</para>
979 </listitem>
980
981 <listitem>
982 <para>Click <emphasis role="bold">Browse</emphasis> and
983 navigate to the location of the kernel sources (git
984 folder).</para>
985 </listitem>
986
987 <listitem>
988 <para>Click <emphasis role="bold">Finish</emphasis>.</para>
989 </listitem>
990 </orderedlist>
991 </listitem>
992
993 <listitem>
994 <para>Create a C/C++ GDB Hardware Debugging configuration:</para>
995
996 <orderedlist spacing="compact">
997 <listitem>
998 <para>Go to <emphasis role="bold">Run -&gt; Debug
999 Configurations</emphasis>.</para>
1000 </listitem>
1001
1002 <listitem>
1003 <para>Double-click <emphasis role="bold">GDB Hardware
1004 Debugging</emphasis>.</para>
1005 </listitem>
1006 </orderedlist>
1007
1008 <para>This will create a default configuration named
1009 <literal>project_name Default</literal>.</para>
1010 </listitem>
1011
1012 <listitem>
1013 <para>In the <emphasis role="bold">Main</emphasis> tab:</para>
1014
1015 <orderedlist spacing="compact">
1016 <listitem>
1017 <para>Browse to the location of the
1018 <filename>vmlinux</filename> image. As an alternative, you may
1019 select a different project to debug, but if you followed the
1020 steps above you should not need to modify this.</para>
1021 </listitem>
1022
1023 <listitem>
1024 <para>Select the <emphasis role="bold">Disable auto
1025 build</emphasis> radio button.</para>
1026 </listitem>
1027
1028 <listitem>
1029 <para>At the bottom of the window, make sure <emphasis
1030 role="bold">GDB (DSF) Hardware Debugging Launcher</emphasis>
1031 is selected.</para>
1032 </listitem>
1033 </orderedlist>
1034 </listitem>
1035
1036 <listitem>
1037 <para>In the <emphasis role="bold">Debugger</emphasis> tab for
1038 <emphasis role="bold">C/C++ Application</emphasis>:</para>
1039
1040 <orderedlist spacing="compact">
1041 <listitem>
1042 <para>Browse to the location of the <emphasis role="bold">GDB
1043 binary</emphasis> installed by the cross-compilation toolchain
1044 installer, by default:
1045 <filename>&lt;extsdkdir&gt;/tmp/sysroots/x86_64-linux/usr/bin/&lt;arch&gt;-enea-linux/&lt;arch&gt;-enea-linux-gdb</filename>.</para>
1046 </listitem>
1047
1048 <listitem>
1049 <para>Select option <emphasis role="bold">Use remote
1050 target</emphasis>.</para>
1051 </listitem>
1052
1053 <listitem>
1054 <para>In the <emphasis role="bold">JTAG Device</emphasis>,
1055 select <emphasis role="bold">Generic Serial</emphasis> from
1056 the dropdown list.</para>
1057 </listitem>
1058
1059 <listitem>
1060 <para>In the <emphasis role="bold">GDB Connection
1061 String</emphasis> field, type the host's tty device used for
1062 the serial connection to the target, e.g.
1063 <literal>/dev/ttyUSB0</literal>.</para>
1064 </listitem>
1065 </orderedlist>
1066 </listitem>
1067
1068 <listitem>
1069 <para>In the <emphasis role="bold">Startup</emphasis> tab:</para>
1070
1071 <orderedlist spacing="compact">
1072 <listitem>
1073 <para>Deselect the <emphasis role="bold">Load image</emphasis>
1074 option.</para>
1075 </listitem>
1076
1077 <listitem>
1078 <para>Select the <emphasis role="bold">Load symbols</emphasis>
1079 option.</para>
1080 </listitem>
1081
1082 <listitem>
1083 <para>Ensure that the <emphasis role="bold">Use project
1084 binary</emphasis> option defaults to your
1085 <literal>vmlinux</literal> image.</para>
1086 </listitem>
1087
1088 <listitem>
1089 <para>Click <emphasis role="bold">Apply</emphasis> to store
1090 the configurations above.</para>
1091 </listitem>
1092 </orderedlist>
1093 </listitem>
1094 </orderedlist>
1095 </listitem>
1096
1097 <listitem>
1098 <para>Prepare the target for KGDB debugging:</para>
1099
1100 <orderedlist>
1101 <listitem>
1102 <para>Configure a serial communication on the target, using the
1103 appropriate device for the target (e.g. <literal>ttyS0</literal>
1104 for <literal>p2020rdb</literal>, <literal>ttyS2</literal> for
1105 <literal>pandaboard</literal>, <literal>ttyPS0</literal> for
1106 <literal>zynq</literal>):</para>
1107
1108 <programlisting><command>echo ttyS0,115200 &gt; /sys/module/kgdboc/parameters/kgdboc</command></programlisting>
1109 </listitem>
1110
1111 <listitem>
1112 <para>Start KGDB on the target SysRq:</para>
1113
1114 <programlisting><command>echo g &gt; /proc/sysrq-trigger</command></programlisting>
1115 </listitem>
1116
1117 <listitem>
1118 <para>Keep the serial connection open, but close the terminal to
1119 the target.</para>
1120 </listitem>
1121 </orderedlist>
1122 </listitem>
1123
1124 <listitem>
1125 <para>Launch the debug session in Eclipse:</para>
1126
1127 <orderedlist spacing="compact">
1128 <listitem>
1129 <para>Select <emphasis role="bold">Run &gt; Debug
1130 Configurations</emphasis>.</para>
1131 </listitem>
1132
1133 <listitem>
1134 <para>Select the configuration created above.</para>
1135 </listitem>
1136
1137 <listitem>
1138 <para>Click the <emphasis role="bold">Debug</emphasis>
1139 button.</para>
1140 </listitem>
1141 </orderedlist>
1142
1143 <para>The target halts in function
1144 <literal>kgdb_breakpoint()</literal>. The GDB view opens in Eclipse,
1145 and from here you can debug the kernel by giving ordinary GDB commands
1146 (<command>resume</command>, <command>step</command>, <command>set
1147 breakpoint,</command> etc.).</para>
1148 </listitem>
1149 </orderedlist>
1150 </section>
1151
1152 <section id="workarounds">
1153 <title>Workarounds</title>
1154
1155 <section id="troubleshoot_build_debug_config">
1156 <title>Run/Debug Configuration Not Created</title>
1157
1158 <itemizedlist>
1159 <listitem>
1160 <para><emphasis role="bold">Description:</emphasis> When setting up
1161 <link linkend="eclipse_debug">Remote Debugging from Eclipse</link>,
1162 a run/debug configuration is not created when setting the
1163 cross-compiler options, thus there is nothing to select under
1164 <emphasis role="bold">C/C++ Remote Application</emphasis> in the
1165 first step.</para>
1166 </listitem>
1167
1168 <listitem>
1169 <para><emphasis role="bold">Solution:</emphasis> Manually create a
1170 run/debug configuration.</para>
1171
1172 <para>Perform the following steps:</para>
1173
1174 <orderedlist>
1175 <listitem>
1176 <para>Double-click the <emphasis role="bold">C/C++ Remote
1177 Application</emphasis>. This will create a new debug
1178 configuration named after your project.</para>
1179 </listitem>
1180
1181 <listitem>
1182 <para>In the <emphasis role="bold">Debugger</emphasis> tab,
1183 select a <emphasis role="bold">GDB debugger</emphasis> by
1184 browsing for and selecting the debugger of your
1185 cross-compilation toolchain, from your <emphasis
1186 role="bold">Sysroot Location</emphasis>. Example:</para>
1187
1188 <programlisting>$ &lt;extsdkdir&gt;/tmp/sysroots/x86_64-linux/usr/bin/\
1189&lt;arch&gt;-enea-linux/&lt;arch&gt;-enea-linux-gdb</programlisting>
1190
1191 <para>where <filename>&lt;sdkdir&gt;</filename> is e.g.
1192 <filename>/opt/enea/&lt;sdkversion&gt;</filename>.</para>
1193 </listitem>
1194
1195 <listitem>
1196 <para>Outside Eclipse, create a new file named
1197 <filename>.gdbinit</filename> within your Eclipse workspace,
1198 under your project directory, e.g. <filename>&lt;path to
1199 workspace&gt;/&lt;project name&gt;/.gdbinit</filename>, with the
1200 following command, using your <emphasis role="bold">Sysroot
1201 Location</emphasis>:</para>
1202
1203 <programlisting>$ set sysroot &lt;extsdkdir&gt;/sysroots</programlisting>
1204 </listitem>
1205
1206 <listitem>
1207 <para>Back in Eclipse in the <emphasis
1208 role="bold">Debugger</emphasis> tab, browse for the newly
1209 created <emphasis role="bold">.gdbinit</emphasis> file and
1210 select it under <emphasis role="bold">GDB command
1211 file</emphasis>.</para>
1212 </listitem>
1213
1214 <listitem>
1215 <para>Click <emphasis role="bold">Apply</emphasis>, then go back
1216 to the <emphasis role="bold">Main</emphasis> tab and continue
1217 with the remaining steps in the <emphasis role="bold">Remote
1218 Debugging</emphasis> section.</para>
1219 </listitem>
1220 </orderedlist>
1221 </listitem>
1222 </itemizedlist>
1223 </section>
1224 </section>
1225</chapter>
diff --git a/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
new file mode 100644
index 0000000..f22f6a2
--- /dev/null
+++ b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
@@ -0,0 +1,806 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="using_enealinux">
3 <title>Using Enea Linux</title>
4
5 <section id="build_enealinux">
6 <title>Building Enea Linux</title>
7
8 <para>Enea Linux is made available as sources, this allows for of building
9 various Enea Linux artifacts and is detailed in the following
10 sections:</para>
11
12 <section id="build_images">
13 <title>Building the images</title>
14
15 <para>Build Enea Linux images using the following steps:</para>
16
17 <procedure>
18 <step>
19 <para>Set the $MACHINE/&lt;machine&gt; variable to the target you
20 need, e.g. <literal>intel-corei7-64</literal>.</para>
21 </step>
22
23 <step>
24 <para>Clone Enea Linux sources using Repo tool. Please refer to
25 <xref linkend="getting_sources" /> for more details.</para>
26
27 <programlisting>$ mkdir enea-linux
28$ cd enea-linux
29$ repo init -u git@git.enea.com:linux/manifests/el_manifests-rt.git \
30 -b refs/tags/Enea_Linux_8.0 -m $MACHINE/default.xml
31$ repo sync</programlisting>
32 </step>
33
34 <step>
35 <para>Source the build environment</para>
36
37 <programlisting>$ cd poky
38$ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \
39. ./oe-init-build-env &lt;build_dir&gt;</programlisting>
40
41 <para>Sourcing the build environment is needed everytime a new shell
42 is used. However, sourcing using the <literal>TEMPLATECONF</literal>
43 is only needed the first time around. After the first time, it is
44 enough to source the build directory created before.</para>
45
46 <note>
47 <para>The build directory may reside on an NFS mount, but the
48 <literal>TMPDIR</literal>
49 (<literal>&lt;build_dir&gt;/tmp</literal>) may not. Either build
50 all on a local disk, or update <literal>TMPDIR</literal> in
51 <literal>conf/local.conf</literal> to point to a local
52 disk.</para>
53 </note>
54 </step>
55
56 <step>
57 <para>Build Enea Linux image</para>
58
59 <programlisting># You have already initiated the build environment and are in the &lt;build_dir&gt;
60$ bitbake &lt;enea-image-name&gt;
61$ cd &lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/ # Here are the build binaries</programlisting>
62
63 <note>
64 <para>Some builds have restrictions on the length of the path
65 name. If you get a build error indicating that the length is too
66 long, you need to move your build to obtain a shorter path.</para>
67 </note>
68
69 <para>Generated images are by default saved in
70 <literal><literal>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;</literal></literal>,
71 where <literal>&lt;build_dir&gt;</literal> by default is the current
72 working directory. Images are created for emulation on host or for
73 booting a physical target, according to how the build environment
74 was set up before running bitbake.</para>
75
76 <para>Depending on the number of processors and cores, the amount or
77 RAM, the speed of your Internet connection and other factors, the
78 build process can take several hours the first time you run it.
79 Subsequent builds run much faster since parts of the build are
80 cached.</para>
81
82 <note>
83 <para>Make sure that the user running the build has access to the
84 Git repositories on git.enea.com. The build process fetches
85 information from git.enea.com so the user running the build shall
86 have the ssh key properly configured. Please refer to <xref
87 linkend="getting_sources" /> for more details on how to get access
88 to Enea Linux sources.</para>
89 </note>
90 </step>
91 </procedure>
92 </section>
93
94 <section id="build_sdk">
95 <title>Building the SDK</title>
96
97 <para>If you want to rebuild a cross-compilation toolchain to be used by
98 in application development, use the following steps:</para>
99
100 <procedure>
101 <step>
102 <para>Clone Enea Linux sources using Repo tool. Please refer to
103 <xref linkend="getting_sources" /> for more details on how to do
104 this.</para>
105
106 <programlisting>$ mkdir enea-linux
107$ cd enea-linux
108$ repo init -u git@git.enea.com:linux/manifests/el_manifests-rt.git \
109 -b refs/tags/Enea_Linux_8.0 -m $MACHINE/default.xml
110$ repo sync</programlisting>
111 </step>
112
113 <step>
114 <para>Source the build environment</para>
115
116 <programlisting>$ cd poky
117$ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \
118. ./oe-init-build-env &lt;build_dir&gt;</programlisting>
119
120 <para>Sourcing the build environment is needed everytime a new shell
121 is used. However, sourcing using the <literal>TEMPLATECONF</literal>
122 is only needed the first time around. Afterwards it is enough to
123 source the build directory created before.</para>
124
125 <note>
126 <para>The build directory may reside on an NFS mount, but the
127 <literal>TMPDIR</literal>
128 (<literal>&lt;build_dir&gt;/tmp</literal>) may not. Either build
129 all on a local disk, or update TMPDIR in conf/local.conf to point
130 to a local disk.</para>
131 </note>
132 </step>
133
134 <step>
135 <para>Build Enea Linux SDK</para>
136
137 <programlisting># You have already initiated the build environment and are in the &lt;build_dir&gt;
138$ bitbake &lt;enea-image-name&gt; -c populate_sdk_ext
139$ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</programlisting>
140
141 <note>
142 <para>Some builds have restrictions on the length of the path
143 name. If you get a build error indicating that the length is too
144 long, you need to move your build to obtain a shorter path.</para>
145 </note>
146
147 <para>Generated SDK installer script is by default saved in
148 <literal>&lt;build_dir&gt;/tmp/deploy/sdk</literal>, where
149 <literal>&lt;build_dir&gt;</literal> by default is the current
150 working directory.</para>
151
152 <para>Depending on the number of processors and cores, the amount or
153 RAM, the speed of your Internet connection and other factors, the
154 build process can take several hours the first time you run it.
155 Subsequent builds run much faster since parts of the build are
156 cached.</para>
157
158 <para>For more details on how to install and use the SDK, please
159 refer to <xref linkend="install_el_sdk" />.</para>
160 </step>
161 </procedure>
162 </section>
163 </section>
164
165 <section id="boot_enealinux">
166 <title>Booting Enea Linux</title>
167
168 <para>Regardless whether you decide to use the pre-built images or if you
169 choose to build your own, the end result should be similar. Once you have
170 the artifacts availalbe, you may proceed to booting Enea Linux on
171 target.</para>
172
173 <para>Enea Linux supports multiple booting methods so those will be
174 described in the following sections.</para>
175
176 <section id="enea-linux-x86-pxe">
177 <title>Boot via PXE using DHCP, TFTP, and NFS servers</title>
178
179 <para>Below you find an example of how to boot Enea Linux in a target
180 supporting PXE. The PXE boot is handled by the target BIOS.</para>
181
182 <para>This requires the setup of DHCP, TFTP and NFS servers on the host.
183 The DHCP server contains a configuration for the target, found via the
184 target MAC address, and refers to the TFTP server for the boot image and
185 to the NFS server for the root file system.</para>
186
187 <para>For the DHCP server, in addition to the general configuration, the
188 DHCPD configuration should contain an entry for the target with the
189 following information:</para>
190
191 <itemizedlist spacing="compact">
192 <listitem>
193 <para>Host name</para>
194 </listitem>
195
196 <listitem>
197 <para>MAC hardware ethernet address (also available in the TFTP
198 configuration)</para>
199 </listitem>
200
201 <listitem>
202 <para>IP address, (assuming a fixed IP address is used)</para>
203 </listitem>
204
205 <listitem>
206 <para>The TFTP server shall be defined as
207 <literal>next-server</literal></para>
208 </listitem>
209
210 <listitem>
211 <para>The relative path in the TFTP server to the PXE file
212 <filename><literal>pxelinux.0</literal></filename></para>
213 </listitem>
214
215 <listitem>
216 <para>The NFS server IP address and the path to the rootfs on the
217 NFS server, defined as <literal>option root-path</literal></para>
218 </listitem>
219 </itemizedlist>
220
221 <para>Example of a DHCP server configuration:</para>
222
223 <programlisting>host intel-corei7-64_host {
224 hardware ethernet 01:00:25:90:c8:c5:98;
225 fixed-address 192.168.1.38;
226 next-server 192.168.2.10;
227 filename "intel-corei7-64_tftp/pxelinux.0";
228 option root-path "192.168.2.20:/export/intel-corei7-64_rootfs";
229}</programlisting>
230
231 <para>For the TFTP server, the TFTP path to the target's pxelinux.0 file
232 is given in the DHCP Configuration. Examples of files included in the
233 TFTP subdirectory indicated by the DHCP configuration are:</para>
234
235 <programlisting>pxelinux.0
236vesamenu.c32
237boot/device01/bzImage (bootable image file)
238pxelinux.cfg/01-00-25-90-c8-c5-98 (Configuration file)</programlisting>
239
240 <para>One configuration file has the same name as the target's MAC
241 address (but with hyphens instead of a colon). This configuration file
242 contains a pointer to the bootable image and also a list of command line
243 arguments to append when the image is started. The same NFS path to the
244 root file system is both in the DHCP and the TFTP configuration.</para>
245
246 <para>Example of a configuration file:</para>
247
248 <programlisting>default vesamenu.c32
249prompt 0
250timeout 100
251
252label device01
253 menu label ^EneaLinuxNFS
254 menu default
255 kernel boot/device01/bzImage
256 <emphasis role="bold">append</emphasis> root=/dev/nfs nfsmount=192.168.2.20:/export/intel-corei7-64_rootfs ip=dhcp
257 console=ttyS0,115200</programlisting>
258
259 <para><emphasis role="bold">NFS server</emphasis>: The NFS server shall
260 contain an unpacked root file system in the path indicated both in the
261 DHCP and in the TFTP configuration.</para>
262
263 <para>After configuring the servers, copy files from the build directory
264 into the correctly configured paths:</para>
265
266 <orderedlist spacing="compact">
267 <listitem>
268 <para>Ensure the target is not already running an OS, otherwise the
269 target might attempt to change files on the root file system while
270 it is populated with new files.</para>
271 </listitem>
272
273 <listitem>
274 <para>Copy <filename>pxelinux.0</filename> and
275 <filename>vesamenu.c32</filename> from the build directory, e.g.
276 from
277 <filename>&lt;build_dir&gt;tmp/work/corei7-64-enea-linux/syslinux/6.03-r0/image/usr/share/syslinux/</filename>.</para>
278 </listitem>
279
280 <listitem>
281 <para>Copy <filename>bzImage</filename> from
282 <filename>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/</filename>.</para>
283 </listitem>
284
285 <listitem>
286 <para>Populate the root file system in the NFS directory by
287 unpacking
288 <filename>enea-image-rt-intel-corei7-64.tar.gz</filename>
289 found at
290 <filename>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/</filename>.</para>
291 </listitem>
292 </orderedlist>
293
294 <para>Boot the target by:</para>
295
296 <orderedlist>
297 <listitem>
298 <para>Use the BIOS or boot setup to select PXE boot, if not already
299 selected.</para>
300 </listitem>
301
302 <listitem>
303 <para>Reboot the target.</para>
304 </listitem>
305 </orderedlist>
306
307 <para>The boot setup menu is usually launched by pressing F12 or ESC
308 during BIOS power up tests. Look up the manufacturer's documentation for
309 your board model to find the appropriate key.</para>
310 </section>
311 </section>
312
313 <section id="custom_enealinux">
314 <title>Customizing Enea Linux</title>
315
316 <section id="layers_adaptations">
317 <title>Layers and Adaptations</title>
318
319 <para>Bitbake allows a modular approach of Metadata, by building images
320 for the layers listed in the conf/bblayers.conf file from your build
321 directory.</para>
322
323 <para>To avoid polluting the build with unnecessary packages, before
324 adding a new layer, it is recommended to check if the Metadata you need
325 is already available in the enabled layers, in which case, for the
326 intended configuration, it may require less modification.</para>
327
328 <para>To ease further use of the layer, try to follow as many best
329 practices as possible when creating it:</para>
330
331 <itemizedlist>
332 <listitem>
333 <para>Use names starting with the meta prefix (although this is not
334 a requirement)</para>
335 </listitem>
336 </itemizedlist>
337
338 <itemizedlist>
339 <listitem>
340 <para>Place your layer under poky</para>
341 </listitem>
342 </itemizedlist>
343
344 <itemizedlist>
345 <listitem>
346 <para>Isolate different customizations by layer</para>
347 </listitem>
348 </itemizedlist>
349
350 <itemizedlist>
351 <listitem>
352 <para>Assign the layer to a repository (to easily have access to
353 maintenance)</para>
354 </listitem>
355 </itemizedlist>
356
357 <para>To enable a layer, its top path must be specified in the
358 <filename>BBLAYERS</filename> variable, as follows:</para>
359
360 <programlisting># POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
361# changes incompatibly
362POKY_BBLAYERS_CONF_VERSION = "2"
363
364BBPATH = "${TOPDIR}"
365BBFILES ?= ""
366
367BBLAYERS ?= " \
368 /path/to/poky/meta \
369 /path/to/poky/meta-el-common \
370 /path/to/poky/meta-el-rt \
371 /path/to/poky/meta-enea-bsp-common \
372 /path/to/poky/meta-enea-bsp-x86 \
373 /path/to/poky/meta-openembedded/meta-oe \
374 /path/to/poky/meta-openembedded/meta-networking \
375 /path/to/poky/meta-openembedded/meta-filesystems \
376 /path/to/poky/meta-openembedded/meta-python \
377 /path/to/poky/meta-poky \
378 /path/to/poky/meta-&lt;layer&gt; \
379 "</programlisting>
380
381 <para>Before adding an extra layer, please keep in mind that the order
382 of layers is important (due to BitBake parsing conf/layer.conf as
383 specified in <filename>BBLAYERS</filename>). To add an extra layer, you
384 can modify the <filename>build/conf/bblayers.conf</filename> file in the
385 source code editor you prefer, as described above, or use one of the
386 specially designed Yocto tools.</para>
387
388 <para>To do such, you can simply modify the build/conf/bblayers.conf
389 file in the source code editor you prefer, as described above, or use
390 one of the specially designed Yocto tools.</para>
391
392 <para>For instance, in addition to the above, the Yocto Bitbake layers
393 utility ensures a very useful checking of some basic layer requirements.
394 Bitbake layers are available, as most of the BitBake tools, when
395 sourcing oe-init-build-env. Therefore, to enable a custom meta layer,
396 you should simply run the following from the build directory:</para>
397
398 <programlisting>bitbake-layers add-layer &lt;meta-layer&gt;</programlisting>
399
400 <para>If the specified layer doesn't contain a
401 <filename>conf/layer.conf</filename> file, you should add one with the
402 needed configuration. Also, to make sure the layer insertion is done in
403 the right metadata, the utility looks for the bblayers.conf
404 configuration file in the corresponding path, which should be satisfied
405 if running the command from the generated build directory.</para>
406
407 <para>For further information on this or on other utilities belonging to
408 the same suite, run:</para>
409
410 <programlisting>bitbake-layers -h</programlisting>
411
412 <para>As a result, <filename>BBLAYERS</filename> shall be extended with
413 the bsp-layer/s layer for your target and any other additional layer/s.
414 For details on how to do this, see the <ulink
415 url="http://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#understanding-and-creating-layers">Yocto
416 2.5 Dev Manual, section "Understanding and Creating Layers".</ulink> If
417 needed replace the Yocto version.</para>
418
419 <para>Layers can be added when you initialize the build environment. The
420 layers required for each target are specified in the build commands in
421 the Enea Linux distribution's Release Information.</para>
422
423 <para>Each Enea Linux customer is advised to add a custom layer for
424 customer-specific additions and customizations, instead of modifying
425 existing layers.</para>
426
427 <para>The recommended way to modify a package is to edit directly in the
428 recipe file. Utilizing the devshell, <literal>bitbake -c devshell
429 &lt;image_name&gt;</literal>, when constructing or modifying recipes is
430 really handy when experimenting, but do not forget to make the final
431 updates directly in the recipe file. It is difficult to keep track of
432 exactly what in the user environment is "dirty" and not in sync with
433 current recipes. Therefore, always make sure to <literal>bitbake -c
434 clean &lt;image_name&gt;</literal> after finishing up a devshell
435 session, and adapt recipes accordingly to ensure a shareable and
436 repeatable build environment.</para>
437 </section>
438
439 <section id="add_recipe">
440 <title>Adding a Recipe</title>
441
442 <para>Study the <ulink
443 url="https://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#new-recipe-single-c-file-package-hello-world"><ulink
444 url="https://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#new-recipe-single-c-file-package-hello-world">Hello
445 World recipe</ulink></ulink> in the Yocto Project Development Manual. If
446 needed replace the example version (2.5) with the Yocto version in your
447 Enea Linux distribution.</para>
448 </section>
449
450 <section id="config_pkg_recipes">
451 <title>Configuring Packages via Recipes</title>
452
453 <para>The default configuration produces a standard Linux installation,
454 but it is often desirable to configure specific packages in more detail.
455 Different packages implement their configuration in different ways, and
456 there is no single method that is valid for all packages. As always, in
457 a collaborative development environment, the developer should make sure
458 that the recipes in the custom layer are upgraded accordingly when a
459 reconfiguration of a specific package is done.</para>
460
461 <para>In subsequent sections you find examples on how to configure some
462 common packages.</para>
463
464 <section id="linux_kern">
465 <title>The Linux Kernel</title>
466
467 <para>The Linux kernel provides a vast array of configuration options,
468 managed using its own configuration system. The kernel package can be
469 supplied from different providers, and this example uses the
470 virtual/kernel package name to refer to the kernel used in the
471 build:</para>
472
473 <programlisting>$ bitbake -c menuconfig virtual/kernel</programlisting>
474
475 <note>
476 <para>menuconfig requires Ncurses. If the terminal that pops up
477 immediately closes instead of showing the menuconfig interface,
478 check that the Ncurses development library is installed.</para>
479 </note>
480
481 <para>First build the kernel:</para>
482
483 <programlisting>$ bitbake -f -c compile -c install -c deploy virtual/kernel</programlisting>
484
485 <para>Then build the whole distribution:</para>
486
487 <programlisting>$ bitbake enea-image-&lt;name&gt;</programlisting>
488 </section>
489
490 <section id="busybox">
491 <title>Busybox</title>
492
493 <para>Busybox uses the same configuration system as the Linux kernel
494 and is therefore invoked similarly. In contrast to the kernel, there
495 is generally only one variant of busybox in a distribution and we can
496 therefore refer to it by the package name alone:</para>
497
498 <programlisting>$ bitbake -c menuconfig busybox</programlisting>
499 </section>
500 </section>
501
502 <section id="build_com_licenses">
503 <title>Building with Commercial Licenses</title>
504
505 <note>
506 <para>Adding commercial-licensed packages might pose distribution
507 problems due to license agreements or patents.</para>
508 </note>
509
510 <para>Commercial-licensed packages are not provided with Enea Linux.
511 Depending on your use case, you might need to extend the initial image
512 with more packages by adding recipes and updating the image definition,
513 always in accordance with the license conditions. To succeed with
514 building the customized image, you might need to solve dependencies by
515 adding even more packages.</para>
516
517 <para>Below is an example with steps on how to add a package with a
518 commercial license. The configuration is updated in two places and the
519 recipes are selected for the packages and any dependencies.</para>
520
521 <note>
522 <para>This is only an illustrating example, the exact configuration
523 may differ between different packages. Some packages could require
524 other defines added to local.conf and some packages might need an
525 added <filename>DEPENDS</filename> in the *.inc file, or other
526 particular changes.</para>
527 </note>
528
529 <itemizedlist>
530 <listitem>
531 <para>Append the package name to the
532 <filename>IMAGE_INSTALL</filename> definition, used in the recipe
533 corresponding to the image you will build, as in one of the examples
534 below:</para>
535
536 <orderedlist>
537 <listitem>
538 <para>If you need the package in a set of images, to avoid
539 defining it in each recipe, add the following line to
540 <filename>IMAGE_INSTALL</filename> in
541 <filename>meta-el-common/images/enea-image-common.inc</filename></para>
542
543 <programlisting> package_name \</programlisting>
544 </listitem>
545
546 <listitem>
547 <para>If you have specific images in which you need the package,
548 add the following line in the corresponding recipes in
549 meta-el-&lt;profile&gt;/images/enea-image-&lt;profile&gt;.bb</para>
550
551 <programlisting> IMAGE_INSTALL += " \
552 package_name \
553 "</programlisting>
554 </listitem>
555 </orderedlist>
556 </listitem>
557
558 <listitem>
559 <para>Add the required license to the
560 <filename>LICENSE_FLAGS_WHITELIST</filename> definition. This can be
561 done by adding script lines in the corresponding
562 scripts/conf_setup.sh file, which appends
563 <filename>LICENSE_FLAGS_WHITELIST +=
564 "&lt;suitable-license&gt;</filename> to
565 <filename>conf/local.conf.</filename></para>
566 </listitem>
567
568 <listitem>
569 <para>To mitigate the build errors caused by packages with
570 commercial licenses, you might also need to append the generic
571 license <filename>LICENSE_FLAGS_WHITELIST += "commercial"</filename>
572 in the same way as above.</para>
573 </listitem>
574
575 <listitem>
576 <para>Select the needed recipes for the packages and add these to
577 the build configuration.</para>
578 </listitem>
579
580 <listitem>
581 <para>Select the needed recipes to resolve dependencies for the new
582 packages and add these to the build configuration.</para>
583 </listitem>
584 </itemizedlist>
585
586 <para>More information about recipes can be found here:</para>
587
588 <itemizedlist>
589 <listitem>
590 <para><ulink
591 url="http://git.openembedded.org/">http://git.openembedded.org/</ulink></para>
592 </listitem>
593 </itemizedlist>
594
595 <itemizedlist>
596 <listitem>
597 <para><ulink
598 url="https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles">https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles</ulink></para>
599 </listitem>
600 </itemizedlist>
601
602 <itemizedlist>
603 <listitem>
604 <para><ulink
605 url="http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe">http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe</ulink></para>
606 </listitem>
607 </itemizedlist>
608 </section>
609 </section>
610
611 <section id="install_el_sdk">
612 <title>Installing the Enea Linux SDK</title>
613
614 <para>Before cross-compiling applications for your target, you need to
615 install the Software Development Kit (SDK) - which contains the
616 cross-compilation toolchain - and set up the cross-compilation environment
617 on your host. The toolchain for each supported target contains a 64-bit
618 library for gcc. The toolchain and the environment-setup script are
619 wrapped together inside a toolchain installer in the form of a shell
620 script.</para>
621
622 <para>The cross-compilation toolchain is packaged as follows:</para>
623
624 <itemizedlist>
625 <listitem>
626 <para>The &lt;target&gt; toolchain contains the lib64 (64-bit)
627 library.</para>
628 </listitem>
629
630 <listitem>
631 <para>The &lt;target&gt; installer has an environment-setup script
632 which will select the lib64 to be used by gcc. This way, a 64-bit
633 application can be cross-compiled.</para>
634 </listitem>
635 </itemizedlist>
636
637 <para>Do as in the example below to install the SDK and set up the
638 cross-compilation environment:</para>
639
640 <orderedlist>
641 <listitem>
642 <para>The fastest alternative is to use a precompiled
643 cross-compilation toolchain installer for your host and target.</para>
644
645 <para>Please refer to the Release Information document, in section 1.1
646 Provided Contents, for more details on where to find the pre-compiled
647 SDK installer.</para>
648 </listitem>
649
650 <listitem>
651 <para>Run the installer to unpack the cross-compilation toolchain and
652 the environment-setup script:</para>
653
654 <programlisting>$ chmod 770 enea-*-toolchain-&lt;version&gt;.sh
655$ ./enea-*-toolchain-&lt;version&gt;.sh</programlisting>
656
657 <para>When prompted, select to install the SDK in the desired
658 directory, referred to as &lt;sdkdir&gt;. The default path where the
659 SDK will be installed, will be shown in the prompt. The installer
660 unpacks the environment setup script in &lt;sdkdir&gt; and the
661 toolchain under &lt;sdkdir&gt;/sysroots.</para>
662
663 <note>
664 <para>Choose a unique directory for each toolchain. Installing a
665 second toolchain of any type (buildtools toolchain or
666 cross-compilation toolchain) in the same directory as a previously
667 installed one will break the $PATH variable of the first one.</para>
668 </note>
669 </listitem>
670
671 <listitem>
672 <para>Setup the toolchain environment for your target by sourcing the
673 environment-setup script:</para>
674
675 <programlisting>$ . &lt;sdkdir&gt;/environment-setup-&lt;arch&gt;-enea-linux</programlisting>
676
677 <para>Example:</para>
678
679 <programlisting>$ . /opt/enea/environment-setup-corei7-64-enea-linux</programlisting>
680 </listitem>
681 </orderedlist>
682
683 <para>Once the cross-compilation toolchain is in place and the environment
684 set up, you can proceed with Cross-Compiling Applications from Command
685 Line (4.1) or, if Eclipse is installed, Cross-Compiling from Eclipse
686 (5.4.1).</para>
687 </section>
688
689 <section id="pkg_mg">
690 <title>Using Package Management</title>
691
692 <para>A Package Management System (PMS) can be used to customize your
693 image in a consistent way, e.g. to install, upgrade, or delete packages
694 considering the dependencies. The package management systems supported by
695 Enea Linux are described in this section. More information about PMS can
696 be found in the Yocto 2.5 document <ulink
697 url="http://www.yoctoproject.org/docs/2.5/mega-manual/mega-manual.html">Yocto
698 Project Mega Manual</ulink>. If needed replace the Yocto version in the
699 link.</para>
700
701 <section id="apt_pktmgmt">
702 <title>APT Package Management (DEB Packages)</title>
703
704 <para>Enea Linux provides DEB packages on <ulink
705 url="http://linux.enea.com/EneaLinux8.0/">linux.enea.com</ulink> site,
706 in directory
707 <literal><literal>&lt;release&gt;/&lt;target&gt;/deb</literal>/</literal>.</para>
708
709 <para>The application for performing runtime package management of DEB
710 packages on the target is called <filename>apt-get</filename>.</para>
711
712 <para>Use the <literal>apt-get</literal> command to install, upgrade, or
713 remove packages. Before using any apt-get options that require network
714 access, please check that the network is configured and working
715 properly.</para>
716
717 <para>The <literal>apt-get</literal> command is by default included in
718 Enea Linux images.</para>
719
720 <section id="apt_config">
721 <title>Configuring</title>
722
723 <para>APT relies on the concept of repositories in order to find
724 packages and resolve dependencies.</para>
725
726 <para>Any number of additional repositories can be added to APT's
727 configuration files (.list extension) located in sources.list.d
728 directory (e.g:
729 <filename>/etc/apt/sources.list.d/repos.list</filename>) and then be
730 queried by APT.</para>
731
732 <programlisting># touch /etc/apt/sources.list.d/repos.list
733# echo "deb [trusted=yes] http://server-address/path/to/the/package/directory ./" | \
734tee -a /etc/apt/sources.list.d/repos.list</programlisting>
735
736 <para>Run <literal>apt-get update</literal> to fetch information from
737 the new repository:</para>
738
739 <programlisting># apt-get update</programlisting>
740 </section>
741
742 <section id="apt_install">
743 <title>Installing</title>
744
745 <para>DEB packages typically have file names like
746 foo-1.0.1-r0.0_arm64.deb The file name includes the package name
747 (foo), version (1.0.1), revison (r0.0), and architecture (arm64). To
748 install a package, log in as root and type the following command at a
749 shell prompt:</para>
750
751 <programlisting># apt-get install foo</programlisting>
752
753 <para>The <literal>apt-get install</literal> command will install one
754 or more packages in the system.</para>
755 </section>
756
757 <section id="apt_upgrade">
758 <title>Upgrading</title>
759
760 <para>The <literal>apt-get upgrade</literal> command will upgrade one
761 or more packages which are currently installed in the system. If no
762 packages are given, all installed packages will be checked.</para>
763
764 <programlisting># apt-get upgrade foo</programlisting>
765 </section>
766
767 <section id="apt_rm">
768 <title>Removing</title>
769
770 <para>The <literal>apt-get remove</literal> command will remove one or
771 more packages which are currently installed in the system.
772 Example:</para>
773
774 <programlisting># apt-get remove ptest-runner
775Reading package lists... Done
776Building dependency tree
777Reading state information... Done
778The following packages were automatically installed and are no longer required:
779 libc6-dbg libc6-dev libc6-extra-nss libc6-thread-db libcidn1
780 linux-libc-headers-dev
781Use 'apt autoremove' to remove them.
782The following packages will be REMOVED:
783 ptest-runner
7840 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
785After this operation, 0 B of additional disk space will be used.
786Do you want to continue? [Y/n] y
787(Reading database ... 5766 files and directories currently installed.)
788Removing ptest-runner (2.0.2+git0+6d2872116c-r0.0) ...
789</programlisting>
790 </section>
791
792 <section id="pm_searching">
793 <title>Searching</title>
794
795 <para>The <literal>apt-cache search</literal> allows searching for the
796 given expressions in the name, summary and description of known
797 packages. Example:</para>
798
799 <programlisting># apt-cache search ptest-runner
800ptest-runner - A C program to run all installed ptests
801ptest-runner-dbg - A C program to run all installed ptests - Debugging files
802ptest-runner-dev - A C program to run all installed ptests - Development files</programlisting>
803 </section>
804 </section>
805 </section>
806</chapter>