Author Archives: alex

ext3-Dateisystem verkleinern mit Knoppix

Hatte ich schon erwähnt, dass ich im September umgezogen bin? Bin ich, nur in anderes Viertel, aber mit jemandem zusammen in eine neue WG, der wie ich ebenfalls einen kleinen Server zu Haus stehen hatte. Da die Hardware heutzutage leistungsfähig genug ist und Xen zuverlässig läuft, sind wir dabei Schritt für Schritt die Dienste von den beiden ehemaligen Servern auf eine Maschine mit ein paar virtuellen Xen-Hosts zu packen. Da ich ungern an Produktivsystemen neue Dinge ausprobiere, teste ich solche Sachen auf einem anderen Rechner. Gestern hatte ich dank dieser Anleitung auf besagtem Testrechner unter Debian Etch in kurzer Zeit einen laufenden Xen-Wirt eingerichtet. Die 40GB-Platte war dort ungefähr zu gleichen Teilen in /home und / geteilt – klassische Partitionen. Da ich Xen gern mit LVM testen wollte und die Partitionen kaum belegt waren, entschied ich mich für eine Neuaufteilung: 8 GB für das root-Filesystem und der Rest für LVM. Auf dem Testsystem sind außer Testinstallationen keine wichtigen Daten, also die erste Gelegenheit für mich, mal resize2fs auszuprobieren…

Beim Verkleinern einer Partition soll man erst mit resize2fs das Dateisystem (ich benutze eigentlich immer ext3) verkleinern und dann mit fdisk die Partition selbst noch verkleinern. Das Manual sagt, dass die Partition natürlich nicht kleiner gemacht werden soll als das Dateisystem – logisch. Zunächst jedoch will resize2fs nochmal e2fsck aufgerufen haben:

e2fsck -f /dev/hdb3
resize2fs -p /dev/hdb3 8G

Dann habe ich fdisk /dev/hdb aufgerufen, hdb3 gelöscht und neu angelegt. Der vorgeschlagene Beginn der Partition war der gleiche wie zuvor, habe ich extra kontrolliert und dann die Partition mit +8300M neu angelegt. Reboot und siehe da: reicht wohl nicht, es kommt die Beschwerde, dass das Dateisystem 2 097 152 Blöcke hat, die Partition aber nur 2 026 458. Also nochmal Knoppix booten und Partition neu anlegen. Interessant ist dann zunächst die Ausgabe von fdisk -l

Platte /dev/hdb: 40.0 GByte, 40020664320 Byte
16 Köpfe, 63 Sektoren/Spuren, 77545 Zylinder
Einheiten = Zylinder von 1008 × 512 = 516096 Bytes

    Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/hdb1   *           1         203      102280+  83  Linux
/dev/hdb2             204        2284     1048824   82  Linux Swap / Solaris
/dev/hdb3            2285       18367     8105832   83  Linux
/dev/hdb4           43895       77545    16960104    5  Erweiterte
/dev/hdb5           43895       77545    16960072+  83  Linux

fdisk zeigt hier auch Blöcke an, aber die Anzahl ist verschieden zu der, die zuvor e2fsck beim Boot des Systems zeigte – genau genommen exakt viermal so groß. Aber irgendwie stimmt das auch ungefähr mit den 8300 Megabyte von vorhin überein, in Kilobyte versteht sich. Ich habe dann also diesmal beim Neuanlegen der Partition +8388608K angegeben, das vierfache von dem Wert, den das System vorher beim Booten für die Größe des Dateisystem genannt hatte. Der kam wie gesagt ursprünglich von den 8G beim resize2fs. fdisk machte dann ein paar Blöcke mehr draus, als ich Kilobyte eingegeben hatte, umso besser. Da der Kernel noch nichts von der Änderung der Partitionstabelle durch fdisk wusste, lohnte ein e2fsck unter Knoppix nicht und ich hab gleich neu gestartet.

Das Debian etch beschwerte sich dann nicht mehr über ein Filesystem, das größer war als die Partition, ließ aber dennoch einen Check drüber laufen. Der weitere Systemstart verlief problemlos. Das LVM richte ich dann später ein…

happy

