Designed in China - Lemote Yeeloong & Loongson-2f RISC

"Kleine Computer" und alles, was dazu gehört...

Moderator: Rio71

Post Reply
GrandAdmiralThrawn
Mutter von Admin
Posts: 393
Joined: 01.03.2002 - 02:00
Location: Bruck, AT
Contact:

Designed in China - Lemote Yeeloong & Loongson-2f RISC

Post by GrandAdmiralThrawn »

Grüß euch!

Hier ein Projekt von mir, der zynische Aufmacher zeigt an, wo's langgehen wird, nämlich runter in den verdreckten Open Source Sumpf:

Image

Durch einen ehemaligen Mitarbeiter von uns hat sich mir letztes Jahr die Möglichkeit geboten, nach China, sowie Hong Kong und Macau zu reisen, und da mir die Idee gefallen hat, gab's ein wenig Abenteuerurlaub in Asien (war eh noch nie zuvor dort).

Das war rundum eine die Augen öffnende Erfahrung, soviel kann ich euch sagen. Und ein Stück des dort bröckelnden Kommunismus habe ich euch mitgebracht.

Nun, lange Rede, kurzer Sinn: Ich hatte vorher schon von der chinesischen CPU-Eigenentwicklung die man bei uns oft "Dragon" nennt gehört, dachte mir aber nicht, daß bereits Systeme am Markt existieren würden. In China ist das aber der Fall!

Nun der irrwitzige Zufall: Mein Kollege wurde von einer alten Freundin eingeladen, einen Talk an der Beijing University of Technology zu halten, zufällig an genau DEM Institut welches auch die Loongson/Dragon CPU (mit)entwickelt hat (Beijing = Peking). Die hatten auch eine kleine Demomaschine zum rumspielen dort. Das war für mich Anreiz genug, unbedingt so ein exotisches Teil haben zu müssen, also ein Lemote Yeeloong 8089b, welches in China von Quanta Computer gebaut wird. :)

Hier die HW Specs, soweit ich's grade im Kopf hab, habe die Maschine nämlich grad ned bei mir:
  • Loongson 2F 797MHz (MIPS-III 64-Bit, Little Endian Byteorder)
  • SiliconMotion SM712 LynxEM4+ GPU
  • AMD Geode CS5535 Soundchip
  • 1GB DDR-II/667
  • 160GB 5400rpm Toshiba SATA HDD
  • NEC USB 2.0 Controller
  • 100MBit LAN (RTL8139)
  • 54MBit 802.11g WLAN (RTL8187B, intern an USB)
  • Kartenleser (an USB), Webcam (intern an USB)
Auch hat das Ding kein BIOS oder UEFI, da selbige immer aus x86 oder im UEFI Fall maximal noch IA64 Maschinencode bestehen. Als Ersatz kommt eine Firmware inkl. Shell namens PMON2000 zum Einsatz. PMON2000 ist dazu in der Lage, direkt von EXT2/EXT3 Dateisystemen zu lesen, und von einem eben solchen auch ELF Code auszuführen, also z.B. einen GRUB Bootloader, oder direkt einen Linux Kernel zu starten. Alternativ gibt es auch noch die Möglichkeit von einer "boot.cfg" im Dateisystemroot zu booten, welche dann den zu startenden Binärcode spezifiziert (z.B. Kernel und initrd).

Weiters ist ein TFTP Client mit in die Firmware eingebaut, ebenso wie ein passender Treiber für den Realtek Ethernetchip usw.

Grundidee der Maschine ist es, nur quelloffene Systeme zu verwenden, die ganze Box sollte also Open Source sein. Daher wurden nur Hardwarehersteller ausgewählt, die auch selbst ihre Treiber als Quellcode veröffentlichen.

Hier Mal ein Foto der Box, ist quasi ein Netbook, man klicke zum vergrößern, was auch für folgende Bilder gilt:

Image

