Sie sind auf Seite 1von 41

freiesMagazin November 2009

Topthemen dieser Ausgabe

SSH-Port absichern Seite 8


In Zeiten, in denen Heimanwender eine dauerhafte Verbindung ins Internet und unerfahrene Spieler einen
Linux-Server unterhalten, werden zunehmend auch private Systeme ein lohnendes Ziel feindlicher Angriffe.
Nicht nur sogenannte „Skript-Kiddies“, sondern auch professionelle Anbieter von Bot-Farmen grasen syste-
matisch die Adressbereiche ab und starten in regelmäßigen Abständen Angriffe auf Heimserver. Der wohl
am häufigsten angegriffene Port ist dabei der SSH-Port. Dieser Artikel zeigt ein paar Möglichkeiten, wie man
seine Systeme ein wenig sicherer machen kann. (weiterlesen)

Hardwarekompatibilität unter Linux Seite 21


Obwohl Linux bereits viele Geräte „out-of-the-box“ unterstützt, fürchten sich Linux-Nutzer bei jeder Neuan-
schaffung vor Problemen mit der neuen Hardware und Umsteiger von Windows zittern vor der Frage, ob ihr
bestehendes System denn tatsächlich unter Linux laufen wird. Offensichtlich gibt es auch im Zeitalter von
Plug & Play noch jede Menge Fallstricke und Stolpersteine, die dem Linux-Anwender den Spaß verderben
können. (weiterlesen)

Rückblick: Ubuntu-Treffen auf der Ubucon 2009 Seite 28


Wie bereits letztes Jahr fand an der Universität Göttingen die Ubucon 2009 statt, Deutsch-
lands größte Ubuntu-Veranstaltung. Vom 16. bis 18. Oktober konnten sowohl Ubuntu-Kenner
als auch Ubuntu-Neulinge den informativen Vorträgen zuhören oder bei Workshops aktiv teil-
nehmen. (weiterlesen)

© freiesMagazin GNU FDL Ausgabe 11/2009 ISSN 1867-7991


M AGAZIN

Editorial
Unfreie Software für alle
freiesMagazin und unfreie Software werden unsere Leser nach wie vor siezen. Bei Inhalt
Hin und wieder scheinen sich einige Leser zu der direkten Kommunikation per E-Mail mit Auto-
ren oder Lesern werden wir aber die Ansprache Linux allgemein
wundern, warum freiesMagazin über unfreie
wählen, die der Absender bevorzugt. Shebang – All der Kram S. 3
Software berichtet. Dabei wird vergessen, dass
Der Oktober im Kernelrückblick S. 7
sich freiesMagazin sowohl mit Linux als auch mit
Aktueller Stand des Wettbewerbs
Open Source beschäftigt, wobei der erste Begriff
Ende des letzten Monats startete der zwei- Anleitungen
eben auch unfreie Programme (und hier vor al-
te freiesMagazin-Wettbewerb und das bisheri- SSH-Port absichern S. 8
lem Spiele) mit einschließt, da auch diese zur
ge Interesse hat uns einfach überwältigt. Bisher Nautilus-Scripts S. 12
Welt von Linux gehören. Das heißt, auch in Zu-
wussten wir nicht einmal, dass unser Content- Testen mit Perl S. 14
kunft werden wir über unfreie Software berich-
Management-System Drupal für Kommentare ei-
ten, wenn diese unter Linux sinnvoll nutzbar ist.
ne zweite Seite anlegt, wenn es zu viele wer- Software
Aber wie sehen Sie das denn, werte Leser? Sind
den. Dementsprechend haben uns die zahlrei- ASCII-Art mal anders mit ditaa S. 18
Sie auch an unfreier Software interessiert, wenn
chen Fragen, Kommentare und Anmerkungen
diese unter Linux gut funktioniert und es vor
sehr gefreut. Jetzt fehlt eigentlich nur noch, dass Hardware
allem kein passendes freies Gegenstück gibt?
alle, die sich für den Wettbewerb interessiert ha- Hardwarekompatibilität unter Linux S. 21
Oder sind Sie eher der Meinung, dass in einem
ben, auch daran teilnehmen. Es gibt bereits fünf
freien Magazin auch nur „echte“ Open-Source-
KI-Einsendungen, alle für die Spielstufe „schwer“. Community
Software vorgestellt werden darf? Wir freuen uns
Die anderen Kategorien, vor allem die Katego- Ubuntu-Treffen auf der Ubucon 2009 S. 28
auf Ihre Kommentare.
rie „3-D-GUI“, sind noch etwas unterrepräsentiert
und wir würden uns freuen, wenn es auch dort Magazin
Neues aus „Sie vs. Du“
Teilnehmer gibt. Schicken Sie Ihren Beitrag ein- Editorial S. 2
Letzen Monat stellten wir in freiesMagazin die fach an , wir freu- Weitere Informationen zum Programmier- S. 34
Frage, ob unsere Art der Ansprache noch en uns darauf. wettbewerb
zeitgemäß und passend in der Open-Source-
Abschließend wünschen wir Ihnen wie immer viel Leserbriefe S. 36
Landschaft ist. Es ging um die Frage, ob wir in
Spaß mit der neuen Ausgabe. Veranstaltungen S. 40
freiesMagazin die Leser lieber Duzen oder Sie-
Vorschau S. 40
zen sollen. Wir haben uns über Ihre zahlreichen Ihre freiesMagazin-Redaktion Konventionen S. 40
Kommentare sehr gefreut und haben uns dar-
Impressum S. 41
aufhin für folgende Regelung entschieden: Inner-
halb des Magazins bleibt alles beim Alten, wir Das Editorial kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 2


P ROGRAMMIERUNG

Shebang – All der Kram von Markus Schnalke

ieser Artikel ist nicht nur eine Einfüh- (die Namen der Zeichen „#“ und „!“ im Compu- das selten vor. Und wenn, dann kann der Pro-

D rung in den Shebang-Mechanismus


unter Unix. Er soll neben Beispielen
und Empfehlungen für die Nutzung auch Hin-
terjargon) oder „Shell-Bang“ können aber eben-
so zu „Shebang“ geführt haben [1].

Vermutlich ist diese Schwammigkeit daran


grammierer ja auch wieder auf seinen herkömm-
lichen Kommandoaufruf zurückgreifen und She-
bang einfach außen vor lassen.
tergrundinformationen und Verständnis der
internen Abläufe vermitteln. schuld, dass die Shebang-Funktionalität zwar Shebang für den Shell-Skript-Schreiber ist
recht bekannt ist, ihr Name aber kaum. vergleichbar mit Makefiles für einen C-
Was ist Shebang? Programmierer: Es ist meist komfortabler mit,
So gut wie jeder, der schon mal ein Shell-Skript Funktionsweise aus Nutzersicht aber manchmal will man doch lieber ohne.
geschrieben hat, hat dabei auch eine Shebang- Dem Anwender bringt Shebang den Vorteil, dass
Zeile verwendet. Beispielsweise so: es ihn nicht kümmern muss, in welcher Program- Die Betriebssystemsicht
miersprache ein Programm geschrieben wurde. Es ist immer gut, wenn man weiß, wie eine Funk-
#!/ bin/sh Auch wenn das Programm in einer anderen Spra- tion intern arbeitet. Wie also – oder besser wo –
# Dieses Skript gibt das che reimplementiert wird, bekommt er davon die Shebang-Zeile interpretiert wird.
# Datum aus nichts mit. Dank Shebang kann er Skripte genau
date so starten, wie kompilierte Programme, nämlich Diese Aufgabe übernimmt der Kernel. In ihm
direkt mit ihrem Namen. muss die Unterstützung für Shebang einge-
Die erste Zeile ist entscheidend, also die, die baut sein. Alle aktuellen Unix-Kernel können mit
mit #! beginnt und dann den Pfad zum Interpre- Gäbe es kein Shebang, so müsste er je nach Shebang-Skripten umgehen. Das liegt vor allem
ter aufführt. In diesem Fall wird das Skript von verwendeter Programmiersprache Unterschiedli- daran, dass es Shebang schon ziemlich lange
/bin/sh interpretiert. ches eingeben. Beispielsweise sh skript oder gibt. Eingeführt wurde es von Dennis Ritchie in
perl skript. Oder falls es ein kompiliertes Pro- den 80er-Jahren für Version 8 Unix [2].
Name und Namensherkunft gramm ist, eben nur skript.
Was genau den Namen „Shebang“ trägt, ist nicht Da Skripte mit Shebang so aufgerufen werden,
so recht definiert. Die erste Zeile in Skripten wird Für den Skriptentwickler ist Shebang ebenfalls als wären es kompilierte Programme, werden sie
so genannt, aber auch der ganze Mechanismus eine Erleichterung, weil es nur einer Zeile am von der Shell auch ebenso behandelt. Das heißt,
oder auch nur die zwei Zeichen #!. Skriptbeginn bedarf, um den Interpreter festzu- sie kümmert sich gar nicht darum, ob es sich
legen. Danach muss er sich nicht mehr darum um ein Skript mit Shebang oder um ein kompi-
Auch die Herkunft des Namens scheint nicht kümmern, es funktioniert einfach. liertes Programm oder um irgendetwas anderes
ganz klar zu sein, zumindest kann man an ver- handelt, sie übergibt es nur dem Kernel, damit
schiedenen Stellen Unterschiedliches lesen. Im Allerdings gilt das nur, solange die Shebang- dieser es ausführt.
amerikanischen Slang bedeutet „Shebang“ so et- Zeilen einfach sind. Will man etwas komplizierte
was wie „Kram“ oder „Zeug“. Davon könnte das Dinge tun, dann stößt man schnell an die Gren- Der Kernel muss nun entscheiden, wie er den
Wort übernommen worden sein. „Hash-Bang“ zen des Mechanismus. Glücklicherweise kommt Aufruf behandelt. Dazu liest er die ersten paar By-

© freiesMagazin GNU FDL Ausgabe 11/2009 3


P ROGRAMMIERUNG

