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

Was will man mehr?

November 19th, 2006

Quelle: /usr/share/doc/zsh/changelog.Debian.gz

zsh (4.3.2-24) unstable; urgency=medium

* Completion for toilet.
[…]

Na dann brauch ich nicht einmal mehr aufstehen. Prost!

Xen in <=20 Minuten

November 16th, 2006

Xen ist auf der TODO-Liste mit ‘endlich mal anschauen’ vermerkt? Aber irgendwie noch immer keine Zeit gehabt, endlich mal reinzuschnuppern – aus Angst vom Hundertsten ins Tausenste zu kommen? Setup Xen within 20 minutes on Debian/grml.

Um AK zu zitieren:

d.h. mit 10 minuten grml2hd hat man in einer halben stunde ein lauffaehiges xen-system? ;-)

Viel Spass. :-)

AMD64 + grml

November 11th, 2006

Dank einem echt tollen Freundschaftspreis von Mabu bin ich jetzt Besitzer einer AMD64-Kiste: Gigabyte K8 Triton GA-K8NMF-9 mit AMD64 3200+, 2.5GB (DDR 400) RAM und einer ATI Radeon 300SE.

Warum ich mich über die eigene AMD64-Kiste so freue ist die Tatsache, dass ich jetzt endlich an einer 64-Bit-Version von grml arbeiten kann. Die Kiste selbst läuft schon mit grml-featured Kernel:

root@grml64 ~ # uname -a
Linux grml64 2.6.18-grml64 #1 SMP PREEMPT Sat Nov 11 11:53:52 CET 2006 x86_64 GNU/Linux

Eigentlich wollte ich das Posting schon abschicken, in der Zwischenzeit gibt’s aber sogar schon eine erste Live-CD-Version von grml64:

screenshot of grml64

Ein bisserl Feintuning gehört natürlich noch gemacht (die Paketliste ist z.B. noch nicht ganz vollständig). Mein Plan sieht vor, dass ich mit grml 1.0 dann eine erste öffentliche grml64-Edition anbieten kann.

grml-debootstrap – Debian via Grml installieren

November 7th, 2006

grml-debootstrap screenshot

Zum Thema ‘wie man Debian via grml installiert’ hab ich ja schon mal was geschrieben. Durch die Verwendung von debootstrap kann man ein “plain Debian” wunderbar via grml installieren. Das ist besonders dann interessant, wenn der Debian-Installer (AKA d-i) nicht funktioniert (z.B. zu alter Kernel) oder man einfach keine aktuelle Debian-CD zur Hand hat. Das ist übrigens schon seit einiger Zeit meine bevorzugte Variante, um ein blankes Debian-System zu installieren. Es geht an sich schnell, zuverlässig und tut einfach.

Allerdings finde ich die Arbeitsschritte vom debootstrap-Kommando bis zum laufenden Debian-System langweilig. Deswegen habe ich mich hingesetzt und einen Wrapper rund um debootstrap geschrieben. Rausgekommen ist grml-debootstrap:

root@funkenzutzler ~ # acsh grml-debootstrap
Package: grml-debootstrap
Status: install ok installed
Priority: optional
Section: grml
Installed-Size: 92
Maintainer: Michael Prokop <mika@grml.org>
Architecture: i386
Version: 0.2
Depends: debootstrap | cdebootstrap, grml-etc-core
Conffiles:
 /etc/debootstrap/config c5040b63b60a00132b578f01de65fd18
 /etc/debootstrap/locale.gen e9a41a756366fe6a44fd785fe03e2e96
 /etc/debootstrap/packages 7c354f0d3cd7581ba3b822de90e79c3c
 /etc/debootstrap/chroot-script 4ac6a196664aab55f93511560ca3dcd2
Description: wrapper around debootstrap for installing plain Debian via grml
 This package provides a wrapper suite around deboostrap and
 cdebootstrap for installing a plain Debian system via grml.
 .
 All you have to do is adjust a few variables in configuration
 file /etc/debootstrap/config and invoke grml-debootstrap then.
 A plain and base Debian system will be installed on the given
 device then. Customization of this process is possible as well.
 .
 Supported Debian GNU/Linux releases:
   * Sarge (3.1)
   * Etch  (4.0)
   * Sid   (4.0 unstable)

Wer sich das mal anschauen will: einfach grml booten, ‘apt-get update ; apt-get install grml-debootstrap’ und nach dem Anpassen von /etc/debootstrap/config via Aufruf von ‘grml-debootstrap’ loslegen. Bugreports, Patches und Anregungen sind willkommen. Ich plane, grml-debootstrap mit der kommenden grml-Version 0.9 auszuliefern. Enjoy! :-)

aamath – ASCII art mathematics renderer

November 7th, 2006

aamath is a program that reads mathematical expressions in infix notation and renders them as ASCII art. It may be useful to send mathematics through text-only media, such as e-mail or newsgroups:

mika@grml ~ % aamath
aamath version 0.3
aamath> grml = sqrt(42*23)/11^pi

         _____
       \/42 23
grml = -------
          __
          ||
        11
aamath>

I created a Debian package, it’s available through the grml-repository.

