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

19. Mai: Grazer LinuxTage 2007

May 16th, 2007

GLT07-Logo

Ich hätte es vor lauter Stress ja fast vergessen, in meinem Blog noch mal anzukündigen. Also: am Samstag, dem 19. Mai gehen die Grazer LinuxTage (GLT07) auf der FH Joanneum über die Bühne. Über 30 Vorträge und Workshops finden sich im Programm, es gibt eine Keysigning-Party und das Linux Professional Institute (LPI) bietet auf den GLT07 Prüfungen an. Und wir haben eine Vielzahl an Community-Ständen vor Ort – unter anderem Debian, Gentoo, Free Software Foundation Europe, Realraum Graz, Funkfeuer Graz, ReactOS und natürlich grml! :)

Ohne Worte

May 16th, 2007

Screenshot von Windows-Update

grml release candidates

May 8th, 2007

grml 1.0 screenshot

As formorer mentioned already we have new release candidates of grml: grml 1.0-rc1 with codename Meilenschwein is available as well as grml-small 0.4-rc1 with codename Springinkerl. We are proud to be able to present a 64bit version of grml as well: grml 64 0.1-rc1 with codename LiveShell which is based on the amd64 port of Debian.

New features? Tons of new features. So what are you waiting for? Ah, that the mirrors are getting in sync, right. So grab the ISOs in the meanwhile from the master or the slave or even better use bittorrent (torrents for: grml, grml64 and grml-small) instead. We are waiting for your bug reports. 8-)

Mercurial: ‘remote: abort: No space left on device’

May 1st, 2007

I got ‘remote: abort: No space left on device:’ when running ‘hg push’ via ssh during a repository migration (from subversion to mercurial). Huh?! The partition with all the repositories on it has enough free space, so what? Ah, wait a second. When pushing data via ssh, mercurial does a ‘ssh $HOST hg -R /path/to/repos serve –stdio’ and the data is put into /tmp/hg-unbundle-… in the meanwhile. As I’m running the mercurial repository inside a vserver system /tmp was limited to 16M tmpfs. So the temporary fix was pretty easy:

vnamespace -e repos mount -t tmpfs -o remount,size=32m,mode=1777 \\
              none /var/lib/vservers/repos/tmp

I just talked to mercurial devs, quoting them:

00:24 < mpm> It finds the tmp dir based on the standard environment variables.
00:24 < mpm> We'll probably move it to .hg/
[...]
00:33 < brendan> defaults to /tmp if unset

Excellent. :-)

Sprachkultur im ORF

April 25th, 2007

Ein Tag ORF und schon sind die Gender gemainstreamed.

Heute in ‘WIE BITTE?‘ auf ORF1 gehört. Äh, wie bitte?! Hab ich mich verhört? Passt aber zum ORF. Oder wie es Michael Niavarani bei der Romy 2007 mit einem Seitenhieb auf die neue ORF-Serie namens ‘Mitten im Achten’ treffend formulierte:

Mitten im Achten ist der teuerste Bildschirmschoner der Welt.

Booting from USB pen: troubleshooting and pitfalls

April 22nd, 2007

