Don't understand german? Read or subscribe to my english-only feed.

Versionskontrolle mit Mercurial

October 18th, 2006

Was schon länger auf meiner Todo-Liste stand: öffentlich zugängliche Versionskontrolle für grml-Pakete.

Am Wochenende habe ich mir die Zeit genommen, und ein dementsprechendes Setup eingerichtet (danke für deine wertvollen Kommentare, Gebi!). Die Wahl fiel nach langen und ausgiebigen Diskussionen auf mercurial – ‘a fast, lightweight Source Control Management system designed for efficient handling of very large distributed projects’.

Warum mercurial? Ganz einfach weil es mir von Anfang an sympathisch war und es schnell und dezentral (das, was man bei Subversion erst mit svk bekommt) arbeitet. Ich sehe es als guten Kompromiss von Features, Usability und Geschwindigkeit. Ich hatte beim Schreiben von Papers mit Gebi in einem kleinen Repository genau so wenig Probleme wie beim Verfolgen von Änderungen in einem großen Tree wie dem vom Linux Kernel 2.6.

Mit hg-buildpackage aus grml-mercurial-utils bauen wir jetzt Debian-Pakete aus unseren Mercurial-Repositories. Es ist angelehnt an svn-buildpackage (‘helper programs to maintain Debian packages with Subversion’) und wird in den kommenden Tagen und Wochen hoffentlich noch um neue Features erweitert. Schön langsam füllt sich auch das Repository mit weiteren Paketen, in der Hoffnung, dass wir einmal alle Pakete sauber verwaltet und öffentlich zugänglich im Versionskontrollsystem haben. Bisher bin ich mit dieser Arbeitsweise sehr zufrieden (geht ruckzuck und einfach von der Hand), was es langfristig bringt wird sich natürlich erst zeigen. ;-)

Unser Setup und einige wichtige Sachen zum Umgang mit Mercurial habe ich dokumentiert und stelle es der Öffentlichkeit unter grml.org/mercurial/ zur Verfügung.

Ruby (Update)

October 14th, 2006

Ich spiele mich gerade ein wenig mit Ruby. (Murphee, du bist mit ‘Tipping the scale: The Ruby features that make the difference‘ nicht ganz unschuldig! ;-)) Um meine Gedanken zu ordnen hier ein bisserl Brain-Dumping…

Interessante Debian-Pakete:

irb: Interactive Ruby (irb)
rails: MVC ruby based framework geared for web application development
rdoc: Generate documentation from ruby source files
ri: Ruby Interactive reference (ri)
ruby-pkg-tools: Tools for building Debian Ruby packages
ruby1.9-examples: Examples for Ruby 1.9
rubybook: the "Programming Ruby" book
rubygems: package management framework for Ruby libraries/applications
vim-ruby:  Vi IMproved - enhanced vi editor - with Ruby support

Als Vim-Verfechter habe ich natürlich vim-ruby (die Vim-Version mit Ruby-Scripting-Support, siehe ‘:help if_ruby’) installiert. In vim-ruby.rubyforge.org hab ich reingeschnuppert, tut soweit mal. Weiteres Vim-Tuning habe ich aber noch nicht vorgenommen. Kurz reingeschnuppert habe ich auch in RDT, eine Ruby-Erweiterung für Eclipse. Sieht soweit sehr nett aus, ich kann aber mangels Praxis-Erfahrung noch nicht wirklich was dazu sagen.

Unbedingt kennen sollte man auch irb. irb steht für ‘interactive ruby’ und ist quasi eine interaktive Shell für Ruby. Gerade für einfaches Herumspielen finde ich irb ganz nett, hier ein Auszug aus der ~/.irbrc der kommenden grml-Release:

# we want to be able to use tab-completion in irb:
require 'irb/completion'
ARGV.concat [ "--readline", "--prompt-mode", "simple" ]