tes der Datei ein; dort befinden sich sogenannte 2.6.27.8, wurde die Ausführung von Shebang- dass env auf sehr vielen Systemen am gleichen
„Magic Numbers“ [3] die den Dateiinhalt charak- Skripten, die von Shebang-Skripten aufgeru- Ort (/usr/bin/env) liegt, überlässt man es ihm,
terisieren. Findet er dort „\177ELF“, dann ist es fen wurden, verweigert. Seit Linux-2.6.27.9 geht den eigentlichen Interpreter aufzurufen. Zum Bei-
ein für GNU/Linux kompiliertes Programm, das auch ein mehrstufiger Aufruf. spiel wie in folgendem Skript:
er direkt ausführen kann. #! zeigt dagegen ein
Shebang-Skript an. Dateien, die er nicht erkennt, Es lohnt sich diesbezüglich unbedingt einmal #!/ usr/bin/env python
lehnt er mit einem Fehler ab. in den Kernelquellcode zu spicken, so kompli- print "foo"
ziert ist das nämlich nicht. Die relevante Datei
Bei Shebang-Skripten wird nun der eigentliche im Linux-Quellcode ist fs/binfmt_script.c [4]. Leider hilft auch env nicht immer. AWK-Skripte
Programmaufruf durch den Inhalt der Shebang- Der Commit, der mehrstufige Aufrufe in Linux zum Beispiel kann man damit nicht aufrufen. Ein
Zeile ersetzt, wobei noch der Dateiname ange- eingeführt hat, lohnt auch einen Blick [5]. Bei Shebang-Skript für AWK sieht so aus:
hängt wird. Für diesen neuen Befehl entscheidet NetBSD findet man die Shebang- Behandlung in
der Kernel erneut, ob und wie er ihn verarbeitet.
#!/ usr/bin/awk -f
sys/kern/exec_script.c [6].
BEGIN { print "foo" }
Für das anfangs gezeigte Beispielskript läuft es Stolpersteine
folgendermaßen ab: Nach der Auswertung des Shebang führt der Ker-
Shebang ist nicht sehr kompliziert, doch es gibt nel /usr/bin/awk -f ./foo.awk aus. Das Ar-
1. Nach dem Aufruf von ./beispielskript.sh Dinge zu beachten, jedenfalls wenn das Skript gument -f sorgt dafür, dass AWK das nachfol-
fordert die Shell die Ausführung dieses Be- portabel sein soll. gende Argument als Skriptdatei behandelt und
fehls beim Kernel an. Den Interpreter-Pfad zum Beispiel. Dieser sollte nicht als Liste von AWK-Befehlen.
2. Der Kernel schaut sich die ersten Bytes der absolut sein. Manche Kernel können zwar mit re- Leider werden von den meisten Kerneln alle in
Datei an und findet dort #!. Somit generiert lativen Pfaden umgehen, aber nicht alle. der Shebang- Zeile übergebenen Parameter zu
er eine neue Ausführungsanforderung an sich einem zusammengefasst. (Die einzige bedeuten-
selbst. Er nimmt das erste Wort (nach #!) als Absolute Pfade sind kein Problem solange sie
/bin/sh lauten, denn eine Bourne-kompatible de Ausnahme ist FreeBSD.) Folgendes ist also
Befehl und den Rest der Zeile als erstes Argu- nicht möglich:
ment. Den Dateinamen und die Kommando- Shell ist auf allen Unix-Systemen an diesem Ort
zeilenargumente hängt er hinten an. zu finden. Schreibt man aber Python- oder Perl- #!/ usr/bin/awk -F: -f
Skripte, so hat man das Problem, dass diese In- { print $1 }
Der neue Aufruf ist somit terpreter nicht auf allen Systemen am gleichen
Ort installiert sind. Oft wird /usr/bin/python Denn der Kernel würde /usr/bin/awk "-F:
/bin/sh ./ beispielskript .sh zwar zutreffen, aber manchmal ist es halt auch -f" firstfield.awk starten. Doch mit der
/usr/local/bin/python oder etwas ganz an- einen Option -F: -f kann AWK halt nichts an-
Interessant wird die Situation aber, wenn ein deres. fangen.
Shebang-Skript ein weiteres aufruft – oder gar
sich selbst (rekursive Ausführung). In den meis- Um dieses Problem zu lösen, kann man sich des Die Bedeutung der Option -F: ist hierbei unwich-
ten Unix-Kerneln, so auch bei Linux bis Version Programms env bedienen. Unter der Annahme, tig, entscheidend ist, dass ein weiterer Komman-

© freiesMagazin GNU FDL Ausgabe 11/2009 4


P ROGRAMMIERUNG

dozeilenparameter vorhanden ist. Wer sich den-


noch für die Bedeutung interessiert, der möge in #!/ bin/sh while (( ++i < 5 )) ; do
der Manpage von AWK nachlesen. whoami ...
echo "http :// freiesmagazin .de" done
Dies trifft auch die Verwendung von env mit date
awk. Die Shebang-Zeile wäre #!/usr/bin/env Deshalb: Wer Bash-spezifische Funktionen in ein
awk -f und der Kernel würde /usr/bin/env Diese macht man mit Skript einbaut, der möge in der Shebang-Zeile
"awk -f" skript.awk ausführen. Das Ergeb- auch #!/bin/bash oder #!/usr/bin/env bash
nis ist die Fehlermeldung /usr/bin/env: awk $ chmod +x foo.sh schreiben.
-f: No such file or directory. Das am En-
Der Leser sollte nicht glauben, dass nur „exoti-
de dieses Artikels vorgestellte Programm prin- ausführbar. Nun lässt sich das Skript mit
sche“ Systeme /bin/sh nicht auf die Bash verlin-
targs kann dieses Verhalten wunderbar verant-
$ ./ foo.sh ken. Ubuntu ist ein gutes Gegenbeispiel. In neue-
schaulichen.
ren Version zeigt dort /bin/sh nämlich auf dash
Die meisten Systeme verbieten bei Skripten das (mit „d“!). Auch andere GNU/Linux-Distributionen
starten und führt zu einer Ausgabe ähnlich der
Setzen des setuid- und setgid-Bits. Auf diese sind dabei, diese Umstellung zu vollziehen.
folgenden:
Weise wird Sicherheitslöchern vorgebeugt, denn
sie entstehen bei solchen Skripten einfach viel zu meillo Aufgaben
schnell. http :// freiesmagazin .de Zum Schluss noch zwei Verständnisfragen, um
Di 15. Sep 10:49:18 CEST 2009 das vermittelte Wissen zu festigen und um zum
Dann wäre noch die Längenbegrenzung der eigenen Nachforschen anzuregen.
Shebang-Zeile zu erwähnen. Früher waren das
mal 14 Zeichen, doch diese Zeiten sind lange vor- Die häufigsten Shebang-Skripte dürften für die 1. Was ist der Unterschied zwischen den folgen-
bei. Heutzutage dürfte man, da man ja sowieso Shell sein, gerade bei diesen ist leider eine Un- den zwei Skripten?
nur einen Parameter übergeben kann, kaum je- art sehr verbreitet. Es geht um Bashism [7].
Das bedeutet, dass Bash-spezifische Funktio- #!/ bin/sh
mals an das Limit stoßen.
nen in ein Skript für /bin/sh enthalten sind. echo $0 $@
Eigene Skripte Bei GNU/Linux-Systemen wirkt sich das oft nicht
aus, weil /bin/sh ein Symlink auf /bin/bash und
Nach dem bisherigen Text und seinen Beispielen
sollte der Leser nun in der Lage sein, sein eige- ist und damit das Skript doch von der Bash aus-
#!/ bin/echo
nes Shell-Skript zu erstellen. Hier soll dieser Vor- geführt wird. Das ist aber nicht überall so. PO-
gang jedoch noch einmal exemplarisch gezeigt SIX verlangt nur, dass /bin/sh Bourne-Shell-
Wann verhalten sich die Skripte nicht gleich?
werden. kompatibel ist. Es kann sich somit auch zum Bei-
spiel dash oder die ksh dahinter verbergen. Die- 2. Wie sehen die einzelnen Verarbeitungsschrit-
Man erstellt im Editor eine Textdatei foo.sh mit se Shells können aber nichts anfangen mit Kon- te bei einem zweifach indirekten Shebang-Aufruf
folgendem Inhalt: strukten wie: aus? Das Szenario lässt sich so generieren:

© freiesMagazin GNU FDL Ausgabe 11/2009 5


P ROGRAMMIERUNG

Redaktioneller Hinweis: Die Antworten und


$ cd /tmp Kommentare zum Artikel können mit dem
$ echo ’#!/ tmp/b’ >a Betreff „shebang“ an die Redaktion unter
$ echo ’#!/ tmp/c’ >b gesendet werden.
$ cp printargs c Wir leiten die E-Mails an den Autor weiter.
$ chmod +x a b
L INKS
Was passiert beim Aufruf von ./a 1 2 3 in ei-
nem Kernel, der die Verschachtelung unterstützt [1] http://de.wikipedia.org/wiki/Shebang
(zum Beispiel Linux >= 2.6.27.9)? Was bei ande- [2] http://www.in-ulm.de/~mascheck/various/
ren? Was wird letztendlich wirklich ausgeführt? shebang/sys1.c.html
Und welche Ausgabe bekommt man? [3] http://de.wikipedia.org/wiki/Magische_Zahl_
(Informatik)
Das Hilfsprogramm printargs gibt einfach seine
[4] http://git.kernel.org/?p=linux/kernel/git/stable/
Argumente aus und ist damit sehr nützlich um
linux-2.6.27.y.git;a=blob;f=fs/binfmt_script.c
Shebang-Skripte zu testen. Sein Quellcode ist tri-
[5] http://git.kernel.org/?p=linux/kernel/git/stable/
vial und wurde von Sven Maschecks umfassen-
linux-2.6.27.y.git;a=commitdiff;h=09932109
der Seite zu Shebang [8] übernommen:
[6] http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/kern/
# include <stdio .h> exec_script.c?rev=1.63
[7] http://wiki.ubuntu.com/DashAsBinSh
int [8] http://www.in-ulm.de/~mascheck/various/
main (int argc , char* argv []) shebang.html
{
int i;
for (i = 0; i < argc; i++) {
printf (%d: %s\n", i, argv[i]); Autoreninformation
}
return 0; Markus Schnalke liebt Unix und
} dessen Skripting-Möglichkeiten. So
auch den Shebang-Mechanismus, der „Crime Scene“ © by Randall Munroe
Listing 1: printargs.gcc die Ausführung von Skripten deutlich (CC-BY-NC-2.5), http://xkcd.com/587
erleichtert.
Der Quellcode muss abgespeichert und mit ei-
nem C- Compiler übersetzt werden:

$ gcc -o printargs printargs .gcc Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 6


L INUX ALLGEMEIN

Der Oktober im Kernel-Rückblick von Mathias Menzer

asis aller Distributionen ist der Linux- Sprung zur dritten Entwicklerversion vermieden fallszahlengenerator künftig den Entropy Pool fül-

B Kernel, der fortwährend weiterentwi-


ckelt wird. Welche Geräte in einem
halben Jahr unterstützt werden und welche
und der Kernel 2.6.32-rc1/-rc2 hat nun mit zwei
gültigen Bezeichnungen einen Sonderstatus.

Die Version -rc4 [2] brachte zwei neue Treiber


len [5], der zum Beispiel Zufallswerte für die Er-
stellung von geheimen Schlüsseln liefert. Bislang
werden in diesen Pool Werte gespeichert, die
Funktionen neu hinzukommen, erfährt man, sich aus Tastatureingaben und Mausbewegun-
wenn man den aktuellen Entwickler-Kernel im im SCSI-Umfeld mit sich, dafür mussten cow- gen errechnen und damit als recht unvorherseh-
Auge behält. loop und agnx weichen. Der erstgenannte Trei- bar gelten. Bei Servern, die meist über keine di-
ber ermöglicht es, auf Block-orientierte Speicher- rekt angeschlossenen Eingabegeräte verfügen,
Der Oktober war ein relativ ruhiger Monat für geräte oder Dateien zu schreiben, ohne sie tat- entfällt diese Möglichkeit.
die Weiterentwicklung des Kernels. Dies mag un- sächlich zu ändern, indem die Schreibvorgänge
ter anderem daran gelegen haben, dass vom in ein „cowfile“ umgeleitet werden. Der Treiber L INKS
18. bis 20. des Monats die Größen der Kernel- muss überarbeitet werden und wurde auf Bitten [1] http://lkml.org/lkml/2009/10/4/170
Entwicklung wieder zum Linux Kernel Devel- der Entwickler entfernt, während agnx, der erst in
[2] http://lkml.org/lkml/2009/10/11/150
opers Summit trafen, der jährlichen Zusammen- der Version 2.6.29 aufgenommene Treiber für Air-
[3] http://lkml.org/lkml/2009/10/15/408
kunft, auf der über die weitere Arbeit am Linux- go AGNX00-Wlan-Chipsätze, defekt ist und nicht
[4] http://de.wikipedia.org/wiki/Trusted_Platform_
Kernel beraten wird. fortentwickelt wird. Die Version -rc5 [3] folgte
Module
recht bald auf -rc4 und brachte daher nicht sehr
Doch begonnen hatte der Oktober mit einem [5] http://www.linux-magazin.de/NEWS/Dells-Linux-
viele Änderungen mit. Eine davon ist „vmxnet3“,
Entwickler-implementieren-TPM-Funktion
kleinen Täuschungsmanöver. Aufmerksame Au- ein emulierter Netzwerkadapter für Gäste von
gen werden bemerkt haben, dass auf den Kernel VMwares Virtualisierungslösung, die zusammen
2.6.32-rc1 direkt die Version -rc3 [1] folgte. Der mit stmmac, einem Treiber für 10/100/1000MBit-
Autoreninformation
Grund hierfür lag in einem Tippfehler seitens Tor- Netzwerkkarten, von STMicroelectronics, den Lö-
valds beim Erstellen der ersten Entwicklerversion wenanteil an der fünften Entwicklerversion aus- Mathias Menzer wirft gerne einen
im Makefile, wo er als Extraversion „-rc2“ angege- machten. Blick auf die Kernel-Entwicklung, um
ben hatte. Obwohl der Commit, die Änderungsan- mehr über die Funktion von Linux
weisung im Kernel-Versionsverwaltungssystem, TPM und Linux zu erfahren und seine Mitmenschen
die Version selbst korrekt darstellt, fürchtete Tor- Eher mit Widerwillen schauen Linux-Nutzer auf mit seltsamen Begriffen und unver-
valds ein Durcheinander, wenn sich Entwickler das Trusted Computing Module (TPM) [4], steht ständlichen Abkürzungen verwirren
beim Diskutieren auf der Kernel-Mailingliste mal es doch zu sehr mit der Einschränkung der Rech- zu können.
auf die Bezeichnung des Commits, mal auf die im te des Anwenders am eigenen Rechner in Verbin-
Makefile hinterlegte beziehen, sollte tatsächlich dung. Doch nun soll der in einigen Dell-Servern
noch eine offizielle -rc2 Version veröffentlicht wer- bereits verbaute Chip einem sinnvollen Zweck
den. Dieses Dilemma wurde durch den direkten dienen. So soll der im TPM-Chip eingebaute Zu- Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 7


S ICHERHEIT

SSH-Port absichern von Mirko Lindner

n Zeiten, in denen Heimanwender eine dau- Wer nun glaubt, dass sein Server außerhalb erraten. Einer dieser Nutzer ist Root. Das Skript

I erhafte Verbindung ins Internet und uner-


fahrene Spieler einen Linux-Server unter-
halten, werden zunehmend auch private Sys-
des Fokusses der Angreifer liege, weil seine IP-
Adresse nicht öffentlich gemacht wurde, der irrt
mitunter gewaltig. Gelegentliche Tests ergeben,
arbeitet dazu eine bereits vorgefertigte Liste ab
und probiert schlicht alle Passwörter aus. Eine
zweite Möglichkeit ist, dass das Skript eine Liste
teme ein lohnendes Ziel feindlicher Angriffe. dass auch neue Systeme in relativ kleinen Net- von häufig benutzten Anwendernamen abarbei-
Nicht nur sogenannte „Skript-Kiddies“, son- zen bisweilen bis zu zweimal täglich Opfer von tet und ebenfalls mittels einer Liste das Passwort
dern auch professionelle Anbieter von Bot- Angriffen werden. Die wohl bekanntesten Angrif- zu erraten versucht.
Farmen grasen systematisch die Adressbe- fe waren dabei Listen-Attacken, in denen bei-
reiche ab und starten in regelmäßigen Ab- spielsweise versucht wird, das Passwort des Nut- Sicherlich gibt es auch kompliziertere Methoden
ständen Angriffe auf Heimserver. Der wohl zers Root mittels vorgefertigter Listen zu erraten. wie SSH Session Hijacking oder die Ausnutzung
am häufigsten angegriffene Port ist dabei der Wer unkonventionelle Passwörter benutzt, fühlt von Sicherheitsproblemen in ssh, wie Beispiels-
SSH-Port. Dieser Artikel zeigt ein paar Mög- sich wahrscheinlich sicherer, doch alleine schon weise des SSH CRC-32 Compensation Attack
lichkeiten, wie man seine Systeme ein wenig der Angriff kann die ohnehin meistens limitierten Detector-Fehlers. Die meisten Attacken benöti-
sicherer machen kann. Ressourcen des Heimservers massiv schmälern. gen allerdings einen direkten Zugriff auf den Ser-
ver und oftmals eine Portion Glück, weshalb sie
Redaktioneller Hinweis: Der Artikel „SSH-Port Ein weiteres Risiko stellt im Allgemeinen auch faktisch von den mittlerweile täglich stattfinden-
absichern“ erschien erstmals bei Pro-Linux [1] der Anwender dar, der oftmals seine Telefonnum- den Angriffen auf private Server so gut wie nie
und wird mit freundlicher Genehmigung des Au- mer aus einem Telefonbuch streichen lässt, bei durchgeführt werden. Das Gros der Angriffe stel-
tors unter der GNU Free Documentation License der Vergabe der Passwörter mitunter aber den len immer noch Listenangriffe dar.
veröffentlicht [2]. kreativen Tod stirbt und grundsätzlich als Pass-
wort seinen Vornamen nimmt. Auch hier ist der Der ssh-Daemon
Allgemeine Problematik Administrator in der Pflicht, den Anwender vor Bereits von Hause aus kann der ssh-Daemon so
Das Netz scheint von bösen Buben und Crackern seinem eigenen Untergang zu bewahren. abgesichert werden, dass ein Einbruch weitge-
voll zu sein, denn auch nicht publik gemachte hend ausgeschlossen wird. Hier werden ein paar
Server geraten zunehmend in die Schusslinie Der Angriff Möglichkeiten vorgestellt, wie man den Dienst ge-
von zwielichtigen Gestalten. Die Vorgehenswei- Um effektiv gegen potentielle Angreifer vorge- gen potentielle Angreifer schützen kann.
se ist dabei fast immer dieselbe: Skriptgesteu- hen zu können, muss man sich zuallererst im
ert wird nach lohnenden Zielen gesucht. Um den Klaren sein, wie die meisten Angriffe strukturiert Keine Macht den Doofen
Aufwand relativ klein zu halten, denn Zeit ist sind. Dazu reicht es, die Log-Dateien auszuwer- In den meisten Fällen ist es nicht notwendig,
bekanntlich Geld, werden dabei nur bestimmte ten, um zu erkennen, dass die überwiegende dass alle Anwender auf einen Server auch mit-
Ports abgefragt. Eines dieser lohnenden Ziele ist Mehrzahl der Angriffe auf zwei Arten erfolgt. Zum tels ssh zugreifen können. Am wenigsten besteht
dabei der SSH-Port (22), der regelmäßig Opfer einen wird versucht, mittels einer Liste das Pass- dabei die Notwendigkeit, dass Root sich direkt
von Brute-Force oder Wörterbuch-Attacken wird. wort der ohnehin schon bekannten Benutzer zu einloggen kann, bietet doch Linux mittels sudo

© freiesMagazin GNU FDL Ausgabe 11/2009 8


S ICHERHEIT

und su die Möglichkeit, im laufenden Betrieb den gibt an, nach wie vielen Sekunden die Verbin- wie man seinen Server mit dieser Methode absi-
Anwender zu wechseln. Bedenkt man ebenfalls, dung vom Server getrennt wird, falls sich der Be- chern kann, liefert der Artikel „Den Server absi-
dass die Hälfte der Listenangriffe gegen Root nutzer nicht korrekt einloggen konnte. chern“ [3] auf Pro-Linux von Mario Schröder.
durchgeführt werden, grenzt es fast schon an
Fahrlässigkeit, Root auch einen Zugriff auf den Durch die Limitierung des Zugang auf den Ser- Portsalat
Server mittels ssh zu erlauben. ver auf einen Benutzer und die Beschränkung auf Eine ebenso simple wie effektive Möglichkeit,
maximal drei Fehlversuche konnte die Sicherheit Server gegen automatisierte Angriffe zu schüt-
Um Root den Zugriff auf den Server zu ver- des Systems massiv gesteigert werden. zen, stellt die Umstellung der Ports dar. Das
wehren, bietet der Daemon mehrere Mög- Verfahren hilft zwar nur bedingt gegen dedizier-
lichkeiten. Die effektivste ist dabei, den Ein Schlüssel zum Glück te Angriffe auf einen Server, denn ein Angrei-
Parameter PermitRootLogin in der Datei fer wird mit hoher Wahrscheinlichkeit auch einen
/etc/ssh/sshd_config auf no zu setzen. Da- Eine weitere Möglichkeit, das System ge-
Portscan durchführen, für simple Skripte von
mit wird grundsätzlich dem Anwender Root ein gen Angriffe von außen zu schützen, stellt
Botfarmen-Betreibern ist es allerdings perfekt.
Zugriff mittels ssh verwehrt. Will man sich al- die Umstellung des Authentifizierungsverfahrens
lerdings von einem lokalen Netzwerk weiter als dar. SSH bietet grundsätzlich die Möglich- Dazu ändert man den Standardport von
Root auf den Server einloggen, bedarf es einer keit, sich mittels verschiedener Verfahren zu 22 auf einen anderen. Dazu muss man le-
anderen Strategie. authentifizieren. Das gängigste dabei ist die diglich den Parameter Port in der Datei
Passwort-Authentifizierung, die mit dem Parame- /etc/ssh/sshd_config verändern. Für diesen
Eine feinere Einteilung der Rechte ermöglicht die ter PasswordAuthentication gesteuert wird. Artikel wurde der Parameter auf den Port 12345
Option AllowUsers mit dem folgenden Eintrag: Schaltet man diese und weitere auf dem Pass- gesetzt. Versucht man sich nun regulär auf sei-
wort beruhenden Optionen aus, so kann sich nem Server einzulogen, wird es nicht mehr ge-
LoginGraceTime 600
MaxAuthTries 3 kein Anwender mehr auf den Server mit dem re- lingen und man erhält die Meldung, dass die
AllowUsers root@ *. mydomain user gulären Passwort einloggen. Doch was tun, um Verbindung abgewiesen wurde. Erst ein Login
trotzdem Zugriff auf den Server zu haben? Die auf dem Port 12345 bringt einen zum Ziel:
In Beispielfall würde das allen Anwendern grund- Antwort darauf liefert das schlüsselbasierte Ver-
sätzlich den Zugang auf den Server mittels ssh fahren. $ ssh myserver -p 12345 -l user
verwehren. Einzig die Anwender root und user
sind noch in der Lage, den Server zu betreten. In diesem Fall wird auf dem Server ein Schlüs- Sperren statt blocken
Während sich user allerdings von jedem Sys- selpaar generiert und dem ssh-Daemon bekannt Die obigen Möglichkeiten stellen nur einen Teil
tem aus einloggen kann, ist root auf die Domain gegeben. Während der Serverschlüssel, wie der der Funktionen dar, die ssh bietet, um Angrei-
mydomain beschränkt. Zugleich wird die Zahl der Name bereits suggeriert, auf dem Server ver- fer abzuwehren. Kombiniert mit den Systemtools
Versuche auf 3 und eine Schonzeit von zehn Mi- bleibt, erhält jeder berechtigte Anwender einen wie beispielsweise der pam_abl [4], die in der La-
nuten gesetzt. Gelingt es einem Anwender nicht, öffentlichen Schlüssel, der einen Zugriff auf den ge ist, Blacklists von falschen Logins zu erstellen,
sich mit höchstens drei Versuchen einzuloggen, Server erlaubt. Ein Angriff mittels Wörterbuch- ergeben sich mächtige Kaskaden von Program-
wird die Verbindung abgebaut. LoginGraceTime listen ist damit ausgeschlossen. Eine Anleitung, men, die jeden Angreifer in Schach halten.

© freiesMagazin GNU FDL Ausgabe 11/2009 9


S ICHERHEIT

Eine Steigerung stellt allerdings nicht nur das festgelegte Log-Dateien nach missglückten Lo- Ist der Abschnitt ssh-iptables angepasst wor-
Blocken, sondern auch das Aussperren von An- ginversuchen und erstellt beim Erreichen einer den, kann der fail2ban-Daemon auch schon ge-
greifern dar. Es ist grundsätzlich davon auszuge- zuvor festgelegten Anzahl von Fehlern eine Re- startet werden. Je nach Distribution mit dem
hen, dass jemand, der beispielsweise zehnmal gel in der Firewall. Dabei kommt die Anwendung Kommando /etc/init.d/fail2ban start.
ein falsches Passwort über SSH eingegeben hat, nicht nur mit SSH, sondern auch mit einer Viel- Mit dem Befehl fail2ban-client status ssh-
nichts Gutes im Schilde führt. Was liegt also nä- zahl von weiteren Applikationen klar. Die Filter- iptables kann man die Funktionalität testen:
her, ihm nicht nur ein Login zu verwehren, son- regelfunktionalität ermöglicht darüber hinaus die
# fail2ban - client status ssh - iptables
dern ihn gleich komplett für eine bestimmte Zeit Erstellung von neuen, an die Erfordernisse des Status for the jail: ssh - iptables
zu sperren? Anwenders angepassten Regeln. Für SSH bietet |- filter
fail2ban bereits schon | |- File list: /var/log/ secure
[ssh - iptables ] | |- Currently failed : 0
enabled = true
vorkonfigurierte Regeln
an, die lediglich eine klei- | ‘- Total failed : 74 2
filter = sshd ‘- action
action = iptables [name=SSH , port=ssh , protocol =tcp] nere Anpassung erfor- |- Currently banned : 3
sendmail - whois [name=SSH , dest= user@myhostname , y dern. | ‘- IP list: 94.75. x.x 94.75. x.x y
sender = fail2ban@myhostname ] 217.160. x.x
logpath = /var/log/ secure Die eigentliche Konfi- ‘- Total banned : 95
maxretry = 3
guration der Filterregel
Listing 1: Auszug aus der Datei jail.conf wird in der Datei /etc Alternativ kann man sich sich die geblockten
/fail2ban/jail.conf Adressen auch direkt in den Firewall-Regeln mit
Auch hier bietet Linux eine Reihe von Werkzeu-
umgesetzt. Der für das Absichern von SSH inter- dem Befehl
gen, die einem die Arbeit erleichtern werden. In
essante Abschnitt dieser Datei findet sich unter
diesem Artikel werden zwei der bekanntesten # iptables -L fail2ban -SSH
dem Eintrag ssh-iptables (siehe Listing1).
Vertreter vorgestellt, die das Aussperren von An-
wendern direkt in einer Firewall übernehmen. Mit enabled = true aktiviert man die eigentli- anschauen.

Hinweis: Man sollte grundsätzlich alle Änderun- che Überprüfung. Die unter action eingetrage- Wie man dann erkennen kann, führen fehlerhaf-
gen und Tests auf einem lokalen Server durch- ne Aktion legt fest, um welchen Port und um te Logins direkt zu einer Sperrung in der Firewall.
führen. Nichts ist schlimmer, als sich von ei- welches Protokoll es sich handelt. Ferner wird Je nach eingetragener Zeit bleibt die Sperrung
nem Root-Server durch eine falsche Konfigurati- hier die Adresse eingetragen, an die eventuel- so lange bestehen, bis sie entweder vom Admi-
on auszusperren! le Sperrungen per E-Mail versendet werden sol- nistrator aufgehoben wurde oder eine bestimmte
len. Ein wichtiger Eintrag ist der logpath, der Karenzzeit verstrichen ist.
fail2ban aussagt, welche Datei überprüft werden soll. Je
fail2ban [5] kann IP-Adressen aufgrund einer be- nach Distribution kann sich der Eintrag ändern. fail2ban ist nicht das einzige Werkzeug seiner
stimmten Anzahl fehlgeschlagener Loginversu- Mit maxretry legt man fest, nach wie vielen fehl- Art. So bieten beispielsweise auch DenyHosts [6]
che für eine einstellbare Zeit blockieren. Tech- geschlagenen Loginversuchen der Zugang ge- und BlockHosts [7] eine ähnliche Funktionali-
nisch gesehen überprüft die Applikation zuvor sperrt werden soll. tät. Auch zahlreiche freie Intrusion-Detection-

© freiesMagazin GNU FDL Ausgabe 11/2009 10


S ICHERHEIT

Systeme, wie beispielsweise OSSEC, bedienen Die Konfigurationsdatei /etc/knockd.conf be- Server ein lohnendes Ziel für Angreifer darstellt.
sich der Möglichkeit, bei einem Angriff Systemeherbergt alle relevanten Informationen, die Es lohnt sich deshalb, die gängigsten Strategi-
durch Filterregeln auszusperren. für einen reibungs- en anzuschauen. Allein schon die Änderung des
losen Betrieb von Standardports senkt die Zahl der erfolgten An-
[ openSSH ] sequence = 1234 ,2345 ,3456 seq_timeout = 5 command =
/sbin/ iptables -A INPUT -s %IP% -p tcp --dport 22 -j y
knockd notwendig griffe massiv. Schaltet man dann nur noch die-
ACCEPT sind. notwendigen Benutzer für einen SSH-Zugriff frei,
tcpflags = syn senkt man das Einbruchsrisiko weiter. Trotz allem
Die wichtigste Ein- sollte man allerdings beachten, dass kein Sys-
[ closeSSH ] stellung der Datei tem oder Server hundertprozentig sicher ist.
sequence = 1234 ,2345 ,3456 stellt die Option
seq_timeout = 5 sequence dar. Die- L INKS
command = /sbin/ iptables -D INPUT -s %IP% -p tcp y
--dport 22 -j DENY se legt die Ports [1] http://www.pro-linux.de/berichte/ssh-absichern.
tcpflags = syn fest, an denen html
Listing 2: knockd.conf angeklopft wer- [2] http://www.gnu.org/copyleft/fdl.html
den muss, um hereingelassen zu werden. [3] http://www.pro-linux.de/work/rootserver/teil2.html
knockd seq_timeout legt dagegen fest, wie lange [4] http://pam-abl.deksai.com/
Eine andere Strategie der Eindringlingsabwehr knockd wartet, bis die Sequenz übertragen wur-
[5] http://www.fail2ban.org/wiki/index.php/Main_
verfolgt knockd [8] mit Portknocking. Port- de, während command das Kommando festlegt,
Page
knocking stellt ein Verfahren dar, um einzel- das einen Port sperrt bzw. entsperrt. Durch den
[6] http://denyhosts.sourceforge.net/
ne Serverdienste oder einen kompletten Server Parameter tcpflags kann man festlegen, auf
abzusichern. Wie bereits der Name suggeriert, welche Pakete knockd reagiert. [7] http://www.aczoom.com/cms/blockhosts
muss der Anwender zuvor an den Server „an- [8] http://www.zeroflux.org/projects/knock
klopfen“, damit er Zugang zu einem vorher fest- Sind alle Optionen eingestellt, kann man knockd
gelegten Serverdienst erhält. Die Kommunikation entweder über init oder direkt mittels knockd
Autoreninformation
auf dem gewünschten Port wird dabei zunächst --debug -verbose starten. In diesem Fall wird
von einer Firewall vollständig geblockt. Sendet man direkt auf der Konsole die Resultate zu Mirko Lindner ist seit 1998 aktiv
der Anwender ein Klopfzeichen in Form von meh- Gesicht bekommen. Angeklopft wird nun mit in die Entwicklung des Kernels
reren SYN–Paketen mit einem zuvor vereinbar- dem Kommando knock serverip 1234 2345 eingebunden und verantwortlich für
tem Inhalt, „öffnet“ knockd den entsprechenden 3456. diverse Treiber und Subsysteme.
Port für den Anwender. Der Vorteil des Verfah- Daneben ist er einer der Betreiber
rens ist, dass ein Angreifer ohne die Kenntnis der Abschließendes von Pro-Linux.de.
zuvor vereinbarten Abfolge der Zeichen von au- Dieser Artikel konnte nur einen kleinen Teil der
ßen auch mit einem Port-Scanner nicht erkennen Möglichkeiten aufzeigen, die einem zur Absiche-
kann, ob ein bestimmter Serverdienst eingeschal- rung eines Systems zur Verfügung stehen. Man
tet wurde. sollte immer im Hinterkopf behalten, dass ein Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 11


GNOME

Nautilus-Scripts von Dominik Mäder

autilus bringt von Haus aus nützliche man entweder direkt in Nautilus nach Rechtsklick beispielsweise über das gleichnamige Paket aus

N Funktionen mit. So ist das Versenden


von E-Mails direkt per Rechtsklick auf
die entsprechenden Dateien möglich. Auch
auf die entsprechende Datei über das Kontext-
menü „Eigenschaften » Zugriffsrechte » Datei als
Programm ausführen“ oder über das Terminal
den Paketquellen installiert sein.
#!/ usr/bin/ python
# -*- coding : utf -8 -*-
das Entpacken und Archivieren von Daten mittels chmod u+x skriptdatei.
funktioniert komfortabel über das Kontextme- from os import execvp
nü. Aber oft wünscht man sich die eine oder Eigene Skripte from sys import argv
andere spezielle Funktion, die Nautilus nicht Die Erstellung eines eigenen Skripts fängt mit ei- parameter = argv + [’cat ’, ’output ’, ’y
beherrscht. ner leeren Datei innerhalb eines beliebigen Text- zusammengefasst .pdf ’]
editors an. Der Dateiname sollte möglichst aus- execvp (’pdftk ’, parameter )
Der eine konvertiert des Öfteren Audiodateien
sagekräftig gewählt werden, da das Skript mit sei-
von einem ins andere Format, der andere editiert Listing 1: mergepdfs.py
nem Namen im Kontextmenü von Nautilus aufge-
täglich die Rechte von Dateien. Und jedes Mal
listet wird.
muss kompliziert das entsprechende Programm In der ersten Zeile eines Skripts befindet sich im-
aufgerufen werden, um dort dann die entspre- Die meisten verfügbaren Skripte sind eine Anein- mer die Pfadangabe zum Interpreter. Neben die-
chenden Dateien auszuwählen. Aufgaben dieser anderreihung von Bash-Befehlen. Nautilus kann ser notwendigen Angabe ist es generell sinnvoll
Art lassen sich sehr leicht über über ein Nautilus- aber auch mit mit anderen Skriptsprachen umge- die verwendete Textkodierung (UTF-8) mit anzu-
Skript [1] aus dem Kontextmenü starten. hen, vorausgesetzt die entsprechenden Interpre- geben. Damit lassen sich Probleme mit dem In-
ter sind auf dem System installiert. terpreter vermeiden.
Skripte verwenden
Auch für Leute, die noch nicht mit dem Schreiben Im Folgenden werden zwei kleine Python-Skripte Im weiteren Verlauf des Skriptes werden Befehle
von Skripten vertraut sind, ist es lohnend sich mit vorgestellt, da sich diese sich sehr einfach und benötigt, die nicht in der Grundfunktionalität von
dem Thema zu befassen. Denn für viele Anwen- übersichtlich gestalten. Die Sprache Python wird Python enthalten sind. Diese zusätzlichen Befeh-
dungen hat schon jemand ein Skript geschrieben von Distributionen wie Ubuntu schon von Grund le müssen deklariert werden. In diesem Fall sind
und es für alle zugänglich gemacht. Skripte ver- auf unterstützt und es müssen keine zusätzlichen dies execvp aus dem Modul os und argv aus
schiedenster Art findet man bei g-scripts [2]. Pakete installiert werden. dem Modul sys.

Um ein Skript zu benutzen, muss es nur im PDFs zusammenfügen Der Kern des Skripts besteht nur aus zwei Zei-
Homeverzeichnis in den versteckten Ordner Ein weit verbreitetes Programm, um PDFs zu- len. Mit dem Befehl argv werden die von Nauti-
.gnome2/nautilus-scripts/ geschoben wer- sammenzufügen, ist Pdftk (siehe „Kurztipp: Bas- lus übergebenen Dateinamen in Form einer Lis-
den. Es ist darauf zu achten, dass das Skript ei- telstunde mit Pdftk“, freiesMagazin 03/2009 [3]). te aufgefangen. Je nach dem, wie viele Dateien
ne ausführbare Datei ist, da es sonst von Nau- Es lässt sich ideal für ein Nautilus-Skript verwen- in Nautilus ausgewählt worden sind, kann argv
tilus nicht gestartet werden kann. Dies macht den. Damit das Skript funktioniert, muss Pdftk beliebig viele Listenelemente enthalten. Für das

© freiesMagazin GNU FDL Ausgabe 11/2009 12


GNOME

Zusammenfügen von Dateien erfordert das Pro- teinamen nacheinander aus der Liste entnom-
#!/ usr/bin/ python
gramm Pdftk den Befehl cat output, gefolgt men und auf ihre Dateiendung hin geprüft. Ei-
# -*- coding : utf -8 -*-
von dem Namen der Ausgabedatei. Der Aufruf ne MP3-Datei wird mit mp3gain aufgerufen, eine
von Pdftk mit den entsprechenden Parametern from subprocess import Popen OGG-Datei mit vorbisgain. Dies geschieht so
erfolgt in der letzten Zeile des Skripts. from os import waitpid lange, bis die Liste abgearbeitet ist.
from sys import argv
Audiodateien normalisieren Hat das Skript alle markierten Musikstücke ab-
def gain(format , song): gearbeitet, so kann man eine Rückmeldung er-
Audiodateien, die man aus verschiedenen Quel- format . append (song)
warten. Dies ist sehr simpel über das Programm
process = Popen ( format )
len erhält, haben oft eine unterschiedliche Laut- Zenity möglich (siehe „Zenity und KDialog - Red’
finish = waitpid ( process .pid , 0)
stärke. Will man in seiner Musiksammlung aus- mit mir, PC“, freiesMagazin 03/2007 [6]).
schließlich Musikstücke des gleichen Lautstär- audio_dateien = argv [1:]
kepegels haben, so muss man sie normalisie- L INKS
ren [4]. Deshalb soll nun ein Skript zum Normali- while len( audio_dateien ) != 0:
[1] http://live.gnome.org/Nautilus/Extending
song = audio_dateien .pop ()
sieren von Audiodateien gezeigt werden. [2] http://g-scripts.sourceforge.net/
if song [ -4:] == ’.mp3 ’:
format = [’mp3gain ’, ’-r ’] [3] http://www.freiesmagazin.de/freiesMagazin-2009-
Das eigentliche Normalisieren erfolgt über gain(format , song) 03
den Aufruf der Programme mp3gain [5] und elif song [ -4:] == ’.ogg ’:
format = [’ vorbisgain ’, ’-a ’] [4] http://de.wikipedia.org/wiki/Normalisierung_
vorbisgain, die im Betriebssystem (wieder über (Audio)
gain(format , song)
gleichnamige Pakete) installiert sein müssen.
[5] http://wiki.ubuntuusers.de/MP3Gain
Popen ([’ zenity ’] + [’--info ’] + [’--y [6] http://www.freiesmagazin.de/freiesMagazin-2007-
Das Skript beginnt wie im ersten Beispiel mit text ’] + [’ Skript abgearbeitet ! ’])
03
den Angaben zur Skriptsprache, des Zeichensat-
Listing 2: audiogain.py [7] http://wiki.ubuntuusers.de/Nautilus/Skripte
zes und den eingebundenen Modulen. Im Gegen-
satz zum ersten Skript müssen hier aber die Pro- Die Programme zum Normalisieren werden auf
gramme mit jedem Musikstück separat aufgeru- jede einzelne Audiodatei angewandt. Deswegen Autoreninformation
fen werden. Damit die Dateien nacheinander und ist es praktisch, eine Funktion zu deklarieren
nicht parallel abgearbeitet werden, darf ein neuer (def gain), die das entsprechende Programm Dominik Mäder arbeitet gerne mit
Normalisierungsprozess erst starten, wenn der aufruft. Über den Befehl waitpid wird die Funk- freier Software. Skripte und weitere
vorherige beendet ist. Hierfür werden die Befehle tion erst verlassen, wenn der Prozess beendet kleine Helferlein machen ihm dabei
Popen und waitpid benötigt. Besitzt man einen ist. das Leben einfacher.
Prozessor mit zwei Kernen oder mehr, so könnte
man sich eine Routine überlegen, die zwei zeit- Die Liste der in Nautilus markierten Dateien er-
gleiche Prozesse erlaubt. Die Liste an Dateien hält man wie schon zuvor über den Befehl argv.
wäre dann doppelt so schnell abgearbeitet. In der folgenden while-Schleife werden die Da- Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 13


P ROGRAMMIERUNG

Testen mit Perl von Marcel Jakobs

ei der Erstellung größerer Program- Blackboxtesting zieren dazu gezwungen, mehr über die zu schrei-

B me ist das Testen ein praktisches und


wichtiges Werkzeug zur Qualitätssiche-
rung. Im Folgenden wird diese Technik am
Das Blackboxtesting (Schwarzer Kasten: Man
kann nicht hinein sehen und weiß nur, was man
eingeben kann und was heraus kommen soll)
benden Funktionen nachzudenken. Dadurch wer-
den die Funktionen normalerweise allgemeiner,
kleiner und somit wiederverwend- und wartbar.
Beispiel der Skriptsprache Perl behandelt. Es fängt schon vor dem eigentlichen Programmie-
gibt jedoch für fast alle Programmierspra- ren an. Zuerst werden Spezifikationen für die zu Whiteboxtesting
chen entsprechende Bibliotheken oder Modu- schreibenden Funktionen erstellt, die genau fest- Die Testfälle des Whiteboxtesting (auch Glas-
le. Somit könnte dieser Artikel – zumindest legen, was die Funktion berechnen und zurück- boxtesting genannt; durchsichtiger Kasten: Man
teilweise – auch für Programmierer anderer geben soll. Anhand dieser Spezifikation werden kann hinein schauen und die Testfälle nach dem
Sprachen interessant sein. nun Testfälle generiert, die testen, ob alle Aus- Inhalt erstellen) werden nach der Implementie-
nahmen behandelt wurden, die Grenzfälle richtig rung erstellt und orientieren sich am Kontroll-
Beim Testen von Software werden Testfälle ge- implementiert wurden und die Funktion das rich- fluss. Das bedeutet man schreibt für jede Bedin-
neriert, die überprüfen sollen, ob eine Funktion tige Ergebnis liefert. gung einen Testfall, der die Bedingung erfüllt und
oder Klasse (d. h. alle Methoden der Klasse) rich- Diese Testfälle werden jedes mal ausgeführt, einen, der die Bedingung nicht erfüllt. Dadurch
tig funktionieren. Testen spart somit das häufige wenn man etwas an der Funktion bzw. Klasse wird jeder Zweig des Programms einmal durch-
„Ausprobieren“ von Hand und berücksichtigt zu- geändert hat. So kann man sehr schnell überprü- laufen. So kann man feststellen, ob die Funk-
sätzlich noch alle Sonderfälle. Obwohl das Tes- fen, ob man etwas vergessen hat und alles rich- tion in jedem Fall richtig handelt. Damit werden
ten so wichtig ist, wird es immer wieder unter- tig funktioniert. Man kann auch in die Richtlinien z. B. Syntax- oder Tippfehler aufgedeckt, die die
schätzt und vernachlässigt. Dabei kann es viel zur Versionskontrolle aufnehmen, dass nur Code Semantik (also das Verhalten des Programms)
Zeit (und somit im kommerziellen Umfeld auch hochgeladen werden darf, der alle Tests bestan- ändern aber keinen Programmabbruch verursa-
Kosten) sparen und Fehlern vorbeugen. Wer pro- den hat. Dadurch befindet sich nur funktionieren- chen (z. B. wenn ein „<“ mit einem „>“ verwech-
biert schon von Hand jedes Mal nach der Ände- der Code im Repository. selt wurde). Da es of sehr schwer oder umständ-
rung einer Funktion alle möglichen Fälle durch? lich ist, geeignete Blackboxtestfälle zu generie-
Meist wird anhand von ein oder zwei Versuchen Wird (trotz Testfällen) ein Bug entdeckt, so wird ren, kann man wenigstens einen Whiteboxtest
„überprüft“, ob die Funktion bzw. das Programm sofort ein neuer Testfall geschrieben, bei dem die machen.
(noch) das gewünschte Resultat erbringt. Damit Funktion mit Bug durchfällt und den die verbes-
werden jedoch die meisten Fehler gerade bei serte Version besteht. Dadurch wird vermieden, CPAN (Comprehensive Perl Archive Net-
Grenzfällen oder Ausnahmen nicht erkannt. dass man bei einer Änderung der Funktion den work) [1] ist eine Paketverwaltung für Perl-
selben Fehler noch einmal begehen kann. Module. Die Suche und Installation von Modu-
len kann dabei über ein kleines (englischspra-
Es werden grob zwei Arten von Tests unterschie- Neben der Zeitersparnis und dem qualitativ bes-
chiges) Shell-Programm geschehen, welches
den: das Blackboxtesting und das Whiteboxtes- seren Code hat das Blackboxtesting einen weite-
man über das Kommando cpan aufruft.
ting. ren Vorteil: Man wird durch das vorherige Spezifi-

© freiesMagazin GNU FDL Ausgabe 11/2009 14


P ROGRAMMIERUNG

Testen mit Perl Dann wird das Paket herunter geladen, getestet -1 => -1,
Für Perl gibt es einige CPAN-Module zum Testen und installiert. # Teste Grenzfall 0
0 => 1,
(Test::Simple, Test::More, Test::Harness,
Für das Paket CPAN-Modul Test::More würde # Teste Grenzfall 1
Test::Pod, Test::Class etc.). Hier wird auf 1 => 1,
der Befehl zum Installieren also folgendermaßen
das Modul Test::More [2] eingegangen. Dieses 2 => 2,
lauten: 3 => 6,
Modul stellt Funktionen zur Verfügung, um das
# Teste Grenzfall 16
Ergebnis eines Tests mit einem vorher definier- cpan [1] > install Test :: More
16 => 20922789888000 ,
ten Wert zu vergleichen. Dazu kann man noch # Teste ungueltigen zu grossen Wert
einen Namen für jeden Test angeben, damit die Oft wird man gefragt, ob die Internetverbindung 17 => -1
Ausgabe aussagekräftiger wird. genutzt werden darf, um die entsprechenden Da- );
teien herunterzuladen und ob weitere Abhängig-
Für jeden Test wird bei der Ausführung des Test- keiten installiert werden sollen. Diese Fragen soll- foreach (sort keys % testhash ){
skripts eine Zeile ausgegeben. Zuerst ein „ok“ is( MathModule :: faculty ($_), y
te man in der Regel mit „Ja“ (bzw. „Yes“) beant-
oder „not ok“, je nach dem ob das Programm den $testhash {$_}, " faculty of: ". $_);
worten. }
Test bestanden hat oder nicht. Danach kommt ei-
ne laufende Nummer des Tests und dahinter der Beispiel Listing 1: faculty-test.pl
Name des Tests. Blackboxtest Es wird das Modul Test::More eingebunden.
Wird CPAN das erste Mal gestartet, so müssen Will man eine Funktion zur Berechnung der Fa- Dahinter steht die Anzahl der Tests, die man
einige Konfigurationsparameter festgelegt wer- kultät namens faculty im Modul MathModule durchführen möchte. In diesem Fall sind es 8. Da-
den. Oft wird man gefragt, ob dies automatisch schreiben, so wird diese zuerst spezifiziert: nach wird das zu testende Modul eingebunden
geschehen soll. Dies ist meist der einfachste  Eingabe: Ganze Zahl n zwischen 0 und 16 (MathModule) und ein Hash mit Testwerten und
Weg. Ansonsten wird man danach gefragt, von den erwarteten Ergebnissen definiert. In einer
 Ausgabe: Die Fakultät von n: n! oder −1 im
welchem Spiegelserver die Dateien herunterge- foreach-Schleife werden nun alle Tests durch-
Fehlerfall.
laden und welche Verzeichnisse zum Installieren laufen. Die Funktion is vergleicht den ersten Pa-
genutzt werden sollen. Dabei kann man die vor- Nun schreibt man einen Blackboxtest für diese rameter mit dem zweiten und erzeugt die oben
geschlagenen Werte (in eckigen Klammern) in Funktion: angegebene Ausgabe („ok“ oder „not ok“). Der
der Regel übernehmen. dritte Parameter definiert den Namen des Tests.
#!/ usr/bin/perl
Ein CPAN-Modul installiert man, indem man use strict ;
Um die Anzahl der Testfälle zu verringern, kann
in die CPAN-Konsole einloggt und das install- use warnings ;
use Test :: More tests => 8; man nun für jede Methode, die man testen möch-
Kommando mit dem Namen des zu installieren- use MathModule ; te, eine Testmethode schreiben und nur deren Er-
den Moduls aufruft: gebnis auswerten:
my % testhash = (
# cpan # Teste ungueltigen negativen Wert #!/ usr/bin/perl
cpan [1] > install Paketname :: Modulname -2 => -1, use strict ;

© freiesMagazin GNU FDL Ausgabe 11/2009 15


P ROGRAMMIERUNG

use warnings ; Um ein komplettes Programm zu testen, erstellt Tiefes Testen


use Test :: More tests => 1; man ein Testskript, das nacheinander jede Funk- Praktisch ist auch die Möglichkeit des tiefen
use MathModule ; tion durchtestet. Bei sehr vielen Funktionen kann Tests, der zwei Datenstrukturen (zusammenge-
sub testFaculty { man z. B. für jede Klasse oder jedes Modul eine setzte Datentypen, wie z. B. Arrays, Listen oder
Datei mit entsprechenden Testfunktionen schrei- Hashes) vergleicht, statt nur Skalare (also ele-
my % testhash = ( ben. Eine Funktion führt dann alle Tests in die- mentare Datentypen, wie z. B. int, char oder
# Teste ungueltigen negativen Wert ser Datei aus. Dann können die Tests jeder Datei float in vielen Programmiersprachen).
-2 => -1,
vom Testskript nacheinander ausgeführt werden.
-1 => -1,
# Teste Grenzfall 0
Dafür nimmt man sich das vorherige Beispiel und
Implementierung schreibt eine Funktion, die die Fakultäten von -2
0 => 1,
Nun kann die Funktion geschrieben werden:
# Teste Grenzfall 1 bis 17 berechnet und in ein Array schreibt. Dann
1 => 1, # File: MathModule .pm vergleicht man mit der Methode is_deeply das
2 => 2, # Array mit einem vorgegebenen, welches per
3 => 6, # Stellt mathematische Funktionen zur
# Teste Grenzfall 16 Hand erstellt wurde:
# Verfuegung
16 => 20922789888000 ,
#!/ usr/bin/perl
# Teste ungueltigen zu grossen y use strict ; use strict ;
Wert use warnings ; use warnings ;
17 => -1
use Test :: More tests => 1;
); package MathModule ; use MathModule ;
use base qw( Exporter );
my $ok = 1; our @EXPORT = qw( faculty ); sub facultyArray {
foreach (sort keys % testhash ){
my $min = shift ;
$ok = 0 if( MathModule :: faculty ($_)y # berechnet die Fakultaet fuer eine my $max = shift ;
!= $testhash {$_ }); # gegebene Zahl zwischen 0 und 16 my @results = ();
} sub faculty { for my $i($min .. $max){
my $n = shift ; # Fuege die berechnete Fakultaet
return $ok; return -1 if $n < 0 or $n > 16; # von $i an die Liste @result an
} return 1 if $n == 0; push(@results , MathModule :: faculty (y
return $n* faculty ($n -1); $i));
is( testFaculty () ,1," faculty "); } }
Listing 2: faculty-test-methode.pl Listing 3: MathModule.pm return @results ;
}
Hier wurde nur ein Test benötigt, um eine Funk- Wenn man sich nun entscheidet, die Funktion ite-
tion komplett zu testen. Bei vielen Funktionen rativ zu implementieren, so kann man den obigen my @facultynumbers = y
( -1 , -1 ,1 ,1 ,2 ,6 ,24 ,120 ,720 ,5040 , y
erhöht dies die Übersicht. Läuft der Test schief, Testfall weiter benutzen und sofort nach dem Pro- 40320 ,362880 ,3628800 ,39916800 , y
muss man dafür jedoch genauer hinsehen und grammieren überprüfen, ob die Funktion die ge- 479001600 ,6227020800 ,87178291200 , y
herausfinden, wo der Fehler steckt. wünschten Ergebnisse liefert. 1307674368000 ,20922789888000 , -1) ;

© freiesMagazin GNU FDL Ausgabe 11/2009 16


P ROGRAMMIERUNG

is_deeply ([ facultyArray ( -2 ,17)],[y } [7] http://de.wikipedia.org/wiki/White-Box-Test


@facultynumbers ]," arraytest ");
return $ok;
Listing 4: facultyArray.pl }
Autoreninformation
Praktisch ist das tiefe Testen natürlich vor allem is( testFaculty () ,1," faculty ");
für Funktionen, die Listen oder Hashes zurück Marcel Jakobs programmiert gerne
geben. Listing 5: testFaculty.pl in Perl. Das Testen gehört für ihn bei
größeren Programmen dazu.
Oft kann es sinnvoll sein, mit Zufallswerten zu tes- Weitere Informationen
ten, da man meist nicht alle Fälle einzeln testen Test::More bietet noch weitere Funktionen. Mit
kann (z. B. wenn es keine Obergrenze gibt). So den hier vorgestellten sollten aber schon ei-
kann man manchmal auch Fehler finden, die nur ne Reihe von Tests möglich sein. Weitere In- Diesen Artikel kommentieren
bei bestimmten Werten auftreten. Dies kann pas- formationen gibt es auf der CPAN-Seite von
sieren, wenn man vergisst Grenzwerte oder Aus- Test::More [2].
nahmen zu testen oder zu spezifizieren.
Sehr schön sind auch die Folien von Renée
Whiteboxtest Bäckers „Perl Test Workshop“ [3].
Der Whiteboxtest für die obige Implementation
Interessant sind auch die Wikipedia-Artikel über
der Fakultät würde z. B. so aussehen:
Softwaretests [4] und Testmethoden [5] sowie
#!/ usr/bin/perl Blackbox- [6] und Whiteboxtesting [7].
use strict ;
use warnings ; Meist wird man gerade im privaten Bereich we-
use Test :: More tests => 1; nig Lust haben, Testfälle zu schreiben. In diesem
use MathModule ; Fall sollte man zumindest für die Funktionen, die
besonders wichtig, kompliziert oder fehleranfällig
sub testFaculty {
sind, entsprechende Testfälle schreiben.
my % testhash = (
17 => -1, # Teste Wert > 16
L INKS
-1 => -1, # Teste Wert < 0 [1] http://www.cpan.org/
0 => 1, # Teste 0
1 => 1 # Teste != 0 [2] http://search.cpan.org/~mschwern/Test-Simple-
); 0.92/lib/Test/More.pm
[3] http://renee-baecker.de/talks/TestenMitPerl.pdf
my $ok = 1; [4] http://de.wikipedia.org/wiki/Softwaretest „SUV“ © by Randall Munroe (CC-BY-NC-2.5),
foreach (sort keys % testhash ){ http://xkcd.com/437
$ok = 0 if( MathModule :: faculty (y [5] http://de.wikipedia.org/wiki/Testmethoden
$_) != $testhash {$_ }); [6] http://de.wikipedia.org/wiki/Black-Box-Test

© freiesMagazin GNU FDL Ausgabe 11/2009 17


P RÄSENTATION

ASCII-Art mal anders mit ditaa von Volker Duetsch

rafisch aufbereitet, lassen sich Sach-

G verhalte häufig deutlich einfacher ver-


mitteln und vom Empfänger schnel-
ler verstehen. ditaa [1] verfolgt ein grund-
HTML

sätzlich unterschiedliches Bedienkonzept im Textdatei pandoc DocBook XML RTF


Vergleich zu bekannten Zeichenprogrammen, (Markup)
wie zum Beispiel Dia. PDF
LaTeX PDF
Dia [2] ermöglicht, ebenfalls wie ditaa, beispiels-
weise die Erstellung von Flussdiagrammen und HTML
Organigrammen. Diese werden in Dia wie ge-
wohnt per Maus gezeichnet. ditaa aber auch gra-
phviz [3] verfolgen einen anderen Ansatz. Wäh- Ein simples Übergangsdiagramm.
rend Graphviz für die Graphenerstellung die ei-
gene Auszeichnungssprache DOT [4] [5] verwen- Konsistente Arbeitsweise Versionierbares Dateiformat
det, erwartet ditaa einfache Textdateien als Quel- Der Anwender, der seine Dokumente beispiels- Durch den Einsatz eines Versionsverwaltungs-
le. Dabei sind die grafischen Elemente nicht in weise mit LATEX erzeugt, muss nicht seine ge- systems [6], zum Beispiel git oder Mercurial, kön-
einer eigenen Sprache beschrieben, sondern mit wohnte Arbeitsumgebung verlassen, um mal nen mehrere Anwender gleichzeitig auch an Gra-
den Symbolen -, + und | dargestellt. Pfeilverbin- eben ein Diagramm zu erstellen. fiken arbeiten.
dungen werden durch -, <, > erzeugt.
Portables Dateiformat Skriptbares Dateiformat
Warum Textdateien? Mit kleinen Abstrichen (auf das Thema Kodie- Dateiinhalte lassen sich durch Skripte (mittels
Textdateien haben einige Vorteile. rung ISO-8859-* bzw. UTF-8 soll hier nicht bash, grep, sed, awk, Perl, Python, PHP, Ruby,
eingegangen werden) können GNU/make etc.) generieren und manipulieren,
+-> HTML diese Dateien über Betriebs- d. h. die Arbeit lässt sich je nach Einsatzzweck
+---------+ +--------+ +-----------+ | systemgrenzen hinweg ausge- und Aufgabe teilweise oder vollständig automati-
| Textdatei |->| pandoc | ->| DocBook XML|-+-> RTF tauscht, be- und verarbeitet sieren.
|( Markup ) | +---+----+ +-----------+ | werden. Nicht zu vergessen,
+---------+ | +-> PDF dass es auch Server gibt, die HTML-Export
+-> LaTeX -> PDF keine grafische Oberfläche ha- Ein großer Vorteil ist, dass Zeichnungen direkt in
|
ben – Textdateien lassen sich das HTML-Dokument [7] eingebettet werden kön-
+->HTML
aber auch in der Konsole inkl. nen. Eine Unterstützung für weitere Umgebun-
Listing 1: ditaa-beispiel-1.txt ASCII-Zeichnungen anzeigen. gen wie beispielsweise JAVADoc ist geplant.

© freiesMagazin GNU FDL Ausgabe 11/2009 18


P RÄSENTATION

Entwicklung und Download Ein kleiner Hinweis für die Vim-Nutzer: Neben Für die Erstellung und Konvertierung der Bei-
ditaa steht für „DIagrams Through Ascii Art“, wur- dem DrawIt!-Plugin gibt es auf der Website von spieldateien wurden ungefähr fünf Minuten benö-
de von Stathis Sideris in der Sprache Java ent- Charles E Campbell, Jr. [9] noch zahlreiche wei- tigt. Im ersten Beispiel wurde ohne zusätzliche
wickelt und unterliegt der GPL. Leider wird auf tere, sehr nützliche Plugins: z. B. Alingment (hilft Parameter auf die Verwendung von Formen und
der Website noch auf die Beta-Version 0.6b hin- bei der Ausrichtung von Texten anhand von Mus- Farben verzichtet.
gewiesen, davon sollte man sich aber nicht ab- tern, wie z. B. bei Kommentaren im Quellcode)
+------------+ +-------+ +--------+
schrecken lassen, denn zum Download wird die und Visual Incrementing (nützlich beim Erzeugen |cF00 | |cFF0 | |c0F0 |
aktuelle Version 0.8 angeboten. von Zahlen- oder Datenreihen). | Textdatei +-->| ditaa |-->| Grafik |
| {d}| | {io }| | {d}|
+------------+ +-------+ +--------+ Alle wesentlichen Informationen zur Gestaltung +------------+ +-------+ +--------+
| | | | | | der Grafik und den Optionen von ditaa sind auf ei-
| Textdatei +-->| ditaa |-->| Grafik | Listing 3: ditaa-beispiel-3.txt
ner HTML-Seite [10] zusammengefasst. Obwohl
| | | | | |
die Anzahl der Kommandooptionen übersichtlich $ java -jar ditaa .jar ditaa -beispiel y
+------------+ +-------+ +--------+
und die Gestaltungsmöglichkeiten einfach gehal- -3. txt ditaa -beispiel -3. png
Listing 2: ditaa-beispiel-2.txt ten sind, lassen sich mit geringem Aufwand an-
sprechende Grafiken erstellen. Mit kleinen Veränderungen werden aus den
Grundlage Rechtecken entsprechende Formen generiert.
Ausgangspunkt für die Grafikerstellung ist eine Mittels {d} (= Dokument) und {io} (= Input/Out-
einfache Textdatei. Diese kann mit einem Editor, put) wird die Form bestimmt. Der Zusatz cF00
Textdatei ditaa Grafik
wie z. B. Vim, Emacs, Kate oder gedit, erstellt signalisiert ditaa, dass die Form in der Far-
werden. Wer sich für den Einsatz von Vim ent- be F00 gezeichnet werden soll, wobei dies die
scheidet, dem sei das DraWIt!-Plugin [8] empfoh- die Hex-Kurzform von Hex FF0000 ist, was den
len. Von der Textdatei zur Grafik. RGB-Werten (255, 0, 0) entspricht bzw. für das
menschliche Auge die Farbe Rot darstellt. Das
Mittels DrawIt!-Plugin ist es möglich, mit den Beispiele mag für den einen oder anderen etwas umständ-
Cursor-Tasten zu „malen“. Um in den Zeichenmo- ditaa wird als Java-Archiv [11] ausgeliefert. Um lich sein, glücklicherweise gibt es entsprechende
dus zu gelangen, gibt man im Kommando-Modus die Konvertierung zu starten, reicht es java Farbtabellen [12], die einem die Farbauswahl er-
des Vim \di ein. Unterhalb der Statuszeile er- -jar ditaa.jar einzugeben, gefolgt vom Da- leichtern.
scheint dann die Meldung [Drawit]. Jetzt befindet teinamen für die Quell- und Zieldatei. Die Quell-
man sich im Zeichenmodus und kann „Kästchen datei ist die ASCII-Datei ditaa-beispiel-1
malen“. Um den Zeichenmodus wieder zu been- .txt, aus der mit Hilfe von ditaa die Zieldatei Textdatei ditaa Grafik
den, wechselt man mittels Esc in den Komman- ditaa-beispiel-1.png generiert wird:
domodus und verlässt mit \ds den Zeichenmo-
dus. Weitere Details zur Verwendung des Plugins $ java -jar ditaa .jar ditaa -beispiel y
erfährt man mittels :help drawit. -2. txt ditaa -beispiel -2. png Und nun mit etwas mehr Farbe und Form.

© freiesMagazin GNU FDL Ausgabe 11/2009 19


P RÄSENTATION

chende Ergebnisse. Jeder sollte es zumindest [9] http://mysite.verizon.net/astronaut/vim/


Kundensystem einmal angetestet haben. [10] http://ditaa.sourceforge.net/#usage
+------------+ [11] http://de.wikipedia.org/wiki/Java_Archive
+--------+ Kundensystem |<-----+ [12] http://www.farb-tabelle.de/de/farbtabelle-
VDA4905 VDA4913 VDA4906 | +------------+ |
| ^ | websicher-Rgb.htm
v | | [13] http://latex-beamer.sourceforge.net/
+-------+ +---+---+ +---+---+
| VDA4905 | | VDA4913 | | VDA4906 | [14] http://de.wikipedia.org/wiki/Unix-Philosophie
+---+---+ +-------+ +---+---+
Dienstleister | ^ ^
| | |
| | +-------+ Autoreninformation
| | |
SAP R/3 | +-----+-----+-+
IDOC +------->| Dienstleister | Volker Duetsch nutzt Linux seit 1994
+----+--------+ überwiegend privat. Beim Einsatz von
| ^
v | Open-Source-Programmen richtet er
+----+--+
seinen Fokus auf Programme, die
|SAP R/3|
Belegart LZ Lieferschein Faktura |IDOC | auf verschiedenen Betriebssystemen
VDA4905 VDA4913 VDA4906
+-++--+-+
verfügbar sind.
|^ ^
+---------------+| |
| | +------------+
Praktisches Beispiel: Electronic Data v | |
Interchange. +-----------+ +---+--------+ +---+---+
| Belegart LZ| | Lieferschein | | Faktura |
| VDA4905 +->| VDA4913 +->| VDA4906 |
Diesen Artikel kommentieren
Fazit +-----------+ +------------+ +-------+

Zum Abschluss noch ein praktisches Beispiel, Listing 4: ditaa-beispiel-edi.txt


das im Rahmen einer Schulung zum Thema EDI
(Electronic Data Interchange) im SAP-Umfeld
L INKS
entstand. Die mit ditaa erzeugte Grafik ende- [1] http://ditaa.sourceforge.net/
te schließlich in einem PDF-Dokument, das wie- [2] http://projects.gnome.org/dia/
derum mit der LATEX-Beamer-Klasse [13] erzeugt [3] http://www.graphviz.org/
wurde. Die LATEX-Beamer-Klasse ist eine Alterna- [4] http://de.wikipedia.org/wiki/DOT
tive zu Powerpoint und zu Impress von Open- [5] http://www.graphviz.org/pdf/dotguide.pdf
Office.org.
[6] http://de.wikipedia.org/wiki/Versionierung
ditaa verkörpert die Unix-Philosophie [14], ist por- [7] http://ditaa.sourceforge.net/#html_mode
tabel, lässt sich einfach bedienen, benötigt nur ei- [8] http://mysite.verizon.net/astronaut/vim/ „Fortune Cookies“ © by Randall Munroe
ne geringe Einarbeitungszeit und liefert anspre- #DRAWIT (CC-BY-NC-2.5), http://xkcd.com/425

© freiesMagazin GNU FDL Ausgabe 11/2009 20


H ARDWARE

Hardwarekompatibilität unter Linux von Rainer König

rotz des folgenden Zitats fürchten sich dieser Chip tatsächlich schon von Linux unter- Open Source vs. Proprietär

T Linux-Nutzer bei jeder Neuanschaffung


vor Problemen mit der neuen Hardware
und Umsteiger von Windows zittern vor der
stützt wird? Ein weiteres Problem ist, dass sich
die Hersteller vorbehalten, auch mal was an der
Hardware zu ändern, ohne das groß zu verkün-
Wenn ein Hersteller dann Linux-Kompatibilität zu-
sichert, ist die nächste Frage, ob der zum Be-
trieb der Hardware notwendige Treiber ein Open-
Frage, ob ihr bestehendes System denn tat- den. Kann man sich sicher sein, dass die Web- Source-Treiber ist, also unter der GPL steht und
sächlich unter Linux laufen wird: „Linux sup- cam, die man am Nachmittag beim Elektronik- im Kernel gepflegt wird, oder ob es sich hier um
ports more devices ’out of the box’ than eve- Discounter kaufen will, die gleichen Chips enthält, einen sogenannten proprietären Treiber handelt,
ry other operating system ever has“ (Greg wie die Webcam mit dem gleichen Namen, für die also Closed Source, der nur vom Hersteller ge-
Kroah-Hartman, Keynote zum Ottawa Linux man im Internet einen sehr positiven Erfahrungs- wartet werden kann. Für den Nur-Anwender, der
Symposium 2006). bericht gefunden hat, der allerdings schon zwölf möchte, dass sein System läuft, mag dieser Un-
Monate alt ist? terschied zunächst irrelevant erscheinen. Trotz-
Generelle Probleme dem sollte man folgende Konsequenzen beim
Hardware und Zubehör werden gerade im Einsatz von proprietären Treibern bedenken:
Offensichtlich gibt es auch im Zeitalter von Desktop-Bereich immer noch für das Betriebs-
Plug & Play noch jede Menge Fallstricke und Stol- system mit dem größten Marktanteil entwickelt, Schlecht gepflegte proprietäre Treiber können
persteine, die dem Linux-Anwender den Spaß nämlich Microsoft Windows. Entsprechend aus- beim nächsten Kernel-Update zu massiven Pro-
verderben können. sagekräftig sind dann auch die Verkaufsverpa- blemen führen, weil der dann aktualisierte Kernel
ckungen gestaltet. Man liest, dass die Hard- vielleicht eine marginale ABI-Änderung (Applica-
Das Babylon der Neuzeit
ware wohl jetzt auch mit Vista läuft, zur Linux- tion Binary Interface) mitbringt, die mit dem Trei-
Eines der größten Probleme bei der Neuanschaf- Verwendbarkeit findet man aber in den wenigsten bermodul inkompatibel ist.
fung von Hardware ist, dass es im IT-Sektor nur Fällen Hinweise.
so von „Buzzwords“ wimmelt. Man kauft heute Support für Closed-Source-Treiber wird von den
PCs mit Markenbezeichnungen, ohne tatsäch- Um hier eine Veränderung zu bewirken, bedarf Leuten und Firmen im Open-Source-Umfeld eher
lich zu verstehen, welche Hardware den Com- es massiver Anstrengung der Community. Zum ungern geleistet oder kann mangels Einblick in
puter „unter der Haube“ antreibt. Selbst wenn einen kann man Hersteller, die explizit auch auf die Quellen des Treibers gar nicht geleistet wer-
man hier Details sucht, wird man hoffnungslos die Verwendbarkeit unter Linux hinweisen, durch- den. In so einem Fall wird man dann aufgefor-
mit seltsam klingenden Begriffen überhäuft. Wer aus mal eine lobende E-Mail schicken, damit die dert zu beweisen, dass das Problem auch ohne
weiß, was der Unterschied zwischen „Nehalem“ sehen, dass Kunden das Produkt eben auch we- den proprietären Treiber existiert, was sich sehr
und „Core i7“ ist? Oder ob „Q45“ das gleiche gen der Linux-Kompatibilität gekauft haben. Zum schwierig gestalten kann, wenn der proprietäre
ist wie „Tylersburg?“ Oder welcher Hardwarechip anderen muss man Hersteller, die Linux ignorie- Treiber fundamentale Funktionen wie beispiels-
sich auf der „Intel Gigabit Ethernet LAN“-Karte ren, auch mal darauf hinweisen, dass sie ange- weise den Zugriff auf die Festplatte bereitstellt.
befindet, die sich „onboard“ auf dem Mainboard sichts dieser Ignoranz bei der Kaufentscheidung Entfernt man diesen Treiber, wird das System
des neuen Rechners befinden soll. Und dann, ob nicht berücksichtigt wurden. nicht mehr funktionieren und man kann somit

© freiesMagazin GNU FDL Ausgabe 11/2009 21


H ARDWARE

nicht den Beweis antreten, dass der proprietäre ten sein. Der Linux-Anwender kann damit relativ immer noch einen auf der Version 2.6.18 basie-
Treiber nicht am Problem beteiligt ist. sicher sein, dass seine Hardware auch nach Ak- renden Kernel, die Treibermodule für moderne
tualisierungen nicht aufhört zu funktionieren, es Hardware sind aber trotzdem vorhanden.
Proprietäre Treiber werden eigentlich aktuell nur sei denn er nutzt noch Hardware aus der PC-
für die Graphikkarten von nVidia und ATI ein- Steinzeit, denn hin und wieder werden solche Manchmal scheitert dieses „Backporting“ aller-
gesetzt, wobei man anmerken muss, dass hier prähistorischen Treiber auch mal aus dem Kernel dings auch an dem Umstand, dass sich die ABI
auch bereits an Open-Source-Treibern gearbei- entfernt, weil die Kernelentwickler zu der Annah- im Kernel so gewaltig verändert hat, dass ein
tet wird. Wer aber beispielsweise gerne mit Flight- me gekommen sind, dass niemand auf der Welt neuerer Code nur mit irrsinnigem Aufwand in alte
Gear spielt, wird höchstwahrscheinlich auf die diese Hardware noch benutzt. Kernel eingebracht werden könnte. Beispielswei-
beschleunigten OpenGL-3D-Treiber dieser Fir- se enthält Red Hat Enterprise Linux wenig An-
men zurückgreifen. Da zudem beispielsweise der Ein weiteres Problem ergibt sich daraus, dass passungen für WLAN-Karten, eben weil sich seit
nVidia-Treiber so gekapselt ist, dass der eigent- der normale Linux-Anwender eben genau nicht 2.6.18 das komplette WLAN-Subsystem so gra-
liche proprietäre Treiber mittels eines quelloffe- den Vanilla-Kernel benutzt, sondern den Kernel, vierend geändert hat, dass sich keiner den Auf-
nen Schnittstellenmoduls an den Kernel ange- der mit seiner Distribution installiert wurde. Eine wand für einen Backport auferlegen will.
flanscht wird, ist hier die Gefahr einer inkonsisten- logische Konsequenz ist: Wenn man neue Hard-
ten ABI eher gering, weil die Stabilität der ABI in ware nutzen will, muss man auch neue Versionen Selbsthilfe
Richtung Closed-Source-Teil vom Open-Source- der Distributionen einsetzen. Ein SUSE 10.0 von
Kompatibilitätslisten
Kernelmodul sichergestellt wird. Dieser Treiber 2005 enthält einen Kernel, der natürlich keine
Hardware wie den Boazman-Gigabit-LAN-Chip Die zentrale Anlaufstelle zum Thema Linux-
und das zugehörige Kernelmodul wird auch oft
aus dem Jahr 2008 unterstützt. Treiber im Internet findet man auf der Seite
über Repositorys für verschiedene Distributionen
von Linux-Drivers.org [1]. Hier gibt es eine gan-
als installierbares Paket angeboten. Trotzdem kann man auch mit „aktuellen“ Distri- ze Menge Links zu weiteren Kompatibilitätslis-
Vanilla vs. Distribution butionen noch manche Bauchlandung in Sachen ten und jede Menge Informationen zum Thema
Hardwarekompatibilität hinlegen. Debian Lenny Linux-Treiber.
Ein anderer Fallstrick auf dem Weg zur Linux-
nutzt beispielsweise noch den Kernel 2.6.26, was
Kompatibilität ist, dass es eben nicht „das Linux“ Allerdings muss man sich auch vergegenwärti-
bedeutet, dass auf sehr neuen Geräten eben Din-
gibt. Kommt ein Hersteller mit einem neuen Si- gen, dass viele dieser Kompatibilitätslisten nicht
ge wie der oben erwähnte LAN-Chip noch nicht
liziumchip auf den Markt und will dafür Treiber sehr umfassend sind und jede von Freiwilligen
funktionieren, weil deren Treibercode erst im Ker-
bereitstellen, dann ist der logische und sinnvol- gepflegte Datenbank mit Kompatibilitätsinforma-
nel 2.6.27 hinzukam.
le Übergabepunkt der „Vanilla-Kernel“ bei Ker- tionen nur so gut sein kann, wie das, was die Be-
nel.org. Treiber, die hier eingebunden sind, wer- Dieses Problem ist den Kernel-Entwicklern nutzer dort hineinschreiben.
den bei Aktualisierungen des Kernels automa- durchaus bewusst und so geben sich die Distribu-
tisch ebenfalls aktualisiert. Wenn also beispiels- toren wie Novell und Red Hat für ihre Enterprise- Daher muss man an die Nutzer appellieren, auch
weise der Treiber für die LAN-Karte im Kernel Distributionen sehr viel Mühe, neue Treiber in die mal ein paar Minuten zu spendieren, um solche
2.6.27 dazu kam, dann wird dieser Treiber auch vergleichsweise alten Kernel einfließen zu lassen. Informationen zu einem Gerät einzutragen. An-
in den Folgeversionen 2.6.28, 2.6.29 usw. enthal- So enthält ein Red Hat Enterprise Linux 5.4 zwar dere Nutzer werden davon profitieren und man

© freiesMagazin GNU FDL Ausgabe 11/2009 22


H ARDWARE

selbst profitiert von den gut dokumentierten Ein- ses System ein sogenanntes Bulletin im Novell te geben. Je nach dem was man erwerben will,
trägen der anderen. Bulletin System und kann über die Suchseite [3] kann es auch nützlich sein, einfach ein Note-
gefunden werden. Da beim SUSE Linux Enter- book mit Linux mitzubringen, um direkt im Ge-
Zertifizierungen
prise Desktop mittlerweile auch die 3-D-Desktop- schäft ausprobieren zu können, ob das neue
Im Geschäftsumfeld legen viele Kunden Wert
Effekte wie der rotierende Würfel mitgetestet wer- USB-Gadget auch mit Linux-Treibern versorgt ist.
auf zertifizierte Systeme. Die Distributoren No-
den, kann hier auch zum Test der proprietäre
vell und Red Hat bieten hierfür Hardware- Kernel-Treiber Grundlagen
nVidia-Treiber benutzt werden. Wird ein Compu-
Zertifizierungsprogramme an, bei denen meist
ter in drei Ausbauvarianten getestet, so gibt es Wenn es wirklich ans Eingemachte geht, dann
komplette Systeme auf ihre Linux-Kompatibilität
nach erfolgreichen Tests entsprechend drei Bulle- hilft oft ein grundlegendes Verständnis davon,
hin getestet werden.
tins, welche dies dokumentieren. wie Gerätetreiber funktionieren.
Bei Red Hat wird hierbei ein komplettes System
Newsgroups und Foren Device-IDs ermittlen mit lspci / lsusb
mit allen möglichen Bestelloptionen qualifiziert,
Ein weiterer Anlaufpunkt für Hilfesuchende sind Im Zeitalter von Plug & Play haben Hardware-
bevor es einen Eintrag in der Red Hat HCL [2]
Newsgroups im deutschen Usenet, wie et- Erweiterungen standardisierte Schnittstellen, um
erhält. Das bedeutet, ein System, welches bei-
wa de.comp.os.unix.linux.hardware oder entspre- dem System mitzuteilen, „wer“ sie sind. Bei Er-
spielsweise mit fünf verschiedenen Grafikkarten
chende Webforen. Bevor man hier aber munter weiterungskarten passiert das im Allgemeinen
bestückt werden kann, muss auch mit allen die-
Fragen in die Runde wirft, sollte man zum einen über die sogenannte PCI-ID, bei USB ist der Me-
sen Grafikkarten getestet werden, um als zerti-
schon mal einen Blick in die oben erwähnten chanismus ähnlich.
fiziert zu gelten. Um Arbeit zu sparen, können
hier auch bereits bestandene Tests auf ande- Kompatibilitätslisten geworfen haben und zum Mit Befehlen wie lspci oder lsusb kann man sich
ren Systemen mit diesen Grafikkarten referen- anderen die Hinweise „Wie man Fragen richtig so sehr schnell einen Überblick über die im Sys-
ziert werden. Red Hat garantiert mit der Zertifi- stellt“ [4] beherzigen. Leute aus der Communitiy tem vorhandenen PCI-Erweiterungskarten oder
zierung, dass dieses System mit allen Bestellop- helfen gerne weiter, wenn man in der Lage ist, angeschlossene USB-Geräte verschaffen.
tionen von der zertifizierten Red-Hat-Enterprise- sein Problem entsprechend zu artikulieren. Und
sollte man eine Frage gestellt haben und dann Die aufgelisteten Geräte werden über ihre
Linux-Version „out-of-the-box“ unterstützt wird.
doch selbst die Lösung gefunden haben, dann PCI/USB-ID identifiziert. Eine Device-ID besteht
Das führt allerdings auch dazu, dass High-End-
sollte man schildern, welche Maßnahmen zur Lö- aus 4 Bytes, 2 Bytes welche die sogenann-
Grafikkarten wie die nVidia Quadro FX5800 im
sung geführt haben, denn das hilft dem nächs- te Vendor-ID (Hersteller-ID) enthalten und zwei
Zertifizierungstest mit dem VESA-Treiber anstel-
ten Suchenden unter Umständen schon einen Bytes für die Device-ID (also die Geräteken-
le des proprietären nVidia-Treibers getestet wer-
großen Schritt weiter. nung). Zudem gibt es noch Klassen-IDs für ver-
den.
schiedene Geräteklassen, Subvendor-IDs und
Novell geht mit seinen „Bulletins“ für SUSE Linux Sonstiges Subdevice-IDs. Letztere kommen zum Einsatz,
Enterprise Desktop oder Server einen geringfü- Kauft man seine Hardware oder Erweiterungen wenn z. B. ein Intel LAN Chip auf einem Main-
gig anderen Weg. Hier wird ein genau spezifi- statt beim Billig-Discounter beim örtlichen Fach- board von DELL verbaut wird. Dann hat die-
ziertes System in einem Ausbauzustand getes- handel, dann können einem die Leute dort even- ser Chip die Vendor-ID 8086 (Intel) und die
tet. Werden alle Tests bestanden, dann erhält die- tuell bei Fragen bereits die notwendigen Auskünf- Subvendor-ID 1028 (Dell).

© freiesMagazin GNU FDL Ausgabe 11/2009 23


H ARDWARE

Die Textbeschreibungen kommen dabei aus Da- Besonders der letzte Punkt führt oft zu Fehlin-
# lspci
teien wie /usr/share/misc/pci.ids. Dort ist terpretationen. Man liest immer wieder in den
[...]
unter dem Schlüssel der binären PCI-ID ein Text Newsgroups, dass der Treiber ja „keine Fehler- 00:0d.0 Multimedia controller : Philipsy
hinterlegt. Findet die Nachschlagefunktion keine meldung“ bringt und deswegen eigentlich funktio- Semiconductors SAA7131 / SAA7133 /y
Beschreibung, dann gibt sie „unknown device“ nieren sollte. Dabei wird gerne übersehen, dass SAA7135 Video Broadcast Decoder (rev y
zurück. Dies sagt lediglich aus, dass die Datei man auf einem beliebigen System auch andere d1)
[...]
mit den PCI-ID-Beschreibungen veraltet ist und Treiber laden kann, ohne dass eine Fehlermel-
macht definitiv keinerlei Aussage über die Trei- dung erfolgt. Oder genauer das Gerät auf Bus 0:0f.0:
berunterstützung für das jeweilige Gerät.
Wenn man modinfo z. B. für das Modul sata_via # lspci -s 0:f.0 -n
Eine neuere Version der PCI-ID-Beschreibungs- aufruft, bekommt man folgende Ausgabe: 00:0f.0 0104: 1106:3149 (rev 80)
datei kann man bei Sourceforge [5] runterladen.
# modinfo sata_via Der SATA-RAID-Controller im Bei-
Informationen über Kernel-Module erhalten filename : /lib/ modules /2.6.26 -2 - amd64 / kernel /y
drivers /ata/ sata_via .ko spiel hat also die Vendor-Device-ID-
Mit dem Programm modinfo kann man sich In- Kombination 1106:3149. Schaut
version : 2.3
formationen über Kernelmodule beschaffen. Je- license : GPL man die Ausgabe von modinfo
des Kernelmodul hat, sofern es sich um einen description : SCSI low - level driver for VIA SATA y sata_via nochmals genau an,
PCI- oder USB-Gerätetreiber handelt, prinzipiell controllers
dann sieht man diese Werte in der
die gleiche (hier grob beschriebene) Struktur: author : Jeff Garzik
srcversion : 4 F5E9D4C56ABDD3C940464D fünften Alias-Zeile. Das bedeutet,
alias : pci: v00001106d00007372sv *sd*bc*sc*i* das Modul sata_via wird beim Ab-
 Beim Laden bzw. Initialisieren des Moduls
alias : pci: v00001106d00005372sv *sd*bc*sc*i* klappern der PCI-Geräte auf genau
macht dieses ganz abstrakt das Gleiche wie alias : pci: v00001106d00005287sv *sd*bc*sc*i* diesen RAID-Controller stoßen und
das Programm lspci. alias : pci: v00001106d00003249sv *sd*bc*sc*i*
sich zuständig fühlen.
 Für jedes zurückgelieferte Gerät vergleicht das alias : pci: v00001106d00003149sv *sd*bc*sc*i*
alias : pci: v00001106d00000591sv *sd*bc*sc*i*
Modul nun, ob die Vendor- und Device-ID in alias : pci: v00001106d00005337sv *sd*bc*sc*i* Woher der Kernel weiß, welches
der Tabelle der Geräte enthalten ist, die das depends : libata Modul er braucht
Modul „kennt“. vermagic : 2.6.26 -2 - amd64 SMP mod_unload y Nun stellt man sich natürlich die
Für jedes gefundene Gerät wird dann ein modversions
 Frage, woher denn der Kernel
„Device-Node“ angelegt, mit dem das Gerät an- weiß, dass er für den SATA-
Für dieses Beispiel sind besonders die Zeilen mit
gesprochen werden kann. Notwendige Initiali- Controller genau dieses Modul braucht. In
alias: interessant. Eine genaue Beschreibung,
sierungen von Chip-Registern werden vorge- den „module init tools“ gibt es das Komman-
wie diese Zeilen zu interetieren sind, findet man
nommen. do depmod, welches die Nachschlagedateien
im Wiki von Arch-Linux [6].
 Werden keine vom Modul unterstützten Gerä- unter /lib/modules/<kernelversion>/, wie
te gefunden, dann verbleibt das Modul inaktiv Hier die Auflistung der PCI-Geräte des Beispiel- z. B. die Datei modules.pcimap, erzeugt. Hier-
im Speicher. rechners: zu wird für jedes Modul unter /lib/modules/

© freiesMagazin GNU FDL Ausgabe 11/2009 24


H ARDWARE

<kernelversion> sozusagen ein modinfo aufge- 8139 too 0 xffffffff 0 x00008139 0y Kernel modules : 8139cp , 8139y
rufen und die Werte der gefundenen Alias-Zeilen x000010ec 0 x00008139 0 x00000000 0y too
werden in die entsprechende Nachschlagetabel- x00000000 0x0
8139 cp 0 x000010ec 0 x00008139 0y Die vorletzte Zeile zeigt, dass aktuell das Modul
le eingetragen. Für den Beispiel-SATA-Controller xffffffff 0 xffffffff 0 x00000000 0y
kann dann z. B. so der Treiber ermittelt werden: 8139too die Karte betreibt. Man kann nun zum
x00000000 0x0
Beispiel die Kernel-Meldungen nach Mitteilungen
# grep 0 x00003149 /lib/ modulesy von 8139cp durchsuchen:
/2.6.26 -2 - amd64 / modules . pcimap | grep y Hier wird man mit drei Einträgen überrascht.
1106 Zweimal für den Treiber 8139too und einmal # dmesg | grep 8139 cp
sata_via 0 x00001106 0 x00003149 0y für den Treiber 8139cp. Der zweite Eintrag für [1.379395] 8139 cp: 10/100 PCI y
xffffffff 0 xffffffff 0 x00000000 0y 8139too heißt letztlich nur, dass das Modul Ethernet driver v1 .3 (Mar 22, 2004)
x00000000 0x0
8139too zuständig ist, wenn die Device-ID 8139 [1.406707] 8139 cp 0000:00:0 c.0: y
ist und Subvendor-ID 10ec und Subdevice-ID This (id 10 ec :8139 rev 10) is not y
Der erste grep sucht nach der Device-ID und 8139 – egal welche Vendor-ID das Gerät hat. an 8139C+ compatible chip
der zweite nach dem Pipe-Symbol filtert noch die [1.406780] 8139 cp 0000:00:0 c.0: Tryy
Vendor-ID aus. Übrig bleibt genau eine Zeile mit Für diese LAN-Karte gibt es also zwei konkurrie- the "8139 too" driver instead .
dem Eintrag für sata_via. Bingo! So erkennt der rende Treiber. Mittels lsmod kann man nachse-
hen, welche Treiber geladen sind: Das Modul 8139cp hat also beim noch ge-
Kernel also, welches Modul zu laden ist.
naueren „Hinsehen“ festgestellt, dass es für die-
# lsmod | grep 8139 se Revision des Chips nicht zuständig ist und
Noch ein Beispiel, diesmal mit einer LAN- 8139 cp 23808 0 dies gemeldet. Um ein Laden dieses Moduls
Karte. Die ersten beiden Zeilen ermitteln wie 8139 too 28288 0
zukünftig zu verhindern kann man in die Da-
gehabt die PCI-ID. Dann schlägt man in der mii 9856 2 8139cp ,8139 too
tei /etc/modprobe.d/blacklist eine Zeile mit
modules.pcimap den benötigten Treiber nach.
dem Inhalt blacklist 8139cp eintragen. Dann
In diesem Beispiel sind also beide Treibermodule
# lspci -s 0:c.0 wird zukünftig das Laden des Moduls verhindert.
geladen. Welcher Treiber wird aber nun benutzt?
00:0c.0 Ethernet controller : Realtek y
Semiconductor Co., Ltd. RTL -8139/8139 Cy Um das herauszufinden kann man die Ausgabe Abschließend noch ein weiteres Beispiel für eine
/8139 C+ (rev 10) von lspci ein wenig mehr „gesprächig“ (verbose) USB-Webcam. Diese identifiziert sich als:
machen:
# lspci -s 0:c.0 -n # lsusb -s 5:4
00:0c.0 0200: 10 ec :8139 (rev 10) # lspci -s 0:c.0 -v Bus 005 Device 004: ID 046d:09 a4 y
00:0c.0 Ethernet controller : Realtek y Logitech , Inc.
# grep 0 x00008139 /lib/ modulesy Semiconductor Co., Ltd. RTL -8139/8139 Cy
/2.6.26 -2 - amd64 / modules . pcimap | grep y /8139 C+ (rev 10) Versucht man nun, den Treiber für dieses Modul
10ec Subsystem : Realtek y
8139 too 0 x000010ec 0 x00008139 0y Semiconductor Co., Ltd. RT8139
in der Datei modules.usbmap nachzuschlagen,
xffffffff 0 xffffffff 0 x00000000 0y [...] erhält man keinen Treffer. Eine Suche beim Linux-
x00000000 0x0 Kernel driver in use: 8139 too USB-Project [7] verrät, dass für diese Logitech

© freiesMagazin GNU FDL Ausgabe 11/2009 25


H ARDWARE

E3500 Webcam der uvcvideo-Treiber zu ver- Schlussfolgerungen für die Praxis möglich. Sollte das BIOS des Systems kein
wenden ist. Die modinfo-Ausgabe von uvcvideo Insgesamt kann man zu dem Thema AHCI (Advanced Host Controller Interface) an-
sieht (auf die wichtigen Zeilen gekürzt) so aus: Hardwarekompatibiltät für bieten, dann hilft vielleicht ein „compatible“-
Linux folgende Schlussfolge- Modus, in dem IDE-Platten emuliert werden.
# modinfo uvcvideo
filename : /lib/ modules /2.6.26 -2 - amd64 / kernel / drivers /y rungen ziehen und weitere Dieser Modus ist allerdings sehr langsam, da
media / video /uvc/ uvcvideo .ko Hinweise geben: er keine DMA-Unterstützung hat und man
[...] gegebenenfalls den ide_generic-Treiber bei
alias : usb:v*p*d*dc*dsc*dp* ic0Eisc01ip00 *  Alte Hardware läuft zwar im der Installation laden muss.
alias : usb: v5986p0200d *dc*dsc*dp* ic0Eisc01ip00 * allgemeinen mit neuen Ker-
alias : usb: v5986p0141d *dc*dsc*dp* ic0Eisc01ip00 *
 Ist das System erst einmal mit einer Basisin-
neln, neue aber nicht unbe- stallation boot- und lauffähig, kann man die
dingt mit alten Kerneln. eventuell noch fehlenden Treiber im Bedarfs-
Die für das Beispiel interessante Zeile ist die al-
fall hinzufügen. USB-Speichersticks werden ei-
lererste Alias-Zeile. Hier sind die Vendor- und  Welche Hardware in Systemen und Periphe-
gentlich in fast allen Fällen problemlos unter-
Device-Angaben nicht relevant, wohl aber die An- riegeräten verbaut ist, erfährt man oft leider
stützt, um im Bedarfsfall größere Datenmen-
gaben ic (Interface Class), isc (Interface Sub- nicht aus den Datenblättern. Hier sind am bes-
gen zu einem Rechner ohne funktionierenden
class) und ip (Interface Protocol). Schaut man ten vor dem Kauf von Hardware einige Recher-
Netzwerktreiber zu übertragen.
sich die USB-Details an, dann sieht man (wieder chen in den einschlägigen Foren und Kompati-
 Selbst wenn bestimmte Treiber wie beispiels-
auf das Wesentliche gekürzt) Folgendes: bilitätslisten sinnvoll.
weise LAN- oder Audio-Treiber nicht im Ker-
 Open-Source-Treiber sind in jedem Fall gegen-
# lsusb -s 5:4 -v nel der Distribution enthalten sind, lassen sich
[...] über proprietären Treibern zu bevorzugen.
diese oft beim Hersteller der Komponente
bInterfaceClass 14 Video  Dank standardisiertern generischen Geräte- als Quellcode herunterladen, der sich dann
bInterfaceSubClass 1 Video y klassentreibern sind bei den fundamentalen
Control auch für ältere Kernel übersetzen lässt. So
Komponenten eines PCs kaum Probleme zu kann man auch auf etwas betagteren Dis-
bInterfaceProtocol 0
[...] erwarten. tributionen neue Hardware zum Laufen brin-
 Die Schnittstellen zu Tastatur und Maus sind gen, bezahlt diesen Komfort aber mit der
Hier wird der Treiber also über die Geräteklas- über ausgereifte Treiber nutzbar, im USB-Fall Verpflichtung, diese Treiber möglicherweise
se geladen. Die Kamera folgt dem „USB Video hilft ein USB-HID-Treiber (Human Interface De- nach Kernel-Updates neu übersetzen zu müs-
Class“ Standard. Somit kann der Treiber für diese vice). sen. Enterprise-Distributionen wie SUSE Linux
Geräteklasse verwendet werden, auch wenn es  Die graphische Oberfläche kann im schlimms- Enterprise Server haben hier übrigens ein
keinen expliziten Eintrag für Vendor- und Device- ten Fall mit dem VESA-Treiber genutzt wer- Treiber-Update-Modell, mit dem vorkompilier-
IDs gibt. Andere Geräte, bei denen oft die Trei- den, da alle modernen Graphikkarten auch die te Herstellertreiber für bestimmte Komponen-
ber über die Geräteklasse identifiziert werden, VESA-Modi unterstützen. ten direkt bei Novell vom FTP-Server bezogen
sind PCI-Bridges oder SATA-Controller im AHCI-  Der Zugriff auf die Festplatte ist bei modernen werden und auch nach Kernel-Updates weiter-
Modus. Systemen oft über den AHCI-Klassentreiber funktionieren.

© freiesMagazin GNU FDL Ausgabe 11/2009 26


H ARDWARE

Ich habe in meiner langjährigen Berufspraxis ei- [2] http://hardware.redhat.com


Autoreninformation
gentlich noch nie einen Fall erlebt, in dem ein [3] http://developer.novell.com/yessearch/Search.
System, das auf der gängigen PC-Architektur ba- jsp Rainer König arbeitet bei einem
sierte, absolut nicht mit Linux laufen wollte. Damit [4] http://www.tty1.net/smart-questions_de.html PC-Hersteller am Thema Linux-
bestätigt sich das eingangs erwähnte Zitat von [5] http://pciids.sourceforge.net/ Hardware-Kompatibilität für PCs.
Greg Kroah-Hartmann. [6] http://wiki.archlinux.org/index.php/ModaliasPrimer
L INKS [7] http://www.linux-usb.org/

[1] http://www.linux-drivers.org Diesen Artikel kommentieren

„Regular Expressions“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/208

© freiesMagazin GNU FDL Ausgabe 11/2009 27


V ERANSTALTUNG

Rückblick: Ubuntu-Treffen auf der Ubucon 2009 von Dominik Wagenführ

ie bereits letztes Jahr fand an der Artikel nur von dem kleinen Teil berichten, an de- angebotenen Downloadversion und den Pake-

W Universität Göttingen die Ubucon


2009 [1] statt, Deutschlands größte
Ubuntu-Veranstaltung. Vom 16. bis 18. Okto-
nen ich teilgenommen habe.

Freitag, 16.10.2009
ten, die in den Ubuntu-Paketquellen zu finden
sind, eingegangen. Vorgestellt wurde sowohl der
überarbeitete TEX-Live-Manager „tlmgr“ [3] für
ber konnten sowohl Ubuntu-Kenner als auch Gegen 12 Uhr bin ich in Göttingen angekommen die LATEX-Paketinstallation (der bei Ubuntu nicht
Ubuntu-Neulinge den informativen Vorträgen und konnte bereits 15 Minuten später im Ver- mit dabei ist) als auch der TEX-Documentation-
zuhören oder bei Workshops aktiv teilneh- sorgungsgebäude der Georg-August-Universität Browser, der über texdoc PAKETNAME im Ter-
men. beim Aufbau und der Organisation mithelfen. Es minal direkt die Dokumentation zu einem LATEX-
trafen auch im Vorfeld einige Besucher ein, ob- Paket anzeigt.
Da es an den drei Tagen jeweils bis zu sechs wohl der erste Vortrag erst für 14 bzw. 16 Uhr
parallel stattfindende Vorträge gab, kann dieser angekündigt war. In der Regel war das kein Im zweiten Teil wurden danach zahlreiche
Problem, da man sich die restliche LATEX-Editoren vorgestellt, von denen vor allem
Zeit im Hackcenter mit seinem Note- TEXworks [4] und Gummi [5] ziemlich neu sind.
und Netbooks vergnügen oder ers- TEXworks soll dabei vor allem durch die Verwen-
te Kontakte mit den anderen Ubuntu- dung von „synctex“ damit glänzen, dass er bei
Nutzern knüpfen konnte. Dazu stan- einer markierten Stelle im LATEX-Code direkt zur
den auch alle drei Tage für einen Un- jeweiligen Ausgabe im PDF springen kann. Dies
kostenbeitrag von 10 Euro (bzw. 15 soll auch umgekehrt möglich sein, so dass man
Euro bei Vor-Ort-Anmeldung) jedem von einer markierten Stelle im PDF direkt zum je-
Teilnehmer kostenloses Trinken und weiligen LATEX-Codestück springt. Daneben wur-
Essen in Form von belegten Brötchen den noch etwas bekanntere LATEX-Editoren wie
und Berlinern zur Verfügung. Kile, gedit, Geany oder TEXMAKER vorgestellt.

LaTeX im Jahr 2009 Danach stellte Böhmichen einige Helfer vor, die
Mit etwas Verspätung startete Adri- einen bei der Arbeit mit LATEX unterstützen sollen.
an Böhmichen seinen Vortrag zum Dazu zählten Makefiles, die automatisch neue
Thema „LATEX im Jahr 2009“ kurz PDF-Dokumente erstellen (wobei dies ähnlich in-
nach 16 Uhr. Vor ca. 25 Teilnehmer teressant wie der Vortrag „Komfortable Makefiles“
berichtete er zuerst von der LATEX- (siehe freiesMagazin 10/2009 [6]) auf der Dante-
Distribution TEXLive [2] und den Neue- Tagung in Esslingen war), pygments zum Syntax-
rungen in der 2009er-Version. Dabei highlighing, hunspell zur Rechtschreibprüfung,
wurde auch auf die Unterschiede zwi- lacheck als sehr einfach LATEX-Syntaxchecker, im-
Über die Twitterwall war man immer über die Vorgänge auf
schen der auf der TEX-Live-Webseite pressive [7] für den Einsatz von Präsentationsef-
der Ubucon informiert.

© freiesMagazin GNU FDL Ausgabe 11/2009 28


V ERANSTALTUNG

fekten in PDF-Präsentationen und noch einmal leicht LATEX-fremde Schrif-


synctex [8], welches ja bereits in Verbindung mit ten einfügen kann, einge-
TEXworks erwähnt wurde. gangen. Auch über Lua-
TEX, eine TEX-Variante
Von der Präsentation erinnerten die Themen mit Lua-Interpreter, Open-
stark an die Vorträge bei der Dante-Tagung in Type- und ConTEXt-Unter-
Esslingen, denn auch Biber [9] als Nachfolger stützung, wurde noch be-
von BibTEX wurde vorgestellt. richtet.
Interessanter war da schon Asymptote [10], ei- Den Vortrag von Adri-
ne Interpretersprache, die ähnlich wie Metapost an Böhmichen steht auf
oder PSTricks Grafiken erstellen kann. Mit Asym- der Ubucon-Programm-
ptote kann man auch komplexere Funktionen seite [11] zum Download
schreiben, wobei der Code entweder als Skript bereit.
ausgeführt oder direkt im LATEX-Code angegeben
werden kann. Als sehr einfache GUI steht „xa- Beer-Event im Sausali-
sy“ zur Verfügung, wobei der ausgegebene Code tos
etwas unleserlich und zur weiteren Verarbeitung Nach dem Check-in im
ungeeignet scheint. Hotel ging es ab 19 Uhr im
Auch die LATEX-Vorträge waren gut besucht.
Sausalitos mit dem Beer-
Zum Ende hin wurde kurz auf XeTEX als Al- © Roman Hanhart (GFDL).
Event weiter. Hier wurden ganz ohne Note-
ternative zu pdfTEX, welches eine Open-Type- books zwischenmenschliche Beziehungen ge- an LTEX auch bei Nicht-Profis vorhanden ist. In
A

Unterstützung bietet und somit vor allem sehr pflegt, (sehr) viel gegessen und getrunken. Die- den zwei Stunden bin ich auf die Gestaltung von
se abendlichen Treffen am Freitag und am dar- ganz einfachen Dokumenten, etwas Textformatie-
auf folgenden Samstag trugen sehr zur Auflocke- rung, Tabellen und Bildern und alles, was sonst
rung der ganzen Ubucon-Veranstaltung bei, da zu einem ersten eigenen Versuch dazugehören
man sich so besser untereinander kennenlernen sollte, eingegangen.
konnte. Gleich danach fand ein zweiter Workshop zum
Thema „Magazinerstellung mit LATEX“ statt, bei
Samstag, 17.10.2009 dem auch ein kleiner Teil der Zuhörer aus dem
LATEX-Workshops ersten Workshop anwesend war. Ingesamt war
Den ersten Vortrag am Samstag hielt ich selbst die Teilnehmerzahl mit ca. 15 bis 20 Leuten
zum Thema „LATEX für Einsteiger“. Vor allem die zwar geringer, dennoch erstaunlich hoch, be-
hohe Teilnehmerzahl von 30 bis 35 Personen war denkt man, dass es sich hier um ein sehr speziel-
„Ubucon“ kann noch nicht jeder schreiben. überraschend, zeigte aber, dass das Interesse les Themengebiet handelt. Anhand meiner Erfah-

© freiesMagazin GNU FDL Ausgabe 11/2009 29


V ERANSTALTUNG

rungen bei freiesMagazin, welches mit LATEX ge- da die Tabulator-Taste ab sofort zu meinen wich- Neben regulären Ausdrücken, die in Basic Re-
setzt wird, konnte ich den fortgeschrittenen Teil- tigsten Gimp-Tastenkürzeln zählt. ( Tab minimiert gular Expressions (BRE), Extended Regular Ex-
nehmern (hoffentlich) etwas Neues beibringen. alle Dialoge außer den Bildern, was bei kleineren pressions (ERE) und Perl Regular Expressions
Bildschirmauflösungen hilfreich ist.) (PRE) gegliedert waren, wurde auch auf Varia-
Die Folien und Beispiele zu beiden Workshops blenzuweisungen und Funktionen eingegangen;
können auf der Webseite deesaster.org herunter- Muschelsuppe schließlich widmete man sich der Benutzung von
geladen werden [12] [13]. BASH_REMATCH als globales Array für Rückbezü-
Gleich danach hielt Karsten Günther eine Bash-
Gimp-Einführung Einführung, zeitgleich fand aber auch die „Mu- ge.
Karsten Günther hielt nach der Mittagspause schelsuppe“ von Dirk Deimeke statt. Deimeke
kennt sich als Systemadministrator sehr gut mit Danach wurde das Thema etwas allgemeiner
einen sehr interessanten Workshop für alle Gimp-
der Shell aus und wollte in den zwei Stunden und neben der Bash-Programmierung kamen
Einsteiger. Zirka 30 Teilnehmer lernten vor al-
fortgeschrittenen Shell-Anwendern ein paar Knif- auch einige Shell-Befehle wie awk, sed oder cat
lem den Aufbau von Gimp und die einzel-
fe der Bash zeigen, wobei er dies vor allem mit hinzu. Dabei konnte man zum Beispiel lernen,
nen Werkzeuge kennen. Verstärkt wurde auf
Hilfe der Zuhörer tat und diese aktiv in den Dia- dass grep -o nur die gefundenen Suchbegriffe
die wichtigen Auswahlwerkzeuge eingegangen
log miteinbezog. und nicht die ganzen Zeilen ausgibt, strace -c
und wie diese genau funktionieren. Auch die
sehr gut zur Performance-Analyse benutzt wer-
Ebenenverwaltung, ohne die
den kann oder man mittels der Programme Lock-
man bei der Bildbearbeitung in
file (das Paket dazu heißt lockfile-progs) einfach
Gimp nicht auskommt, wurde
Lockfiles und mit „mktemp“ temporäre (eindeuti-
intensiv vorgestellt.
ge) Dateinamen erzeugen kann.
Zum Schluss ging Karsten
Günther, der auch Gimp- Den Abschluss bildete dabei eine Vorstellung
Schulungen abhält, ein wenig von unnützen Shell-Konstrukten, die aus dem
auf die Farbkorrektur von Bil- ubuntuusers-Wiki entliehen war [14].
dern ein, die man als Anfänger
zumindest auch einmal gese- Vieles wurde bei dem Vortrag live getestet (da
hen haben sollte. Dabei wur- Dirk Deimeke den Vortrag aus Zeitmangel nicht
den alle Beispiele sowohl von komplett ausgearbeitet hatte) und mit den Teil-
ihm selbst am Beamer gezeigt nehmern auch erarbeitet.
als auch von den Teilnehmern
nachgemacht. Die Folien, die in Wahrheit aus einer gut ge-
gliederten Textdatei bestanden, sollen später auf
Der Kurs war sehr gut verständ- der Ubucon-Webseite zu finden sein. Die Vorla-
lich und selbst Gimp-Erfahrene ge des Vortrages hat Dirk Deimeke bereits in sei-
Im Hackcenter konnte man untereinander Erfahrungen abseits der
konnten etwas Neues lernen, nem Blog veröffentlicht [15].
Vorträge austauschen.

© freiesMagazin GNU FDL Ausgabe 11/2009 30


V ERANSTALTUNG

Entwicklung der Community in den letzten fünf gewinnen gab. Von den fünf ausgelosten Buch-
Jahren vor. preisen gingen daher nur vier weg, da nicht mehr
Personen an der Verlosung teilnehmen wollten,
Danach riefen Adrian Böhmichen und Martin was sehr schade ist.
Gräßlin zum Wiki-Sprint auf, denn für die neue
Ubuntu-Version 9.10 „Karmic Koala“, die Ende Zeitgleich fand auch wieder der beliebte Tux-
Oktober erschienen ist [17], müssen auch wieder Bastelkurs statt, der von Barbara Görner gelei-
zahlreiche Wiki-Artikel getestet und ausgebes- tet wurde, bei dem man entspannt mit Schere
sert werden. Über die provokante Frage „Wieso und Kleber oder einfach nur mit etwas Origami
arbeitet Ihr nicht am Wiki mit?“ wollte man die vier abschalten konnte.
bis fünf Nicht-ubuntuusers-Teammitglieder zur
Diskussion anregen, was man vielleicht verbes- Podcasting mit und über Linux
sern könnte, um die Mitarbeit am Wiki zu erhö- Dirk Deimeke und Roman Hanhart berichteten
hen, da die Beteiligung immer weiter schrumpft. ab 11 Uhr über ihre Arbeit und Erfahrungen beim
Die Burger im Sausalitos waren riesig und
Podcast DeimHart [18], der einmal monatlich ver-
lecker. Die Veranstaltung war etwas weniger be- öffentlicht wird. Vor allem Neupodcaster konnten
sucht als letztes Jahr, das Verhältnis zwi- zahlreiche hilfreiche Tipps mitnehmen.
Social-Event im Sambesi schen ubuntuusers-(Ex-)Teammitgliedern und
Bereits letztes Jahr fand das Social-Event im ubuntuuser-Nutzern war aber wieder sehr un- Neben der Planung eines Podcasts
Sambesi statt und bis auf die etwas herausge- ausgewogen, obwohl es am Ende auch etwas zu (Themenfindung, Gestaltung und Koordination),
forderte Bedienung war es sehr schön. Vor allem
das Essen (Strauß, Springbock, Zebra und Kro-
kodil) war außergewöhnlich und wurde an so gut
wie jedem Tisch bestellt. Dabei unterhielt man
sich wieder über Ubuntu-Themen aber auch al-
les andere abseits davon.

Sonntag, 18.10.2009
ubuntuusers.de-Vortrag
Aufgrund eines nicht funktionierenden Weckers
war der Sonntagmorgen etwas hektischer als ge-
plant, dennoch schaffte ich es noch einigerma-
ßen pünktlich zur ubuntuusers.de-Veranstaltung
kurz nach 9 Uhr. Andreas Behle stellte zuerst die
Historie des ubuntuusers.de-Portals [16] und die Beim Tux-Bastelkurs gab es wieder zahlreiche Möglichkeiten, sich kreativ auszutoben.

© freiesMagazin GNU FDL Ausgabe 11/2009 31


V ERANSTALTUNG

wozu zum Beispiel ein breitgefächertes Themen- Als Software wird Audacity für die Übertragung Vor-Ort-Anmeldungen gab. Insgesamt wurden
gebiet mit einzelnen Spezialisierungen pro Folge und Bearbeitung der Daten eingesetzt. Bei der zur Hochzeit am Samstagnachmittag bis zu 200
oder eine ausführliche Recherche zählt, wurde Wandlung in MP3 hat sich laut Hanhart gezeigt, Zuhörer in den Räumen gezählt. Die 48 freien
auch auf die verwendete Hard- und Software dass der Lame-Encoder für MP3s aber eine Slots waren mit zweistündigen Vorträgen zu be-
eingegangen. Bei Deimhart wird dabei ein Auf- schlechte Qualität abliefert und man daher bes- legen, in die dann am Ende 38 Stück auf sechs
nahmegerät von Zoom benutzt, das dank einge- ser eine OGG-Datei erstellt und diese dann über Räume aufgeteilt wurden. Dies hatte aber auch
bauten Verstärkers und A/D-Wandler viel Arbeit das Programm Soundconverter nach MP3 kon- den Nachteil, dass man sehr viele Vorträge nicht
abnehmen kann. Ob die Qualität wirklich so gut vertiert. anhören konnte, weil diese zeitgleich mit ande-
ist, kann man sich bei DeimHart sicherlich bald ren lagen. Daneben waren die Räume teilweise
anhören, da Roman Hanhart mehrere Ubucon- Insgesamt hielt ich dies für den besten Vortrag nicht ausreichend dimensioniert, sodass in eini-
Vorträge aufgenommen hat und nach der Bear- der Ubucon, da Dirk Deimeke und Roman Han- gen Vorträge die Zuhörer stehen mussten.
beitung bei RadioTux [19] zur Verfügung gestellt hart ein echt gut eingespieltes Team sind, die
hat. Auch der Podcasting-Vortrag wird zu einem sich ihre Sätze fast schon gegenseitig ergänzen Laut Julius Bloch, Leiter des Ubuntu-DE-
Podcast ausgearbeitet – sozusagen ein rekursi- können. Das erklärt auch, wieso der Podcast der Messeteams, war die Veranstaltung ein großer
ves Podcasting. beiden so locker und natürlich daherkommt. Erfolg, nur wird die nächste Ubucon 2010 vor-
Die Podcasts sind später aussichtlich nicht in Göttingen stattfinden, wenn
auf der Seite von Deim- eine andere gute Örtlichkeit (vorzugsweise eine
Hart zu finden. größere Universitätsstadt) gefunden wird.

Abschlussveranstaltung Weitere Details und Rückblicke findet man bei Ik-


Nach einer kurzen Mittags- haya [21].
pause und Aufbruchpha-
se, in der zahlreiche Teil- Abschlussbemerkung
nehmer den Heimweg an-
getreten haben, gab Dirk Mein Fazit ist, dass ich nächstes Jahr definitiv
Deimeke als Vorsitzender wieder auf die Ubucon fahren werde und sicher-
des deutschen Ubuntu lich auch ein oder zwei Vorträge/Workshops zu
e. V. [20] noch einen kur- einem Thema halte. Die Stimmung war extrem
zen Abschlussbericht und gut und die Abende sehr feucht-fröhlich.
lud zum Gruppenfoto ein.
Leider konnte man an maximal sieben der 38
Von den 165 vorangemel- Vorträgen/Workshops teilnehmen, was oft sehr
deteten Teilnehmern sind schade war. Auf der anderen Seite ist es natür-
155 gekommen, wobei es lich schön, dass die Ubucon drei Tage lang ein
Dirk Deimeke und Roman Hanhart bei ihrem Podcasting-Vortrag. natürlich auch zahlreiche so volles Programm liefern konnte. Für nächstes

© freiesMagazin GNU FDL Ausgabe 11/2009 32


V ERANSTALTUNG

[7] http://impressive.sourceforge.net/
[8] http://itexmac.sourceforge.net/SyncTeX.html
[9] http://www.ubucon.de/begleitmaterial
[10] http://www.deesaster.org/latex-einfuehrung.php
[11] http://www.deesaster.org/latex-magazinerstellung.
php
[12] http://wiki.ubuntuusers.de/Shell/Tipps_und_
Tricks
[13] http://www.deimeke.net/dirk/blog/index.php?
/archives/1935-Praesentationstechnik-....html
[14] http://ubuntuusers.de/
[15] http://ikhaya.ubuntuusers.de/2009/10/29/ubuntu-
9-10-karmic-koala-ist-erschienen/
[16] http://deimhart.net/
[17] http://blog.radiotux.de/2009/10/25/magazinsen
dung-zur-ubucon-2009/
[18] http://verein.ubuntu-de.org/
[19] http://ikhaya.ubuntuusers.de/2009/10/23/
nachlese-zur-ubucon-2009-1714/

Autoreninformation

Das Gruppenfoto spiegelt nicht die tatsächliche Teilnehmerzahl wieder. Dominik Wagenführ ist ehemaliges
Teammitglied von ubuntuusers.de
Jahr wird aber vielleicht über einen etwas freie- L INKS und daher sehr mit der Community
ren Zeitpuffer nachgedacht, sodass auch ein- verbunden. Durch den Einsatz von
stündige Vorträge möglich sind. [1] http://www.ubucon.de/ LATEX bei freiesMagazin waren seine
[2] http://tug.org/texlive/ Vorträge zu dem Thema auf der
Schade war auch, dass – wie schon im letzten
[3] http://www.tug.org/texlive/tlmgr.html Ubucon eine Selbstverständlichkeit.
Jahr – das Gruppenfoto erst am Sonntag nach
der Abschlusskundgebung gemacht wurde und [4] http://code.google.com/p/texworks/
nicht am Samstag Mittag, als die meisten Leute [5] http://code.google.com/p/gummi/
auf der Ubucon zugegen waren. So zeigt das Bild [6] http://www.freiesmagazin.de/freiesMagazin-2009-
Diesen Artikel kommentieren
nur einen Bruchteil der wirklichen Teilnehmer. 10

© freiesMagazin GNU FDL Ausgabe 11/2009 33


M AGAZIN

Weitere Informationen zum Programmierwettbewerb


eit Beginn des zweiten freiesMagazin- und kann daher die GUI nicht öffnen. Hier bleibt S – Anzahl der gewonnenen Spiele (Gewinn =

S

Programmierwettbewerbs [1] gab es einem keine Wahl außer den Grafiktreiber auf Zielflagge erreicht)
weitere Fragen und die Bewertung eine Version zu aktualisieren, mit der 3-D resp.  Z – Anzahl der aus den gewählten Karten di-
steht nun auch fest. OpenGL korrekt unterstützt wird. rekt entstandenen Züge bei gewonnenen Spie-
len
Häufig gestellte Fragen Wieso darf man nur in einer Kategorie teil-
nehmen?  Y – Anzahl der vom Spielfeld entstandenen Zü-
Hinweis: Die Webseite mit den Details zum ge bei gewonnenen Spielen
Wettbewerb wurde bereits entsprechend geän- Der Gewinner aus der Kategorie „schwer“ wür-  K – Anzahl der gewählten Karten bei gewon-
dert [2]. Daneben wurde auch eine extra Beitrag de ansonsten mit hoher Wahrscheinlichkeit auch nenen Spielen
mit diesen Fragen verfasst, der ständig aktuali- gleich die Preise für „mittel“ und „leicht“ einheim-
siert wird [3]. sen, was wir vermeiden wollen. Details
Und nun noch einmal im Detail: Wichtig ist zu-
Kann man von einem Schieber in eine Was passiert, wenn zu wenige Program- erst, dass überhaupt nur die gewonnenen Spiele
Schrottpresse geschoben werden? mierer in einer Kategorie teilnehmen? S , also die, in denen der Roboter das Ziel erreicht
Nein. Da sich Presse und Schieber gleich- Sollte das passieren, wird der Preis an den hat, gewertet werden. Für Spiele, bei denen der
zeitig bewegen, kann man nie direkt von einem Zweitplatzierten aus der nächsthöheren Kate- Roboter zerstört wurde oder die Karten ausge-
Schieber in eine Presse geschoben werden. gorie vergeben (mit Ausnahme der Kategorie gangen sind, gibt es keine Punkte - weder positi-
„GUI“). ve, noch negative. Nach wie vor gilt aber die 75-
Gibt es einen definierte Rückgabewert für Prozent-Hürde, dass also die KI bei mindestens
die KI? 75 % aller Spiele (auf allen Spielbrettern) ins Ziel
Bewertung
Nein, es gibt nur 0 oder nicht 0. Man sollte nur Die Formel, um die Punkte später zu berechnen, gekommen sein muss, um überhaupt teilnehmen
dann einen Wert ungleich 0 zurückliefern, wenn sieht wie folgt aus: zu dürfen. Das heißt auch, dass es auf einzelnen
die KI Probleme hat, denn dies führt automatisch ggf. „schweren“ Spielbrettern auch mal weniger
Y sein darf.

zu einem kompletten Spielabbruch. 2MS − Z + +K
P= 2
10 Für jedes gewonnene Spiel gibt es eine Grund-
Beim Starten der GUI (nicht des GUI-
punktzahl M , die sich aus dem Mittel der ge-
Helpers) bekomme ich einen Fehler der Art „X
Was heißt das nun in Deutsch? Zuerst eine Be- brauchten Züge aller Teilnehmer (in der jewei-
Error of failed request: BadMatch (invalid pa-
schreibung der einzelnen Buchstaben: ligen Spielstufe natürlich nur) bei gewonnenen
rameter attributes)“. Hab ich was kaputt ge-
Spielen ergibt. Das heißt, wenn die Gesamtheit
macht?
 P – Punktezahl insgesamt der Spieler recht lange unterwegs ist, ist M recht
Vermutlich unterstützt der aktuelle Grafikkar-  M – Mittelwert der Anzahl aller Züge aller Spie- groß und damit auch der Grundwert. Ist das Teil-
tentreiber eine genutzte OpenGL-Funktion nicht ler von gewonnenen Spielen nehmerfeld flott, sinkt die Grundpunktzahl.

© freiesMagazin GNU FDL Ausgabe 11/2009 34


M AGAZIN

Beispielrechnung for FILE in "$1" ; do


Spielbrett Gewonnenene Spiele S eigene Züge Z fremde Züge Y gespielte Karten K echo $FILE "|" \
(von max. 100) ‘egrep " reached " $FILE | wc -l‘ y
brett1.dat 98 2465 1496 1953
"|" \
‘egrep " reached " $FILE | nawk ’{ y
brett2.dat 99 2782 1131 2162 sum += $(NF -10) } END{ print sum y
brett3.dat 84 4455 1496 3724 }’‘ "|" \
gesamt 281 9702 4123 7839 ‘egrep " reached " $FILE | nawk ’{ y
sum += $(NF -8) } END{ print sum y
Von dieser Grundpunktzahl werden Punkte sub- Beispiel }’‘ "|" \
trahiert. Zuerst natürlich die gebrauchten Züge Ein kleines Rechenbeispiel: Die KI wird wie ange- ‘egrep " reached " $FILE | nawk ’{ y
(Bewegungen und Drehungen) bei den gewon- kündigt mit je 100 vorher erstellten Kartenstapeln sum += $(NF -5) } END{ print sum y
}’‘ "|" \
nenen Spielen. Hierbei wird aber zwischen eige- auf (in diesem Beispiel) drei Spielbrettern getes- ‘egrep " reached " $FILE | nawk ’{ y
nen Zügen Z , die sich direkt aus der Kartenwahl tet. M sei als 50 berechnet worden. sum += $(NF -3) } END{ print sum y
ergeben und zwischen den Bewegungen (frem- }’‘ "|" \
de Züge) Y , die die Spielfelder erzwingen, unter- Das Ergebnis für diesen Teilnehmer ist also ‘egrep " reached " $FILE | nawk ’{ y
schieden. Eigene Züge werden einfach nur sub-  sum += $(NF -1) } END{ print sum y
2 · 50 · 281 − 9702 + 4123
+ 7839 }’‘ "|" \
trahiert, fremde Züge nur zur Hälfte subtrahiert. P = 2
‘egrep "real" $FILE | nawk -Fm ’{ y
Das heißt, es wird weniger bestraft, wenn man 10
print $2 }’ | nawk -Fs ’{ sum += y
die Spielfelder geschickt ausnutzt, um vorwärts
= 849.75
$1 } END{ print sum }’ | sed ’sy
zu kommen. /\./ ,/1 ’ ‘
Hinweis: Da die obige Formel nur auf den Ergeb- done
Die Züge werden dabei pro Feld erfasst, d. h. MF exit 0
nissen zweier KIs erstellt wurde, ist der Faktor 2
3 führt im Normalfall zu drei Zügen, MF 2 zu zwei vor MS noch nicht sicher. Derzeit wird mit einem Listing 1: check_results.sh
Zügen und alle anderen Karten zu je einem Zug.
Faktor 5 experimentiert.
Läuft man gegen eine Wand und eine gespiel-
L INKS
te Karte MF 3 verpufft, ist das auch kein Zug. Neue Spieledateien
Rutscht man dagegen über 10 Ölfelder, sind das Im Zuge dessen gibt es auch neue Spieledateien, [1] http://www.freiesmagazin.de/20090927-zweiter-
10 Fremdzüge. die sich aber nicht vom Ablauf geändert haben. programmierwettbewerb-gestartet
Es wird nun nur am Ende eines Spiels eine Statis- [2] http://www.freiesmagazin.de/zweiter_program
Zu guter Letzt werden auch noch die gesamten
tik ausgegeben, die die obige Tabelle leicht über mierwettbewerb
gespielten Karten K bei gewonnenen Spielen
folgendes Skript check_results.sh erstellt: [3] http://www.freiesmagazin.de/20091001-zweiter-
subtrahiert. Das soll dafür sorgen, dass „gegen
die Wand fahren“ etwas bestraft wird. #!/ bin/bash programmierwettbewerb-faq
echo " Datei | Runden | Karten | eig. y
Die Punktezahl wird noch durch 10 geteilt, was Zuege | fremde Zuege | Gesamtzuege | y
aber nichts an der Platzierung ändert. Zeit (fuer alle Spiele )" Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 11/2009 35


L ESERBRIEFE

Leserbriefe
Für Leserbriefe stehtunsere E-Mailadresse künstliche, sprachliche Distanz aufzubauen. Au- lichkeit oder Geringschätzung zu tun. Gerade im
zur Verfügung – wir ßerdem ist das auch irreführend, freiesMagazin internationalen Kontext ist ein „Sie“ in Meetings
freuen uns über Lob, Kritik und Anregungen zum hat doch schon öfter bewiesen, dass sich Leser eher fremd und hinderlich und schafft eine wenig
Magazin. einbringen können und deren Meinung zählt – sinnvolle Distanz (und teilweise Unwohlsein bei
warum dann eine Distanz? ausländischen Kollegen oder Dienstleistern).
An dieser Stelle möchten wir alle Leser ausdrücklich
ermuntern, uns auch zu schreiben, was nicht so gut Mir würde nur ein Grund für das Sie einfallen: Es Wer keine Kinderstube genossen hat und simple
gefällt. Wir bekommen sehr viel Lob (was uns natür- wirkt professioneller, bekannte Print-Medien (die Regeln des Miteinander nicht kennt, wird dies mit
lich freut), aber vor allem durch Kritik und neue Ideen übrigens unfrei sind) siezen ja auch. Ich glaube einem „Sie“ auch kaum verbergen können.
können wir uns verbessern. aber nicht, dass dies der einzige Grund ist. Wäre Thomas Weller
schön, wenn man Ihre (wenn mich jemand bittet
Leserbriefe und Anmerkungen
ihn/sie/es (Dominik als Autor des Vorworts, die Ich bin der Meinung, dass freiesMagazin trotz
Siezen oder Duzen Redaktion oder freiesMagazin . . . ) zu siezen, bin seiner „Open-Source-Verwandtschaft“ bei einem
Das Thema Du vs. Sie beschäftigt mich auch ich dann doch noch so höflich und tu es auch) förmlichen Sie bleiben sollte. Wir haben es mit
immer wieder. Zum Vorgehen bei freiesMagazin Gründe fürs Siezen dazu erfahren könnte. einem Magazin zu tun und dort gehört sich ein
kann ich sagen, dass ich immer wieder irritiert „Sie“. Sollte sich freiesMagazin in nächster Zeit
bin, dass ich konsequent mit “Sie” angespro- Ein Kompromiss wäre natürlich, wenn man es zu einem internen Club- oder Vereinsnewsletter
chen werde. Ich denke das ist eher von Nachteil, dem Leser überlassen würde, ob er gesiezt wer- entwickeln, würde ich das „Du“ allerdings für an-
als dass es Professionalität oder Ähnliches aus- den will, oder nicht. Dies sagt man offen, und gemessen halten.
drücken würde. wenn ein Leser in einem Leserbrief siezt, so
siezt man zurück, andernfalls duzt man ihn eben. Trotzdem würde mich ein „Du“ in Zukunft auch
Mir wäre also das Du *viel* lieber. Zumindest im
Im Magazin selber sollte man laut den Autoren- nicht davon abhalten, bei Euch/Ihnen mitzulesen.
E-Mail-Kontakt.
Richtlinien ja eh keine Anrede verwenden – Aus- :) Marco Ilgner
Im Magazin selbst könnte von mir aus das Sie nahmen sind da natürlich das Vorwort und die
bleiben, da sehe ich nicht das Problem. Leserbriefe. Keba (Kommentar) Es wirkt einfach etwas befremdlich, in „un-
Markus Schnalke serem Umfeld“ mit „Sie“ angesprochen zu wer-
[Die] Frage stellt sich mir täglich im Berufs- den. Unter Technikern gehört das „Du“ ja so-
Ich finde, dass man sich im Internet (zumin- leben – obwohl ich in den vergangenen Jahren wieso schon zum Standard (jedenfalls kenne ich
dest in der FOSS-Gemeinde) duzen sollte. FOSS eine Tendenz in Richtung „Du“ erlebe. Mir ent- keinen Techniker, weder intern noch extern, mit
hat etwas von Community, von miteinander arbei- spricht dieser Weg sehr, empfinde es nicht als dem ich mich siezen würde) und in der Online-
ten. Jeder kann theoretisch seine Ideen überall „lapidar“ oder sonst irgendwie nachteilig. Auch Kommunikation gilt es sogar als Zeichen der Di-
einbringen. Auch wenn das in der Praxis nicht im- hat es meines Erachtens nichts mit einer Stel- stanziertheit und Ablehnung, wenn man jeman-
mer so toll funktioniert, find ich es sinnlos, eine lung im Unternehmen oder mit impliziter Unhöf- den siezt.

© freiesMagazin GNU FDL Ausgabe 11/2009 36


L ESERBRIEFE

Zudem gehören wir ja alle mehr oder weniger der dem Geschlechterkram entledigen ;) (zumindest zum Thema „Sie vs. du“. Klar, diese Frage be-
Gruppe der Linux-User an (oder sind zumindest teilweise). Steffen (Kommentar) antwortet sich immer über den persönlichen Ge-
Linux und FLOSS gegenüber nicht abgeneigt) schmack. Hielten wir in der Vergangenheit das
und Personen, die der selben Gruppe angehören, Die meisten Menschen sprechen mich mit Sie Sie schlicht für die angemessene und höfliche
duzen sich für gewöhnlich ja auch. :) und meinem Nachnamen an. Das ist natürlich et- Form der Anrede, so sind wir nun durch Ihre An-
was unpersönlich. Diesen Namen hatten schon regungen zum Kurswechsel bereit. Ohne weitere
Ich hätte also kein Problem damit, wenn Sie (ich Umschweife: Wir bleiben in freiesMagazin beim
mein Vater, mein Großvater und auch seine Vor-
duze niemanden, der mir nicht das „du“ anbie- bewährten Sie, werden aber in der direkten Eins-
fahren. Meine Söhne heißen ebenfalls so. Man
tet oder von sich auch mich einfach duzt *g* zu-Eins-Kommunikation mit Autoren und Lesern
weiß also nicht immer genau, wer gemeint ist.
– so viel Respekt muss meiner Meinung nach auf das Du zurückgreifen, so es denn gewünscht
schon sein) auf das „Du“ umschwenken würden. Als besonders höflich empfinde ich es, wenn man wird. Wir sehen in diesem Kompromiss die beste
:) Dirk Sohler (Kommentar) mich mit meinem Vornamen Wolfgang und dann Lösung sowohl für Du- als auch Sie-Befürworter.
natürlich auch mit „Du“ anspricht. In der Ver- Thorsten Schmidt
Durch meine Mitgliedschaft bei der LUSC wandtschaft, im Freundeskreis und im Verein ist
(Linux User Schwabach) komme ich sehr viel das üblich.
mit anderen Leuten aus der Linux-Community in grep
Kontakt. Dort ist eigentlich generell das „Du“ an- Meiner Ansicht nach sind wir Linux-Nutzer (oder Gerade für ps ist grep nicht nötig und nicht
gesagt. Aber auch bei den Treffen der Ubuntu- alle Computerfreaks?) eine große Gemeinschaft geeignet. Zum einen, nicht geeignet insofern, als
user in Nürnberg ist dies so. Egal, ob Rechtsan- und wir sollten uns duzen. Es ist höflich, persön- dass grep sich regelmäßig selbst findet:
walt oder Bauarbeiter. Dies hat nichts mit Ach- lich und einfach nett. Es erhöht auch das Zusam-
$ ps ax | grep firefox
tung zu tun, sondern es gibt eher einen unge- mengehörigkeitsgefühl.
13368 ? Ssl 18:29 /usr/lib/firefox y
zwungenen Lebensstil wider, den wir, denke ich,
Ach ja, bin kein Teenie mehr, mein Geburtsjahr -3.0.14/ firefox -P default
alle befürworten. Peter Botschafter
liegt vor 1950. 19958 pts /3 R+ 0:00 grep firefox

