Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a server running Debian 6. My motherboard has two interfaces, eth0 and eth1. Debian does not have a driver for eth1 (e1000e), so I installed the driver provided by Intel (e1000e-1.4.4). After compiling it into the kernel, I used rmmod e1000e; modprobe e1000e to remove the old module and install the new one. Then I configured the IP using ifconfig eth1 IP. Everything works fine now. Port works. I made sure to edit /etc/network/interfaces so it picks up eth1 on boot up, HOWEVER, when I reboot the system it does not find/recognize the eth1 device. It appears the module has not been loaded. I can get it working again once I execute rmmod e1000e; modprobe e1000e; ifconfig eth1 IP. My guess is I need to config modprobe so it loads the module on boot up. Any help? Thanks!

share|improve this question
add comment

2 Answers

up vote 1 down vote accepted

It sounds as though the initrd has the old e1000e driver and it's getting loaded during initrd. Try rebuilding the initrd and it should pick up the newly-installed version.

Since you're on debian, the command: sudo update-initramfs -u -k all should do the trick.

share|improve this answer
    
How would I go about rebuilding it? Is it complex? I am not that experienced with Linux. –  Aco Jul 24 '11 at 22:39
    
Added command to the answer body –  MikeyB Jul 25 '11 at 2:45
    
I' sorry, I'm not very experienced with Linux. How do I add command to the answer body? –  Aco Jul 25 '11 at 18:22
    
Nono - I added the command you need to run to my answer. –  MikeyB Jul 25 '11 at 18:23
    
Ah got it. Thanks. –  Aco Jul 25 '11 at 18:24
show 1 more comment

The most primitive and IMO easy way to do what you want is by adding:

ifdown eth1; modprobe -r e1000e; modprobe e1000e; ifup eth1

into /etc/rc.local. This will do the job, but it will be after all services are up. However, the e1000e module is supposed to be in the kernel, so it should be loaded by default. An alternative method is to add:

e1000e 

in /etc/modules. Check this thread which was among the first in my search results for Debian 6 and e1000e. I suggest to find out why the kernel does not upload the e1000e module.

share|improve this answer
    
I looked at those pages before but they do not provide me with a solution. Adding e1000e to /etc/modules didn't work either. Also, using the first command you suggested doesn't work either because it tells me that there is no such device when it executes the first part of the command (ifdown eth1). I mentioned this in my original post. –  Aco Jul 24 '11 at 21:46
    
Adding "alias eth1 e1000e" to either /etc/modprobe.d/alias.conf or /etc/modprobe.d/eth1.conf and rebooting the system does not work. I would prefer a solid fix for this to get it properly working on boot, like it should. –  Aco Jul 24 '11 at 22:25
    
Just adjust it for your needs then - modprobe -r e1000e; modprobe e1000e; ifup eth1 would match what you do manually. Since you run rmmod, does this means the module is actually loaded? What lsmod | grep e1000 says? –  grs Jul 24 '11 at 22:25
    
I would like to point out that I am not a very experienced with Linux. There are some things I do not understand or know how to do. When I run lsmod | grep e1000 I get e1000e 110063 0 and I only see eth0 when executing ifconfig. –  Aco Jul 24 '11 at 22:35
    
No worries :) The result of lsmod shows that actually the e1000e module is loaded. Is this result immediately after reboot when your eth1 is unavailable or is after your rmmod-modprobe actions? Could you please verify the first case - lsmod after reboot? –  grs Jul 24 '11 at 22:40
show 4 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.