# we want to get a history file of our session:
module Readline
  module History
    LOG = "#{ENV['HOME']}/.irb-history"

    def self.write_log(line)
      File.open(LOG, 'ab') {|f| f < < "#{line}\n"}
    end

    def self.start_session_log
      write_log("\n# session start: #{Time.now}\n\n")
      at_exit { write_log("\n# session stop: #{Time.now}\n") }
    end
  end

  alias :old_readline :readline
  def readline(*args)
    ln = old_readline(*args)
    begin
      History.write_log(ln)
    rescue
    end
    ln
  end
end

Readline::History.start_session_log

# simple prompt?
# IRB.conf[:PROMPT_MODE] = :SIMPLE

# prompt for easy copy/paste? start with irb --prompt xmp
IRB.conf[:PROMPT][:XMP][:RETURN] = "\# => %s\n"

(Äh ja, diesen fehlplatzierten Smiley in der Konfig macht WordPress hinein. Fragt mich nicht, wieso es so einen Schmarrn in einer pre-Umgebung macht… soll natürlich ein Doppelpunkt mit einem anschliessenden ‘o’ sein….)

Das Buch Programmieren mit Ruby hab ich mir ausgeborgt (danke, Karl!), Programming Ruby, ‘The Pragmatic Programmer’s Guide’ hab ich mir vor kurzem gekauft und ist meine aktuelle Abendlektüre. Sehr netter Schreibstil! Nicht uninteressant wirkt auch Ruby Cookbook, allerdings hab ich vorerst schon genug Leselektüre. ;-)

Interessante Webseiten:

Update: rubygems ist ab jetzt in Unstable zu finden (und wird somit wohl Teil von Debian etch). Vor ein paar Tagen bin ich über die Bookmarks von Murphee auf RubyNode aufmerksam gemacht worden. Heute hab ich mir die Zeit genommen, Ruby 1.8.5 selbst zu kompilieren damit ich RubyNode testen kann:

RubyNode is a library that allows read only access to Ruby’s internal NODE structure.
It can retrieve the node trees of methods and procs and it can use Ruby’s parser to parse
Ruby source code strings to node trees.

Karl, danke fürs Kommentar, natürlich gehört Ruby-on-Rails (Debian-Paket: rails) auch erwähnt.

Hab ich was vergessen? Sollte ich noch etwas kennen? Bitte melden! :-)

mathomatic – Portable Computer Algebra System (CAS)

October 11th, 2006

% apt-cache show mathomatic:

 Mathomatic  implements   most  of  the  rules  of   algebra  for  the
 mathematical operators +, -, *, /, and power (including roots).
 .
 Mathomatic can symbolically:
   - Solve equations;
   - Completely simplify equations;
   - Differentiate;
   - Do sensitivity and finite series analysis;
   - Combine and solve simultaneous algebraic equations;
   - Do complex number and polynomial arithmetic;
   - Generate efficient "C" code.

Thanks for the pointer, schula.

Serversiedelung…

October 10th, 2006

Wer diese Nachricht liest hat schon Zugriff auf meinen neuen Server. Bisher hatte ich nur einen virtuellen Rootserver, der eigentlich sehr fein lief (danke, Robert!), aber ich hatte nur 64MB RAM zur Verfügung. Das war mit Streicheleinheiten zwar machbar, aber für mehrere Domains mit doch nicht ganz so wenigen Zugriffen (michael-prokop.at, grml.org, linuxtage.at,…) und den dahinterstehenden Services (Apache, Apache-SSL, Postfix, MySQL,…) auf Dauer einfach zuwenig. Speziell wenn auf heise eine neue grml-Release angekündigt wird… ;-)

