Difference between revisions of "LinuxInstall"

From ArmadeusWiki
Jump to: navigation, search
(Get Armadeus software)
 
(71 intermediate revisions by 10 users not shown)
Line 4: Line 4:
  
 
The installation was successfully tested on the following distributions:
 
The installation was successfully tested on the following distributions:
* Debian Sarge (3.1), Etch (4.0) & Lenny (5.0)
+
* Debian Lenny (5.0), Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)
* Fedora Core 3 & 4
+
* X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) & Jaunty Jackalope (9.04)
* Fedora 10, Laughlin (14)
+
* Ubuntu  Lucid Lynx (10.04) (32 & 64bits), 12.04 LTS (32 & 64bits), 13.10 (32 & 64bits), 14.04, 15.04 & 16.04
* KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) & Jaunty Jackalope (9.04)
+
* LUbuntu 17.10
 
* Mandriva 2006
 
* Mandriva 2006
* SuSE 10.1
+
* Fedora Core 3 & 4, Fedora 10, Laughlin (14)
* Ubuntu Dapper Drake (6.04), Hardy Heron (8.04),  Intrepid Ibex (8.10) & Lucid Lynx (10.04) (64bits)
+
* Xubuntu Edgy Eft (6.10)
+
 
* Red Hat Enterprise 5.2
 
* Red Hat Enterprise 5.2
 
* Gentoo 10.0 (32 & 64 bits)
 
* Gentoo 10.0 (32 & 64 bits)
* OpenSUSE 11.3
+
* SuSE 10.1, OpenSUSE 11.3 - 12.3
  
 
'''The installation may fail on:'''
 
'''The installation may fail on:'''
 
* Ubuntu Karmic Koala (9.10): tslib fails to build
 
* Ubuntu Karmic Koala (9.10): tslib fails to build
  
 +
'''APF28 requirements:'''
 +
* APF28 board requires a Linux distribution with (GNU) tar version 1.20 or later to compile the Linux Kernel - Please update or upgrade your Linux distribution.
  
 
==Prerequisites for Linux installation==
 
==Prerequisites for Linux installation==
Line 28: Line 28:
 
</pre>
 
</pre>
 
}}
 
}}
 
+
For armadeus up to 3.4, make should be '''strictly''' make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&& make&& sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one's PATH, make 3-81 can be invoked directly or as /usr/local/bin/make).
Depending on your distribution, some additional packages are required.
+
 +
Depending on your distribution, some additional packages are required:
  
 
===Debian/Ubuntu based systems===
 
===Debian/Ubuntu based systems===
* you can use the following command to get them (assuming your userid is allowed to use sudo (execution of commands as root)):
+
[[Ubuntu/Debian installation prerequisites]]
<pre class="host">
+
sudo apt-get install build-essential gcc  g++ autoconf  automake libtool bison flex gettext
+
sudo apt-get install patch subversion texinfo wget git-core
+
sudo apt-get install libncurses5 libncurses5-dev
+
sudo apt-get install zlib1g-dev liblzo2-2 liblzo2-dev
+
sudo apt-get install libacl1 libacl1-dev gawk cvs curl lzma
+
sudo apt-get install uuid-dev
+
</pre>
+
 
+
Not mandatory but useful to add for compiling some Buildroot packages:
+
<pre class="host">
+
sudo apt-get install libglib2.0-dev
+
sudo apt-get install libnetpbm10-dev  (for fbtest)
+
sudo apt-get install python-xcbgen (for Matchbox)
+
</pre>
+
 
+
{{Warning|For recent Ubuntu and Debian based systems, the following is now required if your ''/bin/sh'' is '''not''' pointing to ''/bin/bash'':
+
<pre class="host">
+
$ ls -al /bin/sh
+
lrwxrwxrwx 1 root root 4 2007-12-08 18:33 /bin/sh -> dash
+
$ sudo dpkg-reconfigure dash
+
    and select no
+
</pre>
+
Indeed dash do not support all the capabilities needed by Buildroot (our build system).
+
}}
+
 
+
 
+
====Ubuntu====
+
 
+
* To compile java jamvm and gnu-classpath:
+
<pre class="host">
+
sudo apt-get install gcj-jdk
+
</pre>
+
 
