Gentoo-Linux ist aus meiner Sicht die optimale Wahl um aus Embedded-Systemen wie dem Cubietruck die maximale Performance oder Energieeffizienz zu holen. Ich wurde nun mehrfach gebeten eine einfache Anleitung für ein gebrauchsfähiges Gentoo-System für den Cubietruck zu schreiben. Hier ist sie:

0. Arbeitsmittel bzw. Voraussetzungen

Gentoo-Linux lässt sich auf einer sehr kleinen SD-Karte (um 1GB) installieren, jedoch benötigt man dann für Updates ein externes Linux-System, was üblicherweise keinen Spaß macht. Ich empfehle eine 16-32GB Speicherkarte oder eine SATA-Festplatte. Benötigt wird zudem ein funktionierendes Linux-System. Sei es ein Desktop-Rechner oder ein schon im NAND des Cubietruck installiertes System, beides genügt.

1. Vorbereitung

Zunächst benötigen wir eine aktuelle Version von Gentoo-Linux, die für den Cubietruck übersetzt wurde. Die so genannten Stage-3-Tarballs kann man sich hier herunterladen:

http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/

Um das System starten zu können wird zusätzlich ein Boot-Loader (U-Boot), ein Boot-Skript und ein Kernel-Image benötigt. Diese habe ich hier bereitgestellt:

Mainline-Kernel für Cubietruck.

Im Archiv enthalten sind auch alle nötigen Module. Diese befinden sich im „lib“-Verzeichnis, welches ins Wurzelverzeichnis „/“ kopiert werden müssen.

2. Erstellung der SD-Karte

Für die Boot-Partition empfehle ich so um die 50MB, damit für spätere Experimente und Backups von Kernels immer noch genug Platz bleibt. Meine Partitionstabelle für eine 16GB-SD-Karte sieht so aus:

Disk /dev/mmcblk0: 14.7 GiB, 15720251392 bytes, 30703616 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xXXXXXXXX

Device         Boot     Start       End   Blocks  Id System
/dev/mmcblk0p1           2048    104447    51200  83 Linux
/dev/mmcblk0p2         104448  30703615 15299584  83 Linux

Für eine SATA-Festplatte mit dem Root-Dateisystem empfehle ich auch eine (identisch große) Boot-Partition anzulegen, weil der U-Boot hoffentlich in naher Zukunft auch den Mainline-Kernel direkt von der SATA-Festplatte booten kann und damit der zusätzliche Schritt über eine SD-Karte entfallen kann. Anschließend kann die Boot-Partition mit dem Extended-2-Dateisystem (mkfs.ext2) formatiert werden. Für die Root-Partition empfehle ich BTRFS oder EXT4.

Anschließend können die Dateien aus meinem Kernel-Archiv kernel_4.0_cubie_sunxi_ss_1008MHz auf die Boot-Partition entpackt werden. Nun muss man sich für eine der Boot-Optionen entscheiden. Ich habe vier Optionen vorbereitet:

  • boot_mmc_hdmi.src
  • boot_mmc_vga.scr
  • boot_sata_part2_hdmi.scr
  • boot_sata_part2_vga.scr

Ich selbst verwende die boot_sata_part2_vga.scr-Version. Die entsprechende *.scr-Datei muss nun in boot.scr umgenannt werden um vom Bootloader gefunden zu werden. Anschließend kann der Bootloader installiert werden:

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

Bei der Benutzung eines PCs zum Erstellen der SD-Karte auch hier wieder den korrekten Namen der SD-Karte angeben – wichtig! hier muss dann z.B. /dev/sdd stehen und nicht eine der Partitionen. Der Bootloader wird direkt hinter die Partitionstabelle geschrieben. Damit ist die Boot-Partition der SD-Karte fertig eingerichtet.

3. Root-Dateisystem entpacken

Nun kann die Stage-3-Tarball-Datei ausgepackt werden. Hierbei muss darauf geachtet werden, dass die Datei unter Beibehaltung der Dateirechte entpackt wird. Dies geschieht via:


tar vxjpf stage3-armv7a_hardfp-20141023.tar.bz2

im Wurzelverzeichnis der jeweiligen Root-Partition. Also hier Partition 2 auf der SD-Karte oder der SATA-Festplatte.

4. Root-Passwort setzen

Vor dem ersten Start sollte man nicht vergessen, das Root-Passwort zu setzen. Dies geschieht in der Datei etc/shadow. Achtung, bitte darauf achten, nicht die shadow-Datei des aktuell laufenden Systems zu ändern 😉 Das Standardpasswort „admin“ kann man setzen, indem man die schon vorhandene Zeile für root mit dieser ersetzt:

root:$6$U6.oL2DZ$Kl0Koaq/r/BzbT9edZSDWQXqMgbatx7fMn0xPTUAyqm.OrqKIGN59kH40snsS.09lNmrSXKoiKpFCrJjITDUH.::0:::::

4. Neustart

Nun kann das System gestartet werden. Damit die Module des Kernels via „modprobe“ gefunden werden können, müssen einmalig die Modulabhängigkeiten erzeugt werden. dies geschieht via „depmod -a“.

Viel Spaß mit dem Gentoo-System! Für die weitere Einrichtung des Systems kann man gerne das sehr umfangreiche Gentoo-Handbuch oder das WIKI des Gentoo-Projektes zu Rate ziehen.

Update: Das bereitgestellte Kernel-Archiv wurde auf die Release-Version des Kernel 4.0 aktualisiert. Es enthält einen Patch um die 1008MHz-Taktrate wiederherzustellen und Unterstützung für das SUNXI-Security-System, den Crypto-Beschleuniger des Cubietruck.

Über die Vorzüge des Crypto-Beschleunigers habe ich hier berichtet.

Update 2: Die von mir bereitgestellten Kernels habe ich nun auf eine eigene, permanente Seite ausgelagert. Sie befindet sich hier.