Um die Fragen gleich vorweg zu nehmen: ich bin jetzt seit ein paar Wochen Kunde bei Hetzner. Ich hab über das Rescue-System von Hetzner ein Software-RAID in den DS3000 eingezogen, LVM und vserver sind auch in Betrieb. Bis auf ein paar Domains von Freunden ist die Serverumstellung komplett. Soweit bin ich mit dem Rootserver und dessen Preis-/Leistungsverhältnis zufrieden. An einigen wenigen Tagen gab es in den frühen Abendstunden via SSH eine spürbare Latenz, aktuell läuft es aber ohne Probleme. Die meisten Kritikpunkte von Marcs Rootserver-Test von Hetzner treffen bei mir glücklicherweise nicht zu, auch der Stromausfall im RZ6/7 hat mich dankenswerterweise nicht erwischt (mein Server steht im RZ5).

Ich hoffe der Server läuft auch in Zukunft so fein, wie er es in der mehrwöchigen Testphase getan hat. Wer etwaige Probleme feststellen kann, möge sich bitte bei mir melden, danke.

1. Oktober: Tag des Kaffees

October 1st, 2006

Tag des Kaffees, Bildquelle: wiener-kaffeehaus.at

Heute, am 1. Oktober wird in Österreich der Tag des Kaffees gefeiert (in Deutschland war er am 29. September). In Wien gibt’s ein "Kaffee-Programm", für Graz habe ich auf die Schnelle nichts dergleichen gefunden. Die Daheimschlürfer lesen halt nebenbei mal die Kaffee-Seite in der Wikipedia. ;-)

Ach ja, am 9. Oktober ist der Fair Trade Tag des Landes Steiermark.

Interessante Hostnamen (Update)

September 30th, 2006

In Top 10 Shell-Kommandos wurde es mir erst so recht bewusst, dass einige meiner Systeme identische Hostnamen haben: grml. Ja, das ist suboptimal. Das hat aber einen simplen Hintergrund: das ist jener Hostname, den der Installer der besten Distribution per Default vorschlägt. ;-)

Ergo bin ich jetzt auf der Suche nach witzigen, interessanten, netten Hostnamen. Diese möchte ich in grml2hd (den Installer von grml) als Random-Wert einbauen. Aktuell habe ich 46 Zeilen in der Hostnamen-Datei, das gehört aber geändert. Wer sich also verewigen möchte: postet eure Vorschläge in den Kommentaren, schreibt mir eine Mail (mika [at] grml.org) oder meldet euch im IRC (#grml auf Freenode). Das Ergebnis stelle ich dann auch gerne online.

Update: danke für die rege Anteilnahme! Wir haben jetzt 380 mehr oder weniger nette Hostnamen. Das Resultat ist einem Skript namens random-hostname zu finden, das jetzt auch in grml2hd zum Einsatz kommt.

‘megaraid mailbox: wait for FW to boot’

September 25th, 2006

Just feeding google in case someone has same problems…

Today I once more installed Debian (etch, kernel 2.6.17-2-686) via debootstrap using grml. The system has a ‘MegaRAID Model: LD 0 RAID1 19G Rev: 6.61’ inside and whereas grml booted without any problems, Debian failed with some timeout and FW messages during bootup, like:

megaraid mailbox: wait for FW to boot

Solution: I took a look at the module list of grml (lsmod) and added the relevant stuff to the modules file of Debian’s initramfs-tools:

# cat /etc/initramfs-tools/modules
[...]
firmware_class
mptbase
mptscsih
mptspi
megaraid_mbox
megaraid_mm

After rebuilding the initrd the Debian installation booted without any further problems. (Notice: I’m already in contact with initramfs-tools maintainer maks so we can investigate and fix the issue upstream.)

Useful error message

September 25th, 2006
Unable to change virtual machine power state: The process exited with an error:
End of error message.

Thanks, VMware!

Top 10 Shell-Kommandos

September 24th, 2006

Weil’s grad irgendwie so Mode ist, hier auch mein Listing der ‘Top 10 Shell-Kommandos’:

mika@grml ~ % print -l -- ${(o)history%% *} | uniq -c | sort -nr | head -n 10
    793 mv
    703 grep
    677 cd
    617 vim
    537 ls
    388 cat
    366 scp
    353 rm
    268 wget
    247 dpkg
mika@grml ~ %

Das also war meine Workstation, und das hier ist auf meinem Laptop:

mika@grml ~ % print -l -- ${(o)history%% *} | uniq -c | sort -nr | head -n 10
    363 rm
    362 ls
    275 mplayer
    274 cd
    251 cat
    216 scp
    185 vim
    174 grep
    167 wget
    166 mv
mika@grml ~ %

Anmerkungen: meine Workstation läuft 24/7 und ist damit eigentlich ein Server. Auf meinem Laptop nutze ich suspend:

mika@grml ~ % uptime
 19:33:03 up 8 days,  6:06,  0 users,  load average: 2.36, 2.44, 1.91

(äh ja, da baut gerade ein neues grml-ISO) und die meisten Applikationen laufen halt entweder im Dauerbetrieb oder werden in der Konsole via screen bzw. in X via Tastenkürzel gestartet. Der Output ist deswegen nur bedingt aussagekräftig. ;-)

