Freitag, 14. Dezember 2007

Kubuntu Tutorials Day

So, gestern war es also soweit: Kubuntu Tutorials Day. Besonders interessant warnen da für mich das Bazaar und Launchpad Tutorial. Leider ging das Paketierungstutorial etwas im Chaos unter da sich mittendrin auf einmal unser Tutor vom Netz getrennt hat und "The Man" Jonathan Riddell persönlich übernommen hat.
Besonders beeindruckend fand ich die Möglichkeiten die den *ubuntu Entwicklern zur Verfügung gestellt werden, darunter auch das PPA (Personal Package Archive) welches nicht nur ein persönliches Repo zur Verfügung stellt sondern sogar eigenständig Pakete übersetzt (für unterschiedliche Architekturen) und in .deb Form presst. Leider scheint mit das .deb Format ziemlich aufwändig im Vergleich zu ebuild von Gentoo und irgendwie auch etwas unübersichtlich. Da gibt es Skripte für dies und jenes in unterschiedlichster Ausführung und irgendwie keine klare Linie. Naja vielleicht bin ich auch einfach zu eingeschossen auf etwas anderes.
Auch der kleine Ausflug und die Python/Qt4/KDE4 Welt war durchaus einen Blick Wert. Zwar halte ich C++ immer noch für die beste Sprache um Applikationen zu entwickeln aber für kleine Aufgaben ist Python wirklich ein mächtiges Werkzeug und erspart einem eine Menge Aufwand in Punkto kompilieren.
Alles in allem bin ich sehr angetan von der Kubuntu Community und werde mich in der nächsten Zeit auf jeden Fall mehr mit der Materie befassen und auch eventuell irgendwann MOTU (was in *ubuntu Sprache soviel wie Master of the Universe heisst ;) ).

Donnerstag, 9. August 2007

Bootsektor schreiben mit GNU Assembler

Wird mal wieder Zeit die Regler auf Geek zu stellen ;) (man merke an das ich gerade japanischen Hardcoretechno höre dessen Text wie folgt geht : uauauauauaä uauauauauä.)

Ok zum Thema. Der GNU Assembler ist ja nicht jedermanns bester Freund da er die AT&T Syntax verwendet und darum greifen viele lieber zu NASM. Aber ich persönlich bevorzuge auf jeden Fall die GNU Lösung da sich das ganze sehr schön in die GNU Compiler Collection einbindet. (Für alle die es noch nicht wissen sollten, gcc -s foo.c wandelt den C-Code in foo.s, den Assembler Code um ;) ). Aber über Geschmack lässt sich ja bekanntlich nicht streiten, ich werde hier auf jeden Fall den GNU As verwenden.

Das Objekt unserer Begierde ist heute also ein Bootsektor, also die ersten 512 Byte unseres Mediums. Hier ist die Partitionstabelle und ein kleines Programm welches unser Betriebssystem starten soll angesiedelt, dazu kommt noch eine Magic Number die dem BIOS sagt das es sich hier auch wirklich um einen Bootsektor handelt.

Die Partitionstabelle lassen wir jetzt einfach mal außen vor und befassen uns damit wie wir ein Programm in den Bootsektor packen das dann auch wirklich läuft. Auch wenn ich jetzt gesteinigt werde, wird das ganze in ein "Hello World" Programm ausarten ;). Da wir uns im Real Mode der CPU befinden und weniger als 512 Bytes zur Verfügung haben lohnt sich auch nicht wirklich mehr. Also erst mal zum Quellcode von bootsektor.s :

.code16
.text
.globl entry
entry:
mov %cs,%ax
mov %ax,%ds
mov %ax,%ss
mov $0x400,%sp

mov $.LC0,%si
call print
cli
hlt
.LC0:
.string "Hello World"
.globl print
print:
lodsb
or %al,%al
jz .endprint
mov $0x0e,%ah
mov $0x0007,%bx
int $0x10
jmp print
.endprint:
ret
.section .sig
.word 0xaa55