Interessant finde ich jedoch noch die Frage, was ich hätte eingeben müssen, um von vornherein die passenden Größen für resize2fs und fdisk parat zu haben, einfach auch 8G bei fdisk wäre nämlich deutlich zu wenig gewesen. Ziel: möglichst wenig Platz auf der Partition verschenken. Wer da Ideen hat, den bitte ich um Kommentare!

Eisfair Entwicklertreffen 2007

Am letzten Wochenende fand das Entwicklertreffen der Entwickler- und Testteams von Fli4l und Eisfair statt. Es waren zwar doppelt so viel Leute von Fli4l da wie von Eisfair, aber für mich war es dann doch eher ein Eisfair-Treffen. Wir hatten sehr viele interessante Gespräche, gute Diskussionen, eine total abgefahrene Keysigning-Party für CAcert und GnuPG (brauch noch jemand Formulare?) und viel Spaß. Ich fand es sehr spannend die Leute auch mal persönlich kennenzulernen, die man sonst nur von E-Mails kennt.

Besonders interessant war die diskutierte Roadmap für Eisfair-2. Vieles davon ist noch intern, einiges sind bisher nur Ideen, aber die Weichen sind gestellt. Es wird zwar kein direktes Upgrade von Eisfair-1 auf Eisfair-2 geben, aber dank Paketen wie Backup-Zip und dem Support in der Newsgroup sollte später auch eine Migration möglich sein. Mit dem Sprung auf Eisfair-2 wird komplett auf UTF-8 umgestellt, wann wenn nicht jetzt?

Außerdem gab’s noch ein paar Anekdoten, wo ich mit meinen jugendlichen 26 Jahren schon gestaunt habe. Ich war schon sehr überrascht, dass Leute Festplatten, die nicht mehr anlaufen, mit einem gezielten Hammerschlag überreden. Dann wurden natürlich alle Daten runter kopiert und die Festplatte danach verschrottet. Jemand anders konnte aber noch einen drauf setzen: Festplatte aufschrauben, die Platten von Hand zum Drehen überreden also quasi anschieben, bei offenem Gehäuse alles runterkopieren, zum Spaß noch auf die ersten Headcrashs warten und dann ebenso in die Tonne. Was will man machen, wenn die Daten wichtig sind und die Motoren zu fest sind zum Anlaufen? *lol*

Alter schützt vor Treibern nicht

Mein aktuelles Bastelprojekt ist ein alter Rechner. Eingebaut ist ein Pentium mit 133 MHz, ein wenig EDO-RAM, eine alte Soundkarte vom Typ Terratec Base 1, 3com Netzwerkkarte und eine große Festplatte, auf der Daten gesichert werden. Für Konsole reicht das gut hin und Musik kann er auch abspielen. Installiert hatte ich Debian Etch.

Die Kiste hängt an einem 17″-Röhrenmonitor, eine Konsole mit 80×25 Zeichen ist nett, aber 800×600 Pixel sind locker drin – immerhin 100×37 Zeichen. Damit lässt sich gut chatten, für E-Mails ist genug Platz und auch im Midnight Commander steigt die Übersicht. Das ganze steht und fällt mit dem dafür nötigen Betrieb der Grafikkarte im Framebuffer-Modus. Bei neuen Karten geht das leicht über den VESA-Treiber, einfach vga=789 an die Kernel-Optionen von Grub angehängt und fertig. Leider ist in dem Rechner eine alte S3 Trio64V+ eingebaut und die unterstützt der VESA-Treiber nicht.

Zum Glück gibt es noch andere Framebuffer-Treiber. Bei der ersten Recherche im Netz stellte sich aber Ernüchterung ein. S3 nur für PPC oder Amiga, warum auch immer. Dann stieß ich auf eine erst ein paar Monate alte Neuigkeit. Da hatte doch tatsächlich jemand für Kernel 2.6.21 noch einen neuen Treiber für die Karte geschrieben. Ich finde das reichlich bemerkenswert, schließlich reden wir hier von einer Grafikkarte aus den späten Neunzigern!

