Intel D945GCLF的atom主板,在如下配置中:
CPU : atom 230 1.6GHz
硬盘:Seagate 500G
内存:Kingston DDR2 800MHz 2G
声卡:板载
网卡:板载 RealTek R8102EL 10/100M Ethernet
电源:大水牛mini机箱 电源
使用万方功耗测试插座测的典型值为 40W 。
该主板在安装了Ubuntu 8.10 desktop版或者server版操作系统后,其板载网卡出现经常性的开机后无法连接网络的情况,使用 ifconfig 命令查看后,eth0显示正常,但其 dropped 参数中是一个巨大的数字。使用 dmesg 命令查看,发现其所使用的驱动为 r8169 ,因为使用了不正确的驱动,导致系统在冷启动后系统网络不可用。为解决这个问题,我们要做如下工作:
1. 到realtek官方网站 http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=14&PFid=7&Level=5&Conn=4&DownTypeID=3&GetDown=false 下载最新的R8102EL驱动,www.britepic.org目前的驱动版本为: r8101-1.010.00
2. 对于server版本,系统安装的时候并没有安装内核头文件,所以需要下载安装,首先安装编译程序所需要的编译器等必须软件:
sudo apt-get install build-essential
然后安装系统内核头文件,否则我们下载的驱动不能编译:
sudo apt-get install linux-headers-‘uname -r’
3. 解压我们下载的驱动程序,到该目录中,运行命令: make all
正常情况下,会有错误。但只要你到 src/ 下面看到编译出了 r8101.ko 文件即可,不管是否有错误。
4. 从内核中将当前的网卡驱动程序卸载,运行命令
sudo rmmod r8169
5. 从系统库中,将r8169驱动删除或者改名:
sudo mv /lib/modules/’uname -r’/kernel/drivers/net/r8169.ko r8169.ko.old
6. 将我们编译后的 r8101.ko 文件复制到上面的系统驱动目录中,即:
sudo cp ./r8101.ko /lib/modules/’uname -r’/kernel/drivers/net/r8101.ko
7. 重新载入网卡的驱动,运行命令:
sudo depmod -a
稍等后,即可运行命令 lsmod | grep r8101 察看我们编译的驱动是否被载入,如果被载入,则我们基本上已经成功。如果以上命令没有显示 r8101 这个字符串,则某个地方出错,请查错www.britepic.org。
8. 重新生成启动镜像,注意,在进行这一步的时候,必须执行成功上面的第7步!
cd /boot
sudo mv initrd.img-2.6.27-7-server initrd.img-2.6.27-7-server.old
sudo mkinitramfs -o initrd.img-2.6.27-7-server
稍等后,即可生成新的 initrd.img-‘uname -r’ 文件,请务必注意按照实际的/boot文件夹下的文件名来生成。
以上8个步骤都正确执行后,即可 reboot 系统,再次登陆后,系统将使用 r8101.ko 内核模块来驱动我们的R8102EL网卡,此时运行 ifconfig eth0 ,即可看到 eth0 一切正常,dropped 参数为0 。使用新驱动连续拷贝了20G数据,正常。
使用命令:
ethtool eth0
lshw -C network
demesg | grep eth0
显示的结果皆正常,尤其是 ethtool eth0命令显示的信息中,为 10M/100M ethernet,而非使用r8169.ko驱动时的 10M/100M/1000M ethernet 。
至此,搞定。
经测试 ,realtek 网站最新的 r8101-1.011.00 驱动可能存在bug,导致安装驱动后系统在关机或者重新启动的时候,挂在 deconfig eth0 上面不动,必须硬reset才行。退回到 r8101-1.010.00 后正常。
出错信息为: soft lookup – cpu#0 stuck for 61s [ifconfig:5001]
使用的Ubuntu版本为:server 8.10[ia32] ,内核为 sudo aptitude safe-upgrade 后的最新内核版本: Linux atomNAS 2.6.27-9-server #1 SMP Thu Nov 20 22:53:41 UTC 2008 i686 GNU/Linux