Nun, da meine Mandarin Skills eher nicht vorhanden sind, habe ich die Maschine aus Versehen "recovert". Da ich einfach irgendwelche Knöpfe in irgendwelchen Menüs der Firmware gedrückt habe, hatte ich am Ende kein lauffähiges Betriebssystem mehr (keine Ahnung was ich da wieder erwischt habe).

Najo, das vorinstallierte Kinder-Debian4 mit der billig WinXP nachempfundenen GUI und großen Knubbelbuttons für "eMail" und "QQ" (eine Art ICQ in China) am Desktop war sowieso ein Scheißdreck³. Außerdem war auch da alles Mandarin. Also auf ins Abenteuer, da ein ordentliches OS draufzubekommen. Die Wahl fiel auf ein modernes Debian Wheezy/sid, da es die MIPS Little Endian Architektur unterstützt, und man gehackte und modifizierte Kernel bekommt, die so gepatched sind, daß sie auf der buggy Loongson-2f CPU lauffähig sind ohne zu crashen.

So sieht das Ding beim "POST" aus, durch Druck einer Taste gelangt man auf die Firmwareshell, wo man alles in Form von Textkommandos erledigt, so wie etwa die Bootsequenz zu definieren:

Image

Anhand [dieser Anleitung] bin ich Mal zu Werke gegangen, und habe versucht, Debian mittels boot.cfg+Netinstaller von USB Stick und mit aktivem Ethernet zu installieren. Das funktioniert sogar einigermaßen, wenngleich es auch nur zu einem absoluten Basissystem führt, Debian Wheezy/sid ist eben einfach noch nicht so gut für Loongson-2f vorbereitet, wie etwa Gnewsense.

Immerhin lädt er den für Loongson-2f gepatchten Kernel, womit die Kiste überhaupt Mal hochfährt, hier der durch PMON2000+boot.cfg chainloaded GRUB (ich lade GRUB, weil das direkte starten des Kernels aus boot.cfg unflexibel und unendlich langsam ist. GRUB startet den Kernel 10 Mal so schnell wie PMON2000 selbst). Es geht übrigens nichts über einen passenden Hostnamen ;) :

Image
Image
Image

Was fehlt nun? Der X11 ist nicht passend vorbereitet, und der X.org Treiber für den SiliconMotion LynxEM4+ bzw. LynxEM+ fehlt. Dazu gibt es aber ein in China befindliches apt Package Repository, und zwar bei [Anheng]. Dieses bietet einige für Loongson-2f optimierte Pakete, darunter auch den Grafiktreiber, und Loongson-SIMD beschleunigte ffmpeg/libav Libraries etc. Wir tragen das Repository also ein:

Code: Select all

echo deb http://www.anheng.com.cn/loongson2f/wheezy/ ./ >> /etc/apt/sources.list
Dann noch /etc/apt/preferences.d/anheng anlegen und konfigurieren:

Code: Select all

Package: *
Pin: release o=Debian
Pin-Priority: 1
 
Package: *
Pin: origin www.anheng.com.cn
Pin-Priority: 2000
Jetzt genügt es, apt-get update laufen zu lassen, um einmal die Metadaten zu holen, und dann apt-get upgrade, um alle bestehenden Pakete mit jenen von Anheng zu überschreiben bzw. durch diese zu ersetzen.

Das allein reicht aber nicht, es ist noch die Autodetection des X11 Servers kaputt, diese funktioniert nicht für die vorliegende Hardware, ob es nun am SM712 LynxEM4+ oder am Display liegt ist unklar. Fakt ist, es bricht. Zeit für eine manuelle Konfiguration, dabei tragen wir auch gleich den Blueshift-Fix für Video Overlays mit ein, um gleich von vorn herein den bekannten Blaustichbug vom LynxEM+ in Videooverlays loszuwerden, das ist die Option Videokey, die Auflösung fixieren wir auf native 1024x600.

/etc/X11/xorg.conf:

Code: Select all

