[www.tuxx-home.at] - Website of Alexander Griesser

[www.tuxx-home.at] - Website of Alexander Griesser
Checked: 41 min 31 sec ago
Updated: 12 weeks 1 day ago
Update every: 2 hours

News from the front
Syndicate content

New Matrox Parhelia Driver (mtx) for Linux 2.6.26/2.6.27

[www.tuxx-home.at] - Website of Alexander Griesser - Mon, 13/10/2008 - 12:01pm
After far too long of a bringup, I finally upgraded my desktop system at work to 2.6.27 and for that to work, I had to upgrade the mtx driver too, so, here it is (the list of changes):

1.4.6.2:
  * Please note: This is a quick-and-dirty fix just to get this driver to
    compile on newer kernels and to fix the most annoying bugs.
  * Added support for Linux kernel 2.6.26 and 2.6.27
  * Fixed a compiler warning in mtx_drv.h
  * Fixed an issue where having more than 3GB of RAM on a 64bit system crashed
    the driver (solution inspired by Matrox)
  * Fixed the installer script to properly install the latest driver on newer
    X.Org X Servers instead of the oldest one

As stated above, this is just a q'n'd release, I hope I'll have some time soon to fix the page_fault interface and whatever else has changed since 2.6.26.

Links:


Downloads:

VMware ESX August 12 bug - Survived!

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 13/08/2008 - 2:14pm
Some of you may have already heard about the VMware ESX Server 3.5 Update 2 August 12 bug (lovely called KB1006716 by VMware) which has hit thousands of data center farms around the world.
I don't want to complain about bugs in software because we all know that bugs in software do exist and that you can never be sure that there are no bugs, but this bug was a timebomb - which makes it pretty hard to detect it, even after testing.
In my special case, I had upgraded one of my ESX servers to U2 a while ago and it was running very smoothly for more than one week (enough testing for me), so I upgraded the other ESX servers too, all was fine.

Yesterday I received a call from a client who told me that he was unable to start his virtual machine. I suspected the new VI client had issues with the rights management for restricted users and tried to start it with my user, but still no dice.
I then looked at the logfiles and tried several things and after about one hour of troubleshooting I googled for the error messages I got and was redirected to an unresponsive VMware KB article - well, that was the first indicator for something terrible. The site is still down (or at least, _VERY_ slow, waiting for about 5 minutes for it to load now) but fortunately the download of the patch itself was quite fast and so I'm currently upgrading one of my ESX servers to get it all back up and running.
What really bugs me is that you can't even migrate virtual machines away from one host to do the upgrade without downtimes - due to this bug, VMotion only works when migrating the VMs off to not affected hosts.
The good news is, that I have one server in my farm that does currently only host two productive machines (one webserver and one interface server) and both aren't _REALLY_ important, so it's no big deal when they're down for a few minutes after 4pm and that's where I'm currently at.
Server #4 is installing the patch through update manager and when it's back up, I can make all other servers free of virtual machines and do the upgrade without any further downtimes - so far the theory...

Configuring my first Linksys SRW224G4 switch

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 13/08/2008 - 9:18am
Today I got my first Linksys SRW224G4 switch (I do usually only work with Cisco but the customer looked for something cheaper and so I decided to go for Linksys, a Cisco division).
Alright, plug and play, the Cisco console cable doesn't work so you have to use their serial console cable. Now you get greeted by an ugly interface that reminds me of the good old AS/400 times, log in there and see a somewhat crippled menu where you can just configure a few things, but definetly not everything this switch is capable of.
OK, I activated SSH, HTTPS and so on and tried to connect to the webinterface with Firefox just to find out that the SRW224g4 webgui is broken for gecko based browsers.
Reading through the above mentioned article was really helpful though, especially the comments, where someone said that hitting CTRL-Z when the menu appears gets you into an IOS shell and yes, that works. After you get to the prompt, simply type "lcli", authenticate again et voila, you're in. Damn this freaking web interface, no need for it anymore.

While I was playing around with the IOS interface I tried do a firmware upgrade in parallel using IE7 and the webinterface. After about 30 minuts of waiting for the firmware upgrade to complete, I cancelled it and tried the firmware upgrade from 1.2.1b to 1.2.2b on the CLI using the following commands:
# Save the old firmware
copy image tftp://192.168.0.199/ls-srw224g4-1.2.1b.fw

# Load the new firmware
copy tftp://192.168.0.199/ls_106-12216.ros image

# Reboot the switch
reload
This took about 5 minutes (including backup and reboot) and after reboot the switch was working fine with 1.2.2b (even the ugly login prompt has changed to something more modern).

