启动的时候报eth0不存在,查看了一下/dev下确实没有eth0。
网上查找了些资料,于是从新编译了内核,使其支持pcmcia和pcmcia的网卡(都编译进了内核,没编译成模组)。然后装了sysfsutils和pcmciautils等用户空间工具。
重启以后,dmesg可以看到内核已经认出了网卡。插入网卡时会报信息:"pccard: PCMCIA card inserted into slot 0",然后我手工运行pcmcia-socket-start脚本,
在/sys/class/net目录下可以看到eth0了,可发现在/dev下还是没有eth0,而且启动是还是报eth0不存在的警告,是udev问题吗,我也不知道,没招了。
就这么折腾两天了,郁闷啊,今天上午终于让我发现问题了,我查看了一下pcmciautils工具在/etc/udev/rules目录下安装的60-pcmcia.rules文件:
# PCMCIA devices: # ACTION!="add", GOTO="pcmciautils_end" # modprobe $env{MODALIAS} loads all possibly appropriate modules SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \ RUN+="/sbin/modprobe $env{MODALIAS}"
# Very few CIS firmware entries (which we use for matching) # are so broken that we need to read out random bytes of it # instead of the manufactor, card or product ID. Then the # matching is done in userspace. SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \ RUN+="/lib/udev/pcmcia-check-broken-cis"
# However, the "weak" matching by func_id is only allowed _after_ modprobe # returns, so that "strong" matches have a higher priority. SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", ATTR{allow_func_id_match}="1"
# PCMCIA sockets: # # modprobe the pcmcia bus module so that 16-bit PCMCIA devices work SUBSYSTEM=="pcmcia_socket", \ RUN+="/sbin/modprobe -b pcmcia"
# if this is a PCMCIA socket which needs a resource database, # pcmcia-socket-startup sets it up SUBSYSTEM=="pcmcia_socket", \ RUN+="/lib/udev/pcmcia-socket-startup"
LABEL="pcmciautils_end"
|
发现其中的"/lib/udev/pcmcia-socket-startup"和"/lib/udev/pcmcia-check-broken-cis"
我发现这两个工具程序根本不在/lib/udev目录下,而在/sbin目录下,最后我在/lib/udev目录下建立了这两个符号连接,然后重启。突然发现,启动过程中没有提示eth0不存在,进系统一看/sys/class/net目录下竟然有了eth0(不用手动执行pcmcia-socket-startup),而且我也可以上网了。我这才明白原来eth0在/sys目录下有而/dev下没有的情况下也可以启动网卡。而不会报不存在。一直困扰我的问题原来是启动时pcmcia-socket-startup没有运行,而导致了网卡启用时找不到。呵呵,这个pcmciautil真的有点毛病,怎么命令路径还搞错了。
阅读(924) | 评论(0) | 转发(0) |