【提要】 我的主板是华硕P4P800 SE,集成Marvell Yukon网卡,安装redhat linux9后无法识别网卡,故需要费一点折腾了。。最终解决了linux中上网的问题,但引发了windows中无法连接的麻烦,暂时搁着先了。。。(2006-11-25回头圆满解决!)
【内容】
问题一开始就存在,我就一般在windows系统中寻找资料,下载资源,然后转到linux中,加载windows分区,获取文件。经过一段时间后,终于还是认真解决它好了。在windows设备管理器中查看到网卡信息是:Marvell Yukon 88E8001/8003/8010 PCI Gigabit Ethernet Controller
首先从华硕官方网站找到我的主板系列P4P800 SE的驱动,有Marvell Yukon芯片网卡驱动下载,但似乎只有windows和unix的,有一个写了是for linux的,但下载下来怎么看也不是。
于是去驱动之家搜索,无果而返,其实那个提供拉拉杂杂驱动的站点也不怎样。
百度上搜索也发现不了解决办法,反而发现许多朋友也跟我一样难题未解……
于是就直接去Marvell官方站点找,http://www.marvell.com 真的非常难打开,气死我了!!不过也只有一个希望了,我反复尝试,终于下载到了Yukon Linux Driver Install Package,forLinux kernels 2.4.13 and higher,即install-8_41.tar.bz2
转入linux,解压,仔细阅读readme,按指导安装:
# ./install.sh
然后Select the driver installation mode,有两种模式可选……
Installation Instructions for sk98lin Driver
This file contains
1   Overview
2   Required Files and Tools
3   Prerequisites
4   Preparing the Driver Installation Package
5   Driver Installation
     5.1   Installation Mode
     5.2   Patch Generation Mode
6   Patch Generation and Recompilation of the Kernel
     6.1   Downloading and Unpacking the Linux Kernel
     6.2   Generating the Driver Patch
     6.3   Applying the Driver Patch
     6.4   Configuring the Linux Kernel
     6.5   Compiling the Linux Kernel
     6.6   Installing the Compiled Linux Kernel
7   Manual Module Loading
8   Unloading the Module
9   Driver Parameters
10   Ethtool Commands
11   Troubleshooting
================================================================================
1   Overview
===========
……
2   Required Files and Tools
===========================
……
3   Prerequisites
================
……
4   Preparing the Driver Installation Package
============================================
Before the sk98lin driver installation script can be invoked, the
installation package needs to be unpacked:
1.   Login as 'root'.
2.   Unpack the driver installation package using the command
     # tar xfvj install-???.tar.bz2
     or
     # bunzip2 -c install-???.tar.bz2 | tar xfv -
***
5   Driver Installation
======================
1. After the driver installation package is unpacked, type the following
    commands to start the sk98lin driver build process:
    # cd DriverInstall
    # ./install.sh
2. a) Select the driver installation mode (see following subchapters).
    b) In case you have installed another driver module than the original
       Marvell driver you will be asked how to further proceed. You may
       ignore the fact, you may rename the other driver or you may erase
       it. We recommend to choose the last option to avoid unwanted
       sideeffects and interdependencies.
3. Wait for the driver build process to finish.
    Depending on the installation mode you selected, the driver is either
    compiled and installed or a kernel patch is generated.
……
5.1   Installation Mode
----------------------
……
5.2   Patch Generation Mode
--------------------------
……
6   Patch Generation and Recompilation of the Kernel
===================================================
……
7   Manual Module Loading
========================
……
8   Unloading the Module
=======================
……
(后记:尽管很多当时看不懂,但还是很有必要摘录下来,回头来看这些技术文档的时候觉得很多懂的、不懂的东西还是非常有参考价值的!)
上面写得那么多,看多了也烦 .主要是5   Driver Installation一部分,按照其指导,转到linux,解压install-8_41.tar.bz2,得到目录DriverInstall,启动shell脚本install.sh
    # cd DriverInstall
    # ./install.sh