Oh bitte, hört endlich mit diesem Gesieze auf. zum anderen, weil ps schon einen Schalter hat,
Also Mut zu mehr Persönlichkeit und Höflichkeit.
Ich kann’s nicht mehr ertragen. [Ich bin] dafür, um einen namentlich bekannten Prozess zu fin-
Lasst uns duzen. Wolfgang Grimm
dass Ihr endlich mit dem Duzen anfangt, so wie den:
sich das im Web gehört. Und auch sonst über-
all gehören sollte. Ich finde, dass die englische Ich würde es mir auch wünschen, geduzt zu $ ps -C firefox
Sprache uns da einen großen Schritt voraus ist: werden. Man kann auch trotz Duzen sehr förm- PID TTY TIME CMD
Da gibt’s den Mist gar nicht erst (und auch keine lich bleiben und Informationen überbringen. ;) 13368 ? 00:18:46 firefox
zufällige Verteilung von der/die/das ). Alex (Kommentar)
Sucht man nur die pid, dann gibt es auch das fer-
*nachdenk* Wär doch mal was, freiesMagazin in Vielen Dank noch einmal an dieser Stelle tige Kommando pidof , und um einen Prozess
Englisch. :) Damit würdet Ihr Euch auch gleich für die zahlreichen Antworten auf unsere Frage per Name zu killen pkill.

