Cubietech CubieTruck


  • CPU: Allwinner A20 SoC (2 ARM-Cortex A7 mit 1 GHz)
  • GPU: Mali-400MP-GPU und CedarX-VPU
  • RAM: 2 GB DDR3 SDRAM mit 480 MHz
  • NIC: 10/100/1000 RTL8211E Ethernet PHY
  • WLAN & Bluetooth: Broadcom BCM4329/BCM40181
  • NAND: 8 GB
  • 1x HDMI 1080p und 1x VGA
  • 1x optical SPDIF
  • 2x USB Host
  • 1x USB On-the-go
  • 1x CIR
  • 1x MicroSD SteckplatzCubieTruck
  • 1x SATA 2.0 Anschluss (Kabel ist beigefügt)
  • Spannungsversorgung 1,7mm Klinkenbuchse,
    Adapterkabel auf USB liegt bei
  • + sonstige Schnittstellen GPIO (I²C, SPI, RTC, … )
  • Stromverbrauch maximal 2.5A bei 5V, unterstützt Li-battery





Installation


Installation von ArchLinuxARM mit kernel linux-4.x


Vorbereitung

am Linux-Rechner in das User-Home-Verzeichnis wechseln, falls nicht schon passiert
cd /home/{user}

herunterladen der benötigten Software
benötigt wird das ArchLinux-rootfs für armv7 und der U-Boot Bootloader für den CubieTruck
download von ArchLinuxARM-armv7-latest.tar.gz ca. 206MiB
wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
download des U-Boot Bootloader für den CubieTruck
wget http://archlinuxarm.org/os/sunxi/boot/cubietruck/u-boot-sunxi-with-spl.bin
wget http://archlinuxarm.org/os/sunxi/boot/cubietruck/boot.scr

linux_scripts:get_device&noheader&nodate&nouser




System aufspielen

im Folgenden ist /dev/sdX durch den wirklichen Gerätenamen zu ersetzen
also zum Beispiel /dev/sdf


zum Benutzer root werden
su

falls schon vorhandene Partitionen von der Micro-SD eingehangen wurde, diese wieder sauber aushängen
umount /dev/sdX1
umount /dev/sdX2 … usw
einen Überblick über die eingehangenen Partitionen und Geräte, erhält man mit dem Befehl mount

die ersten Daten auf der Micro-SD löschen
dd if=/dev/zero of=/dev/sdX bs=1M count=8

Partitionslayout erstellen
parted -s /dev/sdX mklabel msdos

eine Partition erstellen
parted -s /dev/sdX mkpart primary ext4 2048s 100%

sollte es hier eine Fehlermeldung geben ,so muss der Rechner neu gestartet werden
dann kontrollieren, ob die Micro-SD unter dem selben Gerätenamen wieder eingehangen wurde und ab hier wieder fortsetzen

den kernel über das neue Partitionslayout und die neue Partition informieren
partprobe

das Dateisystem ext4 auf der Partition erstellen
mkfs.ext4 -b 4096 -L CubieTruck /dev/sdX1

mkfs.ext4 -b 4096 -L CubieTruck /dev/sdX1

mke2fs 1.42.12 (29-Aug-2014)
Ein Dateisystems mit 3889152 (4k) Blöcken und 972944 Inodes wird erzeugt.
UUID des Dateisystems: 4d71cc54-c1ea-4fa6-9584-acecd6027970
Superblock-Sicherungskopien gespeichert in den Blöcken: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

beim Anfordern von Speicher für die Gruppentabellen: erledigt                        
Inode-Tabellen werden geschrieben: erledigt                        
Das Journal (32768 Blöcke) wird angelegt: erledgt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

ein Verzeichnis zum Einhängen der Partition/Dateisystemes erstellen
mkdir /mnt/CubieTruck

das Dateisystem einhängen
mount /dev/sdX1 /mnt/CubieTruck/

den Inhalt des Archives ArchLinuxARM-armv7-latest.tar.gz auf das Dateisystem aufspielen
tar -xf ArchLinuxARM-armv7-latest.tar.gz -C /mnt/CubieTruck/

alle noch gepufferten Daten auf die eingehangene Partition auf der Micro-SD schreiben
sync

