wrapmargin=7 :-)
On Sun, 1 Oct 2000, Jay Strauss wrote:
> I have a netgear FA311. I don't think I have a monolithic kernel (not sure, I'm
> using RH6.2 out of box).
>
> I downloaded the driver and associated header files for the driver, but as usual
> it didn't work. After I complied the driver (according to directions) when I do
> a "depmod -a" the driver has "unresolved symbols".
yes, that's the sound you hear when a (dependent) module is expecting foo.o
to load but foo.o didn't load correctly. it's also the sound you hear when
conf.modules is broken or if a boot didn't proceed correctly.
> I can't believe that linux just brute forces configuring a NIC by trying all the
> drivers in /lib/..../net directory, but I think your right, cause I get the same
> error "unresolved symbols" during boot.
>
> How do I go about figuring this out?
> (c) 312.617.0264
312 -- is that chicago?
firstly, yes, that is the way linux is set up __by the distributions__.
why in the world would they do such a thing? if you think about it, it
makes perfect sense. on windows, you have like 20 install disks. one for
each piece of hardware you own.
nobody provides install disks for linux, so it's up to the distributions to
support the hardware. not the hardware vendor!
so how do you support the 5E200 brands of NIC's for an OS that gets zero
support from the hardware vendors?
and chew on this:
4 out 5 NIC's use the same code for modules. in many, nay, most cases, the
module for brand A of NIC differs from brand B by less than 5 lines of code.
diff brandA.c brandB.c
1
< #define IO_BASE 0x300
--
> #define IO_BASE 0x230
2
> #define IO_EXTENT 0x60
--
< #define IO_EXTENT 0x58
and the rest of the module is pretty much the same.
take all this info, mix it together, bake at 400 for 10 minutes, and you'll
get the conclusion -- write generalized modules which can handle a class of
NIC and try them all. which is not the most aesthetical way of doing
things, but it works well for the ingredients i listed above.
of course, what you really ought to do after you install linux is to
recompile the kernel and add support only for the one card you own. makes
things smaller, faster and more streamlined.
for pesky unresolved symbols that i can't fix, a kernel compile is the thing
that makes life good again.
personally, i take a pretty radical step and do:
mv /lib/modules/2.2.17 /lib/modules/old-2.2.17
most people don't do this, but it's always worked great for me.
as far as the unresolved symbols, look at /var/log/messages and dmesg and
try to see who is causing them.
pete
> ----- Original Message -----
> From: "Peter Jay Salzman" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, October 01, 2000 1:42 PM
> Subject: Re: [vox-tech] NIC cards and Autodetection
>
>
> > On Sun, 1 Oct 2000, Jay Strauss wrote:
> >
> > > Why are some cards autodetected (i.e when performing "checking for new
> hardware"
> > > during boot) and some are not?
> >
> > this is a window-ism, btw.
> >
> > what you're asking is related to /etc/conf.modules and how a system tries
> > different modules till one 'works'.
> >
> > most hardware has a 'call and send' pattern. you write at a particular
> > point in memory, and the card will say something back to you.
> >
> > linux has no registry, so installing and taking out hardware is really no
> > big deal. it's all part of the bootup.
> >
> > anyway, linux will try a bunch of NIC modules till one works. if your
> > particular NIC is not one of the ones which are tried at boot time, then
> > your card will not be autodetected.
> >
> > also, see below.
> >
> > > If you have 2 cards, each a different brand. Will only one be autodetected?
> >
> > yes. there's a reason for this, but i don't remember what it is.
> >
> > > How would I make a card be auto detected?
> >
> > now if you have to make a card be auto detected, it wouldn't be auto
> > detected, now would it? ;)
> >
> > i think you mean "how do i configure my card automatically on boot".
> >
> > i usually build a kernel with the NIC module built in (ie- no module).
> > another way is to modify a start-up script like rc.boot and say something
> > like
> >
> > modprobe -a mynic
> >
> > which takes care of the module dependencies. the other way
> >
> > insmod mynic
> >
> > doesn't.
> >
> >
> > pete