Der Ehrgeiz war geweckt, jetzt galt es das Ding zum Laufen zu bringen. Zunächst schaute ich, was nach Debian Etch an Kernel-Versionen bereit stand. Der aktuelle Testing-Zweig bringt 2.6.22 mit, also machte ich ein Dist-Upgrade von Etch nach Lenny. Das war nicht weiter aufregend, allerdings noch nicht alles. Um den Treiber jetzt auch zu benutzen waren (als root!) folgende Schritte notwendig:

  • s3fb in die Datei /etc/initramfs-tools/modules eintragen
  • update-initramfs -u -k all
  • in /boot/grub/menu.lst die entsprechende Zeile wie folgt ändern:
    # defoptions=video=s3fb:800x600@85

Anschließend neu booten und freuen. Der Rechner läuft tatsächlich mit Framebuffer-Konsole auf S3 Trio64V+.

happy

Meine erste Demo – ohne mich

Heute, am 9. November, hat der Bundestag das Gesetz zur Umsetzung der entsprechenden EU-Richtlinie zur Vorratsdatenspeicherung mit der Mehrheit der großen Koalition verabschiedet. heise online schreibt:

Der rechtspolitische Sprecher der Grünen, Jerzy Montag, sprach dagegen in dem heftigen Schlagabtausch von einem “tiefschwarzen Tag für die Bürgerrechte in Deutschland”.

Dem kann ich mich nur uneingeschränkt anschließen. Für mich persönlich gehen damit drei Wochen mit erhöhtem Adrenalinspiegel zu Ende. Es begann damit, dass Juliane am 17.10. bei Webuni den Aufruf für bundesweite Demonstrationen und Kundgebungen weiterleitete, die am 6.11. stattfinden sollten. Die Diskussion entwickelte sich so, dass ich mich in der Woche darauf (zusammen mit Tux) zur Polizeidirektion begab und eine entsprechende Veranstaltung für Magdeburg anmeldete. Wir hatten uns eine kleine Kundgebung an der Goldschmiedebrücke ausgemalt, niemand anders schien Zeit und Lust zu haben und ich vergaß in einem schwachen Moment meine universitären und privaten Verpflichtungen.

Die folgenden Tage bestanden für mich aus massiver Unlust morgens aufzustehen, stressbedingter Appetitlosigkeit und der Kommunikation mit Leuten, die ich nicht kannte über Sachen die ich nie zuvor gemacht hatte. Zu den unbekannten Dingen gehörte weniger das Pflegen des Orga-Wikis sondern vielmehr die Gespräche mit den Jungen Liberalen und der Grünen Hochschulgruppe, die Koordination von Entwurf und Druck der Plakate und Flyer, Verteilen der Aufgaben für den Demotag selbst und so einiges mehr. Am Ende wurde dann trotz zwei Wochen Vorlauf sogar noch die Zeit knapp.

Dank der Hilfe von vielen engagierten Leuten ging dann am Dienstag alles glatt über die Bühne und wurde sogar noch ein kleiner Erfolg. (An dieser Stelle nochmal vielen Dank dafür!) Ich lag um diese Zeit allerdings leider mit einer fiesen Magen-Darm-Infektion im Bett und nutzte die Zeit den Film »Das Leben der anderen« zu schauen – passend zum Thema und sehr bewegend. Gegen Ende sagt dort der Minister Hempf sinngemäß, dass es in der Bundesrepublik nichts mehr gäbe, wogegen man rebellieren könne. Bei der Mitteilung des AK-Vorratsdatenspeicherung von heute heißt es:

Zur weiteren Arbeit des Arbeitskreis Vorratsdatenspeicherung, der die Proteste der letzten Wochen und Monate koordiniert hat, erklärt Ricardo Cristof Remmert-Fontes: “Der Arbeitskreis Vorratsdatenspeicherung wird weiter die Frage stellen, in welcher Gesellschaft wir in Zukunft leben wollen und daran arbeiten, das Bewusstsein für die Grundwerte unserer freien Gesellschaft zu fördern. Wir sind erst am Anfang unserer gemeinsamen Arbeit.”

In diesem Sinne schalte ich jetzt mal meine Playlist um von den zur Stimmung passenden »Murder Ballads« von Nick Cave zur besten Band der Welt: Die Ärzte mit »Deine Schuld«.

Spaß mit Microsoft Robotics Studio