Section "Device"
	Identifier	"Card0"
	Driver		"siliconmotion"
	Chipset		"lynxem+"
	Option		"HWCursor"	"true"
	Option		"Videokey"	"45000" # (counter blue-shift!)
	Option		"UseBIOS"	"false"
	Option		"PanelSize"	"1024x600"
	Option		"AccelMethod"	"XAA"
	Option		"PciBurst"	"true"
	Option		"PciRetry"	"true"
	Option		"FifoAggressive"
EndSection

Section "Screen"
	Identifier	"Screen0"
	Device		"Card0"
	Monitor		"Monitor0"
	DefaultDepth	16
	SubSection "Display"
		Virtual	1024	600
		Depth	16
	EndSubSection
EndSection
Dann, endlich:

Image

Yay!! X11! Endlich befinden wir uns also auf der bestialisch ruckelnden grafischen Oberfläche. Jedes Android Handy ist schneller, selbst wenn man dort Debian nur drauf-chrooten kann.

Leider befindet sich im X11 noch ein fieser Bug, den ich wochenlang habe jagen müssen. Die meisten grafischen Applikationen (gnome-shell, Firefox, Thunderbird und viele mehr) starten einfach nicht, sondern werden vom Kernel mit SIGHUP terminiert.

Grund ist - wie ich nach viel Nachforschungen habe herausfinden können - ein misaligned Memory Access. Jeder Speicherzugriff dieser Architektur, egal ob lesend oder schreibend muß zwingend an 8-Byte Boundaries aligned sein. Bei x86/x86_64 verzeiht die Architektur misaligned Speicherzugriffe und wird nur lahm dadurch. Auf dieser CPU allerdings löst das einen schweren Fehler aus, und der Kernel muß die Applikation töten, das gschieht durch Senden des SIGHUP Signals.

Verdammte sch... noch Mal. Aber zum Glück hat ein findiger Hacker ein ähnliches Problem bereits gelöst, und einen Fix submitted (der leider von X.org noch nicht eingepflegt wurde). Der fehlerhafte Code sitzt in einer Library des X11 Servers selbst, und zwar libxi6.so. Die meisten grafischen Tools sind gegen diese Library linked. Die Lib löst dann den fehlerhaften Speicherzugriff aus, die Applikation stirbt.

Wir laden also den Quellcode der Library herunter; apt-get source libxi6, und übersetzten sie selbst neu, nachdem wir im C-Code den Fix eingepflegt haben:

Code: Select all

Index: libxi-1.4.3/src/XExtInt.c
===================================================================
--- libxi-1.4.3.orig/src/XExtInt.c	2011-08-07 02:46:36.164701285 +0200
+++ libxi-1.4.3/src/XExtInt.c	2011-08-07 02:37:50.808340152 +0200
@@ -1435,7 +1435,7 @@
                 break;
         }
 
-        len += l;
+        len = ((len + 7) & -8) + l;
         ptr_wire += any_wire->length * 4;
     }
 
