GitHub Actions自动化编译:打造专属OpenWrt固件的完整方案

【免费下载链接】Actions-OpenWrt 自用 【免费下载链接】Actions-OpenWrt 项目地址: https://gitcode.com/gh_mirrors/act/Actions-OpenWrt

GitHub Actions自动化编译是打造专属OpenWrt固件的高效方案,无需复杂本地环境配置,通过云端自动化流程即可定制功能丰富的路由器系统。本文将详细介绍如何利用GitHub Actions-OpenWrt项目实现从代码拉取到固件生成的全流程,帮助新手轻松掌握OpenWrt固件的定制与编译技巧。

准备工作:了解项目结构与核心组件

Actions-OpenWrt项目为不同路由器型号提供了定制化编译脚本,主要目录结构如下:

  • 设备型号目录:如CLX-S20P-hanwckf/JDCloud-AX6000-Baili-hanwckf/等,包含针对特定硬件的配置文件和补丁
  • 编译脚本:每个设备目录下的diy-part1.sh(环境准备)和diy-part2.sh(固件定制)
  • 教程文档Tutorial/文件夹包含各机型刷机指南,如JDCloud-AX6000-Baili.md详细说明了京东云AX6000的刷机步骤

核心功能文件:

  • 固件配置.mtwifi-cfg.config定义了默认编译选项,如是否包含luci-app-dockerman
  • 分区表工具mt7986a-dsa-jdcloud-re-cp-03.dts等设备树文件用于硬件适配

快速上手:3步开启自动化编译

1. 准备代码仓库

首先克隆项目到本地:

git clone https://gitcode.com/gh_mirrors/act/Actions-OpenWrt

2. 选择设备型号与配置

进入目标设备目录(以京东云AX6000为例):

cd Actions-OpenWrt/JDCloud-AX6000-Baili-hanwckf

修改diy-part2.sh定制固件功能,例如添加常用插件:

# 取消注释以下行以添加Docker支持
# sed -i 's/^#CONFIG_PACKAGE_luci-app-dockerman/CONFIG_PACKAGE_luci-app-dockerman/' .config

3. 启动GitHub Actions workflow

在GitHub仓库页面点击 Actions → 选择对应设备的workflow → 点击 Run workflow,根据提示选择:

  • 源码分支(如v7672支持mt_wifi v7.6.7.2驱动)
  • LAN IP地址(默认192.168.1.1)
  • WiFi驱动版本(推荐v7.6.7.2-fw-20240823

进阶技巧:优化固件性能与功能

选择最佳WiFi驱动

项目提供多种WiFi驱动组合,影响无线性能和稳定性:

  • 推荐组合v7.6.7.2-fw-20240823,基于联发科官方20240823版本固件
  • 兼容性选择v7.6.6.1-fw-20230808,适合对稳定性要求高的场景

查看当前驱动版本的命令:

# 查看WiFi驱动版本
iwpriv ra0 get_driverinfo
# 查看固件版本
strings /lib/firmware/7986_WACPU_RAM_CODE_release.bin | grep -E '202[0-9]{6}'

调整无线发射功率

通过修改eeprom参数提升信号强度(以京东云AX6000为例):

# 临时调整5G发射功率为24dBm
hex_value='\x2B'
printf "$hex_value%.0s" $(seq 1 20) > /tmp/tmp.bin
dd if=/tmp/tmp.bin of=/lib/firmware/MT7986_ePAeLNA_EEPROM_AX6000.bin bs=1 seek=$((0x445)) conv=notrunc

切换交换机驱动模式

根据网络需求选择合适的交换机驱动:

  • GSW模式:支持swconfig配置工具,适合简单网络拓扑
  • DSA模式:支持高级VLAN配置,适合复杂网络环境

切换命令:

# 在uboot环境变量中设置
fw_setenv switch_mode dsa  # 或 gsw

故障排除:常见问题与解决方法

编译失败

  • 依赖问题:检查feeds.conf.default是否包含必要源
  • 配置冲突:使用make defconfig重置配置后重新定制

固件无法启动

  1. 检查分区表是否匹配:使用sgdisk -p /dev/mmcblk0确认分区结构
  2. 恢复原厂uboot:通过串口刷写备份的mmcblk0p4_fip.bin
  3. 验证固件格式:确保选择正确的镜像类型(.bin格式适用于Legacy系统,.itb格式适用于FIT系统)

无线功能异常

  • 恢复factory分区:dd if=mmcblk0p3_factory.bin of=$(blkid -t PARTLABEL=factory -o device)
  • 更换eeprom文件:替换/lib/firmware/MT7986_ePAeLNA_EEPROM_AX6000.bin

刷机教程:以京东云AX6000为例

备份原厂分区

# 备份关键分区到storage
dd if=/dev/mmcblk0boot0 of=/mnt/mmcblk0p13/mmcblk0boot0_bl2.bin conv=fsync
dd if=/dev/mmcblk0p3 of=/mnt/mmcblk0p13/mmcblk0p3_factory.bin conv=fsync

刷写uboot与分区表

# 刷写bl2
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=mt7986_jdcloud_re-cp-03-bl2_20241010.bin of=/dev/mmcblk0boot0 conv=fsync
# 刷写gpt分区表
dd if=jdcloud_re-cp-03_rootfs512M_production512M-gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync

通过uboot webui刷固件

  1. 路由器断电,按住reset键上电,指示灯变蓝后松开
  2. 电脑设置固定IP 192.168.1.2,访问http://192.168.1.1
  3. 上传编译好的固件文件,等待刷写完成自动重启

总结:打造个性化OpenWrt固件的最佳实践

通过GitHub Actions-OpenWrt项目,即使是新手也能轻松定制专业级OpenWrt固件。关键步骤包括:

  1. 选择合适的设备配置目录
  2. 优化编译选项与驱动版本
  3. 利用uboot工具安全刷机
  4. 根据需求调整无线参数与网络配置

项目持续整合hanwckf等大佬的闭源驱动和优化补丁,支持MT7981/MT7986等主流芯片方案,为路由器爱好者提供了一站式的固件定制解决方案。

【免费下载链接】Actions-OpenWrt 自用 【免费下载链接】Actions-OpenWrt 项目地址: https://gitcode.com/gh_mirrors/act/Actions-OpenWrt

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