yamfs 发表于 2015-01-08 23:56

4412开发板nfs挂载时sys_mount系统调用出错

问题:4412开发板挂载网络跟文件系统失败
参数设置:这是板子的虚拟机的:

内核是3.14



nfs服务器的:/source/rootfs*(rw,sync,no_root_squash,no_subtree_check)

其它设置描述:防火墙都关了,内核和文件系统都是使用板子配套光盘的。

我的其它测试:(1)换一个虚拟机还是不行。
                  (2)将内核、文件系统都烧到板子上,发现一个问题:在u-boot的时候可以Ping通虚拟机,但进入Linux系统后Ping不通虚拟机。后来就在虚拟机监听开发板的Ip ,可以得到下面的信息:


(3)烧写Android系统,启动后进入系统可以Ping通虚拟机。

(4)在内核加入一些打印信息:打印出错信息如下:
内核代码如下:       
       int err = sys_mount(name, "/root", fs, flags, data);
        if (err)
        {
                printk(KERN_ERR"\nsys_mount error!\n");
                printk(KERN_ERR"\nname=%sdata=%s\n",name,(char *)data);
                return err;
        }
从打印的数据看传递的参数没有问题,所以问题应该是出在了sys_mount系统调用里面。结合前面将文件系统烧到板子上启动后ping不通虚拟机,所以我觉得问题应该是出在了内核加载后想去挂载网络跟文件系统,但是网络不通。可是在U-boot的时候是可以ping通的,毕竟我的内核都是通过tftp下载的。
(5)内核网卡:dm9000 5000000.ethernet eth0: link up, 100Mbps, full-duplex, lpa   会打印这句,说明应该没什么问题。



搞了两天了,还是挂载不成功,快崩溃了,以前搞arm9完全没有这种问题。
向各位大侠求救了!

Tinnal 发表于 2015-01-10 13:01

回复 1# yamfs


    你先是说ping不通,再说烧android后就ping通,这是什么关系?前面的3.14内核不是android?

另外,1)从你的内核启动信息可以看出,网卡已经驱动起来了。2)你的虚拟机里头也确实已经收到1.20发来的ARP了,证明开发板上网卡能正确的发包,并且IP也配置正确了。3)uboot能下在文件,证明虚拟机的ARP respone肯定能回到开发板上来。

有可能的原因我猜有:
1. 网卡驱动不能正确收包
2. 你的内核有BUG,不能正确处理ARP回复。


你是否可以也在开发板上抓抓包。

yamfs 发表于 2015-01-14 19:12

本帖最后由 yamfs 于 2015-01-14 19:14 编辑

回复 2# Tinnal


    谢谢你的回答。前几天由于要考试,所以没时间搞这个就没有回复你了。根据你的回答我昨天联系了技术支持从他那边拿了一个在他那边测试可以的内核过来发现还是不行。他叫我换块板子试试,今天换板子后测试,发现全部都可以,完全没问题。我晕,搞了这么久,竟然是硬件的问题。

yamfs 发表于 2015-01-14 19:20

回复 2# Tinnal


    android是用的3.0内核,跑android的时候进入linux是可以ping通虚拟机的。但是我使用3.14内核进入linux后就ping不通了,所以也使用不了nfs。好奇怪啊,什么硬件问题会导致这样的问题出现呢?

Tinnal 发表于 2015-01-14 21:19

回复 4# yamfs

3.14的内核驱动有问题吧。
   

yamfs 发表于 2015-01-14 22:36

回复 5# Tinnal

应该不会,还是用以前那个内核,换了块板子就行了


   

Tinnal 发表于 2015-01-14 22:40

回复 6# yamfs


    如果直想研究具体的原因,那就在网卡的代码里加点打印看出错在那罗。

yamfs 发表于 2015-01-14 23:02

回复 7# Tinnal

恩 上次追踪到do_mount后就没继续了。可惜那块问题板子换回去了。
   
页: [1]
查看完整版本: 4412开发板nfs挂载时sys_mount系统调用出错