ruby-prof – A fast code profiler for Ruby

October 26th, 2006

ruby-prof just hit Debian unstable:

% apt-cache show ruby-prof | sed -ne "/^Description/,/^$/p"
Description: A fast code profiler for Ruby
 ruby-prof is runs a ruby program and keeps track of the amount of time spent
 in each method. At the end of execution it displays collected information.
 Its features include:
   * Speed - it is a C extension and therefore many times faster than
     the standard Ruby profiler.
   * Flat Profiles - similar to the reports generated by the standard
     Ruby profiler.
   * Graph profiles - similar to GProf, these show how long a method
     runs, which methods call it and which methods it calls.
   * Threads - supports profiling multiple threads simultaneously.
   * Recursive calls - supports profiling recursive method calls.
   * Reports - can generate both text and cross-referenced html reports.
   * Output - can output to standard out or to a file.

Demo:

% ruby-prof /usr/share/doc/ruby1.8-examples/examples/fib.rb
6765
Thread ID: -605742108
 %self  cumulative  total     self   children  calls self/call total/call  name
 69.70     0.23      0.33     0.23     0.10    21891     0.00     0.00     Object#fib
  0.00     0.23      0.00     0.00     0.00        1     0.00     0.00     Module#method_added
  0.00     0.23      0.00     0.00     0.00        1     0.00     0.00     Kernel#print
  0.00     0.23      0.33     0.00     0.33        1     0.00     0.33     Kernel#load
  0.00     0.23      0.00     0.00     0.00        2     0.00     0.00     IO#write
  0.00     0.23      0.00     0.00     0.00        1     0.00     0.00     Fixnum#to_s
 18.18     0.29      0.06     0.06     0.00    21891     0.00     0.00     Fixnum#<
  9.09     0.32      0.03     0.03     0.00    21890     0.00     0.00     Fixnum#-
  3.03     0.33      0.01     0.01     0.00    10945     0.00     0.00     Fixnum#+
  0.00     0.33      0.33     0.00     0.33        1     0.00     0.33     #toplevel

xserver-xorg-input-vmmouse – VMMouse input driver to use with VMWare

October 26th, 2006
% apt-cache show xserver-xorg-input-vmmouse | sed -ne "/^Description/,/^$/p"
Description: X.Org X server -- VMMouse input driver to use with VMWare
 This package provides the driver for the X11 vmmouse input device.
 .
 The VMMouse driver enables support for the special VMMouse protocol
 that is provided by VMware virtual machines to give absolute pointer
 positioning.
 .
 The vmmouse driver is capable of falling back to the standard "mouse"
 driver if a VMware virtual machine is not detected. This allows for
 dual-booting of an operating system from a virtual machine to real hardware
 without having to edit xorg.conf every time.
[...]

This driver provides very comfortable mouse-handling inside VMware without having to install the vmware-tools at all. Just use ‘Driver "vmmouse"’ in the mouse-section of xorg.conf to activate it.

Notice: this feature will work OOTB on grml 0.9 if you are using grml inside VMware.

Ich war’s nicht!

October 25th, 2006
09:03 < mikap > hat inode komplettausfall bei ihren kunden?
09:06 -!- Quit --| grulli_ [n=grulli@unaffiliated/grulli] [Read error: 110 (Connection timed out)]
09:06 -!- Quit --| amne [n=amne@gentoo/developer/amne] [Read error: 110 (Connection timed out)]
09:07 -!- Quit --| gebi [n=gebi@83-65-234-72.dynamic.xdsl-line.inode.at] [Read error: 110 (Connection timed out)]
09:07 -!- Quit --| jimmy__ [n=jimmy@ultimate.g-tec.co.at] [Read error: 113 (No route to host)]

2 Jahre grml

October 22nd, 2006

Linux Magazin Sonderheft

Vor 2 Jahren, am 22. Oktober 2004 erschien die erste öffentliche Version von grml. Mit Codenamen OS04 wurde sie im Rahmen des gleichnamigen Events in Graz unter die Leute gebracht. Heute, 2 Jahre und hunderte Stunden Arbeiten später sind wir bei Version 0.8 angelangt. Ich hab viel über die Gesetze von Open-Source gelernt, noch tiefer unter die Haube von Debian geschaut, viele nette Leute kennengelernt und – gezwungenerweise – meine Debugging-Fähigkeiten verbessert. ;-) Ich hoffe natürlich, dass ich auch noch in den nächsten Jahren Zeit, Lust und Gelegenheit für die Arbeit an grml finde.

Ein großes Dankeschön geht an dieser Stelle an all jene Leute, die dazu beigetragen haben, dass grml das ist, was es heute ist! Danke für all das Feedback, die Spenden, Patches, Debugging, Hilfestellung und Mitarbeit!

Übrigens: Wer die aktuelle grml-Version (0.8) auf einer schönen, gepressten CD haben möchte, kann sich das Linux Magazin Sonderheft: Netz und System beim Zeitschrift-Dealer seiner Wahl besorgen.

So, und jetzt wieder zurück an die Arbeit, auf dass es in Kürze eine Version 0.9 von grml gibt. :-)

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.