Es ist ja schon angeklungen, dass ich mich mit Microsoft Robotics Studio beschäftige. Gestern habe ich im SimulationTutorial2 eine witzige Stelle gefunden:

// we use the http get handler for something unusual, but fun:
// Whenever a web browser does a GET, we will throw some objects in the simulation

Wie bitte? Einfach per Klick immer mehr und mehr Sachen reinwerfen? Das wird ausprobiert…

Get the Flash Player to see this content.

lol2

shirt shop nicht erreichbar

Beim Versuch noch ein neues Shirt in unseren Shop aufzunehmen bin ich darüber gestolpert, dass das WordPress-Plugin »Spreadshop« 1.8 mit WordPress 2.3 nicht mehr funktioniert. Laut der Homepage des Spreadshop-Plugin wird an dem Problem gearbeitet. Bis dahin nutzt bitte den (nicht angepassten) Shop bei Spreadshirt selbst: http://antiblau.spreadshirt.net

Fangen und Werfen

Als heute im Büro zwischenzeitlich der Subversion-Server nicht erreichbar war, so dass ich meinen Commit nicht machen konnte, unternahm ich einen Spaziergang im Haus zum verantwortlichen Admin. Der war zwar nicht da, aber im gleichen Büro unterhielt ich mich dann mit einem großen Fan von Python. Ich habe dann mal bei Wikipedia nachgelesen und bin über folgenden Satz gestolpert:

Python unterstützt (und nutzt ausgiebig) die Ausnahmebehandlung (engl. exception handling) als ein Mittel, um Fehlerbedingungen zu testen. Dies ist so weit in Python integriert, dass es sogar möglich ist, Syntaxfehler abzufangen und zur Laufzeit zu behandeln.

Das fand ich schon ziemlich krass. Das Programm kann also stellenweise syntaktisch fehlerhaft geschrieben sein, der Compiler meckert nicht und ich kann das selbst abfangen – coole Sache. Weil ich das ganze sowieso noch für die Arbeit mit .NET und C# brauche und mich das auch für den Perl-Parser für IMPULS interessiert, habe ich mich dann mal ganz allgemein mit Exceptions beschäftigt. Richtig schmunzeln musste ich als alter Handballer über die verwendeten Begriffe. Die Exception wird geworfen und irgendwo sitzt ein Catch-Block, der die irgendwann auffängt. Bildlich vorgestellt kann ich da beim Schreiben dieses Satzes gerade immernoch lachen. happy

Meine Glaskoogle hat mir dann für Exceptionhandling mit Perl die Seite Object Oriented Exception Handling in Perl ausgespuckt, wo das alles schön erklärt ist. Jetzt ratet doch mal, was bei der Ausführung des folgenden leicht abgewandelten Beispiels von jener Seite passiert:

#/usr/bin/perl -w
use Error qw(:try);
try {
	some code;
	code that might throw an exception;
	more code;
	return;
}
catch Error with {
	my $ex = shift;	# Get hold of the exception object
	print "handle the exception\n";
}
finally {
	print "do some more cleanup\n";
};	# < -- Remember the semicolon

lol2

MinusPiPiTransform

Da wird sich doch der eine oder andere fragen, was diese seltsame Überschrift zu bedeuten hat. *gg* Also heute in diesem Kino nicht etwa das Wasserlassen von Kleinkindern sondern:
Wie transformiere ich Winkel in das Intervall [−π, π]?

Das Problem stellte sich mir vor einigen Wochen im Rahmen meiner Studienarbeit das erste mal. Ich hatte zunächst einen Algorithmus entwickelt, der sich in einer Schleife so lange dem Zielintervall näherte, bis der Winkel transformiert war. Das ist zuverlässig, leicht zu durchschauen und langweilig. Meine Idee für eine elegante einzeilige Lösung war ein wenig mit der Signum-Funktion rumzuspielen und durch geschicktes Anwenden von Runden und aller vier Grundrechenarten die Geschichte mit der Schleife zu umgehen.

Im Prinzip gehe ich dabei ähnlich vor wie im Schleifenalgorithmus: ich addiere oder subtrahiere solange Vielfache von 2π bis ich im Zielintervall bin. Will ich das in einer Zeile tun, muss ich das notwendige Vielfache rausbekommen und das Vorzeichen.