@@ -1467,6 +1467,7 @@
 
     for (i = 0; i <nclasses> /sys/class/hwmon/hwmon0/pwm1_enable
Lüfterlevel setzen:

Code: Select all

echo 3 > /sys/class/hwmon/hwmon0/pwm1
Levels:
  • 0 = 0rpm / deaktiviert
  • 1 = 4100rpm
  • 2 = 4500rpm
  • 3 = 5000rpm
Man sollte nur darauf achtgeben, die manuelle Steuerung wieder zu deaktivieren, bevor man in Hibernate geht, da der Level beim Wiedererwecken automatisch auf 0 gesetzt, der Lüfter also ausgeschaltet wird!!

Aus vorm Hibernate (könnte man sich auch skripten):

Code: Select all

echo 0 > /sys/class/hwmon/hwmon0/pwm1_enable
Witzig ist übrigens auch DosBox. Auf x86 wird der Code ja größtenteils einfach durchgereicht, aber auf MIPS muß der komplette x86 Code emuliert werden. Dennoch funktioniert das, hier sehen wir Master of Orion 2 in DosBox auf einem chinesischen RISC Prozessor! Sogar der Sound geht, nur leider alles unfaßbar und unerträglich lahm:

Image

Die Langsamkeit der x86 Emulation ist beispiellos (für Loongson-3 hat man ja an der Optimierung von x86 Virtualisierungsoptionen gearbeitet). Obwohl auch DosBox hier sehr aggressiv von Quellcode neu gebaut wurde..

So, jetzt gäb's noch einiges mehr zu erzählen, z.B. wie man die Webcam auf 640x480 flüssig bekommt, wie man das WLAN ordentlich verwenden kann (von Konsole natürlich), oder wie man ein Nokia Telefon an USB als Internetmodem verwendet... Aber bevor ich dazu weitere Ausführungen schildere, lasse ich das jetzt Mal so stehen, zum Abschied mit einem passenden Desktophintergrund (wer das Logo identifizieren UND lesen kann, verdient mein Lob!):

Image

Das ganze (inkl. einiger weitere Source Code Fixes und Softwareinstallationen, Konfigurationen usw.) hat übrigens mehrere Wochen Zeit in Anspruch genommen. Im Rahmen des Projektes habe ich auch gleich Mal einiges über Debian gelernt, was nun ein Favoritenlinux für mich ist, hab's auch schon auf einem PPC G5 Quad installiert.

No RISC, no fun! :D
Image
[GAT @ XIN weblog] | [Zenit/XIN.AT Homeserverprojekt] | [IBM PC Server 704]]!
Mainsys: Xeon X5690 on P6T Deluxe, 48GB Crucial DDR-III/1066, GTX Titan Black, Areca ARC-1883ix.12 with 12 × 6TB 7K6000 HDDs in RAID-6, Intel 320 600GB SSD, Auzentech X-Fi Prelude 7.1, NEC EA304WMi 30", IBM Model M Keyboard, EpicGear AnurA driverless/pure HID Mouse.
User avatar
der_archivar
Site Admin
Posts: 7088
Joined: 01.03.2002 - 02:00
Location: Hildesheim
Contact:

Post by der_archivar »

Danke ! Solche Beiträge würzen die mittlerweile recht ausgedünnte Tualatin-Suppe kräftig. :tualatin:
GrandAdmiralThrawn
Mutter von Admin
Posts: 393
Joined: 01.03.2002 - 02:00
Location: Bruck, AT
Contact:

Post by GrandAdmiralThrawn »

Verwendbar ist das Book fürs moderne Internet übrigens nur teilweise. Da die CPU kein x86 ist, muß man auf Adobe Flash verzichten. Gnash geht zwar, ist aber als Browserplugin.... sehr verzichtbar. Nicht nur wegen der indiskutablen Leistung, sondern auch der quasi kaum gegebenen Kompatibilität. YouTube? Eher nicht. Außer man grabbed das flv, saugts runter und spielt es mit mplayer und Codecs ab, die für die SIMD Einheit der Loongson CPU optimiert/patched wurden (=offizielle Assemblercodepfade für Loongson existieren noch nicht, weder in ffmpeg noch libav).

Ich hab mir aber X-Chat installiert für IRC (inkl. einem von mir im C Code modifizierten Sysinfo Plugin) und licq kompiliert für.. najo, ICQ eben. Das ist brauchbar. Skype hingegen nicht, denn es gibt keine Linux Version für irgendwas außer x86. Und es is Closed Source, daher ausgeschlossen.

Für's Webbrowsing muß man halt auf Flash verzichten. Auch Java ist eher unbrauchbar, obwohl mit OpenJDK + IcedTea Plugin zu lösen. Die Leistung von Applets ist mies, wenngleich auch 10 Mal besser als Flash.

Auch komplexe Javascripts (Ajax..) sind eher hinderlich. Scrollen auf Webseiten ruckelt etwas usw.. Auch komplexere Programme ruckeln wegen der GUI. Ich denke das liegt auch zu großen Teilen am LynxEM+ Grafiktreiber, der einfach grottenschlecht sein soll.

