Installation von Ubuntu und der Arduino Software auf einen Rikomagic MK802 II

Geschrieben von Eric Scheibler am 23.03.2013

Vor kurzem habe ich mir einen Rikomagic MK802 II gekauft. Das ist ein Mini PC mit einem 1.5 GHz ARM Prozessor, 1 GB RAM und sowohl einem HDMI wie auch zwei USB Ports. Darauf läuft normalerweise Android 4.0 und er ist hauptsächlich auch als Media Center fürs Wohnzimmer gedacht. Er lässt sich aber auch problemlos als Linux Server verwenden. Im folgenden beschreibe ich die Installation von Ubuntu und gehe auf meine Anpassungen ein. Außerdem möchte ich damit einen Arduino programmieren und steuern.

Den MK802 II betreibe ich mit einem externen Netzteil. Des weiteren habe ich mir eine 8 GB Micro SD Karte gekauft, auf die das Linux Image geschrieben wird. Obwohl der Mini PC über WLAN verfügt, habe ich auch diesen USB Ethernet Adapter gekauft. Er ist nicht der schnellste, dafür billig und wird direkt nach dem anstecken ohne jegliche Konfiguration erkannt. Dies erleichtert z.B. das Installieren der ersten Packages, wenn noch kein WiFi zur Verfügung steht.

Ubuntu Image installieren

Da der MK802 wie viele Geräte dieser Klasse nicht von USB booten kann läuft die Linux Installation nicht so ab, wie gewohnt. Es existieren verschiedene Images, die bereits ein Abbild des Betriebssystems enthalten und nur noch auf die SD Karte geschrieben werden müssen. Da die ARMHF Architektur auf Grund eines signifikanten Geschwindigkeitsvorteils empfohlen wird, habe ich mich für das Lubuntu Image entschieden.

Zunächst das Image herunterladen und entpacken, dann die SD Karte löschen und das Image aufspielen und schließlich noch die Größe der zweiten Partition auf 8 GB erweitern (das Image ist für 4 GB SD Karten ausgelegt). Dazu muss fdisk gestartet werden, die zweite Partition gelöscht und mit den empfohlenen Werten neu erstellt werden. Zum Schluss wird noch das Dateisystem (EXT4) an die neue Partitionsgröße angepasst. In diesem Beispiel ist die SD Karte unter /dev/sdb zu finden.

wget http://dl.miniand.com/toby_corkindale/linaro-alip-armhf-t4.7z
p7zip -d ~/Downloads/linaro-alip-armhf-t4.7z
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=16 conv=fsync
sudo dd if=linaro-alip-armhf-t4.img of=/dev/sdb bs=16k conv=fsync
sudo fdisk -c -u /dev/sdb
sudo e2fsck -f /dev/sdb2
sudo resize2fs /dev/sdb2

Nun kann die SD Karte in den Kartenslot des MK802 gesteckt und der PC mit Strom versorgt werden. Ubuntu bootet in knapp 30 Sekunden.

Der folgende Abschnitt ist hauptsächlich für blinde Anwender und evtl. für die, welche gerade keinen Monitor mit HDMI Eingang zur Hand haben interessant. Das Image enthält weder Brltty für die Braille Ausgabe noch einen OpenSSH Server, ist für mich also zunächst nicht zugänglich. Ein anpingen vom Notebook aus ist aber möglich, sodass zumindest der USB Ethernet Adapter funktioniert. Ziel ist es also, zunächst Brltty zu installieren (der OpenSSH-Server geht genauso).

Da nach dem Start die graphische Oberfläche geladen wurde, wechselt man mittels CTRL+ALT+F1 in die erste Konsole. Auf Konsole 1 ist man bereits als root angemeldet. Als nächstes müssen die Repositories aktualisiert werden:

apt-get update

Zu beachten ist, dass das qwerty Tastaturlayout eingestellt ist. Das bedeutet, y und z sind vertauscht und der “-” befindet sich an der Stelle des “ß”. Danach Brltty installieren:

apt-get -y install brltty

Nach einer kurzen Wartezeit kann der MK802 neu gestartet werden:

shutdown -r now

Nun sollte eine angeschlossene Braille Zeile auch erkannt werden. Falls nicht kann man auch mittels CTRL+ALT+F2 zur zweiten Konsole gelangen, sich mittels User: “linaro” und PW: “linaro” anmelden und die obigen Befehle mit einem vorangestellten “sudo” eingeben. Sudo verlangt kein Passwort.

Als nächstes den OpenSSH Server installieren

sudo apt-get install openssh-server

Nun kann man sich via SSH anmelden und die weitere Konfiguration remote durchführen.

Vor der weiteren Anpassung sollten einige wichtige Programme installiert werden:

sudo apt-get install vim zsh w3m wget screen aptitude git ntp

WLAN

Benötigt wird WPA-Supplicant:

sudo aptitude install wireless-tools

WLAN0 in der Interfaces Datei anlegen, da es ein Server ist, bekommt er eine feste IP. Die DNS Einträge legen den heimischen Router als DNS Server fest und “auto wlan0” bewirkt, dass das WLAN0 Interface beim Start direkt aktiviert wird:

vim /etc/network/interfaces
# wlan
auto wlan0
iface wlan0 inet static
address 192.168.100.100
netmask 255.255.255.0
gateway 192.168.100.1
broadcast 192.168.100.255
dns-search google.com
dns-nameservers 192.168.100.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Config Datei für WPA-Supplicant (WPA/WPA2 verschlüsselte WLAN’s):

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
eapol_version=1
ap_scan=1
fast_reauth=1

# my wifi
network={
ssid="MyWiFi"
scan_ssid=1
psk="abcdefghijklmnopqrstuvwxyz"
}

Ich musste außerdem eine Datei mit falschen DNS Einträgen entfernen. Tut man dies nicht, so ist die Adressauflösung sehr langsam:

sudo rm /etc/resolvconf/resolv.conf.d/original

Netzwerk neu starten:

sudo /etc/init.d/networking restart

Sollte das WLAN0 Interface wider erwarten nicht gestartet sein, so holt man dies hiermit nach:

sudo ifup wlan0

Weitere Anpassungen

Der Terminal Emulator fehlt, da die Terminfo Datenbank nicht vorhanden ist. Dadurch funktionieren z.B. die Cursortasten und POS1/Ende nicht korrekt. Des weiteren lässt sich “screen” nicht starten. Ich habe die benötigte Datei von meinem Notebook rüberkopiert: screen.linux Sie muss nach /usr/share/terminfo/s/ kopiert werden (den Ordner evtl. vorher anlegen).

Deutsche und englische Sprachpakete installieren:

sudo aptitude install language-pack-en language-pack-de

Deutsche Tastatur:

sudo aptitude install console-data
sudo dpkg-reconfigure keyboard-configuration

Encoding und Sprache festlegen:

sudo dpkg-reconfigure locales
sudo update-locale LANG=en_US.UTF-8

Grafische Anmeldung deaktivieren:

sudo echo "manual" > /etc/init/lightdm.override

Root Auto Login auf Konsole 1 (TTY1) deaktivieren

Sollte unbedingt durchgeführt werden, wenn der MK802 als Server betrieben wird:

sudo mv /etc/init/openvt.conf /etc/init/openvt.conf.noboot
sudo vim /etc/default/autogetty
ENABLED=0

RAMDisk anlegen, bei 1GB RAM kein Problem:

sudo vim /etc/fstab
tmpfs   /tmp   tmpfs   defaults   0

Zeitzone festlegen:

sudo dpkg-reconfigure tzdata

Hostnamen ändern:

sudo vim /etc/hostname
NewHostName

Ebenfalls in der hosts Datei anpassen:

sudo vim /etc/hosts
127.0.1.1       NewHostName

Daten erst nach 30 Sekunden auf die SD Karte schreiben (Vorsicht: möglicher Datenverlust bei Abstürzen):

sudo echo "vm.dirty_writeback_centisecs=3000" >> /etc/sysctl.conf

Arduino IDE installieren

sudo aptitude install arduino make

momentan wird aber die Version 1.0 installiert, mit der der Compile-Vorgang scheitert. Daher habe ich die Arduino und Arduino-Core Pakete aus den Debian Sit Repos von hier und dort geladen und installiert:

wget http://ftp.bg.debian.org/debian/pool/main/a/arduino/arduino-core_1.0.1+dfsg-7_all.deb
wget http://ftp.de.debian.org/debian/pool/main/a/arduino/arduino_1.0.1+dfsg-7_all.deb
sudo dpkg -i *.deb

Überprüfen ob der Benutzer bereits in der Gruppe “dialout” ist:

groups

Das make File habe ich von hier.

Arduino anstecken, ein Hallo Welt Programm suchen, den Board Typ z.B. mittels

export BOARD=leonardo

spezifizieren und den Kompeliervorgang durch “make” anstoßen. Hat’s geklappt, noch

make upload

ausführen um das Binary hochzuladen. Mittels

make monitor

kann der Output der seriellen Schnittstelle ausgelesen werden.

Webcam

Dem Linaro Image fehlt das Modul UVCVideo. Will man eine Webcam betreiben, so muss man seinen eigenen Kernel kompelieren und das Modul hinzufügen. Den Vorgang habe ich hier beschrieben.