+
====Debian====
+
To compile java jamvm and gnu-classpath:
+
<pre class="host">
+
sudo apt-get install java-gcj-compat-dev default-jdk
+
</pre>
+
  
 
===Mandriva based systems===  
 
===Mandriva based systems===  
* name of packages are different therefore use the lines hereafter instead (assuming sudo is configured to support root commands):
+
[[Mandriva installation prerequisites]]
<pre class="host">
+
sudo urpmi gcc  gcc-c++ make autoconf  automake libtool bison flex gettext
+
sudo urpmi patch subversion texinfo wget git
+
sudo urpmi libncurses5 libncurses-devel
+
sudo urpmi zlib1-devel liblzo2_2 liblzo-devel
+
sudo urpmi libacl1 libacl-devel
+
sudo urpmi uuid-dev
+
</pre>
+
  
Not mandatory but useful to add some Buildroot packages:
+
===RPM-based systems (RedHat, Fedora, CentOS)===
<pre class="host">
+
[[RedHat/Fedora installation prerequisites]]
sudo urpmi libglib2.0-devel
+
</pre>
+
  
To compile java jamvm and gnu-classpath:
+
===OpenSuse based systems===
<pre class="host">
+
[[OpenSuse installation prerequisites]]
sudo urpmi java-gcj-compat-dev
+
</pre>
+
  
===RPM-based systems===
+
===Gentoo based systems===
*like RedHat, Fedora, CentOS, the following commands should install all the needed prerequisites (assuming root shell):
+
[[Gentoo installation prerequisites]]
<pre class="host">
+
yum install gcc gcc-c++ make autoconf automake libtool bison flex gettext
+
yum install patch subversion texinfo git wget
+
yum install zlib-devel gettext-devel ncurses-devel lzo-devel libacl-devel
+
yum install uuid-devel
+
</pre>
+
* '''On Fedora 13 & 14''', as ''uuid-devel'' seems not installed at the right place, you may also need to do the following:
+
<pre class="host">
+
cd /usr/include
+
mkdir uuid
+
cp uuid.h uuid
+
cd /usr/lib
+
ln -s ../../lib64/libuuid.so.1 libuuid.so
+
</pre>
+
  
* '''On Fedora 14''', following operations are needed:
+
==Get Armadeus software==
** downgrade make-3.82 to make-3.81 (Fedora 14 uses make-3.82 which is too restrictive) :
+
* '''If you are a "careful" user''', then download [https://gitlab.com/armadeus/armadeus-bsp/-/tags the latest stable installation tarball from gitlab] and detar it wherever you want:
*** First you need to download the correct key (https://fedoraproject.org/static/E8E40FDE.txt) and import this by :
+
 
<pre class="host">
 
<pre class="host">
rpm --import E8E40FDE.txt
+
$ tar xjvf armadeus-7.0.tar.bz2
 
</pre>
 
</pre>
*** Now you can downgrade make
+
* '''If you want the latest snapshot or if you have a recent SOM ([[OPOS6UL]]/[[OPOS8MM]])''', the whole development tree can be checked out from our [[GIT]] repository.
 
<pre class="host">
 
<pre class="host">
yum downgrade make --releasever=13
+
$ git clone git@gitlab.com:armadeus/armadeus-bsp.git armadeus
 
</pre>
 
</pre>
*** And to avoid futur upgrade, you need to add
 
<pre class="host">
 
exclude=make*
 
</pre>
 
in /etc/yum.conf
 
** install glibc-static to allow insmod.static compilation:
 
<pre class="host">
 
rpm -ivh glibc-static-2.12.90-15.i686.rpm
 
</pre>
 
 
* Not mandatory but useful to add some extra packages:
 
<pre class="host">
 
yum install glib2-devel lzo2-devel
 
</pre>
 
 
To compile java jamvm and gnu-classpath:
 
<pre class="host">
 
yum install java-*-openjdk
 
</pre>
 
 
* '''On RedHat Enterprise 5.2''' not all packages are available by default. You can get extra packages here: http://download.fedora.redhat.com/pub/epel/5/i386/ (for example missing ''lzo'' and ''lzo-devel'' can be found here).
 
* '''On OpenSUSE 11.3''', following operations might be needed:
 
<pre class="host">
 
sudo zypper install  gcc  gcc-c++ autoconf  automake libtool bison flex make
 
sudo zypper install subversion texinfo git-core ncurses-devel
 
sudo zypper install libacl-devel
 
sudo zypper install libuuid-devel
 
sudo zypper install libnetpbm-devel
 
sudo zypper install tcpd
 
sudo zypper install tcpd-devel
 
sudo zypper install java-1_5_0-gcj-compat libgcj-devel
 
sudo zypper install lzo-devel
 
</pre>
 
 
==Get Armadeus software==
 
* '''If you are a "careful" user''', then download [https://sourceforge.net/projects/armadeus/files/ the latest stable installation tarball from SourceForge] and detar it wherever you want:
 
<pre class="host">
 
$ tar xjvf armadeus-3.4.tar.bz2
 
</pre>
 
* '''If you want the latest snapshot''', the whole development tree can checked out from the [[GIT]] repository. (SVN repository is no more maintained !!!)
 
<pre class="host">
 
$ git clone git://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus armadeus
 
</pre>
 
  
* depending on your previous choice, a directory named ''armadeus/'' or ''armadeus-3.4/'' will be created on your hard-disk and will contain all the files you need.
+
* depending on your previous choice, a directory named ''armadeus/'' or ''armadeus-7.0/'' will be created on your hard-disk and will contain all the files you need.
  
 
'''Remarks''':
 
'''Remarks''':
 
* '''Do not use spaces''' in the directory name !
 
* '''Do not use spaces''' in the directory name !
* GIT write/push accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:Salocin68|Salocin68]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]])
+
* '''Do not use a directory path beginning with /usr.''' It is a known bug of Buildroot (until BR2012.11, at 2012-12).
 +