Leider hab ich es zwar geschafft, den Javascript Machinecode Compiler vom Chrome Browser am System zu kompilieren (inkl. dessen experimentellen MIPSEL Targets), leider aber bin ich daran gescheitert den dazupassenden Browser zu bauen. Muß ich warten bis es ein Maintainer vom Wheezy schafft..

Also im Prinzip läßt sich einiges machen, aber alles, was über die Leistung von einem Pentium III + scheissiger Graka hinausgeht, ist auch für den Loongson bzw. das Yeeloong Book nicht machbar. Das triffts ziemlich gut. Weil grandmasterw [hier] wissen wollte, wozu man's benutzen kann. ;)
Image
[GAT @ XIN weblog] | [Zenit/XIN.AT Homeserverprojekt] | [IBM PC Server 704]]!
Mainsys: Xeon X5690 on P6T Deluxe, 48GB Crucial DDR-III/1066, GTX Titan Black, Areca ARC-1883ix.12 with 12 × 6TB 7K6000 HDDs in RAID-6, Intel 320 600GB SSD, Auzentech X-Fi Prelude 7.1, NEC EA304WMi 30", IBM Model M Keyboard, EpicGear AnurA driverless/pure HID Mouse.
grandmasterw
Secontighty Master
Posts: 9220
Joined: 01.07.2002 - 02:00
Location: Wien Heatsink

Post by grandmasterw »

danke für die zünftige review. wollt mir auch mal so ein ding holen, habs aber dann gelassen. weisst du, ob das noch weiterentwickelt wird?
Aktueller Fotowettbewerb: Thema: Frühling :: Einsendeschluss: 21.6.2008 ::
Bist du ein Siegertyp? Finds raus! :: Team Tualatin
GrandAdmiralThrawn
Mutter von Admin
Posts: 393
Joined: 01.03.2002 - 02:00
Location: Bruck, AT
Contact:

Post by GrandAdmiralThrawn »

Meinen Informationen aus China zufolge ja. In den nächsten Lemotes kommt dann der verbesserte Loongson-3 zum Einsatz, den gibts am HTPC/Settop und am mobilen Markt dann auch in einer Multicore-Ausführung (Dual und Quad), im Server/HPC Bereich von China auch als 8-Kerner.

Noch sind die Produkte von Lemote am Retailmarkt aber nicht verfügbar, soweit ich weiß. Die Lemote Webseite weist zumindest noch keine entsprechenden Books aus.

Es gibt aber scheinbar [das hier] auf Basis von Loongson-3. Wenn's Lemote sein soll, muß man wohl noch etwas warten.

Edit: AH nein, das is eh von Lemote! [Siehe hier]!
Image
[GAT @ XIN weblog] | [Zenit/XIN.AT Homeserverprojekt] | [IBM PC Server 704]]!
Mainsys: Xeon X5690 on P6T Deluxe, 48GB Crucial DDR-III/1066, GTX Titan Black, Areca ARC-1883ix.12 with 12 × 6TB 7K6000 HDDs in RAID-6, Intel 320 600GB SSD, Auzentech X-Fi Prelude 7.1, NEC EA304WMi 30", IBM Model M Keyboard, EpicGear AnurA driverless/pure HID Mouse.
User avatar
Schrank21
512 kb - Superbrain
Posts: 2358
Joined: 21.12.2002 - 20:40
Location: Berlin
Contact:

Post by Schrank21 »

Wie ist denn die Akkulaufzeit von dem Gerät?

Hmmm, komplett offen, und dann aus China? Gab es da nicht diverse Ängste mit Backdoors?
Gut, von westlichen Herstellern ist das gleiche zu erwarten, aber da kriegen Militärs wenigstens Zugang zu den Backdoors. ;-)

