2007-11-30

Tor und IPv6

Heute konnte ich einen größeren Patch für Tor (The Onion Router) schrieben, der es ermöglicht sowohl Hidden Services auf Ipv6-Addressen zu betreiben als auch lokal den Socks4a/Socks5 -Server auf einer solchen zu betreiben.
Nick Mathewson hatte noch einige Anmerkungen zu Kleinigkeiten aber meint der er würde den Patch definitiv nach dem Branch für Tor 0.2.1.x einbauen (Momentan ist feature-freeze für 0.2.0.x).

Ursprünglich wollte ich so einen Patch schon auf dem CCCongress letztes Jahr schreiben aber da fehlt natürlich praktisch dann immer die Zeit.

Update: neue Version des Patches veröffentlicht

2007-11-15

Linux auf dem Fujitsu Stylistic 3400

Wir haben hier also einen etwas älteren Fujitsu Stylistic 3400 Tablett-PC.
Das mitgelieferte Windows98 ist zwar ganz nett aber doch heutzutage schon etwas arg eingeschränkt nutzbar.
Nicht so mit Linux.

Diese Anleitung soll zeigen wie wir also ein modernes Linux auf diesen Rechner bekommen.

Benötigte Ausrüstung:
  • Ein knoppix-ISO
  • Ein 2.5"-Festplatten-Gehäuse für den USB-Port
  • Passende Micro- und Normal-Schraubendreher für das USB-Gehäuse und die Festplattenabdeckung des Rechners

Linux-Installation ohne externe Laufwerke?
Als erste Problem stellt sich die Frage, wie man überhaupt Linux auf diese Kiste bekommt?
Immerhin gibt es keinerlei Laufwerke.
Die Lösung: Qemu!

Wir bauen die 2.5"-Festplatte aus und stecken sie in ein billiges USB-Festplatten Gehäuse.
Anschließend laden wir als Quelle ein Knoppix herunter. In diesem Fall das KNOPPIX_V5.1.1CD-2007-01-04-DE.iso .
Nehmen wir an die 2.5"-Platte ist /dev/sdc .
So können wir sie mit einem Knoppix booten mittels:

qemu -hda /dev/sdc -cdrom downloads/KNOPPIX_V5.1.1CD-2007-01-04-DE.iso -boot d

Dies reicht für eine erste Installation durch "sudo knoppix-installer" und der Auswahl "Debian-System".
Nach einer Weile haben wir nun ein System, welches aber nur mit der emulierten Graphikkarte etwas zeigen wird.
Wir fahren also den emulierten Rechner herunter und starten von der realen Festplatte. Diesmal aber mit Netzwerk.
Wir nehmen an, im lokalen Netzwerk gibt es einen DHCP-Server.
also:
Anlegen einer neuen Bridge

brctl addbr br0

Hinzufügen des lokalen Ethernet-Interfaces zur Bridge, damit unsere VM nach draußen kommt.

brctl addif br0 eth0
ifconfig br0 up

Wollen wir selber jetzt noch Netz habem, heißt es die vorhandene IP A.B.C.D von eth0 auf br0
zu übernehmen.

ip addr del A.B.C.D/24 dev eth0
ip addr add A.B.C.D/24 dev br0

jetzt endlich können wir die VM starten:

qemu -hda /dev/sdc -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/network/qemu_up

xorg auf Trident Cyber 9525?

zunächt öffnen wir die Datei /etc/X11/xorg.conf als root in einem editor.

su -c "vi /etc/X11/xorg.conf"

Die relevante Sektion lautet:

Section "Device"
Identifier "Card0"
Driver "trident"
VendorName "Trident Microsystems"
BoardName "Cyber 9525"
BusID "PCI:0:20:0"
EndSection

fpit-touchpad und xorg?

Nun werden wir zwar eine graphische Oberfläche haben, aber noch kein Touchpad um diese zu bedienen.
Also brauchen wir noch:

Section "InputDevice"
Identifier "mouse0"
Driver "fpit"
Option "Device" "/dev/ttyS3"
Option "BaudRate" "9600"
Option "MaximumXPosition" "4070"
Option "MaximumYPosition" "4020"
Option "MinimumXPosition" "0"
Option "MinimumYPosition" "0"
Option "Passive"
Option "SendCoreEvents"
EndSection
Der Treiber fpit gehört aber nicht mehr zur Grundausstattung eines xorg in Knoppix. Deshalb haben wir das Netzwerk so dringend benötigt. Also installieren wir ihn mit:

su -c "apt-get update && apt-get install xserver-xorg-input-fpit xvkbd"

Damit der Treiber funktioniert müssen nun noch vorher die folgenden beiden Zeilen in ... eingetragen werden:

su -c "vi /etc/rc.local && ln -s /etc/init.d/rc.local /etc/rc5.d/S98local"

und fügen hier vor dem "exit 0" ein:

setserial /dev/ttyS3 autoconfig
setserial /dev/ttyS3 uart 16450 irq 5 port 0xfd68

Einloggen in KDM ohne Tastatur?

Nun haben wir zwar ein funktionierendes Touchpad als Mouse-Ersatz,
dies wird uns aber nach dem Booten nichts helfen, da wir eine Tastatur
für das Passwort in KDM benötigen.
Diese haben wir vorhin in Form von xvkbd installiert und starten sie mittels:

su -c vi /etc/kde3/kdm/Xsetup

/usr/bin/X11/xvkbd -geometry 480x130 &

(wieder vor "exit 0" oder irgendwo vor dem Ende der Datei einfügen.)

Jetzt endlich können wir das emulierte System mit "su -c poweroff" herunterfahren
und die Festplatte in den Fujitsu Stylistic 3400 einbauen.


