Wanna see this logo while booting your 2.6 kernel? Click here!

23.02.2005 13:09

Getting bootsplash to work with the intel 815 framebuffer (i810fb)


This was again one of those tasks, you don't want to have assigned to you. I had to install my thinclient-installation on a messy old Compaq Deskpro EN with an Intel 815 Chipset. As my thinclient-installation uses bootsplash [EN] to show nice graphics while booting, I booted this machine after restoring the tc-image on it and waited for the bootsplash to no avail.
The reason, why bootsplash didn't show up was on the one hand the missing framebuffer support and on the other hand, the missing framebuffer support (no, that's semantically correct!).

My kernel lacked support for the i810fb (CONFIG_FB_I810=y, CONFIG_FB_I810_GTF=y) and bootsplash still lacks support for any other framebuffer driver than the vesafb. So you have to patch the bootsplash-code of your bootsplash-enabled kernel.

You also have to edit your bootloaders configuration file so your newly compiled kernel will get the right parameters for the i810fb driver. I'd recommend reserving about 8MiB of system memory for the i810fb device, otherwise you may run into errors when switching bootsplash images (2MiB is far to less, 4MiB is on the limit (3,8MiB needed by my bootsplash images)). The append-line for LILO could look like this (1024x768, 16bit, 8MiB RAM):
append="video=i810fb:vram:8,xres:1024,yres:768,bpp:16,hsync1:30,hsync2:55,vsync1:50,vsync2:60"
I had to use 16 bits of color depth because with 8bpp bootsplash doesn't work with i810fb and the upper limit of 60Hz for vsync2 was necessary because of my TFT screen (so if you use a CRT you may increase this value to whatever your monitor is capable of). Don't forget to remove the "vga=791" option in bootloader's configuration file because with the video= parameter, this parameter is obsolete and causes user interaction at boot time because of an invalid VGA-mode passed to your kernel.

23.02.2005 11:45

Xlib: sequence lost when starting openoffice.org


After the last debian upgrade my openoffice.org [EN] refused to start with the following error message:
tuxx@vi-edv003:~$ oowriter
Xlib: sequence lost (0x10000 > 0xe) in reply type 0x0!
I tracked that problem down by using strace [EN] and found out, that the last library, that was opened before the system wrote this message was libGL.so.1, which is part of the xlibmesa-gl package.
What helped, was to temporary relink libGL.so.1 to the library provided by xlibmesa-glu with the following commands:
cd /usr/X11R6/lib
ln -fs libGLU.so.1.3 libGL.so.1
In fact, this solution is not very beautiful, but at this time it fixes my problem and that's important.

I can't believe, that I'm the only one who has this problem but according to the Debian BTS and Dr. Google, I am. So this article is for everyone, who has the same problem - maybe even nobody... ;)

Update:
Today I really fixed this problem, and it was not related to xlibmesa-gl but to the new beta driver for my matrox graphics card. The upgrade of xlibmesa-gl revoked the changes, I made a few months ago to my OpenGL drivers and I didn't think of it at this moment. Besides, the install script of the 1.4.0 beta driver for my parhelia card does not correctly install the OpenGL-library provided for X11. I had to manually copy it to /usr/X11R6/lib and link it to libGL.so.1. Afterwards, everything worked fine, even accelerated :)

16.02.2005 13:36

restore-dpkg-status skript


In cases, where your /var/lib/dpkg/status file is corrupt it's very difficult to restore it properly, so I wrote this little script to rebuild the status file.

Since the first version of this script never really worked, I wrote a new one today which works flawlessly (as far as I could test that on my systems). This script tries to rebuild the status-file by using the package-information (grep from /var/lib/dpkg/available) of all installed packages (ls in /var/lib/dpkg/info/).

Feature Requests, Comments or Bugreports via e-mail, please.

You can download this script here [BASH] and there's also a html-version of the syntax-highlighted code available here [EN].

Please read the comment-section on top of the script before first use!

08.02.2005 16:37

Update for xbattbar-acpi


Today I resolved an issue with my xbattbar-modification. The bug was that if the batteries were fully charged, the color of bar indicating the capacity percentage was still blue (instead of green). This bug is fixed now, you may download the patch to xbattbar.c here, the new xbattbar.c here and the new Debian package here.

07.02.2005 10:46

xbattbar with ACPI support