© freiesMagazin GNU FDL Ausgabe 11/2009 37


L ESERBRIEFE

X-Fehler suche ich auch mit grep, wobei ich er- { [Bei] VirtualBox [gibt es] eine Open-Source-
wähnen darf, dass man grep -e zu egrep ab- ps aux | grep --color = always "y Edition und eine unfreie Closed-Source-Version.
kürzen darf und dass man alternative Muster mit $1" | grep -v "grep" Die Open-Source-Version „VirtualBox OSE“ steht
einem Oder (|) verknüpfen kann. Mein X-Fehler- } unter der GPLv2 und darf entsprechend einge-
Skript sieht ganz ähnlich aus: setzt werden – jedoch ist man auf sich allein ge-
Dominik Wagenführ stellt und erhält keinerlei Support seitens SUN
$ egrep "^\( EE|WW|NI |\?\?\) " /var/y (oder sollte ich lieber Oracle sagen?). Normaler-
log/Xorg .0. log Virtualisierung mit VirtualBox weise muss die Version auch selbst kompiliert
Vielen Dank für den tollen Artikel – persön- werden, jedoch bieten einige Distributionen fer-
Die Fragezeichen muss man als Sonderzeichen
lich hätte mich interessiert, ob das Produkt „Vir- tige Pakete an. Die Closed-Source-Version ent-
maskieren. Stefan W. (Kommentar)
tual Box“ auch für professionelle Lösungen in hält mehr Features [1]. Diese ist jedoch nur für
Unternehmen verwendet werden kann. Konkret Privatanwender kostenlos. Firmen dürfen diese
Sie haben Recht, was die extra Befehle an-
würden wir gerne einen „Lizenzserver für CAD- Enterprise-Version nicht kostenlos einsetzen!
geht, aber ps -C findet einen Prozess nur, wenn
Plätze“ (also eine Sache die nur unter Windows
Sie dessen exakten Namen kennen, wie Rainer Bei VMware Server verhält es sich ähnlich. Es
läuft) auf unserem Linux-Server laufen lassen.
König in einem Kommentar auch anmerkte (Kom- existiert keine Open-Source-Version, jedoch darf
Ich habe hierfür virtuell ein Windows XP Profes-
mentar). Bei ps in Verbindung mit grep müssen VMware Server auch in Unternehmen kostenlos
sional installiert und warte noch auf die Genehmi-
Sie immerhin nur ansatzweise wissen, wie der eingesetzt werden. Support erhält man nur ge-
gung, dieses auf den Linux-Server laufen zu las-
Prozess heißt. gen Erwerb einer „Subscription“ [2]. Ein weite-
sen (ein Test hat gezeigt, dass es funktionieren
pidof und pkill haben ähnliche Probleme. So fin- würde). rer Vorteil von VMware Server ist die Remote-
det pidof einen Prozess nur, wenn man dessen Management-Fähigkeit. Ich persönlich bin der
Ein Kollege meinte, dass das Produkt „nur“ für Meinung, dass auf einem Linux-Server kein X11
exakten Aufruf kennt. pkill dagegen ist etwas zu
Spielereien zuhause ist und im Unternehmen fast zu laufen hat (Bibliotheken für ein ssh-X11-
großzügig, so wird mit
nur VMware verwendet wird. Wäre meine Lösung Forwarding bzw. ein X11-Terminal-Server sind
$ pkill gnome also nun Spielwiese oder ausreichend „professio- okay). Die nicht-grafische Installation von Vir-
nell“? Martin (Kommentar) tualBox gestaltet sich hierbei aufwendiger (vgl.
jeder Prozess beendet, der ein „gnome“ im Na- VirtualBox-Handbuch, Punkt 7.4.2 ff. [3]), wenn
men hat, was etwas zu viel des Guten sein dürf- Das Ganze lässt sich leider nicht in einen Satz auch für einen erfahrenen Linux-Benutzer unpro-
te. zusammenfassen (v. a. nicht, ohne die Gegeben- blematisch, während bei VMware Server keine
heiten ausführlich zu erläutern). Grundsätzlich zusätzliche Konfiguration nötig ist.
Dirk Sohler (Kommentar) hat sich aus diesem
würde ich Ihrem Kollegen allerdings unterstellen,
Grund eine eigene Bash-Funktion geschrieben:
ein Anhänger des Kostenvermutungsprinzips zu Kurzum: jedes Produkt hat seine Stärken und
$ type psgrep sein ;). Erklärung: Bei Dingen, die mehr kosten, Schwächen. VMware ist der Marktführer und
psgrep ist eine Funktion . vermutet man auch mehr Gegenleistung ohne zum Beispiel beim Remote Management weiter
psgrep () dies tatsächlich überprüft zu haben. als SUN. Dennoch spricht nichts gegen den Ein-

