Hinweis: Da sich Deep Links auf Websites ständig ändern, habe ich im Artikel weitgehend auf Links verzichtet. Mit den im Text genannten Informationen kommt man z.B. per Google Suche in der Regel schnell zum gewünschten Ziel
Der erste Entwurf zu diesem Leseartikel entstand schon im Januar dieses Jahres, damals noch mit Focus auf das angepasste Debian Linux von StarFive. Auch wenn das System damit funktioniert und man auch einen grafischen Desktop bekommt, war es doch in Summe eher enttäuschend: Das StarFive Image basiert auf einem Debian „Snapshot" aus dem September 2024, einem angepassten Kernel und „handgebauten" Versionen von z.B. Chromium und Firefox. Schön als Proof-of-concept, aber ein System ohne regelmäßige Updates ist nicht produktiv einsetzbar.
Meine ursprüngliche Idee zur Lösung dieses Problems war den StarFive Kernel mit einem Standard Debian Userland zu kombinieren, doch dann fand ich heraus, dass der Debian Kernel seit 6.11 das VisionFive 2 Board direkt unterstützt, zwar leider noch ohne GPU-Unterstützung, aber mit Ethernet, PCIe, USB, und allen anderen notwendigen Dingen um einen "headless" Betrieb zu ermöglichen. Diese Unterstützung ist auch in Debian Trixie eingeflossen, sodass seit kurzen Debian direkt das VisionFive 2 Board unterstützt.
Damit sollte eine Installation eines Standard Debian Systems möglich sein, die fehlende GPU-Unterstützung ist verschmerzbar, da der SoC für ein Desktop System sowieso zu langsam ist.
Nun ist es leider trotzdem nicht so, dass man wie auf einem PC, einfach ein Boot Medium mit einem Debian ISO bestückt. Es ist etwas Handarbeit notwendig, um mit Hilfe von mmdebstrab und diversen anderen Tools ein Linux Image zu erstellen.
Aber man muss weder Kernel, Anwendungen oder Treiber selbst kompilieren.
Bevor ich im zweiten Teil des Artikels detaillierter auf die Installation des Standard-Debian eingehe, möchte ich zunächst meine Motivation für dieses Projekt erläutern und einen Überblick über die Hardware sowie das StarFive Debian Image geben.
Ich interessiere mich schon seit ein paar Jahren für RISC-V, hauptsächlich, weil ich mich für Prozessorarchitektur interessiere und im RISC-V Ökosystem einige Open Source Implementierungen gibt, die man sich dadurch im Detail ansehen kann. So sind etwa im neuen RP2350 Mikrocontroller des Raspberry Pico 2 zwei Open Source RISC-V Kerne (https://github.com/Wren6991/Hazard3) zusätzlich zu den ARM Cortex-M33 eingebaut.
Es gibt auch einige Designs die für den Einsatz in FPGAs (SoftCores) optimiert sind. Die meisten dieser Cores sind einfach gehalten und mit Mikrocontrollern wie etwa ARM Cortex-M Kernen vergleichbar. Manche Cores lassen sich mit einer MMU konfigurieren und werden dann grundsätzlich Linux tauglich.
Auch wenn ich mich für RISC-V als Architektur interessiere, war mein Interesse für Linux taugliche Computer auf RISC-V Basis bisher eher gering, denn am Ende ist ein Linux auf RISC-V auch nur ein Linux.
Auslöser für mein Linux Interesse war eine E-Mail von SiFive über die Preissenkung des HiFive Premier P550 Boards auf USD 399. Obwohl immer noch teuer im Vergleich zu etwa Intel N100 Boards, ist es nun halbwegs bezahlbar. Ich war versucht, es zu bestellen, doch es gab viele Fragezeichen: Kompatibilitätsprobleme mit ATX-Netzteilen, das ungünstige Mini-DTX-Format und die unklare Softwareunterstützung, insbesondere für die GPU.
Die Probleme mit der Software kennt man schon von anderen RISC-V basierten Computern, und speziell SiFive hat sich auch bei anderer Hardware (ich habe z.B. das HiFive Rev1 und Rev2 Board) nicht durch gute Unterstützung seiner Evaluierungsboards hervorgetan.
Ich war aber auf den Geschmack gekommen, und entschied mich kurzfristig ein VisionFive2 Board von StarFive zu kaufen. Seit Ende 2022 auf dem Markt, wurde es sowohl hardware- als auch softwareseitig verbessert. Über Amazon ist es über verschiedene Händler ab 89 EUR erhältlich, man sollte aber darauf achten die Version 1.3B zu bekommen.
Ich habe ein Kit von „WayponDEV" für 134,95 EUR erworben, das neben der Version mit 8GB RAM auch ein Gehäuse, einen USB-to-Serial sowie einen USB WLAN Adapter enthält. Der USB-to-Serial Adapter ist notwendig für die Kommunikation mit der U-Boot Firmware des Boards, und eine Vorrausetzung wenn man eigene Boot Images für das VissionFive 2 bauen möchte, denn nur so lassen sich Fehlermeldungen früh im Bootvorgang sehen.
Unboxing und Hardware
Die Lieferung kommt in einem recht kompakten Karton, und enthält das originalverpackte VsionFive2, das Gehäuse und Zubehör. Das Gehäuse besitzt einen „Stempel" aus Aluminium der die Wärme des SoC aufnimmt und ableitet, dazu ist dem Gehäuse auch ein Wärmeleitpad beigelegt.Das VisionFive2 basiert auf dem JH-7110 SoC von StarFive, der 4 SiFive U74 RISC-V Kerne mit 1,5 Ghz und eine Imagination BXE-4-32 GPU beherbergt. Der SoC verfügt über zwei Gigabit Ethernet Macs, zwei PCIe 2.0 Lanes sowie Schnittstellen für QSPI, eMMC, HDMI und weitere Funktionen. Details kann man dem im Datenblatt auf der StarFive Website entnehmen.
Das Board ergänzt den SoC mit wahlweise 4 oder 8GB LPDDR4 RAM, zwei Gigabit Ethernet Ports, 4 USB 3.0 Ports, einen M.2 2280 Slot für eine SSD (auf der Rückseite), einem HDMI-Port, einem SD-Card Slot, und MIPI CSI und DSI Interfaces für den Anschluss von Kameras und Displays.
Die Stromversorgung des Boards geschieht über eine USB-C Buchse, das Datenblatt spezifiziert, dass dabei USB Power Delivery unterstützt wird, und das Board Powerprofile bis 20V unterstützt. Und in der Tat, bei meinem 20W Netzteil hat das Board das 12V Profil ausgewählt
Die maximale Stromaufnahme, die ich im Test gesehen habe, lag mit einer zusätzlichen NVMe SSD bei 0,6A, bei 12V ergibt das 7,2W. Vermutlich werden die Lastspitzen höher sein, mein USB-C Messgerät ist nicht besonders schnell. Für die Umwandlung nach 5V ist ein EVNB679 Buck Converter verantwortlich, der ausgangsseitig für 8A spezifiziert ist, die Stromversorgung ist damit ordentlich überdimensioniert, sodass man auch problemlos etwa externe Festplatten oder SSDs an die USB-Schnittstellen des Boards anschließen kann. Die Implementierung von standardkonformen USB-PD hat das VisionFive vielen anderen SBC wie dem Raspberry Pi 5 voraus, es wäre schön, so etwas öfter zu sehen.
VisionFive 2 -- „Out-of-the-box" Experience
Wie gesagt, bietet StarFive für das VisionFive2 ein angepasstes Debian GNU/Linux an, das eine gute Unterstützung der Hardware gewährleistet. So wird ein grafischer Desktop mit der integrierten GPU unterstützt. Man kann also ganz einfach eine Maus und Tastatur an die USB-Ports anschließen, einen Bildschirm an den HDMI-Port, sowie eine SD Karte mit dem StarFive Debian in den zugehörigen Slot stecken.Aber der Reihe nach:
Wie bei vielen anderen SBC auch, benötigt man für den Linux Boot eine SD-Karte mit einem entsprechenden Image. Ein angepasstes Debian kann man sich bei StarFive herunterladen, die gerade neuste Version ist vom September 2024.
Man fängt am besten mit dem SD-Image an, dass man entweder unter Windows mit dem Balena Etcher oder unter Linux klassisch per dd Kommando auf eine SD-Karte kopiert. Das Image ist nur 1GB groß, beim ersten Boot wird das Filesystem automatisch auf die Größe der SD-Karte angepasst.
Wer nun den Start des Linux Systems von Anfang an verfolgen möchte, sollte den USB-to-serial Adapter an das VisionFive2 anschließen und den Startvorgang mit einem Terminalprogramm verfolgen. Man kann aber auch einfach hoffen, dass es so problemlos geht wie bei mir (das hängt vermutlich davon ab, mit welcher Firmware das Board geliefert wird), dann reicht Maus, Tastatur und Monitor.
Vor dem Booten sollte man die Stellung der beiden DIP-Schalter für den Boot-Modus prüfen. Achtung: Die Schalter definieren, von wo die U-Boot Firmware geladen wird. Daher müssen sie in Stellung „Flash" stehen, dann wird die Firmware aus dem internen SPI-Flash des Boards geladen. U-Boot schaut dann selber auf der SD-Karte oder einer installieren NVMe SSD nach, ob es dort einen Linux Kernel booten kann.
Wenn alles gut geht, bekommt man einen Login Bildschirm und kann sich mit dem Default User (siehe Release Notes/Quick start guide) anmelden. Man hat verschiedene Desktops zur Auswahl, wahlweise mit XOrg oder mit Wayland. Vorab: Unter XOrg mit Gnome läuft das System sehr langsam, da die GPU-Treiber wohl nur unter Wayland funktionieren. Also bitte einfach gar nicht probieren.
Der Login dauert ein paar Sekunden, deutlich länger als man es von Desktop PCs gewohnt ist. Die Bedienung erfordert ebenfalls Geduld, für einen leistungshungrigen Desktop wie GNOME ist der SoC dann doch zu schwach. Besonders der Default Mode von GNOME 40 mit dem App Grid ist nicht wirklich gut zu bedienen, daher schaltet man besser auf „Gnome Classic um.
Die folgenden Screenshots sind im Classic Mode entstanden.
Dabei ist Screen Rendering nicht das Problem, das Verschieben von Fenstern geht zum Beispiel flüssig, auch Menüs, etc. erscheinen schnell, es sind einfach Latenzen, die überall entstehen. Das Laden von Programmen dauert recht lange, beim Tippen hängt die Tastatur gerne mal leicht hinterher.
Unabhängig davon, was man heutzutage am Computer macht, ist der Webbrowser in der Regel eine unverzichtbare Funktion. Das Debian Image liefert eine Version von Firefox und Chromium mit, daher war ich gespannt, wie es sich damit schlägt.
Besonders bei Firefox fällt auf, dass alle 4 CPU-Kerne ständig ausgelastet sind. Bei einer Seite wie Computerbase überfordern besonders die Werbebanner das System.
Mit Chromium zeigt sich ein ähnliches Bild, wirkt aber gefühlt etwas flüssiger. Immerhin bleibt das System in Summe reaktionsfähig, so konnte ich die beiden Screenshots problemlos mit dem integriertem Screenshot Tool des GNOME Desktops machen.
Youtube Videos werden endgültig zur Geduldsprobe. Mit 480p kann man immerhin ein halbwegs flüssiges Video bekommen:
Wie man sieht, sind die Framedrops bei ungefähr 10% der Frames. Immerhin gut funktioniert die Tonausgabe - bei mir über HDMI auf die integrierten Lautsprecher des Monitors. Trotz Ruckler im Video blieb der Ton flüssig und synchron mit dem Video.
Abgesehen von der Performance funktioniert das System ohne große Probleme, ich konnte z.B. über den Gnome File Manager direkt auf SMB-Shares meines NAS zugreifen.
Benchmarking
Auch wenn der subjektive Eindruck schon ausreichend ist, um zu merken, dass das VisionFive nicht wirklich als Desktop Rechner taugt, wollte ich doch ein paar Messungen durchführen.Die Auswahl an möglichen Benchmarks für das VisionFive ist begrenzt.
Letztendlich habe ich mich für zwei Benchmarks entschieden: JetStream 2 und Geekbench.
JetStream 2
JetStream 2 ist ein Browser-Benchmark, insofern kann er in jedem aktuellen Browser ausgeführt werden. Er fokussiert sich auf JavaScript und WebAssembly, und zielt damit auch genau auf einen Problempunkt des RISC-V Ökosystems: Die Anpassung von JIT (Just-In-Time) Compilern an die RISC-V ISA. Wenn noch kein JIT-Support vorhanden ist, wird der JavaScript Code nur interpretiert ausgeführt, was bei vielen modernen Websites massiv auf die Leistung drückt. Auch sind heute viele Anwendungen mit dem Electron Toolkitgeschrieben (z.B. Visual Studio Code, Teams, Discord, Zoom, usw.), daher ist JavaScript JIT Support essenziell. Firefox bleibt im tsf-wasm Test hängen, sodass es kein Ergebnis gibt. Mit Chrome ergibt sich ein Score von 13.745 Punkten:Zum Vergleich: Die schon ziemlich langsame chinesische Loongsoon CPU erreicht beim CB-Test (https://www.computerbase.de/artikel...ngson-cpu.90008/seite-2#abschnitt_jetstream_2 eonen Wert von 105.116, ein Snapdragon 850 von 2018 mit 4 Kernen 88.952. Mein M2 Macbook Air, an dem dieser Artikel entsteht, erreicht in Chrome 273.295 Punkte.
Ich habe leider keine JetStream Ergebnisse für die diversen Raspberry Modelle gefunden. Aber das magere Ergebnis des VisionFive deckt sich auch mit dem „Benutzererlebnis": für jegliches Web Browsing ist das VisionFive nicht geeignet !
Ob JIT Support bei Firefox oder Chromium aktiv ist, konnte ich leider nicht sicher herausfinden. Bei Chromium vermute ich, dass er aktiv ist, denn das ebenfalls verfügbare nodejs mit Googles V8 Engine unterstützt JIT - das habe ich anhand der entsprechenden Diagnose Optionen von nodejs herausfinden können, es wird tatsächlich RISC-V Maschinencode erzeugt.
Der zweite Benchmark ist Geekbench6, es gibt eine „experimentelle" Version für RISC-V die man sich herunterladen kann. Der Benchmark erfordert einiges an Geduld, das Ergebnis ist dann wie folgt:
Zum Vergleich: Ein Raspberry PI 4 hat einen Single Core Score von ca. 250 und Multi-Core um die 600 (die Ergebnisse im Multi-Core hängen beim Raspi 4 stark von der Kühlung ab).
Schaut man sich der Ergebnisse der Einzeltests an, sieht man sehr niedrige Ergebnisse in manchen Tests, wie „Object Detection" oder „Background Blur"
Hier macht sich das Fehlen von speziellen Befehlssatzerweiterungen für SIMD, Vector, etc. bemerkbar. Mittlerweile ist z.B. die Vector Extension Spezifikation ratifiziert, aber die U74 Kerne sind schon relativ alt und haben keinen entsprechenden Support.
Updates? -- Fehlanzeige
Aber selbst, wenn man die notwendige Geduld aufbringt: Es gibt für die beiden mitgelieferten Browser keine Updates, d.h. man ist auf veralteten Versionen festgenagelt, der Firefox beschwert sich auch deutlich.
Das Update Problem beschränkt sich nicht nur auf die Browser: Dadurch, dass StarFive sein angepasstes Debian auf Basis eines Snapshots vom 06.12.2023 aufgebaut ist, ist man von der regulären Update Versorgung durch Debian ausgeschlossen.
Insofern ist das StarFive Debian ein nettes „Proof-of-concept" aber nicht für einen produktiven Einsatz geeignet.
Das ist schade, denn als Mini-Server für diverse Aufhaben ist die Hardware des VisionFive 2 eigentlich sehr gut geeignet:
- Die zwei Gigabit Ethernet Interfaces ermöglichen den Einsatz als Router, Firewall, etc, meine Tests mit iperf3 ergaben, dass die Interfaces über 900Mbit/s erreichen
- Man kann das Board ohne extra Adapter mit einer NVMe SSD oder eMMC-Speicher ausstatten. Da von der SSD nur eine PCIe 2.0 Lane genutzt wird, ist die Geschwindigkeit zwar auf 400MB/sec beschränkt, aber das ist, z.B. für ein kleines NAS völlig ausreichend.
- Durch 8GB RAM sind auch komplexere Anwendungen kein Problem, sofern die Leistung der 4 U74 Cores reicht.
- Die stabile Stromversorgung mit USB-PD sollte auch einen stabilen Betrieb von USB-Geräten, wie Festplatten ermöglichen
Der Weg zum Mainline Debian
Mit Debian Trixie hat sich der RISC-V Support weiter verbessert, es gibt sogar ein Installer ISO. Nur basiert die ISO auf Grub, und zurzeit funktioniert Grub mit der Firmware des Boards nicht.Das VisionFive 2 nutzt, wie auch bei vielen ARM basierten Single Board Computer, U-boot als Bootloader, bootet also wie ein typisches Embedded System (dafür ist U-Boot primär gedacht)
Es gibt wohl auch Möglichkeiten mit diversen Tricks den Installer auf dem VisionFive laufen zu lassen, aber ich habe mich dafür entschieden, mittels mmdebtstrap ein SD-Image zu erzeugen https://wiki.debian.org/RISC-V#mmdebstrap.
Die genauen Schritte sind für einen Artikel etwas zu lang, ich habe unter https://github.com/bonfireprocessor/riscv_debian_install eine Sammlung von Skripten, die diesen Vorgang weitgehend automatisieren abgelegt. Es gibt auch ein ausführliches Readme, allerdings auf Englisch.
Hier nur eine grundsätzliche Beschreibung der Vorgehensweise:
Mit Hilfe von mmdebstrap wird ein Debian Root Filesystem aufgebaut, das geht auch Cross-Platform. Man kann also auf einem x86-64 oder ARM Linux ein RISC-V Debian generieren. Mmdebstrab nutzt „unter der Haube" die qemu RISC-V User-Mode Emulation.
Nachdem das Grundsystem erstellt ist, kann man ein Change-Root in dieses System machen und dort weitere Tools mit apt installieren. Man führt also ein RISC-V Linux User-Land aus. Meine Scripte nutzen mit systemd-nspawn eine etwas ausgefeiltere Variante von chroot, im Grunde wird damit ein emulierter RISC-V Container erzeugt.
Die Skripte führen den ganzen Prozess direkt auf einem per Linux loop Device eingebundenen Dateisystem Image aus.
Das erzeugte Image hat folgende Eigenschaften:
- Der Hostname ist fest auf starfive gesetzt (kann riscv64_setup.sh geändert werden)
- Es gibt einen Benutzer debian mit dem Passwort debian der auch zur sudo Gruppe gehört
- Network-Manager wird zur Verwaltung der Netzwerkschnittstellen verwendet
- SSH ist installiert und aktiviert
- Tools wie usbutils, htop, net-tools, smartmontools, Midnight Commander (mc), git sind installiert (eine vollständige Liste findet sich im Script riscv64_setup.sh`)
- libsensors und lm-sensors sind installiert, mit dem Befehl sensors kann die Temperatur der CPU und der NVMe SSD angezeigt werden
- Das System setzt beim Booten den CPU-Frequenz-Governor "schedutil", wodurch sich die CPU-Taktfrequenz dynamisch in den Stufen 375, 500, 750 und 1500 MHz anpasst -- dies hält die CPU kühler als der standardmäßig eingestellte "performance"`-Governor
- Es installiert en_US und de_DE als Sprachen.
Zum ersten Login nutzt man den User debian mit Password debian. Anstatt über die Konsole kann man sich auch mit ssh auf dem VisionFive 2 einloggen. Die dem Board zugewiesenen IPv4 und IPv6 Adressen schaut man am besten in seinem Router nach, bei einer Fritzbox als Router geht z.B. auch starfive.fritz.box.
Wenn alles funktioniert, kann man das Image auch auf eine NVMe SSD kopieren und hat ein Standard Debian, dass man regulär mit apt update/upgrade updaten kann.
Wer kein VisionFive 2 Board hat oder das Image vorab testen möchte, kann es auch in qemu ausprobieren (als vollständige System-Emulation), das Repo enthält auch ein fertiges Skript, um QEMU mit den richtigen Parametern zu starten.
qemu emuliert dabei aber kein VisionFive2 Board oder den JH-7110 SoC, sondern einen generischen RISC-V Computer auf Basis von virtio. Qemu eignet sich übrigens auch dafür, den typischen RISC-V Bootprozess aus OpenSBI und U-Boot zu verstehen:
.
Die Besonderheit von RISC-V CPUs ist der "Machine-Mode" in dem sie nach dem Reset starten. Der Betriebsystem Kernel (z.B Linux) läuft dann im Supervisor Mode, die Anwendungen im User Mode. Da der Kernel auf den Maschine-Mode keinen direkten Zugriff hat, gibt es eine API, genannt SBI, "Supervisor Binary Interface". Mit OpenSBI steht eine Open Source Implelemntierung des SBI zur Vefügung, die sowohl von QEMU als auch vom VisionFive2 benutzt wird. U-Boot läuft hingegen genau wie der Linux Kernel im Supervisor Mode.
Wenn QEMU das Image gestartet hat, erscheint ein Console Login Prompt, bei dem man sich mit User debian und passwort debian einloggen kann. Alternative kann man mit
Bash:
ssh debian@localhost -p 22222
Aber zurück zur VisionFive2 Hardware: Ausgehend von dem Basissystem kann man weitere Debian Pakete installieren. Ich habe unter andrem den LXDE Desktop und xrdp installiert. Das ist für ein SBC wie das VisionFive eigentlich sinnvoller, als eine lokale grafische Konsole. Auf diesem Weg lassen sich eben auch mal grafische Tools wie gparted, oder Editioren wie geany oder gedit benutzen, manchmal ist ein GUI ja doch komfortabler als die Kommandozeile.
Im GUI steht auch eine Firefox-esr zur Verfügung, der im Gegensatz zu dem StarFive Firefox aktuell gehalten wird, und sogar performanter läuft (wenn auch natürlich nicht gut...).
Auch der Zugriff auf ein NAS mit smb klappt über den Filemanager und die gfvs Tools "out-of-the-box".
Auch docker funktioniert auf dem VisionFive2, mittlerweile gibt es auch den einen oder anderen Docker Container schon als fertiges RISC-V Image, aber die Auswahl ist noch gering.
Schmerzlich für mich ist, dass Visual Studio Code RISC-V noch nicht als Remote Architektur unterstützt.
Ansonsten hat das VisionFive2 bei mir zwar noch keine echte "produktive" Rolle, aber es ist meine "always-on" Linux Computer, auf den ich mich z.B einlogge wenn ich unterwegs per Wireguard auf mein Netz zugreife und einen Shell-Prompt brauche. Außerdem läuft auf iperf3 dauerhaft im Servermodus, durch die gute Performance seiner GBit Ethernet Interfaces eignet sich das VisionFive2 für Messungen z.B. von WLAN Clients.
Es gibt mittlerweile ein paar SoCs und Boards die leistungsfähiger als der JH-7110 sind, aber einen wirklichen Durchbruch gibt es dabei nicht. Erschwerend kommt hinzu, dass sich die SoC Hersteller wirklich schwer tun, sich um "Upstreaming" ihrer Anpassungen in den Mainline Kernel zu kümmern. Auch die fast durchgehend in RISC-V SoCs eingesetzte Imagination GPU ist hier ein Problempunkt, den allerdings Imagination lösen müsste.
Ein weitere wichtiger Punkt für den Fortschritt von RISC-V ist die Verabschiedung des RVA23 Profils: https://riscv.org/ecosystem-news/2025/04/risc-v-rva23-a-major-milestone/
RVA23 macht Vector und Hypervisor Extensions verpflichtend, letztendlich beides essenzielle Erweiterungen um mit ARM konkurrieren zu können. Wahrscheinlich wird es nun noch weitere 2-3 Jahre dauern, bis entsprechende Chips auf dem Markt erscheinen.
Anhänge
Zuletzt bearbeitet: