最近又从淘宝入手了一台改过机的水星 MW4530R 双频无线路由器,原厂、Openwrt双Flash,双系统。原厂固件Flash 8M,Openwrt固件Flash 16M。Openwrt官方并没有提供对MW4530R的支持,但它比TPLink WDR4300 硬件只少了一个usb口,所以4530的固件都是从4300固件修改来的。我买的这台机子里刷的是思山论坛某个同学自己编译的固件,里边集成了一堆我从来不用的包和功能,我怎么能忍得了呢,于是决定自己动手定制自己的固件。好在之前有折腾WR703N的经验,只把需的软件包和做好的配置文件(ADSL,无线AP 等)集成到固件里,刷好机直接用,不用再折腾。既然要动手就想彻底点,向openwrt官方源码里加入对MW4530R支持,直接编译出MW4530R的可用的固件。经过这两天的研究搞定了,现把方法共享一下。菜鸟一个有错误欢迎批评指正。
先简单说明一下思路,方便您理解后边的操作。MW4530R本身就是水星出的WDR4300的马甲,那就在Openwrt源码中给WDR4300套上个马甲就是MW4530R了。我是基于官方branches/attitude_adjustment源码做的,大概需要以下几步:
1.新增MW4530R Profile,在make menuconfig时选择
2.内核中添加MW4530R设备的识别(只是识别,代码还用WDR4300,马甲吗)
3.修改固件内的脚本,加入MW4530R支持,以便正确配置固件
4.编译完成后生成MW4530R的固件
上述操作的第2步我已经做成了patch,这个patch可能会随着openwrt的更新失效。不过我使用的是分支代码,基于不会有太大的改对或增加新设备支持,所以这种可能是比较小的。其它几步的操作要分别对下面的文件进行修改:
target/linux/ar71xx/generic/profiles/tp-link.mk
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/base-files/etc/uci-defaults/leds
target/linux/ar71xx/base-files/etc/uci-defaults/network
target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/image/Makefile
在开始之前提些建议给您。先准备好svn代码,然后选择一个设备进行一次完整的编译,这个过程中会下载编译内核、包的源码,这样可以保证制作MW4530固件的过程比较顺利节省时间。另外openwrt源码结构很模块化,所以不用每次修改之后都 make clean然后再make 太耗时,假如你只修改了target文件夹里的内容,只需要make target/linux/clean,然后再make 就可以生效;如果修改了tools的源码只需要 make tools/clean;如果修改了某个package,执行 make package/<包名>/clean 即可。
平时工作娱乐都是用linux,整个过程是在Linuxmint14 64位下进行的。
准备源码过程就不细说了按顺序执行下面命令:
svn export svn://svn.openwrt.org/openwrt/branches/attitude_adjustment/
./scripts/feeds update -a
./scripts/feeds install -a
下面所有的命令都以attitude_adjustment为当前目录,下面正式开始。 继续阅读 →