[TriLUG] Debian install pt3 (soundcard)

Bill Gooding bgood210 at yahoo.com
Mon Jun 9 22:21:12 EDT 2003


Hi,

Since I had posted alot of other stuff on Debian, I
figured I might as
well post my experiences getting my soundcard to work.
 For the record
I have a soundblaster plug and play card (pnp).  I am
not sure that I
would say it was difficult, but there were a few
tricks.  What I did
to solve the problem was to compile a new kernel. 
There are other
ways, I just didn't do them for a variety of reasons
(mostly just
making mistakes or not realizing there was something
else that had to
be done).  In the post, I mention the things I
forgot/should have
known but realized later.  As always, standard
disclaimers apply.
BTW, here are some resources I found in the process of
doing this
work:

http://en.tldp.org/HOWTO/mini/Soundblaster-AWE-3.html
http://www.tux.org/~tbr/sound-debian/

The first thing I did was to get isapnptools package. 
This helps you
setup pnp type boards.  There are 3 basic things to
know about
/etc/isapnp.conf, pnpdump, isapnp (check out the man
pages if you want
more info).  Use pnpdump > test.conf, read test.conf
and uncomment
appropriate lines, insert as /etc/isapnp.conf.  Test
if it works using
isapnp /etc/isapnp.conf.  That part worked fine for
me.

Unfortunately, Debian had installed a kernel called
2.2.20-idepci.
That kernel got all the important stuff to work
(network, monitor,
mouse, keyboard) and that's good.  But it didn't have
a file called
sb.o that I needed for soundblaster.  So I needed to
compile a kernel
to get the system to work.  Compiling a kernel has
always been fairly
simple (except there can be a few tricks).  Now it is
even simpler
than it used to be.  For Debian, do the following (and
rpm based
system probably has analogous commands):

To compile a kernel,

1. apt-get install kernel-source-2.4.20 
2. cd /usr/src 
3. bunzip2 kernel-source-2.4.20.tar.bz2 
4. tar -xvf kernel-source-2.4.20.tar
5. make-kpkg clean 
6. make xconfig 
7. make-kpkg -revision custom.1.0 kernel_image 
8. dpkg --contents 
kernel-image-2.4.20_custom.1.0_i386.deb
9. dpkg -i
/usr/src/kernel-image-2.4.20_custom.1.0_i386.deb

About half of those commands are just untarring the
files and putting them
in /usr/src.  Debian has created a way to automate
many of the steps
in kernel compilation with the make-kpkg command.  It
basically builds
the kernel, and creates a .deb (roughly Debian's
version of an rpm).
You should give a revision string to keep the .deb
file you create
independent if you are compiling the kernel many
different times and
to prevent conflicts with existing kernel in the
Debian package
library.  The 8th step is unnecessary, I just wanted
to make sure the
contents of the package did not overwrite my existing
(failsafe)
kernel.  And it didn't, the Debian make-kpkg works
well.

Now for some tricks, some I knew beforehand others are
just mistakes I
corrected.  For one thing, I did this all as root, and
that probably
isn't the best way.  You can compile the kernel as a
normal user, just
copy the .tar.bz2 into your home directory and do the
steps.  I was
just lazy.  The last step would be the only one you
would have to do
as root.  The make xconfig step is where they ask
questions about what
should be configured/compiled in the kernel.  Overall
it is pretty
easy to navigate through the questions and save your
configuration.
Be careful when making your selections.  For instance,
I thought my
internet would work fine if I just configured the
right internet card
(3com).  Unfortunately, it didn't.  What I found,
after going though
the options more carefully is that I use dhcp to get
my internet
address.  To get the kernel to do this there are some
options in
'network options' that you have to turn on.  I think
it is
CONFIG_PACKET and/or CONFIG_FILTER or something like
that (af_packet.o
maybe).  Once that is done it will work.  So
sometimes, just worrying
about the particular card doesn't solve your problem. 
The other thing
was with the soundcard itself, I couldn't find the
option to enable
soundblaster.  When I went back, I found that the
soundblaster option
was 'greyed out' and you need to select 'OSS modules'
to get it to
give you the soundblaster config.  So bear in mind,
there are some
options that are a little tricky to get right (at
least if you are
being very cavalier and in a hurry about setting your
options as I
was).  The third thing is to watch your lilo
configuration (similar
comments probably apply to grub).  If they ever ask to
overwrite your
/etc/lilo.conf, you can let them do it, but make a
backup copy and
look at the differences.  Also, if you are compiling
kernels and
installing them, I recommend you always run lilo
before you reboot and
test your kernel.  This is just in case you
manipulated your lilo.conf
and didn't notice or forgot about it.  Not running
lilo after
manipulating lilo.conf may leave your system
unbootable.  Also setup
your failsafe kernel within your lilo.conf file.  Here
are some
relevant lines from my lilo.conf, it is not hard to
figure out what it
does in conjunction with the links on /:

 message=/boot/bootmess.txt
        prompt
        single-key
        timeout=100