As grml supports booting from usb devices (harddisk installation via grml2hd as well as booting from usb pens via grml2usb) and I helped many people at debugging booting problems I think I stumbled upon every existing pitfall. 8-) There are several situations where booting might fail. So here we go with a summary of the most common pitfalls and possible solutions:

  1. The Bootsplash is displayed, the kernel loads but you very soon get a:

  2. ran out of input data
    System halted
    

    Reason: everything OK, except for the filesystem used on your usb device. So instead of fat16 you use for example fat32. Fix: use the appropriate filesystem (fat16 for usb pens usually).

  3. When trying to boot from USB you get something like:

  4. Invalid operating system
    

    Possible reason: the partition layout is not ok. Very probably there’s no primary partition or none has the flag ‘bootable’ set. (Read on for further details.)

  5. When trying to boot from USB you get something like:

  6. No operating system found.
    

    Possible reason: you forgot to set the boot-flag on the partition. Or you did not install an operating system at all. ;-)

  7. When trying to set up the partition(s) on the USB device cfdisk reports something like:

  8. FATAL ERROR: Bad primary partition 0: Partition ends in the final partial cylinder
    

    Reason: the partition layout is not ok. Either use fdisk (requires detailed knowledge about partition setup!) or better: use a fronted of libparted, like gparted. gparted does an excellent job at setting up an appropriate partition layout for booting from USB (read on for details about the correct setup). As long as cfdisk has problems with the layout – it will exit on errors – your usb pen very probably does not have a valid partition setup for booting. Please notice that fdisk very often uses defaults which are not OK, whereas gparted uses the appropriate heads, sectors/track and cylinders settings. So if you really want to use fdisk for setting up the appropriate partition layout you might have to enter the ‘extra functionality (experts only)’ menu of fdisk.

  9. The system never displays the bootsplash of the usb device at all? Checklist:

    • does your system support booting from USB at all? Check settings in BIOS.
    • do you use the correct USB mode in BIOS? Check BIOS again, usually you want to use USB-HDD mode. Not possible? See USB-ZIP mode.
    • is "booting from USB" in the appropriate order of the booting sequence? Check the "boot"-section in your BIOS.
    • is the bootable flag set on the boot-partition? Check for example with cfdisk.
    • is the partition used for booting the first partition and a primary one on your device? Check with cfdisk again.
    • is the partition layout ok? The first partition (the one used for booting) has to start at cylinder 1/sector 63, otherwise booting will fail on most (all?) x86 systems. Check with ‘cfdisk -P s /dev/..’ or ‘fdisk -l -u /dev/…’. Do *not* trust the output of ‘fdisk -l /dev/…’. Really.
  10. syslinux does not work on your system (b0rken BIOS for example)? Possible solution: use grub instead.

  11. Kernel boots but fails to find the root filesystem with something like:

  12. kernel-panic: unable to mount root-fs...
    

    Yes? Then the root= argument in your kernel commandline (specified in the bootloader, usually lilo, grub or isolinux/syslinux) is pointing to the wrong device. Solution: adjust the root=-option in your bootmanager’s configuration. Tip: use root=UUID instead of root=/dev/[hs]d…

  13. All of the above tips don’t work? Maybe your USB pen is even larger than 1GB?

  14. Possible reason: Some BIOSes offer different modes for USB booting. The proper mode to boot a USB stick is USB-HDD. If that doesn’t work or is not supported by your system, you need to format your USB-Stick as USB-ZIP. To do this, the syslinux source distribution contains an utility called mkdiskimage, which you can use to re-format your USB stick in USB-ZIP format. For more information refer to the USB-webpage in the grml-wiki and Bootable USB Key in the knoppix-wiki.

I mentioned the correct partition layout several times. Reminder: a first, primary partition with fat16 (as filesystem as well as partition’s system id!) with bootable-flag set. The partition should start behind MBR at 1st cylinder and 63rd sector (see www.ata-atapi.com/hiwmbr.htm and thestarman.pcministry.com/asm/mbr/index.html for more details about MBR). So how does a correct partition look like? Output in several formats as reference:

# fdisk -l -u /dev/sda

Disk /dev/sda: 1039 MB, 1039663104 bytes
255 heads, 63 sectors/track, 126 cylinders, total 2030592 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63     2024189     1012063+   6  FAT16

# fdisk -l /dev/sda

Disk /dev/sda: 1039 MB, 1039663104 bytes
255 heads, 63 sectors/track, 126 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         126     1012063+   6  FAT16

# sfdisk -d /dev/sda
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=       63, size=  2024127, Id= 6, bootable
/dev/sda2 : start=        0, size=        0, Id= 0
/dev/sda3 : start=        0, size=        0, Id= 0
/dev/sda4 : start=        0, size=        0, Id= 0

Tip: if you have a working stick, store your partition layout using ‘sfdisk -d /dev/sda > sfdisk.sda’ for later restore (via ‘sfdisk /dev/sda < sfdisk.sda’). This is also very useful for cloning a working setup to other devices (though you might have to adjust cylinder/units later on). And of course you can use it as backup if you ran [sc]fdisk-commands on the wrong device. ;-)

Mikroprozessor-Programmierung / Arduino

April 13th, 2007

Ich bin gerade vom Workshop zur Mikroprozessor-Programmierung zurückgekommen. Peter Brugger hat uns anhand eines Atmel ATmega8 die Programmierung eines Mikroprozessors praxisorientiert näher gebracht. Sehr schön erklärt, viel gelernt. Danke!

Kennengelernt habe ich heute auch Arduino: "an open-source physical computing platform based on a simple i/o board and a development environment that implements the Processing/Wiring language." Jetzt organisiere ich gerade eine Sammelbestellung für so ein Arduino NG Plus USB Board und habe auch simulavr und gcc-avr entdeckt. Vorlesungsfreie Zeit? Urlaub? *pffff* ;-)

Workshop im Spektral: Mikroprozessor-Programmierung