Wir richten also alle unsere Segment Selektoren (CS,DS und SS) und den Stack ein und packen die Adresse unseres Strings in das SI Register. Danach rufen wir print auf (call ist das was uns in C Funktionen aufrufen lässt) und laden das erste Byte aus SI in das Low Byte von AX (AL). Ist dieses gleich 0 wird das Z-Flag gesetzt (wegen or %al,%al) und jz springt nach endprint, wenn nicht wird der Aufruf des Interrupts 0x10 vorbereitet. Dieser Interrupt hat mehrere Funktionen wir nutzen in diesem Beispiel die Funktion 0x0e die für das ausgeben eines Zeichens verwendet wird. Der Funktionswert muss im High Byte des AX Registers gespeichert werden (AH). Im Low Byte von BX speichern wir die Farbe unseres Zeichens (0x07 für weiß). Jetzt wird der Interrupt 0x10 aufgerufen, der kümmert sich auch darum das SI weitergeschoben wird zum nächsten Zeichen.

Zu guter letzt definieren wir ein eigenes Segment welches wir "sig" (soll für Signatur stehen) nennen. Das ist unsere Magic Number für das BIOS, diese muss ganz ans Ende unseres Bootsektors.

Ok, der Quellcode ist fertig. Nun wandeln wir unseren Code erst mal in ein Object File um welches wir danach linken. Dies geschieht wie folgt :

gcc -c bootsektor.s

Jetzt müssen wir nur noch linken damit die Adressen in unserem Bootsektor auch passen. Das BIOS lädt den Sektor in den Speicher an die Adresse 0x7c00 das müssen wir unserem Programm mitteilen damit es überhaupt Lauffähig ist. Außerdem muss unsere "Magic Number" auch an die passende Stelle geschoben werden. Das machen wir mit einem Linker Script (link.ld) :


OUTPUT_FORMAT(binary)
ENTRY(entry)
SECTIONS
{
.boot_sector 0x7c00 :
{
*(.text)
*(.data)
. = 510; *(.sig)
}
.bss :
{
*(.bss)
}
}

Mit "ld -T link.ld -o bootsektor bootsektor.o" wird unser Object File in ein 512 Byte großes Binary umgewandelt umgewandelt den man mit "dd if=bootsektor of=/dev/fd0" auf eine Diskette schreiben kann oder (viel besser, denn wer hat heute noch Disketten ;) ) mit qemu -fda bootsektor -boot a mit qemu ausführen kann. Um das Linker Skript besser zu verstehen sollte man sich einfach mal das GNU Linker Manual anschauen. ;)

Bootsektoren schreiben ist eigentlich ziemlich sinnlos, aber es ist witzig das ganze mal gemacht zu haben da es einem interessante Einblicke vermittelt. Wenn man wirklich ein bootfähiges Programm erstellen will (also einen Kernel oder ähnliches) empfiehlt sich die Verwendung von GRUB und einer Multiboot-ELF. Dazu aber vielleicht irgendwann später ;)

Dienstag, 17. Juli 2007

Cryptographie für Jedermann

Dieses Wochenende habe ich mich einmal mit dem Thema Verschlüsselung auseinandergesetzt. Sei es jetzt bei Emails, Instant Messages, einzelne Dateien oder gleich ganze Datenträger.
Zum verschlüsseln von Emails und einzelnen Dateien bietet sich das Tool gpg an, welches auch ein sehr praktisches Frontend für KDE (und natürlich auch andere Oberflächen ;) ) besitzt. Ich als KDE Benutzer habe mich also mit dem Tool Kgpg befasst. Eigentlich gibt es darüber nicht besonders viel zu sagen, Schlüssel erstellen und auf einen Keyserver exportieren, sowie das signieren von Schlüsseln geht mit ein paar Klicks. Leider habe ich keine Funktion gefunden um Schlüssel zu widerrufen und musste deswegen auf die Kommandozeile ausweichen (vielleicht war auch auch einfach nur zu blind ;) ).