Unfortunately, the webinterface is now even broken on IE7 as it seems (can't even log in correctly), but I don't mind for now, maybe it's just IE7 or that I didn't allow the webinterface to run and install the MSXML 5.0 active X control (why the hell would a switch need to have such a control running on the client??).

Update: OK, the webinterface works when you enable the HTTP server. I do usually disable HTTP in favor of HTTPS, but I could reproducibly connect to the webserver when HTTP is turned on (in IE7, Firefox is still broken) but I can _NOT_ connect when HTTP is off.

I tend to believe that the people who get fired at Cisco are picked up by Linksys. Good ideas sometimes, good prices, mostly good quality and functionality, but such annoyances might have been the reason why they got fired at Cisco.

About online communities

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 08/08/2008 - 8:05pm
You know what's going on in online communities. You join them, you want to be part of something really cool, you post a lot there, you try to help/contribute/troll/whatever and then you leave again because there's something that you don't like or that doesn't get you further (in my case, it's mostly stupid people around there in these so-called communities without any kind of social skills).

Some weeks ago I was searching for the answer to a really tough driver problem on Vista (it finally turned out to be a hardware issue) and again stumbled upon http://www.experts-exchange.com (you know, that's always the first search result in Google with exactly the same question that you have and you can't see the answer without paying for it).

I was --||-- <- this far away from registering an account with them until I read the FAQ and Terms of Use there just to find out that you can get full premium access for free (ok, for zero money but not for doing nothing).

Sign up as expert, answer some questions, get good grades on your answers and once you earned 10,000 points (about 5 perfectly answered questions), you're part of the community (To keep your status, earn 3,000 points each month with a one month grace period).

OK, I signed up and started answering posts (to be able to finally see the answer to the question I was looking for). 3 days later, when I felt the need for a glass of water and my blatter was so full that I was hardly able to get to the toilet in time, I earned a few ten-thousand points already and was climbing up the top 10 ranks in all my favourite zones. I forgot about my original question and was heading for the free T-shirt you get when you earn your first certificate (50,000 points in a single zone).
About two weeks later, the T-shirt was on the way and another two weeks later I held it in my hands.

EE is not really a community if you're just answering or asking questions and don't talk to the others, but if you do, you'll find real experts in all major tech zones and you'll definetly find answers to most of your tech-related questions, so I can really only recommend this platform. The next really good thing is that you try to answer questions as fast as possible because someone else could "steal" _YOUR_ points and so you can really test your knowledge or fast-solving skills. The few weeks I'm now part of this community I learned loads of stuff I didn't know before just by trying to help other people (of course, I've never asked a question by now, I'm much too proud to ask for help...).

But that's not all, the probably greatest benefit from having joined EE by now is that I did already (and will continue to) earn quite a nice amount of €€ because people asked me to help them with other projects and wanted to pay for this help :)

Oh, and of course, here's my cert:
Experts Exchange Linux Master Certificate

Setting up a basic Bind DNS configuration for small networks

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 08/08/2008 - 7:37pm
If you ever need to set up a Bind DNS for a small network using one internal domain and you are using such stone-age distributions like CentOS or similar crap that doesn't install example configuration files, you will probably need to look up the syntax for the zone- and configuration files (I need to do that always and it just takes time).

So, here's a working copy-paste-forget setup:

Prerequisites
  • I'm assuming that the directory "/etc/bind" exists...
  • ... and that this directory is writable by the named user (if you want to have automatic updates to your zones)
  • you do _NOT_ want to use your providers DNS servers as forwarders
  • your local network is 192.168.0/24, your gateway is .254 and your DNS server is .1
  • Replace all occurences of HOSTNAME in the files below with the hostname of your DNS server
  • Replace all occurences of YOURDOMAIN in the files below with your local domain name
  • all the files mentioned below need to be put into the /etc/bind directory.
  • If the DHCP server is not under your control (or something that doesn't support dynamic DNS updates), you configured your clients to register to the DNS server properly (you might need to tick the checkbox "Include domain name on updates" on XP clients)
  • you know that in the above mentioned case anyone can update your DNS server and depending on your network that is probably insecure

/etc/bind/named.conf
include "/etc/bind/named.conf.options";

zone "." {
        type hint;
        file "/etc/bind/db.root";
};

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

include "/etc/bind/named.conf.local";

/etc/bind/named.conf.options
options {
	// On CentOS and other distributions you might need to change this
	// directory
        directory "/var/cache/bind";

        // ****** Enable this section if you want to use your provider DNS *****
        // forwarders {
        //      0.0.0.0;
        // };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

/etc/bind/named.conf.local
zone "YOURDOMAIN.local" IN {
  type master;

  // ***** Enable this option if you don't have access to the DHCP *****
  // ***** server on your network (e.g. if your firewall does DHCP *****
  // allow-update { any; };

  file "/etc/bind/db.YOURDOMAIN.local";
};

zone "0.168.192.in-addr.arpa" in {
  type master;

  // ***** Enable this option if you don't have access to the DHCP *****
  // ***** server on your network (e.g. if your firewall does DHCP *****
  // allow-update { any; };

  file "/etc/bind/db.0.168.192";
};

/etc/bind/db.0
;
; BIND reverse data file for broadcast zone
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

/etc/bind/db.127
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
1.0.0   IN      PTR     localhost.

/etc/bind/db.255
;
; BIND reverse data file for broadcast zone
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

/etc/bind/db.local
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1

/etc/bind/db.root
; <<>> DiG 9.2.3 <<>> ns . @a.root-servers.net.
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18944
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     3600000 IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33

/etc/bind/db.YOURDOMAIN.local
;/etc/bind/db.YOURDOMAIN.local
$TTL 1D
@               IN      SOA     HOSTNAME.YOURDOMAIN.local. hostmaster.HOSTNAME.YOURDOMAIN.local. (
                                1       ; Serial
                                8H      ; Refresh 8 Hours
                                2H      ; Retry 2 hours
                                1W      ; expiry 1 week
                                1D      ; minimum 1 day
                )

                IN      NS      HOSTNAME.YOURDOMAIN.local.
                IN      A       192.168.0.1

localhost       IN      A       127.0.0.1
HOSTNAME        IN      A       192.168.0.1
gateway         IN      A       192.168.0.254

/etc/bind/db.0.168.192
$TTL 1D
@       IN      SOA     HOSTNAME.YOURDOMAIN.local.   hostmaster.HOSTNAME.YOURDOMAIN.local. (
                        1       ; Serial
                        8H      ; Refresh 8 hours
                        2H      ; retry 2 hours
                        1W      ; expiry 1 week
                        1d      ; minimum 1 day
        )
        IN      NS      HOSTNAME.YOURDOMAIN.local.
        IN      A       192.168.0.1

1       IN      PTR     HOSTNAME.YOURDOMAIN.local.
254     IN      PTR     gateway.YOURDOMAIN.local.

New VPN client versions available for download

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 08/08/2008 - 7:07pm
You can now download the latest and greatest Cisco VPN clients from http://projects.tuxx-home.at.

I did update all of them yesterday and the AnyConnect client will follow soon.
The latest linux client (4.8.02) seems to work good enough with linux kernel 2.6.26+ (although I haven't tested it on my own, but I read some user comments about it on http://forum.tuxx-home.at.

First official LXTC release in a few weeks

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 08/08/2008 - 7:04pm
I'm working hard to finally release LXTC to the public (internal version numbering is 1.9 for the next version, but it's still beta), so when that becomes available, I'll release it on http://lxtc.tuxx-home.at.
Thanks for all your questions to this software!

My first (real) Bootcamp installation

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 08/08/2008 - 6:59pm
A few months of no updates in here, but that'll change now :) I'm going to write down what really bugged me the last few weeks - at least the stuff I can still remember.

Yesterday I had to do my first (real) bootcamp installation.
Of course as always I didn't read the documentation and I thought it would be more complicated then it actually was.
I guess my biggest mistake was that I assumed that this whole Bootcamp stuff is really cool (well, it has to, hey, it's from Apple!!11).
After starting the bootcamp wizard I created a windows partition and afterwards I put in the Windows CD. After reboot, it started to install everything and when it first prompted me for the destination partition during Windows setup, I realized that bootcamp does not what I expected from it (I thought it would create a pre-defined answer file for the windows installation and does everything automatically).
OK, I then recognized that the partition bootcamp created was FAT32 (!!), hey, that's not really the best platform to run XP on it. At this point in time I wasn't fully convinced that Bootcamp is crap, so I thought "There must be some really important and cool files on the pre-created FAT32 volume" but I still wanted to use NTFS for my windows installation. So I decided to convert the existing volume in the XP installer. Bad idea. After reboot, I got a "No media found" prompt when the system tried to boot from the disk.

I somewhere read that Bootcamp 1.3 was only FAT32, but I had 2.1 installed, so I opted for more. I did a complete reset on this mess and started over just to find out that even leaving the FAT32 partition in place (I wanted to convert it later on) didn't work. Still: "No media found".
OK, so there's definetly something wrong with the bootrecord on this partition and Bootcamp is just an Apple Wizard for "Create a partition and label it Bootcamp" but as you can't label a partition, you need to create a filesystem on top of it and as MacOSX still isn't able to handle NTFS properly out of the box, it created a FAT32 disk (don't know what it would have done when I would have increased the partition size beyond Windows' FAT32 limit).
To keep things short: What finally worked was to let the Windows installer reformat the already created partition with NTFS so that the bootrecord gets created properly.
To make this partition "visible" to MacOSX I had to manually label it "BOOTCAMP" and that's all it took to make this work.

Selling my Mio A701

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 10/06/2008 - 3:26pm

I'm trying to sell my Mio A701 (I'm heading for an iPhone at the moment ;) ). Anyone interested? If so, please drop me a mail at work@tuxx-home.at.

Installing Debian via PXE

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 22/05/2008 - 11:03am
Today I found my old Fujitsu Siemens Lifebook B in the cellar and wanted to play a bit with it. It's very small and handy (might be useful for certain tasks) and due to the recent hype on eeePCs, I need something small too ;) The specs for this notebook aren't very cool, but the display is a bit larger than the eeePCs display and it has a touchscreen which is also very handy when properly configured.
The main problem with installing operating systems onto this device is that there's neither a CD-Rom drive nor a floppy drive available and due to the age of this system, it's not possible to boot from USB drives, so I chose to install Debian via PXE on this device.

There are plenty of howtos on the web about configuring a PXE/Bootp/DHCP combination to make this work but I always need to write such things down on my own for easier reference in the future, so here's the way to go:

  1. Install a DHCP Server

    I chose "dhcp3-server" from Debian, so
    apt-get install dhcp3-server
    will do the trick. After installation, you need to configure it to allow booting from it. Besides the usual dhcp server configuration, you need to add the following configuration options:
      allow booting;
      allow bootp;
      class "pxeclients" {
        match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.0.254;
        filename "/pxelinux.0";
      }
    
    (Assuming that 192.168.0.254 is the IP address of the host the TFTP server will reside and that pxelinux.0 is the pxe bootfile name of choice).

  2. Install the TFTP Server

    I chose "tftpd-hpa" because it seems to have special features wrt PXE configurations, so
    apt-get install tftpd-hpa
    will install the software for you. Change "RUN_DAEMON" in /etc/default/tftpd-hpa from "No" to "Yes" and start this service using `/etc/init.d/tftpd-hpa start`.

  3. Download the netboot files

    Download the latest netboot.tar.gz from http://ftp.nl.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/ into your tftpboot directory (for tftpd-hpa, it's usually set to /var/lib/tftpboot):
    cd /var/lib/tftpboot
    wget http://ftp.nl.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz
    tar xf netboot.tar.gz

Make sure all the necessary services are started (dhcpd and tftpd) and try to bot your target system via PXE boot.

I hope I don't have forgotten some vital parts for this configuration and if so, feel free to leave a comment here.

Ever tried to VNC into a MacOS X box?

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 15/05/2008 - 12:09pm
I had to do this today and found out that even in VNC terms, MacOS is different. Usually, running `vncviewer $IP` works as expected, but on my linux box I only got a short flicker and was thrown back to the command line:
tuxx@vi-edv003:~$ vncviewer $IP
VNC viewer version 3.3.7 - built Dec 30 2006 12:48:54
Copyright (C) 2002-2003 RealVNC Ltd.
Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
See http://www.realvnc.com for information on VNC.
VNC server supports protocol version 3.889 (viewer 3.3)
Password:
VNC authentication succeeded
Desktop name "Userâs Macintosh"
Connected to VNC server, using protocol version 3.3
VNC server default format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Warning: Cannot convert string "-*-helvetica-bold-r-*-*-16-*-*-*-*-*-*-*" to type FontStruct
Using default colormap and visual, TrueColor, depth 24.
Got 256 exact BGR233 colours out of 256
Using BGR233 pixel format:
  8 bits per pixel.
  True colour: max red 7 green 7 blue 3, shift red 0 green 3 blue 6
Using shared memory PutImage
ReadFromRFBServer: rdr::EndOfStream
ShmCleanup called
tuxx@vi-edv003:~$

OK, I though, let's try the Windows RealVNC client, but the situation didn't change. I then tried to play around with the VNC options and found out that the only way to connect to your MacOSX VNC Server (Screen Sharing service) is using the following command line arguments to `vncviewer`:
vncviewer -encodings "copyrect hextile" $IP

The Windows VNC Viewer would only connect after setting the "Preferred encoding" to "Hextile" and the Colour level to "Full (all available colours)".
I guess you can imagine what having all available colours transferred through a VNC connection means in terms of speed and latency...

Ideas, anyone? (BTW: This does not only happen on my hackintosh, but on a real Apple PowerBook too).

Updates for VMwareTools-3.5.0-82663 to compile on Linux kernel 2.6.25.3

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 14/05/2008 - 11:12am
Updates for VMwareTools-3.5.0-82663.tar.gz (VMware ESX Server 3.5.0 Update 1) are available at the usual location.

Have fun!

Downloads/Links:

New Matrox Parhelia (MTX) driver release for Linux kernel 2.6.25+

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 06/05/2008 - 5:49pm
Unofficial Matrox Parhelia drivers This is the first unofficial mtx driver release based upon the new official 1.4.6 core. It contains only compatibility changes to compile on 2.6.25+ and some small changes to remove compile warnings (see ChangeLog below).

Downloads:
Please consider donating if you use this driver

ChangeLog:

1.4.6.1:
  * Re-applied all previous modifications (they dropped them all again)
  * Added support for Linux kernel 2.6.25
  * Fixed a compiler warning in mtx_irq.c

Links:

New domain, feeding Google

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 22/04/2008 - 1:43pm
Yesterday I registered a new domain for me. In the future, I want to draw a thicker line between personal and business content I'm providing on my server here, so everything that's linux related, as well as the support forum, the projects, etc. will stay on the "old" domain, all new business related stuff will go to agits.at.

agits.at will be available in german language only, I think, as all of my customers speak German. This domain will be my new platform to provide information about what I'm doing , what I can do for you(r company), how much I charge for these services, etc.
If you're interested, feel free to look around. At the date of this writing, there's no content yet but that'll change soon.

Links:

Updating VMware Server Tools 1.0.5-80187 to compile on linux kernel 2.6.24.3

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 22/04/2008 - 1:34pm
Today some people in my forum reported that the VMware Tools package of VMware Server 1.0.5 doesn't compile on recent kernel versions.
I jumped into that and created the necessary patches as well as prebuilt modules to use for installation.

Downloads/Links:

And the oscar for the most stupid software on my desktop system goes to...

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 17/04/2008 - 12:43pm
AVAHI-DAEMON.
Standing ovations for this piece of software which got installed sometime back in the past during an `apt-get upgrade` run automatically (don't remember when that was). I was facing problems for months now with the Citrix ICA Client on my system as that it is unable to connect to our Citrix Farm.
When I first start `wfcmgr` or `wfica`, it tries to connect to the correct IP address of our Citrix Proxy but then, after running into a timeout, it tries to connect to "118.105.45.101". WTF?, I thought, and checked /etc/hosts, the DNS server, etc. for typos. I did even check the whois database to see what I'm trying to connect to. None of these approaches revealed a misconfiguration on my system and so I gave `strace` a shot last week to maybe find out more about where this strange IP address comes from.
Et voila, immediately before trying to connect to this IP address, the Citrix ICA client connects to the avahi-daemon socket (or whatever that is) and this query for the IP address of our ICA proxy returned the above mentioned IP address.

Great. I fixed this problem now. Want to know how?

apt-get --purge remove avahi-daemon

2.6.25 - the next big problem on my todo list

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 17/04/2008 - 12:33pm
Today I downloaded 2.6.25 and installed it on my desktop system for testing purposes. Nearly _ALL_ third party kernel modules fail to build, including the Matrox Parhelia driver (mtx.ko), some VMware modules, etc.
The only module that works out of the box is Cisco's cisco_ipsec.ko (surprise, surprise...).

With 2.6.25, some symbols got unexported because they're unused inside the kernel, like "init_mm" and "cpu_callout_map".
cpu_callout_map may be fixed easily in mtx.ko, init_mm fixes seem to be much more difficult.
For the time being, I now run a somewhat crippled version of mtx.ko on my system (no hardware acceleration), but I at least got it to load by now, so expect any usable results for all main third-party modules in the next few days.

VMware Update Manager - The good, the bad, the ugly

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 18/03/2008 - 11:23pm
Today I wanted to try out VMwares shiny new Update Manager for VI3 (ESX 3.5, Virtual Center 2.5) because I heard so many cool things about it on VMworld. Unfortunately, my expectations to this product were much higher than what I got out of it. Let me summarize what they should improve in the next version.

I have three ESX hosts, one "power" machine (dual core, each CPU has about 3GHz, 16GB RAM) and two smaller machines of equal size (dual core, each CPU has about 3GHz, 8GB ram). Previously I always had to manually hot migrate (using VMotion) my VMs from the ESX host to be updated to the other ESX hosts which will be upgraded later on in this process. After applying all the updates, I had to manually move them back, update the next server, etc. VMware Update Manager claims to do exactly all that for your virtual infrastructure making updates a lot easier because they can even be scheduled at times when the server load is not that high or at the weekends, etc.
Well, thanks god I didn't try that schedule thing but was in front of my Virtual Center when trying Update Manager.
To start the whole update procedure, I clicked on "Remediate..." on my ESX Cluster and Update Manager picked one of my ESX hosts (oddly it didn't pick the one with the lowest load), started opening firewall ports, installing some stuff and finally wanted to put the host into maintenance mode. Due to me having the DRS automation level set to "partially automated" (I'm paranoid, you know - I don't even trust my virtual infrastructure), entering the maintenance mode would have timed out because the DRS migrations to move all the VMs off of the ESX host that currently gets updated were just recommendations. I needed to manually apply the generated recommendations and then it started to migrate the VMs away.

My VMotion network is currently only connected via 100MBit/s which I know is not recommended by VMware but it works (migrations take longer, but that doesn't bother me that much), _BUT_ because migrations take longer, the "put $esxhost into maintenance mode" task times out and what's even much worse: The parent task of this update process (called "Remediate Entity") stalls at a certain percentage level and stops working. You can't cancel it, you can't restart it, in fact, trying to start a new remediation only makes things worse.
Another thing that isn't very smart would be the automatically generated DRS recommendations. At the time Update Manager tries to get one ESX host out of duty it scans the cluster for available resources and in my case, having two additional ESX servers with average (low) load, it only chose _ONE_ of them to host the VMs to be migrated. Bad idea. During the migration, the load on ESX host A started to increase and DRS moves machines from ESX A away to ESX B to "balance average CPU loads", as it said... Well, what about generating new DRS recommendations after having migrated two VMs off the target ESX server? Things might have changed after that... Never thought about that? Don't worry, I already know.

Anyway, what helped to get the Update Manager processes disappear was to manually kill the update-manager.exe service on the Virtual Center server (stopping the service also timed out), wait a few seconds, start it again and wait for Virtual Center to reintialize the Update Manager extension. If it doesn't, set it manually to "Enable" again and all the previous, stalled, tasks should now have been quit with "VMware Update Manager had a failure". That's good, because now you can start over with patching your VI.

After having all machines manually migrated off my target ESX host, I put it manually into maintenance mode and started a new remediation on cluster level to see if it would be so clever to choose the host already in maintenance mode but it didn't (OK, that might be a good idea; you never know _WHY_ this host is currently in maintenance mode). What puzzled me was VMware Update Manager's overestimation of its capabilities, because one of my hosts was put to maintenance mode (therefore it wasn't an active part of my cluster anymore) and the other two ESX hosts hosted all my virtual machines being under quite some load trying to cope with that. But not enough, it tried to consolidate the two remaining ESX servers to get one free for applying updates onto it.
VMware, could you please ask me if I really want to do this? Doing this causes my whole VI to simply stop working because one ESX host can't handle this load. It's simply ridiculous to start the update process when resources are that low...

So, after my first date with VMware Update Manager I decided to not trust it as much as I would have liked to.

What worked for me was to manually (!!) migrate all the VMs of one of my ESX servers onto the other two ESX servers (I used a very, very complex algorithm to find out what VMs to move onto what ESX server to "balance the average CPU loads") and afterwards started the remediation of the critical updates on the empty ESX server.

During the time I'm writing this I'm currently giving Update Manager a second chance to prove that it could be my friend. To make stuff easier, I changed the DRS automation level to "fully automated" and bingo, that worked now. Update Manager was able to put the host into maintenance mode and it did a fairly good job in migrating the VMs to the other hosts. It is currently installing the updates and maybe afterwards I'll do some tests on VMware HA (isolation and stuff seems interesting...).

Long story short: Do extensive testing on VMware Update Manager before letting it do its work unattended.

Getting my Hackintosh ready for duty

[www.tuxx-home.at] - Website of Alexander Griesser - Sat, 15/03/2008 - 10:14am
Alright, it seems as if the basic software I need for my daily business is well supported on OSX. Today I installed the latest (to me) available version of the Cisco VPN client for MacOSX (which is vpnclient-darin-4.9.01.0100-universal-k9.dmg) as well as the latest available Citrix ICA Client for OSX. Both pieces of software work as expected, establishing a connection with the VPN client on OSX is a lot faster than on Windows XP or Vista but I'm not very surprised by this because after all, we're on a *nix system here, so well, it seems as if OSX is ready for my daily business. I haven't tried the remote desktop client so far because I don't know where I can invoke it (it's all a bit different in here...) but if that thing works too, I think I could get familiar with this OS.
I still don't know what software I need to have installed on this OS, e.g. antivirus software, spyware stuff, etc. but I'll keep on searching. So if you know a software I should definetly try, please drop me a line here.

New official Matrox Parhelia drivers release (1.4.6)

[www.tuxx-home.at] - Website of Alexander Griesser - Sat, 15/03/2008 - 9:00am
Everyday I browse the Matrox driver listing on their website to check for official driver updates. I did so yesterday and the day before too, but there were no newer drivers for Linux available.
So it seems that I definetly need some looking glasses, because today I found the long promised 1.4.6 version of the MTX driver with a release date of "Mar. 12, 2008" on their site.
Anyhow, feel free to give this driver a try (you'll find the download links below) and report success or failure in my forum please until I'm able to give them a try.
Out of the release note I can see some interesting new things and features I definetly need to investigate on Monday:
  • Support for the new P690 cards!
  • Includes a beta Matroxconfig (GUI!) tool
  • QHI (Quad Head Independent) support!
  • A strongly rewritten documentation that looks quite well at the first glance
  • A new X Server extension (MTXCFG) for the Matroxconfig tool
  • Pseudo-Xinerama support!
  • They clarified in the release notes that XGL/AIGLX as well as RandR is not supported by the driver

Links:

Updating VMware Fusion Tools to compile on 2.6.24.3

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 14/03/2008 - 1:22pm
As I started investigating the 30day trial of VMware Fusion on my Hackintosh I wanted to give 2.6.24.3 in a linux guest VM a try and was pretty sure that the VMware Tools modules won't compile (although the tools version there is much newer than the one from the ESX server), but there were still some changes necessary.
I found out that some stuff is gcc-related, e.g. inheriting typedefs doesn't work with the gcc version in Debian stable but does work on unstable, so VMware Tools on Linux 2.6.24 currently use stuff like:
typedef unsigned long uintptr_t;   /* Inside <linux/types.h> */

typedef uintptr_t VA;              /* Inside vm_default_types.h */
This fails on older gcc versions and you need to apply a small workaround like
typedef unsigned long VA;          /* Inside vm_default_types.h */
for this to work (uintptr_t is always unsigned long in 2.6.24, no matter what (x86)-architecture it's running on.
With the latest gcc version you don't need this workaround so I assume that you have a quite recent gcc version installed on your system when downloading my patches to VMware Tools. If you don't and you get errors regarding the issue mentioned above, go fix it your own or bug me as long as I'll provide two versions of my patchsets ;)

Currently I don't have time to elaborate a lot about how to install these patches, etc. as the installation instruction for VMware Fusion Tools is (of course) the same as with any other VMware virtualization product as the installation of the tools happens inside your guest and that feeling doesn't change that much fortunately.

So, for installation instructions, please go to my projects page.

I haven't updated this page by now (maybe the time you'll read this it already happened), so for the download links, please check the webserver directory. You'll find the diffs and prepared tarballs suitable for installation there.
Oh, well, I nearly forgot to feed Google: Install VMware Tools on Linux guest running kernel 2.6.24 or newer on VMware Fusion 1.1.1 (72241).

Links/Downloads:

Tigerkatzitatzi

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 13/03/2008 - 2:41pm
Today I did some further testing with my OSX installation. I now know how to input '<' and '>' (simply press the key labeled with '^' on your keyboard to get the '<', '°' for getting the '>'. But more than this, I tried to install some software on top of this system.
Firstly, I wanted to give the 30-day trial of VMware Fusion a try. Installation went smoothly, application looks really nice (really maccy, though, but I got used to it quickly) but when I tried to import a virtual machine copied over from our ESX servers that didn't work. I haven't tried VMware workstation or Server by now, but I think that this won't work either as Fusion seems to have a different file format (let alone the extension which is .vmwarevm).
Exporting one of my VMs as virtual appliance did somehow not work on our ESX setup, but I can try this later on.
No problem, such a virtual machine is created in just a few seconds, I thought. Not having an installation CD at hand isn't a big problem as I'm able to install most operating systems here via our TFTP server, _BUT_: I need to press CTRL-ALT to activate the PXE menu and guess what? Right, VMware releases the input grab if you hit CTRL-ALT.
OK, I know this problem from the Windows versions of this software and clicked through all available buttons and configuration items looking for a place to change the keystroke for input release. Unfortunately, I haven't found it by now but I guess that's not my fault.
VMware Fusion smells like it would love to assist me in any possible way to get my virtualization thinggie done, f.ex. after having created a virtual machine you can't just power it on if you don't have a CD image or physical CD by hand. You need to say "No, thanks, I don't want to boot this VM right now", go into the settings, disconnect the CD-drive (now don't think that this will work, because the radio button down there is still on "use no CD-image" and although you disconnected the CD at all, Fusion complains about an invalid setting... grml) and boot the VM.

The next thing I tried to install was the A1 Mobile Connect Software for MacOSX which works a treat without any further hickups. More to come, tomorrow I'd like to install the Cisco VPN client as well as some other work-related software for testing purposes. I'll keep you updated :)

How Google's search results can ruin your whole day...

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 12/03/2008 - 9:34pm
It was one of these days when I had nothing better to do at evening than googling around without any special reason. This day was yesterday, BTW, and suddenly I stumbled upon a website describing a method of getting OSX installed on nearly any x86 based PC. I wanted to write this article completely on my new hackintosh, but I just recognized that some of the important keys for writing this blog entry don't work, like f.ex. < or > as well as some other things, so stay tuned, I'll switch back to my other PC and will continue this article in a second...

Well, back to life.
I'd like to summarize the steps needed to get this beast installed (for educational purposes only, of course, doing things like this is illegal as you might have guessed).

First of all, get the patched installation medium of your choice (I chose iATKOS v1.0ir2 which worked quite fine on my system) and burn it to an empty DVD-R.
Boot your system off this medium and follow the onscreen instructions. Before "Agree"ing to the License statements, click on "Utilities" -> "Disk Utility" and create a volume for your OSX installation. Be careful while doing this, you can easily erase all the data on your harddisk(s) with one wrong click!
I for myself didn't want to kill my notebook and therefore I used a currently unused notebook lying around at my desk at work for this experiment. It's a Lenovo Thinkpad R60e, nothing special, but it contains hardware that seems to be fully supported for osX86-like experiments...
When using the entire disk for your OSX installation, make sure to choose the MBR partition type (no Apple or GUID stuff, MBR is just fine) and create a new partition (or format an existing one dedicated to your new OSX installation) with the Apple HFS+ filesystem.
As I've gone about more than ten times through this installation process today I can say that it doesn't matter what filesystem type + options you choose, I decided to stick with "Mac OS Extended (Case-sensitive, Journaled)".

Close the disk utility and read the installation instructions and hints carefully. At this point it is good to know what hardware _EXACTLY_ is built into your target system. I booted a linux live CD prior to installing OSX on this system to get the necessary information. You should print out or write down the output of the following commands just in case:
cat /proc/cpuinfo
lspci
dmesg  # ok, writing down dmesg isn't funny, but you know what you're looking for
and write down the MAC-address of your wired NIC if it's not supported by default, you'll need it later on

Now click "Agree" and choose your destination partition. Before hitting the "Install" button click on "Customize" to make changes to the packages and patches being installed.
I can't tell you what to choose here because that depends heavily on the hardware being used, but for the Lenovo Thinkpad R60e, the following options worked:
[X] iATKOS v1.0i Main System
[-] Bootloader
    [X] Darwin x86 bootloader
    [ ] Darwin EFI
[ ] Patches
[-] Drivers
    [ ] VGA
    [-] System
        [ ] S-ATA
	[X] AppleSMBIOS.kext netkas
	[X] Intel Speedstep
	[ ] Ext2fs
    [-] Network
        [X] IO80211Family.kext 10.4.5
	[X] Wireless patch

Now apply these settings, click install and wait for about 20 to 30 minutes for the installation to complete.

After reboot, try to pull out the DVD to see if the system is able to boot from your harddrive. Mine was not and so I had to look for a solution to this problem which I found here. This howto was written for getting the GUID bootloader fixed so it needed a few adoptions to make it fix the x86 MBR bootloader. Here's the magic:
1. Boot with the DVD
2. Press F8, then type "-s" (this will start some kind of a rescue shell)
3. type "cd /usr/standalone/i386"
4. type "dd if=boot1h of=/dev/rdiskXsY bs=512 count=1"
   (where X is the disk number and Y is the partition number on which you installed Leo)
5. type "dd if=boot0 of=/dev/diskX bs=400 count=1
   (where X is again the disknumber)
6. type "reboot" and take out the DVD, your system should now boot off the disk

If this didn't work for you, don't worry, you can still boot your installed system with the help of the installation DVD. Simply leave it in the drive and wait for the timer to count down, it will then boot your installed system.

Click through the "Customize your MAC" dialogues and try to configure your network. Configuring the network didn't work for me (neither the wired nor the wireless connection), because the wired NIC (Broadcom BCM5751) wasn't supported by the installed kernel and the wireless NIC won't let itself configure with this network setup thinggie, so I chose "This Mac is not connected to the internet" and continued.
So now let's have a look at my NICs.
I found a kext (kernel extension??) file for the BCM5751 cards with the help of Google, copied it on a USB stick and installed it on my Hackintosh as mentioned below:
1. Search Google for AppleBCM5751Ethernet.kext and download the zip-file

2. Copy it to your Hackintosh (I used an USB-stick to transfer the archive)

3. Plug the stick into your Hackintosh and copy the archive to a temporary folder

   cp /Volumes//AppleBCM5751Ethernet.kext.zip /tmp

4. cd /tmp && unzip AppleBCM5751Ethernet.kext.zip

5. chown -R root:wheel AppleBCM5751Ethernet*

6. chmod -R 755 AppleBCM5751Ethernet*

7. mv AppleBCM5751Ethernet* /System/Library/Extensions

8. Reboot

After Reboot, your system should recognize the NIC, check this by clicking on "Go" -> "Utilities" -> "Terminal".
Ah, well, the Terminal. Nice, BTW, but not as good as it could be, there are some things that drive me nuts when using this terminal emulation, but I'll elaborate about that later on.

To do system related tasks and configuration, you need to switch to a privileged user. Using `su -` doesn't work (dunno why at the moment, but I'll find out) so you need to use the `sudo -s` command. Enter the password of the user you created during the installation wizard and you should get the root prompt (indicated by the '#' sign at the end of the prompt).
Now type `ifconfig` to see all available network interfaces. Watch out for interfaces named "en0" or "en1". In my case, "en0" was the wired NIC and "en1" was the wireless NIC.
As this is all a big pile of hackery, the BCM5751 kext doesn't read out the MAC-address of your NIC correctly, so it's set to 00:00:00:00:00:00 by default which is bad. Now it's time to get the piece of paper you wrote down the MAC address earlier and set it manually (please note that setting hw-related options with ifconfig is only supported when the connection is down, so don't plug the cable in or deactivate the interface):
ifconfig en0 hw ether 11:22:33:44:55:66

Now everything should be set and you should get your network connections up and running. BTW: You'll have to do this after every reboot of your Hackintosh unless you find out how to make this change permanent and if you do, please tell me!
The next thing I tried was to configure the wireless NIC (an Atheros AR5212 in my case), which did sort of work out of the box, but as I mentioned above, the installation wizard won't let me configure it and all of these funky "Turn Airport On" buttons didn't work, so what could I do?

I decided to ask the "OSX Network Assistant" for help and clicked on "Diagnosis" expecting to get more detailed information about why my WLAN NIC isn't working, but instead of getting logs, a wizard came up helping me to configure my WLAN. Although it said "Can't turn Airport on" in first place, it was able to activate it in a second try although there was no visual confirmation that Airport was really turned on and so I was very excited to see my SSID in the list of available wireless networks. From now on, everything was straight forward, after entering the WPA passphrase, I was connected and online in just a few seconds.
Unfortunately, these settings are not permanent, so I need to walk through this wizard each time I boot my Hackintosh, but I can live with that at the moment. Again, if you know a way of making this permanent, please don't hesitate to drop me a few lines about that.

All other hardware seems to work fine right now, I can play sound, watch movies and according to the "System profiler" I have accelerated graphics too (I can't really confirm by now as I don't know how to do this, but give me some time...).
Some things seem to be broken though, e.g. when installing updates OSX complains about "Your computer is not connected to a power source" although it is properly connected and there are a few other things that seem to be buggy but hey, it wasn't supposed to run at this hardware at all, so after all, I'm quite satisfied with the current state of this installation.

As you might know, I'm not a big fan of any fruits (especially apples) and therefore I'm not feeling very comfortable with this system by now, but maybe that'll change once I figured out how to get rid of the remaining annoyances :)

Some questions to be answered:
  • How can I input > and < or even a | on this system?
  • Why do the key strokes Home, End, Page Up, Page Down not work?
  • Why does Shift-PageUp/Down not scroll the Terminal window?
  • Why does CTRL-U not work properly in the terminal application?
  • Why is the Mail application unable to delete Mails on my IMAP server (Error message: IMAP command "UID COPY" failed. Error in IMAP command returned by server)
  • ...

It's already late down here and so I'll stop this entry by now, but there will be updates for sure about this topic, so stay tuned :)

Oh, well, a few additional things:
The windows logo key on your keyboard is mapped to the MacOS option key by default.
Trying to type the '@' sign might kill running applications if you're used to type it using AltGr+q. On your Hackintosh, use "Option (Windows logo key)" + "l (small 'L')" to get the '@' sign.
You should register yourself at http://forum.insanelymac.com because it contains a lot of useful information about this whole experiment and all of the downloads (additional drivers, patches, etc...) can only be downloaded by registered users.

Updating VMwareTools-3.5.0-64607.tar.gz to compile on Linux kernel 2.6.24

[www.tuxx-home.at] - Website of Alexander Griesser - Mon, 10/03/2008 - 8:43pm
Today I wanted to give VMI (the new paravirtualization support from VMware) a try and therefore decided to upgrade my guest OS'es linux kernel to the latest available version which is 2.6.24.3.
Of course, VMware tools refused to compile out of the box and therefore I had to patch them a bit to get this experiment going.

Installation instructions, patch downloads, etc. can be found at my projects website. Have fun trying and if the patches don't work for you, drop me a post in my support forum and I'll see what I can do for you.

Links:

Installing Vista SP1

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 06/03/2008 - 7:32am
Well, you know the good old saying: "There's life in the old dog yet"? Let me explain. Yesterday I tried to install Vista SP1 on my notebook and failed miserably. I tried three different ways of getting this installed (using the offline installation file, trying some tips mentioned on winfuture.de, applying a registry key so that my system will get Vista SP1 through windows update) but none of them worked.
At first it looked quite well, but after the second or third reboot (I don't know exactly as I've been away from my laptop while installing it) it reverted all changes and told me that the installation was unsuccessful.

There were different error messages, e.g. 0x800f0826 and later on there was also 0x81000109. Googling for these error messages didn't really help, besides telling me that I should deactivate Anti-Virus software (desperate as I was at this moment, I really did deactivate it...), run a filesystem check, run `sfc /scannow`, etc. Needless to say, that didn't help at all.
Grepping through the CBS.log file generated during the SP1 install didn't help either and so I continued my search on Google by finding out _WHAT_ changes SP1 provides to get an idea about what could cause the problem. After reading quite some articles I found out that the (BCD-like) bootloader gets updated too. Doh!
Although I suppressed my last experience with BCD bootloaders, I guessed that this might be the cause for my new problems too and so I started fixing this old issue.
It took me quite a while to find out what's really wrong with my system but after all, it was very easy to fix.

You remember, `bcdedit` and its evil friends weren't able to find the default BCD store which I created on C:\boot\BCD. So why is this? Using some tools out of the sysinternals package and monitoring a standard `bcdedit` invocation showed that it didn't look for some files on the hard drive before replying with "Can't find BCD store"-like messages.
Long story short: I had the wrong partition marked as active. As this system is configured for triple-booting Linux, Windows XP and Windows Vista, I thought that the Vista partition needs the one to be active but that assumption was simply wrong. After making the XP partition active again (using `diskpart`), `bcdedit` was able to find the default store again and additionally, `msconfig` would let me modify my startup entries again (previously, the "Startup"-tab in `msconfig` was empty). So it seems as if `bcdedit` is looking for the active partition in your current partition table rather than for a specified folder which is nice, BTW, but I wouldn't have expected that from Microsoft ;)
So, should that be the solution for my problem? I tried to install SP1 again and what should I say - it worked perfectly. After about half an hour of automatic reboots and funny numbers counting up to 100% it was alive. So far, I'm quite satisfied with SP1 (copying large amounts of data seems to work better at the first glance) but what really makes me happy is that the problem with the BCD store is now gone and with it, I regained the possibility to hibernate my machine ;)

Pictures from VMWorld Europe in Cannes

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 26/02/2008 - 9:27am
I'm currently attending VMWorld Europe in Cannes. It's really great down here and I'm very busy at the moment so just to keep you updated, here are the first few pictures of Cannes. Today is the first official day of VMworld so there will more pictures follow in the next few days.
Matrox has a booth here too, I can't wait for finally arriving there and asking them some nasty questions ;)

Stay tuned, here's the link to the pictures so far:
VMWorld Europe in Cannes 2008

Installing Trendmicro Interscan Viruswall 6 (ISVW6) on Debian 4.0

[www.tuxx-home.at] - Website of Alexander Griesser - Sun, 10/02/2008 - 12:46pm
Today I upgraded one of my customers ISVW5 for SMB installations to the new ISVW6 (namely ISVW_v6.02_7672_release.tar.gz). Of course - as always - Trendmicro doesn't officialy support Debian as host operating system and therefore you need to make some changes to your Debian system to make this combination work. I'll summarize the necessary changes here for your convenience but I don't know if it's a complete summary, by now, everything seems to work with the new version but there might be additional pitfalls I've not stumbled in by now, so if you experience troubles, please drop me a comment here or write me an e-mail and I'll have a look.

First of all, when upgrading from ISVW5 to ISVW6, make sure to either backup your ISVW5 configuration using the migration script or choose the upgrade method during the setup. Due to my paranoia I chose to manually backup the settings just to be sure in case the setup script wouldn't work - I suggest you do this too.
1. Download the ISVW6 archive
wget -q http://www.trendmicro.com/ftp/products/interscan/ISVW_v6.02_7672_release.tar.gz

2. Extract it
tar xf ISVW_v6.02_7672_release.tar.gz

3. Change to the newly created directory
cd isvw

4. Run the migration script to backup your current configuration
tool/isvw-migr5to6 -o /path/to/backup.conf

5. Verify that the configuration was exported successfully
tool/isvw-migr5to6 -v /path/to/backup.conf
Now, your current configuration should be safe and you might want to continue the installation process.

Before you do so, you should prepare some things. First of all, you should add the following library locations to your ldconfig configuration. On Debian, this is usually achieved by adding a file called "/etc/ld.so.conf.d/trendmicro.conf" with the following contents:
/opt/trend/isvw6/cmagent
/opt/trend/isvw6/http
/opt/trend/isvw6/main
/opt/trend/isvw6/scan
/opt/trend/isvw6/services
/opt/trend/isvw6/webui
This file can also be downloaded from here, check the links at the end of this article.
I recognized that ISVW installs some libraries also available on standard Debian systems into these directories, e.g. libgssapi_krb5.so.2 a.s.o, so you need to make sure that your system's libraries are used primarily on your system by adding the paths "/lib/" and "/usr/lib" at the beginning of "/etc/ld.so.conf".

As these directories aren't populated by now (ISVW6 has not been installed yet) it is pointless to run `ldconfig` now. The installer should do this automatically after the installation has finished.

Next, make sure the `awk` binary can be called by "/bin/awk". This was a tough one to find out, I had to dig through quite some `strace` output to get an idea about why my diskspace seems to be insufficient :-/
The webui uses the hardcoded path "/bin/awk" to parse the `df -P -k /opt/trend/isvw6` output to gain information about the free disk space on your machine. If /bin/awk is not available you cannot manage your ISVW installation through the webinterface and will receive the following error message in your webbrowser:
Unable to process the request. Insufficient disk space. Increase available disk space and try again.
Use the following command to make a symlink to Debian's default installation path:
ln -s /usr/bin/awk /bin/awk
After installation the startup script "/etc/init.d/isvw6" uses the `usleep` command to delay the startup of particular ISVW processes. Needless to say, `usleep` isn't available on Debian systems so you either need to rewrite /etc/init.d/isvw6 or create a usleep wrapper script. I decided to implement the latter because you never know whereelse they're using usleep, so here's an example of a simple usleep wrapper script that calls sleep with the re-calculated delay (copy this script to /bin/usleep and make it executable):
#!/bin/sh
# small usleep - sleep wrapper for Debian systems
# This tool needs "bc" installed
#
# by Alexander Griesser , 2008-02-10

if [  "$#" != "1" ]; then
  echo "usage: $(basename $0) time_in_usecs"
  exit 1
fi

sleep $(echo "scale=1; $1 / 1000000" | bc)
This script can be downloaded from here, check the links at the end of this article.

Now your system should be prepared and it is safe to run the setup script. Please follow the Getting Started Guide for detailed information about the installation procedure.
./setup.sh

After the installation completed successfully, stop the ISVW services, run `ldconfig` to make sure the library cache gets updated, apply a small patch to /etc/init.d/isvw6 to avoid warnings of deprecated `tail` usage and start the services again:
1. Stop ISVW6
/etc/init.d/isvw6 stop

2. Run ldconfig
ldconfig

3. Apply a small patch to /etc/init.d/isvw6
cd /tmp
wget -q http://tuxx-home.at/projects/isvw6/isvw6-deprecated-tail-usage.diff
cd /etc/init.d
patch < /tmp/isvw6-deprecated-tail-usage.diff

4. Start the services again now
/etc/init.d/isvw6 start

Everything should be fine now, have fun enjoying your ISVW6 installation on Debian :)

Downloads:

Cisco VPN Client Patch update for 2.6.24 final

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 25/01/2008 - 8:54am
As 2.6.24 was released today I had a look at the code and recognized that the "init_net" symbol is now again exported using EXPORT_SYMBOL() instead of EXPORT_SYMBOL_GPL() so the Cisco VPN client can make use of it again.

Below is the updated patch to reflect this change.
Installation instructions:
1. Untar the VPN Client
# tar xzf vpnclient-linux-4.8.01.0640-k9.tar.gz

2. Download the patch
# wget -q http://projects.tuxx-home.at/ciscovpn/patches/vpnclient-linux-2.6.24-final.diff

3. Change to the vpnclient diretory
# cd vpnclient

4. Apply the patch
# patch <../vpnclient-linux-2.6.24-final.diff
patching file GenDefs.h
patching file interceptor.c


Now the patch has been applied and you can safely install the client
#./vpn_install

Downloads:

Links:

Please consider donating if this patch was helpful to you, thanks!

Patch to make the Cisco VPN Client work on Linux 2.6.24+

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 11/01/2008 - 6:40pm
After hours of reading kernel code, changelogs and coding examples I finally managed to come up with a patch that allows you to use the Cisco VPN client on Linux kernel 2.6.24+.
I've tested it thoroughly, but it still may be able to panic your kernel, so please use with care and don't make me responsible if your system catches fire or something like that.
The installation instructions are (as always) straight forward, but I'll quote them here for your convenience.
1. Untar the VPN Client
# tar xzf vpnclient-linux-4.8.01.0640-k9.tar.gz

2. Download the patch
# wget -q http://projects.tuxx-home.at/ciscovpn/patches/vpnclient-linux-2.6.24.diff

3. Change to the vpnclient diretory
# cd vpnclient

4. Apply the patch
# patch <../vpnclient-linux-2.6.24.diff
patching file GenDefs.h
patching file interceptor.c

Now the patch has been applied and you can safely install the client
#./vpn_install

Downloads:

Links:

Please consider donating if this patch was helpful to you, thanks!

New support forum online

[www.tuxx-home.at] - Website of Alexander Griesser - Thu, 03/01/2008 - 8:57am
Since yesterday, I created a new support forum to support all my projects at one place.

This new forum also contains the contents of the former Unofficial Matrox Technical Support Forum. This change was necessary to be able to provide help to my other projects too.
There will be much more to come in the future, but for the moment, I'm quite satisfied with the new forum. BTW: I did an upgrade to phpBB 3.0 at the same time and was very astonished about how good the converter worked. The only thing that it didn't convert was the in-forum links (e.g. links to matrox.tuxx-home.at), but to be honest, it isn't supposed to do this.
Will add a mod_rewrite rule to ease the transition to the new domain soon.

Dear Matrox forum users, please update your bookmarks:
Links:

Organizing my projects

[www.tuxx-home.at] - Website of Alexander Griesser - Sun, 11/11/2007 - 12:05am
Today I created a new website which should help me (and what's more important, people out there) in getting a good overview about my current projects, latest release versions, download links, documentation, support, etc.
The weblog itself doesn't seem to be suitable anymore for this and therefore I'm trying to combine these two websites now. Announcements will still be made on the weblog (due to the RSS feed feature) but will mostly point to the new website probably.
I also had to rearrange some files (e.g. driver downloads, etc.) to fit into the new concept, so all previously created links are still valid, but future links will only point to the new website.

Please have a look at http://projects.tuxx-home.at and tell me what you think ;)

Links:

New patch to make Cisco VPN Client 4.8.01.0640-k9 work on 64bit systems!

[www.tuxx-home.at] - Website of Alexander Griesser - Fri, 09/11/2007 - 5:06pm
Today I received an e-mail from Stephen Frost who wrote a patch to the latest Cisco VPN client 4.8.01.0640-k9 which should fix the compile problems on 64bit systems.
The client didn't compile on 64bit systems with the following error message during compilation:
interceptor.c:778: error: invalid operands to binary -
Due to the lack of 64bit hardware, I can't confirm that it works so you'll have to do the testing for me ;)

Please add a comment if you tried the patch and report whether it worked or not for you.
Thanks, Stephen!

Downloads:

New Unofficial Matrox Parhelia Linux driver (v1.4.5.2) supports Kernel 2.6.23+

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 23/10/2007 - 8:41am
Unofficial Matrox Parhelia drivers This is the second unofficial mtx driver release based upon the new official 1.4.5 core. It contains only compatibility changes to compile on 2.6.23+ and some small changes to remove compile warnings (see ChangeLog below).

Downloads:
Please consider donating if you use this driver

ChangeLog:

1.4.5.2:
  * Added compatibility support for kernel versions >= 2.6.23
  * mtxversion.h:
    - Increased unofficial version number
  * mtx_agp.c:
    - Removed a warning of an unused variable on recent kernel versions
  * mtx_drv.c:
    - Replaced pci_find_slot() with pci_get_bus_and_slot() for recent
      kernel versions
    - The return type of unregister_chrdev() has changed in 2.6.23
    - Removed another warning of an unused variable

Links:

HOWTO extract FON firmware archives (.fon)

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 10/10/2007 - 7:17am
Since yesterday I'm trying to extract FON firmware files (ending with .fon) to have a look at the internals of these routers.
Doing this isn't that easy, because it isn't documented anywhere (at least I haven't found useful information about this), so I started at Stefan's Fonera Hacking website and found a script called defon.sh which does basically extract the embedded tar.gz archive out of the fon image file:
tuxx@vi-edv003:~/fonfw$ ./defon.sh fonera_0.7.1.5.fon >fonera.tar.gz
Upgrade contains a new firmware
tuxx@vi-edv003:~/fonfw$
After "defoning" the .fon file, you'll get a file called "fonera.tar.gz" which can now easily be extracted:
tuxx@vi-edv003:~/fonfw$ tar xzf fonera.tar.gz
tuxx@vi-edv003:~/fonfw$ ls
defon.sh  fonera.tar.gz  fonera_0.7.1.5.fon  hotfix  rootfs.squashfs  upgrade
tuxx@vi-edv003:~/fonfw$
As you can see, a file called "rootfs.squashfs" got extracted. All my attempts to either `mount` it or `unsquashfs` it failed, but after a lot of googling, I found this site which talks about different ways of extracting specific squashfs files and the last mentioned method with the help of the Firmware Modification Kit finally worked!
At first, you'll have to download the firmware modkit archive and extract it:
tuxx@vi-edv003:~/fonfw$ wget -q http://download.berlios.de/firmwaremodkit/firmware_mod_tools_prebuilt.tar.gz
tuxx@vi-edv003:~/fonfw$ mkdir firmware_mod_tools
tuxx@vi-edv003:~/fonfw$ tar -x -C firmware_mod_tools -f firmware_mod_tools_prebuilt.tar.gz
tuxx@vi-edv003:~/fonfw$
Now you can use the script "unsquashfs-lzma" for SquashFS v3.0 filesystems to finally extract the archive:
tuxx@vi-edv003:~/fonfw$ firmware_mod_tools/src/squashfs-3.0/unsquashfs-lzma rootfs.squashfs
Reading a different endian SQUASHFS filesystem on rootfs.squashfs

created 330 files
created 53 directories
created 145 symlinks
created 0 devices
created 0 fifos
tuxx@vi-edv003:~/fonfw$
The generated directory "squashfs-root" now contains the contents of the FON firmware:
tuxx@vi-edv003:~/fonfw$ ls squashfs-root/
bin  dev  etc  jffs  lib  mnt  proc  rom  sbin  sys  tmp  usr  var  www
tuxx@vi-edv003:~/fonfw$

Happy hacking ;)

Once upon a time...

[www.tuxx-home.at] - Website of Alexander Griesser - Tue, 02/10/2007 - 11:47am
... a friend of mine (no no, it's not me, how could you think that??) decided to clean up his harddisks a bit to free some space for important things (like Battlefield installations, Movies, etc.). As I (ehm, my friend) had already setup a triple boot on his notebook (Windows XP, Windows Vista and Debian 4.0) and is currently into migrating all compatible stuff from XP to Vista, the XP installation contained several programs, files, etc. that were already on the Vista installation.
The current partition layout looked like this:
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        4741    35841928+   7  HPFS/NTFS
/dev/sda2            4742        8858    31122432    7  HPFS/NTFS
/dev/sda3            8858       12733    29295000   83  Linux
/dev/sda4           12733       12921     1423280   82  Linux swap / Solaris

Where sda1 contains Windows XP and sda2 hosts Windows Vista.

After going through all the files on the XP partition and freeing up about 6 GiBs of unnecessary data, he ended up in deleting a folder called "C:\Boot" he never created. Of course, my friend is an IT-Pro and therefore always deletes file with Shift-delete. The odd thing was, that the folder won't let delete some of its contents and that made him think about what he might have done now.
After rebooting into Vista for doing further cleanups, there was no more bootmanager active. Doh! Ah, that's what this folder is used for, he thought.
Don't worry, Vista is famous for its glorious repair options and thefore he inserted the Vista DVD and tried out the automatic repair options. After choosing the language, keyboard layout and mother's maiden name a dialog window popped up with the following content:
Hey, Looser!
After having a look at your hard disks I, the glorious Vista Repair program found
out that you dumbass killed your C:\boot folder.
I need to laugh at you, this make take several minutes...

Alright, I had my fun.
Shall I fix things up for you?

[ Yes ]    [ Yes, Please ]     [ I don't know... Can you repeat the question? ]

Things seemed to went fine from now on, because after a few seconds, the system rebooted and the Vista Bootmanager loaded again.

Alright, he thought, but where's the good-old grub?
Vista's Bootmanager has never been installed to the MBR, but now, after "fixing things up", it is. That of course killed grub and therefore he had to reinstall it somehow.
Rebooting with grml and entering the following commands should work:
# grub
grub> root (hd0,2)
grub> setup (hd0)
[...]
grub>quit
# reboot

Well, no joy, afterwards the MBR seemd to be completely fucked up, because neither Vista's BCD nor Grub was installed into the MBR, or even worse, both seemed to be installed.
He didn't know wheter the glorious Vista repair program or the reinstallation of grub was the cause for what he discovered now, but someone of these two programs has to be the one to blame because after another reboot with grml, the Windows XP partition wasn't there anymore, at least the filesystem seemed to be correupted. ntfs-3g wasn't able to mount it anymore and the partition table looked quite weird.
Googling with the help of the flying spaghetti monster reveiled a tool called testdisk that should be able to help him out and it did. testdisk was able to rebuild the bootsector of the Windows XP partition and from now on it was accessible again. Phew.
Alright, maybe grml's grub is not really compatible with the installed one he tried to convince him self and started to install grub on a memory stick. That of course isn't that easy if you've never done so, follow some simple rules:
1. Backup all the data on your USB stick
2. Create a new partition table (optional) using `fdisk`, `cfdisk` or the like
3. Format one partition with enough space (some megabytes) with ext2
   mkfs.ext2 /dev/sdb1
4. Mount this partition
   mount /dev/sdb1 /mnt
5. Create the necessary directory structure
   mkdir -p /mnt/boot/grub
6. Copy over grub related files from an existing installation
   cp -a /boot/grub/*stage* /mnt/boot/grub
7. Install grub into the bootrecord of this partition or in the MBR of the stick
   grub-install --root-directory=/mnt /dev/sdb  # or /dev/sdb1
8. Wonder about why grub refuses to install because /dev/sdb has no corresponding 
   BIOS device configured. Unfortunately, I don't remember the original error
   message he told me, but it sounded like this.

   If this happens to you, add the "--recheck" parameter to the `grub-install`
   command and you should be fine.
9. Unmount the partition and reboot with the USB stick in place
   umount /mnt && reboot -f 

If everything worked, you should get a fancy grub boot prompt which lets you do really cool stuff like booting your installed operating systems!!1

Alright, now he booted his installed Linux operating system and tried to reinstall grub from there into the MBR => didn't help either. The next approach was to install grub into the boot record of sda3 ((hd0,2) in grub's terms) and make this partition bootable with `cfdisk`.
Still no joy, but using the previously created "mobile grub" (may come in handy in the future) showed that something must have been succeeded in installing grub to sda3, because the following commands to our "mobile grub" prompt successfully loaded the installed bootmanager on sda3:
grub>rootnoverify (hd1,2)             # has to be hd1 here, because the USB stick is hd0 when booting off of it
grub>chainloader +1
grub>boot

Now he was able to see his well known grub bootloader with all the boot items for Windows, Linux, etc (BTW: directly booting from this entries isn't possible because of the above mentioned device map that changed due to the fact that you're booting off of the USB medium, e.g. menu.lst entries pointing to (hd0,2) have to be rewritten to (hd1,2) in this situation).

Alright, he thought, let's start over and let's insert the Vista DVD again and ask the Vista repair oracle for help. After booting into the Vista setup, the automatic repair option was unable to find any installed Windows installations. WTF?? He opened up a command line window and tried some CLI foo, e.g.:
bootrec.exe /ScanOS

which is able to find my installed Vista but why is the godfather of all repair programs unable to find it? Maybe it is still laughing at my friend and therefore refuses to do its work... Alright, some more CLI foo might help if the GUI is unwilling to:
:\boot\bootsect.exe -NT60 /All
should be the right command to reinstall the BCD bootloader's magic into the MBR => Reboot => Still no joy.
Again, booting the Vista DVD, trying some other things:
bootrec.exe /fixmbr      # completes successfully, but doesn't change a thing

bootrec.exe /fixboot     # refuses to work, because the bootdrive can't be written
                         # to. Thank you, Microsoft. Do you know that when you're 
                         # booting off the CD, the bootdrive is set to the CD and
                         # that piece of plastic isn't writable??
                         # BTW: He found no way to change the bootdrive setting
                         # whatever setting bootrec.exe is looking for...

bootrec.exe /rebuildbcd  # The same as with /fixboot

After some further googling, he tried the Microsoft Knowledgebase Entry 928570:
Bcdedit -createstore C:\boot\BCD
Bcdedit -store C:\boot\BCD -create {bootmgr} /d "Boot Manager"
Bcdedit -store C:\boot\BCD -set {bootmgr} device boot
Bcdedit -store C:\boot\BCD -create /d "Windows Vista" -application osloader

Remember the GUID you have received after entering this command (ID 1 for the
first entry probably isn't secure enough, so a 32 Bytes GUID should be good to 
remember).

Bcdedit -store C:\boot\BCD -set GUID osdevice partition=D:
Bcdedit -store C:\boot\BCD -set {bootmgr} default GUID
Bcdedit -store C:\boot\BCD -set GUID device partition=D:
Bcdedit -store C:\boot\BCD -set GUID path \windows\system32\boot\winload.exe
Bcdedit -store C:\boot\BCD -set GUID systemroot \windows

_THAT_ worked and after rebooting he was greeted by the Vista boot process.
Alright, now he was back at the point where everything started. Now let's do some things different so that we don't fuck up our filesystems anymore.
Back in Vista, he downloaded EasyBCD and tried to add Windows XP back to the bootmanager, but EasyBCD told him that the BCD store wasn't available and that the BCD registry information is corrupt.
Attempts to fix that with the help of EasyBCD didn't work so he installed VistaBootPro (a Microsoft tool) that was even more helpful than EasyBCD. VistaBootPro detected the corrupt BCD registry too but doesn't offer an option to fix this, but he was remembered that he doesn't have a backup of his current BCD. You know, usually I don't backup stuff that is corrupted, but thanks for asking me.

Then he recalled the words of the Vista repair oracle and prepared another sacrificial lamb before asking for assistance again.

Contrary to all expectations, the automatic repair option was now again able to find the Windows Vista installation (Woohoo, maybe it has stopped laughing at my friend and was now open for some new tasks). Same message, same story, it repaired all necessary startup files and back in Vista, all EasyBCD and VistaBootPro error messages where gone. Great.

He then focused in getting Windows XP back into the BCD list and succeeded without any further hickups.

You know, my friend is a so called "prefectionist", and therefore booting the installed Linux off the USB stick isn't "perfect" and has to be changed.
Despite the possibility that everything might now start again and more hours of precious time might be sacrified to fix this problem, he booted back into his installed Debian and tried to reinstall grub into the MBR again.
# dd if=/dev/sda of=/tmp/sda.bin bs=1 count=512     # make a copy of the MBR
# grub
grub> root (hd0,2)
grub> setup (hd0)                                   # install grub again
[...]
grub>quit
# dd if=/dev/sda of=/tmp/sda-new.bin bs=1 count=512 # make another copy of the MBR
# diff /tmp/sda.bin /tmp/sda-new.bin                # compare these two copies to see what has changed
# 
Nothing has changed? Why not?

Hasn't grub been installed into the MBR previously?
Hmm... maybe the shell script `grub-install` does the trick:
# grub-install --recheck /dev/sda
[...]
# dd if=/dev/sda of=/tmp/sda-new.bin bs=1 count=512
# diff /tmp/sda.bin /tmp/sda-new.bin
Binary files /tmp/sda.bin and /tmp/sda-new.bin differ
# 
Ah, great. It at least has changed something. Now let's try another thing and remove all boot flags from our partitions:
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        4741    35841928+   7  HPFS/NTFS
/dev/sda2            4742        8858    31122432    7  HPFS/NTFS
/dev/sda3            8858       12733    29295000   83  Linux
/dev/sda4           12733       12921     1423280   82  Linux swap / Solaris
We don't need it anyway, because grub now should be installed into the MBR and grub then chainloads the bootloader in the first partition.

Keeping the fingers crossed, he rebooted and.... it simply worked.

Probably, if he would have used `grub-install` from the beginning on instead of grub's `setup ()` feature, it wouldn't have come that far but it was funny to watch him bang his head against the desk ;)

Still, some questions remain and I'd appreciate any feedback on this:
  • 1. Why is grub's `setup()` different from `grub-install`? `grub-install` also uses the `setup()` builtin...
  • 2. Why is the Vista repair option unable to find an installed Windows installation if bootrec is able to? What files is it looking for?
  • 3. How to convince `bootrec.exe` to write to the harddisk instead of the DVD medium?
  • 4. Why does nearly all software suck that much?
  • 5. Why is it always me?

New Cisco VPN Client 4.8.01.0640-k9 compiles on 2.6.22 out of the box!

[www.tuxx-home.at] - Website of Alexander Griesser - Mon, 24/09/2007 - 1:26pm
Today I received the brandnew Cisco VPN Client for Linux: v4.8.01.0640-k9. It finally contains all necessary fixes to compile flawlessly on recent kernel versions, so all the patching on the old v4.8.0.0490 isn't necessary anymore.
Additionally, the new version is a so called "biarch" archive, that means although the name of the file contains "x86_64" it is suitable for both, 64bit and 32bit systems.

Have fun giving it a try, below are the download links.

Downloads:

Spam, spam, spam...

[www.tuxx-home.at] - Website of Alexander Griesser - Sun, 19/08/2007 - 8:23pm
Due to the increasing number of spam and "Mail delivery notices" I received in the last few weeks, I had to make the final step to stop this large amount of UCE in my inbox.
The UCEs itself aren't hurting me, Thunderbird is protecting my inbox, _BUT_ you can't prevent spammers from using one of your valid e-mail addresses for their evil purposes. The downside of this is, that you get tons of "Mail delivery failed", etc. messages to your inbox you can't block out with your spamfilter because sometimes you're interested in such messages.

Therefore I made the final step to remove all unnecessary e-mail addresses from my mailserver and left a few of them online (which I of course, won't post here in cleartext). To be sure, send me mail to one of the two addresses on the right side of this blog in the imprint section. I'll definetly try to remove all other prefixes in the next few weeks once I changed all mentions and occurences of them.

Thanks for your understanding.

VMware Tools 6.0.0-45731: vmxnet doesn't compile on 2.6.22, patch available

[www.tuxx-home.at] - Website of Alexander Griesser - Wed, 08/08/2007 - 1:42pm
Today someone sent me an e-mail requesting information on about how to compile the VMware Tools 6.0.0-45731 with linux kernel 2.6.22 headers.
First I tried all modules separately and found out, that - on my system - all of them compiled fine, but vmxnet didn't. The error messages were:

vi-edv003:/tmp/vmtest/vmxnet-only# make
Using 2.6.x kernel build system.
make -C /lib/modules/2.6.22.1/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-2.6.22.1'
  CC [M]  /tmp/vmtest/vmxnet-only/vmxnet.o
/tmp/vmtest/vmxnet-only/vmxnet.c: In function 'vmxnet_tx':
/tmp/vmtest/vmxnet-only/vmxnet.c:1220: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1222: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1223: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1226: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1367: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1368: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1368: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1368: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1368: error: 'struct sk_buff' has no member named 'nh'
/tmp/vmtest/vmxnet-only/vmxnet.c:1445: error: 'struct sk_buff' has no member named 'h'
/tmp/vmtest/vmxnet-only/vmxnet.c:1446: error: 'struct sk_buff' has no member named 'h'
make[2]: *** [/tmp/vmtest/vmxnet-only/vmxnet.o] Error 1
make[1]: *** [_module_/tmp/vmtest/vmxnet-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.22.1'
make: *** [vmxnet.ko] Error 2
vi-edv003:/tmp/vmtest/vmxnet-only#

Well, sk_buff, my good old friend :)
It wasn't very difficult to patch and therefore I'll provide the patch plus an updated tarball for vmxnet here for your convenience:
Downloads:

Installation Instructions
1. Click on the "Install VMware Tools" option in your Virtual Machine

2. Mount the VMware Tools CD
mount /cdrom

3. Copy the tar.gz file to a temporary location and extract it

cp /cdrom/VMwareTools-6.0.0-45731.tar.gz /tmp
cd /tmp
tar xzf VMwareTools-6.0.0-45731.tar.gz

4. Replace the shipped tarballs with the ones you downloaded here
cp /where/you/downloaded/my/tarballs/*.tar /tmp/vmware-tools-distrib/lib/modules/source

5. Install VMware Tools
cd /tmp/vmware-tools-distrib
./vmware-install.pl

After you did that, all modules should compile flawlessly.
If they don't, don't hesitate to contact me.