编译mtk-openwrt-sdk生成固件

编译mtk-openwrt-sdk生成固件


参考网址:http://blog.csdn.net/u013177084/article/details/77115088
http://www.williamlong.info/archives/3922.html

前言

其实厂家提供的模块是带了刷好的openwrt,但是我在升级固件的时候不小心选择了另一块定制的开发板的固件,导致该模块更新完固件后串口波特率,网口等功能不匹配了,luci直接刷没了,正好,学习一下编译sdk以及更新固件。uboot还在,我就没动,否则可能需要折腾更多的时间,我做的仅仅是编译厂家提供的SDK,生成固件,然后更新固件,说起来就这两件内容,但是由于是第一次,期间遇到了很多问题,解决完后也让我感觉受益良多,特此记录一下。

准备

1.虚拟机vm12+Ubuntu16.04(编译环境你自己搭配,这里是我的编译环境)
2.厂家提供的SDK或自己在官网上下载的SDK

一、下载适合你的mtk芯片的CPU架构的openwrt-SDK包

对于如何确定你的模块的CPU架构、下载什么类型的SDK,下载完怎么提取或解压等等,我这里不多说了,这些必须自己先搞明白。
对于下面的内容,如果你有模块厂家提供的SDK,就不用去管了。
附上openwrt的官方网址:https://wiki.openwrt.org/
openwrt作为开源的系统,在该网址上也提供了源码的github地址,我们这里需要找到机器自动编译源码后生成的一些文件的存放位置。
编译mtk-openwrt-sdk生成固件
这里再附上一个mt7620的SDK包位置:
https://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/
编译mtk-openwrt-sdk生成固件
这里是自动编译机器根据源码自动编译出来的sdk包,交叉工具链,适合一些路由器的固件文件等。

二、编译前的准备

1.编译安装源码包

如果你是厂家提供的sdk,不需要更新和安装源码包,但是如果你是自己下载的,以防万一,更新安装一下源码包:

./scripts/feeds update -a
./scripts/feeds install  -a

2.配置openwrt

在openwrt目录下,执行make menuconfig,多么熟悉的画面:
编译mtk-openwrt-sdk生成固件
至少需要选择配置三项

·        Target System (Ralink Platform)
·        Subtarget (Ralink SoC chipseries)
·        Target Profile (A specificmodel name)

全部选择7628,我目前也是知其然不知其所以然。
然后,最好再加上mtk的luci和uhttpd,这样刷新好固件后,如果给模块配好了网络,就可以直接访问luci配置界面了,在www目录下也可以做一些简单的web服务了。
注意:这里的选中都为*号,只有这样才会将这些功能编译进内核,刷新的固件中才会带有这些功能。

(1)LuCI(MTK)

collections中选择第二项在登录web时可能会提示你需要提供证书:
编译mtk-openwrt-sdk生成固件
modules应该是luci支持的一些模块,我也搞不太清楚,只选择了第一个:
编译mtk-openwrt-sdk生成固件
translation这里选择Chinese那一项,这样,web界面中就会带有中文支持,到时候只需要手动选择一下就可以了,关于如何选择我会在相关总结中说明:
编译mtk-openwrt-sdk生成固件

(2)web服务器

在Network中找到web servers/proxies:
编译mtk-openwrt-sdk生成固件
选中uhttpd服务器:
编译mtk-openwrt-sdk生成固件

3.dl中的各种工具包

第一次编译时99%都会出错,因为编译时需要很多包,这些包是需要在编译时下载的,很多包可能需要*下载或者包的位置会发生变化,这时就需要你根据编译提示找到缺少的包的网址,自己去确定位置是否发生改变,然后手动下载下来拷贝到dl目录下,这里其实是在编译后再说的,但是为了提醒大家,编译出错是正常的,做好心理准备。
众所周知,openwrt是基于Linux内核的,所以其编译时需要Linux的内核,这个内核也是在编译过程下载的,附上Linux内核的下载网址: https://www.kernel.org/

三、编译

当前面的准备充分之后,编译其实只是一个简单的命令和耐心的等待,直接make就可以了,但是前面说了,编译会出错,那么我们需要编译的具体信息,所以再加上V=s,还有一个-jn的命令参数,这是为了加快编译速度,选择多线程编译,CPU全速编译,但是这个参数加上之后80%以上会导致编译卡死,特别使用虚拟机且内存为1G及以下时,这种情况更容易发生,所以,不推荐使用,我们就在openwrt根目录***意是openwrt根目录下)运行该命令即可:make V=s
其实,解决完dl下包无法下载到的问题后,第一次编译其实两个小时左右就OK了,之后再编译更快,编译完成后类似如下样式:
编译mtk-openwrt-sdk生成固件

四、最后

编译完成后生成的固件文件在bin/ramips目录下,比如我的:openwrt-ramips-mt7628-mt7628-squashfs-sysupgrade.bin。然后就是更新固件到开发板,最后进行简单的配置,使其能连接外网,可以利用opkg安装软件,luci正常运行即可。