April 8th, 2007
  • Was: Mikroprozessor-Programmierung, eine Einführung
  • Wo: im Spektral (Lendkai 45 in Graz)
  • Wann: Donnerstag, 12. April 2007, 19:00 Uhr
  • Mit Peter Brugger (Elektrotechnik).
    Mit Mikroprozessoren kann man Elektronik steuern, oder Input in Installationen und Objekte einfließen lassen – und das mit Bauteilen um wenige Euro. Alle benötigten Teile werden vorgestellt (Breadboard, Programmieradapter, Prozessor und Entwicklungsumgebung) und eine einfache Anwendung demonstriert ( z.B. blinkende L.E.D.s ). Daneben gibt es Schaltpläne und Tips zu Basiskomponenten und weiterführenden Anwendungen wie z.B. Schnittstellen zum Computer, um Live-Daten in Anwendungen zu bekommen. Auch für EinsteigerInnen in Elektrotechnik und Programierung.

crm114: Controllable Regex Mutilator and Spam Filter

April 5th, 2007

Do you already know crm114? Taking quotes of the crm114 book:

What is this? Some kind of grep bitten by a radioactive spider?
— apocryphal

­CRM114 isn’t ugly like PERL. It’s a whole different kind of ugly.
— John Bowker

Want to get a calculator using crm114? No problem:

% cat > calc << EOF
{
  eval (:_dw:) /:@: :*:_dw: :/
  output /:*:_dw: \\n/
}
EOF
% crm calc
(42*23)+(11/3.14) # press return and EOF (ctrl-d) at this stage and get the result:
 969.50318

There’s a crm114 book (PDF, 283 pages!) available for free download. Just apt-get crm114, the installed-size is less than 1MB. Thanks Maddi for pointing me to it again, it was on my todolist for ages. ;)

Delegateninstanz?!

April 5th, 2007

Erstellen Sie eine System.Threading.WaitCallback-Delegateninstanz, die die Methode referenziert. Rufen Sie die statische Methode QueueUserWorkItem der System.Threading.ThreadPool-Klasse auf, und übergeben Sie die Delegateninstanz als Parameter. Die Laufzeit reiht dann die Delegateninstanz ein und führt sie aus, sobald ein Thread-Pool-Thread verfügbar wird.

Quelle: "C# Tipps, Teil 1 – Threads, Prozesse und Synchronisierung" @ MSDN

Setzt Microsoft BWL-er an die Übersetzungsmaschine?

AltGr does not work within VMware?

April 1st, 2007

I just had the annoying problem, that the AltGr key did not work in VMware Server on my 64bit system via SSH whereas it worked fine within the 32bit local system. xev, ‘cat /dev/input/event0’ & CO verified that not a single keystroke reached my client system within VMware. Solution? Add the following line to /etc/vmware/config:

xkeymap.usekeycodeMap = true

Kampf mit Windows…

March 28th, 2007

Es ist also soweit: eine Windows-Benutzerin aus meinem Arbeitsumfeld ist bei mir angetanzt und wollte Vista durch XP ersetzt haben. Grund? Diverse Spiele – die ihr Freund zocken will – funktionieren nicht mehr. Und “es schaut alles so anders aus und nichts findet man mehr”. Ah, das ist also dieses WOW. OK, sollte ja nebenbei eigentlich ohne großen Aufwand machbar sein. Denkste. Einerseits ist das System immer wieder vor dem Login-Screen abgestürzt (einfach “unmotiviert” rebootet, ohne irgendwas im Syslog zu hinterlassen). Andererseits war es ums Biegen und Brechen nicht möglich, dem XP-System die verbaute Hardware beizubringen. Beispiel Netzwerk-Karte:

Na, dann probieren wir es halt nicht mit der OnBoard-Variante, sondern einer eigenen PCI-Netzwerk-Karte die ich noch rumliegen habe:

Juhu. Egal mit welcher Variante ich den Treiber installieren wollte, es kam immer nur diese Fehlermeldung und kein bisschen mehr. Lustig finde ich auch die sich wiederholenden Fragen zu ‘Möchten Sie eine Verbindung zu Windows-Online herstellen, wegen Treibersuche und blabla…’ obwohl noch rein gar nix an Netzwerk-Funktionalität im System war. Klar möchte ich…. Naja, irgendwann hab ich dann noch die Sound- & CO-Treiber für WinXP vom Hersteller gefunden. Der Via-Installer ist einer weiterer Hammer:

Nach ~4 Reboots und mehreren Install-/Deinstallationsorgien mit der manuellen Installationsvariante waren zwar die VIA-Treiber drauf, aber weder die Netzwerkkarte(n) noch die Soundkarte waren nutzbar. Aber zum Glück sind die Treiber ja zertifiziert!!!!1elf!

Fazit: auf das System wandert jetzt wohl erst wieder ein Vista drauf, mit dieser netten Recovery-DVD… Mit OpenOffice, weil das 2007-er Office (davon war eine Testversion bei diesem Komplettrechner mit dabei) ist halt auch wieder so anders als das bisher verwendete… Und JFTR, mit der 64Bit-Version von grml lief das System ohne Probleme. Weder mit den Netzwerkkarten noch mit Sound gabs Probleme… Aber Windows ist ja halt sooo einfach zu installieren….

Murphy!

March 23rd, 2007

Nein, es reicht ja nicht, dass einem die Platte stirbt. Man holt Ersatz in Form einer 120GB 2.5"-Festplatte, weil man damit auch genug Platz fürs Entwickeln hätte. Dann aber lässt mich OpenFirmware vom Efika-Board nicht von der Platte booten:

channel 0 unit 0 :   ata | SAMSUNG HM120JC                          | YL100-19
ATA device not present or not responding
[...]
ok devalias
Alias                 Device Path
--------------------------------------------------
ide                   /builtin@F0000000/ata@F0003A00/disk@0,0
hd                    /builtin@F0000000/ata@F0003A00/disk@0,0
eth                   /builtin/ethernet
ok ls hd
ATA device not present or not responding
ok ls hd:0
ATA device not present or not responding
ok

Ja, die “alte” 100GB-Platte bootet nach wie vor einwandfrei. Jetzt hab ich mein System halt als Würgaround via USB-Stick und d-i installiert und boote die Festplatten-Installation mühsam via USB-Stick. Die Festplatten-Installation? Ja, denn die Festplatte wird ja erkannt, nur kann ich davon nicht booten…. So ist das jetzt halt langsam, umständlich und nicht wartungsfreundlich. Murphy, ich hasse dich. Das ist ärgerlich. Einfach. Nur. Ärgerlich.

Sterbende Festplatte….

March 22nd, 2007

Hardware-Probleme hat man genau dann, wenn man sie nicht brauchen kann:

[...]
Mar 21 20:22:48 grmlppc kernel: ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Mar 21 20:22:55 grmlppc kernel: ata1.00: tag 0 cmd 0x20 Emask 0x9 stat 0x51 err 0x40 (media error)
Mar 21 20:23:01 grmlppc kernel: ata1: EH complete
[...]

root@grmlppc ~ # smartctl -d ata -A /dev/sda
smartctl version 5.36 [powerpc-unknown-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   200   198   051    Pre-fail  Always       -       6
  3 Spin_Up_Time            0x0003   193   190   021    Pre-fail  Always       -       1333
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       22
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   100   253   051    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       14
 10 Spin_Retry_Count        0x0013   100   253   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   100   253   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       22
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       21
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       397
194 Temperature_Celsius     0x0022   108   103   000    Old_age   Always       -       39
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       2
198 Offline_Uncorrectable   0x0010   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0009   100   253   051    Pre-fail  Offline      -       0

Dabei wollte ich gerade beim grml-ppc-Port weitermachen. :-( *seufz*

Grandiose Software

March 20th, 2007

Der Installer von der Visual Studio 2005 Express Edition ist wirklich rocking (un)stable (reproduzierbar):

NOSSO von Solaris (‘highly compressed with the NOSSO(R) file optimization program‘) ist wirklich superschnell:

… nach knapp 2 Stunden bin ich ja immerhin schon bei 99,4%… das nächste Mal wähle ich wohl doch wieder die “all platforms”-Variante….

Maintain /etc with mercurial on Debian

March 14th, 2007

Update on 2007-09-12: updated shell script and added Pre-Invoke to dpkg configuration.

Based on Bart Trojanowski’s blog article “etc snapshots with git” I removed one further item from my todo list: maintain /etc with mercurial on my Debian systems.

First step is creating the repository and securing access to the repository. As mercurial stores all its files within one single directory named .hg you won’t have any further directories within /etc besides /etc/.hg, rocking – right? ;-)

cd /etc
hg init
chmod og-rwx .hg

Ignore a few files:

cat > .hgignore << EOF
syntax: regexp
(^)*.dpkg-new
(^)*.dpkg-old
(^)blkid.tab(|.old)
(^)mtab
# add other files if necessary, depends on your setup...
EOF

Now commit the current state:

hg add
hg ci -m "initial checkin"

We want to commit the changes automatically when using apt-get/aptitude so let’s write and include a wrapper for it – /etc/apt/hg-snapshot-script:

#!/bin/sh
set -e

caller=$(ps axww | mawk '/aptitude|apt-get/ {for (i=5; i<=NF ; i++) printf ("%s ",$i); printf ("\\n") }' | head -1)

hg addremove 1>/dev/null
STATUS="$(hg st)"

if [ -z "$STATUS" ] ; then
   echo "hg-snapshot-script: nothing to be done"
else
   case "$1" in
        pre)
           echo "hg-snapshot-script: found changed files:"
           hg st
           hg ci -m "snapshot from $LOGNAME before: $caller"
          ;;
        post)
           echo "hg-snapshot-script: found changed files:"
           hg st
           hg ci -m "snapshot from $LOGNAME after: $caller"
          ;;
        *)
           echo "hg-snapshot-script: found changed files:"
           hg st
           hg ci -m "snapshot from $LOGNAME on $(date '+%Y-%m-%d - %H:%M:%S')"
          ;;
   esac