Persönliches Fazit: ich brauch noch ein paar Shellfunktionen/-aliase mehr, und ich sollte meinen Rechnern endlich mal ordentliche Hostnamen geben. *grml*

inotail – inotify enhanced tail

September 20th, 2006

Tobias Klauser – a grml team member – created inotail. Quoting the README of inotail:

inotail is a replacement for the ‘tail’ program found in the base installation of every Linux/UNIX system. It makes use of the inotify infrastructure in recent versions of the Linux kernel to speed up tailing files in the follow mode (the ‘-f’ option). Standard tail polls the file every second by default while inotail listens to special events sent by the kernel through the inotify API to determine whether a file needs to be reread.

Grab the Debian package either from the webpage of inotail or if you are a grml user just run ‘apt-get update ; apt-get install inotail’. Enjoy and please report feedback to Tobias!

Hammergeil!

September 19th, 2006

Im wahrsten Sinne des Wortes: ‘Last night a grml saved my life‘ – von Jörn. Danke, YMMD – definitiv.

/dev/radio

September 17th, 2006

/dev/radio ist ein Computermagazin vom Chaos Computer Club Ulm, das jeden zweiten Sonntag von 13:00 – 15:00 Uhr auf Radio freeFM ausgestrahlt wird. Nachdem dort immer wieder die beste aller Live-CDs erwähnt wird, muss ich im Gegenzug dafür fast mal hier Werbung machen. ;-) Ein ‘grep -c grml $SOUNDDATEIEN’ auf die letzten Sendungen von /dev/radio wird wohl einen Overflow zu Ohren tragen. 8-)

Dem /dev/radio ähnliche Podcasts sind übrigens auf der Chaosradio Family Webpage zu finden. Ich suche für meinen iriver noch weitere interessante Podcasts, falls jemand was hat: bitte nur her damit! :-)

Ungesund

September 13th, 2006

Den ganzen Tag arbeiten, nichts essen, aber nur von Kaffee ernähen ist wirklich nicht gesund. Da hilft auch ein gutes Abendessen nicht mehr. Sowohl Herz als auch Kopf sind noch immer auf 120. Nicht wiederholenswert. *grml*

RAID5 Online Resizing with Linux

September 9th, 2006

Today I wanted to test the raid5 reshape feature of Linux kernel >=2.6.17. My testing environment was VMware with 3 virtual disks each containing a partition of 200MB which should be resized to 500MB, using grml (featuring kernel 2.6.17-grml) of course. For real-live setup adjust the steps for stuff like switching harddisks of course. ;-)

# Initiate a RAID5 setup for testing purposes:
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hda1 /dev/hdb1 /dev/hdd1


# Create filesystem, mount md0, create a testfile and save md5sum for later check:
mkfs.ext3 /dev/md0
mount /dev/md0 /mnt/test
dd if=/dev/urandom of=/mnt/test/dd bs=512 count=10000
md5sum /mnt/test/dd > md5sum

# Make sure the RAID is synched via checking:
cat /proc/mdstat

