OpenWrt 编译

您所在的位置:网站首页 mt7688an OpenWrt 编译

OpenWrt 编译

#OpenWrt 编译 | 来源: 网络整理| 查看: 265

1. 背景处理器:MT7688OpenWrt版本:19.07.2编译环境:wsl(Ubuntu 20.04.1 LTS)2. 下载源码

源码地址:https://github.com/openwrt/openwrt

可以通过 gitee 加速代码下载,具体做法是在 gitee 上通过“从GitHub/GitLab导入仓库”的形式创建仓库,等创建好后,从 gitee 克隆该仓库。

如果需要对源码做些修改,并且希望可以保存下来,建议自己新建仓库,后续将更改提交到该仓库;如果不需要保存,直接克隆 gitee 上已有的 OpenWrt 的源码克隆仓库就可以了:

1 git clone [email protected]:openwrt-mirror/openwrt.git

如果想提交到 GitHub 上,现在 GitHub 上 fork 仓库,然后按上面的方法将仓库克隆到本地,之后修改下仓库的 .git/config 文件,将远端 url 改成 GitHub 上自己的仓库对应的 ssh 地址。

检出对应的版本:

1 git checkout v19.07.2

检出后 HEAD 是游离状态,可以以该标签为基础创建一个新分支:

1 git checkout -b 19.07.2

后续所有的修改动作都在这个新分支上进行。

3. 编译(1) 更新 feeds 源

编译过程中,OpenWrt 还会下载很多东西,速度也比较慢,可以按照上面介绍的使用 gitee 加速的方法,将源码目录下 feeds.conf.default 文件内使用的到仓库克隆到 gitee,然后使用 gtiee 上的地址替换 feeds.conf.default 文件内的地址,来加速编译过程中的下载动作。注意,修改地址即可,不要修改 commit 号[1]。

接下来更新 feeds:

1 ./scripts/feeds update -a

使下载的包能够在 make menuconfig 中可用:

1 ./scripts/feeds install -a (2) 安装第三方 luci 应用

例如安装通过 web 管理页面给 arduino 烧录程序的应用 luci-app-avrdude:

1 2 cd feeds/luci/applications git clone https://github.com/qianchenzhumeng/luci-app-avrdude.git

安装 feeds:

1 2 cd ../../../ ./scripts/feeds install -a -p luci (3) 增加目标板配置

可以找卖家咨询一下,开发板是否需要特定的配置,如设备树配置文件、makefile配置等,如果有,需要在配置源码(make menuconfig)之前完成,后续在配置源码的时候需要选择该配置。

比如,我手中的开发板是需要特定的设备树配置文件的。卖家提供了设备树配置文件以及修改方法:

将设备树配置文件 BL_SMGW.dts 放到 target/linux/ramips/dts 目录下使用 mt76x8.mk 替换 target/linux/ramips/image/mt76x8.mk

链接中的 mt76x8.mk 在原来的基础上增加了如下内容:

1 2 3 4 5 6 7 define Device/bliot_smart-gateway DTS := BL_SMGW IMAGE_SIZE := 16064k DEVICE_TITLE := BLIOT SmartGateway DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci endef TARGET_DEVICES += bliot_smart-gateway (4) 配置源码

不熟悉自己的硬件的话,可以找卖家要该开发板的 .config 文件,放到源码根目录,编译即可。

1) 配置开发板信息

熟悉的话,可以运行 make menuconfig 进行配置,例如:

Target System (MediaTek Ralink MIPS)Subtarget (MT76x8 based boards)Target Profile (BLIOT SmartGateway)

上面的 Target Profile 就是之前新增的配置。

2) 配置生成 SDK

如果后续需要在此版本上开发应用程序,那么建议打开生成 SDK 的选项(Build the OpenWrt SDK)。如果配置了该选项,编译过程中会生成对应的交叉编译工具链。

3) 添加应用

以刚才安装的 luci 应用 luci-app-avrdude 为例,按如下层级选中:

1 2 3 -> LuCI -> 3. Applications -> luci-app-avrdude

配置好之后保存、退出,源码根目录下会生成对应的 .config 文件。

(5) 编译

接下来编译。如果是 WSL,编译过程可能会应为目录权限问题失败,需要将源码目录移动到 WSL 的根目录下,再编译。

1 make V=99

首次编译可能会持续数小时,大部分时间会耗在文件下载上面。

编译后的产物位于 bin 目录下:

1 2 3 4 5 6 7 8 9 10 11 bin ├── packages │   └── mipsel_24kc │   ├── base │   ├── luci │   ├── packages │   ├── routing │   └── telephony └── targets └── ramips └── mt76x8

其中,固件及 SDK 位于 bin/targets/ramips/mt76x8 目录下:

openwrt-ramips-mt76x8-bliot_smart-gateway-squashfs-sysupgrade.binopenwrt-sdk-ramips-mt76x8_gcc-7.5.0_musl.Linux-x86_64.tar.xz4. 故障解决1 mv: cannot move 'bin/aclocal.tmp2' to 'bin/aclocal.tmp': Permission denied

WSL 操作 windows 中的目录权限存在问题,将源码目录移动到根目录下(见[4])。如果没有改动 WSL 根目录的话,需要确保 C 盘有足够的空间。

参考

[1] 加速openwrt编译过程中的下载动作

[2] https://www.jianshu.com/p/00bb57319302

[3] https://docs.labs.mediatek.com/resource/linkit-smart-7688/zh_cn/tutorials/firmware-and-bootloader/build-the-firmware-from-source-codes

[4] https://www.right.com.cn/forum/thread-1388297-1-1.html

[5] 使用 GitHub Actions 云编译 OpenWrt

[6] openwrt目录结构之staging_dir

[7] LuCI 界面开发

[8] Openwrt Image Builder/SDK 初探

[9] OpenWRT添加自定义LUCI页面示例

[10] 使用OpenWRT路由远程给Arduino下载程序



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3