summaryrefslogtreecommitdiffstats
path: root/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/book-enea-linux-user-guide/doc/using_enea_linux.xml')
-rw-r--r--doc/book-enea-linux-user-guide/doc/using_enea_linux.xml268
1 files changed, 192 insertions, 76 deletions
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
index aba7c1d..db04d8f 100644
--- a/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
+++ b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
@@ -5,9 +5,8 @@
5 <section id="build_enealinux"> 5 <section id="build_enealinux">
6 <title>Building Enea Linux</title> 6 <title>Building Enea Linux</title>
7 7
8 <para>Enea Linux is made available as sources, this allows for of building 8 <para>Enea Linux is made available as sources, allowing for the building of
9 various Enea Linux artifacts and is detailed in the following 9 various Enea Linux artifacts, detailed in the following sections.</para>
10 sections:</para>
11 10
12 <section id="build_images"> 11 <section id="build_images">
13 <title>Building Real-Time images</title> 12 <title>Building Real-Time images</title>
@@ -25,7 +24,7 @@
25 </step> 24 </step>
26 25
27 <step> 26 <step>
28 <para>Clone Enea Linux sources using Repo tool. Please refer to 27 <para>Clone Enea Linux sources using the Repo tool. Please refer to
29 <xref linkend="getting_sources" /> for more details.</para> 28 <xref linkend="getting_sources" /> for more details.</para>
30 29
31 <programlisting>$ mkdir enea-linux 30 <programlisting>$ mkdir enea-linux
@@ -42,7 +41,7 @@ $ repo sync</programlisting>
42$ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \ 41$ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \
43. ./oe-init-build-env &lt;build_dir&gt;</programlisting> 42. ./oe-init-build-env &lt;build_dir&gt;</programlisting>
44 43
45 <para>Sourcing the build environment is needed everytime a new shell 44 <para>Sourcing the build environment is needed every time a new shell
46 is used. However, sourcing using the <literal>TEMPLATECONF</literal> 45 is used. However, sourcing using the <literal>TEMPLATECONF</literal>
47 is only needed the first time around. After the first time, it is 46 is only needed the first time around. After the first time, it is
48 enough to source the build directory created before.</para> 47 enough to source the build directory created before.</para>
@@ -77,8 +76,8 @@ $ cd &lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/ # Here are the build b
77 booting a physical target, according to how the build environment 76 booting a physical target, according to how the build environment
78 was set up before running bitbake.</para> 77 was set up before running bitbake.</para>
79 78
80 <para>Depending on the number of processors and cores, the amount or 79 <para>Depending on the number of processors and cores, the amount of
81 RAM, the speed of your Internet connection and other factors, the 80 RAM, the speed of your internet connection and other factors, the
82 build process can take several hours the first time you run it. 81 build process can take several hours the first time you run it.
83 Subsequent builds run much faster since parts of the build are 82 Subsequent builds run much faster since parts of the build are
84 cached.</para> 83 cached.</para>
@@ -86,8 +85,8 @@ $ cd &lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/ # Here are the build b
86 <note> 85 <note>
87 <para>Make sure that the user running the build has access to the 86 <para>Make sure that the user running the build has access to the
88 Git repositories on git.enea.com. The build process fetches 87 Git repositories on git.enea.com. The build process fetches
89 information from git.enea.com so the user running the build shall 88 information from git.enea.com so the user running the build needs to
90 have the ssh key properly configured. Please refer to <xref 89 have the ssh key properly configured. Please refer to <xref
91 linkend="getting_sources" /> for more details on how to get access 90 linkend="getting_sources" /> for more details on how to get access
92 to Enea Linux sources.</para> 91 to Enea Linux sources.</para>
93 </note> 92 </note>
@@ -99,11 +98,11 @@ $ cd &lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/ # Here are the build b
99 <title>Building the SDK</title> 98 <title>Building the SDK</title>
100 99
101 <para>If you want to rebuild a cross-compilation toolchain to be used by 100 <para>If you want to rebuild a cross-compilation toolchain to be used by
102 in application development, use the following steps:</para> 101 in application development, do the following:</para>
103 102
104 <procedure> 103 <procedure>
105 <step> 104 <step>
106 <para>Clone Enea Linux sources using Repo tool. Please refer to 105 <para>Clone Enea Linux sources using the Repo tool. Please refer to
107 <xref linkend="getting_sources" /> for more details on how to do 106 <xref linkend="getting_sources" /> for more details on how to do
108 this.</para> 107 this.</para>
109 108
@@ -130,8 +129,8 @@ $ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \
130 <para>The build directory may reside on an NFS mount, but the 129 <para>The build directory may reside on an NFS mount, but the
131 <literal>TMPDIR</literal> 130 <literal>TMPDIR</literal>
132 (<literal>&lt;build_dir&gt;/tmp</literal>) may not. Either build 131 (<literal>&lt;build_dir&gt;/tmp</literal>) may not. Either build
133 all on a local disk, or update TMPDIR in conf/local.conf to point 132 all on a local disk, or update <literal>TMPDIR</literal> in
134 to a local disk.</para> 133 <literal>conf/local.conf</literal> to point to a local disk.</para>
135 </note> 134 </note>
136 </step> 135 </step>
137 136
@@ -148,13 +147,13 @@ $ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</prog
148 long, you need to move your build to obtain a shorter path.</para> 147 long, you need to move your build to obtain a shorter path.</para>
149 </note> 148 </note>
150 149
151 <para>Generated SDK installer script is by default saved in 150 <para>The generated SDK installer script is by default saved in
152 <literal>&lt;build_dir&gt;/tmp/deploy/sdk</literal>, where 151 <literal>&lt;build_dir&gt;/tmp/deploy/sdk</literal>, where
153 <literal>&lt;build_dir&gt;</literal> by default is the current 152 <literal>&lt;build_dir&gt;</literal> by default is the current
154 working directory.</para> 153 working directory.</para>
155 154
156 <para>Depending on the number of processors and cores, the amount or 155 <para>Depending on the number of processors and cores, the amount of
157 RAM, the speed of your Internet connection and other factors, the 156 RAM, the speed of your internet connection and other factors, the
158 build process can take several hours the first time you run it. 157 build process can take several hours the first time you run it.
159 Subsequent builds run much faster since parts of the build are 158 Subsequent builds run much faster since parts of the build are
160 cached.</para> 159 cached.</para>
@@ -174,13 +173,13 @@ $ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</prog
174 the artifacts availalbe, you may proceed to booting Enea Linux on 173 the artifacts availalbe, you may proceed to booting Enea Linux on
175 target.</para> 174 target.</para>
176 175
177 <para>Enea Linux supports multiple booting methods so those will be 176 <para>Enea Linux supports multiple booting methods which will be
178 described in the following sections.</para> 177 described in the following sections.</para>
179 178
180 <section id="enea-linux-x86-pxe"> 179 <section id="enea-linux-x86-pxe">
181 <title>Booting via PXE</title> 180 <title>Booting via PXE</title>
182 181
183 <para>Below you find an example of how to boot Enea Linux in a target 182 <para>Below is an example of how to boot Enea Linux on a target
184 supporting PXE. The PXE boot is handled by the target BIOS.</para> 183 supporting PXE. The PXE boot is handled by the target BIOS.</para>
185 184
186 <para>This requires the setup of DHCP, TFTP and NFS servers on the host. 185 <para>This requires the setup of DHCP, TFTP and NFS servers on the host.
@@ -194,31 +193,31 @@ $ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</prog
194 193
195 <itemizedlist spacing="compact"> 194 <itemizedlist spacing="compact">
196 <listitem> 195 <listitem>
197 <para>Host name</para> 196 <para>Host name.</para>
198 </listitem> 197 </listitem>
199 198
200 <listitem> 199 <listitem>
201 <para>MAC hardware ethernet address (also available in the TFTP 200 <para>MAC hardware ethernet address (also available in the TFTP
202 configuration)</para> 201 configuration).</para>
203 </listitem> 202 </listitem>
204 203
205 <listitem> 204 <listitem>
206 <para>IP address, (assuming a fixed IP address is used)</para> 205 <para>IP address (assuming a fixed IP address is used).</para>
207 </listitem> 206 </listitem>
208 207
209 <listitem> 208 <listitem>
210 <para>The TFTP server shall be defined as 209 <para>The TFTP server shall be defined as
211 <literal>next-server</literal></para> 210 <literal>next-server</literal>.</para>
212 </listitem> 211 </listitem>
213 212
214 <listitem> 213 <listitem>
215 <para>The relative path in the TFTP server to the PXE file 214 <para>The relative path in the TFTP server to the PXE file
216 <filename><literal>pxelinux.0</literal></filename></para> 215 <filename>pxelinux.0</filename>.</para>
217 </listitem> 216 </listitem>
218 217
219 <listitem> 218 <listitem>
220 <para>The NFS server IP address and the path to the rootfs on the 219 <para>The NFS server IP address and the path to the rootfs on the
221 NFS server, defined as <literal>option root-path</literal></para> 220 NFS server, defined as <literal>option root-path</literal>.</para>
222 </listitem> 221 </listitem>
223 </itemizedlist> 222 </itemizedlist>
224 223
@@ -232,8 +231,8 @@ $ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</prog
232 option root-path "192.168.2.20:/export/intel-corei7-64_rootfs"; 231 option root-path "192.168.2.20:/export/intel-corei7-64_rootfs";
233}</programlisting> 232}</programlisting>
234 233
235 <para>For the TFTP server, the TFTP path to the target's pxelinux.0 file 234 <para>For the TFTP server, the TFTP path to the target's <filename>pxelinux.0</filename>
236 is given in the DHCP Configuration. Examples of files included in the 235 file is given in the DHCP Configuration. Examples of files included in the
237 TFTP subdirectory indicated by the DHCP configuration are:</para> 236 TFTP subdirectory indicated by the DHCP configuration are:</para>
238 237
239 <programlisting>pxelinux.0 238 <programlisting>pxelinux.0
@@ -311,6 +310,111 @@ label device01
311 during BIOS power up tests. Look up the manufacturer's documentation for 310 during BIOS power up tests. Look up the manufacturer's documentation for
312 your board model to find the appropriate key.</para> 311 your board model to find the appropriate key.</para>
313 </section> 312 </section>
313
314 <section id="boot_from_ram">
315 <title>Boot from RAM</title>
316
317 <para>This example requires that a TFTP server is set up at IP address
318 <literal>&lt;tftp_server_ip&gt;</literal>, and that the server stores
319 the Enea Linux image files, kernel image, device tree blob and root
320 filesystem, in <literal>/tftpboot/&lt;download_directory&gt;.</literal>
321 Please refer to <xref linkend="prebuiltprereq" /> for more details on
322 how to install and configure the TFTP server.</para>
323
324 <para>Once you have that in place, run the following commands on the
325 target:</para>
326
327 <programlisting>## set tftp server IP
328U-Boot&gt; setenv serverip &lt;tftp_server_ip&gt;
329
330## tftp the image files on the target machine
331U-Boot&gt; tftpboot 0x01000000 Image
332U-Boot&gt; tftpboot 0x02000000 Image-bcm2837-rpi-3-b.dtb
333U-Boot&gt; tftpboot 0x03000000 enea-image-standard-raspberrypi3-64.ext2.gz.u-boot
334
335## add any other bootargs values if necessary
336U-Boot&gt; setenv bootargs "8250.nr_uarts=1 root=/dev/ram rw ramdisk_size=500000 ip=dhcp \
337console=ttyS0,115200"
338
339## Start boot sequence
340U-Boot&gt; booti 0x01000000 0x03000000 0x02000000</programlisting>
341 </section>
342
343 <section id="boot_from_sd">
344 <title>Boot from SD card</title>
345
346 <para>Copy the
347 <filename>enea-image-standard-raspberrypi3-64.rpi-sdimg</filename> image
348 to the SD card using the Linux dd tool or Win32DiskImager in Windows,
349 and insert it into the RPi. The Raspberry Pi will not start without a
350 properly formatted SD Card, containing the bootloader, kernel image and
351 rootfs.</para>
352
353 <para>Below you can find two methods of how to format an SD Card:</para>
354
355 <itemizedlist>
356 <listitem>
357 <para><emphasis role="bold">Format and copy images to the SD card
358 using the Linux dd command line</emphasis></para>
359
360 <para>The <command>dd</command> command copies a file, converting
361 the format of the data in the process, according to the operands
362 specified:</para>
363
364 <programlisting>sudo dd bs=4M if=enea-image-standard-sdk-raspberrypi3-64.rpi-sdimg of=/dev/sdg</programlisting>
365
366 <note>
367 <para>Use <command>dd</command> cautiously - improper usage or
368 entering the wrong values could inadvertently wipe, destroy, or
369 overwrite the data on your hard drive.</para>
370 </note>
371 </listitem>
372
373 <listitem>
374 <para><emphasis role="bold">Format the SD card using the
375 Win32DiskImager program</emphasis></para>
376
377 <orderedlist>
378 <listitem>
379 <para>Download and unzip <ulink
380 url="https://sourceforge.net/projects/win32diskimager/">Win32DiskImager</ulink>.</para>
381 </listitem>
382
383 <listitem>
384 <para>Run <filename>Win32DiskImager.exe</filename>.</para>
385 </listitem>
386
387 <listitem>
388 <para>Select the drive of your SD card.</para>
389 </listitem>
390
391 <listitem>
392 <para>Select the image
393 <filename>enea-image-standard-raspberrypi3-64.rpi-sdimg</filename>.</para>
394 </listitem>
395
396 <listitem>
397 <para>Click "Write" and wait for the write to complete.</para>
398 </listitem>
399
400 <listitem>
401 <para>Exit the imager and eject the SD Card.</para>
402 </listitem>
403
404 <listitem>
405 <para>Plug the card into your Raspberry Pi.</para>
406 </listitem>
407 </orderedlist>
408
409 <note>
410 <para>Be careful to select the correct drive. If you choose the
411 wrong one you may destroy your HDD data. If you are using an SD
412 Card slot and can't see the drive in the Win32DiskImager window,
413 try using an affordable external adapter in a USB slot.</para>
414 </note>
415 </listitem>
416 </itemizedlist>
417 </section>
314 </section> 418 </section>
315 419
316 <section id="custom_enealinux"> 420 <section id="custom_enealinux">
@@ -700,26 +804,26 @@ $ ./enea-*-toolchain-&lt;version&gt;.sh</programlisting>
700 Project Mega Manual</ulink>. If needed replace the Yocto version in the 804 Project Mega Manual</ulink>. If needed replace the Yocto version in the
701 link.</para> 805 link.</para>
702 806
703 <section id="apt_pktmgmt"> 807 <section id="rpm_pktmgmt">
704 <title>APT Package Management (DEB Packages)</title> 808 <title>RPM Package Management (RPM Packages)</title>
705 809
706 <para>Enea Linux provides DEB packages on <ulink 810<!-- <para>Enea Linux provides RPM packages on <ulink
707 url="http://linux.enea.com/EneaLinux8.0/">linux.enea.com</ulink> site, 811 url="http://linux.enea.com/EneaLinux8.0/">linux.enea.com</ulink> site,
708 in directory 812 in directory
709 <literal><literal>&lt;release&gt;/&lt;target&gt;/deb</literal>/</literal>.</para> 813 <literal><literal>&lt;release&gt;/&lt;target&gt;/rpm</literal>/</literal>.</para>
814-->
815 <para>The application for performing runtime package management of RPM
816 packages on the target is called <filename>rpm</filename>.</para>
710 817
711 <para>The application for performing runtime package management of DEB 818 <para>Use the <literal>rpm</literal> command to install, upgrade, or
712 packages on the target is called <filename>apt-get</filename>.</para> 819 remove packages. Before using any rpm options that require network
713
714 <para>Use the <literal>apt-get</literal> command to install, upgrade, or
715 remove packages. Before using any apt-get options that require network
716 access, please check that the network is configured and working 820 access, please check that the network is configured and working
717 properly.</para> 821 properly.</para>
718 822
719 <para>The <literal>apt-get</literal> command is by default included in 823 <para>The <literal>rpm</literal> command is by default included in
720 Enea Linux images.</para> 824 Enea Linux images.</para>
721 825
722 <section id="apt_config"> 826 <!--<section id="apt_config">
723 <title>Configuring</title> 827 <title>Configuring</title>
724 828
725 <para>APT relies on the concept of repositories in order to find 829 <para>APT relies on the concept of repositories in order to find
@@ -735,73 +839,85 @@ $ ./enea-*-toolchain-&lt;version&gt;.sh</programlisting>
735# echo "deb [trusted=yes] http://server-address/path/to/the/package/directory ./" | \ 839# echo "deb [trusted=yes] http://server-address/path/to/the/package/directory ./" | \
736tee -a /etc/apt/sources.list.d/repos.list</programlisting> 840tee -a /etc/apt/sources.list.d/repos.list</programlisting>
737 841
738 <para>Run <literal>apt-get update</literal> to fetch information from 842 <para>Run <literal>createrepo --><!--update path_to_repo</literal> to fetch information from
739 the new repository:</para> 843 the new repository:</para>
740 844
741 <programlisting># apt-get update</programlisting> 845 <programlisting># createrepo --><!--update repo</programlisting>
846 </section>-->
847
848 <section id="rpm_preparation">
849 <title>Preparation</title>
850
851 <para>RPM packages need to first be downloaded on target.
852 <programlisting># wget https://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/
853aarch64/os/Packages/v/vim-common-8.1.2120-1.fc32.aarch64.rpm</programlisting>
854 They can be copied either from public maintained repositories or from locally maintained collections of useful RPMs.
855 <programlisting># wget http://linux.enea.com/RPM/aarch64/vim-common-7.4.481-r0.0.aarch64.rpm</programlisting>
856 </para>
857
858 <para>
859 RPM is also identifying and checking for package dependencies. It warns if the package can not be installed correctly and lists what needs to be done.
860 </para>
861
742 </section> 862 </section>
743 863
744 <section id="apt_install"> 864 <section id="rpm_install">
745 <title>Installing</title> 865 <title>Installing</title>
746 866
747 <para>DEB packages typically have file names like 867 <para>RPM packages typically have file names like
748 foo-1.0.1-r0.0_arm64.deb The file name includes the package name 868 foo-1.0.1-r0.0_arm64.rpm The file name includes the package name
749 (foo), version (1.0.1), revison (r0.0), and architecture (arm64). To 869 (foo), version (1.0.1), revison (r0.0), and architecture (arm64). To
750 install a package, log in as root and type the following command at a 870 install a package, log in as root and type the following command at a
751 shell prompt:</para> 871 shell prompt:</para>
752 872
753 <programlisting># apt-get install foo</programlisting> 873 <programlisting># rpm -i vim-common-8.1.1017-r0.0.aarch64.rpm
874user.notice [RPM][351]: Transaction ID 5d836e00 started
875user.notice [RPM][351]: install vim-common-8.1.1017-r0.0.aarch64: success
876user.notice [RPM][351]: install vim-common-8.1.1017-r0.0.aarch64: success
877user.notice [RPM][351]: Transaction ID 5d836e00 finished: 0</programlisting>
754 878
755 <para>The <literal>apt-get install</literal> command will install one
756 or more packages in the system.</para>
757 </section> 879 </section>
758 880
759 <section id="apt_upgrade"> 881 <section id="rpm_upgrade">
760 <title>Upgrading</title> 882 <title>Upgrading</title>
761 883
762 <para>The <literal>apt-get upgrade</literal> command will upgrade one 884 <para>The <literal>rpm -U</literal> command will upgrade one
763 or more packages which are currently installed in the system. If no 885 or more packages which are currently installed in the system.
764 packages are given, all installed packages will be checked.</para> 886 </para>
765 887
766 <programlisting># apt-get upgrade foo</programlisting> 888 <programlisting># rpm -U vim-common-8.1.1518-r0.0.aarch64.rpm
889user.notice [RPM][346]: Transaction ID 5d836d54 started
890user.notice [RPM][346]: erase vim-common-8.1.1017-r0.0.aarch64: success
891user.notice [RPM][346]: install vim-common-8.1.1518-r0.0.aarch64: success
892user.notice [RPM][346]: erase vim-common-8.1.1017-r0.0.aarch64: success
893user.notice [RPM][346]: install vim-common-8.1.1518-r0.0.aarch64: success
894user.notice [RPM][346]: Transaction ID 5d836d54 finished: 0</programlisting>
767 </section> 895 </section>
768 896
769 <section id="apt_rm"> 897 <section id="rpm_rm">
770 <title>Removing</title> 898 <title>Removing</title>
771 899
772 <para>The <literal>apt-get remove</literal> command will remove one or 900 <para>The <literal>rpm -e</literal> command will remove the
773 more packages which are currently installed in the system. 901 package which is currently installed in the system.
774 Example:</para> 902 Example:</para>
775 903
776 <programlisting># apt-get remove ptest-runner 904 <programlisting># rpm -e vim-common
777Reading package lists... Done 905user.notice [RPM][350]: Transaction ID 5d836dc9 started
778Building dependency tree 906user.notice [RPM][350]: erase vim-common-8.1.1518-r0.0.aarch64: success
779Reading state information... Done 907user.notice [RPM][350]: erase vim-common-8.1.1518-r0.0.aarch64: success
780The following packages were automatically installed and are no longer required: 908user.notice [RPM][350]: Transaction ID 5d836dc9 finished: 0
781 libc6-dbg libc6-dev libc6-extra-nss libc6-thread-db libcidn1
782 linux-libc-headers-dev
783Use 'apt autoremove' to remove them.
784The following packages will be REMOVED:
785 ptest-runner
7860 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
787After this operation, 0 B of additional disk space will be used.
788Do you want to continue? [Y/n] y
789(Reading database ... 5766 files and directories currently installed.)
790Removing ptest-runner (2.0.2+git0+6d2872116c-r0.0) ...
791</programlisting> 909</programlisting>
792 </section> 910 </section>
793 911
794 <section id="pm_searching"> 912 <section id="rpm_searching">
795 <title>Searching</title> 913 <title>Searching</title>
796 914
797 <para>The <literal>apt-cache search</literal> allows searching for the 915 <para>The <literal>rpm -q</literal> allows searching for the
798 given expressions in the name, summary and description of known 916 given expressions in the name, summary and description of known
799 packages. Example:</para> 917 packages. Example:</para>
800 918
801 <programlisting># apt-cache search ptest-runner 919 <programlisting># rpm -q vim-common
802ptest-runner - A C program to run all installed ptests 920vim-common-8.1.1017-r0.0.aarch64</programlisting>
803ptest-runner-dbg - A C program to run all installed ptests - Debugging files
804ptest-runner-dev - A C program to run all installed ptests - Development files</programlisting>
805 </section> 921 </section>
806 </section> 922 </section>
807 </section> 923 </section>