Building latest e1000 driver against 2.6.10-ssi_3develsmp kernel fails
Isaac Colley <[email protected]>
| Newsgroups | gmane.linux.cluster.ssic.user |
|---|---|
| Message-ID | <[email protected]> |
Hello,
Does anyone know of instructions on how to successfully build the latest
Intel e1000 driver against the Fedora Core 3 2.6.10-ssi_3develsmp kernel
(or any thing else that will work)?
I am trying to PXE boot a node that uses the e1000 NIC drivers.
However, after retrieving and booting initrd, I get an error stating
"Could not find the NIC used to add this node to the cluster". This is
because the e1000 driver (5.5.4-k2-NAPI) with the FC3
2.6.10-ssi_3develsmp kernel does not support my Intel PRO/1000 PL NIC.
I have followed the install document dilligently. An e1000 alias has
been added to /etc/modprobe.conf and I have correctly done a
mkinird/ssi-ksync. In fact, I mounted the initrd in /tftpboot and
verified the lib/e1000.ko module and the 'insmod e1000.ko' line in the
linuxrc script.
Here is my setup:
Distro: Fedora Core 3
Kernel: 2.6.10-ssi_3develsmp
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
glibc-2.3.3
The entry for the NIC in this version of /usr/share/hwdata/pci.ids does
not exist, but in a newer version of hwdata (e.g.
hwdata-0.200-1.fc7.noarch.rpm) would read:
109a 82573L Gigabit Ethernet Controller
8086 109a PRO/1000 PL Network Connection
If I can get the driver compiled, I will hack the hwdata file manually
(because newer hwdata rpms required upgrading glibc).
So, I downloaded and tried to install the newest e1000 driver
(7.6.5-NAPI) from Intel. Using these steps:
rpm -i kernel-ssi-2.6.10-ssi_3devel.src.rpm
rpmbuild -tb e1000-7.6.5.tar.gz (fails)
+ make -C src INSTALL_MOD_PATH=/var/tmp/e1000-7.6.5-root
MANDIR=/usr/share/man install
make: Entering directory `/usr/src/redhat/BUILD/e1000-7.6.5/src'
make -C /lib/modules/2.6.10-ssi_3develsmp/build
SUBDIRS=/usr/src/redhat/BUILD/e1000-7.6.5/src modules
make[1]: Entering directory `/lib/modules/2.6.10-ssi_3develsmp/build'
CC [M] /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.o
In file included from include/linux/module.h:10,
from /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.c:29:
include/linux/sched.h:38:33: cluster/synch_types.h: No such file or
directory
include/linux/sched.h:45:43: cluster/ssi/mosixll/mosixtask.h: No such
file or directory
In file included from include/linux/module.h:10,
from /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.c:29:
include/linux/sched.h:632: error: syntax error before "EVENT_T"
include/linux/sched.h:632: warning: no semicolon at end of struct or union
include/linux/sched.h:654: error: syntax error before ':' token
include/linux/sched.h:749: error: syntax error before '}' token
include/linux/sched.h: In function `process_group':
include/linux/sched.h:753: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `pid_alive':
...
It appears that the errors are coming from within the SSI modified
kernel headers (Maybe some gcc flags that are too strict?).
I tried to "make install" the e1000 drivers manually, and got the same
errors. I even commented out the cluster/synch_types.h
cluster/ssi/mosixll/mosixtask.h include directives in sched.h, but still
got the "warning: no semicolon at end of struct or union" error/warning.
Finally, I tried to compile the module against a vanilla 2.6.10 from
kernel.org and force insmod to load it:
bunzip2 linux-2.6.10.tar.bz2
tar zxf linux-2.6.10.tar
ln -s /root/linux-2.6.10 /usr/src/linux
cd /root/e1000-7.6.5/src
(edit the e1000 Makefile to use the headers in /usr/src/linux first)
make install
(no errors!)
install -D -m 644 e1000.ko
/lib/modules/2.6.10-ssi_3develsmp/kernel/drivers/net/e1000/e1000.ko
mkinitrd --cfs -f /boot/initrd-2.6.10-ssi_3develsmp.img 2.6.10-ssi_3develsmp
ssi-ksync
zcat /tftpboot/initrd > /tmp/initrd.img
mount -o loop /tmp/initrd.img /mnt
cd /mnt
(edit linuxrc to:
insmod e1000.ko --force)
umount /mnt
gzip -9 /tmp/initrd.img
mv /tmp/initrd.img.gz /tftpboot/initrd
(boot the PXE node...
Fails insmod struct_module version mismatch
"Could not find the NIC used to add this node to the cluster")
Sorry for being so painfully detailed, I have run out of ideas on how to
get my NIC recognized. Any suggestions?
Thanks,
Isaac Colley
eSoft, Inc
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/