* GIT write/push accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:SebastienSz|SebastienSz]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]], [[User:SebastienR|SebastienR]])
  
==Configure SDK options==
+
==Configure SDK/BSP options==
{{Note|If you are new to Armadeus and have troubles compiling armadeus-3.3 using the following instructions, you may find some hints here: [[Armadeus 3.3 Troubleshots]]}}
+
{{Note|If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: [[Releases]]}}
 
*Go to the directory where you put the Armadeus sources:
 
*Go to the directory where you put the Armadeus sources:
 
<pre class="host">
 
<pre class="host">
  $ cd armadeus/  (or armadeus-3.4/)
+
  $ cd armadeus/  (or armadeus-7.0/)
 
</pre>
 
</pre>
*The first time you compile an Armadeus distribution you have to specify the target (here the apf9328) to work with.  
+
*The first time you compile an Armadeus distribution you have to specify the target (here the [[APF9328]]) to work with.  
 
<pre class="host">
 
<pre class="host">
 
  $ make apf9328_defconfig
 
  $ make apf9328_defconfig
Line 185: Line 78:
 
* Current valid default configurations are:
 
* Current valid default configurations are:
 
<pre class="host">
 
<pre class="host">
apf9328_defconfig  apf27_defconfig  pps_defconfig
+
apf9328_defconfig  apf27_defconfig  pps_defconfig apf28_defconfig  apf51_defconfig  pps51_defconfig apf6_defconfig apf6legacy_defconfig opos6ul_defconfig opos6ulnano_defconfig
 
</pre>
 
</pre>
 +
{{Note| To get the full list of available config just type make, it will download buildroot and print following message :
 +
<pre class="host">
 +
$ make
 +
[...]
 +
System not configured. Use make <board>_defconfig
 +
armadeus valid configurations are:               
 +
    opos6ul_legacy_defconfig opos6ulnano-preempt-rt_defconfig apf6_defconfig pps_defconfig opos6ultest_defconfig apf51_defconfig opos6ulsp_defconfig apf6dawnsmalllinux_defconfig apf27preempt-rt_defconfig apf27test_defconfig apf27_defconfig apf28legacytest_defconfig opos6ullegacy-4.14_defconfig opos6ulnano_defconfig apf28legacy_defconfig apf6mainline-4.19_defconfig opos6ul_defconfig apf6legacy_defconfig apf6xenomai_defconfig apf51test_defconfig opos6ul-preempt-rt_defconfig apf6legacy-preempt-rt_defconfig apf6legacy-4.1_defconfig pps51_defconfig apf6mainline-4.9_defconfig apf28test_defconfig apf28_defconfig apf6mediacenter_defconfig opos6ullegacy-4.9_defconfig opos6ul_recovery_defconfig apf6failsafe_defconfig apf6test_defconfig opos6ullegacy-4.1_defconfig apf27xenomai_defconfig
 +
                                                 
 +
Makefile:129: recipe for target '/usr/local/projects/apf6_sp_419/buildroot/.configured' failed
 +
make: *** [/usr/local/projects/apf6_sp_419/buildroot/.configured] Error 1
 +
</pre>
 +
}}
  