启动了驱动安装,提示选择安装模式,选择Installation Mode,(也试验过Patch Generation Mode,很多步骤不懂什么意思...),安装成功,在X-windows下,"系统设置"-->"网络",可以看到网络设备已经可用了!启动Mozilla浏览器,果然可以上网了!高兴!

重启,回到windows xp系统,却发现提示网络无连接,网络没插好...检查网线,并无不妥.检查硬件状况,发现网卡速度变成1GB的了!而不是100M,无果。重启,回到linux,却正常上网.这样,我估计是for liunx驱动把网卡硬件设置改变了,而这些设置跟windows系统中的驱动不,从而使windows无法驱动网卡了.
于是我尝试在windows中重装网卡驱动,仍然不行,而且返回linux中也不能上网了!这麻烦了...最后只好在linux中重装驱动,保持linux中上网,window中就不理它了...留下一大堆文问题...

但探索一下在linux中打造我的工作环境也无妨,就算了,查了一堆资料,无法解决linux自带的Mozilla 1.2浏览器中支持java脚本,故一直无法修改和发布我的笔记...现在安装了firefox2.0才终于能补充点笔记..
(2006-11-25回头解决)
linux下面的很多软件还是不尽完善,当急需使用某些东西的时候还是非常需要能上网的windows,故今天又忍不住回头来弄弄了。
思考上次留下的难题,肯定可以寻找合适的驱动安装解决问题。但这也是个困难的事情,因为即使官方网站也没有明确的指导,而且也没提供多个linux driver版本。我想了下面两个方案尝试:
第一,寻找其他版本的Marvell linux驱动,尝试更换linux中的驱动
第二,下载多个windows下的Marvell驱动,一个个尝试安装,看看怎样。
在搜索了大量文章后,发现仍然没有有效的指导,于是我返回http://www.marvell.com/官方网站,进入Driver页面,用
Product Family = Yukon
Platform = Windows XP
进行搜索,把所有驱动下载下来。包括(下面写的是Driver title名)
Yukon x86 Windows XP
CPA (Control Panel Applet)for VLAN and Link Aggregation Applications
Yukon Windows 32-bit Installer (Multilanguage)
对应的文件名为
yk51x86_v86123.zip
SetupCPAwin_x32_v56113.zip
SetupYukonWin_x32w_v85673.zip


