Wandboard Cluster
The work done here contributes to the Massive Affordable Computing Project based out of the
University of Witwatersrand and the
University of Cape Town physics departments, both located in South Africa.
The purpose of this research is to explore ARM computing in the context of high energy physics such as that done at
CERN. For more details and blogs about the project visit
http://hep.wits.ac.za/research/mac.php.
This section describes select steps taken to configure a Wandboard Quad cluster from Freescale,
http://www.wandboard.org/.
It is an ongoing project and so some sections are incomplete.
A good portion of the steps apply to Ubuntu 12.04 LTS, however Ubuntu 13.10 and
Archlinux ARM were also used. Assume the steps are for 12.04 LTS unless otherwise specified.
Glusterfs
Glusterfs enables you to share a filesystem over the server and nodes.
From the server (MAC1), as root do:
-
apt-get install glusterfs-server
-
gluster volume create UCTMAC_Volume serverIPaddress:/data
this creates a file called
data
Then start glusterfs
-
gluster volume start UCTMAC_Volume
-
gluster volume info
To allow nodes access:
-
gluster volume set UCTMAC_Volume auth.allow nodeIP1,nodeIP2
Then on the nodes, as root do:
-
mkdir /mnt/glusterfs
-
mount.glusterfs ServerIPAddress:/UCTMAC_Volume /mnt/glusterfs
-
mount
A simple
df -h
should show that there is a filesystem there.
Since I am using a USB as my file-sharing device I will mount it from the server in /data.
Mpich
I installed the latest version of MPICH from
here (currently 3.03). Follow the readme files on how to install, it's pretty straight forward. Remember
--enable-shared
and
--prefix=
to your shared filesystem in configuration. Add the /bin folder in the mpich installation into your path. After following the readme file do
which mpicc
. It should point to the new location.
Benchmarks so far
Get the tar file from their website. untar it etc. In the new directory create a file corresponding to your system, ie, archlinux.
Then do
-
sudo make XCFLAGS=" -DMULTITHREAD=4 -DUSE_FORK=1" PORT_DIR=thedirectory/
If compiling in Archlinux using
-DUSE_PTHREAD
add
-lpthread
Play around with some of the flags. More flags can be added in the new folders .mak file.
HPL
Follow INSTALL file. Also need to do
sudo apt-get install gcc-multilib
. I found if a compile failed with errors, copy the Make.
outside the top hpl directory. Delete the whole directory, unzip a new one, paste the Make file in there and try again. Need the atlas-base files. A sudo apt-get install libatlas-base-dev
which install libcblas.a and libatlas.a in /usr/lib/atlas-base
For Archlinux:
There are no atlas base files in the pacman repository. You have to build it yourself. Get the source at the bottom of this page, untar it and create the file test
in the new untarred folder. Cd to test
and do
-
../configure -Si archdef 0
-
make build
-
make check
If there are cpu throttling errors, change the values in /sys/devices/system/cpu/cpu#/cpufreq/scaling_governor
. If the problem persists and you are sure you have turned off cpu throttling add the flag -Si cputhrchk 0
to the configure step.
These could take a long time. The libatlas.a and libcblas.a files will be in the test/include
or test/lib
directories.
PARKBENCH
Unzip tarball. Make changes in make.local.def
. Then make all.mpi
STREAM
Stream 5.10 files can be found at http://www.cs.virginia.edu/stream/FTP/Code/.
Correct the fortran and C compilers in the Makefile if necessary and compile the code with make
. Change matrix sizes appropriately. There isn't any need to run it in parallel on other nodes because it should directly scale.
Parallel Memory Bandwidth Benchmark (pmbw)
Get the files from here. Instructions are clear to follow from site.
Setting up "ssh-able" IP
Need to register your computers mac address and the port depending on the rules of your institution. Then in /etc/network/interfaces
:
auto lo eth1
iface lo inet loopback
iface eth1 inet static
address xxx
netmask xxx
gateway xxx
broadcast xxx
dns-nameservers xxx
If given time server info put it in /etc/openntpd/ntpd.conf
.
To change default ethernet port go to /etc/ssh/sshd_config
. In there change port 22 to whatever you like.
To be able to ssh without having to fill in a port number each time create a file ~/.ssh/config
. In there for each host/node do
host _name_
hostname _ip address_
port _port number_
...
Installing ROOT on Ubuntu and Archlinux
For Ubuntu
The USB must be ext4 partitioned. Mount the usb in /media/usb/
,
-
sudo mount /dev/sdb1 /media/usb
(to unmount sudo umount /media/usb
, or more forcibly, umount -f -l /mnt
)
Unzip the root tarball onto the usb drive. Then, as root user do
-
./configure --prefix=/data/ROOT/root_install --etcdir=/data/ROOT/root_install --enable-explicitlink --enable-rpath --enable-soversion --all
-
make
-
make install
In your .bashrc file add the line
-
source /data/ROOT/root/bin/thisroot.sh
For Arch Linux.
To enable pyroot you have to change the name of the executable in the /usr/bin from python2
to python
:
To enable Cintex you have to patch your code so that it will work on the ARM architecture. Although Cintex is not crucial, if you want to install ATHENA later on you have to have it (see further down).
Get the patch from here, or use my slightly modified one attached to this page. Paste it in your root folder and do
-
sudo patch < root-5.34.05-cintex-armv7a-port.patch
There may be errors but as long as something updates it should be ok.
Needed packages for packman are: libxpm, libxft. There are also a couple optionals like mysql.
Then configure with
-
./configure linuxarm --prefix=/home/archlinux/ROOT/Root_Install
-
sudo make
-
sudo make install
If there is a "freetype/freetype.h" error which there probably will be, cd to /usr/include/freetype2
and create a softlink pointing a new file freetype, back to the freetype2 folder which has freetype.h in it:
-
sudo ln -s /usr/include/freetype2/ freetype
Once configure has finished, look at the bottom of the configure output and see if python and cintex are there.
A dedicated Proof Cluster
This applies to Ubuntu 14.04. We have an ARM cluster of 7/8 wandboards sharing a filesystem through an NFS server.
Overview: You will need to install ROOT as well as xrootd. Xrootd will be installed directly from resources provided in the ROOT download once it is untarred.
Once ROOT and xrootd are installed, you start the xrootd daemon by using the command to start the xproofd daemon (which has been installed automatically). Because of the way the configure files for xrootd are set up, and the way you initialise the xproofd daemon, it automatically starts the xrootd daemon. I know... confusing.
Everything was put in a shared directory (/home/josh) which makes life easier. Make sure each node can access each other without requiring passwords:
Doing it for one node should be ok since they share the directory.
Then, on all boards do
sudo apt-get install git dpkg-dev make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python-dev gfortran libboost-all-dev
(I recommend using cluster ssh for this.)
Once ROOT has been untarred go into build/unix/
and do
-
installXrootd.sh /home/josh/xrootd
Now you need to build ROOT.
Here is the full configure command I used:
./configure linuxarm --with-xrootd-incdir=/home/josh/xrootd/xrootd-3.2.7/include/xrootd --with-xrootd-libdir=/home/josh/xrootd/xrootd-3.2.7/lib \
--with-x11-libdir=/usr/lib/arm-linux-gnueabihf --with-xpm-libdir=/usr/lib/arm-linux-gnueabihf --with-xft-libdir=/usr/lib/arm-linux-gnueabihf \
--with-xext-libdir=/usr/lib/arm-linux-gnueabihf --with-python-libdir=/usr/lib/arm-linux-gnueabihf --prefix=/home/josh/ROOT/root-install \
--etcdir=/home/josh/ROOT/root-install/ --enable-rpath --enable-explicitlink --enable-soversion --all
Then,
-
make && sudo make install
Add this to your .bashrc:
source /home/josh/ROOT/root-install/bin/thisroot.sh
source /home/josh/ROOT/root-install/bin/setxrd.sh /home/josh/xrootd/xrootd-3.2.7/
export PROOFCONFIG=/home/josh/ROOT/root-install/proof
Now go into ROOT/root-install/proof
. The two files we need are xpd.cf
and proof.conf
. I've provided mine at the bottom of the page, but there are also samples in the directory. Once configured to your liking (goodluck) do:
-
xproofd -c xpd.cf -b -l /tmp/xpd.log
on the master and all the workers (use cssh). This is a shared location so it's the same place for all boards but each need to have the daemon started on them. The /tmp
location is not shared and so each board will have it's own xproofd/xrootd log file stored there.
To start your proof cluster do
-
TProof *p = TProof::Open("wanboard1)
-
p.Print(“a”)
To run benchmarks do
-
gROOT->Time()
This initializes a timer of any command entered.
-
TProofBench pb("wanboard1")
-
pb.SetDebug(kTRUE)
This saves more results into the ROOT tree
For memory benchmarks you have:
-
pb.RunCPU()
-
pb.RunCPUx()
-
pb.GetPerfSpecs()
(after running one of the memory tests)
I/O benchmarks:
-
pb.MakeDataSet()
(essential)
-
pb.RunDataSet()
-
pb.RunDataSetx()
Each command can take a lot of arguments. So go look here if you want to use something other than defaults. The title about "Getting the performance specs" is helpful.
Just a note, a prooflite session is very easy to start, no setup is neccesary other than installing ROOT. Once that is done then:
To start a PROOF Lite process open ROOT and type
-
TProof *plite = TProof::Open("lite://")
Or
-
TProofBench pb("lite://")
then to specify number of workers if different from the default:
-
TProof *proof = TProof::Open("workers=10")
Running Proof on lxplus worker
Log into lxplus. Then source a version of root:
-
source /afs/cern.ch/sw/lcg/app/releases/ROOT/5.34.18/x86_64-slc6-gcc48-opt/root/bin/thisroot.sh
Source that gcc version:
-
source /afs/cern.ch/sw/lcg/contrib/gcc/4.8.1/x86_64-slc6-gcc48-opt/setup.sh
Start xrootd daemon:
-
source /afs/cern.ch/sw/lcg/app/releases/ROOT/5.34.18/x86_64-slc6-gcc48-opt/root/bin/setxrd.sh /afs/cern.ch/sw/lcg/external/xrootd/3.2.7/x86_64-slc6-gcc48-opt/
Making SSD rootfs without Serial Cable
Create a tar file of the rootfs on the wandboard. As root in ~/
-
tar -zcvf Archlinux-rootfs.tar.gz *
Mount the newly formatted SSD to a directory and unzip tar.gz file into it (make sure it's ext4):
-
sudo mount /dev/sda /SATA
-
sudo tar -zxvf Archlinux-rootfs.tar.gz -C /SATA
A good source is [[http://archlinuxarm.org/forum/viewtopic.php?f=45&t=5995][here]. This may be a more clear explanation.
Get the u-boot package:
-
sudo pacman -S uboot-wandboard-quad
Then in /boot
create the file uEnv.txt
. Copy and paste this into it
baudrate=115200
boot_fdt=no
bootcmd=mmc dev ${mmcdev};if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootenv; then run importbootenv;fi;echo Checking if uenvcmd is set ...;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;echo Running default loaduimage ...;if run loaduimage; then run mmcboot;fi;fi;
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc0
ethact=FEC
ethaddr=00:1f:7b:b0:00:04
ethprime=FEC
fdt_addr=0x11000000
fdt_file=/boot/dtbs/imx6s-wandboard.dtb
fdt_high=0xffffffff
importbootenv=echo Importing environment from mmc (uEnv.txt)...; env import -t $loadaddr $filesize
initrd_high=0xffffffff
ip_dyn=yes
loadaddr=0x12000000
loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/uEnv.txt
loadbootscript=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loaduimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}
mmcargs=setenv bootargs console=${console},${baudrate} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype} video=${video}
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz ${loadaddr}; else echo WARN: Cannot load the DT; fi; fi; else bootm ${loadaddr}; fi;
mmcdev=0
mmcpart=1
mmcroot=/dev/sda1 rw
mmcrootfstype=ext4 rootwait
netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} zImage; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz ${loadaddr}; else echo WARN: Cannot load the DT; fi; fi; else bootz ${loadaddr}; fi;
script=/boot/boot.scr
uimage=/boot/uImage
update_sd_firmware=if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; if mmc dev ${mmcdev}; then if ${get_cmd} ${update_sd_firmware_filename}; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi
update_sd_firmware_filename=u-boot-quad.imx
Restart the wandboard and try
It should say your root folder is now /dev/sda1
AFS
What follows applies to Arch Linux. Get the header files, sudo pacman -S linux-wandboard-headers
which is here
Get an OpenAfs source tar from here. Unzip it cd
into the new folder. Then
-
sudo ./configure --enable-transarc-paths --enable-checking --enable-debug --with-linux-kernel-headers=/usr/src/linux-3.0.35-5-ARCH/
-
make
-
make dest
-
cd /dest
-
sudo mkdir /usr/afs
-
sudo mkdir /usr/vice
-
sudo mkdir /usr/vice/etc
-
sudo cp -p -r root.server/usr/afs/* /usr/afs
-
sudo cp -p -r root.client/usr/vice/etc/* /usr/vice/etc
-
sudo mkdir /usr/vice/cache
Copy all the files from an lxplus machine in /usr/vice/etc
to /usr/local/etc/openafs
. (This was just easier for me). Change the memory allocation in cacheinfo
. I have it set to 1000000.
Then copy the lxplus /etc/krb5.conf
file to /etc/
on the wandboard. Then in /usr/vice/etc/
do
-
sudo ./afs.rc start
-
sudo afsd -verbose -debug
Now do kinit afsusername@CERN.CH
(note capitals) and fill in cern password. If no error occurs, success! Do klist
, should give something like:
Valid starting Expires Service principal
31/01/2014 13:13 01/02/2014 13:13 krbtgt/CERN.CH@CERN.CH
Now do aklog
then tokens
. This should output something similar to
Tokens held by the Cache Manager:
User's (AFS ID 51759) tokens for afs@cern.ch [Expires Mar 12 07:55]
--End of list--
That should give you permission to view afs in /afs
. You cannot cd to /afs
and ask it to list everything. I'm not sure why. Instead cd to /afs/cern.ch
and from there everything should be like normal afs.
To make sure the daemons begin at boot, go to /etc/systemd/system/
and create a file afs.service
. In it put
[Unit]
Description= Enable AFS Capabilities
[Service]
ExecStart=sudo /usr/vice/etc/afs.rc start
ExecStart=sudo /usr/vice/etc/afsd
[Install]
WantedBy=multi-user.target
Then do
-
sudo systemctl enable afs.service
LCG Software
Look here for complete documentation. When you build the packages they are built specifically for the ARM architecture, i.e. armv7l-linux-gcc48-opt.
I did this on Fedora 19 for ARM. This first bit shows changes I made to the original lcgcmake package I downloaded from the svn repo.
In workarea
-
mkdir lcgcmake-build
and cd to it.
If AFS do:
-
svn co svn+ssh://svn.cern.ch/reps/lcgsoft/trunk/lcgcmake
Else
-
svn co svn+ssh://cernusername@svn.cern.ch/reps/lcgsoft/trunk/lcgcmake
Get the base packages from yum repositories (GCC, fortran etc), I also recommend installing every *devel package from the yum repositories. This will speed up the process considerably. A list of the more obscure ones that I was missing:
sudo yum install mesa-libGL-devel mesa-libGLU-devel mesa-libGLw-devel mesa-libOSMesa-devel openssl-devel boost-devel pcre-devel libgsf-devel icu \
libpng-devel libxml-devel libxml2-devel libxslt-devel lbzip2-utils libzip-devel bzip2-devel
Then in the build directory do:
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/external ../lcgcmake
To ignore a package add the flag -DLCG_IGNORE=package
.
-
make -jn
to make all the packages
or
Try remaking packages that fail,
If still errors do
then try again with make thatpackage
.
If you are behind a proxy remember to set proxy settings in =/root/.subversion=
Fixes for the ARM architecture
Since this is ARM architecture there will be a lot of errors with packages. A good source is this which gives dependencies for each file. Here's a list of fixes i've done so far:
Changes will be reflected in my SVN repo (uploaded soon).
- The pyanlasis packages start hanging. This is because of a Createlock and Deletelock scripts. I changed these to "echo" something for now rather then do anything useful.
- mysql-5.5.27 fails. The log error says something about "va_list". Get the patch (bottom of page) and paste it in
lcgcmake/externals/patches/mysql.5.5.27.patch
.
- libunwind-5c2cade fails to compile. The error in the log file is an array of numbers and in each line a new one is being pointed at. The checked out version of libunwind is incompatible with arm. Go to the
lcgcmake
folder. In /cmake/toolchain/heptools-preview.cmake
remove 5c2cade in the libunwind file and replace with 1.1. Then still from the lcgcmake
folder go to externals/CMakeLists.txt
and change URL http://service-spi.web.cern.ch/service-spi/external/tarFiles/libunwind-${libunwind_native_version}.tar.gz
to URL http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
Then go to lcgcmake-build
and do the whole cmake spiel above.
- Qt-4.8.4: To start: in
lcgcmake/externals/CMakeLists.txt
add the line -embedded arm to the CONFIGURE_COMMAND. Then, in your own /bin do sudo cp armv7hl-redhat-linux-gnueabi-g++ arm-linux-g++
and repeat the process for armv7hl-redhat-linux-gnueabi-gcc arm-linux-gcc and armv7hl-redhat-linux-gnueabi-c++ arm-linux-c++.
- tcmalloc-1.7p3 gives "impossible constraint in 'asm'". You need to get gperftools-2.1. Change
tcmalloc 1.7p3
to tcmalloc 2.1
in heptools-preview.cmake
and change the URL to https://gperftools.googlecode.com/files/gperftools-2.1.tar.gz
in CMakeLists.txt
.
- vdt-0.3.6 comes up with 'make' errors. It's using SSE_AVX instructions which fail on arm. In the
/lcgcmake/externals/CMakeLists.txt
add -D NEON=1 to CMAKE_ARGS
- wms-3.4.0 is also missing the file. Repeat same steps as cream with URL
http://emisoft.web.cern.ch/emisoft/dist/EMI/3/debian/dists/squeeze/main/source/libglite-wms-utils-classad_3.4.1.orig.tar.gz
. (Still applies to archlinux, havent fixed for fedora yet)
- ROOT fails, see my code for fixes. Added a whole "armv7l" section.
The grid packages will all fail. So far only found replacements for a few of them, and only on Archlinux. Haven't done it for fedora yet:
- Oracle-11.2.0.3.0. The file can't be found. In
/lcgcmake/externals/CMakeLists.txt
remove ${LCG_ARCH}
in URL
- CASTOR-2.1.13-6 has the wrong architecture in the current repository. In
/lcgcmake/gridexternals/CMakeLists.txt
change the URL to http://castorwww.web.cern.ch/castorwww/DIST/CERN/savannah/CASTOR.pkg/2.1.14-*/2.1.14-11/castor-2.1.14-11.tar.gz
. Change the version in heptools-preview.cmake
.
- cream-1.14.0-4 is missing the file. In
heptools-preview.cmake
replace 1.14.0-4
with 1.14.4-1
. Then in /lcgcmake/gridexternals/CMakeLists.txt
replace the current URL with http://emisoft.web.cern.ch/emisoft/dist/EMI/2/sl6/SRPMS/tgz/glite-ce-cream-1.14.4-1.src.tar.gz
.
Gaudi
This assumes that your LCGCmake software was created using the toolchain you have named heptools-preview.cmake.
From home do mkdir Gaudi && cd Gaudi
.
Do
-
export acmake='pwd'
-
export CMTCONFIG=armv7l-linux-gcc48-opt
Get the files
-
GAUDISVN=svn+ssh://username@svn.cern.ch/reps/gaudi
-
svn checkout $GAUDISVN/Gaudi/trunk GAUDI_HEAD
-
cd GAUDI_HEAD
In ./toolchain.cmake
, set (heptools_version 68) to (heptools_version preview) or whatever you called your heptools-
file previously.
Point to your lcgcmake installation:
-
cd cmake/toolchain/ ; ./make_heptools.py /home/archlinux/lcgcmake-install/LCGCMT/LCGCMT-preview | tee heptools-preview.cmake
I'm still having problems with the environment variables. Here's a script I run to set the paths:
export CMTCONFIG=armv7l-fc19-gcc48-opt
export CMAKECONFIG=armv7l-fc19-gcc48-opt
export CMTPROJECTPATH=/home/fedora/SSD/Gaudi:/home/fedora/SSD/lcgcmake-install
export CMAKE_PREFIX_PATH=/home/fedora/SSD/Gaudi:/home/fedora/SSD/Gaudi/cmake:/home/fedora/SSD/lcgcmake-install
Files=(/home/fedora/SSD/lcgcmake-install/*/*/armv7l-fc19-gcc48-opt)
for f in "${Files[@]}"
do
export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:${f}
export CMTPROJECTPATH=${CMTPROJECTPATH}:${f}
done
(This assumes your lcg software is installed in /home/fedora/lcgcmake-install
, and your cmakeconfig is armv7l-fc19-gcc48-opt
).
The cmake modules are meant to find the appropriate paths but it doesn't seem to work for me. This is a messy hack which might attribute to some of the failures regarding environment.
Then in the GAUDI_HEAD folder do
-
make -f Makefile-cmake.mk configure | tee configure.log
-
make -f Makefile-cmake.mk all -j4 | tee all-j4.log
-
make -f Makefile-cmake.mk test | tee test.log
There is a VTune error. VTune is purely Intel, so this also attributes to some test failures. So far, 6 tests fail (out of 37 or something).
Building ATLAS OFFLINE
First need the cmt tool. Download it from here, http://www.cmtsite.net/. Untar it, cd to the /mgr directory and make with
Whenever you need to use it remember to source it. For me this is
-
source /home/fedora/SSD/CMT/v1r26p20140131/mgr/setup.sh
Installing ATHENA on Archlinux
NB, this doesn't work because of the architecture. But the steps may be important at some point so it's left up here.
Make sure afs is started. This just simplifies the process. (You can also get a tarball from here here)
Source the pacman release from afs:
-
source /afs/cern.ch/atlas/software/pacman/pacman-latest/setup.sh
Then go to http://atlas-computing.web.cern.ch/atlas-computing/links/kitsDirectory/projects/cache/ to look for the AtlasProduction
kit you want.
Look at this to check the size of the file.
Create a folder for the Distribution, ie mkdir Atlas-x.x.x
and cd to that directory. Then do:
Only once that has compiled using the ARM gcc get the gcc required by ATHENA:
In your ./bashrc
file add (these are my specific paths)
export path_to_kit=/home/archlinux/atlas/athena/18.1.0
export AtlasSetup=/$path_to_kit/AtlasSetup
alias asetup='source $AtlasSetup/scripts/asetup.sh'
Source your ./bashrc or log out and in.
Create a workarea directory, i've created ~/Athena_Workarea/18.1.0
. Do asetup 18.1.0
in that directory. You should get hella errors and no command will work again. Log out and back in.
The problem is that because it's i686 or x64 etc architecture, these executable won't work on an ARM system.
Go to the location where the errors are coming from, for me this is /home/archlinux/atlas/athena/18.1.0/sw/lcg/external/Python/2.7.3/i686-slc6-gcc47-opt/bin/python
.
Now do rm python
. Create a symbolic link to your version of python probably in /usr/bin/
,
-
ln -s /usr/bin/python python
The same thing happens with ROOT. So for me, i go to /home/archlinux/atlas/athena/18.1.0/sw/lcg/app/releases/ROOT/5.34.07a/i686-slc6-gcc47-opt/
and delete the root folder. Create a symbolic link to your local installation of root (which is why we patched it with cintex further up).
-
ln -s /home/archlinux/ROOT/root/ root
Make a file, sudo nano ${HOME}/.asetup
and copy in
[defaults]
default32 = True
briefprint = True
This adds some output when you do an asetup.
Now in your work workdirectory do asetup 18.1.0,here
I tried this with Athena 18.1.0 and and I got cmtconfig errors when doing asetup. To solve this instead do
-
asetup 18.1.0,here --cmtconfig=i686-slc6-gcc47-opt
Tips
Ubuntu 12.04LTS
To enable startup without gui:
-
cd to /etc/init/lightdm.conf
Comment out from
start on ((..
to just before
stop on .."
to change username and password:
To get ssh working:
-
sudo apt-get install openssh-server
Only way to restart ethernet port on wandboard it seems:
-
nohup sh -c "ifdown eth1 && ifup eth1"
After a flash of an image remember to change /etc/hosts
, /etc/hostname
and /etc/network/interfaces
accordingly else network configurations will not work. Also look in /etc/udev/rules/70-presistent-net.rules
. It may rename eth1
to eth2
which will cause problems. Delete the old MAC address and rename.
To fix the very annoying setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
problem, as root do:
-
locale-gen en_US.UTF-8
-
dpkg-reconfigure locales
To execute startup script in ubuntu
A great place for a motd script (you can execute commands here)
Arch Linux
When first downloaded get the essential packages
-
sudo pacman -S base-devel
To allow X11 forwarding do :
Enable the AllowTcpForwarding option in sshd_config
on the server.
Enable the X11Forwarding option in sshd_config
on the server.
Set the X11DisplayOffset option in sshd_config
on the server to 10.
Enable the X11UseLocalhost option in sshd_config
on the server.
Then add systemctl start sshd
to /etc/profile
If you can only ping as root do
-
setcap cap_net_raw=ep /usr/bin/ping
To automatically login create a file /etc/systemd/system/getty@tty1.service.d/autologin.conf
in there put
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I 38400 linux
Internet settings in /etc/netctl
. Look in samples
and change eth0 correctly.
Useful screen commands
Create new window: ctrl-a ctrl c
Close current window ctrl-a X
Split-screen ctrl-a shift-|
(horizontal), ctrl-a shift-s
(vertical)
Move around split screens ctrl-a tab