Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Blog

Blog

Smallest UTF32 to UTF8 converter

by Bastian Blank — last modified Sep 13, 2008 10:30 AM
Filed Under:

I found some weird opcodes in the s390 instruction set some time ago. I finally want to use it as I have access to such a machine. The result is rather slim:

.globl cu41
        .type   cu41, @function
cu41:
.L2:
        cu41    %r2,%r4
        ipm     %r1
        srl     %r1,28
        chi     %r1,3
        je      .L2
        ltr     %r1,%r1
        je      .L3
        lcr     %r1,%r1
        lgfr    %r3,%r1
.L3:
        lgr     %r2,%r3
        br      %r14

The cu41 opcode translates UTF32 to UTF8. Each "parameter" is a register pair [1], which describes address and length of the buffer. This opcode will return after a not specified number of translated characters. The rest is boiler plate code for condition code checking. The loop makes sure that anything is converted within the function unless another error occured.

[1]An even pair. gcc is not yet able to allocate such pairs on its own, so it is hardcoded.

PV-GRUB and partitions

by Bastian Blank — last modified Sep 13, 2008 09:35 AM
Filed Under:

Xen 3.3 added a tool called PV-GRUB. It is a GRUB (legacy aka 0.97) built against MiniOS and bootable as a PV kernel. It works fine on a Xen 3.2.1.

It is easy to use, I just set this in my config:

kernel = "/usr/local/lib/xen/boot/pv-grub-x86_64.gz"
extra = "(hd0)/boot/grub/menu.lst"

However it decided to not load my config as defined in the config and simply show me that:

    GNU GRUB  version 0.97  (524288K lower / 0K upper memory)

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]

grubdom>

The reason is quite easy:

grubdom> root (hd0)
 Filesystem type unknown, using whole disk

Some debugging later, the reason is known and fixed.

grubdom> root (hd0)
 Filesystem type is ext2fs, using whole disk

grubdom> kernel /boot/vmlinuz-2.6.27-rc5-amd64

grubdom> initrd /boot/initrd.img-2.6.27-rc5-amd64

grubdom> boot
block error -1 for op 2
close blk: backend at /local/domain/0/backend/vbd/23/51712
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.27-rc5-amd64 [...]
[    0.000000] Command line:
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] ACPI in unprivileged domain disabled
[...]
[    0.022093] Booting paravirtualized kernel on Xen
[    0.022101] Xen version: 3.2-1

Xen dropped support for non-PAE x86_32

by Bastian Blank — last modified Jun 10, 2008 10:50 AM
Filed Under:

For those who did not yet got it: Xen upstream decided to drop non-PAE x86_32 support from Xen.

How to clean filesystem namespaces

by Bastian Blank — last modified Apr 29, 2008 05:35 PM
Filed Under:

Dear lazyweb, use the following code to clean out a filesystem namespace on linux:

mount ("root", "root", NULL, MS_BIND, NULL);
pivot_root ("root", "root/tmp");
chdir ("/");
umount2 ("/tmp", 2);
mount ("none", "/proc", "proc", 0, NULL);

Linux-VServer-replacement without patches?

by Bastian Blank — last modified Apr 29, 2008 01:04 PM
Filed Under:

As Linux-VServer is currently asleep, I thought about what may be possible only with the functionality the upstream Linux kernel provides and a helper module.

Process isolation

Isolation is the important feature VServer provides. Linux supports isolation of processes also in form of user, PID and IPC namespaces. User namespaces allows the same UID to be different. PID namespaces restricts the view of the available processes and allows the process only to address PIDs within it's own namespace.

Migration

VServer allows processes to enter a guest after it have been created, this is not possible without help.

fakeinit

Each PID namespace needs a child reaper (with PID 1).

Network isolation

VServer currently uses a layer 3 isolation model which assigns access to a specific list of IP addresses to a guest. It can be replaced by network namespaces and the accepted veth driver which provides a ethernet device.

Filesystem isolation

VServer uses FS namespaces in a way which allows processes in the FS namespace to access the host filesystem. This needs the chroot barier to make breakouts impossible.

I'm not sure if

mount --rbind $newroot /
chdir /

will also properly prevent this.

Broken DVDs

by Bastian Blank — last modified Feb 22, 2008 10:10 PM
Filed Under:

Today I got another broken DVD. It is the special edition of The Shawshank Redemption. It is rather new and libdvdread just chokes on it. At least the old one does, while the version in sid is able to read them, thanks to a small patch.

The DVD exploits a feature of the standard. The filesystem on it (UDF) provides a size for the info files (VTS_XX_0.IFO) and the corresponding backup file (VTS_XX_0.BUP). This sizes are void, only the offsets within the files matters. The sizes are just too small and libdvdread checked that while reading them.

Thanks to the patch, libdvdread now updates its internal knowledge while parsing the file. With the fix it is possible to play the DVD, at least with mplayer. But I want to play it on my machine without optical drive. I used dvdbackup to read other DVDs but it simply failed this time.

This DVD also have broken backup files. They have different sizes, sometimes they even look empty, and contents than the real ones. With the corrent amount of force (just ignoring them) and some magic (#467075) dvdbackup copies something to disk which is playable with mplayer (libdvdread) and totem (libdvdnav).

Okay, nothing is complete. This DVD contains another title set which seems to be never referenced. It have a completely bogus info file and a 1GB menu VOB.

As I have a copy now, I'm away, watching a really great movie.

Wie man TLS (nicht) verwenden sollte

by Bastian Blank — last modified Jan 08, 2008 09:35 PM
Filed Under:

Heute flatterte hier eine Mail rein mit folgendem Inhalt.

[D]er zugang [...] ist aus Sicherheitsgründen nur noch verschlüsselt über ssl [...] möglich.

Ich bin natürlich betroffen also kurz openssl anwerfen um etwas zu sehen bekommen was mir überhaupt nicht gefällt.

depth=0 /.../CN=informatik.uni-tuebingen.de
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /.../CN=informatik.uni-tuebingen.de
verify error:num=21:unable to verify the first certificate
verify return:1

Er kann also zwei Sachen nicht prüfen,

  • das Zertifikat und
  • den Hostnamen.

Das nächste was openssl auspuckt macht alles klar.

Certificate chain
0 s:/.../CN=informatik.uni-tuebingen.de
  i:/.../CN=informatik.uni-tuebingen.de

Subject und Issuer sind identisch, also ist das Zertifikat wohl Selbstsigniert.

Man sieht einmal mehr das immer noch zuviele nicht verstanden haben, wann TLS/SSL überhaupt Sicherheit bringt. In dieser Form bringt es nur eines, nachträglich kann niemand nachschauen was an Daten geflossen ist, mehr aber auch nicht.

Liebe Admins, wenn ihr schon Sicherheitsgründe anbringt um TLS durchzudrücken, dann macht es bitte richtig. Das Zertifikat muss auf irgendeinen Weg nachprüfbar sein und der Hostname sollte stimmen.

Wer arbeitet macht Fehler

by Bastian Blank — last modified Dec 05, 2007 10:55 PM
Filed Under:

Heute habe ich endlich mal den neuen Switch verbaut. Davor wurde das Fehlen durch Hacks mit Proxy-ARP ausgeglichen, was ich natürlich vergessen habe abzustellen. Also Switch ins Rack und eingestöpselt; dabei kamen dann zwei mit Proxy-ARP verbundene Interfaces ins gleiche Netz.

Ein paar Minuten später die ersten Beschwerden das die Website nicht mehr tun würde. Von mir aus tat es natürlich. Mal versucht am nächstbeste Windows-Rechner einzuloggen; er findet den AD nicht mehr. Mit der lokalen Brechstange habe ich dann rausgefunden das die Rechner alle die schöne IP 0.0.0.0 haben.

Was ist passiert: Das Proxy-ARP hat schön alle ARP-Requests beantwortet und die Windows-Kisten waren der Ansicht das da jemand anderes ihre (fest konfigurierte!) IP hat und haben sie sich selbst weggenommen. Die ganzen Linux-Kisten hat das nicht interresiert, da der Traffic ja am Schluss immer noch am Router ankam, manchmal halt mit einer ungeplanten Zwischenstation.

Besuch in der Solar-Fabrik

by Bastian Blank — last modified Oct 06, 2007 12:02 PM
Filed Under:

Es ist nicht allzuweit bekannt, das auf dem Dach des Hauses meiner Eltern eine kleine Photovoltaikanlage installiert ist. Da der Monteur eine sehr gute Beziehung mit der Solar-Fabrik unterhält wurden wir eingeladen um einmal anzuschauen wie solche Solarmodule gefertigt werden. Dieser Besuch fand gestern in der Zentrale der Solar-Fabrik in Freiburg statt.

Wir wurden von dem ehemaligen Chef und Mitgründer dieser Firma begrüsst, der uns einen Einblick in die Geschichte der Firma und des Gebäudes, in dem wir uns befanden, gab. Schon dieses 8 Jahre alte Gebäude ist etwas besonderes. Es ist eines der ersten kohlendioxidneutralen Gebäuden der Welt, sowohl für die Büros als auch für die Fertigung. Der Bürotrakt ist nach Süden komplett verglast. Im Winter wärmt die tiefstehende Sonne den Innenraum, dicke Beton- und Granitschichten sorgen für eine Speicherung der Wärme, im Sommer spenden Solarpanele Schatten. Das Dach ist begrünt, das Wasser wird für Toiletten, für die Grünanlagen und für den grossen Teich vor dem Gebäude verwendet.

Anschliessend wurden wir durch die dortige Fertigung geführt Es wurde erklärt wie ein Solarmodul entsteht und wie eine gleichbleibend hohe Qualität gewährleistet wird.

Als Abschluss gab es ein Abendessen im firmeneigenen Bistro. An diesem sieht man, das diese Firma nicht ganz normal ist. Das Gewerbegebiet war bei der Errichtung des Hauses noch neu, deshalb wollte niemand das Bistro pachten. Es wurde ein eigener Koch eingestellt, der das Bistro seitdem auf hohem Niveau betreibt. Es ist wohl das einzige Restaurant dieser Klasse, das nur Mittags geöffnet hat.

linux-image-2.6.23-rc4-xen-686

by Bastian Blank — last modified Sep 02, 2007 10:40 AM
Filed Under:

Xen support finally landed in upstream Linux. Okay, it is rather limited yet, but usable.

It supports the following:

  • Unprivileged domain (domU).
  • x86_32 (i386 without PAE) and x86_32p (i386 with PAE).
  • Console.
  • netfront and blkfront.

Changes to the old Xen patch:

  • Block devices does not support takeover of hdXY and sdXY. Use xvcX (xvca, xvcb, ...) as device names.
  • Console is hvc0. You must supply console=hvc0 at the command line. (Use the extra definition in the Xen domain config file.)

Yet missing things:

  • Suspend, resume (also makes migration impossible).
  • Ballooning.
  • x86_64. Xen upstream currently waits for an unified x86 tree.
  • Privileged domain (dom0).
  • netback, blkback, pciback and pcifront.

whole genome shotgun sequencing simulator

by Bastian Blank — last modified Jun 16, 2007 07:05 PM
Filed Under:

Die Bioinformatik baut zum lösen von biologischen Problemen gerne Simulationen. Ein "whole genome shotgun sequencing simulator" ist so einer. Erst wird ein Genom auseiner geschnitten, durch die Mangel gedreht (1-5% Fehlerrate sind normal) und dann wieder zusammen geflickt.

Das Sequenzieren von kompletten Genomen, wie dasjenige des Menschen, ist ein immer noch problematisches Feld. Der Input besteht aus DNA mit seinen 4 Bausteinen und einer Länge von vielen Millionen Basenparen. Es gibt keine Technik die diesen Strang am Stück sequenzieren könnte. Also kloniert man das Genom (Genetiker verstehen unter klonieren das vervielfältigen von DNA-Stücken, nicht von Organismen) und schneidet dieses anschließend in kleine Stücke, die sequenziert werden können.

Aus diesen einzelnen Stücken versucht man jetzt ein komplettes Genom zusammen zu basteln. Bei den kodierenden Bereichen, also denen wo wirklich Informationen stehen, klappt das auch so einigermassen. Bei den nicht-kodierenden Bereichen, z.B. den langen Ketten aus lauter kurzen Wiederholungen, funktioniert das viel weniger gut oder gar nicht.

Der Simulator generiert jetzt diese Bruchstücke um den Schritt des Zusammensetzens testen zu können. Der ganze Schritt ist natürlich herlich randomisiert, so das man nie auch nur ähnliches rausbekommt, auch wenn am Schluss des zusammensetzens jedesmal wieder das selbe stehen soll.

Globale Erwärmung

by Bastian Blank — last modified Jun 03, 2007 05:39 PM
Filed Under:

Endlich wissen wir es. Der Spam ist verantwortlich für die globale Erwärmung.

Gegen den aktuellen Image-Spam kann man leider nicht soviel machen. OCR braucht viel CPU und da die Spammer sich dagegen mit der gleichen Technik wie die elendigen CAPTCHA wehren, wird es wohl noch eine weile dauern bis diese lesbar sind.

Bootstrapping Ubuntu feisty

by Bastian Blank — last modified May 15, 2007 03:40 PM
Filed Under:

Hmm. Debian fixed this problems, but Ubuntu manages to get them also:

P: Configuring package volumeid
O: cp:
O: cannot stat `/etc/fstab'
O: : No such file or directory
O:
O: dpkg: error processing volumeid (--configure):
O:  subprocess post-installation script returned error exit status 1

cdebootstrap 0.4.1

by Bastian Blank — last modified May 13, 2007 02:15 PM
Filed Under:

I finaly got some time to do development. I decided to use this for extending cdebootstrap. And it got several new features and cleanups.

Most notable change is the support to check Release files against the pgp-signature. This feature is enabled by default and uses the keyring supplied by debian-archive-keyring.

It now also includes definitions for newer Ubuntu releases and it works in my testcases. The keyring needs to be supplied manualy.

The rest are usual cleanups on the codebase and deprecation of some not longer used features.

Vary caching broken in Squid 2.6

by Bastian Blank — last modified May 01, 2007 02:45 PM
Filed Under:

After another debugging session I have to declare that caching of ressources with Vary headers is not working with squid 2.6. I have to check if this was working with squid 2.5 as Plone provides a predefined setup for this.

Lets see what upstream say about this.

T-Com DSL und IPv6

by Bastian Blank — last modified Apr 15, 2007 01:45 PM
Filed Under:

Inzwischen liefert mir mein Provider natives IPv6. Und natürlich hängt der Anschluss an einer C10k, die solche Pakete unter bestimmten Umständen schrotten indem sie versuchen die Länge aus dem IP-Frame zu lesen.

iSCSI tested faster than ibm virtual SCSI

by Bastian Blank — last modified Apr 11, 2007 08:51 AM
Filed Under:

The linux kernel includes a SCSI target infrastructure since 2.6.20. Most of the code is located in the userspace and supports iSCSI, ibm i/pSeries virtual SCSI and Xen SCSIback.

To work properly it needs a bunch of patches on top of 2.6.21-rc.

After I got it working I did some tests with bonnie. First the target:

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
                 2G           32124  17 18063   6           45815   4 324.6   0

Now with the vSCSI initiator:

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
                 2G           18513   9 16208   5           34003   3 221.4   0

And the iSCSI initiator:

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
                 2G           31631  14 12809   4           39241   5 306.3   1

As this tests was done on one OpenPower machine, all transfers uses DMA between the two systems.

The vscsi case is currently limited to 128KiB per request, maybe this is a problem.

pvmove still blocks sometimes

by Bastian Blank — last modified Apr 10, 2007 10:17 AM
Filed Under:

I thought the problems with pvmove was fixed with devmapper 1.02.12, but I just run into this problem again. Not sure if there was different fixes in later versions.

pvmove suspends the devices and fails to reload tables under some conditions. This time it just blocked while the devices for /usr und /var was suspended. This means the system is dead.

Update: It seems to be related to the number of LVs to move. Only one works all the time.

Not so funny kernel build failures

by Bastian Blank — last modified Apr 10, 2007 08:30 AM
Filed Under:

It happened again. The linux-2.6 2.6.20-1 release failed for arches which we don't build snapshots for. This means that none of them was ever built in the time after I commited the whole stuff.

As this happens over and over again I consider this a real problem now. So the following arches needs new debian-kernel maintainers: alpha, hppa, and mips.

System zu langsam

by Bastian Blank — last modified Apr 10, 2007 08:20 AM
Filed Under:

Nein, man sollte sich nicht wundern, dass das System sich so träge anfühlt, wenn /proc/mdstat folgendes zeigt:

md0 : active raid5 sdb[0] sdd[2] sdc[1]
      67108608 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
      [==========>..........]  resync = 53.2% (17870972/33554304) finish=7.3min speed=35319K/sec