For PPS, please see [[APF27_PPS]] for details on specific build
+
For PPS boards, please see [[APF27_PPS]] or [[PPS51]] Wiki pages, as these boards have specific build.
  
*After some downloads, you will get the Buildroot configuration interface:
+
* After some downloads, you will get the Buildroot configuration interface:
  
{{Note|If you ever made changes in the following steps, at any time you can reload the default configuration with the same command}}
+
{{Note|If you ever made changes during the following steps, at any time, you can reload the default configuration with:
 +
$ make xxx_defconfig      (xxx depending on your module name)}}
  
 
[[Image:Menuconfig3.png]]<br>
 
[[Image:Menuconfig3.png]]<br>
Line 204: Line 110:
 
*# for more Help about Buildroot commands, select "Help" in the main configuration screen
 
*# for more Help about Buildroot commands, select "Help" in the main configuration screen
  
*In menu:
+
* Update the memory configuration of your board ('''if needed'''; by default BSP is configured for the minimal memory configuration available on the corresponding board):
:<pre class="config">Target options  --->
+
:[*] Armadeus Device Support  ---></pre>
+
:you can check and change the quantity of RAM available on your Armadeus board. For [[APF27]] it could be either 64MB or 128MB (2 x 64MB) (in that case be sure to select 2 chips of 64MB instead of 1 chip of 128MB).
+
  
*In menu:
+
:In menu:
:<pre class="config">Target filesystem options --> </pre>
+
:<pre class="config">System configuration  --->    [*] Armadeus Device Support  ---></pre>
:for each type of filesystems to build, you have the option (''also copy the image to...'') to copy the binary file to secondary location like your tftp server folder (for example ''/tftpboot'').<br>
+
:Even U-Boot can be copied to a second location (like ''/tftpboot''). You will find the U-Boot options at the end of the list.
+
  
*In menu:
+
:you can check and change the quantity of RAM available on your Armadeus board:
:<pre class="config">Kernel -->
+
:[[Image:Build_config_memory.png]]
:Destination for linux kernel binaries --> </pre>
+
:For [[APF9328]] the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)
:you will find options to copy Linux to a secondary location (like ''/tftpboot'')
+
:For [[APF27]] it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).
 +
:For [[APF51]] it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).
 +
:For [[APF28]] The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip).
 +
:For [[APF6]]/[[APF6SP]] The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.
 +
:For [[OPOS6UL]]/[[OPOS6UL_NANO]] The memory size is automatically detected so you don't care ;-)
  
* You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in
+
* You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in:
:<pre class="config">Build Options --->
+
:<pre class="config">Build Options --->   (0) Number of jobs to run simultaneously</pre>
:(1) Number of jobs to run simultaneously</pre>
+
0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.
  
