After sitting confused and bewildered as my free Debian cover disk CD asked an apparently never ending series of questions I have finally managed to successfully load it onto a spare disk to try out in my PC. Being very much a Linux newbie and feeling proud and confident after this mammoth achievement I thought I would try installing a network card by hand so I could start to learn a little more about how Linux is configured and works behind the scenes. I eagerly took my PC case apart and excitedly inserted an ancient SMC-Ultra 16 card, then, looking at my notes, saw they said I should login as root, change into the /lib/modules/"kernel version"/net directory, check the file "smc-ultra.o" exists, then issue the command:
insmod ./smc-ultra.o
before adding "smc-ultra" to /etc/modules, inserting some entries into /etc/network/interfaces and restarting /etc/init.d/networking. However, when I tried the above insmod command I got four error messages:
./smc-ultra.o: unresolved symbol ei_open ./smc-ultra.o: unresolved symbol ethdev_init ./smc-ultra.o: unresolved symbol ei_interrupt ./smc-ultra.o: unresolved symbol NS8390_int
My notes, nor my little Debian text book, do not explain these errors, though flicking through other parts of the book I can see hinted after a similar error message that it may be due to "missing libraries". This would not surprise me as it is my first installation of Debian and it is highly likely that I omitted to install something I should have installed. I therefore have a series of questions, as, if I continue to experiment by trying things out by hand (rather than using any easy graphical tools) I think this may be a common problem I will come across.
Am I correct in thinking that these errors are due to a "missing library"?
If so then how do I determine the name of the library that is missing?
Once I know it's name then how do I know where to look for it / discover what package it is included in so I can install it?
Finally, if the program I wanted to install was a bit more obscure than a simple network card driver, so it was not supplied on the installation CD, where would be the best place to search on the internet for "libraries"?
Sorry if these questions seem a bit stupid to you guys with experience but I guess you were newbies too yourselves many years ago, so please have patience.
Ian.
On Tue, Dec 04, 2001 at 11:38:21PM -0000, Ian Douglas wrote:
After sitting confused and bewildered as my free Debian cover disk CD asked an apparently never ending series of questions I have finally managed to successfully load it onto a spare disk to try out in my PC. Being very much a Linux newbie and feeling proud and confident after this mammoth achievement I thought I would try installing a network card by hand so I could start to learn a little more about how Linux is configured and works behind the scenes. I eagerly took my PC case apart and excitedly inserted an ancient SMC-Ultra 16 card, then, looking at my notes, saw they said I should login as root, change into the /lib/modules/"kernel version"/net directory, check the file "smc-ultra.o" exists, then issue the command:
insmod ./smc-ultra.o
before adding "smc-ultra" to /etc/modules, inserting some entries into /etc/network/interfaces and restarting /etc/init.d/networking. However, when I tried the above insmod command I got four error messages:
./smc-ultra.o: unresolved symbol ei_open ./smc-ultra.o: unresolved symbol ethdev_init ./smc-ultra.o: unresolved symbol ei_interrupt ./smc-ultra.o: unresolved symbol NS8390_int
You want "modprobe smc-ultra", which will look in the right /lib/modules directory and also load any other modules that smc-ultra depends on (which I guess will include 8390.o or similar).
J.
On Tue, 04 Dec 2001 23:38:21 Ian Douglas wrote:
insmod ./smc-ultra.o
before adding "smc-ultra" to /etc/modules, inserting some entries into /etc/network/interfaces and restarting
/etc/init.d/networking.
However, when I tried the above insmod command I got four error messages:
./smc-ultra.o: unresolved symbol ei_open ./smc-ultra.o: unresolved symbol ethdev_init ./smc-ultra.o: unresolved symbol ei_interrupt ./smc-ultra.o: unresolved symbol NS8390_int
What is happenning here is that the smc specific driver module is using some code from another module, so as avoid including the same code twice, but the other module isn't in the kernel at the time you try to load the smc module.
The easiest way round this to use modprobe instead of insmod because modprobe works out which other modules are required and loads them too, as well as the module you tell it to.
Steve.