aufspielen des U-Boot Bootloader für den CubieTruck in die ersten Sektoren der Micro-SD
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

363+1 Datensätze ein
363+1 Datensätze aus
372016 Bytes (372 kB) kopiert, 0,0612832 s, 6,1 MB/s

die Datei boot.scr (startet des kernel-image) auf die Micro-SD kopieren
cp boot.scr /mnt/CubieTruck/boot/boot.scr

alle noch gepufferten Daten auf die Micro-SD schreiben
sync

das Dateisystem wieder aushängen
umount /mnt/CubieTruck/

den Benutzer root vom System abmelden
exit



ARCH Linux weiter einrichten

Micro-SD in den CubieTruck stecken, booten und einlogen (entweder remote per SSH oder lokal am CubieTruck, bei remote kann folgendes genutzt werden, ohne dass die automatisch zugewiesene IP des CubieTruck im Router ausgelesen werden muss)

Login per SSH als Benutzer alarm (das Passwort lautet ebenfalls alarm)
ssh alarm@alarm

The authenticity of host 'alarm (192.168.55.112)' can't be established.
ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
alarm@alarm's password:

zum Benutzer root wechseln (das Passwort lautet root)
su

als erstes das Passwort von root ändern
passwd

als zweites das Passwort vom Benutzer alarm ändern
passwd alarm

Datenbank von pacman auf den neuesten Stand bringen
pacman -Sy

den Hostnamen auf CubieTruck setzen
echo CubieTruck > /etc/hostname
beim nächsten login über ssh, kann dann folgendes genutzt werden ssh root@cubietruck

uboot-cubietruck auf dem System über den Paketmanager installieren
pacman -S uboot-cubietruck

und jetzt das restliche System updaten
pacman -Su

die richtige Zeitzone setzen
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

deutsches Tastaturlayout auf der Konsole einstellen
echo KEYMAP=de-latin1 > /etc/vconsole.conf

die zu erzeugende Lokalisierungen (Systemsprache und Formatierung) festlegen
nano /etc/locale.gen

nano /etc/locale.gen

de_DE.UTF-8 UTF-8
de_DE ISO-8859-1 
de_DE@euro ISO-8859-15

die Lokalisierung erzeugen
locale-gen

Lokalisierung auf de_DE.UTF8 setzen
echo LANG=de_DE.UTF8 > /etc/locale.conf

noch ein paar nützliche Programme installieren - optional
pacman -S htop lsof wget parted

  • wget - Programm zum Herunterladen von Dateien, wird in dieser Anleitung benötigt
  • parted - wird zur Partitionierung der SSD in dieser Anleitung benötigt

das System neustarten
reboot



Arch Linux auf eine angeschlossene SSD installieren

ich habe mein System ab hier nochmals auf eine angeschlossene SSD am SATA-Port im CubieTruck installiert und nutze die Micro-SD nur noch als Fallback, falls das System aus irgend einem Grund von der SSD nicht mehr funktioniert, kann ich einfach von der Micro-SD ein Arch Linux booten
weiterhin kann der CubieTruck natürlich auch ohne eine angeschlossene SSD weiter verwendet werden

folgende Schritte sind hierzu nötig:

  • SSD in den CubieTruck einbauen
  • das schon vorkonfigurierte Arch Linux von der Micro-SD auf dem CubieTruck booten
  • die SSD wird als /dev/sda automatisch im System bereitgestellt

ACHTUNG - alle Daten auf der SSD gehen bei dieser Anleitung verloren

am CubieTruck anmelden, entweder lokal oder remote
remote über:
ssh alarm@cubietruck
Anmeldung als root über SSH ist nicht mehr erlaubt

zum Benutz root wechseln
su

vergewissern das keine Partition der SSD (/dev/sda) im System eingehangen wurde
mount
einghangene Partitionen können mittels umount /dev/sda1 usw. wieder augehangen werden

nochmaliger download von ArchLinuxARM-armv7-latest.tar.gz
cd /tmp
wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz

die Daten auf der SSD löschen
dd if=/dev/zero of=/dev/sda bs=1M count=8