* During the toolchain/distribution automatic build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the ''armadeus/downloads/'' directory. '''If you have several views or plan to build the toolchain several times''', we advise you to put all the downloaded files in ''/local/downloads'' (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, buildroot will be downloaded separately for each build environment you set up.
+
* During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the ''armadeus/downloads/'' directory. '''If you have several views or plan to build the toolchain several times''', we advise you to put all the downloaded files in ''/local/downloads'' (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, Buildroot will be downloaded separately for each build environment you set up.
:<pre class="config">Build options  --->  
+
:<pre class="config">Build options  --->   (...) Download dir</pre>
:(...) Download dir</pre>
+
:[[Image:Build_config_menu_download.png]]<br> <br>
+
 
:[[Image:Build_config_download.png]]
 
:[[Image:Build_config_download.png]]
'''Of course, ''/local/downloads'' should exists on your system and you should have writing rights on it !'''
+
{{Note|Of course, ''/local/downloads'' should exists on your system and you should have writing rights on it !}}
 +
* In recent Buildroot you can also use the following method:
 +
export BR2_DL_DIR=/local/downloads
  
* After the build, we advise you too to copy all the files in ''downloads/'' on a removable medium, in case you want to install the development tools on several systems.
+
* After the build, we advise you to copy all the files in ''downloads/'' / ''/local/downloads'' on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.
  
 
* Now, Exit the configuration tool and save your configuration
 
* Now, Exit the configuration tool and save your configuration
 +
 +
* You can come back to this configuration menu, by typing (your changes will be kept):
 +
<pre class="host">
 +
make menuconfig
 +
</pre>
  
 
==Launch build==
 
==Launch build==
Line 238: Line 148:
 
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. <br>
 
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. <br>
 
'''Please wait for a while.... it takes at least one hour for the first run!'''<br>
 
'''Please wait for a while.... it takes at least one hour for the first run!'''<br>
By default, the downloaded files/tarball are put in the ''armadeus/downloads/'' directory. Please see the previous chapter to know how to optimize that if you plan to build several views.
+
By default, the downloaded files/tarball are put in the ''armadeus/downloads/'' directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.
  
 
==Enjoy the result==
 
==Enjoy the result==
The generated binary files can be found in the subdirectory ''buildroot/binaries/XX/'' (where XX is the name of your board):
+
The generated binary files can be found in the subdirectory ''buildroot/output/images'':
 
+
 
*''apf9328-u-boot.brec'' (only on [[APF9328]]): BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)
 
*''apf9328-u-boot.brec'' (only on [[APF9328]]): BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)
*''XX-u-boot.bin'': U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])
+
*''xxx-u-boot.bin'': U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])
*''XX-linux.bin'': Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])
+
*''xxx-linux.bin'': Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])
*''XX-rootfs.arm.jffs2'': JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])
+
*''xxx-rootfs.jffs2'': JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])
*''XX-rootfs.arm.ubi'' (not supported on [[APF9328]]): [[UBIFS|UBI]] filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])
+
*''xxx-rootfs.ubi'' (not supported on [[APF9328]]): [[UBIFS|UBI]] filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])
*''apfXX-rootfs.arm.tar'': for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] & [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])
+
*''xxx-rootfs.ext4'': EXT4 filesystem/rootfs image to use with U-Boot, (on [[APF6]] and [[OPOS6UL]])
 +
*''xxx-rootfs.tar'': for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] & [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])
  
'''Please note the new naming convention of binary files and directories (since Armadeus 3.0)'''
+
'''Please note the new naming convention of binary files and directories (since Armadeus 4.0)'''
  
The toolchain and project files share a new naming convention too (YY is ''4t'' for APF9328 and ''5te'' for APF27):
+
*''buildroot/output/build'': contains all the build results for target root filesystem, Linux, Busybox and U-Boot...
*''buildroot/build_armvYY'': contains all non configurable user-space tools and staging dir.
+
*''buildroot/output/toolchain/'': cross compilation toolchain's build dir. Binaries usable for cross-compilation are in ''buildroot/output/host/usr/bin''.
*''buildroot/project_build_armvYY/apfXX'': contains all configurable user-space tools: target filesystem, <b>linux</b>, busybox and <b>u-boot</b>...
+
*''buildroot/output/target/'': target filessytem before generating rootfs images
*''buildroot/toolchain_build_armvYY'': cross compilation toolchain's build dir. Binaries are in ''buildroot/build_armvYY/staging_dir/usr/bin''.
+
  
