Apple hat mal wieder eine App aus dem AppStore geschmissen - so weit nichts neues. Konkret ging es da um eine App, die den Lautstärkeregler in einen Kameraauslöser verwandelte. Auch das ist jetzt nichts spektakuläres. Allerdings ist die Begründung des Rauswurfs dafür umso lustiger:

Anwender könnten verwirrt sein, wenn der Lautstärkeregler des iPhones auf einmal für eine andere Funktion als seine angestammte genutzt wird.

Schande über mich: Ich habe doch gerade tatsächlich einen blinkenden Text (in rot!!!) auf eine Website gepackt. Zwar nicht über das <blink /> Tag, sondern über ein jQuery-Plugin, der schale Beigeschmack bleibt trotzdem....

Da wollte ich gerade mit meinem "neumodischen Empfangsgerät" den Livestream der Tagesschau sehen, und gleich bei zwei Beiträgen über die Fussball-WM muss ich mir dieses Bild ansehen:

Schweinerei bei der Tagesschau

Was zum Teufel haben die dort gezeigt? Verdammt, ich habe dafür BEZAHLT. Da will ich die Tagesschau auch im Internet sehen. Ich glaube ich registriere gleich die Domain kein-cent-fuer-die-gez.de.

Today i will show you how to boot a Gentoo LiveCD via PXE (aka network boot).

  1. Download a minimal install iso
  2. Prepare a TFTP Server 
  3. Mount the ISO file as a loopback device (mount -o loop /path/to/install-x86-minimal-20100216.iso /mnt/cdrom/)
  4. Copy the Kernel (/mnt/cdrom/isolinux/gentoo) to your TFTP-Root
  5. Copy the InitramFS and the squash'ed root fs to a temp dir (/mnt/cdrom/isolinux/gentoo.igz and /mnt/cdrom/image.squashfs)
  6. Unpack the initramfs (gunzip -c gentoo.igz | cpio -idv)
  7. Patch the init script with this patch
  8. Copy the RootFS to mnt/cdrom inside the initramfs (mkdir -p mnt/cdrom; cp image.squashfs mnt/cdrom/)
  9. Repack the initramfs (find . -print | cpio -o -H newc |gzip -9 -c - > /path/to/tftp/root/initramfs.gz)
  10. Edit your pxelinux.cfg/default file:
kernel gentoo
append initrd=initramfs.gz root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/

Bevor man das nächste Mal stundenlang rumprobiert, warum der Root-Alias nicht richtig funktioniert, sollte man in die /etc/mail.rc schauen!

I recently needed a up-to-date stage for a Via Epia 500 system. Since the hardware is very limited, and the processor is an i486 system (basicly a pentium pro without some missing features) i tried the uClibc stage. The update process of the somewhat out-of-date stage3 tarballs was really pain in the ass, so here is a guide to update the tarball to a recent portage/uclibc:

The Goal

  • A current portage (read: EAPI=2 capable)
  • A current udev
  • baselayout-2 and openrc
  • python 2.6
  • gcc 4.3+


Requirements

  • Some free disk space
  • Time, many time
  • Strong nerves
  • A lot of coffee


Weiterlesen...

Ich habe mich ein wenig mit PXE-Boot und initramfs auseinander gesetzt, und ich muss sagen: das macht echt Spass!

Damit ich das nicht wieder vergesse, hier eine Step-by-Step-Anleitung wie man einen Rechner mit einem selbstgebauten Kernel und initramfs per PXE booten lässt:

Kernel-Konfiguration

Diese Konfiguration bezieht sich auf den Kernel der über das Netzwerk geladen und auf dem Client gestartet wird. Der Kernel muss alle Treiber beinhalten, die der Client zum booten und laden des initramfs braucht. Die Treiber müssen dabei einkompiliert werden; Module können zu diesem Zeitpunkt logischerweise noch nicht verwendet werden.

Die einzig wichtige Option in dem Kernel ist:

General Setup
--> Initial RAM filesystem and RAM disk (initramfs/initrd) support (=y)

Weiterlesen...

|g|ridwars - Gibts für Windows, Mac und Linux

Thanks to the incredible pyparsing module it is really easy to parse arbitrary files without the hassle of regular expressions.

The following code parses a standard syslog-ng logfile:

from pyparsing import Word, alphas, Suppress, Combine, nums, string, Optional, Regex

month = Word(string.uppercase, string.lowercase, exact=3)
integer = Word(nums)
serverDateTime = Combine(month + " " + integer + " " + integer + ":" + integer + ":" + integer)
hostname = Word(alphas + nums + "_" + "-")
daemon = Word(alphas + "/" + "-" + "_") + Optional(Suppress("[") + integer + Suppress("]")) + Suppress(":")
message = Regex(".*")
bnf = serverDateTime + hostname + daemon + message

with open('/path/to/logfile') as syslogFile:
	for line in syslogFile:
		fields = bnf.parseString(line)
		print fields