Stellt man sich den allseits beliebten Zahlenstrahl vor – vorstellen mit Zettel und Stift ist leichter ;-) – erkennt man die Zuordnung:

  • [−5π, −3π] : 2
  • [−3π, −π] : 1
  • [−π, π] : 0
  • [π, 3π] : −1
  • [3π, 5π] : −2

Das Intervall [−π, π] um 0 rum stört. Das erste was ich deshalb tue: ich addiere sign(inAngle)*π zu meinem Einganswinkel inAngel. Dadurch schaffe ich mir zwar einen toten Bereich um 0 rum, aber die neuen Abschnitte haben ihre Grenzen bei vollen Vielfachen von 2π, so dass ich nun durch 2π teilen kann. Das Ergebnis runde ich derart, dass ich auf die nächste volle Zahl in Richtung 0 runde, d.h. ich runde bei positiven Zahlen ab und bei negativen auf oder kurz gesagt: ich schneide einfach die Nachkommastellen des Divisionsergebnisses ab. ;-) Damit habe ich schon die gesuchten Koeffizienten mit richtigem Vorzeichen. Die multipliziere ich dann wieder mit 2π und das Ergebnis ziehe ich vom Eingangswinkel ab, fertig. In Simulink sieht das dann aus wie auf dem folgenden Bild (zum Vergrößern anklicken):

Transformation von minus PI bis PI in Simulink

In Matlab liest sich das wie folgt:

function outAngle = MinusPiPiTransform(inAngle)
    outAngle = inAngle - ...
        fix( (inAngle + sign(inAngle)*pi) / (2*pi) ) * ...
        2*pi;
end%function

Diese Lösung hatte ich wie gesagt vor ein paar Wochen entwickelt. Heute brauchte ich das ganze wieder, allerdings in C# – kein Problem. Einfach den Teil aus dem Matlab-Skript in C# übersetzt und dann sieht das ganze so aus:

public double MinusPiPiTransform(double inAngle) {
    return inAngle -
        Math.Truncate((inAngle + Math.Sign(inAngle) * Math.PI) / (2 * Math.PI)) *
        2 * Math.PI;
}

Spielverderber Pentium M

cpu-z Ich bin vor ein paar Wochen umgezogen. Mein neuer Mitbewohner hat ebenso wie ich einen Heimserver mit in die neue Wohnung getragen. Damit wir Strom sparen, soll aus den zweien ein neuer werden, auf dem dann mit Xen mehrere virtualisierte Systeme laufen. Im Zuge dessen schaue ich mir gerade verschiedene Plattformen an. Zur Auswahl stehen da unter anderem eisXen, von dem zur Zeit intern die beta 6 getestet wird. Außerdem in der engeren Wahl der c’t-Debian-Server, der ebenfalls Xen als Basis nutzt. Vielleicht wird es auch eine selbstgestrickte Lösung mit Debian oder Gentoo, mal sehen.

Vorher wollte ich allerdings die eine oder andere Sache testen. Da wir nicht unendlich viele Festplatten zur Verfügung haben, dachte ich mir, dass man das auch mit VMware probieren kann – dachte ich. Da hab ich nun 2 GB Arbeitsspeicher in meinem Notebook und einen fortschrittlichen Prozessor und dann hat Intel im Dothan-Kern die PAE weggelassen. Das macht das Ausführen eines Xen-Kernels auf dieser Maschine (auch in VMware) unmöglich. Blöde Spielverderber! :-(

Spenden für den AK-Vorratsdatenspeicherung

Netzpoltik.org schreibt heute im Beitrag Der AK-Vorratsdatenspeicherung braucht Geld, dass die Organisatoren der Demo am letzten Sonnabend für weitere Aktionen auch weitere finanzielle Mittel benötigen. Ich habe mich daher entschlossen, sollte es im antiblau shirt shop wider Erwarten zu Einnahmen kommen, sämtliche Gewinne zu spenden. Wer das ebenfalls direkt tun will, kann sich auf der Seite des Arbeitskreises Vorratsdatenspeicherung über Möglichkeiten informieren.