[网卡]NE1000 / NE2000网卡(及其兼容卡)的FAQ问题:机器在启动时出现“8390...”或“WD....”信息后死机。拔掉NE2000就好了。 解决方案:把你的NE2000地址改为0x340一类的地址。此外,你可以在和“ether=”参数一起使用“reserve=”启动参数,保护网卡不受其它设备驱动程序检测的影响。 原因:你的NE2000兼容网卡兼容性不好。一个激活的NE2000是个无底洞,会使其它的驱动程序陷在其空间内进行自动检测。把NE2000改到一个不常用的地址就可以从其它的自动检测中消除这一陷阱,机器也就可以启动了。 问题:机器启动时在进行SCSI检测时死机。 原因:这个问题跟上面的一样,改变以太网卡的地址,或使用reserve/ether启动参数。 问题:机器启动时在进行声卡检测时死机。 原因:不可能,实际上是发生在静默方式的SCSI检测过程中,与上面的问题一样。 问题:启动时检测不到NE2000 - 根本就没有启动信息。 解决方案:因为造成检测不到的原因很多,所以没有“神奇的解决方案”。下面列出了可能有所帮助的一些措施。 1) 构建一个只包含需要的设备驱动程序的内核。证实你确实是从新内核启动的。忘记运行lilo等会使你从老的内核启动。(仔细观察启动时报告的构建时间/日期。)听起来很明显,但我们以前都犯过这个错。通过检查System.map文件里ne_probe一类的名称,确定驱动程序已包含在新的内核里。 2) 仔细观察启动信息。看看它是否提及正在进行诸如“NE*000 probe at 0xNNN: not found (blah blah)”一类的ne2k检测,或者就是静悄悄地失败了。这里的区别很大。使用dmesg|more在登录后浏览启动信息,或者在启动完成显示登录提示符时使用Shift-PgUp卷回屏幕。 3) 启动后,执行cat /proc/ioports,证实网卡要求的全部I/O空间是空的。如果网卡在0x300,那么ne2k驱动程序要求的空间为0x300-0x31f。如果其它设备的驱动程序注册了其中的一个口,就不会对该地址进行检测,而是静悄悄地检测下一个要检测的地址。常见的情况是lp驱动程序保留了0x378,或者第二个IDE通道保留了0x376,这就使ne驱动程序停止检测0x360-0x380。 4) 与上面一样执行cat /proc/interrupts。确定没有其它设备注册了你为以太网卡设置的中断。这种情况下,检测可以进行,以太网卡驱动程序会在启动时大声抱怨无法得到所要求的IRQ中断线。 5) 如果你还为驱动程序静悄悄地失败而苦恼,那么编辑并给检测增加一些printk()。比如,对于ne2k,你可以在linux/drivers/net/ne.c中增加/删除某些行(用 “+”或“-”表示),如下所示:
那么它就会输出检查的每一个口地址信息,你可以看到你的网卡地址是否被检测了。 6) 你还可以从Don的ftp站点(在howto中也提及了)获取ne2k的诊断程序,看看你在启动进入Linux后能否用它检测你的网卡。使用“-p 0xNNN”选项告诉它在哪里寻找你的网卡。(缺省情况下只检测0x300,与启动时的探测不同,不会检测其它的地址。)在找到网卡时的输出如下:
你的注册值和PROM值可能会不一样。注意,对16比特网卡,所有PROM值都增加一倍,以太网卡地址(00:00:c0:b0:05:65)出现在第一行,加倍后的0x57标识出现在PROM的结尾。 在0x300处没有安装网卡时的输出如下:
出现值0xff的原因是在读取空I/O口时返回的就是该值。如果在检测的区域内有其它硬件,你可以看到一些非0xff的值。 7) 尝试在运行提供的DOS驱动程序或配置程序之后,从DOS启动软盘(通过loadlin)热启动进入Linux。这可能会进行一些额外的(即非标准的)“魔法”来初始化网卡。 8) 试一下Russ Nelson的ne2000.com包驱动程序,看它能否看见你的网卡 -- 如果还不行,事情就不大妙了。例如:
所用参数为软件中断向量、硬件IRQ和I/O地址。你可以从任意的msdos存档中的pktdrv11.zip里找到它 -- 现在的版本大概是11以上了。 上一篇:[硬盘]安装第二块硬盘 下一篇:《UNIX系列系统入侵教程》之三 更多相关文章
|
推荐文章
精彩文章
|