Montag, 18. Oktober 2010

Mein Dockstar lebt wieder...

So. Es ist wieder einmal passiert. Ich habe mir Hardware zum Spielen gekauft.

Diesmal: Ein FreeAgent DockStar Network Adapter von Seagate.

Das Schätzchen hat 128MB Ram und 256MB Flash on Board, eine nette ARM CPU, Gigabit-Netzwerk und 4 USB-Ports. Details finden sich zu Hauf im Netz.

Was mich besonders interessiert hat, war die in der CPU vorhandene Crypto-Unit, die sha1, md5 und aes in Hardware berechnen kann.

Linuxkernel

Leider ist es mit der Unterstützung dieser Einheit im offiziellen Kernel noch nicht so wahnsinnig weit - bisher wird das ganze nur rudimentär angesprochen (z.B. kein DMA), so dass es nicht wirklich Spaß macht, das ganze zu nutzen. (1-2MB/s Gewinn)

Etwas mehr verspricht hier ein Kernel des Herstellers - und voilá, GPL-sei-dank gibt es da auch was passendes. Oder naja, etwas das man für passend halten kann.

Vorweg: Ja, ich habe den Kernel letztlich übersetzt bekommen, man darf nur nicht so wahnsinnig sein, und an der config großartig Dinge ändern wollen - weil dann knallt es. Und zwar richtig mit Compiler-Fehlern und Syntax-Errors in den Kernelquellen.

Letztlich habe ich jedenfalls 15MB/sec von einer verschlüsselten USB-Platte lesen können statt 6-7 ohne Hardwareunterstützung.

Details zum Kernel folgen, sobald ich einen stabilen build habe und das dokumentieren kann. Ausserdem will ich die LEDs aus dem Kernel heraus ansprechen können, die GPIO-Konfiguration habe ich im Prinzip bereits.

uBoot - der Bootloader

Damit ich dieses System bequemer booten kann, wollte ich dann einen neuen uBoot bauen.

Die Cross-compiler-chain war ja schon von kernel vorhanden - sollte also alles kein Problem sein. Dachte ich.

Die Konfiguration des DockStar unterscheidet sich leider etwas von der des Sheeva-Plugs. So ist nur die Hälfte des Rams vorhanden, ausserdem sind die beiden LEDs an andere GPIO-Pins angeschlossen.

Kaputtgeflasht

Was mir letztlich das Genick brach war aber ein dummer Fehler: Ich habe das uBoot-Binary direkt in den Flash des DockStar gebrannt - statt des kwb-Images, das die Hardwarekonfiguration enthält.

Letztlich habe ich nun 4 verschiedene Jtag-Adapter hier gehabt, davon zwei selbstgebaute. Der letzte, ein wiggler, funktionierte schließlich - wenn auch nur mit 50kHz statt 500. (Kabellänge)

Folgende Fallen begeneten mir dabei:

  • 74HC244 falschrum im Sockel. Gute Heizwirkung, der Chip hats überlebt, mein Zeigefinger auch...
  • Kabel zu lang und zu wenig abgeschirmt
  • Ein funktionierender DockStar hat das JTAG deaktiviert und ist zum Testen ungeeignet!

Vor allem der letzte Punkt mit dem funktionierenden DockStar hat mich etliche Stunden gekostet. Aber wer rechnet schon damit -.-

Ausblick

Die folgenden Posts werden ausführlich das Wiederbeleben des DockStars, die korrekte Konfiguration des Bootloaders für diese Plattform und die Konfiguration des Kernels enthalten.

Der Bootloader kann hier jedenfalls schon die LED's ansprechen, dem Kernel werde ich das wohl auch noch beibringen. TODO's sind aber noch die Konfiguration des Speichers im uBoot.

Sonntag, 10. Oktober 2010

Vorlesungsverzeichnis der TU-Berlin (Backup)