Überhaupt könnte es noch interessant werden. Gab es nicht vor kurzem auch die Idee seitens China, sich in eine Prozessorarchitektur einzukaufen und die selber weiterzuentwickeln? Wenn dann da potente ARMs oder PowerPCs rauskämen, könnte man noch mehr Geräte dieser Art, evtl. sogar in brauchbar erleben.

Aber auf jeden Fall ein interessantes Projekt.
Nachdem Lenovo auch ihre letzten Notebooks auf komische Tastaturen umgestellt hat, werde ich beim nächsten Notebookkauf wohl doch mal nach Ostasien rüberschielen müssen.
Leider stimmt bei "interessanter" Hardware meist dann doch der Rest der Haptik nicht, und ich jedenfalls komme dann nie mit den verbauten Tastaturen, oder anderen Kleinigkeiten klar, sodass es dann doch danach wieder ein gebrauchtes altes Notebook wird.
Gigabyte GA-73PVM-S2H || Pentium Q6600 2,4GHz || Sapphire Radeon HD4350 || Intel Pro/1000g || 2x2048MB DDR2-6400 || Seasonic S12II-330W || Slackware 14.1
Apple Macbook Air || i5-5250U || 8Gig || 128GB SSD || 11" WXGA || Mac OSX 10.10
Sun Netra T1 AC200 || UltraSPARC-IIe 500Mhz || 1Gig || 2x18,6GB SCA || 6xFast Ethernet || NetBSD 6.1.5
GrandAdmiralThrawn
Mutter von Admin
Posts: 393
Joined: 01.03.2002 - 02:00
Location: Bruck, AT
Contact:

Post by GrandAdmiralThrawn »

Najo, die Lemotes sind wenigstens von Quanta Computer gebaut, also ganz brauchbar, die Tastatur ist natürlich nicht von alter Thinkpad Qualität, das ist klar.

Akkulaufzeit mit dem 3-Zeller sind ca. 3 Stunden.

Und es wurde sehr viel Wert auf die Verwendung eines quelloffenen Systems gelegt, ein Großteil der Designarbeit stammt ja von der University of Technology in Beijing, und die meisten Leute dort an der Uni haben schon eine etwas andere Einstellung, als der Regierungsapparat. Letzten Endes kannst du ja so wie ich ein Betriebssystem deines Vertrauens einsetzen, wenn du die (ohnehin unbrauchbare) "Loonux" Installation nicht willst.

Die Plattform wird ja sehr stark vom Linux-Libre Projekt gestützt (Richard Stallman läßt grüßen), was zeigt, daß es mit der Offenheit des Systems wohl stimmen muß, weil sonst schlägt sich keiner von den GNU Nazis auf die Seite eines solchen Systems. Eine der Paradedistros für die Box ist ja GNewSense Linux, welches auch von Stallman verwendet wird (pures GNU, keine binary blobs oder nonfree Packages). Ich verwende ja selber einen GNewSense Kernel aus dem Linux Libre Projekt, und der läuft wirklich am besten auf der Kiste, auch wenn das OS drumherum ein Debian ist. Das zeigt, das die Gerätetreiber wirklich allesamt GPL'ed und offen sind. Sonst wärns da nicht drin.

Und ARM is eh einen Dreck besser als dieser kleine MIPSEL, von daher ist ein Quadcore Loongson-3A sicher auch nicht schlechter als ein ARM Cortex mit selber Kernanzahl und selbem Takt (bis auf den verbreiteteren Support von ARM NEON SIMD vielleicht).
Image
[GAT @ XIN weblog] | [Zenit/XIN.AT Homeserverprojekt] | [IBM PC Server 704]]!
Mainsys: Xeon X5690 on P6T Deluxe, 48GB Crucial DDR-III/1066, GTX Titan Black, Areca ARC-1883ix.12 with 12 × 6TB 7K6000 HDDs in RAID-6, Intel 320 600GB SSD, Auzentech X-Fi Prelude 7.1, NEC EA304WMi 30", IBM Model M Keyboard, EpicGear AnurA driverless/pure HID Mouse.
Post Reply