© freiesMagazin GNU FDL Ausgabe 11/2009 38


L ESERBRIEFE

satz der kostenlosen Open-Source-Edition, so- selbst einen angibt oder wenn gar keinen Kon- Wichtige im Bunde ist Paul Sottosanti, der die ver-
fern man nicht auf Herstellerunterstützung ange- struktor angibt. schiedenen Spielbretter erstellt hat.
wiesen ist. Florian E.J. Fruth 3. Dann werden nicht Unterverzeichnisse mit
Punkten getrennt, sondern viel mehr Gruppen
L INKS
Korrekturen und Ergänzungen von Klassen (Pakete) von ihren Untergruppen [1] http://www.virtualbox.org/wiki/Editions
Java, Teil 1 – Einführung in eine moderne oder enthaltenen Klassen. [2] https://www.vmware.com/vmwarestore/support.
Sprache, freiesMagazin 10/2009 [4] 4. Zu guter Letzt sollte Java nicht „sehr streng html
Stefan Wagner hat uns darauf hingewie- strukturiert“ sein, sondern natürlich sehr [3] http://download.virtualbox.org/virtualbox/3.0.8/
sen (Kommentar), dass es im Java-Artikel der streng typisiert. UserManual.pdf
letzten Ausgabe einige Ungenauigkeiten und [4] http://www.freiesmagazin.de/freiesMagazin-2009-
missverständliche Formulierungen gab: Zweiter Programmierwettbewerb gestartet,
10
freiesMagazin 10/2009 [4]
1. Der Konstruktor ist, anders als aus dem Arti- Wie uns Martin Menke mitteilte (Kommentar), Die Redaktion behält sich vor, Leserbriefe gegebe-
kel hervorgeht, keine Methode. Er besitzt kei- stammt das Spiel „RoboRally“, welches als Vor- nenfalls zu kürzen.
nen Rückgabewert und man kann auch nicht lage für den Wettbewerb diente, nicht von Bill
für ein vorhandenes Objekt aufrufen. McQuillan allein. Der eigentliche Spieledesigner Die Leserbriefe kommentieren
2. Des Weiteren gibt es einen parameterlosen ist Richard Garfield, Bill McQuillan hat „nur“ die
Konstruktor nur dann, wenn man entweder Entwicklung des Spiels übernommen. Der dritte