The last weekend I tried to improve the famous xbattbar [EN] utility because I needed ACPI support compiled in. Since xbattbar does not support ACPI I merged it with the ACPI module from procmeter3 [EN]. This is just some kind of ugly hack and some features are still missing, like a proper Makefile/Imakefile for selecting ACPI or APM support at compile time, etc. You may download my efforts here: Instructions for self-compilers:
  1. download xbattbar 1.4.2 and extract it
  2. copy acpi.h and xbattbar.c into the main xbattbar directory (overwrite xbattbar.c)
  3. compile as described in the README file

01.02.2005 22:09

Exim 3.36 with MySQL Support in Debian


Today I configured my first exim MTA [EN] with MySQL [EN] Support. Debian does not provide MySQL-Support in its exim package, so you have to recompile exim from source to enable MySQL Support.

First of all you need some additional packages installed to avoid compile problems, here's a listing of these packages:
libdb3-dev
dpkg-dev
libmysqlclient14-dev
libpcre3-dev
libldap2-dev
libpam0g-dev
libident-dev
libwrap0-dev
xlibs-dev
libxaw7-dev
Of course you also need exim and mysql-server installed. I used exim 3.36 and mysql-server-4.1.

To compile the exim-source, you first have to download it.
apt-get source exim
This command creates a subdirectory called exim-$version in your CWD. You now have to edit the file exim-$version/debian/editme-diff as shown below:
old:
 # LOOKUP_MYSQL=yes

new:
-# LOOKUP_MYSQL=yes
+LOOKUP_MYSQL=yes


old:
 # LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include
-# LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq            
+LOOKUP_LIBS=-lldap -llber

new:
-# LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include
+LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/include/mysql -I /usr/local/pgsql/include
-# LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq
+LOOKUP_LIBS=-lldap -llber -lmysqlclient
cd to the exim-$version directory and issue the following command to build the package:
dpkg-buildpackage -uc -b
If this process succeeds, you'll get the compiled debian package outside the exim-$version directory. For those of you, who don't want to compile exim-mysql, you can use my precompiled package for Debian Sarge [DEB].

Finally install the package with the following command, and your exim-mysql should be up and running (check that with ps}.
dpkg -i exim_3.36-13_i386.deb
Now you have to prepare your MySQL Database and modify exim.conf. This part of my "howto" derives from this site [EN], but has some modifications for using the standard mailfile format instead of maildir, etc. Can't help myself, I don't like maildir...
create database maildb;
grant select,insert,update,delete on maildb.* to mail@localhost identified by 'secret';
flush privileges;

use maildb;
CREATE TABLE users (
    id                    char(12 8) DEFAULT '' NOT NULL,
    crypt                 char(12 8) DEFAULT '' NOT NULL,
    clear                 char(12 8) DEFAULT '' NOT NULL,
    name                  char(12 8) DEFAULT '' NOT NULL,
    uid                   int(10) unsigned DEFAULT '8' NOT NULL,
    gid                   int(10) unsigned DEFAULT '8' NOT NULL,
    home                  char(255) DEFAULT '' NOT NULL,
    mailfile              char(255) DEFAULT '' NOT NULL,
    quota                 char(255) DEFAULT '' NOT NULL,
    KEY id (id(128))
);

CREATE TABLE domains (
   domain char(12 8) NOT NULL default '',
   KEY domain (domain)
);

INSERT INTO domains (domain) VALUES ("example.com");
'secret' means the password that will be stored in the MySQL users-table.
The default entry for uid and gid is 8, which is the UID/GID of the system account "mail" on Debian systems.
"example.com" has to be replaced by your domain, of course.

To set up a test-user, issue the following command within the mysql shell:
INSERT INTO users (id, crypt, clear, name, home, mailfile) VALUES (
  "luser@example.com", ENCRYPT("test"), "test", "My name is Luser",
  "/nonexistent", "/data/mail/luser");
Verify, that the direcory /data/mail (or the directory you want to hold your mailfiles) exists and is owned by root.mail, mode 2775. If you want your users to have a homedirectory, replace "/nonexistent" with the new $HOME of this user.

At last, we have to configure exim by editing exim.conf. Here's my exim.conf - feel free to pick out everything you need or make a diff with your default exim.conf to see what has been changed.

To test exim, send yourself an email (either by using the mail/mailx utility or by speaking SMTP to localhost:25). Monitor /var/log/exim/mainlog while doing so and afterwards check /data/mail/$username if the mail has arrived.