Upgrading Debian from stable to testing

Upgrading silver from stable (woody) to testing (sarge) was mostly painless...

I started by using jigdo to download and create the first two sarge CDs from one of the Debian FTP sites. I had to use the unofficial location, as the official location was not available. I assumed this was due to the Debian server compromise that took place shortly before.

After burning the CDs, I used apt-cdrom to update the /etc/apt/source.list file. However, when I tried apt-get dist-upgrade, apt still went out to the Internet. To get around this, temporarily, I commented out all the non-CD lines in the sources.list file. Now apt-get dist-upgrade chugged away, reading from the CDs.

Following the dist-upgrade, the following minor problems had to be dealt with:

Horrible fonts in X

The upgrade had moved the XFree86 X server from 4.0.1 to 4.2.1. I assumed this would cause me no problems, but that was not the case. The fonts in WindowMaker and in Mozilla were now ugly in the extreme. The Files section the /etc/X11/XF86Config-4 file were as follows, originally written by the debian xserver-xfree86 installer.

Section "Files"
    FontPath         "unix/:7100"
    FontPath         "/usr/lib/X11/fonts/Type1"
    FontPath         "/usr/lib/X11/fonts/CID"
    FontPath         "/usr/lib/X11/fonts/Speedo"
    FontPath         "/usr/lib/X11/fonts/100dpi"
    FontPath         "/usr/lib/X11/fonts/75dpi"
    FontPath         "/usr/lib/X11/fonts/misc"
EndSection

At first I suspected xfs, the X font server, but commenting out that line in the XF86Config-4 file made no difference. I then added :unscaled to the misc, 100dpi and 75dpi font lines, also without effect. Finally, I reordered the font lines, moving the Type1 font line to after the 75dpi and 100dpi lines, like so:

Section "Files"
#   FontPath         "unix/:7100"
    FontPath         "/usr/lib/X11/fonts/CID
    FontPath         "/usr/lib/X11/fonts/Speedo"
    FontPath         "/usr/lib/X11/fonts/75dpi/:unscaled"
    FontPath         "/usr/lib/X11/fonts/100dpi/:unscaled"
    FontPath         "/usr/lib/X11/fonts/misc/:unscaled"
    FontPath         "/usr/lib/X11/fonts/75dpi/"
    FontPath         "/usr/lib/X11/fonts/100dpi/"
    FontPath         "/usr/lib/X11/fonts/misc/"
    FontPath         "/usr/lib/X11/fonts/Type1"
EndSection

This did the trick; fonts were back to normal. I need to find out if this simple re-ordering works when the font server is used.

Compiling the 2.4.18 kernel

At boot time, I had been seeing the message

Unable to load module char-major-10-135

Information on the Internet indicated this was related to the absence of the RealTime Clock (rtc) support in the kernel. On checking my kernel config, I found that I had omitted to select this option (it's tucked away under "Character Devices"). I saved the config, issued the make-kpkg clean command, then:

fakeroot make-kpkg --revision=silver.1.3 --append-to-version "-2" kernel-image

However, this died with compile problems in asm/checksum.h, included by ksyms.c. I guessed this was caused by the gcc 3.33 compiler that came with testing, and a google search confirmed this supposition (and also gave me a work around):

MAKEFLAGS="CC=gcc-2.95" fakeroot make-kpkg ...

This ensured the kernel compile, and a boot proved that the char-major-10-135 errors had gone away.

However, a side effect of this solution was that modules needed to be compiled with the same compiler as the kernel (e.g. nvidia and the emu10k1 driver). I therefore decided to upgrade to one of the newer kernels that came with testing, on the assumption that the source would have been corrected for the new compiler.

I extracted kernel-source-2.4.21 from the testing CDs. Once unpacked, I copied the 2.4.18 .config file to the source directory, used menu xconfig to load it and then saved it straight away. The kernel compiled cleanly, and booted, but the USB mouse failed to work. Damn, now what? It turns out, there are a couple of new USB options with the 2.4.21 kernel, which will, of course, not be set if you copy across an old .config file. With this corrected, the next kernel did enable the the USB mouse to function correctly.