„Turn Signals“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/165

© freiesMagazin GNU FDL Ausgabe 11/2009 39


M AGAZIN

Veranstaltungskalender
Messen
Veranstaltung Ort Datum Eintritt Link
World Usability Day Weltweit 05.11.2009 - http://www.worldusabilityday.de
OpenRheinRuhr Bottrop 07.11.-08.11.09 3 EUR http://openrheinruhr.de
Open Source Expo Karlsruhe 15.11.-16.11.09 10 EUR http://openexpo.de
Brandenburger Linux-Infotag Potsdam 21.11.2009 frei http://www.blit.org
KNF-Kongress Nürnberg 22.11.2009 - http://www.franken.de/veranstaltungen/knfkongress
LinuxDay Dornbirn 28.11.2009 frei http://ld.lugv.eu
(Alle Angaben ohne Gewähr!)

Sie kennen eine Linux-Messe, welche noch nicht auf der Liste zu finden ist? Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an
.

Vorschau
freiesMagazin erscheint immer am ersten Sonntag eines Monats. Die Dezember-Ausgabe wird voraussichtlich am 6. Dezember unter anderem mit
folgenden Themen veröffentlicht:
 Erstellen geometrischer Skizzen mit kig
 Review: Mad Skills Motocross
Es kann leider vorkommen, dass wir aus internen Gründen angekündigte Artikel verschieben müssen. Wir bitten dafür um Verständnis.