More information is available in the  [http://buildroot.uclibc.org/buildroot.html buildroot documentation]
+
More information is available in the  [http://buildroot.uclibc.org/buildroot.html Buildroot's documentation]
  
* Note: Previous versions of Armadeus SDK stored the generated binary files at different place ''buildroot/binaries/armadeus/'' and file names did not contained any prefix of board name:
+
* Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: '' ''buildroot/binaries/XX/'' (where XX was the name of your board).
** ''u-boot.brec'' (BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working)
+
** ''u-boot.bin'' (U-Boot image file for use with U-Boot itself)
+
** ''linux-kernel-2.6.xx-arm.bin'' (Linux image to use with U-Boot)
+
** ''rootfs.arm.jffs2'' (FileSystem/RootFS image to use with U-Boot)
+
** ''rootfs.arm.tar'' (for an NFS/MMC RootFS)
+
  
 
<noinclude>
 
<noinclude>
 +
 +
You then copy the binary image to your server directory:
 +
<pre class="host">
 +
$ cp buildroot/output/images/* /tftpboot
 +
</pre>
  
 
==To keep your local copy/repository up-to-date with the armadeus GIT repository==
 
==To keep your local copy/repository up-to-date with the armadeus GIT repository==
Line 291: Line 200:
 
  $ make apfXX_defconfig
 
  $ make apfXX_defconfig
 
  $ make
 
  $ make
 +
$ cp buildroot/output/images/* /tftpboot
  
 
Enjoy!
 
Enjoy!
 
</noinclude>
 
</noinclude>

Latest revision as of 15:12, 30 January 2024

How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) Buildroot.


The installation was successfully tested on the following distributions:

  • Debian Lenny (5.0), Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)
  • X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) & Jaunty Jackalope (9.04)
  • Ubuntu Lucid Lynx (10.04) (32 & 64bits), 12.04 LTS (32 & 64bits), 13.10 (32 & 64bits), 14.04, 15.04 & 16.04
  • LUbuntu 17.10
  • Mandriva 2006
  • Fedora Core 3 & 4, Fedora 10, Laughlin (14)
  • Red Hat Enterprise 5.2
  • Gentoo 10.0 (32 & 64 bits)
  • SuSE 10.1, OpenSUSE 11.3 - 12.3

The installation may fail on:

  • Ubuntu Karmic Koala (9.10): tslib fails to build

APF28 requirements:

  • APF28 board requires a Linux distribution with (GNU) tar version 1.20 or later to compile the Linux Kernel - Please update or upgrade your Linux distribution.

Prerequisites for Linux installation

Note Note: From here we assume that your Linux system has a make version greater or equal to 3.81. To check it:
$ make -v
GNU Make 3.81
...

For armadeus up to 3.4, make should be strictly make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&& make&& sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one's PATH, make 3-81 can be invoked directly or as /usr/local/bin/make).

Depending on your distribution, some additional packages are required:

Debian/Ubuntu based systems

Ubuntu/Debian installation prerequisites

Mandriva based systems

Mandriva installation prerequisites

RPM-based systems (RedHat, Fedora, CentOS)

RedHat/Fedora installation prerequisites

OpenSuse based systems

OpenSuse installation prerequisites

Gentoo based systems

Gentoo installation prerequisites

Get Armadeus software

 $ tar xjvf armadeus-7.0.tar.bz2
  • If you want the latest snapshot or if you have a recent SOM (OPOS6UL/OPOS8MM), the whole development tree can be checked out from our GIT repository.
 $ git clone git@gitlab.com:armadeus/armadeus-bsp.git armadeus
  • depending on your previous choice, a directory named armadeus/ or armadeus-7.0/ will be created on your hard-disk and will contain all the files you need.

Remarks:

  • Do not use spaces in the directory name !
  • Do not use a directory path beginning with /usr. It is a known bug of Buildroot (until BR2012.11, at 2012-12).
  • GIT write/push accesses are limited to the integrators (JulienB, SebastienSz, Jorasse, FabienM, SebastienR)

Configure SDK/BSP options

Note Note: If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: Releases
  • Go to the directory where you put the Armadeus sources:
 $ cd armadeus/  (or armadeus-7.0/)
  • The first time you compile an Armadeus distribution you have to specify the target (here the APF9328) to work with.
 $ make apf9328_defconfig

This command reloads the default configuration to support your target and automatically start a Buildroot's configuration menu.

  • Current valid default configurations are:
apf9328_defconfig  apf27_defconfig  pps_defconfig  apf28_defconfig  apf51_defconfig  pps51_defconfig apf6_defconfig apf6legacy_defconfig opos6ul_defconfig opos6ulnano_defconfig
Note Note: To get the full list of available config just type make, it will download buildroot and print following message :
$ make
[...]
 System not configured. Use make <board>_defconfig 
 armadeus valid configurations are:                
     opos6ul_legacy_defconfig opos6ulnano-preempt-rt_defconfig apf6_defconfig pps_defconfig opos6ultest_defconfig apf51_defconfig opos6ulsp_defconfig apf6dawnsmalllinux_defconfig apf27preempt-rt_defconfig apf27test_defconfig apf27_defconfig apf28legacytest_defconfig opos6ullegacy-4.14_defconfig opos6ulnano_defconfig apf28legacy_defconfig apf6mainline-4.19_defconfig opos6ul_defconfig apf6legacy_defconfig apf6xenomai_defconfig apf51test_defconfig opos6ul-preempt-rt_defconfig apf6legacy-preempt-rt_defconfig apf6legacy-4.1_defconfig pps51_defconfig apf6mainline-4.9_defconfig apf28test_defconfig apf28_defconfig apf6mediacenter_defconfig opos6ullegacy-4.9_defconfig opos6ul_recovery_defconfig apf6failsafe_defconfig apf6test_defconfig opos6ullegacy-4.1_defconfig apf27xenomai_defconfig
                                                   
Makefile:129: recipe for target '/usr/local/projects/apf6_sp_419/buildroot/.configured' failed
make: *** [/usr/local/projects/apf6_sp_419/buildroot/.configured] Error 1


For PPS boards, please see APF27_PPS or PPS51 Wiki pages, as these boards have specific build.

  • After some downloads, you will get the Buildroot configuration interface:
Note Note: If you ever made changes during the following steps, at any time, you can reload the default configuration with:
$ make xxx_defconfig       (xxx depending on your module name)


Menuconfig3.png

  • If you are not familiar with Buildroot here are some tips:
    1. you can move the highlighted item with the "up"/"down" arrow keys
    2. with the "left"/"right" arrow keys you can choose between "Select", "Exit" or "Help" buttons
    3. "space"/"enter":
      • selects the currently highlighted item if you are on the "Select" button
      • go back in previous menu if you are on "Exit" button
      • show you some Help for current item if you are on "Help" button
    4. for more Help about Buildroot commands, select "Help" in the main configuration screen
  • Update the memory configuration of your board (if needed; by default BSP is configured for the minimal memory configuration available on the corresponding board):
In menu:
System configuration  --->    [*] Armadeus Device Support  --->
you can check and change the quantity of RAM available on your Armadeus board:
Build config memory.png
For APF9328 the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)
For APF27 it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).
For APF51 it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).
For APF28 The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip).
For APF6/APF6SP The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.
For OPOS6UL/OPOS6UL_NANO The memory size is automatically detected so you don't care ;-)
  • You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in:
Build Options --->    (0) Number of jobs to run simultaneously

0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.

  • During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the armadeus/downloads/ directory. If you have several views or plan to build the toolchain several times, we advise you to put all the downloaded files in /local/downloads (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, Buildroot will be downloaded separately for each build environment you set up.
Build options  --->    (...) Download dir
Build config download.png
Note Note: Of course, /local/downloads should exists on your system and you should have writing rights on it !
  • In recent Buildroot you can also use the following method:
export BR2_DL_DIR=/local/downloads
  • After the build, we advise you to copy all the files in downloads/ / /local/downloads on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.
  • Now, Exit the configuration tool and save your configuration
  • You can come back to this configuration menu, by typing (your changes will be kept):
make menuconfig

Launch build

$ make

The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet.
Please wait for a while.... it takes at least one hour for the first run!
By default, the downloaded files/tarball are put in the armadeus/downloads/ directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.

Enjoy the result

The generated binary files can be found in the subdirectory buildroot/output/images:

Please note the new naming convention of binary files and directories (since Armadeus 4.0)

  • buildroot/output/build: contains all the build results for target root filesystem, Linux, Busybox and U-Boot...
  • buildroot/output/toolchain/: cross compilation toolchain's build dir. Binaries usable for cross-compilation are in buildroot/output/host/usr/bin.
  • buildroot/output/target/: target filessytem before generating rootfs images

More information is available in the Buildroot's documentation

  • Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: buildroot/binaries/XX/ (where XX was the name of your board).


You then copy the binary image to your server directory:

 $ cp buildroot/output/images/* /tftpboot

To keep your local copy/repository up-to-date with the armadeus GIT repository

 $ git pull

This will update your working directory to the latest release.

Note: if "git pull" fails because a directory or a file already exists, then do:

$ rm -rf <this-directory/file>
$ git pull

You can do a:

$ make apfXX_defconfig

to have the latest features automatically activated.

You have to do a make to rebuild binary files and then upload the binary files to your target.

Note: if definitively everything goes wrong while it worked before the last update. You can apply the following procedure (all your modifications in buildroot will be lost):

$ rm -rf buildroot/
$ rm Makefile
$ git pull
$ make apfXX_defconfig
$ make
$ cp buildroot/output/images/* /tftpboot

Enjoy!