Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I have a ASUS A8V-XE motherboard with built in 100 MHz network interface. I am running Slackware 11.0, kernel 2.4.33.3. I have a driver on the mfgr CD, called rhinefet.o but I cannot figure out how to make it work.
I installed the kernel source and ran "make config" and "make dep" in order to satisfy the rhinefet makefile, and I was able to compile the driver and get the rhinefet.o file as the instructions described and I copied it to the /lib/modules/... directory. But when I attempt to use it, when I run a "insmod rhinefet" I get > 50 unresolved reference error messages. Can anyone tell me what I'm missing?
I contacted ASUS regarding the 100MHz on-board NIC problem and got a detailed explanation of use under Windoz; they completely ignored the part about the fact of Linux. They seem to have no support for Linux at all. Granted, the mobo was cheap, so I should not expect much and that's what I got.
Try modprobe rhinefet. As well you can run strace insmod full_path_to_rhinefet_module or strace modprobe rhinefet to check what is causing those missing references.
Last edited by Alien_Hominid; 12-16-2007 at 05:54 PM.
Try modprobe rhinefet. As well you can run strace insmod full_path_to_rhinefet_module or strace modprobe rhinefet to check what is causing those missing references.
I am not familiar with these routines. Modprobe returns "Can't locate module rhinefet" although it is in the /lib/modules/.../net/ dir.
Strace insmod ... gives me a gob of info, I cannot interpret. What am I looking for? Or, is there a step I've missed in installation so modprobe needs something? And thanks for the help.
Perhaps you could try using slackware 12? The newer 2.6 kernel might have an updated driver that works.
I do not find this kind of advice helpful. The fact that it "might" have another driver means you have no idea and are simply talking for the sensation of it. You are sending me on a "wild goose hunt." I would prefer if you only gave advice to me when you are sure of something. Don't take this the wrong way, I promise I will not give you advice unless I know the topic well.
I've thought about it and maybe you need to rename your .o file into .ko (kernel object). Maybe that's why modprobe can't find it.
It's worth a try. The instructions say that is necessary for 2.6, whereas I am running 2.4 but it is easy to try and harmless if wrong. I've been going through the driver code looking for the unresolved refs and they seem to be external, in the kernal I suppose. I'll look in the kernel nm list next.
It's worth a try. The instructions say that is necessary for 2.6, whereas I am running 2.4 but it is easy to try and harmless if wrong. I've been going through the driver code looking for the unresolved refs and they seem to be external, in the kernal I suppose. I'll look in the kernel nm list next.
Okay, I am finding the refs in System.map-ide-2.4.33.3.
The way they are listed has a suffix, e.g. proc_net_Rsmp_8ce6be10 whereas the namelist entry is:
c03a0888 B proc_list
but the refs are in the kernel. So, whatever I am doing wrong is in the linking to the lib thingy, whatever that is. I am not clear on how these dynamic libs work so I don't know where the prob is but that seems to be the vacinity.
A few drivers will need System.map to resolve symbols (since they're linked against the kernel headers instead of, say, glibc). They will not work correctly without the System.map created for the particular kernel you're currently running. This is NOT the same thing as a module not loading because of a kernel version mismatch. That has to do with the kernel version, not the kernel symbol table which changes between kernels of the same version!
A few drivers will need System.map to resolve symbols (since they're linked against the kernel headers instead of, say, glibc). They will not work correctly without the System.map created for the particular kernel you're currently running. This is NOT the same thing as a module not loading because of a kernel version mismatch. That has to do with the kernel version, not the kernel symbol table which changes between kernels of the same version!
How is the System.map used? Is it read during make of the driver or is it used when you try to insmod? I see what you mean, the linkages move around depending on the particular make but I'm going to have to find the System.map for the bare.i kernel the I am running.
The system map for the default Slackware kernel is placed in /boot, but new one is created each time you compile a kernel. I think it is left in /usr/src/linux if you don't do make install (not recommended). I think it's used at both times, but I'm not 100% sure.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.