Sound and Recompiling the Kernel

The next thing to fix was sound: I was getting overly loud beeps, and that's about it.

Some messages on the linux-dell-laptops mailing list suggested using the i810_audio module. When I did a modprobe i810_audio, some things worked (the beeps got more pleasant), but not everything (I still didn't get sound in Tux Racer). Rather than figure out how to get it all to work using modules, I decided to recompile the kernel; it was something I felt like doing eventually anyways, just so I'd know what was in it. But if you're just interested in getting sound to work, see below.

Also, NTFS wasn't supported in my kernel, so I needed to recompile to put that in so I could read Windows XP files.

My general philosophy was to put stuff in modules whenever possible. Kernel modules didn't exist the last time I played around with Unix much; they seem like a really good idea to me.

I went a bit overboard with this at first, however. Modules are files; so the parts of the kernel necessary to read those files can't be modules, obviously. I was sensible enough to compile my filesystem type into the kernel (though actually I could have just compiled in ext2 and left ext3 as a module, I think), but at first I compiled some lower-level disk drivers as modules. Oops. Fortunately, I got all that fixed; now sound works, NTFS works (read-only, at this time writing is somewhat experimental: Microsoft apparently doesn't release the specifications for its file system!), and my kernel is about 2/3 the size it was before. Whee.

After recompiling the kernel, I had to recompile and reinstall the video driver as well.

Here's my .config file.

Eventually, I got sound to mostly work using modules: I compiled sound as a module, and put the lines

alias sound-system-0 i810_audio
alias char-major-14 i810_audio

in /etc/modules.conf. After this, sound didn't quite work right when I first booted the machine (beeps were overly loud), but it worked fine as soon as I started X, and probably would have worked well if I used any program that required more sophisticated sound support than just a beep.

That's a pretty good option, and one I recommend to people who don't want to compile the kernel. (Though I won't guarantee that it will work for other people: I haven't tested this on a stock Red Hat kernel.) But it's not perfect. To get it to work right, I'd need to find a way to get i810_audio to always be loaded; but trying to go out of my to do that via modules seems perverse, since it might as well just be compiled into the kernel in that situation. So I ended up switching back to having sound be compiled in rather than a module.

I still won't guarantee that everything about sound is working perfectly: frankly, I haven't pushed it all that hard. But it seems to work well enough for everyday use; this includes listening to baseball games, as well as other applications that do more than just beep.


david carlton <carlton@math.stanford.edu>

Last modified: Mon Jul 8 16:23:23 PDT 2002