Hier ein Projekt von mir, der zynische Aufmacher zeigt an, wo's langgehen wird, nämlich runter in den verdreckten Open Source Sumpf:
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)
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:
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:
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 :
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
Code: Select all
Package: *
Pin: release o=Debian
Pin-Priority: 1
Package: *
Pin: origin www.anheng.com.cn
Pin-Priority: 2000
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
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
Code: Select all
echo 3 > /sys/class/hwmon/hwmon0/pwm1
- 0 = 0rpm / deaktiviert
- 1 = 4100rpm
- 2 = 4500rpm
- 3 = 5000rpm
Aus vorm Hibernate (könnte man sich auch skripten):
Code: Select all
echo 0 > /sys/class/hwmon/hwmon0/pwm1_enable
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!):
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!