目标板:合众达的SEED-DVS6467开发板
内核版本:2.6.10
最近同事测试板卡nfs挂载PC的文件系统时出现点问题,PC上ifconfig中显示以太网为eth3,然而板卡启动参数列表相关信息如下:
可以看到其中device为eth0.抱着实事求是的态度,查看了一下内核源码,关于bootargs中ip段的配置部分,并作如下记录.
在project中搜索了一下”device=”字段,如下
就这几行,不是很多哦,而且与net相关的就更少了,很容易就发现
Ipconfig.c (netipv4): printk(" 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=”的值,就有方法咯.