Die Freitagsrunde hat sich wieder die Freiheit genommen, eine Kopie des Vorlesungsverzeichnisses der TU-Berlin anzulegen, falls die Server überlastet sein sollten. Bitte weitersagen.

Das Vorlesungsverzeichnis für das Wintersemester 2010/2011 findet sich nun auch hier: offizielles Vorlesungsverzeichnis der TU-Berlin (Kopie).

In den Ordnern sind jeweils die pdf-Versionen der Fakultäten abgelegt. Auf oberster Ebene auch nochmal ein Archiv als zip und tarfile.

Update: Ja, das Backup des Vorlesungsverzeichnis ist in den letzten Jahren rege genutzt worden, weil der Typo3 doch ab und zu ausfällt und das lsf-web einfach überlastet ist. Und ich hoffe dass dieser Eintrag jetzt auch genügend Stichworte für die Google-Trefferliste hat ;o). Die billigen Tricks wie finden sie HIER mehr über TU-Berlin Vorlesungsverzeichnis oder Backup Vorlesungsverzeichnis TU Berlin lasse ich mal weg...öhm - wait... mist ;)

Sonntag, 5. September 2010

md-raids aus USB-Platten und automatische Checks...

Falls ihr externe USB-Platten als Raid einsetzt, werdet ihr wissen, dass es mitunter Tage dauern kann, bis ein Rebuild oder Check des Raids komplett ist:
md4 : active raid5 sdc[0] sdf[3] sde[2] sdd[1]
      2930287488 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  check =  0.9% (8861912/976762496) finish=1374.5min speed=11735K/sec

Falls ihr euch nun wundert, warum das Raid an einem Sonntag Abend auf einem Debian System sehr träge reagiert und 50% der CPU durch einen Thread mit dem Namen md4_raid5 belegt sind, empfehle ich euch mal den Cronjob des mdadm anzusehen.

Dieser läuft am ersten Sonntag jedes Monats und prüft das Raid auf Konsistenz. Einerseits recht nützlich kann es aber auch störend sein - dauert es doch wie gesagt relativ lange. Zudem gibt es unter Debian bei manchen Installationen einen Bug, so dass der Cronjob jeden Sonntag läuft.

Um einen laufenden Check abzubrechen genügt ein:

/usr/share/mdadm/checkarray -x --all

Der Cronjob ist in der /etc/cron.d/mdadm definiert.

Komplett deaktivieren ist aber auch unschön, weil es das Erkennen von Fehlern auf dem Raid verhindert. Bei Mirror-Raids ist das Fatal, beim Ausfall einer Platte in einem Raid5 ebenfalls, weil dann unter Umständen keine reduntenten Informationen zum Wiederherstellen vorhanden sind.

Freitag, 28. Mai 2010

How to disable AAAA queries for IPv6 / configure your resolver

Today I stumbled upon a very nasty behaviour of glibc - again.

On a host which has no access to IPv6 at all and no module-support in the kernel, it seems the connect() call fails when there is a AAAA record in place for a remote server.

This means I cannot wget a webpage if an AAAA record exists for the page, etc.

You will find many solutions on how to 'disable IPv6' - but they all miss the resolver in glibc, the part that is behind the 'gethostbyname' call.

I like to disable AAAA DNS-queries for IPv6 completely - and the solution is easy:

#cat /etc/resolv.conf 
options no-inet6
nameserver ...
nameserver ...

Just documenting it here, because the manpage does not document the 'no'-Feature and searching for this on google was not helpful at all.

Dienstag, 18. Mai 2010

bzip2 vs. gzip und gvfs im Allgemeinen

Eben bin ich mal wieder über einige Kleinigkeiten gestolpert, die einfach nur ärgerlich sind.

Ein paar wirklich kleine Bugs, aber trotzdem unendlich nervig!

Gnome bindet Samba-Freigaben (also Windows-Freigaben) innerhalb des virtuellen Dateisystems ~/.gvfs innerhalb des Homes des Nutzers ein. Soweit so gut.

Erster Akt: Zugriff!

