在新版本的Linux下, 已经包含了e1000e网卡的驱动, 所以驱动本身已经不在称为问题,但一个很奇怪的现象, 在于这个网卡在DHCP环境中, 无法获得IP地址。但这个网卡采用static ip又是可以工作的。
     我们可以依次检查如下
     1, lspci可以看到系统的网卡类型。
     2,检查lsmod或者kernel, 可以发现相应的e1000e模块已经安装。
     3,通过ifconfig可以观察到对应的网卡状态/信息,除了没有ip address,别的都起来了。
     4,检查dhcp的日志信息
Feb 22 04:03:48 triceratops kernel: [24233.334381] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX
Feb 22 04:03:48 triceratops kernel: [24233.334535] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Feb 22 04:03:48 triceratops dhcpcd[8091]: eth0: carrier acquired
Feb 22 04:03:48 triceratops dhcpcd[8091]: eth0: rebinding lease of 71.195.255.75
Feb 22 04:03:48 triceratops dhcpcd[8091]: eth0: acknowledged 71.195.255.75 from 68.87.66.21
Feb 22 04:03:48 triceratops dhcpcd[8091]: eth0: checking for 71.195.255.75
Feb 22 04:03:53 triceratops dhcpcd[8091]: eth0: leased 71.195.255.75 for 320676 seconds
Feb 22 04:03:53 triceratops kernel: [24238.491916] e1000e: eth0 changing MTU from 1500 to 576
Feb 22 04:03:53 triceratops dhcpcd: eth0: MTU set to 576
Feb 22 04:03:53 triceratops dhcpcd[8091]: eth0: carrier lost
Feb 22 04:03:53 triceratops dhcpcd: eth0: MTU restored to 1500
Feb 22 04:03:53 triceratops kernel: [24238.581934] e1000e: eth0 changing MTU from 576 to 1500
        可以观察到DHCP服务器已经分发了对应的IP地址, 但是没有被本地系统所接收。

      问题到这里, 就可以很清楚了, 在于DHCP服务器和nic driver在协商MTU的时候,不能达成一致。导致IP地址分配失败。这个问题可能是
      1) 上游的DHCP想设置MTU为576. 也许是DHCP服务器的问题.
      2) NIC的驱动有问题,在设置MTU时无法bring link.

     解决方案: 修改/etc/dhcpcd.conf, 将其中的option interface_mtu注释掉。
         强制dhcpcd忽略来自DHCP服务器的MTU设定就可以了。

    注:  之所以把这个问题写出来, 是因为发现Intel e1000e的网卡驱动, 在很多Linux下,都存在这个问题,而这个问题通过重新编译驱动并无法解决。


    另外,该问题出现的几个可能原因
    1, 在ESX中克隆出的虚拟机, 也有可能出现启动时,找不到网卡的情况, 通常这种情况,是由于eth0设备所装载的配置与读取默认配置的Mac地址不一致,导致加载网卡失败。
    最直接的做法:rm /etc/udev/rules.d/70-persistent-net.rules,重启虚拟机,配置网络,搞定。一切都让udev自己来处理。


dhcpcd的安装
emerge dhcpcd;  rc-update add dhcpcd default

要确保系统已经安装并运行了syslog
emerge syslog-ng
rc-update add syslog-ng default

network的配置
echo "config_eth0=dhcp" >> /etc/conf.d/net

Reference:    
Linux* e1000e Base Driver overview and installation
http://www.intel.com/support/cn/mt/mt_win.htm