Yesterday I migrated to the Linux kernel 2.6.0. I wanted to relate some of the hiccups that I faced in doing so.
I was motivated initially by the fact that my audio drivers skip regularly. I have a cheap C-Media soundcard, and the OSS drivers for it apparently suck. Moreover, I suddenly found that I had a use for the fact that the card has a rear-output jack. I built a small FM radio transmitter recently, and I’d like to be able to adjust the output (and output volume) for the transmitter separately from the regular speakers. Fortunately, the ALSA driver for this card doesn’t skip, and can handle the rear output somewhat. Unfortunately, at this time, it doesn’t do everything I want; I can play seperate audio on the rear output, with no volume control, or I can play the same audio on both front and rear with the volume the same, but I can’t play the same signal on both channels with independent volume.
So, I could have switched to ALSA without swtiching to 2.6.0, but the fact that ALSA is a stock feature of 2.6 was a motivating factor to switch, and get all the scheduler and IO improvements also.
Here were the issues I faced with the migration to Linux 2.6.0:
- ESD and ALSA
I’d used ALSA before, but I always found it to be a pain in the butt, partly because it’s more complicated than OSS, but largely because it’s a pain to have to update external drivers everytime I update the kernel, and ALSA drivers have historically tracked the kernel closely; requiring new downloads for each kernel. Now that ALSA is included in the kernel, this is a non-issue.
But I still wanted XMMS to work, including the volume control. It was easy enough with Debian to install the ALSA version of ESD, but the volume control still didn’t work. After some gnashing of teeth, I determined that loading the snd_mixer_oss kernel module did the trick.
As noted above, I’ve done some wrestling with ALSA mixers and the CMIPCI driver already. It does some of what I want, but not eveything. Sigh. I can accept it, or fix it.
- HostAP drivers
I needed to get fresh HostAP drivers which is one of the few things that I needed that isn’t included in the kernel by default. This turned out to be almost painless. Historically HostAP hasn’t needed to be updated; when I went through the 2.4 series kernel, I just needed to recompile HostAP, but the code was the same. Well, the 2.4 HostAP code doesn’t work with kernel 2.6, but it was still pretty painless to go get it.
- Devfs is now deprecated?!
I just got done switching to devfs within the last month. Now I find that it’s deprecated in favor of udev. I spent the greater part of Saturday wringing my hands, reading about udev, and muttering under my breath. Apparently there aren’t released Debian packages for udev at this time. Eventually, I just sighed and enabled devfs, which is working for me.
I might have considered udev harder if I wasn’t using LVM for everything but my boot partition, and I switched to devfs and LVM at the same time, so I don’t know how to set up the device files for LVM.
Someday I’ll switch to udev. Not today.
- LVM version
I needed to have LVM2 installed (as opposed to LVM1). I didn’t discover this until too late. Wasn’t too hard to fix; just rebooted back to 2.4.23, and installed via apt-get. I wasn’t too sure about LVM2 and LVM1 coexisting, but it’s no problem.
- Trouble with framebuffer devices
This wasn’t a linux 2.6 problem probably. I hadn’t ever used framebuffer devices in 2.4 (or 2.3 or 2.2) on this machine either. I have used framebuffer devices on other machines (my wife’s laptop, of late), and liked it. So I thought I’d use framebuffer for the console. However I configured it, this didn’t work – nothing was displayed when lilo finished loading the kernel. Maybe it was loading and I couldn’t see anything, or maybe it locked up. I don’t know. Don’t care that much, either. I don’t really need Framebuffer devices, since I mainly use X.
Bottom line, it wasn’t very painful to switch. It does seem snappier. I read this comment in many other people’s migration stories, and I thought it was silly; are you really going to tell the difference on a dual 1.1 GHz system?
Well, as it turns out, yes. It’s noticable. (Or maybe that’s just placebo effect. I dunno; maybe I like my placebo.)