Man könnte ja annehmen, dass Gnome dann auch transparent Zugriff darauf erlaubt. Wenn ich ein Terminal starte, kann ich in das Verzeichnis wechseln und mit normalen Kommandozeilentools auf die Freigaben schreiben. Alles toll.

Aber in Gnome tauchen diese Freigaben im normalen Datei-öffnen Dialog nicht auf. Entsprechend auch nicht in Firefox, Galeon, Epiphany. Wie soll denn ein Endnutzer jetzt auf einfache Weise einen Download auf dem Share speichern? Vielleicht übersehe ich auch was, aber sowas ist einfach nur ärgerlich. Nicht nur weil das unter Windows ohne Probleme funktioniert.

Navigiert man manuell nach ~/.gvfs/ klappt es aber...

Zweiter Akt: Verknüpfungen

Wer es aus Windows kennt, versucht es auch unter Linux. Hat man nach viel Suchen die richtige Freigabe auf dem richtigen Server gefunden, zieht man die Freigabe aus der Netzwerkumgebung auf den Desktop und hat fortan eine Verknüpfung mit dem Share, die beim Doppelklick wiederhergestellt wird.

Nicht so bei unserem Lieblingsfrickelbetriebssystem mit Gnome. Zuerst beschwert es sich, dass die Freigabe kein normaler Ordner ist. Ach! Dann legt es auf dem Desktop einen leeren Ordner mit dem Namen der Freigabe an. Toll! Wie soll denn ein Endbenutzer jetzt auf die Idee kommen, dass alles was er in diesem Ordner speichert eben nicht auf dem Server landet?!

Nun gut, versuchen wir Rechtsklick auf den Freigabenamen in der Netzwerkumgebung, dann Verknüpfung erstellen. Ooops. Ich habe auf der obersten Ebene des Servers ja keine Schreibrechte, also Fehlerdialog, Verknüpfung kann nicht angelegt werden. Leider erfolgt auch keine Möglichkeit wie bei Windows (sic!) die Verknüpfung statt dessen direkt und automatisch auf dem Desktop anlegen zu lassen. Ergo: Verknüpfungen erzeugt man manuell, indem man einen Starter mit dem Ziel nautilus smb://server/ anlegt.

Wie soll denn ein Endbenutzer....

Wenn man viel Glück hat geht das auch meistens. Oft habe ich aber wie unter Windows nur leere Servereinträge, bekomme skurrile dbus-Fehlermeldungen, kann das Netzwerk nicht durchsuchen, etc. Ja, iptables ist leer und auf ACCEPT.

Dritter Akt: Auf der Kommandozeile ist alles besser?

Nein, nicht wirklich.

Bei dem Gnomefs ist z.B. die Funktion fchmod nicht implementiert. Und das führt zu unnötigen Fehlern.

Situation: Auf dem Share liegt eine Datei, die wir komprimieren wollen.

Also Kommandozeile, cd ~/.gvfs/sharename ; bzip2 file - und wir bekommen einen netten IO-Error um die Ohren gehauen. Vorher hat bzip2 das File übrigens ordnungsgemäß komprimiert. Komplett. Und wieder aufs Share geschrieben. Dann gelöscht.

Das gleiche Experiment mit gzip: Es wird auch ein Fehler geworfen, das File wird aber korrekt abgelegt und die Quelle gelöscht.

Welches Verhalten ist nun besser? gzip, der die Rechte nicht setzt und dem es egal ist, oder bzip2, dass die Datei einmal übers Netz zieht, komprimiert, schreibt und zurücksendet und dann löscht?

Was mich aber am meisten wundert: warum wird das fchmod erst NACH dem Schreiben der Nutzdaten gemacht?

Die Krönung des ganzen: Der Mode, den bzip2 hier übergeben will, unterscheidet sich nicht vom Mode, den die Datei auch so schon hat, wenn sie neu angelegt wird -.-

Fazit: Alle doof außer Mutti!