Can't load network driver after kernel upgrade
I upgraded my kernel from 2.4.18-8 to 2.4.32. I have a Mandrake MultiNetwork firewall (RPM-based system) and my new kernel is source from kernel.org
OK well I did have some trouble with getting the kernel up and running, but now it seems to load and run OK except for two things.
The main problem I have is I can't get my network drivers to load. The chip is BroadCom NetXtreme Gigabit ethernet (there are 2, eth0 and eth1). I have downloaded the source (.tar.gz) from broadcom's website. This worked well for 2.4.18, but under the new kernel it won't run.
Here's a run-down of what I did
0. boot into new kernel and log on as root
1. untar the source file
2. cd into the directory (bcm5700-ver)
3. run make (response: Make: Nothing to do for "all")
4. run make install (response: about 10 "Unresolved Symbol" errors) in bcm5700.o
5. modprobe bcm5700 (response: unresolved symbols)
Second problem: When booting, DHCPD says [FAILED] -- could this be because eth0 and eth1 are not initialised?
What am I doing wrong? thanks for any help!!
First please review the instruction (the Readme or Install files for example) the source code may have been meant for older kernel sources then 2.4.32. You may not even need the downloaded code, did you even check during the configuration???
The unresolved symbols is an indication that something is not right with the module or something within the complied kernel is missing. So it would be a good idea to check your kernel configuration after reviewing the documentation for the downloaded source.
And yes with no active ethernet device(s) then DHCPD will fail.
Hi Lenard, thanks for replying.
Well, I read the README that came with the driver, and it says:
The current version of the driver has been tested on the latest Red Hat, SuSE,
and other Linux distributions for i386, ia64, and x86_64 CPU architectures
using 2.4.x and 2.6.x kernels. The driver has been tested up to kernel
version 2.4.31 and 2.6.12.
The driver should work on other little endian or big endian CPU architectures,
but only very limited testing has been done on some of these machines. The
Makefile may have to be modified to include architecture specific compile
switches, and some minor changes in the source files may also be required.
On these machines, patching the driver into the kernel is recommended (see
below for instructions)."
I assumed that meant that it would work on my kernel 2.4.32, I didn't understand the second paragraph too much but since my machine is a Intel Xeon processor that can run ix86 packages, I assumed the first paragraph applied.
During the configuration (I assume you mean configuration of the kernel), I selected to install most of the ethernet drivers. I thought that the tg3 driver was Broadcom, so I tried that driver and it didn't work either. Doing "modprobe" any other driver results in an error message like "Device busy or not found" (I don't remember the wording of the error).
When I was compiling the kernel I had to remove support for cryptography and also "Memory Technology Device" support because otherwise I couldn't get the "modules_install" to work. These are the only two things I consciously removed.
I am a kernel newbie here, so maybe my kernel is buggered up... I didn't really know what I was doing, I followed a HOWTO http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html that seemed to work OK.... and I used "make oldconfig" if that matters...
Should I re-compile the kernel again? Did I screw something up? thanks!
Yes re-compile the kernel, your current 2.4.32 kernel configuration may be ok with one exception.
Check the Network Device Support-->Ethernet (1000Mbit) and select to build the Broadcom Tigon3 Support (Y or M)
I also checked the Broadcom site and it seems they have a newer version of the driver available (tg3-3.43f.tar.gz) from the README.TXT file;
The current version of the driver has been tested on 2.4.x kernels starting
from 2.4.24 and all 2.6.x kernels. The driver may not compile on kernels
older than 2.4.24. Testing is concentrated on i386 and x86_64 architectures.
Only limited testing has been done on some other architectures.
Standard Disclaimers Apply
Hi Lenard, thanks for your reply.
I did enable the tg3 driver as a module (I double checked this) since it said Broadcom, I thought it might be relevant. Acutally I enabled practically all of the drivers listed, and I can see them all present in my kernel/drivers/net directory. As stated in my second post, it gives an error message when I try it and I now have the exact wording of the error message:
"# modprobe tg3
/lib/modules/2.4.32-0/kernel/drivers/net/tg3.o: init_module: No such device
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
modprobe: insmod /lib/modules/2.4.32-0/kernel/drivers/net/tg3.o failed
modprobe: insmod tg3.o failed"
I have revisited Broadcom's site - turns out I did download this newer version when I was there the other day, but I accidentally installed the wrong one (bcm5700 - the were in the same directory)
This file had two drivers, a .src.rpm file and a .tgz driver. I first tried the tgz version but I got some fatal make errors (along the lines of <variable> may be used without being initialised)
So i then tried the .src.rpm one - rpm -ivh tg3-3.43f-1.src.rpm and it said it installed successfully.
However, I still receive the above error about "no such device"
Please help, I need to get this working because the system is too unstable with 2.4.18 kernel (crashes all the time with known OSB serverworks bug), thanks!!!
can anyone help me with this? "no such device"
If you installed the src.rpm file, then did you build the module afterwards???
I typed this:
rpm -ivh tg3-3.43f-1.src.rpm
Is that not the right way to do it?
Yes this is the correct way, but after that you need to go to where the files were expanded to and build the binary. All you have done was install the source, with Red Hat based systems it would be /usr/src/redhat/SPECS. I suspect Mandrake has something simular.
You are correct, I have the file /usr/src/RPM/SPECS/tg3.spec
And I just found the installation instructions, I can't run it until after we close tonight; but I will try and post back the results.
OK... I tried it and had the same problems as I did with (tar source).
Error messages follow:
|All times are GMT -5. The time now is 07:40 AM.|