Sonntag, 15. Februar 2009

Haiku: A blast from the past

Ich hab ja schon immer gerne mit Betriebssystemen der unterschiedlichsten Art rumgespielt und vor vielen Jahren bin ich auch mit BeOS in Berührung gekommen. Leider war die Liebe nicht von langer Dauer da Be irgendwann Geschichte war und damit auch dieses wunderbare Betriebssystem. Es war schon unglaublich was man damals aus einer Kiste an Performance rausholen konnte. Viele Systeme ächzen heute noch und dem was BeOS damals schon geleistet hat, und zwar auf weitaus schlechterer Hardware als heute. Umso mehr habe ich mich über das Projekt Haiku gefreut das es sich zur Aufgabe gemacht hat ein freies BeOS zu entwickeln. Was es mir besonders angetan hat ist die reichhaltige API. Keine kilometerlangen Abhängigkeitslisten mehr Haiku bietet alles was man braucht in sogenannten Kits. Alles ist sehr stark integriert und greift wunderbar ineinander. Vor allem der einheitlich Desktop hat seine Vorteile. Während Projekte wie KDE und Gnome darauf ausgelegt sind auf möglichst vielen unterschiedlichen Systemen zu laufen hat Haiku "nur" eine Oberfläche welche sämtliche Vorteile des darunterliegenden Systems nutzen kann. Dies ist bei anderen Desktop nicht ohne weiters mögliche da sie sonst ihre Portierbarkeit verlieren würden. Ein weiterer Vorteil ist das das starten von Applikationen einfach rasend schnell wird. Wer gerne mit Systemen herumspielt sollte auf jeden Fall einen Stop bei Haiku einlegen. ;)

Freitag, 9. Januar 2009

Testphase für 2009.04 hat begonnen

Mit der Veröffentlichung von Build 105 für OpenSolaris geht es jetzt los mit der Entwicklung für den nächsten Release der Distribution, um auf das Developer Repository zuzugreifen genügt der folgende Befehl:


$pfexec pkg set-authority -O http://pkg.opensolaris.org/dev opensolaris.org


Mit Build 105 wird ZFS auf die neuste Version 14 gebracht (Vorsicht: ein Upgrade führt dazu das ältere Versionen und BEs von OpenSolaris nicht mehr auf die Daten zugreifen können!), des weiteren wird die NIC-Virtualisierung Crossbow eingeführt mit der es möglich ist komplette virtuelle Netzwerkkarten (inklusive eigener MAC-Addresse) zu erstellen.

Sonntag, 21. Dezember 2008

Ruby 1.9.1 Preview2 selberbacken

Im Moment spiele ich mal wieder mit diversen Skriptsprachen herum von denen eine Ruby ist. Leider läßt sich der aktuelle Preview nur mit ein paar Umwegen unter OpenSolaris backen. Darum hier ein kleines Patch damit Vorgang durchläuft. Ich übernehme wie immer keine Verantwortung für eventuelle Probleme ^^.