Kommen wir zu einer etwas spannenderen Sache : verschlüsseln von Konversationen. Eine Messenger bieten die Möglichkeit Nachrichten per gpg zu verschlüsseln, das müssen aber erst mal beide Messenger ohne Probleme unterstützen. Die beste Lösung allerdings scheint mir die sogenannte OTR (Off-the-Record) Verschlüsselung. Plugins sind für Kopete unter KDE-Look und für Pidgin unter Cypherpunks zu erhalten. Besonders gepampert werden wieder einmal die Mac User mit Adium X, welches OTR gleich mitliefert ;). Besonders chic an OTR ist die "Deniability". Die Verschlüsselung erlaubt einem somit einfach zu sagen "das habe ich so nie geschrieben und muss gefälscht worden sein". Ich will jetzt nicht dazu aufrufen irgendwelche kriminellen Machenschaften über IM planen, dennoch bietet dieses Feature die Sicherheit das jemandem nicht ungewollt irgendwelche Äußerungen untergeschoben werden.

Eine wirklich beeindruckende Leistung von z.B. Linux ist die Möglichkeit ganze Partitionen zu verschlüsseln. Das geht sogar so weit das sich selbst die Systempartition (bis auf /boot) verschlüsseln lässt. Wozu ist das gut? Nunja, da auf einer Festplatte meist persönliche Daten gespeichert wird, kann es schon in einer mittelschweren Katastrophe enden, wenn sich jemand sich die Platte unter den Nagel reißt. Auf einmal sind Kontodaten, Passwörter, Emailaddressen oder vielleicht noch viel sensiblere Daten futsch. Dazu bietet Linux eine kernelinterne Lösung mit DM-Crypt und dem Tool cryptsetup, welches mit dem Device Mapper zusammen arbeitet. Bsp. : auf der Partition /dev/sda4 liegt unser /home, nun erstellt cryptsetup ein Device mit dem Namen /dev/mapper/home (der Name ist frei wählbar). Dieses Device wird anstatt von /dev/sda4 in die fstab eingetragen. Mit zusätzlichen Einträgen in der crypttab und passenden Init Skripten wird man dann im Moment des mountens nach einem Passphrase gefragt. Ohne das läßt sich gar nicht erst auf die Partition zugreifen oder überhaupt die darauf gespeicherten Daten lesen. Für Ubuntu gibt es noch ein nettes Howto wie man seine Platten verschlüsselt. Leider hat der Kubuntu Installer beim installieren auf den verschlüsselten nicht wirklich zum Ziel geführt, also musste ich das System einmal unverschlüsselt installieren und danach einfach ein bisschen hin und her kopieren ;). Ein andere Punkt ist noch das die Kubuntu Live CD meine Festplatte unter hda erkannt hat und das installierte System unter sda.... naja vielleicht passiert da ja noch was ;)

Also : Viel Spass beim wiederentdecken der Privatsphäre :)

Sonntag, 17. Juni 2007

Alte Liebe rostet nicht!

Bei dem ganzen Gerangel was sich derzeitig um den Linux Kernel entwickelt, hab ich mich mal wieder dazu berufen gefühlt in den Weiten den Internets nach Alternativen für mich zu suchen. Was nicht heißen soll das ich jetzt auf einmal den Kernel wechseln will, sondern eher das ich mir für den Fall der Fälle (nämlich das Linus mit seiner Beharrlichkeit in Sachen GPLv2 alles in den Sand setzt) gerüstet wissen will.
Ich muss ja sagen : da hat sich einiges getan. Solaris hat mit der Veröffentlichung des Quellcodes von Solaris einiges bewirkt. Eine ganze Ansammlung an Distributionen hat es sich zum Ziel gesetzt jeweils als erstes eine Vollständig lauffähige Solaris Distro auf den Markt zu bringen. Das Projekt das mit dabei am meisten aufgefallen ist, ist Nexenta (www.gnusolaris.org). Eine auf Debian basierende GNU/Solaris Distribution. Der einzige Harken an der Sache ist das Sun den Quellcode unter einer eigenen Lizenz, nämlich der CDDL veröffetlicht hat. Diese ist zwar nach Definition als Open Source Lizenz anerkannt, aber ich persönlich bin doch eher ein Freund von GPL Lösungen (jaja ich weiß... unverbesserlich ;) ).
Die Suche ging also weiter (aber erst nachdem Belenix bei mir auf qemu versagt hat und ich zu Faul bin auf die 0.9 Version des Emulators umzusteigen. Naja in Gutsy ist sie ja drin). Und mit einmal mal fand ich das alte Sorgenkind der Free Software Bewegung wieder : HURD.
Das letzte mal hatte ich es vor einigen Jahren installiert. Debian hatte damals die Version K8 veröffentlicht, und danach ist nicht mehr viel passiert (dachte ich zumindest). Zwar war das System damals wie heute hemmungslos instabil, aber das Design..... meine Fresse. Inzwischen ist Debian/HURD in der Version K14 erhältlich. Leider hat sich nicht viel am System selber getan (bis auf PCMCIA Support und noch irgendwas das ich vergessen habe) aber es sind eine Menge neuer Pakete hinzugekommen. Selbst KDE ist inzwischen portiert worden.
Nächste Amtshandlung also : QEMU installieren, und HURD draufpacken.