然后我还去华硕官方网站找找,因为我的主板是华硕的,集成Marvell网卡。在http://support.asus.com.cn/download/download.aspx?SLanguage=zh-cn&model=P4P800%20SE找到我的主板P4P800SE的网卡驱动下载页。把可能需要试用的版本都下载下来,包括:(描述名)
Marvell 网路驱动程式 V6.28
Marvell 网路驱动程式 V7.29.2.3
文件名为:
Marvell_v628.zip
Marvell_7.zip
然后再尝试搜索寻找linux的驱动,结果在intel的网站找到Marvell网卡的其他版本的linux驱动,地址是:
http://downloadfinder.intel.com/scripts-df-external/Filter_Results.aspx?strOSs=90&strTypes=all&ProductID=1658&OSFullName=Red%20Hat*%20Enterprise%20Linux%203.0&lang=eng&page_nbr=1
我把下面几个版本的驱动全下载下来了:
Marvell 88E8050* Ethernet Controller Drivers for Linux* (IA32 & EM64T Drivers) [MARVELL-88E8050_LINUX_V8.24.1.3.TAR.BZ2] (321KB)         8.24.1.3
Marvell 88E8050* Ethernet Controller Drivers for Linux* (IA32 & EM64T Drivers) [MARVELL-88E8050_LINUX_V8.16.2.3.TAR.BZ2] (319KB)         8.16.2.3
Marvell 88E8050* Ethernet Controller Drivers for Linux* [88e8050_LINUX_706.TAR.BZ2] (308KB)      7.06
共三个文件,下载下来的文件为:
marvell-88e8050_linux_v8.24.1.3.tar.bz2
marvell-88e8050_linux_v8.16.2.3.tar.bz2
88e8050_LINUX_706.tar.bz2
把准备好的文件拷到我的电脑相应目录中,做了以下几个步骤的尝试,终于解决了问题!
1、在windows中把原网卡驱动V7.29.2.3(以前也是从华硕网站下载的)卸载,重新安装一次该版本驱动,重启系统,发现还是不行!windows中老提示网卡没插好,其实根本不是。
2、进入linux系统,直接安装从intel下载来的linux驱动MARVELL-88E8050_LINUX_V8.24.1.3.TAR.BZ2(没有先卸载之前安装的install-8_41.tar.bz2),安装过程跟之前做的install-8_41.tar.bz2安装基本一样,只是tar解压后得到的目录为DriverInstall。安装完毕,linux中能正常上网,重启电脑,进入windows,发现还是老问题!
3、在windows中把网卡驱动V7.29.2.3卸载,安装华硕网站下载的Marvell 网路驱动程式 V6.28,重启,进入windows,发现还是不行!!打开设备管理器,把网卡卸载(注意:是在设备管理器中卸载网卡设备,不是在“添加或删除程序”中卸载驱动),然后在设备管理器菜单检测硬件改动,重新检测出网卡,然后右键打开“重新安装驱动程序”,手工定向到从Marvell网站下载下来的Yukon x86 Windows XP驱动,解压后的文件夹为yk51x86_v86123,重新安装了这个驱动。重启电脑,发现有反应!网络连接上了,而且速度为100M,跟以前一样的正常参数。
4、重启,进入linux系统检查,发现一切OK!再重启返回windows,也能正常上网!到此,问题基本解决!
小结:
问题的症结在于linux的网卡驱动和windows的网卡驱动版本组合不合理,引起了冲突,解决的办法也许只有寻找多个不同的版本,尝试不同的组合了。这个跟gcc,binutils等工具包的配合相似,只能找到一个合适的组合环境。
上面的尝试这么多步,实际上哪一步才是起作用的,关键的,暂时还没细究,留待下次windows重装之后再具体吧。。。
[2006-12-05]后记:
在用了一段时间后,我的linux系统空间满了两次,用partition magic调整了两次,不仅把lilo引导弄坏了,只能通过grub命令引导系统,而且,linux分区中的空间在还剩很多空间的时候就不能拷进文件来 了,用df -l命令查看,得到提示是这个分区已用100%!简直疯了,无奈,之好重装系统,把windows xp和linux都重装了一次。于是又要重新面对显卡驱动和网卡驱动了。按照以前做的这篇笔记,先在windows中直接安装了 yk51x86_v86123.zip驱动,这个驱动没有setup自动安装,需要在硬件管理器中直接用“更新驱动程序“,然后指定搜索位置,进行安装。然后进入linux,安装marvell-88e8050_linux_v8.24.1.3.tar.bz2驱动,重启电脑进入linux的时候会出现网络配置,配置完成启动linux后网络设备正常,能上网了,重启进入windows后检查网络也正常!

【遗留问题】
1. Patch Generation Mode不知怎样,patch是怎样的?什么用途?
(2006-11-25)解答:这个模式是产生一个内核补丁,用于对linux系统内核打补丁的方式手工安装相应驱动模块。这个跟linux的内核补丁安装基本一样概念和操作。
2. sk98lin是这个驱动程序的代称吗?还是一个什么标准?
3. 这个驱动安装中的patch模式是什么?什么时候用?
(2006-11-25)解答:见第一个问题的解答。
4. 华硕网站提供的for linux的Marvell网卡驱动只是个sk98lin-2.4.22_patch原代码补丁文件,怎样用的?是否能够查明这个linux驱动修复网卡?
(2006-11-25)解答:华硕提供的驱动只是个内核补丁,安装方法是对linux内核打补丁,重新编译。
……
【参考资料】
1、Marvell官方网站驱动下载列表http://www.marvell.com/drivers/driverSearchResults.do?currentPage=4
Yukon Linux Driver Install Package,Driver for use with general, non-bonded, solutions in Linux kernels 2.4.13 and higher
说明:Marvell的网站不是说“很难”打开,而是“非常”难打开!要多试几次,直到看到信息列表。找驱动还是依靠官方网站好点,即使华硕网站也没提供该网卡的linux驱动,驱动之家中也找不到。