为了庆祝openwrt项目20周年,官方和香蕉派合作推出openwrt-one开发板,本专栏将从零开始解剖整个开发过程,定制自己的MT7981B路由器平台。
openwrt-one关键参数如下:
- 联发科 MT7981B (Filogic 820) SoC主控芯片
- 联发科MT7976C 双频 WiFI 6 芯片组 (2×2 2.4 GHz + 3×3/2×2 + zero-wait DFS 5Ghz)
- 1GB DDR4 内存
- 1 x 2.5GbE 网口和 1 x 千兆网口
- 256 MB SPI NAND 和 16 MB SPI NOR flash 保证板载系统的不可破法性。
- M.2 2242/2230 接口支持 NVMe SSD (PCIe gen 2 x1)
- RTC 实时时钟
- PoE 网络供电支持(可选)
- MikroBUS 扩展模块插座
1、官方资料查看
在购买到Banana Pi OpenWrtOne 路由器开发板后,可以先大概浏览官方的一些资料文档,路径如下:
硬件参数介绍:https://docs.banana-pi.org/zh/OpenWRT-One/BananaPi_OpenWRT-One
原理图与PCB:https://one.openwrt.org/hardware/
官方介绍:https://openwrt.org/toh/openwrt/one
2、编译环境搭建
openwrt的代码位于https://github.com/openwrt/openwrt,官方推荐使用openwrt-24.10的分支版本。
新版本的openwrt在编译的时候对于gcc或者python的版本也有要求,所以我们使用的ubuntu版本也有要求,否则编译的时候会出现如下错误:
Build dependency: Please install the GNU C Compiler (gcc) 8 or later
Build dependency: Please reinstall the GNU C Compiler (8 or later) - it appears to be broken
Build dependency: Please install the GNU C++ Compiler (g++) 8 or later
Build dependency: Please reinstall the GNU C++ Compiler (8 or later) - it appears to be broken
Build dependency: Please install Python >= 3.7
Build dependency: Please install Python >= 3.7
所以这边建议直接使用较新版本的ubuntu,比如ubuntu24.04或者ubuntu24.10之类的,官方iso路径如下:https://ubuntu.com/download/desktop
增对虚拟机的安装这边不介绍,自己解决。
安装完ubunut后,先把一直工具包安装好,大概如下:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim git gcc tig g++ binutils patch bzip2 flex bison make autoconf libtool unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk zlib1g xz-utils lrzsz libssl-dev swig curl jq -y
3、代码编译
代码克隆
git clone https://github.com/openwrt/openwrt.git
切换到openwrt-24.10分支
git checkout openwrt-24.10
更新安装feed包
./scripts/feeds update -a
./scripts/feeds install -a
选择编译平台
make menuconfig
选择如下:
Target System (MediaTek ARM) --->
Subtarget (Filogic 8x0 (MT798x)) --->
Target Profile (OpenWrt One) --->
开始编译
make -j4 V=99
第一次编译会比较久,需要下载dl包,编译交叉工具链等,保持网络畅通,慢慢等。
编译完成后,在openwrt\bin\targets\mediatek\filogic
路径下,生产如下固件文件
config.buildinfo
openwrt-mediatek-filogic-openwrt_one-snand-bl31-uboot.fip
feeds.buildinfo
openwrt-mediatek-filogic-openwrt_one-snand-factory.bin
openwrt-mediatek-filogic-openwrt_one-factory.ubi
openwrt-mediatek-filogic-openwrt_one-snand-preloader.bin
openwrt-mediatek-filogic-openwrt_one-initramfs.itb
openwrt-mediatek-filogic-openwrt_one-squashfs-sysupgrade.itb
openwrt-mediatek-filogic-openwrt_one.manifest
packages
openwrt-mediatek-filogic-openwrt_one-nor-bl31-uboot.fip
profiles.json
openwrt-mediatek-filogic-openwrt_one-nor-factory.bin
sha256sums
openwrt-mediatek-filogic-openwrt_one-nor-preloader.bin
version.buildinfo
默认spi nor flash和spi nand flash的固件都会编译,实际使用时介绍每个文件。