default=Linux

image=/vmlinuz
        label=Linux
        read-only
#       restricted
        alias=1

image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional
#       restricted
        alias=2

My /vmlinuz.old is the failsafe, /vmlinuz is the new
kernel I would
insert.  Just make sure you configure the timeout, so
it will boot
after 10 seconds or so of inactivity.

The compiling of the 2.4.20 custom kernel is what I
did to make the
system work.  The main drawback of doing something
like this is that
Debian will not update your custom configuration with
new
improvements.  There may be better ways to do all
this, but once I
found the answer I really wasn't too worried about it.
 But I will
continue with the story, since there are other things
I realized
later.

So back where I was before (after the isapnp
configuration), I was
looking to get the sb.o file.  I did this by compiling
the 2.2.20
kernel, and got that file as part of the 2.2.20 kernel
(and a few
others like awe_wave.o, uart401.o).  I manipulated the
/etc/modules.conf file to add these as loadable
modules.  I also added
the module options needed in /etc/modutils/sb.  It
still wouldn't
work.  But I could get it to work if I inserted the
modules manually
using 'insmod' with the proper options.  What I didn't
realize at the
time was that you need to run update-modules, to get
/etc/modutils
options to be used.  I kind of thought that since I
was directly
manipulating files in /etc, that the kernel boot
process would just
use them.  Apparently update-modules is needed to
activate the changes
you make, in this case.

Since I was still having problems, I started thinking.
I thought that
since kernel compilation is so simple, wouldn't it be
nice if Debian
precompiled various kernels for different situations. 
Maybe they
could compile kernels specifically for certain product
lines, and have
something like 'kernel-image-dell_4600' which would
work on a Dell
4600 and detect/install what is necessary for Dell
4600 configuration.
That or symlink those kinds of installation files
(maybe for a 586) to
a name that would help an ordinary user.  So I checked
to see if
Debian had something like this to help me (of course I
have a custom
built system, so I was not very hopeful).  But Debian
appears to have
the beginnings of something like this.  I found a
kernel called
kernel-image-2.4-586tsc.  Don't know what tsc means,
but it looked
good so I tried it.  I looked at the contents of this
image and it had
the files I needed.  It looks like they may have
compiled the image
using the "Maybe" option in the make xconfig.  This
option compiles
each driver needed as a pluggable module.  Since I had
already given
the specs in /etc/modules.conf as described above, I
figured it would
work.  Of course, it didn't since I still hadn't done
the
update-modules.

At this point, I just decided it would be easier to
just get a new
2.4.20 kernel and compile it from scratch.  That
worked and it
completed the soundcard install.  I already described
that above, so
job done.

To summarize, I got the job done by recompiling the
kernel.  The main
disadvantage (and it is a big disadvantage) of this
kind of approach
is that the kernel will not get updated/upgraded with
the latest
patches automatically.  But only the kernel is
affected by this, all
other programs (emacs, mozilla, kde) will upgrade just
fine.  In
retrospect, if I was going to try again, what I would
do is to
download the 586 specific kernel-image referred to
earlier.  It has
all the pluggable modules you need.  Then I would try
to use kudzu
(the RH autodetect tool, which also exists in Debian).
 I actually
tried kudzu early on, but it didn't work.  I assume
this is because I
didn't have an sb.o file for it to look at.  I am
making assumptions
about how kudzu operates, I haven't validated this.  I
think it looks
at your system and installs the drivers if they exist
by modifying the
/etc/modules type files and running update-modules for
the cards that
it finds.  If you have a kernel with the support for
the right driver,
I think it would work.

Ultimately though, if you can't get a card to work
(either in Redhat
or Debian), the last resort would be to recompile the
kernel.  That
way you could tell easily if the card is supported.

The only other thing I need to do is to get mozilla to
work for
streaming video which I haven't done yet.  I just want
one site to
work www.msri.org.  Under "lectures on streaming
video", it has some
good introductory math talks (if you are interested)
that I have seen
using RH and wanted to be able to see.  I could
probably get it to
work fairly easily using real player.  But I actually
was looking at
trying to use xine, which is apparently the open
source (gpl)
alternative.  But now that the soundcard works, it
should be fairly
easy assuming it supports the right protocol.  But any
advice on using
xine and xine with mozilla would be appreciated.

I will say that Redhat does make installation easier
(obviously).  But
I sometimes like to change just to learn new things. 
If I am right
about the proposed kernel procedures with kudzu in
Debian, what I
would say is that there are 3 stages to installing
Debian fully with
all your cards/features supported (soundcard + USB +
any others).  The
first stage installs a minimal system, the second
stage does further
configuration, and the third stage is to get another
(more general)
kernal-image file and use kudzu.  BTW, if you use
Knoppix, you should
not have to worry about any of this.

I assume that if there are any mistakes here the
Debian experts will
correct them.  And please do.


Later,


Bill Gooding





__________________________________
Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
http://calendar.yahoo.com



More information about the TriLUG mailing list