编译mtk-openwrt-sdk生成固件

本文介绍如何编译MTK OpenWRT SDK生成固件,包括下载适合的SDK包、编译前的准备、配置OpenWRT、解决编译错误及最后的固件更新流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译mtk-openwrt-sdk生成固件


参考网址: http://blog.youkuaiyun.com/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地址,我们这里需要找到机器自动编译源码后生成的一些文件的存放位置。
在这里插入图片描述
这里再附上一个mt7620的SDK包位置:
https://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/
在这里插入图片描述
这里是自动编译机器根据源码自动编译出来的sdk包,交叉工具链,适合一些路由器的固件文件等。

二、编译前的准备

1.编译安装源码包

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

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

2.配置openwrt

在openwrt目录下,执行make menuconfig,多么熟悉的画面:
在这里插入图片描述
至少需要选择配置三项

·        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时可能会提示你需要提供证书:
在这里插入图片描述
modules应该是luci支持的一些模块,我也搞不太清楚,只选择了第一个:
在这里插入图片描述
translation这里选择Chinese那一项,这样,web界面中就会带有中文支持,到时候只需要手动选择一下就可以了,关于如何选择我会在相关总结中说明:
在这里插入图片描述

(2)web服务器

在Network中找到web servers/proxies:
在这里插入图片描述
选中uhttpd服务器:
在这里插入图片描述

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了,之后再编译更快,编译完成后类似如下样式:
在这里插入图片描述

四、最后

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称系统有问题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值