Chinaunix首页 | 论坛 | 博客
  • 博客访问: 714297
  • 博文数量: 79
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1338
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-12 08:51
个人简介

XMU->九天揽月->五湖抓鳖->DSP->driver->kernel/OpenWRT->ISP/RTOS

文章分类

全部博文(79)

文章存档

2020年(2)

2018年(3)

2016年(7)

2015年(42)

2014年(25)

分类: LINUX

2014-09-18 12:00:42

接上:http://blog.chinaunix.net/uid-27057175-id-4479852.html

编译好的wvr300_factory.bin下载到路由器上,网络不能使用。

查看Rootfs根目录/etc/config/network当前使用的网络配置。

root@OpenWrt:/etc/config# cat /etc/config/network

 

config interface 'loopback'

        option ifname 'lo'

        option proto 'static'

        option ipaddr '127.0.0.1'

        option netmask '255.0.0.0'

 

config interface 'lan'

        option ifname 'eth0'

        option type 'bridge'

        option proto 'static'

        option ipaddr '192.168.1.1'

        option netmask '255.255.255.0'

 

config interface 'wan'

        option ifname 'eth1'

        option proto 'dhcp'

所以wvr300现在的网络配置:eth0被当作laneth1被当作wan了,br-lan桥接eth0。这样测试wan口有4个而lan口只有1个,恰好就把面板的顺序反过来了,实际上就是lan wan与eth 0 1的对应关系颠倒了。正确的配置应该是eth0waneth1lanbr-lan桥接eth1

所以得看lan wan和eth的配置是如何来的,/etc/config/network是如何生成的?

        openwrt工程下搜索 grep –Rn –exclude-dir=.svn “etc/config/network” ./

得到target/linux/ar71xx/base-files/etc /uci-defaults/network这个脚本创建network配置

 

[ -e /etc/config/network ]&& exit 0

touch /etc/config/network           #### 有则ret,无则创建 

. /lib/functions/uci-defaults.sh

. /lib/ar71xx.sh                    #### 引用脚本,定义了函数和变量

ucidef_set_interface_loopback       ###### loopback interface 

board=$(ar71xx_board_name)      

case "$board" in    /// 下面是枚举board,按board 配置 lan wan switch

tl-wr841n-v8)

         ucidef_set_interfaces_lan_wan "eth1" "eth0"

         ucidef_add_switch "switch0" "1" "1"

         ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4"

         ;;

所以根据board来分别配置lan wan

board 取自ar71xx_board_name()搜索ar71xx_board_name()定义来自 target/linux/ar71xx/base-files/lib/ar71xx.sh,并且依赖于/tmp/sysinfo/board_name,再依赖于ar71xx_board_detect()

ar71xx_board_detect()函数中/proc/cpuinfo中取出machine名称,再进行匹配即可得board_name,并把name存储到/tmp/sysinfo/board_name,根源到此,原生openwrt里面没有WVR300机型,故这里就只能用默认配置。

 

解决办法:

target/linux/ar71xx/base-files/lib/ar71xx.sh  

ar71xx_board_detect()新增

         *"TP-LINK TL-WVR300")

                   name="tl-wvr300"

                   ;;

 

target/linux/ar71xx/base-files/etc/uci-defaults/network 新增

tl-wvr300)

         ucidef_set_interfaces_lan_wan "eth1" "eth0"

         ucidef_add_switch "switch0" "1" "1"

         ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4"

         ;;

 

重新编译得到wvr300镜像,验证网络配置正确了。

阅读(8923) | 评论(6) | 转发(1) |
给主人留下些什么吧!~~

damcool2014-10-06 09:00:01

高手问下可有现成的bin文件分享也想刷WVR300,谢谢先!