# Now remove one partition:
mdadm /dev/md0 --fail /dev/hdd1 --remove /dev/hdd1

# Delete partition, create a new + bigger one and set partition type to fd (Linux raid autodetect):
cfdisk /dev/hdd

# And re-add the partition:
mdadm -a /dev/md0 /dev/hdd1

# Make sure the RAID is synched via checking:
cat /proc/mdstat

# Repeat the steps for all other disks/partitions as well:
mdadm /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1
cfdisk /dev/hdb
mdadm -a /dev/md0 /dev/hdb1
cat /proc/mdstat
mdadm /dev/md0 --fail /dev/hda1 --remove /dev/hda1
cfdisk /dev/hda
mdadm -a /dev/md0 /dev/hda1
cat /proc/mdstat

Now we are ready to resize the RAID5 system online(!) [see ‘man mdadm’ for details]:

root@grml ~ # mdadm --detail /dev/md0 | grep -e 'Array Size' -e 'Device Size'
     Array Size : 390912 (381.81 MiB 400.29 MB)
    Device Size : 195456 (190.91 MiB 200.15 MB)
root@grml ~ # mdadm --grow /dev/md0 -z max
root@grml ~ # mdadm --detail /dev/md0 | grep -e "Array Size" -e 'Device Size'
     Array Size : 976512 (953.79 MiB 999.95 MB)
    Device Size : 488256 (476.89 MiB 499.97 MB)

Last step – resize the filesystem (online again):

root@grml ~ # df -h | grep test
/dev/md0              370M   15M  336M   5% /mnt/test
root@grml ~ # resize2fs /dev/md0
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/md0 is mounted on /mnt/test; on-line resizing required
Performing an on-line resize of /dev/md0 to 976512 (1k) blocks.
The filesystem on /dev/md0 is now 976512 blocks long.

root@grml ~ # df -h | grep test
/dev/md0              924M   16M  861M   2% /mnt/test

Let’s check whether the testfile is still ok:

root@grml ~ # md5sum -c md5sum
/mnt/test/dd: OK

No downtime, no data lost. Excellent. :-) Thanks to Lars Schimmer for the idea and his basic instructions!

Anschlag auf Gentoo

September 7th, 2006

Segmention Fault.

Danke für den Hinweis, amne! YMMD. 8-)

vim-outliner – script for building an outline editor on top of Vim

September 7th, 2006

vim-outliner let’s you use vim as an outline editor:

# apt-get install vim-vimoutliner
% $PAGER /usr/share/doc/vim-vimoutliner/README.Debian
% vim ~/foo.otl
:he vo

If you want to export the otl file into HTML take a look at otl2html.py. Oh, did I already mention that vim-outliner is shipped with grml? ;-)

Bretagne 2006

September 4th, 2006

Von 16.-25. August war ich mit einer Reisegruppe in der Bretagne (Frankreich). Wir haben mit dem Bus insgesamt ~4600km zurückgelegt. Es war ein Kultururlaub ohne Computer und dementsprechend recovery. ;-) Lessons learnt:

  • es gibt fast durchwegs fließenden Verkehr dank weniger Ampeln aber vieler Kreisverkehre
  • trotz der vielen Kreisverkehre fährt fast niemand korrekt in und aus dem Kreisverkehr 8-)
  • in vielen Fußgängerzonen ist man vor Autos nicht sicher *suck*
  • anfallender Abfall wird abends einfach vor den Geschäften in Schachteln zur Abholung platziert
  • sehr familienfreundlich; dank einer guten Familienpolitik haben viele Familien mind. 3 Kinder (und die Frau geht trotzdem arbeiten)
  • die Zahlen, wie viele Leute bretonisch beherrschen ist oft noch aus den 90ern (auch in aktuellen Büchern) und oft verfälscht
  • in Hotelzimmern findet man selten ausreichend freie Stomstecker
  • 1-lagiges Klopapier saugt
  • eine zweite Bettdecke versteckt sich in Hotels in Doppelzimmern immer im Kasten/Schrank *hmpf*
  • Kaffee ist in Hotels selten genießbar
  • Getränke sind teuer (0,2 Cola kostet durchaus mal 3 Euro)
  • es gibt exzellentes Gemüse zu essen, es nicht alles wie in Österreich zerkocht sondern schmeckt!
  • das Frühstücksgebäck schmeckt wirklich super und kommt meinen Frühstücksgewohnheiten entgegen
  • das Bier ist großteils gut, es wird aber fast nirgends korrekt eingeschenkt
  • So viel guter Wein und dann hat man nur 1 Leber!