Ein 2 GB Image ist dafür schon genug (ich bin mir derzeit nicht sicher ob die K14 bereits das Patch das Partitionen über 2 GB erlaubt enthält). Vom X Server werde ich erst einmal die Finger lassen, da mein kleines Notebook mit 512MB Arbeitsspeicher auch noch was anderes zu tun hat als 2 Betriebssysteme mit grafischer Oberfläche zu verwalten ;). Hier ein schöner Link zum Thema Qemu und HURD : http://eyeside.net/hurd/Hurd-on-QEMU.html
Nach ein bisschen Hick Hack hatte ich dann auch endlich etwas halbwegs brauchbares. Vorteil der ganzen Qemu Sache ist das man sich das Image mal ebend kurz auf DVD brennen kann, bzw als Loopback mounten wenn man mal Daten zwischen HURD und Linux hin und herschieben will. Qemu stellt sogar mehrere Möglichkeiten zur Verfügung die Netzwerkverbindung des Rechners zu nutzen und das emulierte System mit der Außenwelt zu verbinden (apt-get steht da also nichts mehr im Weg ;) ).
Alles in allem findet man schnell alles was man zum entwickeln braucht. Das Userland ist auf recht neuen Stand, nur halt am System harpert es halt noch ein bisschen. Da dieses halt derzeit auf dem GNUMach Kernel (ein Microkernel der nach heutigem Stand der Technik nicht mehr wirklich diesen Titel verdient ;) ) läuft welcher hemmungslos veraltet ist. Derzeit ist wohl Coyotos der heiße Favorit auf den neuen Titel "HURD-Unterbau".

Alles in allem hätte HURD die Möglichkeit die Kernelwelt ziemlich aufzumischen, da das Konzept so noch nie dagewesen ist. Leider fehlt es derzeit aber wohl an Entwicklern (wie immer...). Aber es bliebt zu hoffen das das System wirklich irgendwann mal das Licht der Welt erblickt, und nicht mehr weiter nur ein Schattendasein auf den Rechnern von Hackern fristet :)

Für alle die jetzt neugierig geworden sind hier noch ein paar Links :

Freitag, 25. Mai 2007

Goodbye Gentoo....

Es ist immer schade wenn man sich von alten Bekannten trennt aber in diesem Fall musste es einfach sein. Gentoo hat mich viele Jahre begleitet und ich war sehr lange zufrieden damit aber in letzter Zeit wurde mir der Aufwand neben dem Studium einfach zuviel. Kompilieren, Fehlersuche und Wartung des Systems haben einfach einen Zeitaufwand mit sich gebracht dessen Ergebnis es einfach nicht Wert war. Gentoo werde ich wohl weiter auf meinem Desktoprechner verwenden aber auf dem Notebook stehen im Moment 2 Kandidaten zur Auswahl bereit :

  1. Kubuntu
  2. und
  3. Arch Linux

Derzeit habe ich mir Kubuntu installiert und werde es erst mal eine Weile lang testen. Vorteile gegenüber Arch Linux ist auf jeden Fall das es sehr viele vorkompilierte Pakete hat und sehr einfach zu konfigurieren ist. Vor allem habe ich nicht mehr das Problem zig Stunden darauf zu warten bis ein Update endlich durchgelaufen ist.

Trotz allem juckt es mich ziemlich in den Finger mir auch noch einmal Arch Linux anzusehen da es wohl ziemlich aktuell und flexibel zu sein scheint.

