Inhaltsverzeichnis
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 Steckplatz
- 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
- firmware-ap6210 = Firmware für den WLAN-Chip
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