Konventionen
An einigen Stellen benutzen wir Sonderzeichen mit einer bestimmten Bedeutung. Diese sind hier zusammengefasst:
$: Shell-Prompt
#: Prompt einer Root-Shell – Ubuntu-Nutzer können hier auch einfach in einer normalen Shell ein sudo vor die Befehle setzen.
y: Kennzeichnet einen aus satztechnischen Gründen eingefügten Zeilenumbruch, der nicht eingegeben werden soll.
~: Abkürzung für das eigene Benutzerverzeichnis /home/BENUTZERNAME
: Kennzeichnet einen Link, der auf eine englischsprachige Seite führt.
: Öffnet eine höher aufgelöste Version der Abbildung in einem Browserfenster.

© freiesMagazin GNU FDL Ausgabe 11/2009 40


M AGAZIN

Impressum ISSN 1867-7991


freiesMagazin erscheint als PDF und HTML einmal monatlich. Erscheinungsdatum: 1. November 2009
Redaktionsschluss für die Dezember-Ausgabe: 22. November 2009 Erstelldatum: 4. November 2009

Kontakt Redaktion
E-Mail Dominik Honnef Thorsten Schmidt
Postanschrift freiesMagazin Dominik Wagenführ (Verantwortlicher Redakteur)
c/o Dominik Wagenführ
Beethovenstr. 9/1 Satz und Layout
71277 Rutesheim Ralf Damaschke Yannic Haupenthal
Webpräsenz http://www.freiesmagazin.de Marcus Nelle Markus Schaub
Sebastian Schlatow
Autoren dieser Ausgabe
Volker Duetsch S.18 Korrektur
Marcel Jakobs S.14 Daniel Braun Raoul Falk
Rainer König S.21 Stefan Fangmeier Johannes Mitlmeier
Mirko Lindner S.8 Karsten Schuldt
Dominik Mäder S.12
Mathias Menzer S.7 Veranstaltungen
Markus Schnalke S.3 Ronny Fischer
Dominik Wagenführ S.28
Logo-Design
Arne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt. Mit vollem Namen gekennzeichnete Beiträge geben nicht notwendigerweise die Meinung der Redaktion wieder. Wenn Sie freiesMagazin
ausdrucken möchten, dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall. Die Bäume werden es Ihnen danken. ;-)

Soweit nicht anders angegeben, stehen alle Artikel und Beiträge in freiesMagazin unter der GNU-Lizenz für freie Dokumentation (FDL). Das Copyright liegt beim jeweiligen
Autor. freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz für freie Dokumentation (FDL) mit Ausnahme von Beiträgen, die unter einer anderen Lizenz hierin
veröffentlicht werden. Das Copyright liegt bei Dominik Wagenführ. Es wird die Erlaubnis gewährt, das Werk/die Werke (ohne unveränderliche Abschnitte, ohne vordere und ohne
hintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License, Version 1.2 oder jeder späteren Version, veröffentlicht von der Free Software Foundati-
on, zu kopieren, zu verteilen und/oder zu modifizieren. Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 2.5. Das Copyright liegt bei Randall Munroe.

© freiesMagazin GNU FDL Ausgabe 11/2009 41

Das könnte Ihnen auch gefallen