Alles so klein hier...

Da der Rechner maximal 192MB Ram hat, sollten wir noch 2 Dinge tun:
eine Swap-Partition oder -Datei anlegen und die Festplatte hierfür in den DMA-Modus
schalten.

Zunächst das letztere:

su -c "vi /etc/hdparm"

und hier die # vor dem Eintrag

/dev/hda
mult_sect_io = 16
write_cache = off
dma = on

entfernen.

Eine Swap-Partition können wir mit "cfdisk" anlegen, eine Datei mit "dd if=/dev/zero of=/DATEI bs=1m count=MEGABYTES".
Anschließend diese mit "mkswap /dev/hda2" bzw "mkswap /DATEI" initialisieren und

su -c "vi /etc/fstab"

eintragen (statt
/dev/hda2 evtl den Pfad zur Datei)
/dev/hda2        none         swap   sw
Offene Fragestellungen:

Das Sperren des Bildschirms mittels kdesktop_lock zeigt kein OnScreen-Keayboard an.
Hier scheint die Lösung etwas mit dem Setzen der HAL-Eigenschaft

hal_set_property --udi /org/freedesktop/Hal/devices/computer --key system.formfactor --string laptop
hal_set_property --udi /org/freedesktop/Hal/devices/computer --key system.formfactor.subtype --string tabletpc

Helfen tut es aber momentan noch nicht. Evtl. ist hier ein neueres KDE nötig.
Hier ist zumindest ein Patch eines SuSE-Entwicklers zu finden.
Anscheinend ist der Patch nur in OpenSuse eingebaut.


...viel Spaß am Gerät!



Quellen:
  • http://www.x.org/archive/X11R6.8.0/doc/fpit.4.html (X11 und "fpit"-Touchpad)

  • http://www.neoseeker.com/forums/529/t267577-fujitsu-stylistic-3400-linux/ (X11-config)

  • http://compsoc.dur.ac.uk/~djw/qemu.html (qemu+Bridging)

  • http://forums.xbox-scene.com/lofiversion/index.php/t41230.html (KDM und OnSreen-Keyboard)

2007-11-13

Sourceforge -Tracker in Eclipse einbinden

Soeben bin ich über eine wirklich tolle Sache gestoßen,
die ich mir hier mal eben im Blog notiere....


Artikel über das Einbinden der
Sourceforge-Tracker in Eclipse mittels Mylyn.


Zusammen mit Subclipse sollte man also wunderbar gegen die Sourceforge-Dienste arbeiten können ohne Eclipse zu verlassen. (Außer für File-Releases.)

2007-11-12

Traveling Salesman V0.6 released

Endlich ist es soweit.
Die Performance-Probleme in Traveling Salesman sind gelöst und es kann endlich seine ersten großen Testfahrten beginnen.
Als primären Datenspeicher habe ich die Datenbanken aufgegeben und mich auf strukturierte Dateien zurückgezogen. Die eingebaute HSQLDB führt lediglich noch einen Index um über Ids oder Namen(oder andere Tag-Werte) an die Elemente zu kommen wärend Abragen nach Koordinaten über eine Tile-ID als Datei laufen.

Datenbank-Unabhängug Foreign-Keys in .NET holen.

Wer in .NET etwas mit Datenbanken macht, wird die Methode getSchema(...) kennen.
Leider liefert diese in Bezug auf Foreign-Keys lediglich das solche existieren und für welche Tabellen.
Nicht jedoch welche Spalte hier welche referenziert. Eine längere Suche im Netz färdert am Ende lediglich zu Tage, daß dies über getSchema und co nicht möglich ist und es werden einem an jeder Ecke Möglichkeiten, die nur auf dem MS-SQL-Server funktionieren vorgeschlagen.

Nach stundenlanger Suche habe ich endlich eine Lösung für dieses eigentlich ja triviale Problem gefunden.
Ein asiatischer Blogger welcher eine ASP-FAQ referenziert hat uns eine Monster-Abfrage für die INFORMATION_SCHEMA-Tabellen zusammengebaut.


SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
Constraint_Name = C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN
(
SELECT
i1.TABLE_NAME, i2.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT
ON PT.TABLE_NAME = PK.TABLE_NAME
-- optional:
ORDER BY
1,2,3,4

2007-11-04

Code-Signing via CACert

Nachdem ich gerade ein selbst-signiertes Zertifikat für Java-WebStart erzeugen musste
um Traveling-Salesman bequemer starten zu können habe ich mich etwas umgesehen...

Wieder erwarten ist es wohl doch möglich mit meinem bestehenden CACert-Zertifikat
auch Code zu signueren.
Details http://wiki.cacert.org/wiki/CodesigningCert

Spaß mit Schrauben

Für alle anderen, die sich auch mit HSQLDB und dessen Macken rumplagen...

etwas Abschwechslung...
http://www.luftpiraten.de/sonderschrauben.html

2007-11-01

Traveling Salesman V0.4 released

(Ich poste das hier mal in englisch, einfach weil ich den Text aus einer email bereits in englisch fertig hatte.)

The file-release-system on sourceforge sucks big time but with an hour of uploading files via ftp, then searchig for them in long lists, then refreshing the whole page for each and every file, repeating these steps for every library released and finally looking at pretty hour-glasses while searching for the same files again for the download-release-page I managed to:

Release version 0.4 of Traveling Salesman. A GPL navigation- and route-planing tool using the OpenStreetMap.
Changes include:
  • added database-support
  • new settings-dialog
  • settings now have descriptions and categories
  • improved responsiveness
  • improved multi-cpu/core support
  • new UI looks much better
  • debugged dijkstra (has problems when using databases)
  • many bug-fixes