Installation of Ethernet Controller 3C940 on Mandrake 9.2

Last modified: March, 23rd 2005.

The context of this story is the post-installation of a new computer in an academic laboratory. I am just wondering how someone with a single computer (and no Windows installed), with no experience of a Unix-like system, and without any basic knowledge of networking concepts would have done what I successfully achieved and that is described below.

During the installation of Mdk-9.2, I had the feeling that this 3C940 Ethernet Controler device could be a potent source a trouble. For sure, it is not listed in the hardware compatibility list, but who cares about this before installation?

The motherboard (ASUSTEK P4P800 DELUXE) of my computer comes with a CD that contains a linux driver named 3C2000 that should be compatible with the 3C940 device. Great. It just needs to be compiled to produce a 3c2000.o file. The README file says that the kernel sources have to be present on the computer.

The package manager had nothing like kernel-sources to install. I made the OS installation from downloaded ISO files. Going back to a network-connected computer, if found that the sources are available from http://rpmfind.net/linux/RPM/mandrake/9.2/i586/Mandrake/RPMS/. After a lengthy download (40 MB or so) and file transfer by means of an USB key (no network available for the moment...), the package was installed. A make later, the driver object file was build.

I typed insmod 3c2000.o and then ifconfig eth0 x.y.z.t netmask 255.255.255.0 up (as root), the IP number of my machine being x.y.z.t. I was then able to ping on 127.0.0.1 and to x.y.z.t, which is good start. If I wanted to go a bit further, I had first to go through the local gateway. Again, I found on the web that route add default gw x.y.z.254 should do the work, and it really did (The IP of the gateway is x.y.z.254, of course). I was then able to ping to the University DNS server.

Configuration of the DNS server was straighforward by populating the /etc/resolv.conf:
domain my_univ.fr
name server xx.yy.zz.tt
name server xx2.yy2.zz2.tt2

I was not really satisfied because my computer was still anonymous (named localhost by default) and that my preceeding effort are not permanently fixed in the system.

A look to the web (thanks, google !) led me to http://linuxheadquarters.com/howto/networking/networkconfig.shtml and teached me how to fill the /etc/sysconfig/network-scripts/ifcfg-eth0 and /etc/sysconfig/network files, so that all requested network-related information is centralized. I also filled the /etc/hosts file with the IP number and name of my computer.

/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
BROADCAST=x.y.z.255
NETWORK=x.y.z.0
NETMASK=255.255.255.0
IPADDR=x.y.z.t

/etc/sysconfig/network:
NETWORKING=yes
HOSTNAME=my_computer
FORWARD_IPV4=no
GATEWAYDEV=
GATEWAY=x.y.z.254

/etc/hosts:
127.0.0.1 localhost
x.y.z.t my_computer

The auto-configuration at start-up time was achieved by placing 3c2000.o in /lib/modules/kernel_version/kernel/drivers/net, running depmod (as root) and adding alias eth0 3c2000 to /etc/modules.conf. I found that at http://www.commentcamarche.net/forum/affich-466849-comment-activer-eth0-au-demarrage (in French).

So, everything related to web access is now fully functional.


Jean-Marc Nuzillard
jm.nuzillard@univ-reims.fr


Back