DEPRICATED: TO BUILD FOR ARM PLEASE USE
https://github.com/arangodb-helper/build-docker-containers/blob/master/readme_ARM.md
#Build ArangoDB auf Wandboard
Wandboard kann über http://wandboard.org/index.php/buy bestellt werden.
Der direkte Link ist z.B.:
Mouser : http://www.mouser.de/ProductDetail/Wandboard/WBQUAD/
Texim https://www.texim-europe.com/wandboard_order.aspx
##1. WandBoard-Image mit Ubuntu erstellen
1.1 Ubuntu-Image http://download.wandboard.org/wandboard-imx6/ubuntu-16.04/wandboard-all-ubuntu-16.04-sdcard-20160525.zip von http://download.wandboard.org/ herunterladen
1.2 WB-Image auf MicroSD schreiben (min 8 GB)
1.3 MicroSD in WB platzieren (Slot auf Prozessor-Platine)
1.4 Monitor (HDMI), Tastatur und Maus (USB) anschliessen
1.5 Wandboard booten
Linx liefert Werkzeuge, die Erstellen einer SD-Karte ermöglicht.
Unter Windows könnte folgende Anwendungen verwendet werden:
SDFormatter.exe - SD Karte formatieren: https://www.sdcard.org/downloads/
Win32DiskImager.exe - SD Karte beschreiben: http://sourceforge.net/projects/win32diskimager/
##2. Arbeit an dem Board
Es direkt an dem Board per LXTerminal gearbeitet werden, jedoch von Vorteil ist die Arbeit mit einem SSH Client (z.B.putty)
2.1 Putty starten und einlogen mit
[putty] ubuntu@wandboard (User:ubuntur Password:ubuntu, Rechnername wandboard)
2.2 root werden mit su -> Password:root
Für die Kompilirung reicht ubuntu-user aus
##3. Disk (Parttion) der SD-Karte erweitern
Die erstellte SD Karte wird nicht 100% verwendet. Damit der freie Platz auch verwendet werden kann, sind einie Anpassungen weforderlich.
3.1 Partitionen ansehen mit fdisk -l (angezeigt wird mmcblk2p1, mmcblk2p2)
3.2 Editor starten mit fdisk mmcblk2
3.3 Partition erstellen mit "n" Enter, Enter,... (Default-Werte)
3.4 Partition schreiben mit "w" -> (Meldung wegen neu booten)
3.5 Neu starten mit sudo reboot, per ssh erneut (wie unter 2) einlogen
3.6 Partitionen ansehen mit fdisk -l (angezeigt wird nun mmcblk2p1, mmcblk2p2, mmcblk2p3)
3.7 Auf der Partitionen Datei-System ext4 erstellen mit: mkfs.ext4 /dev/mmcblk2p3
3.8 Partition mmcblk2p3 mounten unter z.B. /mnt/wb:
mkdir /mnt/wb
mount /dev/mmcblk2p3 /mnt/wb
3.9 Die Patition eventuell in /etc/fstab permanent eintragen:
/dev/mmcblk2p3 /mnt/wb ext4 defaults 0 1
##4. Entwiklungsumgebung anpassen
Die erforderliche Anwendungen sind bereits installiert, jedoch zur Kontrolle sollten installiert oder geprüfrt werden
// System auf dem neusten Stand bringen
sudo apt-get update -y
sudo apt-get upgrade -y
// Git
sudo apt-get install git
//Compiler
sudo apt-get install cmake make build-essential openssl python2.7 g++ gcc
//SSL, Devel-Version
sudo apt-get install libssl-dev
##5. ArangoDB Clonen
mkdir /mnt/wb/adb3
cd /mnt/wb/adb3
git clone --single-branch --depth 1 git://github.com/arangodb/arangodb.git
##6. cmake mit SSL Anpassung
Bei der Installation mit sudo apt-get install libssl-dev kann auf ARM der SSL-Pfad von Standard abweichen.
In gegebenem Fall es ist "/usr/local/ssl". Dadurch sollte es cmake mitgeteilt werden:
cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl ..
Hilfe und weitere Informationen unter:
https://docs.arangodb.com/3.0/cookbook/Compiling/Debian.html
http://jsteemann.github.io/blog/2016/06/02/compiling-arangodb-3-dot-0-on-ubuntu/
Mit cmake -L können alle zusätzliche Parameter angezeigt werden, die mit cmake verwendet werden können
##7 Kompilierung
Mit make -j4 (bei Wandboard Quad-Version, dauert etwa 3 Stunden)
Die Komilierung kann ein wenig optimiert weren. Wenn Der Compiler legt die Dateien in einem temporären Ordner. Standartmäßig es ist /tmp/. Wenn der Temp-Ordner ein RAM-Dsik ist, wird die SD-Karte nicht beschrieben, sondern werden Datein in RAM-Speicher abgelegt. Erreicht wird es mit dem Eintrag in /etc/fstab :
tmpfs /var/tmp tmpfs defaults 0 0
Danach es ist erforderlich die TMPDIR Variafle anzupassen:
export TMPDIR=/var/tmp
Sollte ein Problem wegen Speichrmangael (z.B. bei Testen von ArangoDB) auftreten, so kann der Temp-Ordner auf Standart-Wert (/tmp/) angepasst werden;
export TMPDIR=/tmp
Damit "/var/tmp/" tatsächlich ein RAM-Disk wird, muss [sudo] mount -a ausgeführt werden.
Auch nach dem Neustart werden Änderungen wirksam.
Geprüft kann es mit df -lH wo /var/tmp als tmpfs erkennbar ist:
tmpfs 1.1G 0 1.1G 0% /var/tmp
Standardmäßig werden bis zu 50% des RAM-Speichers als RAM-Disk verwendet.
Angepasst werden kann es in /etc/fstab mit:
tmpfs /var/tmp tmpfs nosuid,size=33% 0 0
wo #33% des RAMs verwendet wird.
In dem Fall die Last auf der Kühler wird höher, da auch RAM-Chips gekühlt werden müssen, was mit make -j4 zu einer Überhitzung führen kann. In dem Fall wird das System gestoppt und ein Reset ist erforderlich. Um die Last zu reduziern könnte ein-zwei Kerne weniger verwendet werden was mit make -j3 oder make -j2 erreicht wird.
Bei Bedarf kann der RAM-Disk mit umount /var/tmp deaktiviert werden, was nach df -lH erkennbar ist, wo /var/tmp nicht mehr als tmpfs erscheint.
Mit make help könne alle Ziele (Targets) aufgelistet werden. Ein paar sinnvolle davon sind:
make package - erstellt ein Package mit Binary-Daten
make package_source - erstellt ein Package mit Quellcode, was z.B. bei Git hochgeladen werden kann.
##8. Tests
8.1 Der einfache Test der Version mit ./bin/arangod --version
8.2 Test mit unittests
Nach der erfolgreichen Kompilierung mit make -j4 kann ArangoDB mit Hilfe eines integrierten Test-Fameworks getestet werden.
Dieses kann mit ./scripts/unittest all aufgerufen werden.
Aufruf ./scripts/unittest ohne Parameter listet alle verfügbate Tests auf.
Die Tests können auch einzeln aufgerufen werden. Beispiele:
./scripts/unittest arangobench
./scripts/unittest stress_crud
./scripts/unittest http_server
Das Ergebnis kann in eine Datei umgeleitet werden:
Dieses kann mit ./scripts/unittest all aufgerufen werden.
./scripts/unittest ssl_server 1>&2>unittest.out
Für http-Tests sind noch weitere Komponenten erfordserlich, die wie folgt installiert werden können:
apt-get install ruby ruby-rspec ruby-httparty -y - installiert Ruby
apt-get install bundler -y - Ruby Dependency Management
gem install persistent_httparty - installiert persistent_httparty für Ruby
#Cross-Compiling unter Ubuntu/Debian Weitere Infos unter: https://github.com/servusoft/arangodb3/blob/master/README_CROSS_COMPILING.md