冷烟花
哎呀哎呀哎呀我的妈~蜗牛背着那重重的壳呀,一步一步地往上爬~

目标板:合众达的SEED-DVS6467开发板

内核版本:2.6.10

最近同事测试板卡nfs挂载PC的文件系统时出现点问题,PC上ifconfig中显示以太网为eth3,然而板卡启动参数列表相关信息如下:

可以看到其中device为eth0.抱着实事求是的态度,查看了一下内核源码,关于bootargs中ip段的配置部分,并作如下记录.

在project中搜索了一下”device=”字段,如下

就这几行,不是很多哦,而且与net相关的就更少了,很容易就发现

Ipconfig.c (net\ipv4):        printk("\n      device=%s", ic_dev->name);

这一项,点开就可以看到

 

这不正式内核启动的时候打印IP-Config: Complete的出处么.看来device是由ic_dev->name来决定的.

在当前文档中搜一下ic_dev字段,很容易找到

这不是重点,重点是很快又发现如下两处

这其实一个意思,随便看一个

那么这个dev的name字段就是我要找的ic_dev->name字段.

搜一次dev->name,找到

于是乎我又搜了一下user_dev_name字段,发现

在ip_auto_config_setup函数中有如下片段

现在知道device是哪儿来的了,就是通过bootargs设置的时候ip段传过来的.我们看到ip段设置的时候有七项,分别为:

Ip=目标板的临时IP:开发主机的IP:目标板上网关(GW):子网掩码:开发主机的名字:网卡设备的名称:协议类型

我们看一下case 6中的ic_proto_name函数的注释,同样在ipconfig.c文件中

一目了然,无需多解释了.

下面如果要修改内核启动的时候打印的那个”device=”的值,就有方法咯.

posted on 2014-01-20 14:31  冷烟花  阅读(1833)  评论(0编辑  收藏  举报