neues Partitionslayout erstellen
parted -s /dev/sda mklabel msdos

eine Partition erstellen
parted -s /dev/sda mkpart primary ext4 2048s 100%

den kernel über das neue Partitionslayout und die neue Partition informieren
partprobe

das Dateisystem ext4 auf der Partition erstellen
mkfs.ext4 -L SSD /dev/sda1

ein Verzeichnis zum Einhängen der Partition mit dem gerade ertsellten Dateisystemes der SSD erstellen
mkdir /mnt/ssd

die Partition einhängen
mount /dev/sda1 /mnt/ssd

den Inhalt des Archives ArchLinuxARM-armv7-latest.tar.gz auf die Partition aufspielen
tar -xf ArchLinuxARM-armv7-latest.tar.gz -C /mnt/ssd/

das Aufspielen des U-Boot Bootloader auf die SSD ist nicht notwendig
die Datei boot.scr (startet des kernel-image) muss aber auf die SSD kopiert werden
cp /boot/boot.scr /mnt/ssd/boot/boot.scr

alle noch gepufferten Daten auf die SSD schreiben
sync

das eingehangene Dateisystem der SSD, wieder aushängen
umount /mnt/ssd/

um von der SSD booten zu können, darf U-Boot keine boot.scr auf der Micro-SD finden
mv /boot/boot.scr /boot/boot.org
weiterhin muss die Micro-SD aber zum Booten immer gesteckt sein, da U-Boot auf der Micro-SD installiert ist
das U-Boot wird auch immer von Micro-SD eingelesen, eine andere Möglichkeit gibt es nicht

das System neustarten, der CubieTruck sollte jetzt von der SSD booten
reboot

der Login erfolgt wieder über
ssh alarm@alarm

nach dem Login wieder die Passwörter ändern und das System einrichten



BASH erweitern

arch:bash&noheader&nodate&nouser


CPU Taktfrequenz

das Programm cpupower installieren
pacman -S cpupower

den CPU-Governer ondemand nutzen
nano /etc/default/cpupower

/etc/default/cpupower

# Define CPUs governor
# valid governors: ondemand, performance, powersave, conservative, userspace.
governor='ondemand'
...

cpupower starten und beim Systemstart aktivieren
systemctl start cpupower
systemctl enable cpupower



Powerbutton

das Programm acpid installieren
pacman -S acpid

acpid beim nächsten Systemstart aktivieren
systemctl enable acpid

da der ACPI-Deamon (acpid) zu zeitig startet, muss folgendes geändert werden
nano /etc/systemd/system/multi-user.target.wants/acpid.service

/etc/systemd/system/multi-user.target.wants/acpid.service

[Unit]
Description=ACPI event daemon
Documentation=man:acpid(8)
Requires=systemd-udev-settle.service
After=systemd-udev-settle.service

[Service]
ExecStart=/usr/bin/acpid --foreground --netlink

[Install]
WantedBy=multi-user.target

das System neustarten
reboot

prüfen, ob die Betätigung des Powerbutoon registriert wird
journalctl -f
jetzt den Powerbutton betätigen

journalctl -f

...
Nov 12 19:39:09 cubietruck root[278]: PowerButton pressed
Nov 12 19:39:13 cubietruck root[280]: PowerButton pressed





Login verschönern

die Datei /etc/motd (message of the day) bearbeiten
nano /etc/motd