Natürlich habe ich auch jede Menge Bilder mitgebracht. Eine Auswahl davon habe ich online gestellt.

Buch: Firewalls im Unternehmenseinsatz

September 4th, 2006

Das Buch Firewalls im Unternehmenseinsatz von Jörg Fritsch und Steffen Gundel trägt als Untertitel ‘Grundlagen, Betrieb und Produkte’. Als Zielgruppe werden Administratoren und IT-Verantwortliche angeführt. Das Beispiel-Szenario am Anfang (das sich dann auch durch das Buch zieht) schaut vielversprechend aus, und der Anfang liest sich auch wirklich sehr gut. Leider trüben einige Punkte aber die Freude am Gesamten. Es wird immer wieder von Class A/B/C-Netzen gesprochen (man CIDR), Abbildung 2.13 ist fehlerhaft, DoS (Denial of Service) wird als DOS abgekürzt, die OSI-Layer-Zuordnung von ATM-VPN und MPLS-VPN wird verwechselt (S. 162-165), ab Kapitel 3 wirkt es dann teilweise ein wenig strukturlos und auch simple Copy/Paste-Fehler (S. 246) sind in der 2., überarbeiteten und aktualisierten Auflage (ISBN 3-89864-322-0) zu finden. Errate-Liste zum Buch konnte ich leider keine finden.

Alles in Allem gibt das Buch einen guten und relativ kompakten Überblick über Firewalls im Unternehmenseinsatz. Für reine IT-Verantwortliche wird es wohl stellenweise zu detailliert sein (z.B. bei der Konfiguration einer Cisco PIX), für Administratoren aus der Praxisecke aber umgekehrt teilweise zu oberflächlich (aber das lässt sich in einem Buch auch nur schlecht abdecken, die Dokumentation der einzelnen Produkte ist hier sowieso die passendere Anlaufsstelle). Durch die Vorstellung diverser kommerzieller Produkte (Check Point Firewall-1, Cisco PIX, Nokia IP Security Appliance,…) und der Praxisbeispiele kann das Buch aber als guter Einstiegspunkt in die Thematik dienen.

Buch: Salve Roma. Ein Felidae-Roman

September 4th, 2006

Francis ist ein samtpfötiger Klugscheisser und in den Katzenkrimis von Akif Pirincci spielt er den Komissar auf vier Pfoten. Die Bücher sind aus der Sicht von Francis geschrieben und jedem Katzenbesitzer wird klar sein, wieso die Tonwahl sarkastisch, egoistisch aber auch humorvoll ausfällt. Ich habe hier nur als Beispiel den Band der in Rom spielt (ISBN: 3453350928) ausgewählt, auch andere Katzenkrimis von Akif Pirincci habe ich mittlerweile gelesen. Ich mag den Schreibstil, es liest sich leicht und locker. Empfehlenswert als Lektüre zwischendurch.

iwatch – realtime filesystem monitoring program using inotify

September 4th, 2006

iwatch is a realtime filesystem monitoring program. It’s a simple perl script to monitor changes in specific directories/files and send email notification immediately. It reads the dir/file list from a xml config file or via commandline and needs inotify support in kernel (Linux Kernel >= 2.6.13).

If you are using Debian/grml you can install a Debian package which is available in the grml repository. An ITP is pending as well (see Bug#383191), I hope iwatch is going into Debian soon.