Category Archives: Linux - Page 5

Using git to install dokuwiki

Since some months now I use Subversion to update my WordPress installation. A simple “svn switch” to the new tag does the trick, and your WordPress installation is up to date! Since my Dokuwiki installation are getting older and older, I decided doing that with Dokuwiki as well. The source code of Dokuwiki is hosted in a Git repository over at Github. I found nowhere a short instruction how to do that with git, so I thought I write one.

First of all, you need git to install git (always strange to install such software on a server, but who cares :-))

sudo aptitude install git-core

When you already have a Dokuwiki installation, you have to convert it to a git repository. Because git clone doesn’t allow using a non-empty directory, we have to work around this limitation. Warning: Using this method you will loose any changes made to Dokuwiki specific files. Configuration and data should be in their own files so you won’t loose such data.

git clone -b stable -n http://github.com/splitbrain/dokuwiki.git
mv dokuwiki/.git/ .
rmdir dokuwiki
git checkout -f

When you are going to install a new installation, use this command

git clone -b stable http://github.com/splitbrain/dokuwiki.git wiki

For security reasons its recommend to disallow the .git directory for HTTP requests by adding these lines to the .git/.htaccess file. You should also remove install.php.

rm install.php
vi .git/.htaccess
order allow,deny
deny from all

To update your installation, just use the command git pull, which will pull the latest commits from the original Github repository.

git pull

Glibc 2.11 breaks gcc’s backward compatibility

Today I compiled a ARM Toolchain on my Ubuntu Lucid Lynx 10.04 PC. As I passed that to my friend he got this message:

arm-elf-gcc: /lib/libc.so.6: version `GLIBC_2.11' not found (required by arm-elf-gcc)

Oh yeah, binary compatibility is sometimes hard in open source world. On the other side, why binary compatibility, we have the source! 😀 But of course, its easier to use binaries then compile the same on every machine…
I found out that the function mkstemps is used from the new glibc version:

$ readelf -a arm-elf-gcc | grep GLIBC_2.11
    11: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mkstemps@GLIBC_2.11 (4)
   427: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mkstemps@@GLIBC_2.11
  008:   3 (GLIBC_2.3.4)   0 (*local*)       2 (GLIBC_2.2.5)   4 (GLIBC_2.11)
  0x0030:   Name: GLIBC_2.11  Flags: none  Version: 4

The functions, namly mkstemps and mkstemps64, were added with glibc 2.11. Grepping showed that the function mkstemps is used inside the library “libiberty”. The configure script checks if the function is available on the host, if yes, it will use the hosts function, if not, it will build its own. As soon as the compiler descide to use the hosts mkstemps function, the resulting binary need glibc 2.11, which I would like to avoid.
The solution is pretty simple: Add the object file “mkstemps.o” to the variable REQUIRED_OFILES in Makefile.in. This forces the Makefile to compile its own mkstemps function, which will be prefered when gcc is linked.

$ vi libiberty/Makefile.in
REQUIRED_OFILES = ./mkstemps.o                                          \
        ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./sha1.o        \
...

My gcc’s glibc requirement is now 2.4, which is much older then gcc 2.11! As a result my gcc runs even on very old linux systems 🙂

Convert VMware growable, splitted and snapshoted disks

In the last weeks I started to migrate my virtual machines to KVM. Until now, I used on two Servers VMware Server 2.0 on Ubuntu, which caused many problems with Disk I/O’s and performance problems. Either way, I prefer Open Source software whenever possible. KVM and libvirt, which I use to manage KVM, is in a quite mature state nowadays.

To convert the VMware images I used this How-To. This worked quite well for most of my Virtual Machines. But several had snapshots or were split into 2GB files. This cant be handled by qemu-img. I converted the files to single, flat disk file first using vmware-vdiskmanager. In the end, I wanted to have pre-allocated (single file) anyway, because it provides best performance:

$ vmware-vdiskmanager -r Ubuntu.vmdk -t 0 Ubuntu-copy.vmdk

Read more »

ISO-Dateien Booten

Vor kurzem habe ich bei meinem Laptop eine Intel SSD Harddisk eingebaut, und deswegen mein CD-Rom ausgebaut. Dies hab ich ohnehin selten bebraucht, aber es gibt Situationen, in denen es wirklich praktisch ist, zum Beispiel um CD’s zu booten. Ubuntu hat dafür ein Tool, um Ubuntu-CD’s auf USB-Sticks zu schreiben. Dies brauche ich auch öfters und funktioniert ganz ordentlich. Jedoch gibts manchmal auch andere ISO-Dateien die ich booten möchte. Dafür hab ich nun eine Lösung gefunden: Es wird ein Linux mit einem angepassten GRUB-Bootloader auf einen Memorystick geschrieben. Dieser Bootloader kann dan die ISO-Datei direkt vom USB-Stick booten. Wirklich sehr praktisch, allerdings funktioniert die Anleitung nur unter Windows…

VirtualBox 3.1 Performancevergleich

Gestern wurde VirtualBox 3.1 freigegeben. Im ChangeLog steht, dass die Performance erheblich verbessert wurde. Dies wollte ich einmal auf den Prüfstand stellen, und habe ein paar Messungen auf meinem Notebook gemacht (HP EliteBook 8530w, Core 2 Duo T9400, 4 GB Ram mit Ubuntu Karmic 64-Bit). Dazu habe ich die Boot-Zeit zweier virtuellen Maschinen gemessen. Dafür habe ich die Maschine zuerst einmal gestartet, so dass alle Daten im Ram vorhanden sein sollten. Dannach habe ich zwei Durchläufe gestoppt, jeweils vom Startklick bis zum Login-Bildschirm. Die erste Maschine im Test war Windows 7 Ultimate 64-Bit von meiner SSD (Intel SSD 80GB X18-M G2), die zweite Maschine Windows XP Professional 32-Bit von meiner Magnetplatte (Seagate Momentus 320GB 7200upm). Beiden Maschinen sind mit S-ATA und Hardwarevirtualisierung konfiguriert. Die Resultate finden Sie nach dem Sprung. Read more »

QEMU’s qcow2 Format zu VirtualBox vdi Format konvertieren

Heute habe ich versucht das QEMU spezifische qcow2-Format zu einem VirtualBox vdi-Format zu konvertieren. Die einfachste Variante die ich gefunden habe wurde in einem Blog eintrag von “VirtaulGuru” beschrieben. Die beschriebene Variante funktioniert mit dem QEMU-Utility qemu-img. Standardmässig kann qemu-img jedoch nicht mit dem vdi-Format umgehen, dafür wurde jedoch im Sommer dieses Jahres ein Patch auf der QEMU-Developer-Mailingliste veröffentlicht. Leider funktioniert dieser Patch nicht mit der letzten Releaseversion von QEMU (0.9.1). Auch meine 64-Bit installation bereitete einige Fehler. Ich habe deshalb den Patch ein wenig angepasst. Ihr könnt in hier herunterladen. Die Konvertierung ansich ist mit der gepatchten qemu-img Version ganz einfach:

wget http://bellard.org/qemu/qemu-0.9.1.tar.gz
wget http://blog.falstaff.ch/wp-content/uploads/2008/12/qemu-vdi-new.diff
tar xzvf qemu-0.9.1.tar.gz
cd qemu-0.9.1
patch -p0 <qemu-vdi-new.diff
./configure
make qemu-img
strip qemu-img
cp qemu-img /usr/local/bin/qemu-img-vdi
/usr/local/bin/qemu-img-vdi convert "WindowsXP.qcow2" -O VDI "WindowsXP.vdi"

Logitech diNovo Mini and Ubuntu

Seit einigen Tagen bin ich nun im besitzt dieser edlen Logitech Tastatur, die Logitech diNovo Mini! Ich muss sagen, sie ist noch kleiner als ich erwartet hätte! Aber das handling ist wirklich hervorragend. Man kann natürlich nicht soviel erwarten wie von einer normalen Maus und einer vollständigen Tastatur, aber für einen Multimedia-Computer ist sie wirklich optimal.

Um sie komplett unter Linux zum laufen zu bringen habe ich etwa 30 Minuten benötigt. Diese Webseite sowie diesen Forumeintrag haben mich vorallem weitergebracht. Bei der Tastatur ist bereits ein USB-Bluetooth-Dongle enthalten. Dieser funktioniert allerdings nicht als Bluetoothdevice unter Linux, sonder als USB-HID-device. Ob es eine Möglichkeit gibt die Bluetooth Funktion zu nutzen habe ich nicht herausgefunden. Read more »

Ubuntu Splashscreen reparieren (usplash)

Seit ich eine neue Harddisk eingebaut habe funktioniert mein Splashscreen unter Ubuntu nicht mehr vollständig. Dmesg zeigte folgenden Fehler:

May  5 21:05:31 idlewild kernel: [   17.665751] usplash[1256]: segfault at b73d9780
eip b7f31ed2 esp bf8a8790 error 6

Ein Forenthread auf ubuntuforums.org beinhalte einige gute Tipps um den Splashscreen wieder zu reparieren. Read more »

Ubuntu & Wiimote

Die neuste Nintendo Konsole Wii verwendet Bluetooth um mit den Controllern (bekannt unter dem Namen Wiimote) Wireless zu kommunizieren. Dabei wird das herkömmliche Protokoll für Eingabegeräte verwendet, HID. Um die Wiimote als Mausersatz oder als Fernbedienung unter Linux zu verwenden, gibt es ein Projekt mit dem Namen cwiid. In den Ubuntu Quellen steht dieses Tool bereits vorkompiliert zur Verfügung, mit ein paar wenigen Befehlen funktioniert die Wiimote somit auf einem Ubuntu Linux Betriebsystem:
$ sudo aptitude install wminput
$ sudo vi /etc/udev/rules.d/65-persistent-input.rules
Hier muss nun die Berechtigung für das Device uinput gesetzt werden. Dieses Device wird vom Userspacetool wminput verwendet. Am Ende der Datei muss dafür die Zeile KERNEL==”uinput”, GROUP=”admin” hinzugefügt werden. Read more »

Tastatur in Netbeans wird gelockt (Ubuntu 7.04)

Seit einiger Zeit hatte ich öfters das Problem beim Abeiten mit Netbeans unter Ubuntu 7.04 dass die Tastatur gelockt wurde. Ich konnte einfach keine Eingaben mehr machen in irgendeine Sourcedatei. Das Problem ist ein Fehler in der aktuellen Version der JavaVM. Ich habe die beiden aktuellsten Versionen, Java 5 und 6, installiert. Für Netbeans verwendete ich Java 6, wobei ich gelesen habe dass Java 5 diesen Bug nicht hatt. Deshalb versuchte ich Netbeans mit Java 5 zu starten, was jedoch auch beim wechseln der Standard VM nicht gelang (was ich mit galternatives änderte).

Netbeans verwendet ein eigene Konfigurationsdatei um die zu verwendende VM zu finden. Dieser Pfad kann in der Datei netbeans.conf angepasst werden.

$ sudo vi /opt/netbeans-5.5/etc/netbeans.conf

Nun läuft Netbeans wieder ohne Keyboardlocks, und das Programmieren macht wieder richtig Spass 🙂