/etc/motd

   _____      _     _   _______              _    
  / ____|    | |   (_) |__   __|            | |   
 | |    _   _| |__  _  ___| |_ __ _   _  ___| | __
 | |   | | | | '_ \| |/ _ \ | '__| | | |/ __| |/ /
 | |___| |_| | |_) | |  __/ | |  | |_| | (__|   < 
  \_____\__,_|_.__/|_|\___|_|_|   \__,_|\___|_|\_\
                                                  
hab ich von hier: http://patorjk.com/software/taag/#p=display&f=Big&t=CubieTruck

die Datei sysinfo.sh erstellen

sysinfo.sh bei jedem Login von dem Benutzer root ausführen
nano /root/.bash_profile

/root/.bash_profile

#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc

# exec sysinfo.sh at login
if [ -x /usr/local/bin/sysinfo.sh ]; then
      /usr/local/bin/sysinfo.sh
fi

beim nächsten Login, sieht es dann so aus

root@cubietruck's password: 
   _____      _     _   _______              _    
  / ____|    | |   (_) |__   __|            | |   
 | |    _   _| |__  _  ___| |_ __ _   _  ___| | __
 | |   | | | | '_ \| |/ _ \ | '__| | | |/ __| |/ /
 | |___| |_| | |_) | |  __/ | |  | |_| | (__|   < 
  \_____\__,_|_.__/|_|\___|_|_|   \__,_|\___|_|\_\
                                                  
Last login: Thu Jun 25 19:19:56 2015 from 192.168.55.11

Linux: 4.11.0-rc6-1-ARCH
Uptime:  1:56 
RAM Usage: 204MB / 2008MB
CPU Clock: 720MHz (ondemand)
CPU Usage: 4%

FREQUENCY	USED
144 MHz 	89.2%
312 MHz 	3.5%
528 MHz 	2.4%
720 MHz 	1.3%
864 MHz 	0.6%
912 MHz 	0.4%
960 MHz 	2.7%

Top five processes:
USER       UID COMMAND           PID %CPU
openhab    188 java              458  8.0
root         0 sysinfo.sh       6126  3.6
root         0 systemd             1  0.1
root         0 kworker/0:3      5699  0.1
root         0 kworker/1:0      5841  0.1

MMC/SD
 
HDD/SSD
  /dev/sda: SanDisk SDSSDHP128G   33°C
  /dev/sda1: 5,4GB of 118GB used and mounted in /

[root@CubieTruck ~]#





Wireless

folgende Software installieren
pacman -S crda iw firmware-ap6210

den CubieTruck neustarten
reboot

das WLAN-Interface auf up setzen
ifconfig wlan0 up

nach vorhanden WLAN's in der Umgebung suchen
iw wlan0 scan



LED's

Erstellen eines Shell-Scriptes zum Setzen der Zustände der LED's
nano /usr/local/bin/cubietruck-leds.sh

/usr/local/bin/cubietruck-leds.sh

#/bin/sh

## set the trigger for the leds if the cubietruck is up, this can be one of the following:
### none rc-feedback nand-disk usb-gadget usb-host mmc0 timer oneshot heartbeat backlight
### gpio cpu0 cpu1 default-on mmc1

BLUE_LED=default-on
ORANGE_LED=cpu0
WHITE_LED=rc-feedback
GREEN_LED=mmc0


function leds_on {
   echo ${BLUE_LED} > /sys/class/leds/cubietruck\:blue\:usr/trigger
   echo ${ORANGE_LED} > /sys/class/leds/cubietruck\:orange\:usr/trigger
   echo ${WHITE_LED} > /sys/class/leds/cubietruck\:white\:usr/trigger
   echo ${GREEN_LED} > /sys/class/leds/cubietruck\:green\:usr/trigger
}

function leds_off {
   echo heartbeat > /sys/class/leds/cubietruck\:blue\:usr/trigger
   echo none > /sys/class/leds/cubietruck\:orange\:usr/trigger
   echo none > /sys/class/leds/cubietruck\:white\:usr/trigger
   echo none > /sys/class/leds/cubietruck\:green\:usr/trigger
}


case $1 in
   start )
      leds_on;;
   stop )
      leds_off;;
   * )
      exit 1;;
esac

Shell-Script ausführbar machen
chmod +x /usr/local/bin/cubietruck-leds.sh

SystemD Service-Datei erstellen
nano /usr/lib/systemd/system/cubietruck-leds.service

/usr/lib/systemd/system/cubietruck-leds.service

[Unit]
Description=Set Cubietruck LED's
After=sysinit.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/bin/sh /usr/local/bin/cubietruck-leds.sh start
ExecStop=/bin/sh /usr/local/bin/cubietruck-leds.sh stop

[Install]
WantedBy=multi-user.target

die Service-Datei jetzt ausführen und bei jedem Start des CubieTruck ebenfalls aktivieren
systemctl start cubietruck-leds
systemctl enable cubietruck-leds