Aber noch ist keine Entscheidung gefallen, auch wenn sich Kubuntu bis jetzt wirklich sehr gut schlägt.

Sonntag, 20. Mai 2007

Schäuble go home!

Langsam kommt mir dezent die Galle hoch wenn ich sehe wie sich die Herren vom Linux Tag aufführen. Inzwischen ist die Nachricht sogar bis nach Slashdot vorgedrungen : Wolfgang Schäuble wird die Schirmherrschaft des Linux Tages übernehmen. Tolle Sache, setzt sich der gute Mann doch seit einiger Zeit energisch dafür ein die Überwachung auf alles und jeden drastisch zu verschärfen, sogar an der Verfassung will dieser überaus redliche (*schnüffel* irgendwie riecht hier jemand nach Korruption...) Möchtegern Diktator und Vollzeitparanioker rumschrauben. Jaja... der Unschuldsverdacht hindert einen auch daran Leute die einem verdächtig erscheinen gleich erst mal wegzusperren. Was kommt als nächstes? Erst schießen, dann fragen?

Und was sagen die überaus pfiffigen Leute vom Linux Tag dazu? "Er ist ein wichtiger Partner für uns und für freie Software, und seine Politik steht hier nicht im Vordergrund". Sicher doch, die Software soll frei sein und die Menschen nicht oder was? Open Source ist mehr als nur ein Produkt, es ist eine Philosophie die sich gegen Kontrolle und Fußfesseln stellt und gerade dieser Mann soll die Schirmherrschaft für ein derart wichtiges Ereignis für Open Source übernehmen? Sicher in der Open Source Definition steht das jeder, ganz gleich welcher Einstellung oder sonst etwas, die Software nutzen kann, aber nirgends steht geschrieben das man jedem blind applaudieren sollte nur weil er sie benutzt. Ich seh schon die Schlagzeilen : Hölle rüstet auf Linux um, der Fürst der Finsternis übernimmt Schirmherrschaft des Linuxtages........

Wie auch viele vor mir rufe ich zum Boykott des diesjährigen Linux Tages auf. Das Argument der Veranstalter "Damit schadet ihr nur der Community" erfüllt meiner Meinung bereits den Tatbestand der Nötigung. Wenn der Community geholfen werden soll, sollten nicht die Besucher Schäuble akzeptieren sondern die Veranstalter kapieren das ihn niemand da sehen will.

Samstag, 19. Mai 2007

Niemand hat die Absicht eine Mauer zu bauen....