fi

Activate it:

chmod +x /etc/apt/hg-snapshot-script

cat >> /etc/apt/apt.conf << EOF
DPkg {
  Pre-Invoke  {"cd /etc ; ./apt/hg-snapshot-script pre";};
  Post-Invoke {"cd /etc ; ./apt/hg-snapshot-script post";};
}
EOF

Finally track the added files as well:

hg add
hg commit -m "apt will track /etc automagically using hg"

That’s it. :-)

Oh BTW: users of subversion might want to point their browser to /etc under svk (by Enrico Zini).

Chemnitzer Linuxdays 2007: done

March 10th, 2007

grml booth at chemnitzer linuxdays 2007

Ok, a little bit delayed due to busy days… – anyway. Last weekend Chemnitzer Linuxdays 2007 took place and as already written in the grml-develblog I’ve been there. As every year Chemnitzer Linuxdays were great. I really enjoyed meeting people, hacking and giving support at the grml-booth, though it was quite stressful for me overall. On saturday I visited only one talk, it was Meike’s one – a very nice talk. :-)

On sunday I had my own talk, about “Erfolgreiche OpenSource Projekt-Maintenance” (successfull opensource project maintenance). My slides (PDF) are available online (german only, sorry).

Call for Lectures – Grazer LinuxTage 2007

March 8th, 2007

Am 19. Mai 2007 ist es soweit: die Grazer LinuxTage 2007 finden statt.

Call for Lectures ist freigeschalten. Wer also einen Vortrag oder Workshop halten möchte, möge diesen bitte anmelden.

Buggy Days…

March 8th, 2007

Hmpf, I’m finding bugs in those days… Just to give you an idea what’s going on:

  • XFS on the arm-architecture might be broken when using a filesystem created on x86 (still investigating on that)
  • kvm of kernel 2.6.20 does not work together with kvm utils version 14 (known upstream, anyway – freeeeeeezing one of my boxes)
  • #413911, #413913, #413914, #413916 – binary packages shipping VCS files
  • #413698 – aptitude: package does not ship any language files
  • #413920 – xine-check is broken
  • #401916 – initramfs (still requires my attention)

Murphy, you suck.

Vortrag an der TU Graz: “Die Fehler von Microsoft”

February 28th, 2007
Vortragender: Andreas Zeller
Saarland University
http://www.st.cs.uni-sb.de/zeller/

Vortragstitel: "Die Fehler von Microsoft"

Zeit: Donnerstag, 1. März 2007, 16 c.t.

Ort: Hörsaal i11, Inffeldgasse 16b

Zusammenfassung:
Was sorgt dafür, dass Programme fehlschlagen?
Wir haben die Fehlerdatenbanken von Microsoft
durchforstet -- und untersucht, welche
Programmeigenschaften mit Fehlern korrelieren.
Hieraus lassen sich Modelle bilden, die die
fehlerträchtigen Module eines Projektes früh
und sicher identifizieren. Fallstudien an
bekannten Microsoft-Produkten sowie der
Open-Source-Projekte Eclipse und Mozilla
demonstrieren die Vorhersagekraft des Ansatzes.

CV:
Andreas Zeller ist Professor für Softwaretechnik
an der Universität des Saarlandes;  er erforscht
dort Verfahren zur automatischen Fehlerdiagnose
sowie zur Analyse von Software-Archiven.  Sein Buch
"Why Programs Fail" wurde 2006 mit einem Software
Development Productivity Award ausgezeichnet.

Quelle: Newsgroups der TU Graz .