Installation of the build environment
Required disk storage
The toolchain and the BSP require approximately 4 GB of disk space:
Directory | Required space |
---|---|
/opt | ca. 2GB |
/home | ca. 2GB |
Preparation
Installation of additional packages
Required packages
At least the following packages should be installed:
- patch - Apply a diff file to an original
- ncurses-dev - Unit Testing Library for C (ncurses) – development files
- tftpd-hpa - HPA's tftp server
- subversion - Advanced version control system
- nfs-kernel-server - support for NFS kernel server
- fakeroot - Gives a fake root environment
- unix2dos, tofrodos - Converts DOS ↔ Unix text files
In Ubuntu or Debian you can install these packages with this command:
sudo apt-get install patch libncurses5-dev tftpd-hpa subversion nfs-kernel-server fakeroot tofrodos
The NFS server has to be enabled:
sudo update-rc.d nfs-kernel-server enable sudo service nfs-kernel-server start
Recommended packages
- meld - graphical tool to diff and merge files
- geany, geany-plugins - A fast and lightweight IDE
- tftp-hpa - HPA's tftp client
- glibc-doc - GNU C Library: Documentation
- manpages-posix, manpages-posix-dev - Manual pages about using a POSIX system (for development)
sudo apt-get install meld geany geany-plugins tftp-hpa glibc-doc manpages-posix manpages-posix-dev
Changing the symlink /bin/sh
In Ubuntu or Debian the symbolic link /bin/sh has to be changed to call /bin/bash:
sudo ln -sf /bin/bash /bin/sh
Configuration of sudo
Sudo should preferably be configured in such a way, that the required environment variables are adopted. Therefore the following line should be added to the file /etc/sudoers:
Defaults env_keep += "PATH ELDK ELDKDIR RFS_TOP SYSTOPDIR GCC_PATH LIB_BASE CROSS_COMPILE"
Software working copy
Get your working copy from the subversion repository:
svn co --username <user> https://svn.reccoware.de/tq/system/trunk tq
Falls noch kein Benutzername (<user>) für Sie eingerichtet wurde, wenden Sie sich bitte an Ihren Ansprechpartner bei TQ If you don't already have a user account (<user>), please ask your contact at TQ.
The following question should be answered with 'p' like permanent:
Error validating server certificate for 'https://svn.reccoware.de:443 ... Certificate information: - Hostname: recconet.de - Valid: from Mon, 13 Jun 2011 04:09:50 GMT until Thu, 14 Jun 2012 12:59:52 GMT - Issuer: Domain Validated SSL, GeoTrust Inc., US - Fingerprint: f5:d4:31:b8:db:15:60:71:f1:11:d2:61:55:b4:21:11:ca:3e:61:8d (R)eject, accept (t)emporarily or accept (p)ermanently?
Afterwards just interrupt by pressing Ctrl-C in order to reconfigure subversion. The current version 1.6 of the subversion client uses the gnome password manager to store the password. This can cause problems with the Eclipse SVN plug-in.
To avoid this set the parameter password-stores in section [auth] of the subersion config file .subversion/config to (empty):
nano ~/.subversion/config
[auth] password-stores =
This only has to be done once.
Now start subversion once again:
svn co --username <user> https://svn.reccoware.de/tq/system/trunk tq
Answer the question “Store password unencrypted” with “yes”.
Finally change to directory tq and store the absolute path of the working copy directory in the shell variable $TOPDIR.
cd tq; TOPDIR=$(pwd)
The variable $TOPDIR now contains the top level directory of the build environment. It is required for the following steps.
Network boot via TFTP
Usually the TFTP root directory on the server is /var/lib/tftpboot. The Linux kernel image uImage should be stored in a directory named after the IP address of the target, e.g.:
/var/lib/tftpboot/172.16.135.170/uImage
The following variables in the U-Boot environment have to be set or customised:
Name | Description | Default value |
---|---|---|
ipaddr | Target IP address | 172.16.135.170 |
serverip | Server IP address (TFTP and NFS) | 172.16.135.107 |
gatewayip | Gateway IP address | 172.16.135.254 |
netmask | Netmask | 255.255.255.0 |
kernel | Filename of kernel image on TFTP server | 172.16.135.170/uImage |
bootcmd | Default boot command (set to run boot_net_debian for network boot) | run boot_mmc |
After customising the variables, permanently save the environment to flash using the command saveenv.
Example:
setenv ipaddr 192.168.145.129 setenv serverip 192.168.145.8 setenv gatewayip 192.168.145.254 setenv netmask 255.255.255.0 setenv kernel $ipaddr/uImage setenv bootcmd run boot_net_debian saveenv
Root file system ("rootfs")
The archive of the Debian rootfilesystem tree is available here:
- Debian Rootfilesystem (rootfs-squeeze-yyyymmdd-nn.tgz)
Download the rootfs to tmp/, extract it and set up as follows:
rfsarch=rootfs-squeeze-yyyymmdd-nn.tgz pushd /tmp; wget http://repository.reccoware.de/stuff/tq0412/$rfsarch; popd cd $TOPDIR mkdir -p rootfs sudo tar -C rootfs -xzf /tmp/$rfsarch rm -f rootfs/debian; ln -s tqma28.squeeze rootfs/debian
Share rootfs via NFS
sudo -s ipaddr=<ipaddr> mkdir -p /exports/rootfs/$ipaddr ln -s $TOPDIR/rootfs/debian /exports/rootfs/$ipaddr/debian echo "/exports/rootfs/$ipaddr/debian $ipaddr(rw,no_root_squash,async,no_subtree_check)" >>/etc/exports exportfs -a exit
Replace <ipaddr> with the actual IP address of the targets.
Launch Debian rootfs
The Debian System can be launched from U-Boot using
run boot_net_debian
The very first run will take a while untill the X11 system shows up on the screen (2-3 minutes).
The root password is root. The debian system can also be accessed via SSH.
Installation of the ELDK
The ELDK ISO image is available for download from http://repository.reccoware.de/stuff/tq0412/arm-2008-11-24.iso.
Donwloading and Installing the ELDK
pushd /tmp; wget http://repository.reccoware.de/stuff/tq0412/arm-2008-11-24.iso; popd sudo mount -o loop,ro /tmp/arm-2008-11-24.iso /mnt pushd /mnt; sudo ./install -d /opt/eldk; popd sudo umount /mnt
It is recommended to answer 'y' when asked “Do you really want to install into /opt/eldk directory[y/n]?:”.
The error message “error: failed to stat …/.gvfs: Permission denied” is not critical.
Prepare the ELDK
cd $TOPDIR/build source setenv-eldk sudo ./setup-eldk-toolchain.sh
Prepare the build environment
cd $TOPDIR; make prepare
Environment
To automatically set the alias tq every time you login, you can add the following line to .bashrc:
cat >>~/.bashrc <<EOF alias tq="cd $(echo $TOPDIR); . ./build/setenv-eldk; PS1='[\[\033[43m\]TQ\[\033[0m\] \W]\$ '" EOF
Now you can change to the tq directory by executing tq. Additionally the environment is properly configured for cross compiling.
: Testing required for Ubuntu, validated to work on Fedora 14