Die Welt ist im Wandel. Vor nicht allzu langer Zeit war der Mensch beschränkt auf die Medien die uns der Staat oder die Presse zum Fraß vorgeworfen hat. Das ging auch eine Zeit lang wirklich gut, man wurde informiert und unterhalten und alles lief eigentlich gar nicht mal so übel, der Mensch dümpelte in einem Zustand des Desinteresses herum und hatte gleichzeitig das Gefühl ungemein informiert zu sein.
Mit der Zeit erkannten aber die großen Medienanstallten das man mit reinen Informationen nicht weiter kommt. Die Boulevardpresse hat es ja vorgemacht. Schillernd und in grellen Neonfarben muss es sein, sich durch die Netzhaut des Opfers fressen wie ein Wurm durch einen faulen Apfel um ihn am Ende hohl zurückzulassen. Opium für Volk, Crack für unsere Nutte, "Komm Hasso, hol's Stöckchen. Ja, Braaaaaaaaaaaaaaaav braaaaaaaaaaaaaav". Die Medien haben verstanden, zu gut. Unsere Realität oder zumindest das was wir als solche akzeptiert hatten wurde Stück für Stück mit Krokant und Zuckerguss überzogen. Süß, schmackhaft, nährstofflos. Der Geist beginnt zu verhungern, der Fernseher wird zum Bildschirmschoner des eigenen Verstands, zeigt er uns doch das was so angenehm und einfach ist. Man hat uns da wo man uns haben will, das Marktforschungsprojekt leben ist auf seinem Zenit. Wir werden geboren, erfasst, katalogisiert, umworben und konsumieren bis wir letztendlich Futter für die Würmer sind. Und wo ist der Sinn? Können wir am Ende sagen : "Oh ja mein Leben war toll, ich kann den kompletten Denver Clan auswendig mitreden und hab alle Schminktricks von Germany's Next Topmodel drauf"....Keine Tasche keine Competition. Mein Blick schweift über die leeren Menschenhüllen die ich auf Studentenparties sehe wie sie sich klatschend und volltrunken dem Singsang von Mickie Krause und Konsorten hingeben, noch ein paar Grashalme die sich mit dem Wind bewegen.
Hinter den Kulissen allerdings spielt sich ein anderes Schauspiel ab, über Glasfaser und Kupferkabel zwischen all diesen neongrellen Werbebildchen, bilden sich Strukturen. Völlig unabhängig voneinander beginnen von uns allen unbemerkt Mirkokosmen zu entstehen. Kleine Oasen in einer Wüste aus Stumpfsinn. Das Web 2.0 wirft seine Schatten. Erst klein und unmerklich, wie z.B. der Familienvater der eine kleine Homepage entwirft um seine Liebsten vorzustellen, oder der Pferde-Fotoalbum der kleinen Nachbarin. Zwischen all diesen Blitzlichtern aus Konsum und Reizüberflutung finden sich auf einmal Menschen wieder und sie kontrollieren den Inhalt. Das an und für sich ist ja nichts neues doch das eine Zahnrad greift in das nächste. Suchmaschienen die mit ihren Crawlern das Netz durchforsten stoßen auf unsere Seiten. Auf einmal sind wir nicht mehr alleine, auf einmal hört man uns. Überall, global vernetzt.
Und es bleibt nicht dabei, das neugewonnene Selbstvertrauen, trägt Früchte. Einzelpersonen nehmen es mit ganzen Konzernen auf, bloggen sie in Grund und Boden und auf einmal gerät das Gleichgewicht ins wanken. Die vielzitierte Floskel "Du kannst als einzelner alles Erreichen" inkarniert. Ideen nehmen Gestalt an weil wir nicht mehr alleine mit ihnen sind. Hunderte finden sich zusammen und beginnen ihr Umfeld zu verändern, das was ihnen missfällt zu bekämpfen oder etwas zu schaffen das so noch nie da war. Die Bandbreite der Informationen fordert uns neu, nicht alles ist wahr was wir lesen,aber genauso wenig ist alles wahr was man uns glauben machen will. Wir werden kritisch, prüfen das was wir lesen. Der Geist beginnt zu ticken, wie ein eingerostete Maschine schleudern wir den Staub aus unseren Köpfen.
Die Mächtigen beginnen zu schwitzen, ihre Hunde wollen keine Stöckchen mehr holen, ihre Kunden ihre Produkte nicht mehr kaufen. Das Volk wird autark, die Idee ist stärker als das Individum da sie die fleischliche Barriere überschreitet und sich in Bits und Bytes manifestiert. Die Mächtigen springen auf, schreien Zeter und Mordio, aber sie bleiben ungehört. Was also tun, die neugewonnene Freiheit ist nicht zu kontrollieren. Lokale Gesetze können sie nicht beschränken, wer suchet wird finden und er wird viel finden. Wie gelegen kommen ihnen die Fanatiker die diese Freiheit als Plattform verwenden. "Forum für Terroristen", Ausbildungslager für Selbstmordattentäter", hör ich sie schreien und beginnen Sachen die auch so schon da waren auf ihr neues Feindbild zu projezieren, und viele glauben. Sehen bedroht durch Muslime, Flugzeuge, Vogelgrippe, Tellerminen, Windpocken und Gefrierbrand. Dein Hund muss dich fürchten und lieben um dir das Stöckchen zu holen.
Ein Blick in die Nachrichten, jeden Tag beginnt der Horror aufs neue. Die Mächtigen fürchten um ihre Kontrolle, doch wir sind keine Hunde mehr sondern haben Blut geleckt. Wir wittern den Käfig in den sie uns stecken wollen.

"Die Anschuldigungen das sich die Bundesrepublik Deutschland in einen Überwachungsstaat verwandelt, halte ich für infam", höre ich sie sagen. "Niemand hat die Absicht eine Mauer zu bauen...." flüster ich leise und beginne zu tippen.