--- ext/curses/curses.c Tue Nov 11 12:00:39 2008
+++ ext/curses/curses.c Sun Dec 21 17:00:44 2008
@@ -410,6 +410,9 @@
static VALUE
curses_getch(VALUE obj)
{
+#if defined(__sun)
+ eucwidth_t wp;
+#endif
int c;

rb_read_check(stdin);
@@ -416,7 +419,12 @@
curses_stdscr();
c = getch();
if (c == EOF) return Qnil;
+#if defined( __sun)
+ getwidth(&wp);
+ if (ISPRINT(c, wp)) {
+#else
if (ISPRINT(c)) {
+#endif
char ch = (char)c;

return rb_locale_str_new(&ch, 1);
@@ -1105,12 +1113,20 @@
{
struct windata *winp;
int c;
+#if defined(__sun)
+ eucwidth_t wp;
+#endif

rb_read_check(stdin);
GetWINDOW(obj, winp);
c = wgetch(winp->window);
if (c == EOF) return Qnil;
+#if defined(__sun)
+ getwidth(&wp);
+ if (ISPRINT(c, wp)) {
+#else
if (ISPRINT(c)) {
+#endif
char ch = (char)c;

return rb_locale_str_new(&ch, 1);

Sonntag, 14. Dezember 2008

Aktivismus: "The Yes Men"

Ich bin heute über einen sehr interessanten Link gestolpert der ausnahmsweise mal nichts mit Technik zu tun hat. Wirklich sehr sehenswert: The Yes Men

Schon krass was man unter dem Motiv der Gewinnmaximierung den Leuten alles verkaufen kann...

Samstag, 13. Dezember 2008

Nahtloses 64-Bit

Mir fallen immer wieder Fragen auf die sich auf die 64-Bit Fähigkeit von OpenSolaris beziehen. Wie z.B. "Wo krieg ich die 64-Bit ISO?" oder "Unterstützt Solaris das überhaupt?".
Ja, Solaris baut sich je nach vorliegender Architektur passend zusammen (ein Vorteil der durch die hohe Modularisierung möglich ist), soll heißen: Die OpenSolaris Installations CD ist beides (bootet als LiveCD afaik aber nur im 32-bit Modus). Um herauszufinden ob die eigene Solarisinstallation auch 64-Bit unterstützt reichen folgende Befehle:

$ isainfo
amd64 i386
$ isainfo -vk
64-bit amd64 kernel modules

Mein System unterstützt also i386 und amd64 und die Kernelkomponenten nutzen das 64-Bit Instruktionsset. Ich kann nahtlos 32 und 64-Bit Programme miteinander mischen ohne das ich irgendwas besonderes dafür tun muss (der Grund warum es auf 64-Bit Solaris Systemen auch schon seit Ewigkeiten die Möglichkeit gibt Flash zu nutzen), es läuft einfach.

Freitag, 5. Dezember 2008

Amilo gone wild

Seit einigen Wochen schlage ich mich schon mit meinem alten Amilo Pi1505 und OpenSolaris herum. Irgendwann hat es sich dazu entschlossen sich im Kreis zu drehen sobald es größere Mengen an Daten geschrieben oder gelesen hat. Wer sich für ein Tagebuch dieser Schnitzeljagd quer durch den Quellcode interessiert kann das Ganze auf defect.opensolaris.org nachlesen.
Lange Rede, kurzer Unsinn. Der Hund lag in der NCQ begraben. MDB lieferte mir folgende Werte:

uint32_t ahciport_pending_tags = 0x1
...
struct sata_pkt *[32] ahciport_slot_pkts = [ 0, 0, 0, 0, 0, usw.

Dieser Zustand ist allerdings recht beknackt. ahciport_pending_tags sagt uns das ein Kommando in Slot 0 noch aussteht, Slot 0 zeigt aber auf 0 was wiederum heißt: Nichts steht aus. Und da beißt sich die Katze in den Schwanz und die ankommende Anfrage dreht sich immer im Kreis.
Lösung dieses Problems ist es NCQ zu deaktivieren. Das geht über 2 Wege

Der erste geht über MDB. Wir booten dazu OpenSolaris mit der Kerneloption -kd. Das versetzt uns beim Bootvorgang sofort in den Debugger. Hier setzen wir folgenden Breakpunkt und gehen wie folgt vor:

::bp ahci`ahci_attach
::cont
....
sata`sata_func_enable/W 5
::cont

Das deaktiviert NCQ und das Problem ist Geschichte.

Jetzt hat man allerdings nicht wirklich Lust jedesmal solche Klimmzüge zu machen und für sowas ist die /etc/system da mit der wir bestimmte Kernelvariablen einfach selber setzen können ohne etwas neu zu kompilieren. Um das oben genannte festzuschreiben braucht man nicht mehr als folgende Zeile an die /etc/system anhängen:

set sata:sata_func_enable = 5


Des weiteren mag diese Kiste wohl den Bootsplash und den HCI1394 Treiber nicht, darum sollte man im Textmode booten und die Bootoption -B disable-hci1394=true anhängen. So gibt dann auch endlich mein Sorgenkind Ruhe ;)

Wireless LAN auf dem Thinkpad SL500

Ich habe mir ja vor einiger Zeit ein Thinkpad SL500 zugelegt um es mit OpenSolaris zu bestücken, seltsamerweise wurde der WLAN Chip (Intel 5100 AGN) allerdings nicht erkannt obwohl der Treiber bereits seit einigen Wochen bereitsteht. Naja, so seltsam dann auch wieder nicht. Es fehlte einfach die Zuordnung zwischen ID und Treiber. Also erst mal herausfinden wie sich unser Chip zu erkennen gibt, dazu haben wir ja scanpci:

pci bus 0x0002 cardnum 0x00 function 0x00: vendor 0x8086 device 0x4237
Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection
CardVendor 0x8086 card 0x1211 (Intel Corporation, Card unknown)
STATUS 0x0010 COMMAND 0x0046
CLASS 0x02 0x80 0x00 REVISION 0x00
BIST 0x00 HEADER 0x00 LATENCY 0x00 CACHE 0x08
BASE0 0x00000000fe1fe004 addr 0x00000000fe1fe000 MEM 64BIT
MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x05

Jetzt nur noch die passenden Werte in die /etc/driver_aliases übertragen.

# update_drv -a -i '"pciex8086,4237"' iwh

Viola, Wireless auf dem SL500 :)