├── .github
├── FUNDING.yml
└── workflows
│ ├── clean-workflow.yml
│ ├── build-sunxi-cortexa53-23.05.4.yml
│ ├── build-sunxi-cortexa53-24.10.x.yml
│ ├── build-RaspBerryPi-23.05.4.yml
│ ├── build-RaspBerryPi-24.10.x.yml
│ ├── build-QEMU-arm64-24.10.x.yml
│ ├── build-x86-64-23.05.4.yml
│ ├── build-x86-64-24.10.x.yml
│ ├── build-iso.yml
│ ├── build-rockchip-immortalWrt-23.05.4.yml
│ ├── build-rockchip-immortalWrt-24.10.x.yml
│ ├── build-dev-board-by-flippy.yml
│ ├── build-N1.yml
│ ├── build-boxs-by-ophub.yml
│ └── build-wireless-router.yml
├── n1
├── 99-banner.sh
├── banner
├── radxa.md
├── info.md
├── box.md
└── build.sh
├── arch
└── arch.conf
├── mediatek-filogic
├── info.md
├── build24.sh
└── build23.sh
├── info.md
├── sunxi-cortexa53
├── info.md
├── build23.sh
└── build24.sh
├── rockchip
├── target.txt
├── build23.sh
├── build24.sh
└── makeinfo.txt
├── model
├── bcm53xx.txt
├── ipq807x.txt
└── mt7621.txt
├── armsr-armv8
├── info.md
└── build.sh
├── shell
├── prepare-packages.sh
└── custom-packages.sh
├── PACKAGES.md
├── raspberrypi
├── 23.05.4
│ └── build.sh
└── 24.10
│ └── build.sh
├── glinet
└── 99-custom.sh
├── x86-64
├── build23.sh
└── build24.sh
├── README.md
├── files
└── etc
│ └── uci-defaults
│ └── 99-custom.sh
└── SUPPORT.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: https://wkdaily.cpolar.cn/01
2 |
--------------------------------------------------------------------------------
/n1/99-banner.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | cp /mnt/banner /etc/banner
3 | rm /mnt/banner
--------------------------------------------------------------------------------
/arch/arch.conf:
--------------------------------------------------------------------------------
1 | arch all 1
2 | arch noarch 1
3 | arch aarch64_generic 10
4 | arch aarch64_cortex-a53 15
--------------------------------------------------------------------------------
/mediatek-filogic/info.md:
--------------------------------------------------------------------------------
1 | [](https://wkdaily.cpolar.top/archives/1)
2 | #### 用户名 `root` 密码:无
--------------------------------------------------------------------------------
/info.md:
--------------------------------------------------------------------------------
1 | [](https://wkdaily.cpolar.top/archives/1)
2 | #### 固件地址 `192.168.100.1`
3 | #### 用户名 `root` 密码:无
4 | #### 默认软件包大小 1GB
5 |
--------------------------------------------------------------------------------
/sunxi-cortexa53/info.md:
--------------------------------------------------------------------------------
1 | [](https://wkdaily.cpolar.top/archives/1)
2 | #### 1、若是单网口设备默认DHCP模式 比如Zero3
3 | #### 2、若是双网口设备 比如R1S
4 | #### Lan口 地址 `192.168.100.1` Wan:DHCP
5 | #### 用户名 `root` 密码:无
6 |
--------------------------------------------------------------------------------
/rockchip/target.txt:
--------------------------------------------------------------------------------
1 | friendlyarm_nanopi-r2c ,friendlyarm_nanopi-r2c-plus ,friendlyarm_nanopi-r2s ,friendlyarm_nanopi-r3s ,friendlyarm_nanopi-r4s ,friendlyarm_nanopi-r4se ,friendlyarm_nanopi-r4s-enterprise ,friendlyarm_nanopi-r5c ,friendlyarm_nanopi-r5s ,friendlyarm_nanopi-r6c ,friendlyarm_nanopi-r6s ,lunzn_fastrhino-r66s ,lunzn_fastrhino-r68s ,lyt_t68m
2 |
--------------------------------------------------------------------------------
/n1/banner:
--------------------------------------------------------------------------------
1 | .___ __ .__
2 | | | _____ _____ ____________/ |______ | |
3 | | |/ \ / \ / _ \_ __ \ __\__ \ | |
4 | | | Y Y \ Y Y ( <_> ) | \/| | / __ \| |__
5 | |___|__|_| /__|_| /\____/|__| |__| (____ /____/
6 | \/ \/ BE FREE AND UNAFRAID \/
7 | -----------------------------------------------------
8 | ImmortalWrt 24.10.4, r33247-467867283bb9
9 | -----------------------------------------------------
10 |
11 |
--------------------------------------------------------------------------------
/model/bcm53xx.txt:
--------------------------------------------------------------------------------
1 | asus_rt-ac3100
2 | asus_rt-ac56u
3 | asus_rt-ac68u
4 | asus_rt-ac87u
5 | asus_rt-ac88u
6 | asus_rt-n18u
7 | buffalo_wxr-1900dhp
8 | buffalo_wzr-1750dhp
9 | buffalo_wzr-600dhp2
10 | buffalo_wzr-900dhp
11 | dlink_dir-885l
12 | dlink_dir-890l
13 | dlink_dwl-8610ap
14 | linksys_ea6300-v1
15 | linksys_ea6500-v2
16 | linksys_ea9200
17 | linksys_ea9500
18 | luxul_abr-4500
19 | luxul_xap-1610
20 | luxul_xbr-4500
21 | luxul_xwr-3150
22 | meraki_mr26
23 | meraki_mr32
24 | meraki_mx64
25 | meraki_mx64_a0
26 | meraki_mx65
27 | netgear_r6250
28 | netgear_r6300-v2
29 | netgear_r7000
30 | netgear_r7900
31 | netgear_r8000
32 | phicomm_k3
33 | smartrg_sr400ac
34 | tenda_ac9
35 |
--------------------------------------------------------------------------------
/model/ipq807x.txt:
--------------------------------------------------------------------------------
1 | arcadyan_aw1000
2 | asus_rt-ax89x
3 | buffalo_wxr-5950ax12
4 | cmcc_rm2-6
5 | compex_wpq873
6 | dynalink_dl-wrx36
7 | edgecore_eap102
8 | edimax_cax1800
9 | linksys_mx4200v1
10 | linksys_mx4200v2
11 | linksys_mx4300
12 | linksys_mx5300
13 | linksys_mx8500
14 | netgear_rax120v2
15 | netgear_sxr80
16 | netgear_sxs80
17 | netgear_wax218
18 | netgear_wax620
19 | netgear_wax630
20 | prpl_haze
21 | qnap_301w
22 | redmi_ax6
23 | redmi_ax6-stock
24 | spectrum_sax1v1k
25 | tplink_eap660hd-v1
26 | xiaomi_ax3600
27 | xiaomi_ax3600-stock
28 | xiaomi_ax9000
29 | xiaomi_ax9000-stock
30 | yuncore_ax880
31 | zbtlink_zbt-z800ax
32 | zte_mf269
33 | zte_mf269-stock
34 | zyxel_nbg7815
--------------------------------------------------------------------------------
/armsr-armv8/info.md:
--------------------------------------------------------------------------------
1 | [](https://wkdaily.cpolar.top/archives/1)
2 | #### 此固件为ARM64虚拟机专用
3 | #### 格式为qcow2 该格式可在虚拟机里自由扩展大小 无需添加另一块虚拟硬盘
4 | #### 固件地址 `192.168.100.1`
5 | #### 用户名 `root` 密码:无
6 | #### 默认软件包大小 2GB
7 |
8 | ##### 该固件导入单网口虚拟机的时候 默认采用DHCP模式 在虚拟机终端输入`ip a` 查看ip 后访问web
9 | ##### 该固件导入多网口虚拟机的时候 默认第一个网口采用DHCP模式 视为wan 其他网口自动br-lan
10 | ##### 若release中下载吃力 可在国内加速站下载 https://wkdaily.cpolar.top/archives/1
11 |
12 | - 你可以理解为这是一种ARM64 通用型OpenWrt ,产出格式为qcow2,适合所有ARM64平台的虚拟机
13 | - 举例来说 目前有哪些arm64虚拟机?
14 | - 比如斐讯N1刷了armbian系统,armbian系统里安装了PVE虚拟机 可用
15 | - 比如新款Apple Silicon芯片的苹果电脑里的虚拟机UTM 可用
16 | - 比如友善NanoPi R3S、R5S 官方推出的预装了PVE的debian系统 可用
17 | - 比如瑞莎E20C刷了Armbian系统,自己安装了QEMU+原生的KVM虚拟机 可用
--------------------------------------------------------------------------------
/shell/prepare-packages.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASE_DIR="extra-packages"
4 | TEMP_DIR="$BASE_DIR/temp-unpack"
5 | TARGET_DIR="packages"
6 |
7 | # 清理旧的目录
8 | rm -rf "$TEMP_DIR" "$TARGET_DIR"
9 | mkdir -p "$TEMP_DIR" "$TARGET_DIR"
10 |
11 | # 解压 .run 文件
12 | for run_file in "$BASE_DIR"/*.run; do
13 | [ -e "$run_file" ] || continue
14 | echo "🧩 解压 $run_file -> $TEMP_DIR"
15 | sh "$run_file" --target "$TEMP_DIR" --noexec
16 | done
17 |
18 | # 1. 收集 run 解压出的 .ipk 文件
19 | find "$TEMP_DIR" -type f -name "*.ipk" -exec cp -v {} "$TARGET_DIR"/ \;
20 |
21 | # 2. 收集 extra-packages/*/ 下的 .ipk 文件(只查一级子目录)
22 |
23 | find "$BASE_DIR" -mindepth 2 -maxdepth 2 -type f -name "*.ipk" ! -path "$TEMP_DIR/*" \
24 | -exec echo "👉 Found:" {} \; \
25 | -exec cp -v {} "$TARGET_DIR"/ \;
26 |
27 | echo "✅ 所有 .ipk 文件已整理至 $TARGET_DIR/"
--------------------------------------------------------------------------------
/n1/radxa.md:
--------------------------------------------------------------------------------
1 | #### luci版本 24.10.2 固件不是传统ext4和squashfs格式 而是btrfs格式 支持快照
2 | #### 单网口机型后台地址 `没有没有没有,需查询` 请在上级路由器的dhcp列表中查询具体的局域网ip
3 | #### 多网口机型后台地址:`192.168.100.1`
4 | #### 用户名 `root` 密码:password
5 | #### 是否带docker: 根据用户选择
6 | #### 默认软件包大小 1GB
7 | #### 内核版本:根据用户选择
8 | #### rootfs.tar.gz 构建采用ImmortalWrt的ImageBuilder
9 | #### 打包img 采用 `flippy-openwrt-actions`
10 | #### 默认底包位置:https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/tag/rootfs
11 |
12 | ## 各位尽量不要直接使用项目中的release 要自己fork项目后自行构建
本项目中的release仅用于作者测试 且会定期删除
13 | ##### 若release中下载吃力 可在国内加速站下载
14 | [](https://wkdaily.cpolar.top/archives/1)
15 | > 支持的机型列表:
16 | - e20c - e24c - e25 - e52c - e54c - rock5b - rock5c
17 | - r66s - r68s - ht2 - h28k - h66k - h68k- h69k - h69k-max - h88k - h88k-v3
18 | - jp-tvbox - l1pro
19 | - s905 - s905x2 - s905x3 - s912 - s922x - s922x-n2
--------------------------------------------------------------------------------
/n1/info.md:
--------------------------------------------------------------------------------
1 | ## ImmortalWrt for 斐讯N1
2 | #### luci版本 24.10.2 固件不是传统ext4和squashfs格式 而是btrfs格式 支持快照
3 | #### 后台地址 `没有没有没有,需查询` 详见下文
4 | #### 用户名 `root` 密码:password
5 | #### 是否带docker: 根据用户选择
6 | #### 默认软件包大小 1GB
7 | #### 内核版本:根据用户选择
8 | #### 晶晨宝盒:✅ 自带 用于写入emmc (这一步等以后稳定再考虑写入 非必要不写入 其实用U盘很自由)
9 | #### rootfs.tar.gz 构建采用ImmortalWrt的ImageBuilder
10 | #### 打包img 采用`onhub/amlogic-s9xxx-openwrt` 或 `flippy-openwrt-actions`
11 | #### 默认底包位置:https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/tag/rootfs
12 |
13 |
14 | ### 斐讯N1为单网口设备 网线接上路由器 启动后默认是自动获取ip的模式
请在上级路由器的dhcp列表中查询具体的局域网ip
15 | ### 若后续想设置其他ip或者旁路 请在web页面自行设置即可
总之 这个逻辑就是默认让它有网 和 普通电脑、NAS 无异
16 | ### 一定要阅读清楚 再刷机 推荐使用U盘做测试(0风险) 不建议一开始就写入EMMC
17 | ## 各位尽量不要直接使用项目中的release 要自己fork项目后自行构建
本项目中的release仅用于作者测试 且会定期删除
18 | ##### 若release中下载吃力 可在国内加速站下载
19 | [](https://wkdaily.cpolar.top/archives/1)
20 |
--------------------------------------------------------------------------------
/.github/workflows/clean-workflow.yml:
--------------------------------------------------------------------------------
1 | name: Cleanup Old Workflow Runs
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | keep_days:
7 | description: "保留最近多少天(默认 1)"
8 | required: false
9 | default: "1"
10 |
11 | jobs:
12 | cleanup:
13 | runs-on: ubuntu-latest
14 | permissions:
15 | actions: write
16 |
17 | steps:
18 | - name: 安装 jq
19 | run: |
20 | sudo apt-get update
21 | sudo apt-get install -y jq
22 |
23 | - name: 删除指定天数前的已完成运行
24 | env:
25 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26 | KEEP_DAYS: ${{ github.event.inputs.keep_days }}
27 | run: |
28 | : "${KEEP_DAYS:=1}"
29 | THRESHOLD="$(date -u -d "${KEEP_DAYS} days ago" '+%Y-%m-%dT%H:%M:%SZ')"
30 | echo "阈值时间(UTC):$THRESHOLD"
31 |
32 | RUN_IDS=$(gh api -X GET "repos/${GITHUB_REPOSITORY}/actions/runs" \
33 | --paginate -F per_page=100 \
34 | --jq '.workflow_runs[]
35 | | select(.status=="completed" and .created_at < "'"$THRESHOLD"'")
36 | | .id')
37 |
38 | if [ -z "$RUN_IDS" ]; then
39 | echo "✅ 没有可删除的运行"
40 | exit 0
41 | fi
42 |
43 | echo "待删除运行数量:$(wc -w <<< "$RUN_IDS")"
44 | for ID in $RUN_IDS; do
45 | echo "🗑 正在删除运行 ID: $ID"
46 | gh api -X DELETE "repos/${GITHUB_REPOSITORY}/actions/runs/${ID}" || {
47 | echo "⚠️ 删除失败:$ID(将继续处理其他项)"
48 | }
49 | sleep 0.2
50 | done
51 |
52 | echo "🎉 清理完成"
53 |
--------------------------------------------------------------------------------
/n1/box.md:
--------------------------------------------------------------------------------
1 | #### luci版本 24.10.2 固件不是传统ext4和squashfs格式 而是btrfs格式 支持快照
2 | #### 单网口机型后台地址 `没有没有没有,需查询` 请在上级路由器的dhcp列表中查询具体的局域网ip
3 | #### 多网口机型后台地址:`192.168.100.1`
4 | #### 用户名 `root` 密码:password
5 | #### 是否带docker: 根据用户选择
6 | #### 默认软件包大小 1GB
7 | #### 内核版本:根据用户选择
8 | #### rootfs.tar.gz 构建采用ImmortalWrt的ImageBuilder
9 | #### 打包img 采用 `ophub/amlogic-s9xxx-openwrt@main`
10 | #### 默认底包位置:https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/tag/rootfs
11 |
12 | #### 本项目中的release仅用于作者测试 且会定期删除 建议fork本项目后自行在Action构建
13 | ##### 若release中下载吃力 可在国内加速站下载
14 | [](https://wkdaily.cpolar.top/archives/1)
15 | > 支持的机型列表:
16 |
17 | > a311d, a311d-oes, s922x-oes-plus, wxy-oect, wxy-oect-replaced, panther-x2, jp-tvbox, s905x3-hk1, tanix-tx6, s905l-b860av21u, s905l2-e900v21e, s905l, s905l-aurora-1s, s905l-mg101, s905l2, s905l2-wojia, s905l3, s905l3-cm211, s905l3-unt400g1, s905l3-unt402a, s905l3a, s905l3a-cm311, s905l3a-m401a, s905l3b, s905l3b-e900v21d, s905l3b-e900v22d, s905l3b-e900v22e, s905l3b-ip103h, s905l3b-rg020et-ca, s905l3b-unt403a, s905lb-ipbs9505, s905lb-q96-mini, s905lb-r3300l, r66s, r68s, nanopc-t6, nanopi-r5c, nanopi-r5s, orangepi-5-plus, orangepi-5b, alark35-3500, anas3035, beikeyun, chainedbox, crrc, dc-a588, dg3399, dg-tn3568, dlfr100, e20c, e25, eaidk-610, emb3531, fine3399, firefly-rk3399, fmx1-pro, h28k, h66k, h68k, h69k, h88k, h88k-v3, h96-max-m2, hs530r, hugsun-x99, ipc-r, king3399, kylin3399, lckfb-tspi, leez, lx-r3s, mrkaio-m68s, renegade-rk3328, rk3318-box, rock5b, rock5c, ruisen-box, s905, s905-beelink-mini, s905-mxqpro-plus, s905d-ki-pro, s905d-sml5442tw, s905mb, s905w, s905w-w95, s905w-x96-mini, s905w-x96w, s905x, s905x-b860h, s905x-nexbox-a95x, s905x-t95, s905x-tbee, s905x-tx9, s905x2, s905x2-km3, s905x2-x96max-2g, s905x3, s905x3-2101, s905x3-a100, s905x3-a95xf3, s905x3-a95xf3-gb, s905x3-b, s905x3-h96max, s905x3-ip1001m, s905x3-q1, s905x3-q2, s905x3-tx3, s905x3-tx3-bz, s905x3-ugoosx3, s905x3-whale, s905x3-x88-pro-x3, s905x3-x96air, s905x3-x96air-gb, s905x3-x96max, s912, s912-h96pro-plus, s912-m8s-pro, s912-nexbox-a1, s912-nexbox-a2, s912-onecloudpro, s912-phicomm-t1, s912-t95z-plus, s912-tx8-max, s912-tx9-pro-2g, s912-tx9-pro-3g, s912-x92, s912-zyxq-fake, s922x, s922x-ct2000, s922x-gtking, s922x-gtkingpro-h, s922x-odroid-n2, s922x-reva, s922x-ugoos-am6, seewo-sv21, smart-am40, smart-am60, station-m1, station-m2, sv-33a6x, swan1-w28, sw799, tb-ls3399, tn3399, tpm312, tqc-a01, tvi3315a, vplus, xiaobao, yskj, zcube1-max, zk-r39a, zysj
--------------------------------------------------------------------------------
/shell/custom-packages.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # ============= imm仓库外的第三方插件==============
3 | # ============= 若启用 则打开注释 ================
4 | # ============= 但此文件也可以处理仓库内的软件去留 本质上是做了一个PACKAGES字符串的拼接 ================
5 |
6 | # 各位注意 如果你构建的固件是硬路由 此文件的注释要酌情考虑是否打开 因为硬路由的闪存空间有限 若构建出来过大或者构建失败 记得调整本文件的注释
7 | # 考虑到istore商店的集成与否 属于高频操作 故 目前已将集成store的操作放置在 工作流的UI 选项 用户自行勾选 则集成 不勾选则不集成 以减少修改此文件的次数
8 |
9 | # 首页和网络向导
10 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-i18n-quickstart-zh-cn"
11 | # 高级卸载 by YT Vedio Talk
12 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-uninstall"
13 | # 极光主题 by github eamonxg
14 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-theme-aurora"
15 | # 去广告adghome
16 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-adguardhome"
17 | # 代理相关
18 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-i18n-passwall-zh-cn"
19 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-ssr-plus"
20 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-passwall2"
21 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-i18n-nikki-zh-cn"
22 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-nekobox"
23 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES momo luci-app-momo luci-i18n-momo-zh-cn"
24 | # 同样是代理相关 但以下2个属于imm仓库内的软件 一般在build24.sh中已经集成 你也可以在此处调整它的去留 若去除组件则使用减号- 若添加则 不使用减号 或者 不处理
25 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES -luci-app-openclash"
26 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES -luci-i18n-homeproxy-zh-cn"
27 | # VPN
28 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-tailscale luci-i18n-tailscale-zh-cn"
29 | # 分区扩容 by sirpdboy
30 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-partexp luci-i18n-partexp-zh-cn"
31 | # 酷猫主题 by sirpdboy
32 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-theme-kucat"
33 | # 进阶设置 by sirpdboy
34 | # 当luci-app-advancedplus插件开启时 需排除冲突项 luci-app-argon-config和luci-i18n-argon-config-zh-cn 减号代表排除
35 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-advancedplus luci-i18n-advancedplus-zh-cn -luci-app-argon-config -luci-i18n-argon-config-zh-cn"
36 | # 网络测速 by sirpdboy
37 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-netspeedtest luci-i18n-netspeedtest-zh-cn"
38 | # MosDNS
39 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-mosdns luci-i18n-mosdns-zh-cn"
40 | # Turbo ACC 网络加速
41 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-turboacc"
42 | # 应用过滤 openappfilter.com
43 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-appfilter luci-i18n-appfilter-zh-cn"
44 | # 设置向导 by sirpdboy
45 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-netwizard luci-i18n-netwizard-zh-cn"
46 | # Lucky大吉
47 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-lucky lucky"
48 | # 集客AC
49 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-gecoosac gecoosac"
50 | # 任务设置
51 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-taskplan luci-i18n-taskplan-zh-cn"
52 | # Easytier
53 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES easytier luci-app-easytier"
54 | # 统一文件共享
55 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES webdav2 luci-app-unishare"
56 | # IPSec VPN 服务器
57 | #CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-i18n-ipsec-vpnd-zh-cn"
58 |
--------------------------------------------------------------------------------
/PACKAGES.md:
--------------------------------------------------------------------------------
1 | # 支持的第三方软件列表如下
2 | > 第三方软件就是ImmortalWrt仓库以外的软件包
3 |
4 |
5 | | 软件名称 | 简介 / 功能描述 | 来源 / 项目地址 |
6 | | --------------------- | -------------------------------- | ----------------------------------------------------------------------------------- |
7 | | luci-app-store | iStore应用商店 | [linkease/luci-app-store](https://github.com/linkease/istore) |
8 | | luci-app-amlogic | 晶晨宝盒(仅限ARM-64平台) | [ophub/luci-app-amlogic](https://github.com/ophub/luci-app-amlogic) |
9 | | luci-app-adguardhome | 本地 DNS 去广告解决方案 | [AdGuardTeam/AdGuardHome](https://github.com/AdguardTeam/AdGuardHome) |
10 | | luci-app-advancedplus | 高级设置 | [sirpdboy/luci-app-advancedplus](https://github.com/sirpdboy/luci-app-advancedplus) |
11 | | luci-app-netspeedtest | 网络测速插件-支持 Speedtest 测试 | [sirpdboy/luci-app-netspeedtest](https://github.com/sirpdboy/luci-app-netspeedtest) |
12 | | luci-app-netwizard | 网络配置向导插件 | [sirpdboy/luci-app-netwizard](https://github.com/sirpdboy/luci-app-netwizard) |
13 | | luci-app-partexp | 分区扩容插件 | [sirpdboy/luci-app-partexp](https://github.com/sirpdboy/luci-app-partexp) |
14 | | luci-app-quickstart | iStore首页和网络向导 | [linkease/luci-app-quickstart](https://github.com/kiddin9/kwrt-packages/tree/main/luci-app-quickstart) |
15 | | luci-app-turboacc | TurboACC 网络加速器(集成BBR、shortcut) | [chenmozhijin/turboacc](https://github.com/wukongdaily/store/tree/master/run/x86/luci-app-turboacc) |
16 | | luci-theme-kucat | 酷猫主题 | [sirpdboy/luci-theme-kucat](https://github.com/sirpdboy/luci-theme-kucat) |
17 | | luci-app-mosdns | 高性能 DNS 分流器,支持 DoH/DoQ 等 | [sbwml/luci-app-mosdns](https://github.com/sbwml/luci-app-mosdns) |
18 | | luci-app-nekobox | 代理工具 | [Thaolga/luci-app-nekobox](https://github.com/Thaolga/openwrt-nekobox) |
19 | | luci-app-nikki | 代理工具 | [nikkinikki-org/nikki](https://github.com/nikkinikki-org/OpenWrt-nikki) |
20 | | luci-app-passwall2 | 代理工具 | [xiaorouji/openwrt-passwall2](https://github.com/xiaorouji/openwrt-passwall2) |
21 | | luci-app-ssr-plus | 代理工具 | [coolsnowwolf/luci-app-ssr-plus](https://github.com/coolsnowwolf/luci-app-ssr-plus) |
22 | | tailscale | ZeroTier 类似的 VPN 工具,基于 WireGuard | [tailscale/tailscale](https://github.com/tailscale/tailscale) |
23 |
--------------------------------------------------------------------------------
/raspberrypi/23.05.4/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | echo "第三方软件包: $CUSTOM_PACKAGES"
4 | # yml 传入的路由器型号 PROFILE
5 | echo "Building for profile: $PROFILE"
6 | echo "Include Docker: $INCLUDE_DOCKER"
7 | # yml 传入的固件大小 ROOTFS_PARTSIZE
8 | echo "Building for ROOTFS_PARTSIZE: $ROOTSIZE"
9 | if [ -z "$CUSTOM_PACKAGES" ]; then
10 | echo "⚪️ 未选择 任何第三方软件包"
11 | else
12 | # 下载 run 文件仓库
13 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
14 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
15 |
16 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
17 | mkdir -p /home/build/immortalwrt/extra-packages
18 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
19 |
20 | echo "✅ Run files copied to extra-packages:"
21 | ls -lh /home/build/immortalwrt/extra-packages/*.run
22 | # 解压并拷贝ipk到packages目录
23 | sh shell/prepare-packages.sh
24 | ls -lah /home/build/immortalwrt/packages/
25 | # 添加架构优先级信息
26 | sed -i '1i\
27 | arch aarch64_generic 10\n\
28 | arch aarch64_cortex-a53 15' repositories.conf
29 | fi
30 |
31 |
32 | # 输出调试信息
33 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
34 |
35 |
36 | # 定义所需安装的包列表 23.05.4
37 | PACKAGES=""
38 | PACKAGES="$PACKAGES curl"
39 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
40 | PACKAGES="$PACKAGES luci-i18n-opkg-zh-cn"
41 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
42 | PACKAGES="$PACKAGES luci-i18n-filebrowser-zh-cn"
43 | PACKAGES="$PACKAGES luci-theme-argon"
44 | PACKAGES="$PACKAGES luci-app-argon-config"
45 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
46 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
47 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
48 | PACKAGES="$PACKAGES luci-app-openclash"
49 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
50 | PACKAGES="$PACKAGES openssh-sftp-server"
51 | # ======== shell/custom-packages.sh =======
52 | # 合并imm仓库以外的第三方插件
53 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
54 |
55 | # 判断是否需要编译 Docker 插件
56 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
57 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
58 | echo "Adding package: luci-i18n-dockerman-zh-cn"
59 | fi
60 |
61 | # 若构建openclash 则添加内核
62 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
63 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
64 | mkdir -p files/etc/openclash/core
65 | # Download clash_meta
66 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
67 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
68 | chmod +x files/etc/openclash/core/clash_meta
69 | # Download GeoIP and GeoSite
70 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
71 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
72 | else
73 | echo "⚪️ 未选择 luci-app-openclash"
74 | fi
75 |
76 | # 构建镜像
77 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
78 | echo "$PACKAGES"
79 |
80 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTSIZE
81 |
82 | if [ $? -ne 0 ]; then
83 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
84 | exit 1
85 | fi
86 |
87 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
88 |
--------------------------------------------------------------------------------
/sunxi-cortexa53/build23.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | echo "第三方软件包: $CUSTOM_PACKAGES"
4 | # yml 传入的路由器型号 PROFILE
5 | echo "Building for profile: $PROFILE"
6 | echo "Include Docker: $INCLUDE_DOCKER"
7 | # yml 传入的固件大小 ROOTFS_PARTSIZE
8 | echo "Building for ROOTFS_PARTSIZE: $ROOTSIZE"
9 |
10 | if [ -z "$CUSTOM_PACKAGES" ]; then
11 | echo "⚪️ 未选择 任何第三方软件包"
12 | else
13 | # 下载 run 文件仓库
14 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
15 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
16 |
17 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
18 | mkdir -p /home/build/immortalwrt/extra-packages
19 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
20 |
21 | echo "✅ Run files copied to extra-packages:"
22 | ls -lh /home/build/immortalwrt/extra-packages/*.run
23 | # 解压并拷贝ipk到packages目录
24 | sh shell/prepare-packages.sh
25 | ls -lah /home/build/immortalwrt/packages/
26 | # 添加架构优先级信息
27 | sed -i '1i\
28 | arch aarch64_generic 10\n\
29 | arch aarch64_cortex-a53 15' repositories.conf
30 | fi
31 |
32 | # 输出调试信息
33 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
34 |
35 |
36 | # 定义所需安装的包列表 下列插件你都可以自行删减
37 | PACKAGES=""
38 | PACKAGES="$PACKAGES curl"
39 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
40 | PACKAGES="$PACKAGES luci-i18n-filebrowser-zh-cn"
41 | PACKAGES="$PACKAGES luci-theme-argon"
42 | PACKAGES="$PACKAGES luci-app-argon-config"
43 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
44 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
45 | #23.05
46 | PACKAGES="$PACKAGES luci-i18n-opkg-zh-cn"
47 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
48 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
49 | PACKAGES="$PACKAGES luci-app-openclash"
50 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
51 | PACKAGES="$PACKAGES openssh-sftp-server"
52 | # ======== shell/custom-packages.sh =======
53 | # 合并imm仓库以外的第三方插件
54 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
55 |
56 | # 判断是否需要编译 Docker 插件
57 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
58 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
59 | echo "Adding package: luci-i18n-dockerman-zh-cn"
60 | fi
61 |
62 | # 若构建openclash 则添加内核
63 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
64 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
65 | mkdir -p files/etc/openclash/core
66 | # Download clash_meta
67 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
68 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
69 | chmod +x files/etc/openclash/core/clash_meta
70 | # Download GeoIP and GeoSite
71 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
72 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
73 | else
74 | echo "⚪️ 未选择 luci-app-openclash"
75 | fi
76 |
77 | # 构建镜像
78 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
79 | echo "$PACKAGES"
80 |
81 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTSIZE
82 |
83 | if [ $? -ne 0 ]; then
84 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
85 | exit 1
86 | fi
87 |
88 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
89 |
--------------------------------------------------------------------------------
/raspberrypi/24.10/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | echo "第三方软件包: $CUSTOM_PACKAGES"
4 | # yml 传入的路由器型号 PROFILE
5 | echo "Building for profile: $PROFILE"
6 | echo "Include Docker: $INCLUDE_DOCKER"
7 | # yml 传入的固件大小 ROOTFS_PARTSIZE
8 | echo "Building for ROOTFS_PARTSIZE: $ROOTSIZE"
9 | if [ -z "$CUSTOM_PACKAGES" ]; then
10 | echo "⚪️ 未选择 任何第三方软件包"
11 | else
12 | # 下载 run 文件仓库
13 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
14 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
15 |
16 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
17 | mkdir -p /home/build/immortalwrt/extra-packages
18 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
19 |
20 | echo "✅ Run files copied to extra-packages:"
21 | ls -lh /home/build/immortalwrt/extra-packages/*.run
22 | # 解压并拷贝ipk到packages目录
23 | sh shell/prepare-packages.sh
24 | ls -lah /home/build/immortalwrt/packages/
25 | # 添加架构优先级信息
26 | sed -i '1i\
27 | arch aarch64_generic 10\n\
28 | arch aarch64_cortex-a53 15' repositories.conf
29 | fi
30 |
31 | # 输出调试信息
32 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
33 |
34 |
35 | # 定义所需安装的包列表
36 | PACKAGES=""
37 | PACKAGES="$PACKAGES curl"
38 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
39 | # 服务——FileBrowser 用户名admin 密码admin
40 | PACKAGES="$PACKAGES luci-i18n-filebrowser-go-zh-cn"
41 | PACKAGES="$PACKAGES luci-theme-argon"
42 | PACKAGES="$PACKAGES luci-app-argon-config"
43 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
44 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
45 |
46 | #24.10
47 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
48 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
49 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
50 | PACKAGES="$PACKAGES luci-app-openclash"
51 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
52 | PACKAGES="$PACKAGES openssh-sftp-server"
53 | # ======== shell/custom-packages.sh =======
54 | # 合并imm仓库以外的第三方插件
55 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
56 |
57 | # 判断是否需要编译 Docker 插件
58 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
59 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
60 | echo "Adding package: luci-i18n-dockerman-zh-cn"
61 | fi
62 |
63 | # 若构建openclash 则添加内核
64 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
65 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
66 | mkdir -p files/etc/openclash/core
67 | # Download clash_meta
68 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
69 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
70 | chmod +x files/etc/openclash/core/clash_meta
71 | # Download GeoIP and GeoSite
72 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
73 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
74 | else
75 | echo "⚪️ 未选择 luci-app-openclash"
76 | fi
77 |
78 |
79 |
80 | # 构建镜像
81 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
82 | echo "$PACKAGES"
83 |
84 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTSIZE
85 |
86 | if [ $? -ne 0 ]; then
87 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
88 | exit 1
89 | fi
90 |
91 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
92 |
--------------------------------------------------------------------------------
/sunxi-cortexa53/build24.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | echo "第三方软件包: $CUSTOM_PACKAGES"
4 | # yml 传入的路由器型号 PROFILE
5 | echo "Building for profile: $PROFILE"
6 | echo "Include Docker: $INCLUDE_DOCKER"
7 | # yml 传入的固件大小 ROOTFS_PARTSIZE
8 | echo "Building for ROOTFS_PARTSIZE: $ROOTSIZE"
9 |
10 | if [ -z "$CUSTOM_PACKAGES" ]; then
11 | echo "⚪️ 未选择 任何第三方软件包"
12 | else
13 | # 下载 run 文件仓库
14 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
15 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
16 |
17 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
18 | mkdir -p /home/build/immortalwrt/extra-packages
19 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
20 |
21 | echo "✅ Run files copied to extra-packages:"
22 | ls -lh /home/build/immortalwrt/extra-packages/*.run
23 | # 解压并拷贝ipk到packages目录
24 | sh shell/prepare-packages.sh
25 | ls -lah /home/build/immortalwrt/packages/
26 | # 添加架构优先级信息
27 | sed -i '1i\
28 | arch aarch64_generic 10\n\
29 | arch aarch64_cortex-a53 15' repositories.conf
30 | fi
31 |
32 | # 输出调试信息
33 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
34 |
35 |
36 | # 定义所需安装的包列表 下列插件你都可以自行删减
37 | PACKAGES=""
38 | PACKAGES="$PACKAGES curl"
39 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
40 | # 服务——FileBrowser 用户名admin 密码admin
41 | PACKAGES="$PACKAGES luci-i18n-filebrowser-go-zh-cn"
42 | PACKAGES="$PACKAGES luci-theme-argon"
43 | PACKAGES="$PACKAGES luci-app-argon-config"
44 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
45 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
46 |
47 | #24.10
48 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
49 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
50 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
51 | PACKAGES="$PACKAGES luci-app-openclash"
52 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
53 | PACKAGES="$PACKAGES openssh-sftp-server"
54 | # ======== shell/custom-packages.sh =======
55 | # 合并imm仓库以外的第三方插件
56 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
57 |
58 |
59 | # 判断是否需要编译 Docker 插件
60 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
61 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
62 | echo "Adding package: luci-i18n-dockerman-zh-cn"
63 | fi
64 |
65 | # 若构建openclash 则添加内核
66 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
67 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
68 | mkdir -p files/etc/openclash/core
69 | # Download clash_meta
70 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
71 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
72 | chmod +x files/etc/openclash/core/clash_meta
73 | # Download GeoIP and GeoSite
74 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
75 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
76 | else
77 | echo "⚪️ 未选择 luci-app-openclash"
78 | fi
79 |
80 | # 构建镜像
81 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
82 | echo "$PACKAGES"
83 |
84 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTSIZE
85 |
86 | if [ $? -ne 0 ]; then
87 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
88 | exit 1
89 | fi
90 |
91 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
92 |
--------------------------------------------------------------------------------
/glinet/99-custom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # 该脚本为immortalwrt首次启动时 运行的脚本 即 /etc/uci-defaults/99-custom.sh 也就是说该文件在路由器内 重启后消失 只运行一次
3 | # 设置默认防火墙规则,方便虚拟机首次访问 WebUI
4 | LOGFILE="/etc/config/uci-defaults-log.txt"
5 | uci set firewall.@zone[1].input='ACCEPT'
6 |
7 | # 设置主机名映射,解决安卓原生 TV 无法联网的问题
8 | uci add dhcp domain
9 | uci set "dhcp.@domain[-1].name=time.android.com"
10 | uci set "dhcp.@domain[-1].ip=203.107.6.88"
11 |
12 | # 检查配置文件是否存在
13 | SETTINGS_FILE="/etc/config/pppoe-settings"
14 | if [ ! -f "$SETTINGS_FILE" ]; then
15 | echo "PPPoE settings file not found. Skipping." >> $LOGFILE
16 | else
17 | # 读取pppoe信息(由build.sh写入)
18 | . "$SETTINGS_FILE"
19 | fi
20 | # 设置子网掩码
21 | uci set network.lan.netmask='255.255.255.0'
22 | # 设置路由器管理后台地址
23 | IP_VALUE_FILE="/etc/config/custom_router_ip.txt"
24 | if [ -f "$IP_VALUE_FILE" ]; then
25 | CUSTOM_IP=$(cat "$IP_VALUE_FILE")
26 | # 设置路由器的管理后台地址
27 | uci set network.lan.ipaddr=$CUSTOM_IP
28 | echo "custom router ip is $CUSTOM_IP" >> $LOGFILE
29 | fi
30 |
31 |
32 | # 判断是否启用 PPPoE
33 | echo "print enable_pppoe value=== $enable_pppoe" >> $LOGFILE
34 | if [ "$enable_pppoe" = "yes" ]; then
35 | echo "PPPoE is enabled at $(date)" >> $LOGFILE
36 | # 设置拨号信息
37 | uci set network.wan.proto='pppoe'
38 | uci set network.wan.username=$pppoe_account
39 | uci set network.wan.password=$pppoe_password
40 | uci set network.wan.peerdns='1'
41 | uci set network.wan.auto='1'
42 | echo "PPPoE configuration completed successfully." >> $LOGFILE
43 | else
44 | echo "PPPoE is not enabled. Skipping configuration." >> $LOGFILE
45 | fi
46 |
47 | # 若安装了dockerd 则设置docker的防火墙规则
48 | # 扩大docker涵盖的子网范围 '172.16.0.0/12'
49 | # 方便各类docker容器的端口顺利通过防火墙
50 | if command -v dockerd >/dev/null 2>&1; then
51 | echo "检测到 Docker,正在配置防火墙规则..."
52 | FW_FILE="/etc/config/firewall"
53 |
54 | # 删除所有名为 docker 的 zone
55 | uci delete firewall.docker
56 |
57 | # 先获取所有 forwarding 索引,倒序排列删除
58 | for idx in $(uci show firewall | grep "=forwarding" | cut -d[ -f2 | cut -d] -f1 | sort -rn); do
59 | src=$(uci get firewall.@forwarding[$idx].src 2>/dev/null)
60 | dest=$(uci get firewall.@forwarding[$idx].dest 2>/dev/null)
61 | echo "Checking forwarding index $idx: src=$src dest=$dest"
62 | if [ "$src" = "docker" ] || [ "$dest" = "docker" ]; then
63 | echo "Deleting forwarding @forwarding[$idx]"
64 | uci delete firewall.@forwarding[$idx]
65 | fi
66 | done
67 | # 提交删除
68 | uci commit firewall
69 | # 追加新的 zone + forwarding 配置
70 | cat <>"$FW_FILE"
71 |
72 | config zone 'docker'
73 | option input 'ACCEPT'
74 | option output 'ACCEPT'
75 | option forward 'ACCEPT'
76 | option name 'docker'
77 | list subnet '172.16.0.0/12'
78 |
79 | config forwarding
80 | option src 'docker'
81 | option dest 'lan'
82 |
83 | config forwarding
84 | option src 'docker'
85 | option dest 'wan'
86 |
87 | config forwarding
88 | option src 'lan'
89 | option dest 'docker'
90 | EOF
91 |
92 | else
93 | echo "未检测到 Docker,跳过防火墙配置。"
94 | fi
95 |
96 | # 设置所有网口可访问网页终端
97 | uci delete ttyd.@ttyd[0].interface
98 |
99 | # 设置所有网口可连接 SSH
100 | uci set dropbear.@dropbear[0].Interface=''
101 | uci commit
102 |
103 | # 设置编译作者信息
104 | FILE_PATH="/etc/openwrt_release"
105 | NEW_DESCRIPTION="Packaged by wukongdaily"
106 | sed -i "s/DISTRIB_DESCRIPTION='[^']*'/DISTRIB_DESCRIPTION='$NEW_DESCRIPTION'/" "$FILE_PATH"
107 |
108 | exit 0
109 |
--------------------------------------------------------------------------------
/x86-64/build23.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | echo "编译固件大小为: $PROFILE MB"
8 | echo "Include Docker: $INCLUDE_DOCKER"
9 |
10 | echo "Create pppoe-settings"
11 | mkdir -p /home/build/immortalwrt/files/etc/config
12 |
13 | # 创建pppoe配置文件 yml传入环境变量ENABLE_PPPOE等 写入配置文件 供99-custom.sh读取
14 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
15 | enable_pppoe=${ENABLE_PPPOE}
16 | pppoe_account=${PPPOE_ACCOUNT}
17 | pppoe_password=${PPPOE_PASSWORD}
18 | EOF
19 |
20 | echo "cat pppoe-settings"
21 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
22 |
23 | if [ -z "$CUSTOM_PACKAGES" ]; then
24 | echo "⚪️ 未选择 任何第三方软件包"
25 | else
26 | # ============= 同步第三方插件库==============
27 | # 正在同步第三方软件仓库
28 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
29 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
30 |
31 | # 拷贝 run/x86 下所有 run 文件和ipk文件 到 extra-packages 目录
32 | mkdir -p /home/build/immortalwrt/extra-packages
33 | cp -r /tmp/store-run-repo/run/x86/* /home/build/immortalwrt/extra-packages/
34 |
35 | echo "✅ Run files copied to extra-packages:"
36 | ls -lh /home/build/immortalwrt/extra-packages/*.run
37 | # 解压并拷贝ipk到packages目录
38 | sh shell/prepare-packages.sh
39 | ls -lah /home/build/immortalwrt/packages/
40 | fi
41 |
42 | # 输出调试信息
43 | echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始构建..."
44 | # 定义所需安装的包列表 下列插件你都可以自行删减
45 | PACKAGES=""
46 | PACKAGES="$PACKAGES curl"
47 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
48 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
49 | PACKAGES="$PACKAGES luci-i18n-filebrowser-zh-cn"
50 | PACKAGES="$PACKAGES luci-theme-argon"
51 | PACKAGES="$PACKAGES luci-app-argon-config"
52 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
53 | PACKAGES="$PACKAGES luci-i18n-opkg-zh-cn"
54 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
55 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
56 | PACKAGES="$PACKAGES luci-app-openclash"
57 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
58 | PACKAGES="$PACKAGES openssh-sftp-server"
59 | PACKAGES="$PACKAGES luci-i18n-samba4-zh-cn"
60 | # 静态文件服务器dufs(推荐)
61 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
62 | # ======== shell/custom-packages.sh =======
63 | # 合并imm仓库以外的第三方插件
64 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
65 |
66 | # 判断是否需要编译 Docker 插件
67 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
68 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
69 | echo "Adding package: luci-i18n-dockerman-zh-cn"
70 | fi
71 |
72 | # 若构建openclash 则添加内核
73 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
74 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
75 | mkdir -p files/etc/openclash/core
76 | # Download clash_meta
77 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-amd64.tar.gz"
78 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
79 | chmod +x files/etc/openclash/core/clash_meta
80 | # Download GeoIP and GeoSite
81 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
82 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
83 | else
84 | echo "⚪️ 未选择 luci-app-openclash"
85 | fi
86 |
87 | # 构建镜像
88 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
89 | echo "$PACKAGES"
90 |
91 | make image PROFILE="generic" PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$PROFILE
92 |
93 | if [ $? -ne 0 ]; then
94 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
95 | exit 1
96 | fi
97 |
98 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
99 |
--------------------------------------------------------------------------------
/n1/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | # yml 传入的路由器型号 PROFILE
8 | echo "Building for profile: $PROFILE"
9 | # yml 传入的固件大小 ROOTFS_PARTSIZE
10 | echo "Building for ROOTFS_PARTSIZE: $ROOTFS_PARTSIZE"
11 | # 输出调试信息
12 | echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始构建arm64的rootfs.tar.gz"
13 | # 定义所需安装的包列表 下列插件你都可以自行删减
14 | PACKAGES=""
15 | PACKAGES="$PACKAGES curl fdisk"
16 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
17 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
18 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
19 | # 服务——FileBrowser 用户名admin 密码admin
20 | PACKAGES="$PACKAGES luci-i18n-filebrowser-go-zh-cn"
21 | PACKAGES="$PACKAGES luci-theme-argon"
22 | PACKAGES="$PACKAGES luci-app-argon-config"
23 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
24 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
25 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
26 | PACKAGES="$PACKAGES luci-app-openclash"
27 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
28 | PACKAGES="$PACKAGES openssh-sftp-server"
29 | PACKAGES="$PACKAGES luci-i18n-samba4-zh-cn"
30 | # 文件管理器
31 | PACKAGES="$PACKAGES luci-i18n-filemanager-zh-cn"
32 | # 静态文件服务器dufs(推荐)
33 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
34 | # 判断是否需要编译 Docker 插件
35 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
36 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
37 | echo "✅ 已选择docker : luci-i18n-dockerman-zh-cn"
38 | fi
39 | # 斐讯N1 无线
40 | PACKAGES="$PACKAGES kmod-brcmfmac wpad-basic-mbedtls iw iwinfo"
41 | PACKAGES="$PACKAGES perlbase-base perlbase-file perlbase-time perlbase-utf8 perlbase-xsloader"
42 | # 晶晨宝盒(追加第三方必备软件 用于写入emmc 请不要注释)
43 | CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-amlogic luci-i18n-amlogic-zh-cn"
44 |
45 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
46 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
47 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
48 | mkdir -p /home/build/immortalwrt/extra-packages
49 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
50 | echo "✅ Run files copied to extra-packages:"
51 | ls -lh /home/build/immortalwrt/extra-packages/*.run
52 | # 解压并拷贝ipk到packages目录
53 | sh shell/prepare-packages.sh
54 | ls -lah /home/build/immortalwrt/packages/
55 | # 添加架构优先级信息
56 | sed -i '1i\
57 | arch aarch64_generic 10\n\
58 | arch aarch64_cortex-a53 15' repositories.conf
59 |
60 | # ======== shell/custom-packages.sh =======
61 | # 合并imm仓库以外的第三方插件
62 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
63 |
64 | # 若构建openclash 则添加内核
65 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
66 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
67 | mkdir -p files/etc/openclash/core
68 | # Download clash_meta
69 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
70 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
71 | chmod +x files/etc/openclash/core/clash_meta
72 | # Download GeoIP and GeoSite
73 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
74 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
75 | else
76 | echo "⚪️ 未选择 luci-app-openclash"
77 | fi
78 |
79 |
80 | # 构建镜像
81 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
82 | echo "$PACKAGES"
83 |
84 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTFS_PARTSIZE
85 |
86 | if [ $? -ne 0 ]; then
87 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
88 | exit 1
89 | fi
90 |
91 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
92 |
--------------------------------------------------------------------------------
/x86-64/build24.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | echo "编译固件大小为: $PROFILE MB"
8 | echo "Include Docker: $INCLUDE_DOCKER"
9 |
10 | echo "Create pppoe-settings"
11 | mkdir -p /home/build/immortalwrt/files/etc/config
12 |
13 | # 创建pppoe配置文件 yml传入环境变量ENABLE_PPPOE等 写入配置文件 供99-custom.sh读取
14 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
15 | enable_pppoe=${ENABLE_PPPOE}
16 | pppoe_account=${PPPOE_ACCOUNT}
17 | pppoe_password=${PPPOE_PASSWORD}
18 | EOF
19 |
20 | echo "cat pppoe-settings"
21 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
22 |
23 | if [ -z "$CUSTOM_PACKAGES" ]; then
24 | echo "⚪️ 未选择 任何第三方软件包"
25 | else
26 | # ============= 同步第三方插件库==============
27 | # 同步第三方软件仓库run/ipk
28 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
29 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
30 |
31 | # 拷贝 run/x86 下所有 run 文件和ipk文件 到 extra-packages 目录
32 | mkdir -p /home/build/immortalwrt/extra-packages
33 | cp -r /tmp/store-run-repo/run/x86/* /home/build/immortalwrt/extra-packages/
34 |
35 | echo "✅ Run files copied to extra-packages:"
36 | ls -lh /home/build/immortalwrt/extra-packages/*.run
37 | # 解压并拷贝ipk到packages目录
38 | sh shell/prepare-packages.sh
39 | ls -lah /home/build/immortalwrt/packages/
40 | fi
41 |
42 | # 输出调试信息
43 | echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始构建固件..."
44 |
45 | # ============= imm仓库内的插件==============
46 | # 定义所需安装的包列表 下列插件你都可以自行删减
47 | PACKAGES=""
48 | PACKAGES="$PACKAGES curl"
49 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
50 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
51 | PACKAGES="$PACKAGES luci-theme-argon"
52 | PACKAGES="$PACKAGES luci-app-argon-config"
53 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
54 | #24.10
55 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
56 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
57 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
58 | PACKAGES="$PACKAGES luci-app-openclash"
59 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
60 | PACKAGES="$PACKAGES openssh-sftp-server"
61 | PACKAGES="$PACKAGES luci-i18n-samba4-zh-cn"
62 | # 文件管理器
63 | PACKAGES="$PACKAGES luci-i18n-filemanager-zh-cn"
64 | # 静态文件服务器dufs(推荐)
65 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
66 | # ======== shell/custom-packages.sh =======
67 | # 合并imm仓库以外的第三方插件
68 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
69 |
70 |
71 | # 判断是否需要编译 Docker 插件
72 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
73 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
74 | echo "Adding package: luci-i18n-dockerman-zh-cn"
75 | fi
76 |
77 | # 若构建openclash 则添加内核
78 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
79 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
80 | mkdir -p files/etc/openclash/core
81 | # Download clash_meta
82 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-amd64.tar.gz"
83 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
84 | chmod +x files/etc/openclash/core/clash_meta
85 | # Download GeoIP and GeoSite
86 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
87 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
88 | else
89 | echo "⚪️ 未选择 luci-app-openclash"
90 | fi
91 |
92 | # 构建镜像
93 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
94 | echo "$PACKAGES"
95 |
96 | make image PROFILE="generic" PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$PROFILE
97 |
98 | if [ $? -ne 0 ]; then
99 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
100 | exit 1
101 | fi
102 |
103 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
104 |
--------------------------------------------------------------------------------
/.github/workflows/build-sunxi-cortexa53-23.05.4.yml:
--------------------------------------------------------------------------------
1 | name: build-sunxi-cortexa53-23.05.4-ImmpotalWrt
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | profile:
7 | type: choice
8 | description: "请选择路由器型号"
9 | required: true
10 | options:
11 | - friendlyarm_nanopi-r1s-h5
12 | - xunlong_orangepi-zero-plus
13 | - friendlyarm_nanopi-neo2
14 | - xunlong_orangepi-pc2
15 | - friendlyarm_nanopi-neo-plus2
16 | - libretech_all-h3-cc-h5
17 | - pine64_pine64-plus
18 | - pine64_sopine-baseboard
19 | default: friendlyarm_nanopi-r1s-h5
20 | enable_store:
21 | description: "集成 store 商店"
22 | required: false
23 | type: boolean
24 | default: true
25 | include_docker:
26 | description: |
27 | 是否编译 Docker 插件
28 | required: true
29 | default: 'no'
30 | type: choice
31 | options:
32 | - 'yes'
33 | - 'no'
34 | size:
35 | description: '请输入要编译固件大小 单位(MB)'
36 | required: true
37 | default: '1024'
38 |
39 |
40 | jobs:
41 | build:
42 | runs-on: ubuntu-22.04
43 |
44 | steps:
45 | - name: Checkout code
46 | uses: actions/checkout@v3
47 |
48 | - name: Set executable permissions
49 | run: |
50 | chmod +x ${{ github.workspace }}/sunxi-cortexa53/build23.sh
51 |
52 | - name: Enable Store integration
53 | run: |
54 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
55 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
56 | echo "✅ 已追加 luci-app-store"
57 | else
58 | echo "❎ 未启用 luci-app-store"
59 | fi
60 |
61 | - name: Build sunxi-cortexa53 ImmpotalWrt 23.05.4
62 | run: |
63 | profiles="${{ github.event.inputs.profile }}"
64 | include_docker="${{ github.event.inputs.include_docker }}"
65 | size="${{ github.event.inputs.size }}"
66 |
67 | IFS=',' read -r -a profile_array <<< "$profiles"
68 |
69 | for profile in "${profile_array[@]}"; do
70 | echo "Building for profile: $profile"
71 |
72 | docker run --rm -i \
73 | --user root \
74 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
75 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
76 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
77 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
78 | -v "${{ github.workspace }}/sunxi-cortexa53/build23.sh:/home/build/immortalwrt/build.sh" \
79 | -e PROFILE=$profile \
80 | -e INCLUDE_DOCKER=$include_docker \
81 | -e ROOTSIZE=$size \
82 | immortalwrt/imagebuilder:sunxi-cortexa53-openwrt-23.05.4 /bin/bash /home/build/immortalwrt/build.sh
83 | done
84 |
85 | - name: Create info
86 | run: |
87 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
88 | extra_content="### 默认带docker"
89 | echo -e "\n $extra_content" >> ${{ github.workspace }}/sunxi-cortexa53/info.md
90 | else
91 | echo -e "NO docker"
92 | fi
93 |
94 | - name: Upload ImmortWrt as release assets
95 | uses: softprops/action-gh-release@v2.2.1
96 | with:
97 | tag_name: Autobuild-sunxi-cortexa53
98 | name: ImmortalWrt-sunxi-cortexa53
99 | body_path: ${{ github.workspace }}/sunxi-cortexa53/info.md
100 | files: |
101 | ${{ github.workspace }}/bin/targets/sunxi/cortexa53/*squashfs-sdcard.img.gz
102 | token: ${{ secrets.GITHUB_TOKEN }}
103 | env:
104 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
105 |
--------------------------------------------------------------------------------
/mediatek-filogic/build24.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | # 该文件实际为imagebuilder容器内的build.sh
4 |
5 | #echo "✅ 你选择了第三方软件包:$CUSTOM_PACKAGES"
6 | # 下载 run 文件仓库
7 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
8 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
9 |
10 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
11 | mkdir -p /home/build/immortalwrt/extra-packages
12 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
13 |
14 | echo "✅ Run files copied to extra-packages:"
15 | ls -lh /home/build/immortalwrt/extra-packages/*.run
16 | # 解压并拷贝ipk到packages目录
17 | sh shell/prepare-packages.sh
18 | ls -lah /home/build/immortalwrt/packages/
19 | # 添加架构优先级信息
20 | sed -i '1i\
21 | arch aarch64_generic 10\n\
22 | arch aarch64_cortex-a53 15' repositories.conf
23 |
24 |
25 |
26 | # yml 传入的路由器型号 PROFILE
27 | echo "Building for profile: $PROFILE"
28 |
29 | echo "Include Docker: $INCLUDE_DOCKER"
30 | echo "Create pppoe-settings"
31 | mkdir -p /home/build/immortalwrt/files/etc/config
32 |
33 | # 创建pppoe配置文件 yml传入pppoe变量————>pppoe-settings文件
34 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
35 | enable_pppoe=${ENABLE_PPPOE}
36 | pppoe_account=${PPPOE_ACCOUNT}
37 | pppoe_password=${PPPOE_PASSWORD}
38 | EOF
39 |
40 | echo "cat pppoe-settings"
41 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
42 |
43 | # 输出调试信息
44 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
45 |
46 |
47 | # 定义所需安装的包列表 下列插件你都可以自行删减
48 | PACKAGES=""
49 | PACKAGES="$PACKAGES curl luci luci-i18n-base-zh-cn"
50 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
51 | PACKAGES="$PACKAGES luci-theme-argon"
52 | PACKAGES="$PACKAGES luci-app-argon-config"
53 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
54 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
55 | #24.10.0
56 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
57 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
58 | PACKAGES="$PACKAGES openssh-sftp-server"
59 | # 文件管理器
60 | PACKAGES="$PACKAGES luci-i18n-filemanager-zh-cn"
61 | # 静态文件服务器dufs(推荐)
62 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
63 |
64 | # 第三方软件包 合并
65 | # ======== shell/custom-packages.sh =======
66 | if [ "$PROFILE" = "glinet_gl-axt1800" ] || [ "$PROFILE" = "glinet_gl-ax1800" ]; then
67 | # 这2款 暂时不支持第三方插件的集成 snapshot版本太高 opkg换成apk包管理器 6.12内核
68 | echo "Model:$PROFILE not support third-parted packages"
69 | PACKAGES="$PACKAGES -luci-i18n-diskman-zh-cn luci-i18n-homeproxy-zh-cn"
70 | else
71 | echo "Other Model:$PROFILE"
72 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
73 | fi
74 |
75 | # 判断是否需要编译 Docker 插件
76 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
77 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
78 | echo "Adding package: luci-i18n-dockerman-zh-cn"
79 | fi
80 |
81 | # 若构建openclash 则添加内核
82 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
83 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
84 | mkdir -p files/etc/openclash/core
85 | # Download clash_meta
86 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
87 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
88 | chmod +x files/etc/openclash/core/clash_meta
89 | # Download GeoIP and GeoSite
90 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
91 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
92 | else
93 | echo "⚪️ 未选择 luci-app-openclash"
94 | fi
95 |
96 |
97 | # 构建镜像
98 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
99 | echo "$PACKAGES"
100 |
101 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files"
102 |
103 | if [ $? -ne 0 ]; then
104 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
105 | exit 1
106 | fi
107 |
108 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
109 |
--------------------------------------------------------------------------------
/rockchip/build23.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | # yml 传入的路由器型号 PROFILE
8 | echo "Building for profile: $PROFILE"
9 | # yml 传入的固件大小 ROOTFS_PARTSIZE
10 | echo "Building for ROOTFS_PARTSIZE: $ROOTFS_PARTSIZE"
11 |
12 | echo "Create pppoe-settings"
13 | mkdir -p /home/build/immortalwrt/files/etc/config
14 |
15 | # 创建pppoe配置文件 yml传入环境变量ENABLE_PPPOE等 写入配置文件 供99-custom.sh读取
16 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
17 | enable_pppoe=${ENABLE_PPPOE}
18 | pppoe_account=${PPPOE_ACCOUNT}
19 | pppoe_password=${PPPOE_PASSWORD}
20 | EOF
21 |
22 | echo "cat pppoe-settings"
23 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
24 |
25 | if [ -z "$CUSTOM_PACKAGES" ]; then
26 | echo "⚪️ 未选择 任何第三方软件包"
27 | else
28 | # 下载 run 文件仓库
29 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
30 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
31 |
32 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
33 | mkdir -p /home/build/immortalwrt/extra-packages
34 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
35 |
36 | echo "✅ Run files copied to extra-packages:"
37 | ls -lh /home/build/immortalwrt/extra-packages/*.run
38 | # 解压并拷贝ipk到packages目录
39 | sh shell/prepare-packages.sh
40 | ls -lah /home/build/immortalwrt/packages/
41 | # 添加架构优先级信息
42 | sed -i '1i\
43 | arch aarch64_generic 10\n\
44 | arch aarch64_cortex-a53 15' repositories.conf
45 | fi
46 |
47 | # 输出调试信息
48 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
49 |
50 |
51 | # 定义所需安装的包列表 23.05.4 下列插件你都可以自行删减
52 | PACKAGES=""
53 | PACKAGES="$PACKAGES curl"
54 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
55 | PACKAGES="$PACKAGES luci-i18n-opkg-zh-cn"
56 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
57 | PACKAGES="$PACKAGES luci-i18n-filebrowser-zh-cn"
58 | PACKAGES="$PACKAGES luci-theme-argon"
59 | PACKAGES="$PACKAGES luci-app-argon-config"
60 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
61 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
62 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
63 | PACKAGES="$PACKAGES openssh-sftp-server"
64 | # 代理工具
65 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
66 | PACKAGES="$PACKAGES luci-app-openclash"
67 | # 判断是否需要编译 Docker 插件
68 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
69 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
70 | echo "Adding package: luci-i18n-dockerman-zh-cn"
71 | fi
72 | # 静态文件服务器dufs(推荐)
73 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
74 | # ======== shell/custom-packages.sh =======
75 | # 合并imm仓库以外的第三方插件
76 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
77 |
78 |
79 | # 若构建openclash 则添加内核
80 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
81 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
82 | mkdir -p files/etc/openclash/core
83 | # Download clash_meta
84 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
85 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
86 | chmod +x files/etc/openclash/core/clash_meta
87 | # Download GeoIP and GeoSite
88 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
89 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
90 | else
91 | echo "⚪️ 未选择 luci-app-openclash"
92 | fi
93 |
94 |
95 | # 构建镜像
96 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
97 | echo "$PACKAGES"
98 |
99 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTFS_PARTSIZE
100 |
101 | if [ $? -ne 0 ]; then
102 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
103 | exit 1
104 | fi
105 |
106 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
--------------------------------------------------------------------------------
/armsr-armv8/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | # yml 传入的路由器型号 PROFILE
8 | echo "Building for profile: $PROFILE"
9 | # yml 传入的固件大小 ROOTFS_PARTSIZE
10 | echo "Building for ROOTFS_PARTSIZE: $ROOTFS_PARTSIZE"
11 |
12 | echo "Create pppoe-settings"
13 | mkdir -p /home/build/immortalwrt/files/etc/config
14 |
15 | # 创建pppoe配置文件 yml传入环境变量ENABLE_PPPOE等 写入配置文件 供99-custom.sh读取
16 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
17 | enable_pppoe=${ENABLE_PPPOE}
18 | pppoe_account=${PPPOE_ACCOUNT}
19 | pppoe_password=${PPPOE_PASSWORD}
20 | EOF
21 |
22 | echo "cat pppoe-settings"
23 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
24 |
25 | if [ -z "$CUSTOM_PACKAGES" ]; then
26 | echo "⚪️ 未选择 任何第三方软件包"
27 | else
28 | # 下载 run 文件仓库
29 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
30 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
31 |
32 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
33 | mkdir -p /home/build/immortalwrt/extra-packages
34 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
35 |
36 | echo "✅ Run files copied to extra-packages:"
37 | ls -lh /home/build/immortalwrt/extra-packages/*.run
38 | # 解压并拷贝ipk到packages目录
39 | sh shell/prepare-packages.sh
40 | ls -lah /home/build/immortalwrt/packages/
41 | # 添加架构优先级信息
42 | sed -i '1i\
43 | arch aarch64_generic 10\n\
44 | arch aarch64_cortex-a53 15' repositories.conf
45 | fi
46 |
47 | # 输出调试信息
48 | echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始构建QEMU-arm64固件..."
49 |
50 |
51 | # 定义所需安装的包列表 下列插件你都可以自行删减
52 | PACKAGES=""
53 | PACKAGES="$PACKAGES curl"
54 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
55 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
56 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
57 | # 服务——FileBrowser 用户名admin 密码admin
58 | PACKAGES="$PACKAGES luci-i18n-filebrowser-go-zh-cn"
59 | PACKAGES="$PACKAGES luci-theme-argon"
60 | PACKAGES="$PACKAGES luci-app-argon-config"
61 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
62 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
63 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
64 | PACKAGES="$PACKAGES luci-app-openclash"
65 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
66 | PACKAGES="$PACKAGES openssh-sftp-server"
67 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
68 | PACKAGES="$PACKAGES luci-i18n-samba4-zh-cn"
69 | # 文件管理器
70 | PACKAGES="$PACKAGES luci-i18n-filemanager-zh-cn"
71 | # 静态文件服务器dufs(推荐)
72 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
73 | # ======== shell/custom-packages.sh =======
74 | # 合并imm仓库以外的第三方插件
75 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
76 |
77 | # 若构建openclash 则添加内核
78 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
79 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
80 | mkdir -p files/etc/openclash/core
81 | # Download clash_meta
82 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
83 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
84 | chmod +x files/etc/openclash/core/clash_meta
85 | # Download GeoIP and GeoSite
86 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
87 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
88 | else
89 | echo "⚪️ 未选择 luci-app-openclash"
90 | fi
91 |
92 |
93 | # 构建镜像
94 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
95 | echo "$PACKAGES"
96 |
97 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTFS_PARTSIZE
98 |
99 | if [ $? -ne 0 ]; then
100 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
101 | exit 1
102 | fi
103 |
104 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
105 |
--------------------------------------------------------------------------------
/rockchip/build24.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Log file for debugging
3 | source shell/custom-packages.sh
4 | echo "第三方软件包: $CUSTOM_PACKAGES"
5 | LOGFILE="/tmp/uci-defaults-log.txt"
6 | echo "Starting 99-custom.sh at $(date)" >> $LOGFILE
7 | # yml 传入的路由器型号 PROFILE
8 | echo "Building for profile: $PROFILE"
9 | # yml 传入的固件大小 ROOTFS_PARTSIZE
10 | echo "Building for ROOTFS_PARTSIZE: $ROOTFS_PARTSIZE"
11 |
12 | echo "Create pppoe-settings"
13 | mkdir -p /home/build/immortalwrt/files/etc/config
14 |
15 | # 创建pppoe配置文件 yml传入环境变量ENABLE_PPPOE等 写入配置文件 供99-custom.sh读取
16 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
17 | enable_pppoe=${ENABLE_PPPOE}
18 | pppoe_account=${PPPOE_ACCOUNT}
19 | pppoe_password=${PPPOE_PASSWORD}
20 | EOF
21 |
22 | echo "cat pppoe-settings"
23 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
24 |
25 | if [ -z "$CUSTOM_PACKAGES" ]; then
26 | echo "⚪️ 未选择 任何第三方软件包"
27 | else
28 | # 下载 run 文件仓库
29 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
30 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
31 |
32 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
33 | mkdir -p /home/build/immortalwrt/extra-packages
34 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
35 |
36 | echo "✅ Run files copied to extra-packages:"
37 | ls -lh /home/build/immortalwrt/extra-packages/*.run
38 | # 解压并拷贝ipk到packages目录
39 | sh shell/prepare-packages.sh
40 | ls -lah /home/build/immortalwrt/packages/
41 | # 添加架构优先级信息
42 | sed -i '1i\
43 | arch aarch64_generic 10\n\
44 | arch aarch64_cortex-a53 15' repositories.conf
45 | fi
46 |
47 |
48 | # 输出调试信息
49 | echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始构建固件..."
50 | echo "查看repositories.conf信息——————"
51 | cat repositories.conf
52 | # 定义所需安装的包列表 下列插件你都可以自行删减
53 | PACKAGES=""
54 | PACKAGES="$PACKAGES curl"
55 | PACKAGES="$PACKAGES openssh-sftp-server"
56 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
57 | PACKAGES="$PACKAGES luci-i18n-package-manager-zh-cn"
58 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
59 | PACKAGES="$PACKAGES luci-theme-argon"
60 | PACKAGES="$PACKAGES luci-app-argon-config"
61 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
62 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
63 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
64 | PACKAGES="$PACKAGES luci-app-openclash"
65 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
66 | # 判断是否需要编译 Docker 插件
67 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
68 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
69 | echo "Adding package: luci-i18n-dockerman-zh-cn"
70 | fi
71 | # 文件管理器
72 | PACKAGES="$PACKAGES luci-i18n-filemanager-zh-cn"
73 | # 静态文件服务器dufs(推荐)
74 | PACKAGES="$PACKAGES luci-i18n-dufs-zh-cn"
75 | # ======== shell/custom-packages.sh =======
76 | # 合并imm仓库以外的第三方插件
77 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
78 |
79 | # 构建镜像
80 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
81 | echo "$PACKAGES"
82 |
83 | # 若构建openclash 则添加内核
84 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
85 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
86 | mkdir -p files/etc/openclash/core
87 | # Download clash_meta
88 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
89 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
90 | chmod +x files/etc/openclash/core/clash_meta
91 | # Download GeoIP and GeoSite
92 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
93 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
94 | else
95 | echo "⚪️ 未选择 luci-app-openclash"
96 | fi
97 |
98 |
99 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files" ROOTFS_PARTSIZE=$ROOTFS_PARTSIZE
100 |
101 | if [ $? -ne 0 ]; then
102 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
103 | exit 1
104 | fi
105 |
106 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
--------------------------------------------------------------------------------
/mediatek-filogic/build23.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | source shell/custom-packages.sh
3 | # 该文件实际为imagebuilder容器内的build.sh
4 |
5 | if [ -n "$CUSTOM_PACKAGES" ]; then
6 | echo "✅ 你选择了第三方软件包:$CUSTOM_PACKAGES"
7 | if [ "$PROFILE" = "glinet_gl-mt3000" ]; then
8 | echo "❌ 检查到您集成了第三方软件包 由于mt3000闪存空间较小 不支持此操作"
9 | echo "✅ 系统将自动帮你注释掉shell/custom-packages.sh中的插件 目前支持第三方插件集成的机型是mt2500/mt6000等大闪存机型"
10 | CUSTOM_PACKAGES=""
11 | else
12 | # 下载 run 文件仓库
13 | echo "🔄 正在同步第三方软件仓库 Cloning run file repo..."
14 | git clone --depth=1 https://github.com/wukongdaily/store.git /tmp/store-run-repo
15 |
16 | # 拷贝 run/arm64 下所有 run 文件和ipk文件 到 extra-packages 目录
17 | mkdir -p /home/build/immortalwrt/extra-packages
18 | cp -r /tmp/store-run-repo/run/arm64/* /home/build/immortalwrt/extra-packages/
19 |
20 | echo "✅ Run files copied to extra-packages:"
21 | ls -lh /home/build/immortalwrt/extra-packages/*.run
22 | # 解压并拷贝ipk到packages目录
23 | sh shell/prepare-packages.sh
24 | ls -lah /home/build/immortalwrt/packages/
25 | # 添加架构优先级信息
26 | sed -i '1i\
27 | arch aarch64_generic 10\n\
28 | arch aarch64_cortex-a53 15' repositories.conf
29 | fi
30 | else
31 | echo "⚪️ 未选择任何第三方软件包"
32 | fi
33 | # yml 传入的路由器型号 PROFILE
34 | echo "Building for profile: $PROFILE"
35 | echo "Include Docker: $INCLUDE_DOCKER"
36 | echo "Create pppoe-settings"
37 | mkdir -p /home/build/immortalwrt/files/etc/config
38 |
39 | # 创建pppoe配置文件 yml传入pppoe变量————>pppoe-settings文件
40 | cat << EOF > /home/build/immortalwrt/files/etc/config/pppoe-settings
41 | enable_pppoe=${ENABLE_PPPOE}
42 | pppoe_account=${PPPOE_ACCOUNT}
43 | pppoe_password=${PPPOE_PASSWORD}
44 | EOF
45 |
46 | echo "cat pppoe-settings"
47 | cat /home/build/immortalwrt/files/etc/config/pppoe-settings
48 |
49 | # 输出调试信息
50 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting build process..."
51 |
52 |
53 | # 定义所需安装的包列表 下列插件你都可以自行删减
54 | PACKAGES=""
55 | PACKAGES="$PACKAGES curl"
56 | PACKAGES="$PACKAGES luci-i18n-firewall-zh-cn"
57 | PACKAGES="$PACKAGES luci-i18n-filebrowser-zh-cn"
58 | PACKAGES="$PACKAGES luci-theme-argon"
59 | PACKAGES="$PACKAGES luci-app-argon-config"
60 | PACKAGES="$PACKAGES luci-i18n-argon-config-zh-cn"
61 | PACKAGES="$PACKAGES luci-i18n-diskman-zh-cn"
62 | #23.05
63 | PACKAGES="$PACKAGES luci-i18n-opkg-zh-cn"
64 | PACKAGES="$PACKAGES luci-i18n-ttyd-zh-cn"
65 | PACKAGES="$PACKAGES luci-i18n-passwall-zh-cn"
66 | PACKAGES="$PACKAGES luci-app-openclash"
67 | PACKAGES="$PACKAGES luci-i18n-homeproxy-zh-cn"
68 | PACKAGES="$PACKAGES openssh-sftp-server"
69 | # 增加几个必备组件 方便用户安装iStore
70 | PACKAGES="$PACKAGES fdisk"
71 | PACKAGES="$PACKAGES script-utils"
72 | PACKAGES="$PACKAGES luci-i18n-samba4-zh-cn"
73 | # 第三方软件包 合并
74 | # ======== shell/custom-packages.sh =======
75 | PACKAGES="$PACKAGES $CUSTOM_PACKAGES"
76 |
77 | # 判断是否需要编译 Docker 插件
78 | if [ "$INCLUDE_DOCKER" = "yes" ]; then
79 | PACKAGES="$PACKAGES luci-i18n-dockerman-zh-cn"
80 | echo "Adding package: luci-i18n-dockerman-zh-cn"
81 | fi
82 |
83 | # 若构建openclash 则添加内核
84 | if echo "$PACKAGES" | grep -q "luci-app-openclash"; then
85 | echo "✅ 已选择 luci-app-openclash,添加 openclash core"
86 | mkdir -p files/etc/openclash/core
87 | # Download clash_meta
88 | META_URL="https://raw.githubusercontent.com/vernesong/OpenClash/core/master/meta/clash-linux-arm64.tar.gz"
89 | wget -qO- $META_URL | tar xOvz > files/etc/openclash/core/clash_meta
90 | chmod +x files/etc/openclash/core/clash_meta
91 | # Download GeoIP and GeoSite
92 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -O files/etc/openclash/GeoIP.dat
93 | wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O files/etc/openclash/GeoSite.dat
94 | else
95 | echo "⚪️ 未选择 luci-app-openclash"
96 | fi
97 |
98 |
99 | # 构建镜像
100 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Building image with the following packages:"
101 | echo "$PACKAGES"
102 |
103 | make image PROFILE=$PROFILE PACKAGES="$PACKAGES" FILES="/home/build/immortalwrt/files"
104 |
105 | if [ $? -ne 0 ]; then
106 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Error: Build failed!"
107 | exit 1
108 | fi
109 |
110 | echo "$(date '+%Y-%m-%d %H:%M:%S') - Build completed successfully."
111 |
--------------------------------------------------------------------------------
/.github/workflows/build-sunxi-cortexa53-24.10.x.yml:
--------------------------------------------------------------------------------
1 | name: build-sunxi-cortexa53-24.10.x
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | profile:
7 | type: choice
8 | description: "请选择开发板型号"
9 | required: true
10 | options:
11 | - xunlong_orangepi-zero3
12 | - friendlyarm_nanopi-r1s-h5
13 | - xunlong_orangepi-zero2
14 | - xunlong_orangepi-zero-plus
15 | - friendlyarm_nanopi-neo2
16 | - xunlong_orangepi-pc2
17 | - friendlyarm_nanopi-neo-plus2
18 | - libretech_all-h3-cc-h5
19 | - pine64_pine64-plus
20 | - pine64_sopine-baseboard
21 | default: xunlong_orangepi-zero3
22 | luci_version:
23 | description: "选择luci版本"
24 | required: false
25 | default: "24.10.4"
26 | type: choice
27 | options:
28 | - 24.10.0
29 | - 24.10.1
30 | - 24.10.2
31 | - 24.10.3
32 | - 24.10.4
33 | enable_store:
34 | description: "集成 store 商店"
35 | required: false
36 | type: boolean
37 | default: true
38 | include_docker:
39 | description: |
40 | 是否编译 Docker 插件
41 | required: true
42 | default: 'no'
43 | type: choice
44 | options:
45 | - 'yes'
46 | - 'no'
47 | size:
48 | description: '请输入要编译固件大小 单位(MB)'
49 | required: true
50 | default: '1024'
51 |
52 |
53 | jobs:
54 | build:
55 | runs-on: ubuntu-22.04
56 |
57 | steps:
58 | - name: Checkout code
59 | uses: actions/checkout@v3
60 |
61 | - name: Set executable permissions
62 | run: |
63 | chmod +x ${{ github.workspace }}/sunxi-cortexa53/build24.sh
64 |
65 | - name: Enable Store integration
66 | run: |
67 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
68 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
69 | echo "✅ 已追加 luci-app-store"
70 | else
71 | echo "❎ 未启用 luci-app-store"
72 | fi
73 |
74 | - name: Build sunxi-cortexa53 ImmpotalWrt 24.10.2
75 | run: |
76 | profiles="${{ github.event.inputs.profile }}"
77 | include_docker="${{ github.event.inputs.include_docker }}"
78 | size="${{ github.event.inputs.size }}"
79 | luci_version="${{ github.event.inputs.luci_version }}"
80 |
81 | IFS=',' read -r -a profile_array <<< "$profiles"
82 |
83 | for profile in "${profile_array[@]}"; do
84 | echo "Building for profile: $profile"
85 |
86 | docker run --rm -i \
87 | --user root \
88 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
89 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
90 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
91 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
92 | -v "${{ github.workspace }}/sunxi-cortexa53/build24.sh:/home/build/immortalwrt/build.sh" \
93 | -e PROFILE=$profile \
94 | -e INCLUDE_DOCKER=$include_docker \
95 | -e ROOTSIZE=$size \
96 | immortalwrt/imagebuilder:sunxi-cortexa53-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
97 | done
98 |
99 |
100 | - name: Create info
101 | run: |
102 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
103 | extra_content="### 默认带docker"
104 | echo -e "\n $extra_content" >> ${{ github.workspace }}/sunxi-cortexa53/info.md
105 | else
106 | echo -e "NO docker"
107 | fi
108 |
109 | - name: Upload ImmortWrt as release assets
110 | uses: softprops/action-gh-release@v2.2.1
111 | with:
112 | tag_name: Autobuild-sunxi-cortexa53
113 | name: ImmortalWrt-sunxi-cortexa53
114 | body_path: ${{ github.workspace }}/sunxi-cortexa53/info.md
115 | files: |
116 | ${{ github.workspace }}/bin/targets/sunxi/cortexa53/*squashfs-sdcard.img.gz
117 | token: ${{ secrets.GITHUB_TOKEN }}
118 | env:
119 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
120 |
--------------------------------------------------------------------------------
/.github/workflows/build-RaspBerryPi-23.05.4.yml:
--------------------------------------------------------------------------------
1 | name: build-RaspBerryPi-23.05.4-ImmortalWrt
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | profile:
7 | type: choice
8 | description: "请选择路由器型号"
9 | required: true
10 | options:
11 | - rpi
12 | - rpi-2
13 | - rpi-3
14 | - rpi-4
15 | - rpi-5
16 | default: rpi-4
17 | enable_store:
18 | description: "集成 store 商店"
19 | required: false
20 | type: boolean
21 | default: true
22 | include_docker:
23 | description: |
24 | 是否编译 Docker 插件
25 | required: true
26 | default: 'no'
27 | type: choice
28 | options:
29 | - 'yes'
30 | - 'no'
31 | size:
32 | description: '请输入要编译固件大小 单位(MB)'
33 | required: true
34 | default: '1024'
35 |
36 |
37 | jobs:
38 | build:
39 | runs-on: ubuntu-22.04
40 |
41 | steps:
42 | - name: Checkout code
43 | uses: actions/checkout@v3
44 |
45 | - name: Set executable permissions
46 | run: |
47 | chmod +x ${{ github.workspace }}/raspberrypi/23.05.4/build.sh
48 |
49 | - name: Enable Store integration
50 | run: |
51 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
52 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
53 | echo "✅ 已追加 luci-app-store"
54 | else
55 | echo "❎ 未启用 luci-app-store"
56 | fi
57 |
58 | - name: Build raspberrypi ImmortalWrt 23.05.4
59 | run: |
60 | profiles="${{ github.event.inputs.profile }}"
61 | if [ "$profiles" = "rpi" ]; then
62 | tag=bcm27xx-bcm2708-openwrt-23.05.4
63 | echo "cpu=bcm2708" >> $GITHUB_ENV
64 | elif [ "$profiles" = "rpi-2" ]; then
65 | tag=bcm27xx-bcm2709-openwrt-23.05.4
66 | echo "cpu=bcm2709" >> $GITHUB_ENV
67 | elif [ "$profiles" = "rpi-3" ]; then
68 | tag=bcm27xx-bcm2710-openwrt-23.05.4
69 | echo "cpu=bcm2710" >> $GITHUB_ENV
70 | elif [ "$profiles" = "rpi-4" ]; then
71 | tag=bcm27xx-bcm2711-openwrt-23.05.4
72 | echo "cpu=bcm2711" >> $GITHUB_ENV
73 | elif [ "$profiles" = "rpi-5" ]; then
74 | tag=bcm27xx-bcm2712-openwrt-23.05.4
75 | echo "cpu=bcm2712" >> $GITHUB_ENV
76 | fi
77 | include_docker="${{ github.event.inputs.include_docker }}"
78 | size="${{ github.event.inputs.size }}"
79 | IFS=',' read -r -a profile_array <<< "$profiles"
80 | for profile in "${profile_array[@]}"; do
81 | echo "Building for profile: $profile"
82 |
83 | docker run --rm -i \
84 | --user root \
85 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
86 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
87 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
88 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
89 | -v "${{ github.workspace }}/raspberrypi/23.05.4/build.sh:/home/build/openwrt/build.sh" \
90 | -e PROFILE=$profile \
91 | -e INCLUDE_DOCKER=$include_docker \
92 | -e ROOTSIZE=$size \
93 | immortalwrt/imagebuilder:$tag /bin/bash /home/build/openwrt/build.sh
94 | done
95 | ls ${{ github.workspace }}/bin/targets/bcm27xx/${{ env.cpu }}
96 |
97 | - name: Create info
98 | run: |
99 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
100 | extra_content="### 默认带docker"
101 | echo -e "\n $extra_content" >> ${{ github.workspace }}/info.md
102 | else
103 | echo -e "NO docker"
104 | fi
105 |
106 | - name: Upload ImmortalWrt as release assets
107 | uses: softprops/action-gh-release@v2.2.1
108 | with:
109 | tag_name: Autobuild-raspberrypi
110 | body_path: ${{ github.workspace }}/info.md
111 | files: |
112 | ${{ github.workspace }}/bin/targets/bcm27xx/${{ env.cpu }}/*squashfs-factory.img.gz
113 | token: ${{ secrets.GITHUB_TOKEN }}
114 | env:
115 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
116 |
--------------------------------------------------------------------------------
/.github/workflows/build-RaspBerryPi-24.10.x.yml:
--------------------------------------------------------------------------------
1 | name: build-RaspBerryPi-24.10.x
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | profile:
7 | type: choice
8 | description: "请选择路由器型号"
9 | required: true
10 | options:
11 | - rpi
12 | - rpi-2
13 | - rpi-3
14 | - rpi-4
15 | - rpi-5
16 | default: rpi-4
17 | luci_version:
18 | description: "选择luci版本"
19 | required: false
20 | default: "24.10.4"
21 | type: choice
22 | options:
23 | - 24.10.0
24 | - 24.10.1
25 | - 24.10.2
26 | - 24.10.3
27 | - 24.10.4
28 | enable_store:
29 | description: "集成 store 商店"
30 | required: false
31 | type: boolean
32 | default: true
33 | include_docker:
34 | description: |
35 | 是否编译 Docker 插件
36 | required: true
37 | default: 'no'
38 | type: choice
39 | options:
40 | - 'yes'
41 | - 'no'
42 | size:
43 | description: '请输入要编译固件大小 单位(MB)'
44 | required: true
45 | default: '1024'
46 |
47 |
48 | jobs:
49 | build:
50 | runs-on: ubuntu-22.04
51 |
52 | steps:
53 | - name: Checkout code
54 | uses: actions/checkout@v3
55 |
56 | - name: Set executable permissions
57 | run: |
58 | chmod +x ${{ github.workspace }}/raspberrypi/24.10/build.sh
59 |
60 | - name: Enable Store integration
61 | run: |
62 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
63 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
64 | echo "✅ 已追加 luci-app-store"
65 | else
66 | echo "❎ 未启用 luci-app-store"
67 | fi
68 |
69 |
70 | - name: Build raspberrypi ImmortalWrt 24.10.2
71 | run: |
72 | luci_version="${{ github.event.inputs.luci_version }}"
73 | profiles="${{ github.event.inputs.profile }}"
74 | if [ "$profiles" = "rpi" ]; then
75 | tag=bcm27xx-bcm2708-openwrt-${luci_version}
76 | echo "cpu=bcm2708" >> $GITHUB_ENV
77 | elif [ "$profiles" = "rpi-2" ]; then
78 | tag=bcm27xx-bcm2709-openwrt-${luci_version}
79 | echo "cpu=bcm2709" >> $GITHUB_ENV
80 | elif [ "$profiles" = "rpi-3" ]; then
81 | tag=bcm27xx-bcm2710-openwrt-${luci_version}
82 | echo "cpu=bcm2710" >> $GITHUB_ENV
83 | elif [ "$profiles" = "rpi-4" ]; then
84 | tag=bcm27xx-bcm2711-openwrt-${luci_version}
85 | echo "cpu=bcm2711" >> $GITHUB_ENV
86 | elif [ "$profiles" = "rpi-5" ]; then
87 | tag=bcm27xx-bcm2712-openwrt-${luci_version}
88 | echo "cpu=bcm2712" >> $GITHUB_ENV
89 | fi
90 | include_docker="${{ github.event.inputs.include_docker }}"
91 | size="${{ github.event.inputs.size }}"
92 |
93 | IFS=',' read -r -a profile_array <<< "$profiles"
94 | for profile in "${profile_array[@]}"; do
95 | echo "Building for profile: $profile"
96 |
97 | docker run --rm -i \
98 | --user root \
99 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
100 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
101 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
102 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
103 | -v "${{ github.workspace }}/raspberrypi/24.10/build.sh:/home/build/openwrt/build.sh" \
104 | -e PROFILE=$profile \
105 | -e INCLUDE_DOCKER=$include_docker \
106 | -e ROOTSIZE=$size \
107 | immortalwrt/imagebuilder:$tag /bin/bash /home/build/openwrt/build.sh
108 | done
109 | ls ${{ github.workspace }}/bin/targets/bcm27xx/${{ env.cpu }}
110 |
111 | - name: Create info
112 | run: |
113 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
114 | extra_content="### 默认带docker"
115 | echo -e "\n $extra_content" >> ${{ github.workspace }}/info.md
116 | else
117 | echo -e "NO docker"
118 | fi
119 |
120 | - name: Upload ImmortalWrt as release assets
121 | uses: softprops/action-gh-release@v2.2.1
122 | with:
123 | tag_name: Autobuild-raspberrypi
124 | body_path: ${{ github.workspace }}/info.md
125 | files: |
126 | ${{ github.workspace }}/bin/targets/bcm27xx/${{ env.cpu }}/*squashfs-factory.img.gz
127 | token: ${{ secrets.GITHUB_TOKEN }}
128 | env:
129 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
130 |
--------------------------------------------------------------------------------
/.github/workflows/build-QEMU-arm64-24.10.x.yml:
--------------------------------------------------------------------------------
1 | name: build-QEMU-armsr-armv8-24.10.x
2 | # 你可以理解为这是一种ARM64平台下通用型OpenWrt ,产出格式为qcow2,适合所有ARM64平台的虚拟机
3 | # 比如斐讯N1刷了armbian系统,armbian系统里安装了PVE虚拟机 可用
4 | # 比如新款Apple Silicon芯片的苹果电脑里的虚拟机UTM 可用
5 | # 比如友善NanoPi R3S、R5S 官方推出的预装了PVE的debian系统 可用
6 | # 比如瑞莎E20C刷了Armbian系统,自己安装了QEMU+KVM虚拟机 可用
7 | on:
8 | workflow_dispatch:
9 | inputs:
10 | luci_version:
11 | description: "选择luci版本"
12 | required: false
13 | default: "24.10.4"
14 | type: choice
15 | options:
16 | - 24.10.0
17 | - 24.10.1
18 | - 24.10.2
19 | - 24.10.3
20 | - 24.10.4
21 | profile:
22 | type: choice
23 | description: |
24 | 可用于ARM64虚拟机(比如macOS下的UTM虚拟机 比如斐讯N1/R3S/R5S等arm64系统的PVE虚拟机)
25 | options:
26 | - generic
27 | required: true
28 | default: 'generic'
29 | rootfs_partsize:
30 | description: '设置软件包大小 单位(MB) 最大数值10240'
31 | required: true
32 | default: '2048'
33 | enable_store:
34 | description: "集成 store 商店"
35 | required: false
36 | type: boolean
37 | default: true
38 | enable_pppoe:
39 | description: "是否配置PPPoE拨号信息?"
40 | required: true
41 | default: 'no'
42 | type: choice
43 | options:
44 | - 'yes'
45 | - 'no'
46 | pppoe_account:
47 | description: "宽带账号 (若启用PPPoE)"
48 | required: false
49 | pppoe_password:
50 | description: "宽带密码 (若启用PPPoE)"
51 | required: false
52 |
53 | jobs:
54 | build:
55 | runs-on: ubuntu-22.04
56 |
57 | steps:
58 | - name: Checkout code
59 | uses: actions/checkout@v3
60 |
61 | - name: Set executable permissions
62 | run: chmod +x ${{ github.workspace }}/armsr-armv8/build.sh
63 |
64 | - name: Enable Store integration
65 | run: |
66 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
67 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
68 | echo "✅ 已追加 luci-app-store"
69 | else
70 | echo "❎ 未启用 luci-app-store"
71 | fi
72 |
73 | - name: Validate PPPoE Inputs
74 | run: |
75 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
76 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
77 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
78 | exit 1
79 | fi
80 | fi
81 |
82 | - name: Building armsr-armv8 QEMU ImmortalWrt
83 | run: |
84 | profiles="${{ github.event.inputs.profile }}"
85 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
86 | luci_version="${{ github.event.inputs.luci_version }}"
87 |
88 | IFS=',' read -r -a profile_array <<< "$profiles"
89 |
90 | for profile in "${profile_array[@]}"; do
91 | echo "Building for profile: $profile"
92 |
93 | docker run --rm -i \
94 | --user root \
95 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
96 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
97 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
98 | -v "${{ github.workspace }}/armsr-armv8/imm.config:/home/build/immortalwrt/.config" \
99 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
100 | -v "${{ github.workspace }}/armsr-armv8/build.sh:/home/build/immortalwrt/build.sh" \
101 | -e PROFILE=$profile \
102 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
103 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
104 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
105 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
106 | immortalwrt/imagebuilder:armsr-armv8-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
107 | done
108 | - name: Copy Firmware to workspace
109 | run: |
110 | cp ${{ github.workspace }}/bin/targets/armsr/armv8/*.qcow2 ${{ github.workspace }}
111 | cp ${{ github.workspace }}/bin/targets/armsr/armv8/*.vmdk ${{ github.workspace }}
112 |
113 | - name: Upload ImmortWrt as release assets
114 | uses: softprops/action-gh-release@v2.2.1
115 | with:
116 | tag_name: QEMU
117 | name: ImmortWrt-QEMU-armsr-armv8-24.10.x
118 | body_path: ${{ github.workspace }}/armsr-armv8/info.md
119 | files: |
120 | ${{ github.workspace }}/*.qcow2
121 | ${{ github.workspace }}/*.vmdk
122 | token: ${{ secrets.GITHUB_TOKEN }}
123 | env:
124 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125 |
--------------------------------------------------------------------------------
/.github/workflows/build-x86-64-23.05.4.yml:
--------------------------------------------------------------------------------
1 | name: build-x86-64-immortalwrt-23.05.4
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | custom_router_ip:
7 | description: "请设置路由器的管理地址(仅对多网口路由器有效) 格式:192.168.x.1 或 10.x.x.1"
8 | required: true
9 | default: "192.168.100.1"
10 | profile:
11 | description: '请输入要编译固件大小 单位(MB)'
12 | required: true
13 | default: '1024'
14 | enable_store:
15 | description: "集成 store 商店"
16 | required: false
17 | type: boolean
18 | default: true
19 | include_docker:
20 | description: |
21 | 是否编译 Docker 插件
22 | required: true
23 | default: 'yes'
24 | type: choice
25 | options:
26 | - 'yes'
27 | - 'no'
28 | enable_pppoe:
29 | description: "是否配置PPPoE拨号信息?"
30 | required: true
31 | default: 'no'
32 | type: choice
33 | options:
34 | - 'yes'
35 | - 'no'
36 | pppoe_account:
37 | description: "宽带账号 (若启用PPPoE)"
38 | required: false
39 | pppoe_password:
40 | description: "宽带密码 (若启用PPPoE)"
41 | required: false
42 |
43 | jobs:
44 | build:
45 | runs-on: ubuntu-22.04
46 |
47 | steps:
48 | - name: Checkout code
49 | uses: actions/checkout@v3
50 |
51 | - name: Set executable permissions
52 | run: chmod +x ${{ github.workspace }}/x86-64/build23.sh
53 |
54 | - name: Save Custom Router IP into OpenWrt files
55 | run: |
56 | mkdir -p "${{ github.workspace }}/custom"
57 | echo "${{ github.event.inputs.custom_router_ip }}" > "${{ github.workspace }}/custom/custom_router_ip.txt"
58 | echo "您设置的路由器管理地址是:${{ github.event.inputs.custom_router_ip }}"
59 | # 后续步骤会将该文件映射到路由器/etc/config/custom_router_ip.txt 以便用于开机脚本99-custom.sh读取用户设置的ip
60 |
61 |
62 | - name: Validate PPPoE Inputs
63 | run: |
64 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
65 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
66 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
67 | exit 1
68 | fi
69 | fi
70 |
71 | - name: Enable Store integration
72 | run: |
73 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
74 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
75 | echo "✅ 已追加 luci-app-store"
76 | else
77 | echo "❎ 未启用 luci-app-store"
78 | fi
79 |
80 | - name: Build ImmortalWrt-x86-64-efi
81 | run: |
82 | profiles="${{ github.event.inputs.profile }}"
83 | include_docker="${{ github.event.inputs.include_docker }}"
84 |
85 | IFS=',' read -r -a profile_array <<< "$profiles"
86 |
87 | for profile in "${profile_array[@]}"; do
88 | echo "Building for profile: $profile"
89 |
90 | docker run --rm -i \
91 | --user root \
92 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
93 | -v "${{ github.workspace }}/files:/home/build/immortalwrt/files" \
94 | -v "${{ github.workspace }}/custom:/home/build/immortalwrt/files/etc/config" \
95 | -v "${{ github.workspace }}/x86-64/imm.config:/home/build/immortalwrt/.config" \
96 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
97 | -v "${{ github.workspace }}/x86-64/build23.sh:/home/build/immortalwrt/build.sh" \
98 | -e PROFILE=$profile \
99 | -e INCLUDE_DOCKER=$include_docker \
100 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
101 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
102 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
103 | immortalwrt/imagebuilder:x86-64-openwrt-23.05.4 /bin/bash /home/build/immortalwrt/build.sh
104 | done
105 |
106 | - name: Create info
107 | run: |
108 | cat > ${{ github.workspace }}/router-info.md <
111 |
112 |
113 |
114 | - 🏠 **后台地址**: ${{ github.event.inputs.custom_router_ip }}
115 | - 👤 **用户名**: root
116 | - 🔑 **密码**: 无
117 | EOF
118 |
119 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
120 | extra_content="#### 默认带docker"
121 | echo -e "\n$extra_content" >> ${{ github.workspace }}/router-info.md
122 | else
123 | echo -e "\n#### 不带docker" >> ${{ github.workspace }}/router-info.md
124 | fi
125 |
126 |
127 | - name: Upload ImmortWrt as release assets
128 | uses: softprops/action-gh-release@v2.2.1
129 | with:
130 | tag_name: Autobuild-x86-64
131 | body_path: ${{ github.workspace }}/router-info.md
132 | files: |
133 | ${{ github.workspace }}/bin/targets/x86/64/immortalwrt-23.05.4-x86-64-generic-squashfs-combined-efi.img.gz
134 | token: ${{ secrets.GITHUB_TOKEN }}
135 | env:
136 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
137 |
138 |
--------------------------------------------------------------------------------
/.github/workflows/build-x86-64-24.10.x.yml:
--------------------------------------------------------------------------------
1 | name: build-x86-64-immortalwrt-24.10.x
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | luci_version:
7 | description: "选择luci版本"
8 | required: false
9 | default: "24.10.4"
10 | type: choice
11 | options:
12 | - 24.10.0
13 | - 24.10.1
14 | - 24.10.2
15 | - 24.10.3
16 | - 24.10.4
17 | custom_router_ip:
18 | description: "请设置路由器的管理地址(仅对多网口路由器有效) 格式:192.168.x.1 或 10.x.x.1"
19 | required: true
20 | default: "192.168.100.1"
21 | profile:
22 | description: '请输入要编译固件大小 单位(MB)'
23 | required: true
24 | default: '1024'
25 | enable_store:
26 | description: "集成 store 商店"
27 | required: false
28 | type: boolean
29 | default: true
30 | include_docker:
31 | description: |
32 | 是否编译 Docker 插件
33 | required: true
34 | default: 'yes'
35 | type: choice
36 | options:
37 | - 'yes'
38 | - 'no'
39 | enable_pppoe:
40 | description: "是否配置PPPoE拨号信息?"
41 | required: true
42 | default: 'no'
43 | type: choice
44 | options:
45 | - 'yes'
46 | - 'no'
47 | pppoe_account:
48 | description: "宽带账号 (若启用PPPoE)"
49 | required: false
50 | pppoe_password:
51 | description: "宽带密码 (若启用PPPoE)"
52 | required: false
53 |
54 | jobs:
55 | build:
56 | runs-on: ubuntu-22.04
57 |
58 | steps:
59 | - name: Checkout code
60 | uses: actions/checkout@v3
61 |
62 | - name: Set executable permissions
63 | run: chmod +x ${{ github.workspace }}/x86-64/build24.sh
64 |
65 | - name: Save Custom Router IP into OpenWrt files
66 | run: |
67 | mkdir -p "${{ github.workspace }}/custom"
68 | echo "${{ github.event.inputs.custom_router_ip }}" > "${{ github.workspace }}/custom/custom_router_ip.txt"
69 | echo "您设置的路由器管理地址是:${{ github.event.inputs.custom_router_ip }}"
70 | # 后续步骤会将该文件映射到路由器/etc/config/custom_router_ip.txt 以便用于开机脚本99-custom.sh读取用户设置的ip
71 |
72 | - name: Validate PPPoE Inputs
73 | run: |
74 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
75 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
76 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
77 | exit 1
78 | fi
79 | fi
80 |
81 | - name: Enable Store integration
82 | run: |
83 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
84 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
85 | echo "✅ 已追加 luci-app-store"
86 | else
87 | echo "❎ 未启用 luci-app-store"
88 | fi
89 |
90 | - name: Build ImmortalWrt-x86-64-efi
91 | run: |
92 | profile="${{ github.event.inputs.profile }}"
93 | include_docker="${{ github.event.inputs.include_docker }}"
94 | luci_version="${{ github.event.inputs.luci_version }}"
95 | echo "Building for profile: $profile"
96 | docker run --rm -i \
97 | --user root \
98 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
99 | -v "${{ github.workspace }}/files:/home/build/immortalwrt/files" \
100 | -v "${{ github.workspace }}/custom:/home/build/immortalwrt/files/etc/config" \
101 | -v "${{ github.workspace }}/x86-64/imm.config:/home/build/immortalwrt/.config" \
102 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
103 | -v "${{ github.workspace }}/x86-64/build24.sh:/home/build/immortalwrt/build.sh" \
104 | -e PROFILE=$profile \
105 | -e INCLUDE_DOCKER=$include_docker \
106 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
107 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
108 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
109 | immortalwrt/imagebuilder:x86-64-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
110 |
111 |
112 | - name: Create info
113 | run: |
114 | cat > ${{ github.workspace }}/router-info.md <
117 |
118 |
119 |
120 | - 🏠 **后台地址**: ${{ github.event.inputs.custom_router_ip }}
121 | - 👤 **用户名**: root
122 | - 🔑 **密码**: 无
123 | EOF
124 |
125 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
126 | extra_content="#### 默认带docker"
127 | echo -e "\n$extra_content" >> ${{ github.workspace }}/router-info.md
128 | else
129 | echo -e "\n#### 不带docker" >> ${{ github.workspace }}/router-info.md
130 | fi
131 |
132 | - name: Upload ImmortWrt as release assets
133 | uses: softprops/action-gh-release@v2.2.1
134 | with:
135 | tag_name: Autobuild-x86-64
136 | body_path: ${{ github.workspace }}/router-info.md
137 | files: |
138 | ${{ github.workspace }}/bin/targets/x86/64/*squashfs-combined-efi.img.gz
139 | token: ${{ secrets.GITHUB_TOKEN }}
140 | env:
141 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
--------------------------------------------------------------------------------
/.github/workflows/build-iso.yml:
--------------------------------------------------------------------------------
1 | # 此工作流是为了构建一个immortalwrt固件的安装器 格式为iso 可用于所有的虚拟机 和 物理机
2 | # 所谓安装器就是用来安装用的 iso引导的是一个启动速度极快的debian live系统 跑码后输入命令 ddd 即可调出安装菜单
3 | # 安装时 若是多张硬盘 你可以选择 需要安装的硬盘 此类方法安装的openwrt 安装后是有剩余空间的 更多信息请参考 wukongdaily/img-installer 项目
4 | # 几乎所有linux 都有各自的安装器 唯独openwrt和armbian 没有, 希望此工作流 弥补这个遗憾 让你更优雅的 安装openwrt
5 |
6 | name: build ISO
7 |
8 | on:
9 | workflow_dispatch:
10 | inputs:
11 | luci_version:
12 | description: "选择luci版本"
13 | required: false
14 | default: "24.10.4"
15 | type: choice
16 | options:
17 | - 24.10.0
18 | - 24.10.1
19 | - 24.10.2
20 | - 24.10.3
21 | - 24.10.4
22 | profile:
23 | description: '请输入要编译固件大小 单位(MB)'
24 | required: true
25 | default: '1024'
26 | include_docker:
27 | description: "是否编译 Docker 插件"
28 | required: true
29 | default: 'yes'
30 | type: choice
31 | options:
32 | - 'yes'
33 | - 'no'
34 | enable_store:
35 | description: "集成 store 商店"
36 | required: false
37 | type: boolean
38 | default: true
39 | enable_pppoe:
40 | description: "是否配置PPPoE拨号信息?"
41 | required: true
42 | default: 'no'
43 | type: choice
44 | options:
45 | - 'yes'
46 | - 'no'
47 | pppoe_account:
48 | description: "宽带账号 (若启用PPPoE)"
49 | required: false
50 | pppoe_password:
51 | description: "宽带密码 (若启用PPPoE)"
52 | required: false
53 |
54 | jobs:
55 | build_immortalwrt:
56 | runs-on: ubuntu-22.04
57 |
58 | steps:
59 | - name: Checkout code
60 | uses: actions/checkout@v3
61 |
62 | - name: Set executable permissions
63 | run: chmod +x ${{ github.workspace }}/x86-64/build24.sh
64 |
65 | - name: Enable Store integration
66 | run: |
67 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
68 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
69 | echo "✅ 已追加 luci-app-store"
70 | else
71 | echo "❎ 未启用 luci-app-store"
72 | fi
73 |
74 | - name: Validate PPPoE Inputs
75 | run: |
76 | if [[ "${{ github.event.inputs.enable_pppoe }}" == "yes" ]]; then
77 | if [[ -z "${{ github.event.inputs.pppoe_account }}" || -z "${{ github.event.inputs.pppoe_password }}" ]]; then
78 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
79 | exit 1
80 | fi
81 | fi
82 |
83 | - name: ✅ 正在构建ImmortalWrt固件
84 | run: |
85 | profiles="${{ github.event.inputs.profile }}"
86 | include_docker="${{ github.event.inputs.include_docker }}"
87 | luci_version="${{ github.event.inputs.luci_version }}"
88 | IFS=',' read -r -a profile_array <<< "$profiles"
89 |
90 | for profile in "${profile_array[@]}"; do
91 | echo "Building for profile: $profile"
92 | docker run --rm -i \
93 | --user root \
94 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
95 | -v "${{ github.workspace }}/files:/home/build/immortalwrt/files" \
96 | -v "${{ github.workspace }}/x86-64/imm.config:/home/build/immortalwrt/.config" \
97 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
98 | -v "${{ github.workspace }}/x86-64/build24.sh:/home/build/immortalwrt/build.sh" \
99 | -e PROFILE=$profile \
100 | -e INCLUDE_DOCKER=$include_docker \
101 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
102 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
103 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
104 | immortalwrt/imagebuilder:x86-64-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
105 | done
106 |
107 | - name: ✅ 复制固件到根目录
108 | run: |
109 | cp ${{ github.workspace }}/bin/targets/x86/64/*squashfs-combined-efi.img.gz ${{ github.workspace }}
110 |
111 | - name: ✅ 上传固件到 artifact (for ISO generation)
112 | uses: actions/upload-artifact@v4
113 | with:
114 | name: firmware-img
115 | path: |
116 | *.img.gz
117 |
118 | build_installer_iso:
119 | runs-on: ubuntu-22.04
120 | needs: build_immortalwrt
121 |
122 | steps:
123 | - name: Download firmware artifact
124 | uses: actions/download-artifact@v4
125 | with:
126 | name: firmware-img
127 |
128 | - name: ⏬ 同步 img-installer 项目 准备制作ISO
129 | run: |
130 | git clone https://github.com/wukongdaily/img-installer.git
131 | cd img-installer
132 |
133 | - name: Set executable permissions for scripts
134 | run: |
135 | chmod +x "${{ github.workspace }}/img-installer/custom.sh"
136 | chmod +x "${{ github.workspace }}/img-installer/supportFiles/custom/build.sh"
137 |
138 | - name: ✅ 制作 ISO
139 | run: |
140 | firmware_file=$(ls *squashfs-combined-efi.img.gz)
141 | cd img-installer
142 | bash autobuild/autobuild.sh "../$firmware_file"
143 |
144 | - name: 🚀 上传 ISO 到 Release
145 | uses: softprops/action-gh-release@v2.2.1
146 | with:
147 | tag_name: "Custom-Installer-x86_64-ISO"
148 | body_path: "${{ github.workspace }}/img-installer/autobuild/info.md"
149 | files: |
150 | img-installer/output/custom-installer-x86_64.iso
151 | token: "${{ secrets.GITHUB_TOKEN }}"
152 |
--------------------------------------------------------------------------------
/model/mt7621.txt:
--------------------------------------------------------------------------------
1 | adslr_g7
2 | afoundry_ew1200
3 | alfa-network_ax1800rm
4 | alfa-network_quad-e4g
5 | ampedwireless_ally-00x19k
6 | ampedwireless_ally-r1900k
7 | arcadyan_we410443
8 | arcadyan_we420223-99
9 | asiarf_ap7621-001
10 | asiarf_ap7621-nv1
11 | asus_rp-ac56
12 | asus_rp-ac87
13 | asus_rt-ac57u-v1
14 | asus_rt-ac65p
15 | asus_rt-ac85p
16 | asus_rt-ax53u
17 | asus_rt-ax54
18 | asus_rt-n56u-b1
19 | beeline_smartbox-flash
20 | beeline_smartbox-giga
21 | beeline_smartbox-pro
22 | beeline_smartbox-turbo
23 | beeline_smartbox-turbo-plus
24 | belkin_rt1800
25 | bolt_arion
26 | buffalo_wsr-1166dhp
27 | buffalo_wsr-2533dhpl2
28 | buffalo_wsr-2533dhpls
29 | buffalo_wsr-600dhp
30 | comfast_cf-e390ax
31 | comfast_cf-ew72-v2
32 | confiabits_mt7621-v1
33 | cudy_m1300-v2
34 | cudy_m1800
35 | cudy_wr1300-v1
36 | cudy_wr1300-v2
37 | cudy_wr1300-v3
38 | cudy_wr2100
39 | cudy_x6-v1
40 | cudy_x6-v2
41 | d-team_newifi-d2
42 | d-team_pbr-m1
43 | dlink_covr-x1860-a1
44 | dlink_dap-1620-b1
45 | dlink_dap-x1860-a1
46 | dlink_dir-1935-a1
47 | dlink_dir-1960-a1
48 | dlink_dir-2055-a1
49 | dlink_dir-2150-a1
50 | dlink_dir-2150-r1
51 | dlink_dir-2640-a1
52 | dlink_dir-2660-a1
53 | dlink_dir-3040-a1
54 | dlink_dir-3060-a1
55 | dlink_dir-853-a1
56 | dlink_dir-853-a3
57 | dlink_dir-853-r1
58 | dlink_dir-860l-b1
59 | dlink_dir-867-a1
60 | dlink_dir-878-a1
61 | dlink_dir-878-r1
62 | dlink_dir-882-a1
63 | dlink_dir-882-r1
64 | dlink_dra-1360-a1
65 | dna_valokuitu-plus-ex400
66 | dual-q_h721
67 | edimax_ra21s
68 | edimax_re23s
69 | edimax_rg21s
70 | elecom_wmc-m1267gst2
71 | elecom_wmc-s1267gs2
72 | elecom_wmc-x1800gst
73 | elecom_wrc-1167ghbk2-s
74 | elecom_wrc-1167gs2-b
75 | elecom_wrc-1167gst2
76 | elecom_wrc-1750gs
77 | elecom_wrc-1750gst2
78 | elecom_wrc-1750gsv
79 | elecom_wrc-1900gst
80 | elecom_wrc-2533ghbk-i
81 | elecom_wrc-2533gs2
82 | elecom_wrc-2533gst
83 | elecom_wrc-2533gst2
84 | elecom_wrc-x1800gs
85 | elecom_wsc-x1800gs
86 | etisalat_s3
87 | firefly_firewrt
88 | gehua_ghl-r-001
89 | gemtek_wvrtm-127acn
90 | gemtek_wvrtm-130acn
91 | genexis_pulse-ex400
92 | glinet_gl-mt1300
93 | gnubee_gb-pc1
94 | gnubee_gb-pc2
95 | h3c_tx1800-plus
96 | h3c_tx1801-plus
97 | h3c_tx1806
98 | haier_har-20s2u1
99 | hanyang_hyc-g920
100 | hilink_hlk-7621a-evb
101 | hiwifi_hc5962
102 | huasifei_ws1208v2
103 | humax_e10
104 | iodata_wn-ax1167gr
105 | iodata_wn-ax1167gr2
106 | iodata_wn-ax2033gr
107 | iodata_wn-deax1800gr
108 | iodata_wn-dx1167r
109 | iodata_wn-dx1200gr
110 | iodata_wn-dx2033gr
111 | iodata_wn-gx300gr
112 | iodata_wnpr2600g
113 | iptime_a3002mesh
114 | iptime_a3004ns-dual
115 | iptime_a3004t
116 | iptime_a6004ns-m
117 | iptime_a6ns-m
118 | iptime_a8004t
119 | iptime_ax2004m
120 | iptime_t5004
121 | jcg_jhr-ac876m
122 | jcg_q20
123 | jcg_y2
124 | jdcloud_re-cp-02
125 | jdcloud_re-sp-01b
126 | keenetic_kn-3010
127 | keenetic_kn-3510
128 | lenovo_newifi-d1
129 | linksys_e5600
130 | linksys_e7350
131 | linksys_ea6350-v4
132 | linksys_ea7300-v1
133 | linksys_ea7300-v2
134 | linksys_ea7500-v2
135 | linksys_ea8100-v1
136 | linksys_ea8100-v2
137 | linksys_re6500
138 | linksys_re7000
139 | mediatek_ap-mt7621a-v60
140 | mediatek_mt7621-eval-board
141 | meig_slt866
142 | mercusys_mr70x-v1
143 | mikrotik_ltap-2hnd
144 | mikrotik_routerboard-750gr3
145 | mikrotik_routerboard-760igs
146 | mikrotik_routerboard-m11g
147 | mikrotik_routerboard-m33g
148 | mqmaker_witi
149 | mtc_wr1201
150 | mts_wg430223
151 | netgear_eax12
152 | netgear_ex6150
153 | netgear_r6220
154 | netgear_r6260
155 | netgear_r6350
156 | netgear_r6700-v2
157 | netgear_r6800
158 | netgear_r6850
159 | netgear_r6900-v2
160 | netgear_r7200
161 | netgear_r7450
162 | netgear_wac104
163 | netgear_wac124
164 | netgear_wax202
165 | netgear_wax214v2
166 | netgear_wndr3700-v5
167 | netis_n6
168 | netis_wf2881
169 | openfi_5pro
170 | oraybox_x3a
171 | phicomm_k2p
172 | planex_vr500
173 | raisecom_msg1500-x-00
174 | renkforce_ws-wn530hp3-a
175 | rostelecom_rt-fe-1a
176 | rostelecom_rt-sf-1
177 | ruijie_rg-ew1200g-pro-v1.1
178 | samknows_whitebox-v8
179 | sercomm_na502
180 | sercomm_na502s
181 | sim_simax1800t
182 | snr_snr-cpe-me1
183 | snr_snr-cpe-me2-lite
184 | snr_snr-cpe-me2-sfp
185 | storylink_sap-g3200u3
186 | telco-electronics_x1
187 | tenbay_t-mb5eu-v01
188 | thunder_timecloud
189 | totolink_a7000r
190 | totolink_x5000r
191 | tozed_zlt-s12-pro
192 | tplink_archer-a6-v3
193 | tplink_archer-ax23-v1
194 | tplink_archer-c6-v3
195 | tplink_archer-c6u-v1
196 | tplink_deco-m4r-v4
197 | tplink_eap235-wall-v1
198 | tplink_eap613-v1
199 | tplink_eap615-wall-v1
200 | tplink_ec330-g5u-v1
201 | tplink_er605-v2
202 | tplink_ex220-v1
203 | tplink_mr600-v2-eu
204 | tplink_re350-v1
205 | tplink_re500-v1
206 | tplink_re650-v1
207 | tplink_re650-v2
208 | tplink_tl-wpa8631p-v3
209 | ubnt_edgerouter-x
210 | ubnt_edgerouter-x-sfp
211 | ubnt_unifi-6-lite
212 | ubnt_unifi-flexhd
213 | ubnt_unifi-nanohd
214 | ubnt_usw-flex
215 | unielec_u7621-01-16m
216 | unielec_u7621-06-16m
217 | unielec_u7621-06-32m
218 | unielec_u7621-06-64m
219 | wavlink_wl-wn531a6
220 | wavlink_wl-wn533a8
221 | wavlink_wl-wn573hx1
222 | wavlink_ws-wn572hp3-4g
223 | wevo_11acnas
224 | wevo_w2914ns-v2
225 | wifire_s1500-nbn
226 | winstars_ws-wn536p3
227 | winstars_ws-wn583a6
228 | wodesys_wd-r1802u
229 | xiaomi_mi-router-3-pro
230 | xiaomi_mi-router-3g
231 | xiaomi_mi-router-3g-v2
232 | xiaomi_mi-router-4
233 | xiaomi_mi-router-4a-gigabit
234 | xiaomi_mi-router-4a-gigabit-v2
235 | xiaomi_mi-router-ac2100
236 | xiaomi_mi-router-cr6606
237 | xiaomi_mi-router-cr6608
238 | xiaomi_mi-router-cr6609
239 | xiaomi_redmi-router-ac2100
240 | xiaoyu_xy-c5
241 | xzwifi_creativebox-v1
242 | youhua_wr1200js
243 | youku_yk-l2
244 | yuncore_ax820
245 | yuncore_fap640
246 | yuncore_fap690
247 | yuncore_g720
248 | z-router_zr-2660
249 | zbtlink_zbt-we1326
250 | zbtlink_zbt-we3526
251 | zbtlink_zbt-wg1602-16m
252 | zbtlink_zbt-wg1602-v04-16m
253 | zbtlink_zbt-wg1602-v04-32m
254 | zbtlink_zbt-wg1608-16m
255 | zbtlink_zbt-wg1608-32m
256 | zbtlink_zbt-wg2626
257 | zbtlink_zbt-wg3526-16m
258 | zbtlink_zbt-wg3526-32m
259 | zio_freezio
260 | zte_e8820s
261 | zyxel_lte3301-plus
262 | zyxel_lte5398-m904
263 | zyxel_nr7101
264 | zyxel_nwa50ax
265 | zyxel_nwa55axe
266 | zyxel_wap6805
267 | zyxel_wsm20
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AutoBuildImmortalWrt
2 | [](https://github.com/wukongdaily/AutoBuildImmortalWrt/blob/master/LICENSE)
3 | 
4 |  [](https://github.com/wukongdaily/AutoBuildImmortalWrt/releases) [](https://www.bilibili.com/video/BV1EG6VYCER3) [](https://youtu.be/xIVtUwZR6U0)
5 |
6 | ## 🤔 这是什么?
7 | 它是一个工作流。可快速构建 带docker且支持自定义固件大小的 immortalWrt
8 | > 1、支持自定义固件大小 默认1GB 不建议设置过大 推荐1G-2G 更大需求可通过自定义插件里的扩容插件自行扩容
9 | > 2、支持可选预安装docker(可选)支持在UI上勾选是否集成商店
10 | > 3、支持按需增加[第三方软件](https://github.com/wukongdaily/store/blob/master/README.md) 如何集成 https://github.com/wukongdaily/AutoBuildImmortalWrt/discussions/209
11 | > 4、点击这里查看👉🏻[全部支持的机型列表](https://github.com/wukongdaily/AutoBuildImmortalWrt/blob/master/SUPPORT.md) 👈🏻
12 | > 5、在UI上 新增luci版本的可选项,默认最新版24.10.4 https://github.com/wukongdaily/AutoBuildImmortalWrt/discussions/426
13 | > 6、支持设置管理地址的ip 比如192.168.100.1 这里强调 这项功能仅针对多网口机型 单网口的逻辑还是自动获取ip模式(dhcp)无固定ip
14 | > 7、对于[插件追新的用户 建议前往run项目 下载run后 ](https://github.com/wukongdaily/RunFilesBuilder/discussions/41)用命令sh xx.run 覆盖安装
15 |
16 | ## [基本用法步骤](https://github.com/wukongdaily/AutoBuildImmortalWrt/wiki) 👈🏻
17 | 1、fork本项目
18 | 2、在fork后的项目中 点击【action】 找到需要的工作流后 run-workflow
19 |
20 | ## 虚拟机建议用哪条工作流?下图↓
21 |
22 | 虚拟机用户建议直接构建ISO镜像 此过程分2个阶段 阶段一构建固件imm 阶段二将其封装iso格式的安装器 总计耗时大约7-8分钟
23 | ISO在虚拟机引导后 跑码结束后,在命令行输入 `ddd` 按提示 完成虚拟磁盘的写入(安装immortalwrt到虚拟磁盘)
24 | 这样做也比较灵活 避免了格式转换和解压 同时还可以指定安装某个磁盘 而安装后的磁盘剩余空间也能加以利用。
25 | 详细的解说 可以参考我的另一个项目 [img-installer](https://github.com/wukongdaily/armbian-installer)
26 |
27 | ## 虚拟机用户使用的教学⬇️ ISO
28 | [](https://www.youtube.com/watch?v=ftSE3wSJi64) [](https://www.bilibili.com/video/BV1enxMzwEUe/)
29 |
30 | ## 物理机如何使用ISO格式的安装器(本项目独有)
31 | - Windows 建议将ISO拷贝到制作好的[Ventoy](https://www.ventoy.net/cn/index.html)
32 |
33 |
34 | - macOS 使用[balenaEtcher](https://etcher.balena.io/) 将ISO 刻录到U盘即可
35 |
36 |
37 | - 将制作好的U盘提前插在软路由 然后启动后 按Del 或者F12、F11、F7等 使U盘成为第一启动盘
38 |
39 |
40 | - 启动后在命令行输入 ddd 按提示 完成硬盘的写入 硬盘剩余空间你还可以自动分配
41 | - ISO安装器原理 点这里查看 https://github.com/wukongdaily/img-installer
42 | - 这是一个值得推广的方法 真心希望你能吸收、学会 费了很大心思的。没错、从今往后 [任何OpenWrt都有安装器了](https://github.com/wukongdaily/img-installer)
43 |
44 | ## 如何查询imm仓库内有哪些插件
45 | https://mirrors.sjtug.sjtu.edu.cn/immortalwrt/releases/24.10.4/packages/x86_64/luci/
46 | ## 如何查询imm仓库外目前可以集成哪些插件
47 | https://github.com/wukongdaily/store
48 | > 具体方法 https://github.com/wukongdaily/AutoBuildImmortalWrt/discussions/209
49 | ## 【视频教程】如何集成第三方插件?
50 | https://www.youtube.com/watch?v=KN6AJYV1hBI
51 | https://www.youtube.com/watch?v=7i6BQeitUtE
52 |
53 | ## 旁路由的用户必读
54 | 近期不少用户修改配置文件中的默认ip地址,误认为这个工作流可以直接设置旁路ip。这是巨大的误解,这样设置就乱套了。
55 | 旁路的逻辑应该是单网口模式。根据下面的固件属性可知。单网口默认采取`dhcp模式`,用户应当自行在上一级路由器查看给imm路由器分配的ip地址。
56 | 然后通过该ip来访问imm后台页面,在imm后台页面中,根据自己主路由的网段 自行配置旁路的ip地址。
57 |
58 | ## 正常路由模式必读
59 | 所谓正常的路由模式 就是指多网口用户,多网口的意思就是2个或者2个以上网口的情况。
60 | 一般wan用于拨号或者自动获取ip
61 | 而其他lan一般是给其他设备分配dhcp
62 | 这种情况下 你可以修改路由器的默认ip `192.168.100.1` 比如你可以修改为`192.168.80.1 ` 诸如此类。
63 | 没错,修改此ip 无非就是为了避免跟光猫或者跟家庭中的其他路由器网段冲突。大多数用户,无需更改。
64 |
65 | ## 该固件默认属性?(必读)
66 | - 该固件刷入【单网口设备】默认采用DHCP模式,自动获得ip。类似NAS的做法
67 | - 该固件刷入【多网口设备】默认WAN口采用DHCP模式,LAN 口ip为 `192.168.100.1`
其中eth0为WAN 其余网口均为LAN
68 | - 若用户在工作流中勾选了拨号信息 则WAN口模式为pppoe拨号模式。
69 | - 建议拨号用户使用之前重启一次光猫。
70 | - 综合上述特点,【单网口设备】应该先接路由器,先在上级路由器查看一下它的ip 再访问。
71 | - 上述特点 你都可以通过 `99-custom.sh` 配置和调整
72 |
73 | ## 特别说明
74 | 本项目构建的固件 为了易用性 wan口防火墙规则入站 是开启的,待首次调试完毕后,建议自行关闭。操作方法如下
75 | 网络——防火墙—— wan 的入站 选择拒绝 然后保存并应用即可。更多讨论[ 请参考这个话题](https://github.com/wukongdaily/AutoBuildImmortalWrt/discussions/341)
76 |
77 | 同时此项设置的相关代码详见 `files/etc/uci-defaults/99-custom.sh` 行首
78 |
79 | ## ❤️其它GitHub Action项目推荐🌟 (建议收藏)⬇️
80 | - ### [一键生成run插件] 🆕
81 | - https://github.com/wukongdaily/RunFilesBuilder
82 | - ### [一键生成docker离线镜像] 🆕
83 | - https://github.com/wukongdaily/DockerTarBuilder
84 | - ### [OpenWrt/Armbian IMG安装器ISO] 🆕
85 | - https://github.com/wukongdaily/img-installer
86 |
87 |
88 | ## ❤️如何构建docker版ImmortalWrt(建议收藏)⬇️
89 | https://wkdaily.cpolar.cn/15
90 | # 🌟鸣谢
91 | ### https://github.com/immortalwrt
92 | ### https://github.com/ophub/flippy-openwrt-actions
93 | ### https://github.com/ophub/amlogic-s9xxx-openwrt
94 | ### https://github.com/sirpdboy
95 | ### https://github.com/wukongdaily/ib-overlay
96 | ### 高级卸载插件出处 by VedioTalk https://xz.vumstar.com
97 | ### 新增极光主题 来自 https://github.com/eamonxg/luci-theme-aurora
98 |
99 | ## ❤️赞助作者 ⬇️⬇️
100 |
101 | [](https://wkdaily.cpolar.cn/01)
102 |
103 |
104 |
105 |
106 |
107 | 🍭相关引用
108 |
109 | #### 🍭引用和项目参考的仓库
110 | - https://github.com/wukongdaily/RunFilesBuilder
111 | - https://github.com/wukongdaily/store
112 | - https://github.com/xiaorouji/openwrt-passwall
113 | - https://github.com/xiaorouji/openwrt-passwall2
114 | - https://github.com/sirpdboy/luci-theme-kucat
115 | - https://github.com/AdguardTeam/AdGuardHome
116 | - https://github.com/kiddin9/kwrt-packages
117 |
--------------------------------------------------------------------------------
/.github/workflows/build-rockchip-immortalWrt-23.05.4.yml:
--------------------------------------------------------------------------------
1 | name: build-rockchip-immortalWrt-23.05.4
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | profile:
7 | type: choice
8 | description: |
9 | 输入 软路由型号 可选值如下:
10 | required: true
11 | options:
12 | - ariaboard_photonicat
13 | - armsom_sige3
14 | - ezpro_mrkaio-m68s
15 | - firefly_roc-rk3328-cc
16 | - firefly_roc-rk3568-pc
17 | - friendlyarm_nanopc-t4
18 | - friendlyarm_nanopi-r2c
19 | - friendlyarm_nanopi-r2c-plus
20 | - friendlyarm_nanopi-r2s
21 | - friendlyarm_nanopi-r4s
22 | - friendlyarm_nanopi-r4s-enterprise
23 | - friendlyarm_nanopi-r4se
24 | - friendlyarm_nanopi-r5c
25 | - friendlyarm_nanopi-r5s
26 | - huake_guangmiao-g4c
27 | - lunzn_fastrhino-r66s
28 | - lunzn_fastrhino-r68s
29 | - lyt_t68m
30 | - pine64_rockpro64
31 | - radxa_rock-pi-4a
32 | - radxa_rock-pi-e
33 | - xunlong_orangepi-r1-plus
34 | - xunlong_orangepi-r1-plus-lts
35 | default: 'friendlyarm_nanopi-r4s'
36 | rootfs_partsize:
37 | description: '设置软件包大小 单位(MB)'
38 | required: true
39 | default: '1024'
40 | custom_router_ip:
41 | description: "请设置软路由的管理地址(注意仅对多网口软路由有效) 格式:192.168.x.1 或 10.x.x.1"
42 | required: true
43 | default: "192.168.100.1"
44 | enable_store:
45 | description: "集成 store 商店"
46 | required: false
47 | type: boolean
48 | default: true
49 | include_docker:
50 | description: |
51 | 是否编译 Docker 插件
52 | required: true
53 | default: 'yes'
54 | type: choice
55 | options:
56 | - 'yes'
57 | - 'no'
58 | enable_pppoe:
59 | description: "是否配置PPPoE拨号信息?"
60 | required: true
61 | default: 'no'
62 | type: choice
63 | options:
64 | - 'yes'
65 | - 'no'
66 | pppoe_account:
67 | description: "宽带账号 (若启用PPPoE)"
68 | required: false
69 | pppoe_password:
70 | description: "宽带密码 (若启用PPPoE)"
71 | required: false
72 |
73 | jobs:
74 | build:
75 | runs-on: ubuntu-22.04
76 |
77 | steps:
78 | - name: Checkout code
79 | uses: actions/checkout@v3
80 |
81 | - name: Set executable permissions
82 | run: chmod +x ${{ github.workspace }}/rockchip/build23.sh
83 |
84 | - name: Save Custom Router IP into OpenWrt files
85 | run: |
86 | mkdir -p "${{ github.workspace }}/custom"
87 | echo "${{ github.event.inputs.custom_router_ip }}" > "${{ github.workspace }}/custom/custom_router_ip.txt"
88 | echo "您设置的Rockchip软路由管理地址是:${{ github.event.inputs.custom_router_ip }}"
89 | # 后续步骤会将该文件映射到路由器/etc/config/custom_router_ip.txt 以便用于开机脚本99-custom.sh读取用户设置的ip
90 |
91 | - name: Validate PPPoE Inputs
92 | run: |
93 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
94 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
95 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
96 | exit 1
97 | fi
98 | fi
99 |
100 | - name: Enable Store integration
101 | run: |
102 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
103 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
104 | echo "✅ 已追加 luci-app-store"
105 | else
106 | echo "❎ 未启用 luci-app-store"
107 | fi
108 |
109 | - name: Building Rockchip ImmortalWrt
110 | run: |
111 | profiles="${{ github.event.inputs.profile }}"
112 | include_docker="${{ github.event.inputs.include_docker }}"
113 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
114 |
115 | IFS=',' read -r -a profile_array <<< "$profiles"
116 |
117 | for profile in "${profile_array[@]}"; do
118 | echo "Building for profile: $profile"
119 |
120 | docker run --rm -i \
121 | --user root \
122 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
123 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
124 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
125 | -v "${{ github.workspace }}/rockchip/imm.config:/home/build/immortalwrt/.config" \
126 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
127 | -v "${{ github.workspace }}/rockchip/build23.sh:/home/build/immortalwrt/build.sh" \
128 | -e PROFILE=$profile \
129 | -e INCLUDE_DOCKER=$include_docker \
130 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
131 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
132 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
133 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
134 | immortalwrt/imagebuilder:rockchip-armv8-openwrt-23.05.4 /bin/bash /home/build/immortalwrt/build.sh
135 | done
136 |
137 | - name: Create info
138 | run: |
139 | cat > ${{ github.workspace }}/router-info.md <> ${{ github.workspace }}/router-info.md
151 | else
152 | echo -e "\n#### 不带docker" >> ${{ github.workspace }}/router-info.md
153 | fi
154 |
155 | - name: Upload ImmortWrt as release assets
156 | uses: softprops/action-gh-release@v2.2.1
157 | with:
158 | tag_name: Autobuild-23.05.4
159 | name: ImmortWrt-Rockchip
160 | body_path: ${{ github.workspace }}/router-info.md
161 | files: |
162 | ${{ github.workspace }}/bin/targets/rockchip/armv8/*.img.gz
163 | token: ${{ secrets.GITHUB_TOKEN }}
164 | env:
165 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
--------------------------------------------------------------------------------
/files/etc/uci-defaults/99-custom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # 99-custom.sh 就是immortalwrt固件首次启动时运行的脚本 位于固件内的/etc/uci-defaults/99-custom.sh
3 | # Log file for debugging
4 | LOGFILE="/etc/config/uci-defaults-log.txt"
5 | echo "Starting 99-custom.sh at $(date)" >>$LOGFILE
6 | # 设置默认防火墙规则,方便单网口虚拟机首次访问 WebUI
7 | # 因为本项目中 单网口模式是dhcp模式 直接就能上网并且访问web界面 避免新手每次都要修改/etc/config/network中的静态ip
8 | # 当你刷机运行后 都调整好了 你完全可以在web页面自行关闭 wan口防火墙的入站数据
9 | # 具体操作方法:网络——防火墙 在wan的入站数据 下拉选项里选择 拒绝 保存并应用即可。
10 | uci set firewall.@zone[1].input='ACCEPT'
11 |
12 | # 设置主机名映射,解决安卓原生 TV 无法联网的问题
13 | uci add dhcp domain
14 | uci set "dhcp.@domain[-1].name=time.android.com"
15 | uci set "dhcp.@domain[-1].ip=203.107.6.88"
16 |
17 | # 检查配置文件pppoe-settings是否存在 该文件由build.sh动态生成
18 | SETTINGS_FILE="/etc/config/pppoe-settings"
19 | if [ ! -f "$SETTINGS_FILE" ]; then
20 | echo "PPPoE settings file not found. Skipping." >>$LOGFILE
21 | else
22 | # 读取pppoe信息($enable_pppoe、$pppoe_account、$pppoe_password)
23 | . "$SETTINGS_FILE"
24 | fi
25 |
26 | # 1. 先获取所有物理接口列表
27 | ifnames=""
28 | for iface in /sys/class/net/*; do
29 | iface_name=$(basename "$iface")
30 | if [ -e "$iface/device" ] && echo "$iface_name" | grep -Eq '^eth|^en'; then
31 | ifnames="$ifnames $iface_name"
32 | fi
33 | done
34 | ifnames=$(echo "$ifnames" | awk '{$1=$1};1')
35 |
36 | count=$(echo "$ifnames" | wc -w)
37 | echo "Detected physical interfaces: $ifnames" >>$LOGFILE
38 | echo "Interface count: $count" >>$LOGFILE
39 |
40 | # 2. 根据板子型号映射WAN和LAN接口
41 | board_name=$(cat /tmp/sysinfo/board_name 2>/dev/null || echo "unknown")
42 | echo "Board detected: $board_name" >>$LOGFILE
43 |
44 | wan_ifname=""
45 | lan_ifnames=""
46 | # 此处特殊处理个别开发板网口顺序问题
47 | case "$board_name" in
48 | "radxa,e20c"|"friendlyarm,nanopi-r5c")
49 | wan_ifname="eth1"
50 | lan_ifnames="eth0"
51 | echo "Using $board_name mapping: WAN=$wan_ifname LAN=$lan_ifnames" >>"$LOGFILE"
52 | ;;
53 | *)
54 | # 默认第一个接口为WAN,其余为LAN
55 | wan_ifname=$(echo "$ifnames" | awk '{print $1}')
56 | lan_ifnames=$(echo "$ifnames" | cut -d ' ' -f2-)
57 | echo "Using default mapping: WAN=$wan_ifname LAN=$lan_ifnames" >>"$LOGFILE"
58 | ;;
59 | esac
60 |
61 | # 3. 配置网络
62 | if [ "$count" -eq 1 ]; then
63 | # 单网口设备,DHCP模式
64 | uci set network.lan.proto='dhcp'
65 | uci delete network.lan.ipaddr
66 | uci delete network.lan.netmask
67 | uci delete network.lan.gateway
68 | uci delete network.lan.dns
69 | uci commit network
70 | elif [ "$count" -gt 1 ]; then
71 | # 多网口设备配置
72 | # 配置WAN
73 | uci set network.wan=interface
74 | uci set network.wan.device="$wan_ifname"
75 | uci set network.wan.proto='dhcp'
76 |
77 | # 配置WAN6
78 | uci set network.wan6=interface
79 | uci set network.wan6.device="$wan_ifname"
80 | uci set network.wan6.proto='dhcpv6'
81 |
82 | # 查找 br-lan 设备 section
83 | section=$(uci show network | awk -F '[.=]' '/\.@?device\[\d+\]\.name=.br-lan.$/ {print $2; exit}')
84 | if [ -z "$section" ]; then
85 | echo "error:cannot find device 'br-lan'." >>$LOGFILE
86 | else
87 | # 删除原有ports
88 | uci -q delete "network.$section.ports"
89 | # 添加LAN接口端口
90 | for port in $lan_ifnames; do
91 | uci add_list "network.$section.ports"="$port"
92 | done
93 | echo "Updated br-lan ports: $lan_ifnames" >>$LOGFILE
94 | fi
95 |
96 | # LAN口设置静态IP
97 | uci set network.lan.proto='static'
98 | # 多网口设备 支持修改为别的管理后台地址 在Github Action 的UI上自行输入即可
99 | uci set network.lan.netmask='255.255.255.0'
100 | # 设置路由器管理后台地址
101 | IP_VALUE_FILE="/etc/config/custom_router_ip.txt"
102 | if [ -f "$IP_VALUE_FILE" ]; then
103 | CUSTOM_IP=$(cat "$IP_VALUE_FILE")
104 | # 用户在UI上设置的路由器后台管理地址
105 | uci set network.lan.ipaddr=$CUSTOM_IP
106 | echo "custom router ip is $CUSTOM_IP" >> $LOGFILE
107 | else
108 | uci set network.lan.ipaddr='192.168.100.1'
109 | echo "default router ip is 192.168.100.1" >> $LOGFILE
110 | fi
111 |
112 | # PPPoE设置
113 | echo "enable_pppoe value: $enable_pppoe" >>$LOGFILE
114 | if [ "$enable_pppoe" = "yes" ]; then
115 | echo "PPPoE enabled, configuring..." >>$LOGFILE
116 | uci set network.wan.proto='pppoe'
117 | uci set network.wan.username="$pppoe_account"
118 | uci set network.wan.password="$pppoe_password"
119 | uci set network.wan.peerdns='1'
120 | uci set network.wan.auto='1'
121 | uci set network.wan6.proto='none'
122 | echo "PPPoE config done." >>$LOGFILE
123 | else
124 | echo "PPPoE not enabled." >>$LOGFILE
125 | fi
126 |
127 | uci commit network
128 | fi
129 |
130 | # 若安装了dockerd 则设置docker的防火墙规则
131 | # 扩大docker涵盖的子网范围 '172.16.0.0/12'
132 | # 方便各类docker容器的端口顺利通过防火墙
133 | if command -v dockerd >/dev/null 2>&1; then
134 | echo "检测到 Docker,正在配置防火墙规则..."
135 | FW_FILE="/etc/config/firewall"
136 |
137 | # 删除所有名为 docker 的 zone
138 | uci delete firewall.docker
139 |
140 | # 先获取所有 forwarding 索引,倒序排列删除
141 | for idx in $(uci show firewall | grep "=forwarding" | cut -d[ -f2 | cut -d] -f1 | sort -rn); do
142 | src=$(uci get firewall.@forwarding[$idx].src 2>/dev/null)
143 | dest=$(uci get firewall.@forwarding[$idx].dest 2>/dev/null)
144 | echo "Checking forwarding index $idx: src=$src dest=$dest"
145 | if [ "$src" = "docker" ] || [ "$dest" = "docker" ]; then
146 | echo "Deleting forwarding @forwarding[$idx]"
147 | uci delete firewall.@forwarding[$idx]
148 | fi
149 | done
150 | # 提交删除
151 | uci commit firewall
152 | # 追加新的 zone + forwarding 配置
153 | cat <>"$FW_FILE"
154 |
155 | config zone 'docker'
156 | option input 'ACCEPT'
157 | option output 'ACCEPT'
158 | option forward 'ACCEPT'
159 | option name 'docker'
160 | list subnet '172.16.0.0/12'
161 |
162 | config forwarding
163 | option src 'docker'
164 | option dest 'lan'
165 |
166 | config forwarding
167 | option src 'docker'
168 | option dest 'wan'
169 |
170 | config forwarding
171 | option src 'lan'
172 | option dest 'docker'
173 | EOF
174 |
175 | else
176 | echo "未检测到 Docker,跳过防火墙配置。"
177 | fi
178 |
179 | # 设置所有网口可访问网页终端
180 | uci delete ttyd.@ttyd[0].interface
181 |
182 | # 设置所有网口可连接 SSH
183 | uci set dropbear.@dropbear[0].Interface=''
184 | uci commit
185 |
186 | # 设置编译作者信息
187 | FILE_PATH="/etc/openwrt_release"
188 | NEW_DESCRIPTION="Packaged by wukongdaily"
189 | sed -i "s/DISTRIB_DESCRIPTION='[^']*'/DISTRIB_DESCRIPTION='$NEW_DESCRIPTION'/" "$FILE_PATH"
190 |
191 | # 若luci-app-advancedplus (进阶设置)已安装 则去除zsh的调用 防止命令行报 /usb/bin/zsh: not found的提示
192 | if opkg list-installed | grep -q '^luci-app-advancedplus '; then
193 | sed -i '/\/usr\/bin\/zsh/d' /etc/profile
194 | sed -i '/\/bin\/zsh/d' /etc/init.d/advancedplus
195 | sed -i '/\/usr\/bin\/zsh/d' /etc/init.d/advancedplus
196 | fi
197 |
198 | exit 0
199 |
--------------------------------------------------------------------------------
/.github/workflows/build-rockchip-immortalWrt-24.10.x.yml:
--------------------------------------------------------------------------------
1 | name: build-rockchip-immortalWrt-24.10.x
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | luci_version:
7 | description: "选择luci版本"
8 | required: false
9 | default: "24.10.4"
10 | type: choice
11 | options:
12 | - 24.10.0
13 | - 24.10.1
14 | - 24.10.2
15 | - 24.10.3
16 | - 24.10.4
17 | profile:
18 | type: choice
19 | description: |
20 | 输入 软路由型号 可选值如下:
21 | options:
22 | - ariaboard_photonicat
23 | - armsom_sige3
24 | - armsom_sige7
25 | - cyber_cyber3588-aib
26 | - ezpro_mrkaio-m68s
27 | - firefly_roc-rk3328-cc
28 | - firefly_roc-rk3568-pc
29 | - friendlyarm_nanopc-t4
30 | - friendlyarm_nanopc-t6
31 | - friendlyarm_nanopi-r2c
32 | - friendlyarm_nanopi-r2c-plus
33 | - friendlyarm_nanopi-r2s
34 | - friendlyarm_nanopi-r3s
35 | - friendlyarm_nanopi-r4s
36 | - friendlyarm_nanopi-r4se
37 | - friendlyarm_nanopi-r4s-enterprise
38 | - friendlyarm_nanopi-r5c
39 | - friendlyarm_nanopi-r5s
40 | - friendlyarm_nanopi-r6c
41 | - friendlyarm_nanopi-r6s
42 | - huake_guangmiao-g4c
43 | - lunzn_fastrhino-r66s
44 | - lunzn_fastrhino-r68s
45 | - lyt_t68m
46 | - pine64_rock64
47 | - pine64_rockpro64
48 | - radxa_cm3_io
49 | - radxa_e25
50 | - radxa_rock-3a
51 | - radxa_rock-3b
52 | - radxa_rock-3c
53 | - radxa_rock-5a
54 | - radxa_rock-5b
55 | - radxa_rock-pi-4a
56 | - radxa_rock-pi-e
57 | - radxa_rock-pi-s
58 | - radxa_zero-3e
59 | - radxa_zero-3w
60 | - sinovoip_bpi-r2-pro
61 | - xunlong_orangepi-5
62 | - xunlong_orangepi-5-plus
63 | - xunlong_orangepi-r1-plus
64 | - xunlong_orangepi-r1-plus-lts
65 | required: true
66 | default: 'friendlyarm_nanopi-r3s'
67 | custom_router_ip:
68 | description: "请设置软路由的管理地址(注意仅对多网口软路由有效) 格式:192.168.x.1 或 10.x.x.1"
69 | required: true
70 | default: "192.168.100.1"
71 | rootfs_partsize:
72 | description: '设置软件包大小 单位(MB)'
73 | required: true
74 | default: '1024'
75 | enable_store:
76 | description: "集成 store 商店"
77 | required: false
78 | type: boolean
79 | default: true
80 | include_docker:
81 | description: |
82 | 是否编译 Docker 插件
83 | required: true
84 | default: 'yes'
85 | type: choice
86 | options:
87 | - 'yes'
88 | - 'no'
89 | enable_pppoe:
90 | description: "是否配置PPPoE拨号信息?"
91 | required: true
92 | default: 'no'
93 | type: choice
94 | options:
95 | - 'yes'
96 | - 'no'
97 | pppoe_account:
98 | description: "宽带账号 (若启用PPPoE)"
99 | required: false
100 | pppoe_password:
101 | description: "宽带密码 (若启用PPPoE)"
102 | required: false
103 |
104 | jobs:
105 | build:
106 | runs-on: ubuntu-22.04
107 |
108 | steps:
109 | - name: Checkout code
110 | uses: actions/checkout@v3
111 |
112 | - name: Set executable permissions
113 | run: chmod +x ${{ github.workspace }}/rockchip/build24.sh
114 |
115 | - name: Save Custom Router IP into OpenWrt files
116 | run: |
117 | mkdir -p "${{ github.workspace }}/custom"
118 | echo "${{ github.event.inputs.custom_router_ip }}" > "${{ github.workspace }}/custom/custom_router_ip.txt"
119 | echo "您设置的Rockchip软路由管理地址是:${{ github.event.inputs.custom_router_ip }}"
120 | # 后续步骤会将该文件映射到路由器/etc/config/custom_router_ip.txt 以便用于开机脚本99-custom.sh读取用户设置的ip
121 |
122 | - name: Validate PPPoE Inputs
123 | run: |
124 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
125 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
126 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
127 | exit 1
128 | fi
129 | fi
130 |
131 | - name: Enable Store integration
132 | run: |
133 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
134 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
135 | echo "✅ 已追加 luci-app-store"
136 | else
137 | echo "❎ 未启用 luci-app-store"
138 | fi
139 |
140 |
141 | - name: Building Rockchip ImmortalWrt
142 | run: |
143 | profile="${{ github.event.inputs.profile }}"
144 | include_docker="${{ github.event.inputs.include_docker }}"
145 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
146 | luci_version="${{ github.event.inputs.luci_version }}"
147 | echo "Building for profile: $profile"
148 | docker run --rm -i \
149 | --user root \
150 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
151 | -v "${{ github.workspace }}/files:/home/build/immortalwrt/files" \
152 | -v "${{ github.workspace }}/custom:/home/build/immortalwrt/files/etc/config" \
153 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
154 | -v "${{ github.workspace }}/rockchip/imm.config:/home/build/immortalwrt/.config" \
155 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
156 | -v "${{ github.workspace }}/rockchip/build24.sh:/home/build/immortalwrt/build.sh" \
157 | -e PROFILE=$profile \
158 | -e INCLUDE_DOCKER=$include_docker \
159 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
160 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
161 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
162 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
163 | immortalwrt/imagebuilder:rockchip-armv8-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
164 |
165 |
166 | - name: Create info
167 | run: |
168 | cat > ${{ github.workspace }}/router-info.md <> ${{ github.workspace }}/router-info.md
180 | else
181 | echo -e "\n#### 不带docker" >> ${{ github.workspace }}/router-info.md
182 | fi
183 |
184 | - name: Upload ImmortWrt as release assets
185 | uses: softprops/action-gh-release@v2.2.1
186 | with:
187 | tag_name: Autobuild
188 | name: ImmortWrt-Rockchip
189 | body_path: ${{ github.workspace }}/router-info.md
190 | files: |
191 | ${{ github.workspace }}/bin/targets/rockchip/armv8/*.img.gz
192 | token: ${{ secrets.GITHUB_TOKEN }}
193 | env:
194 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
195 |
--------------------------------------------------------------------------------
/.github/workflows/build-dev-board-by-flippy.yml:
--------------------------------------------------------------------------------
1 | name: Build Dev Board Firmware(Flippy)
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | luci_version:
6 | description: "选择luci版本"
7 | required: false
8 | default: "24.10.4"
9 | type: choice
10 | options:
11 | - 24.10.0
12 | - 24.10.1
13 | - 24.10.2
14 | - 24.10.3
15 | - 24.10.4
16 | openwrt_kernel:
17 | description: "选择构建的内核 当高版本内核没有时 系统会自动挑选匹配的内核。比如radxa e52c 即便你选择了6.1.y 可能最终构建还是5.10.160"
18 | required: false
19 | default: "6.1.y"
20 | type: choice
21 | options:
22 | - 5.4.y
23 | - 5.10.y
24 | - 5.15.y
25 | - 6.1.y
26 | - 6.6.y
27 | - 6.12.y
28 | openwrt_soc:
29 | description: "选择开发板型号"
30 | required: false
31 | default: "e20c"
32 | type: choice
33 | options:
34 | - e20c
35 | - e24c
36 | - e25
37 | - e52c
38 | - e54c
39 | - rock5b
40 | - rock5c
41 | - r66s
42 | - r68s
43 | - ht2
44 | - h28k
45 | - h66k
46 | - h68k
47 | - h69k
48 | - h69k-max
49 | - h88k
50 | - h88k-v3
51 | - jp-tvbox
52 | - l1pro
53 | - s905
54 | - s905x2
55 | - s905x3
56 | - s912
57 | - s922x
58 | - s922x-n2
59 |
60 | include_docker:
61 | description: |
62 | 是否编译 Docker 插件
63 | required: true
64 | default: 'no'
65 | type: choice
66 | options:
67 | - 'yes'
68 | - 'no'
69 | skip_imagebuilder:
70 | description: "直接使用底包快速构建固件, 忽略自定义插件 ----(跳过 ImageBuilder)"
71 | required: false
72 | default: false
73 | type: boolean
74 | replace_banner:
75 | description: '替换为ImmortalWrt的banner信息'
76 | required: false
77 | default: false
78 | type: boolean
79 | rootfs_partsize:
80 | description: '软件包大小1G固定'
81 | required: true
82 | default: "1024"
83 | type: choice
84 | options:
85 | - '1024'
86 | builder_name:
87 | description: "设置打包作者的名称"
88 | required: true
89 | default: 'wukongdaily'
90 |
91 | jobs:
92 | build:
93 | runs-on: ubuntu-22.04
94 | steps:
95 | - name: Checkout code
96 | uses: actions/checkout@v3
97 |
98 | - name: Set executable permissions
99 | run: chmod +x ${{ github.workspace }}/n1/build.sh
100 |
101 | - name: Debug workspace contents
102 | run: ls -R
103 |
104 | - name: 处理是否替换 banner 信息
105 | if: ${{ github.event.inputs.skip_imagebuilder == 'false' && github.event.inputs.replace_banner == 'true' }}
106 | run: |
107 | # 使用ImageBuilder构建 且用户勾选了替换banner时
108 | cp n1/99-banner.sh files/etc/uci-defaults/
109 |
110 | - name: Build Rootfs for Radxa and Other Boards (ImmortalWrt)
111 | if: ${{ github.event.inputs.skip_imagebuilder != 'true' }}
112 | run: |
113 | echo "✅ 使用 ImageBuilder 构建 rootfs"
114 | profiles="generic"
115 | include_docker="${{ github.event.inputs.include_docker }}"
116 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
117 | luci_version="${{ github.event.inputs.luci_version }}"
118 |
119 | IFS=',' read -r -a profile_array <<< "$profiles"
120 |
121 | for profile in "${profile_array[@]}"; do
122 | echo "Building for profile: $profile"
123 |
124 | docker run --rm -i \
125 | --user root \
126 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
127 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
128 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
129 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
130 | -v "${{ github.workspace }}/n1/banner:/home/build/immortalwrt/files/mnt/banner" \
131 | -v "${{ github.workspace }}/n1/imm.config:/home/build/immortalwrt/.config" \
132 | -v "${{ github.workspace }}/n1/build.sh:/home/build/immortalwrt/build.sh" \
133 | -e PROFILE=$profile \
134 | -e INCLUDE_DOCKER=$include_docker \
135 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
136 | immortalwrt/imagebuilder:armsr-armv8-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
137 | done
138 |
139 | - name: Download prebuilt rootfs.tar.gz
140 | if: ${{ github.event.inputs.skip_imagebuilder == 'true' }}
141 | run: |
142 | echo "📦 正在下载预构建 rootfs"
143 | echo "PREBUILT_LUCI_VERSION=24.10.2" >> $GITHUB_ENV
144 | mkdir -p bin/targets/armsr/armv8
145 | curl -L -o bin/targets/armsr/armv8/openwrt-armvirt-64-default-rootfs.tar.gz \
146 | https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/download/rootfs/immortalwrt-24.10.2-armsr-armv8-generic-rootfs.tar.gz
147 |
148 | - name: 查找rootfs.tar.gz所在路径
149 | id: find_rootfs
150 | run: |
151 | ROOTFS_FILE=$(find bin/targets/armsr/armv8/ -type f -name "*rootfs.tar.gz" | head -n1)
152 | echo "✅ Found: $ROOTFS_FILE"
153 | if [ ! -f "$ROOTFS_FILE" ]; then
154 | echo "❌ 找不到 rootfs.tar.gz 文件"
155 | exit 1
156 | fi
157 | echo "file=$ROOTFS_FILE" >> $GITHUB_OUTPUT
158 |
159 | - name: Package armsr-armv8 as ImmortalWrt for Radxa
160 | uses: wukongdaily/flippy-openwrt-actions@kernel-6.1
161 | if: ${{ steps.down.outputs.status }} == 'success' && !cancelled()
162 | env:
163 | OPENWRT_ARMVIRT: ${{ steps.find_rootfs.outputs.file }}
164 | PACKAGE_SOC: ${{ inputs.openwrt_soc }}
165 | KERNEL_VERSION_NAME: ${{ inputs.openwrt_kernel }}
166 | KERNEL_AUTO_LATEST: true
167 | KERNEL_REPO_URL: "ophub/kernel"
168 | WHOAMI: ${{ inputs.builder_name }}
169 |
170 | - name: Rename .img.gz file
171 | id: rename
172 | run: |
173 | FILE=$(ls ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz | head -n1)
174 | echo "Image file is: $FILE"
175 | FILENAME=$(basename "$FILE")
176 | echo "FILENAME=$FILENAME" >> $GITHUB_ENV
177 | KERNEL_VERSION=$(echo "$FILENAME" | grep -oP 'k\d+\.\d+\.\d+')
178 | MODEL=${{ inputs.openwrt_soc }}
179 | if [ -n "$PREBUILT_LUCI_VERSION" ]; then
180 | echo "PREBUILT_LUCI_VERSION is not empty: $PREBUILT_LUCI_VERSION"
181 | mv "$FILE" "${{ env.PACKAGED_OUTPUTPATH }}/immortalwrt-$PREBUILT_LUCI_VERSION-$MODEL-btrfs-$KERNEL_VERSION.img.gz"
182 | else
183 | LUCI_VERSION="${{ github.event.inputs.luci_version }}"
184 | mv "$FILE" "${{ env.PACKAGED_OUTPUTPATH }}/immortalwrt-$LUCI_VERSION-$MODEL-btrfs-$KERNEL_VERSION.img.gz"
185 | fi
186 |
187 |
188 | - name: Upload firmware to GitHub Releases
189 | uses: softprops/action-gh-release@v2.2.1
190 | with:
191 | tag_name: flippy
192 | name: ImmortalWrt for Radxa Series and Similar Devices
193 | body_path: ${{ github.workspace }}/n1/radxa.md
194 | files: |
195 | ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz
196 | env:
197 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
198 |
--------------------------------------------------------------------------------
/rockchip/makeinfo.txt:
--------------------------------------------------------------------------------
1 | Current Target: "rockchip/armv8"
2 | Current Architecture: "aarch64"
3 | Current Revision: "r32509-ed4f046c3537"
4 | Default Packages: base-files ca-bundle dropbear fstools libc libgcc libustream-openssl logd mtd netifd uci uclient-fetch urandom-seed urngd uboot-envtools partx-utils mkf2fs kmod-gpio-button-hotplug fdisk automount autocore luci-app-cpufreq opkg busybox procd procd-ujail procd-seccomp dnsmasq-full firewall4 nftables kmod-nft-offload odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe block-mount default-settings-chn kmod-nf-nathelper kmod-nf-nathelper-extra luci-light luci-app-package-manager luci-compat luci-lib-base luci-lib-ipkg
5 | Available Profiles:
6 |
7 | ariaboard_photonicat:
8 | Ariaboard Photonicat
9 | Packages: kmod-ath10k-sdio ath10k-firmware-qca9377-sdio wpad-openssl kmod-usb-net-cdc-mbim kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi iwinfo
10 | hasImageMetadata: 1
11 | SupportedDevices: ariaboard,photonicat
12 | armsom_sige3:
13 | ArmSoM Sige3
14 | Packages: kmod-brcmfmac kmod-r8125 wpad-openssl brcmfmac-firmware-43752-sdio brcmfmac-nvram-43752-sdio iwinfo
15 | hasImageMetadata: 1
16 | SupportedDevices: armsom,sige3
17 | armsom_sige7:
18 | ArmSoM Sige7
19 | Packages: kmod-brcmfmac kmod-r8125 wpad-openssl brcmfmac-firmware-43752-pcie brcmfmac-nvram-43752-pcie iwinfo
20 | hasImageMetadata: 1
21 | SupportedDevices: armsom,sige7
22 | cyber_cyber3588-aib:
23 | Cyber 3588 AIB
24 | Packages: kmod-ata-ahci-dwc kmod-r8125 kmod-mt7921e wpad-openssl kmod-usb-net-cdc-mbim kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi iwinfo
25 | hasImageMetadata: 1
26 | SupportedDevices: cyber,cyber3588-aib
27 | ezpro_mrkaio-m68s:
28 | EZPRO Mrkaio M68S
29 | Packages: kmod-ata-ahci-dwc
30 | hasImageMetadata: 1
31 | SupportedDevices: ezpro,mrkaio-m68s
32 | firefly_roc-rk3328-cc:
33 | Firefly ROC-RK3328-CC
34 | Packages:
35 | hasImageMetadata: 1
36 | SupportedDevices: firefly,roc-rk3328-cc
37 | firefly_roc-rk3568-pc:
38 | Firefly Station P2
39 | Packages: kmod-ata-ahci-dwc kmod-brcmfmac wpad-openssl brcmfmac-firmware-43752-sdio brcmfmac-nvram-43752-sdio iwinfo
40 | hasImageMetadata: 1
41 | SupportedDevices: firefly,rk3568-roc-pc
42 | friendlyarm_nanopc-t4:
43 | FriendlyARM NanoPC T4
44 | Packages: kmod-brcmfmac wpad-openssl brcmfmac-firmware-4356-sdio brcmfmac-nvram-4356-sdio iwinfo
45 | hasImageMetadata: 1
46 | SupportedDevices: friendlyarm,nanopc-t4
47 | friendlyarm_nanopc-t6:
48 | FriendlyARM NanoPC T6
49 | Packages: kmod-r8125
50 | hasImageMetadata: 1
51 | SupportedDevices: friendlyarm,nanopc-t6
52 | friendlyarm_nanopi-r2c:
53 | FriendlyARM NanoPi R2C
54 | Packages: kmod-usb-net-rtl8152
55 | hasImageMetadata: 1
56 | SupportedDevices: friendlyarm,nanopi-r2c
57 | friendlyarm_nanopi-r2c-plus:
58 | FriendlyARM NanoPi R2C Plus
59 | Packages: kmod-usb-net-rtl8152
60 | hasImageMetadata: 1
61 | SupportedDevices: friendlyarm,nanopi-r2c-plus
62 | friendlyarm_nanopi-r2s:
63 | FriendlyARM NanoPi R2S
64 | Packages: kmod-usb-net-rtl8152
65 | hasImageMetadata: 1
66 | SupportedDevices: friendlyarm,nanopi-r2s
67 | friendlyarm_nanopi-r3s:
68 | FriendlyARM NanoPi R3S
69 | Packages: kmod-r8168
70 | hasImageMetadata: 1
71 | SupportedDevices: friendlyarm,nanopi-r3s
72 | friendlyarm_nanopi-r4s:
73 | FriendlyARM NanoPi R4S
74 | Packages: kmod-r8168
75 | hasImageMetadata: 1
76 | SupportedDevices: friendlyarm,nanopi-r4s
77 | friendlyarm_nanopi-r4se:
78 | FriendlyARM NanoPi R4SE
79 | Packages: kmod-r8168
80 | hasImageMetadata: 1
81 | SupportedDevices: friendlyarm,nanopi-r4se
82 | friendlyarm_nanopi-r4s-enterprise:
83 | FriendlyARM NanoPi R4S Enterprise Edition
84 | Packages: kmod-r8168
85 | hasImageMetadata: 1
86 | SupportedDevices: friendlyarm,nanopi-r4s-enterprise
87 | friendlyarm_nanopi-r5c:
88 | FriendlyARM NanoPi R5C
89 | Packages: kmod-r8125 kmod-rtw88-8822ce rtl8822ce-firmware wpad-openssl iwinfo
90 | hasImageMetadata: 1
91 | SupportedDevices: friendlyarm,nanopi-r5c
92 | friendlyarm_nanopi-r5s:
93 | FriendlyARM NanoPi R5S
94 | Packages: kmod-r8125
95 | hasImageMetadata: 1
96 | SupportedDevices: friendlyarm,nanopi-r5s
97 | friendlyarm_nanopi-r6c:
98 | FriendlyARM NanoPi R6C
99 | Packages: kmod-r8125
100 | hasImageMetadata: 1
101 | SupportedDevices: friendlyarm,nanopi-r6c
102 | friendlyarm_nanopi-r6s:
103 | FriendlyARM NanoPi R6S
104 | Packages: kmod-r8125
105 | hasImageMetadata: 1
106 | SupportedDevices: friendlyarm,nanopi-r6s
107 | huake_guangmiao-g4c:
108 | Huake-Cloud GuangMiao G4C
109 | Packages: kmod-r8168
110 | hasImageMetadata: 1
111 | SupportedDevices: huake,guangmiao-g4c
112 | lunzn_fastrhino-r66s:
113 | Lunzn FastRhino R66S
114 | Packages: kmod-r8125
115 | hasImageMetadata: 1
116 | SupportedDevices: lunzn,fastrhino-r66s
117 | lunzn_fastrhino-r68s:
118 | Lunzn FastRhino R68S
119 | Packages: kmod-r8125
120 | hasImageMetadata: 1
121 | SupportedDevices: lunzn,fastrhino-r68s
122 | lyt_t68m:
123 | LYT T68M
124 | Packages: kmod-r8125 kmod-mt7921e wpad-openssl iwinfo
125 | hasImageMetadata: 1
126 | SupportedDevices: lyt,t68m
127 | pine64_rock64:
128 | Pine64 Rock64
129 | Packages:
130 | hasImageMetadata: 1
131 | SupportedDevices: pine64,rock64
132 | pine64_rockpro64:
133 | Pine64 RockPro64
134 | Packages:
135 | hasImageMetadata: 1
136 | SupportedDevices: pine64,rockpro64
137 | radxa_cm3-io:
138 | Radxa CM3 IO
139 | Packages:
140 | hasImageMetadata: 1
141 | SupportedDevices: radxa,cm3-io
142 | radxa_e25:
143 | Radxa E25
144 | Packages: kmod-r8125 kmod-ata-ahci-dwc
145 | hasImageMetadata: 1
146 | SupportedDevices: radxa,e25
147 | radxa_rock-3a:
148 | Radxa ROCK 3A
149 | Packages: kmod-usb-net-cdc-ncm kmod-usb-net-rndis
150 | hasImageMetadata: 1
151 | SupportedDevices: radxa,rock3a
152 | radxa_rock-3b:
153 | Radxa ROCK 3B
154 | Packages: kmod-usb-net-cdc-ncm kmod-usb-net-rndis
155 | hasImageMetadata: 1
156 | SupportedDevices: radxa,rock-3b
157 | radxa_rock-3c:
158 | Radxa ROCK 3C
159 | Packages: kmod-usb-net-cdc-ncm kmod-usb-net-rndis
160 | hasImageMetadata: 1
161 | SupportedDevices: radxa,rock-3c
162 | radxa_rock-5a:
163 | Radxa ROCK 5A
164 | Packages: kmod-r8125 kmod-hwmon-pwmfan
165 | hasImageMetadata: 1
166 | SupportedDevices: radxa,rock-5a
167 | radxa_rock-5b:
168 | Radxa ROCK 5B
169 | Packages: kmod-r8125 kmod-hwmon-pwmfan
170 | hasImageMetadata: 1
171 | SupportedDevices: radxa,rock-5b
172 | radxa_rock-pi-4a:
173 | Radxa ROCK Pi 4A
174 | Packages: kmod-brcmfmac wpad-openssl brcmfmac-firmware-43456-sdio brcmfmac-nvram-43456-sdio iwinfo
175 | hasImageMetadata: 1
176 | SupportedDevices: radxa,rockpi4a radxa,rockpi4
177 | radxa_rock-pi-e:
178 | Radxa ROCK Pi E
179 | Packages: kmod-rtw88-8723du kmod-usb-net-cdc-ncm kmod-usb-net-rndis wpad-openssl iwinfo
180 | hasImageMetadata: 1
181 | SupportedDevices: radxa,rockpi-e
182 | radxa_rock-pi-s:
183 | Radxa ROCK Pi S
184 | Packages: kmod-rtw88-8723ds kmod-usb-net-cdc-ncm kmod-usb-net-rndis wpad-openssl iwinfo
185 | hasImageMetadata: 1
186 | SupportedDevices: radxa,rockpis
187 | radxa_zero-3e:
188 | Radxa ZERO 3E
189 | Packages: kmod-usb-net-cdc-ncm kmod-usb-net-rndis
190 | hasImageMetadata: 1
191 | SupportedDevices: radxa,zero-3e
192 | radxa_zero-3w:
193 | Radxa ZERO 3W
194 | Packages: kmod-usb-net-cdc-ncm kmod-usb-net-rndis
195 | hasImageMetadata: 1
196 | SupportedDevices: radxa,zero-3w
197 | sinovoip_bpi-r2-pro:
198 | Bananapi BPi-R2 Pro
199 | Packages: kmod-ata-ahci-dwc
200 | hasImageMetadata: 1
201 | SupportedDevices: sinovoip,rk3568-bpi-r2pro
202 | xunlong_orangepi-5:
203 | Xunlong Orange Pi 5
204 | Packages:
205 | hasImageMetadata: 1
206 | SupportedDevices: xunlong,orangepi-5
207 | xunlong_orangepi-5-plus:
208 | Xunlong Orange Pi 5 Plus
209 | Packages: kmod-r8125
210 | hasImageMetadata: 1
211 | SupportedDevices: xunlong,orangepi-5-plus
212 | xunlong_orangepi-r1-plus:
213 | Xunlong Orange Pi R1 Plus
214 | Packages: kmod-usb-net-rtl8152
215 | hasImageMetadata: 1
216 | SupportedDevices: xunlong,orangepi-r1-plus
217 | xunlong_orangepi-r1-plus-lts:
218 | Xunlong Orange Pi R1 Plus LTS
219 | Packages: kmod-usb-net-rtl8152
220 | hasImageMetadata: 1
221 | SupportedDevices: xunlong,orangepi-r1-plus-lts
222 |
--------------------------------------------------------------------------------
/.github/workflows/build-N1.yml:
--------------------------------------------------------------------------------
1 | name: build-N1
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | luci_version:
6 | description: "选择luci版本"
7 | required: false
8 | default: "24.10.4"
9 | type: choice
10 | options:
11 | - 24.10.0
12 | - 24.10.1
13 | - 24.10.2
14 | - 24.10.3
15 | - 24.10.4
16 | openwrt_kernel:
17 | description: "选择构建的内核(斐讯N1)"
18 | required: false
19 | default: "6.6.93"
20 | type: choice
21 | options:
22 | - 5.4.291
23 | - 5.10.235
24 | - 5.15.189
25 | - 6.1.121
26 | - 6.1.122
27 | - 6.1.123
28 | - 6.1.124
29 | - 6.1.126
30 | - 6.1.127
31 | - 6.1.128
32 | - 6.1.129
33 | - 6.1.130
34 | - 6.1.131
35 | - 6.1.132
36 | - 6.1.133
37 | - 6.1.134
38 | - 6.1.135
39 | - 6.1.136
40 | - 6.1.138
41 | - 6.1.139
42 | - 6.1.140
43 | - 6.1.141
44 | - 6.1.142
45 | - 6.1.144
46 | - 6.1.146
47 | - 6.6.67
48 | - 6.6.68
49 | - 6.6.69
50 | - 6.6.70
51 | - 6.6.71
52 | - 6.6.72
53 | - 6.6.74
54 | - 6.6.76
55 | - 6.6.79
56 | - 6.6.80
57 | - 6.6.81
58 | - 6.6.83
59 | - 6.6.84
60 | - 6.6.85
61 | - 6.6.86
62 | - 6.6.87
63 | - 6.6.88
64 | - 6.6.89
65 | - 6.6.90
66 | - 6.6.91
67 | - 6.6.92
68 | - 6.6.93
69 | - 6.6.94
70 | - 6.6.95
71 | - 6.6.97
72 | - 6.6.99
73 | - 6.6.100
74 | - 6.6.101
75 | - 6.6.102
76 | - 6.6.103
77 | - 6.6.104
78 | - 6.6.105
79 | - 6.6.107
80 | - 6.6.108
81 | - 6.6.109
82 | - 6.6.110
83 | - 6.6.111
84 | - 6.6.112
85 | - 6.6.113
86 | - 6.6.114
87 | - 6.6.115
88 | - 6.6.116
89 | - 6.12.16
90 | - 6.12.17
91 | - 6.12.18
92 | - 6.12.19
93 | - 6.12.20
94 | - 6.12.21
95 | - 6.12.22
96 | - 6.12.23
97 | - 6.12.24
98 | - 6.12.25
99 | - 6.12.26
100 | - 6.12.28
101 | - 6.12.29
102 | - 6.12.30
103 | - 6.12.31
104 | - 6.12.32
105 | - 6.12.33
106 | - 6.12.34
107 | - 6.12.35
108 | - 6.12.37
109 | - 6.12.39
110 | - 6.12.40
111 | - 6.12.41
112 | - 6.12.42
113 | - 6.12.43
114 | - 6.12.44
115 | - 6.12.45
116 | - 6.12.46
117 | - 6.12.48
118 | - 6.12.49
119 | - 6.12.50
120 | - 6.12.51
121 | - 6.12.52
122 | - 6.12.53
123 | - 6.12.54
124 | - 6.12.55
125 | - 6.12.56
126 | - 6.12.57
127 |
128 | include_docker:
129 | description: |
130 | 是否编译 Docker 插件
131 | required: true
132 | default: 'no'
133 | type: choice
134 | options:
135 | - 'yes'
136 | - 'no'
137 | enable_store:
138 | description: "集成 store 商店"
139 | required: false
140 | type: boolean
141 | default: true
142 | skip_imagebuilder:
143 | description: "直接使用底包快速构建固件, 忽略自定义插件 ----(跳过 ImageBuilder)"
144 | required: false
145 | default: false
146 | type: boolean
147 | replace_banner:
148 | description: '替换为ImmortalWrt的banner信息'
149 | required: false
150 | default: false
151 | type: boolean
152 | rootfs_partsize:
153 | description: '软件包大小1G固定'
154 | required: true
155 | default: "1024"
156 | type: choice
157 | options:
158 | - '1024'
159 | builder_name:
160 | description: "设置打包作者的名称"
161 | required: true
162 | default: 'wukongdaily'
163 |
164 | jobs:
165 | build:
166 | runs-on: ubuntu-22.04
167 | steps:
168 | - name: Checkout code
169 | uses: actions/checkout@v3
170 |
171 | - name: Set executable permissions
172 | run: chmod +x ${{ github.workspace }}/n1/build.sh
173 |
174 | - name: Debug workspace contents
175 | run: ls -R
176 |
177 | - name: Enable Store integration
178 | run: |
179 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
180 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
181 | echo "✅ 已追加 luci-app-store"
182 | else
183 | echo "❎ 未启用 luci-app-store"
184 | fi
185 |
186 | - name: 处理是否替换 banner 信息
187 | if: ${{ github.event.inputs.skip_imagebuilder == 'false' && github.event.inputs.replace_banner == 'true' }}
188 | run: |
189 | # 使用ImageBuilder构建 且用户勾选了替换banner时
190 | cp n1/99-banner.sh files/etc/uci-defaults/
191 |
192 | - name: Building N1 ImmortalWrt rootfs
193 | if: ${{ github.event.inputs.skip_imagebuilder != 'true' }}
194 | run: |
195 | echo "✅ 使用 ImageBuilder 构建 rootfs"
196 | profiles="generic"
197 | include_docker="${{ github.event.inputs.include_docker }}"
198 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
199 | luci_version="${{ github.event.inputs.luci_version }}"
200 |
201 | IFS=',' read -r -a profile_array <<< "$profiles"
202 |
203 | for profile in "${profile_array[@]}"; do
204 | echo "Building for profile: $profile"
205 |
206 | docker run --rm -i \
207 | --user root \
208 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
209 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
210 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
211 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
212 | -v "${{ github.workspace }}/n1/banner:/home/build/immortalwrt/files/mnt/banner" \
213 | -v "${{ github.workspace }}/n1/imm.config:/home/build/immortalwrt/.config" \
214 | -v "${{ github.workspace }}/n1/build.sh:/home/build/immortalwrt/build.sh" \
215 | -e PROFILE=$profile \
216 | -e INCLUDE_DOCKER=$include_docker \
217 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
218 | immortalwrt/imagebuilder:armsr-armv8-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
219 | done
220 |
221 | - name: Download prebuilt rootfs.tar.gz
222 | if: ${{ github.event.inputs.skip_imagebuilder == 'true' }}
223 | run: |
224 | echo "📦 正在下载预构建 rootfs"
225 | echo "PREBUILT_LUCI_VERSION=24.10.2" >> $GITHUB_ENV
226 | mkdir -p bin/targets/armsr/armv8
227 | curl -L -o bin/targets/armsr/armv8/openwrt-armvirt-64-default-rootfs.tar.gz \
228 | https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/download/rootfs/immortalwrt-24.10.2-armsr-armv8-generic-rootfs.tar.gz
229 |
230 | - name: 查找rootfs.tar.gz所在路径
231 | id: find_rootfs
232 | run: |
233 | ROOTFS_FILE=$(find bin/targets/armsr/armv8/ -type f -name "*rootfs.tar.gz" | head -n1)
234 | echo "✅ Found: $ROOTFS_FILE"
235 | if [ ! -f "$ROOTFS_FILE" ]; then
236 | echo "❌ 找不到 rootfs.tar.gz 文件"
237 | exit 1
238 | fi
239 | echo "file=$ROOTFS_FILE" >> $GITHUB_OUTPUT
240 |
241 | - name: Package armsr-armv8 as ImmortalWrt for N1
242 | uses: wukongdaily/flippy-openwrt-actions@master
243 | if: ${{ steps.down.outputs.status }} == 'success' && !cancelled()
244 | env:
245 | OPENWRT_ARMVIRT: ${{ steps.find_rootfs.outputs.file }}
246 | PACKAGE_SOC: s905d
247 | KERNEL_VERSION_NAME: ${{ inputs.openwrt_kernel }}
248 | KERNEL_AUTO_LATEST: false
249 | WHOAMI: ${{ inputs.builder_name }}
250 |
251 | - name: Rename .img.gz file
252 | id: rename
253 | run: |
254 | FILE=$(ls ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz | head -n1)
255 | echo "Image file is: $FILE"
256 | FILENAME=$(basename "$FILE")
257 | echo "FILENAME=$FILENAME" >> $GITHUB_ENV
258 | KERNEL_VERSION=$(echo "$FILENAME" | grep -oP 'k\d+\.\d+\.\d+')
259 | LUCI_VERSION="${{ github.event.inputs.luci_version }}"
260 |
261 | if [ -n "$PREBUILT_LUCI_VERSION" ]; then
262 | echo "PREBUILT_LUCI_VERSION is not empty: $PREBUILT_LUCI_VERSION"
263 | mv "$FILE" "${{ env.PACKAGED_OUTPUTPATH }}/immortalwrt-$PREBUILT_LUCI_VERSION-phicomm-n1-btrfs-$KERNEL_VERSION.img.gz"
264 | else
265 | mv "$FILE" "${{ env.PACKAGED_OUTPUTPATH }}/immortalwrt-$LUCI_VERSION-phicomm-n1-btrfs-$KERNEL_VERSION.img.gz"
266 | fi
267 |
268 |
269 | - name: Upload firmware to GitHub Releases
270 | uses: softprops/action-gh-release@v2.2.1
271 | with:
272 | tag_name: phicomm-n1
273 | name: ImmortalWrt for Phicomm N1
274 | body_path: ${{ github.workspace }}/n1/info.md
275 | files: |
276 | ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz
277 | env:
278 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
279 |
--------------------------------------------------------------------------------
/.github/workflows/build-boxs-by-ophub.yml:
--------------------------------------------------------------------------------
1 | name: Build boxs by ophub
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | luci_version:
6 | description: "选择luci版本"
7 | required: false
8 | default: "24.10.4"
9 | type: choice
10 | options:
11 | - 24.10.0
12 | - 24.10.1
13 | - 24.10.2
14 | - 24.10.3
15 | - 24.10.4
16 | openwrt_kernel:
17 | description: "选择构建的内核 当高版本内核没有时 系统会自动挑选匹配的内核。比如radxa e52c 即便你选择了6.1.y 可能最终构建还是5.10.160"
18 | required: false
19 | default: "6.1.y"
20 | type: choice
21 | options:
22 | - 5.4.y
23 | - 5.10.y
24 | - 5.15.y
25 | - 6.1.y
26 | - 6.6.y
27 | - 6.12.y
28 | openwrt_board:
29 | description: "选择型号"
30 | required: false
31 | default: "a311d-oes"
32 | type: choice
33 | options:
34 | - a311d
35 | - a311d-oes
36 | - s922x-oes-plus
37 | - wxy-oect
38 | - wxy-oect-replaced
39 | - panther-x2
40 | - jp-tvbox
41 | - s905x3-hk1
42 | - tanix-tx6
43 | - s905l-b860av21u
44 | - s905l2-e900v21e
45 | - s905l
46 | - s905l-aurora-1s
47 | - s905l-mg101
48 | - s905l2
49 | - s905l2-wojia
50 | - s905l3
51 | - s905l3-cm211
52 | - s905l3-unt400g1
53 | - s905l3-unt402a
54 | - s905l3a
55 | - s905l3a-cm311
56 | - s905l3a-m401a
57 | - s905l3b
58 | - s905l3b-e900v21d
59 | - s905l3b-e900v22d
60 | - s905l3b-e900v22e
61 | - s905l3b-ip103h
62 | - s905l3b-rg020et-ca
63 | - s905l3b-unt403a
64 | - s905lb-ipbs9505
65 | - s905lb-q96-mini
66 | - s905lb-r3300l
67 | - r66s
68 | - r68s
69 | - nanopc-t6
70 | - nanopi-r5c
71 | - nanopi-r5s
72 | - orangepi-5-plus
73 | - orangepi-5b
74 | - alark35-3500
75 | - anas3035
76 | - beikeyun
77 | - chainedbox
78 | - crrc
79 | - dc-a588
80 | - dg3399
81 | - dg-tn3568
82 | - dlfr100
83 | - e20c
84 | - e25
85 | - eaidk-610
86 | - emb3531
87 | - fine3399
88 | - firefly-rk3399
89 | - fmx1-pro
90 | - h28k
91 | - h66k
92 | - h68k
93 | - h69k
94 | - h88k
95 | - h88k-v3
96 | - h96-max-m2
97 | - hs530r
98 | - hugsun-x99
99 | - ipc-r
100 | - king3399
101 | - kylin3399
102 | - lckfb-tspi
103 | - leez
104 | - lx-r3s
105 | - mrkaio-m68s
106 | - renegade-rk3328
107 | - rk3318-box
108 | - rock5b
109 | - rock5c
110 | - ruisen-box
111 | - s905
112 | - s905-beelink-mini
113 | - s905-mxqpro-plus
114 | - s905d-ki-pro
115 | - s905d-sml5442tw
116 | - s905mb
117 | - s905w
118 | - s905w-w95
119 | - s905w-x96-mini
120 | - s905w-x96w
121 | - s905x
122 | - s905x-b860h
123 | - s905x-nexbox-a95x
124 | - s905x-t95
125 | - s905x-tbee
126 | - s905x-tx9
127 | - s905x2
128 | - s905x2-km3
129 | - s905x2-x96max-2g
130 | - s905x3
131 | - s905x3-2101
132 | - s905x3-a100
133 | - s905x3-a95xf3
134 | - s905x3-a95xf3-gb
135 | - s905x3-b
136 | - s905x3-h96max
137 | - s905x3-ip1001m
138 | - s905x3-q1
139 | - s905x3-q2
140 | - s905x3-tx3
141 | - s905x3-tx3-bz
142 | - s905x3-ugoosx3
143 | - s905x3-whale
144 | - s905x3-x88-pro-x3
145 | - s905x3-x96air
146 | - s905x3-x96air-gb
147 | - s905x3-x96max
148 | - s905x2-hg680fj
149 | - s912
150 | - s912-h96pro-plus
151 | - s912-m8s-pro
152 | - s912-nexbox-a1
153 | - s912-nexbox-a2
154 | - s912-onecloudpro
155 | - s912-phicomm-t1
156 | - s912-t95z-plus
157 | - s912-tx8-max
158 | - s912-tx9-pro-2g
159 | - s912-tx9-pro-3g
160 | - s912-x92
161 | - s912-zyxq-fake
162 | - s922x
163 | - s922x-ct2000
164 | - s922x-gtking
165 | - s922x-gtkingpro-h
166 | - s922x-odroid-n2
167 | - s922x-reva
168 | - s922x-ugoos-am6
169 | - seewo-sv21
170 | - smart-am40
171 | - smart-am60
172 | - station-m1
173 | - station-m2
174 | - sv-33a6x
175 | - swan1-w28
176 | - sw799
177 | - tb-ls3399
178 | - tn3399
179 | - tpm312
180 | - tqc-a01
181 | - tvi3315a
182 | - vplus
183 | - xiaobao
184 | - yskj
185 | - zcube1-max
186 | - zk-r39a
187 | - zysj
188 | include_docker:
189 | description: |
190 | 是否编译 Docker 插件
191 | required: true
192 | default: 'no'
193 | type: choice
194 | options:
195 | - 'yes'
196 | - 'no'
197 | enable_store:
198 | description: "集成 store 商店"
199 | required: false
200 | type: boolean
201 | default: true
202 | skip_imagebuilder:
203 | description: "直接使用底包快速构建固件, 忽略自定义插件 ----(跳过 ImageBuilder)"
204 | required: false
205 | default: false
206 | type: boolean
207 | replace_banner:
208 | description: '替换为ImmortalWrt的banner信息'
209 | required: false
210 | default: false
211 | type: boolean
212 | rootfs_partsize:
213 | description: '软件包大小1G固定'
214 | required: true
215 | default: "1024"
216 | type: choice
217 | options:
218 | - '1024'
219 | builder_name:
220 | description: "设置打包作者的名称"
221 | required: true
222 | default: 'wukongdaily'
223 |
224 | jobs:
225 | build:
226 | runs-on: ubuntu-22.04
227 | steps:
228 | - name: Checkout code
229 | uses: actions/checkout@v3
230 |
231 | - name: Set executable permissions
232 | run: chmod +x ${{ github.workspace }}/n1/build.sh
233 |
234 | - name: Debug workspace contents
235 | run: ls -R
236 |
237 | - name: Enable Store integration
238 | run: |
239 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
240 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
241 | echo "✅ 已追加 luci-app-store"
242 | else
243 | echo "❎ 未启用 luci-app-store"
244 | fi
245 |
246 | - name: 处理是否替换 banner 信息
247 | if: ${{ github.event.inputs.skip_imagebuilder == 'false' && github.event.inputs.replace_banner == 'true' }}
248 | run: |
249 | # 使用ImageBuilder构建 且用户勾选了替换banner时
250 | cp n1/99-banner.sh files/etc/uci-defaults/
251 |
252 | - name: Build Rootfs for Radxa and Other Boards (ImmortalWrt)
253 | if: ${{ github.event.inputs.skip_imagebuilder != 'true' }}
254 | run: |
255 | echo "✅ 使用 ImageBuilder 构建 rootfs"
256 | profiles="generic"
257 | include_docker="${{ github.event.inputs.include_docker }}"
258 | rootfs_partsize="${{ github.event.inputs.rootfs_partsize }}"
259 | luci_version="${{ github.event.inputs.luci_version }}"
260 |
261 | IFS=',' read -r -a profile_array <<< "$profiles"
262 |
263 | for profile in "${profile_array[@]}"; do
264 | echo "Building for profile: $profile"
265 |
266 | docker run --rm -i \
267 | --user root \
268 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
269 | -v "${{ github.workspace }}/files/etc/uci-defaults:/home/build/immortalwrt/files/etc/uci-defaults" \
270 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
271 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
272 | -v "${{ github.workspace }}/n1/banner:/home/build/immortalwrt/files/mnt/banner" \
273 | -v "${{ github.workspace }}/n1/imm.config:/home/build/immortalwrt/.config" \
274 | -v "${{ github.workspace }}/n1/build.sh:/home/build/immortalwrt/build.sh" \
275 | -e PROFILE=$profile \
276 | -e INCLUDE_DOCKER=$include_docker \
277 | -e ROOTFS_PARTSIZE=$rootfs_partsize \
278 | immortalwrt/imagebuilder:armsr-armv8-openwrt-${luci_version} /bin/bash /home/build/immortalwrt/build.sh
279 | done
280 |
281 | - name: Download prebuilt rootfs.tar.gz
282 | if: ${{ github.event.inputs.skip_imagebuilder == 'true' }}
283 | run: |
284 | echo "📦 正在下载预构建 rootfs"
285 | echo "PREBUILT_LUCI_VERSION=24.10.2" >> $GITHUB_ENV
286 | mkdir -p bin/targets/armsr/armv8
287 | curl -L -o bin/targets/armsr/armv8/openwrt-armvirt-64-default-rootfs.tar.gz \
288 | https://github.com/wukongdaily/AutoBuildImmortalWrt/releases/download/rootfs/immortalwrt-24.10.2-armsr-armv8-generic-rootfs.tar.gz
289 |
290 | - name: 查找rootfs.tar.gz所在路径
291 | id: find_rootfs
292 | run: |
293 | ROOTFS_FILE=$(find bin/targets/armsr/armv8/ -type f -name "*rootfs.tar.gz" | head -n1)
294 | echo "✅ Found: $ROOTFS_FILE"
295 | if [ ! -f "$ROOTFS_FILE" ]; then
296 | echo "❌ 找不到 rootfs.tar.gz 文件"
297 | exit 1
298 | fi
299 | echo "file=$ROOTFS_FILE" >> $GITHUB_OUTPUT
300 |
301 | - name: Package armsr-armv8 as ImmortalWrt by ophub
302 | uses: ophub/amlogic-s9xxx-openwrt@main
303 | with:
304 | openwrt_path: ${{ steps.find_rootfs.outputs.file }}
305 | openwrt_board: ${{ inputs.openwrt_board }}
306 | openwrt_kernel: ${{ inputs.openwrt_kernel }}
307 | auto_kernel: true
308 | kernel_repo: "ophub/kernel"
309 | kernel_usage: flippy
310 | builder_name: ${{ inputs.builder_name }}
311 |
312 | - name: Rename .img.gz files
313 | id: rename
314 | run: |
315 | MODEL=${{ inputs.openwrt_board }}
316 | LUCI_VERSION="${{ github.event.inputs.luci_version }}"
317 |
318 | for FILE in ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz; do
319 | echo "Processing file: $FILE"
320 | FILENAME=$(basename "$FILE")
321 | KERNEL_VERSION=$(echo "$FILENAME" | grep -oP 'k\d+\.\d+\.\d+')
322 | if [[ -z "$KERNEL_VERSION" ]]; then
323 | echo "Skipped: Could not extract kernel version from $FILENAME"
324 | continue
325 | fi
326 |
327 | if [ -n "$PREBUILT_LUCI_VERSION" ]; then
328 | echo "PREBUILT_LUCI_VERSION is not empty: $PREBUILT_LUCI_VERSION"
329 | NEW_NAME="immortalwrt-${PREBUILT_LUCI_VERSION}-${MODEL}-btrfs-${KERNEL_VERSION}.img.gz"
330 | else
331 | NEW_NAME="immortalwrt-${LUCI_VERSION}-${MODEL}-btrfs-${KERNEL_VERSION}.img.gz"
332 | fi
333 |
334 | mv "$FILE" "${{ env.PACKAGED_OUTPUTPATH }}/$NEW_NAME"
335 | echo "Renamed to: $NEW_NAME"
336 | done
337 |
338 | - name: Upload firmware to GitHub Releases
339 | uses: softprops/action-gh-release@v2.2.1
340 | with:
341 | tag_name: ophub
342 | name: ImmortalWrt for boxs
343 | body_path: ${{ github.workspace }}/n1/box.md
344 | files: |
345 | ${{ env.PACKAGED_OUTPUTPATH }}/*.img.gz
346 | env:
347 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
348 |
--------------------------------------------------------------------------------
/.github/workflows/build-wireless-router.yml:
--------------------------------------------------------------------------------
1 | # 此工作流99% 使用luci 24.10.x 来构建 极个别机型使用快照版和23.05.4版本来构建
2 | # 23.05.4 特有机型列表
3 | # abt_asr3000-ubootmod
4 | # cetron_ct3003-stock
5 | # cmcc_a10
6 | # cmcc_rax3000m-emmc-ubootmod
7 | # cmcc_rax3000m-nand-ubootmod
8 | # imou_lc-hx3001-ubootmod
9 | # jcg_q30 捷成
10 | # jcg_q30-ubootmod
11 | # qihoo_360t7-ubootmod
12 | # xiaomi_mi-router-wr30u-112m-nmbm
13 | # xiaomi_redmi-router-ax6000 该机型在24.10.4 分化为2个机型
14 | # —————————————————————————————24.10.4—————————————————————————————————
15 | # xiaomi_redmi-router-ax6000-stock ————原厂默认 bootloader(stock)版本
16 | # xiaomi_redmi-router-ax6000-ubootmod—————改装过 bootloader 的版本(ubootmod)
17 |
18 | name: Build Wireless Router ImmortalWrt 24.10.x
19 |
20 | on:
21 | workflow_dispatch:
22 | inputs:
23 | profile:
24 | type: choice
25 | description: "请选择mtk路由器型号"
26 | required: true
27 | options:
28 | - glinet_gl-mt2500
29 | - glinet_gl-mt3000
30 | - glinet_gl-mt6000
31 | - glinet_gl-axt1800
32 | - glinet_gl-ax1800
33 | - glinet_gl-b2200
34 | - glinet_gl-x3000
35 | - glinet_gl-xe3000
36 | # 就是Fudy MT3000
37 | - huasifei_wh3000-emmc
38 | - cudy_tr3000-v1
39 | - cudy_tr3000-v1-ubootmod
40 | - cudy_tr3000-256mb-v1
41 | - jcg_q30-pro
42 | - jcg_q30
43 | - jcg_q30-ubootmod
44 | # 京东云AX6000百里
45 | - jdcloud_re-cp-03
46 | - xiaomi_mi-router-ax3000t
47 | - xiaomi_mi-router-ax3000t-ubootmod
48 | - xiaomi_mi-router-wr30u-stock
49 | - xiaomi_mi-router-wr30u-ubootmod
50 | - xiaomi_mi-router-wr30u-112m-nmbm
51 | - xiaomi_redmi-router-ax6000
52 | - xiaomi_redmi-router-ax6000-stock
53 | - xiaomi_redmi-router-ax6000-ubootmod
54 | - qnap_301w
55 | - redmi_ax6
56 | - redmi_ax6-stock
57 | - xiaomi_redmi-router-ax6s
58 | - spectrum_sax1v1k
59 | - tplink_eap660hd-v1
60 | - xiaomi_ax3600
61 | - xiaomi_ax3600-stock
62 | - xiaomi_ax9000
63 | - xiaomi_ax9000-stock
64 | - cmcc_a10-stock
65 | - cmcc_a10-ubootmod
66 | - cmcc_rax3000m
67 | - cmcc_rax3000me
68 | - cmcc_rax3000m-emmc-ubootmod
69 | - cmcc_rax3000m-nand-ubootmod
70 | - imou_lc-hx3001-ubootmod
71 | - qihoo_360t7-ubootmod
72 | - xiaomi_mi-router-wr30u-112m-nmbm
73 | - xiaomi_redmi-router-ax6000
74 | - abt_asr3000
75 | - abt_asr3000-ubootmod
76 | - cetron_ct3003-stock
77 | - cmcc_a10
78 | - acelink_ew-7886cax
79 | - acer_predator-w6
80 | - acer_predator-w6d
81 | - acer_vero-w6m
82 | - arcadyan_mozart
83 | - asus_rt-ax52
84 | - asus_rt-ax59u
85 | - asus_tuf-ax4200
86 | - asus_tuf-ax6000
87 | - bananapi_bpi-r3
88 | - bananapi_bpi-r3-mini
89 | - bananapi_bpi-r4
90 | - bananapi_bpi-r4-poe
91 | - cetron_ct3003
92 | - cetron_ct3003-ubootmod
93 | - comfast_cf-e393ax
94 | - confiabits_mt7981
95 | - cudy_ap3000-v1
96 | - cudy_ap3000outdoor-v1
97 | - cudy_m3000-v1
98 | - cudy_re3000-v1
99 | - cudy_wr3000-v1
100 | - cudy_wr3000e-v1
101 | - cudy_wr3000h-v1
102 | - cudy_wr3000s-v1
103 | - dlink_aquila-pro-ai-m30-a1
104 | - dlink_aquila-pro-ai-m60-a1
105 | - edgecore_eap111
106 | - gatonetworks_gdsp
107 | - h3c_magic-nx30-pro
108 | - h3c_magic-nx30-pro-nmbm
109 | - imou_lc-hx3001
110 | - keenetic_kn-3811
111 | - keenetic_kn-3911
112 | - konka_komi-a31
113 | - livinet_zr-3020
114 | - livinet_zr-3020-ubootmod
115 | - mediatek_mt7981-rfb
116 | - mediatek_mt7986a-rfb-nand
117 | - mediatek_mt7986b-rfb
118 | - mediatek_mt7988a-rfb
119 | - mercusys_mr80x-v3
120 | - mercusys_mr90x-v1
121 | - mercusys_mr90x-v1-ubi
122 | - netcore_n60
123 | - netcore_n60-pro
124 | - netgear_wax220
125 | - netis_nx31
126 | - nokia_ea0326gmp
127 | - openembed_som7981
128 | - openwrt_one
129 | - qihoo_360t7
130 | - routerich_ax3000
131 | - routerich_ax3000-ubootmod
132 | - routerich_ax3000-v1
133 | - ruijie_rg-x60-pro
134 | - smartrg_sdg-8612
135 | - smartrg_sdg-8614
136 | - smartrg_sdg-8622
137 | - smartrg_sdg-8632
138 | - smartrg_sdg-8733
139 | - smartrg_sdg-8733a
140 | - smartrg_sdg-8734
141 | - tplink_archer-ax80-v1
142 | - tplink_re6000xd
143 | - tplink_tl-xdr4288
144 | - tplink_tl-xdr6086
145 | - tplink_tl-xdr6088
146 | - tplink_tl-xtr8488
147 | - ubnt_unifi-6-plus
148 | - unielec_u7981-01-emmc
149 | - unielec_u7981-01-nand
150 | - wavlink_wl-wn573hx3
151 | - wavlink_wl-wn586x3
152 | - yuncore_ax835
153 | - zbtlink_zbt-z8102ax
154 | - zbtlink_zbt-z8103ax
155 | - zyxel_ex5601-t0-stock
156 | - zyxel_ex5601-t0-ubootmod
157 | - zyxel_ex5700-telenor
158 | - zyxel_nwa50ax-pro
159 | - arcadyan_aw1000
160 | - asus_rt-ax89x
161 | - buffalo_wxr-5950ax12
162 | - cmcc_rm2-6
163 | - compex_wpq873
164 | - dynalink_dl-wrx36
165 | - edgecore_eap102
166 | - edimax_cax1800
167 | - linksys_mx4200v1
168 | - linksys_mx4200v2
169 | - linksys_mx4300
170 | - linksys_mx5300
171 | - linksys_mx8500
172 | - netgear_rax120v2
173 | - netgear_sxr80
174 | - netgear_sxs80
175 | - netgear_wax218
176 | - netgear_wax620
177 | - netgear_wax630
178 | - prpl_haze
179 | - yuncore_ax880
180 | - zbtlink_zbt-z800ax
181 | - zte_mf269
182 | - zte_mf269-stock
183 | - zyxel_nbg7815
184 | #324 新增mt7621平台的路由器
185 | - adslr_g7
186 | - afoundry_ew1200
187 | - alfa-network_ax1800rm
188 | - alfa-network_quad-e4g
189 | - ampedwireless_ally-00x19k
190 | - ampedwireless_ally-r1900k
191 | - arcadyan_we410443
192 | - arcadyan_we420223-99
193 | - asiarf_ap7621-001
194 | - asiarf_ap7621-nv1
195 | - asus_rp-ac56
196 | - asus_rp-ac87
197 | - asus_rt-ac57u-v1
198 | - asus_rt-ac65p
199 | - asus_rt-ac85p
200 | - asus_rt-ax53u
201 | - asus_rt-ax54
202 | - asus_rt-n56u-b1
203 | - beeline_smartbox-flash
204 | - beeline_smartbox-giga
205 | - beeline_smartbox-pro
206 | - beeline_smartbox-turbo
207 | - beeline_smartbox-turbo-plus
208 | - belkin_rt1800
209 | - bolt_arion
210 | - buffalo_wsr-1166dhp
211 | - buffalo_wsr-2533dhpl2
212 | - buffalo_wsr-2533dhpls
213 | - buffalo_wsr-600dhp
214 | - comfast_cf-e390ax
215 | - comfast_cf-ew72-v2
216 | - confiabits_mt7621-v1
217 | - cudy_m1300-v2
218 | - cudy_m1800
219 | - cudy_wr1300-v1
220 | - cudy_wr1300-v2
221 | - cudy_wr1300-v3
222 | - cudy_wr2100
223 | - cudy_x6-v1
224 | - cudy_x6-v2
225 | - d-team_newifi-d2
226 | - d-team_pbr-m1
227 | - dlink_covr-x1860-a1
228 | - dlink_dap-1620-b1
229 | - dlink_dap-x1860-a1
230 | - dlink_dir-1935-a1
231 | - dlink_dir-1960-a1
232 | - dlink_dir-2055-a1
233 | - dlink_dir-2150-a1
234 | - dlink_dir-2150-r1
235 | - dlink_dir-2640-a1
236 | - dlink_dir-2660-a1
237 | - dlink_dir-3040-a1
238 | - dlink_dir-3060-a1
239 | - dlink_dir-853-a1
240 | - dlink_dir-853-a3
241 | - dlink_dir-853-r1
242 | - dlink_dir-860l-b1
243 | - dlink_dir-867-a1
244 | - dlink_dir-878-a1
245 | - dlink_dir-878-r1
246 | - dlink_dir-882-a1
247 | - dlink_dir-882-r1
248 | - dlink_dra-1360-a1
249 | - dna_valokuitu-plus-ex400
250 | - dual-q_h721
251 | - edimax_ra21s
252 | - edimax_re23s
253 | - edimax_rg21s
254 | - elecom_wmc-m1267gst2
255 | - elecom_wmc-s1267gs2
256 | - elecom_wmc-x1800gst
257 | - elecom_wrc-1167ghbk2-s
258 | - elecom_wrc-1167gs2-b
259 | - elecom_wrc-1167gst2
260 | - elecom_wrc-1750gs
261 | - elecom_wrc-1750gst2
262 | - elecom_wrc-1750gsv
263 | - elecom_wrc-1900gst
264 | - elecom_wrc-2533ghbk-i
265 | - elecom_wrc-2533gs2
266 | - elecom_wrc-2533gst
267 | - elecom_wrc-2533gst2
268 | - elecom_wrc-x1800gs
269 | - elecom_wsc-x1800gs
270 | - etisalat_s3
271 | - firefly_firewrt
272 | - gehua_ghl-r-001
273 | - gemtek_wvrtm-127acn
274 | - gemtek_wvrtm-130acn
275 | - genexis_pulse-ex400
276 | - glinet_gl-mt1300
277 | - gnubee_gb-pc1
278 | - gnubee_gb-pc2
279 | - h3c_tx1800-plus
280 | - h3c_tx1801-plus
281 | - h3c_tx1806
282 | - haier_har-20s2u1
283 | - hanyang_hyc-g920
284 | - hilink_hlk-7621a-evb
285 | - hiwifi_hc5962
286 | - huasifei_ws1208v2
287 | - humax_e10
288 | - iodata_wn-ax1167gr
289 | - iodata_wn-ax1167gr2
290 | - iodata_wn-ax2033gr
291 | - iodata_wn-deax1800gr
292 | - iodata_wn-dx1167r
293 | - iodata_wn-dx1200gr
294 | - iodata_wn-dx2033gr
295 | - iodata_wn-gx300gr
296 | - iodata_wnpr2600g
297 | - iptime_a3002mesh
298 | - iptime_a3004ns-dual
299 | - iptime_a3004t
300 | - iptime_a6004ns-m
301 | - iptime_a6ns-m
302 | - iptime_a8004t
303 | - iptime_ax2004m
304 | - iptime_t5004
305 | - jcg_jhr-ac876m
306 | - jcg_q20
307 | - jcg_y2
308 | - jdcloud_re-cp-02
309 | - jdcloud_re-sp-01b
310 | - keenetic_kn-3010
311 | - keenetic_kn-3510
312 | - lenovo_newifi-d1
313 | - linksys_e5600
314 | - linksys_e7350
315 | - linksys_ea6350-v4
316 | - linksys_ea7300-v1
317 | - linksys_ea7300-v2
318 | - linksys_ea7500-v2
319 | - linksys_ea8100-v1
320 | - linksys_ea8100-v2
321 | - linksys_re6500
322 | - linksys_re7000
323 | - mediatek_ap-mt7621a-v60
324 | - mediatek_mt7621-eval-board
325 | - meig_slt866
326 | - mercusys_mr70x-v1
327 | - mikrotik_ltap-2hnd
328 | - mikrotik_routerboard-750gr3
329 | - mikrotik_routerboard-760igs
330 | - mikrotik_routerboard-m11g
331 | - mikrotik_routerboard-m33g
332 | - mqmaker_witi
333 | - mtc_wr1201
334 | - mts_wg430223
335 | - netgear_eax12
336 | - netgear_ex6150
337 | - netgear_r6220
338 | - netgear_r6260
339 | - netgear_r6350
340 | - netgear_r6700-v2
341 | - netgear_r6800
342 | - netgear_r6850
343 | - netgear_r6900-v2
344 | - netgear_r7200
345 | - netgear_r7450
346 | - netgear_wac104
347 | - netgear_wac124
348 | - netgear_wax202
349 | - netgear_wax214v2
350 | - netgear_wndr3700-v5
351 | - netis_n6
352 | - netis_wf2881
353 | - openfi_5pro
354 | - oraybox_x3a
355 | - phicomm_k2p
356 | - planex_vr500
357 | - raisecom_msg1500-x-00
358 | - renkforce_ws-wn530hp3-a
359 | - rostelecom_rt-fe-1a
360 | - rostelecom_rt-sf-1
361 | - ruijie_rg-ew1200g-pro-v1.1
362 | - samknows_whitebox-v8
363 | - sercomm_na502
364 | - sercomm_na502s
365 | - sim_simax1800t
366 | - snr_snr-cpe-me1
367 | - snr_snr-cpe-me2-lite
368 | - snr_snr-cpe-me2-sfp
369 | - storylink_sap-g3200u3
370 | - telco-electronics_x1
371 | - tenbay_t-mb5eu-v01
372 | - thunder_timecloud
373 | - totolink_a7000r
374 | - totolink_x5000r
375 | - tozed_zlt-s12-pro
376 | - tplink_archer-a6-v3
377 | - tplink_archer-ax23-v1
378 | - tplink_archer-c6-v3
379 | - tplink_archer-c6u-v1
380 | - tplink_deco-m4r-v4
381 | - tplink_eap235-wall-v1
382 | - tplink_eap613-v1
383 | - tplink_eap615-wall-v1
384 | - tplink_ec330-g5u-v1
385 | - tplink_er605-v2
386 | - tplink_ex220-v1
387 | - tplink_mr600-v2-eu
388 | - tplink_re350-v1
389 | - tplink_re500-v1
390 | - tplink_re650-v1
391 | - tplink_re650-v2
392 | - tplink_tl-wpa8631p-v3
393 | - ubnt_edgerouter-x
394 | - ubnt_edgerouter-x-sfp
395 | - ubnt_unifi-6-lite
396 | - ubnt_unifi-flexhd
397 | - ubnt_unifi-nanohd
398 | - ubnt_usw-flex
399 | - unielec_u7621-01-16m
400 | - unielec_u7621-06-16m
401 | - unielec_u7621-06-32m
402 | - unielec_u7621-06-64m
403 | - wavlink_wl-wn531a6
404 | - wavlink_wl-wn533a8
405 | - wavlink_wl-wn573hx1
406 | - wavlink_ws-wn572hp3-4g
407 | - wevo_11acnas
408 | - wevo_w2914ns-v2
409 | - wifire_s1500-nbn
410 | - winstars_ws-wn536p3
411 | - winstars_ws-wn583a6
412 | - wodesys_wd-r1802u
413 | - xiaomi_mi-router-3-pro
414 | - xiaomi_mi-router-3g
415 | - xiaomi_mi-router-3g-v2
416 | - xiaomi_mi-router-4
417 | - xiaomi_mi-router-4a-gigabit
418 | - xiaomi_mi-router-4a-gigabit-v2
419 | - xiaomi_mi-router-ac2100
420 | - xiaomi_mi-router-cr6606
421 | - xiaomi_mi-router-cr6608
422 | - xiaomi_mi-router-cr6609
423 | - xiaomi_redmi-router-ac2100
424 | - xiaoyu_xy-c5
425 | - xzwifi_creativebox-v1
426 | - youhua_wr1200js
427 | - youku_yk-l2
428 | - yuncore_ax820
429 | - yuncore_fap640
430 | - yuncore_fap690
431 | - yuncore_g720
432 | - z-router_zr-2660
433 | - zbtlink_zbt-we1326
434 | - zbtlink_zbt-we3526
435 | - zbtlink_zbt-wg1602-16m
436 | - zbtlink_zbt-wg1602-v04-16m
437 | - zbtlink_zbt-wg1602-v04-32m
438 | - zbtlink_zbt-wg1608-16m
439 | - zbtlink_zbt-wg1608-32m
440 | - zbtlink_zbt-wg2626
441 | - zbtlink_zbt-wg3526-16m
442 | - zbtlink_zbt-wg3526-32m
443 | - zio_freezio
444 | - zte_e8820s
445 | - zyxel_lte3301-plus
446 | - zyxel_lte5398-m904
447 | - zyxel_nr7101
448 | - zyxel_nwa50ax
449 | - zyxel_nwa55axe
450 | - zyxel_wap6805
451 | - zyxel_wsm20
452 | # 新增斐讯K3 AC88U等 bcm53xx/generic 平台
453 | - phicomm_k3
454 | - asus_rt-ac3100
455 | - asus_rt-ac56u
456 | - asus_rt-ac68u
457 | - asus_rt-ac87u
458 | - asus_rt-ac88u
459 | - asus_rt-n18u
460 | - buffalo_wxr-1900dhp
461 | - buffalo_wzr-1750dhp
462 | - buffalo_wzr-600dhp2
463 | - buffalo_wzr-900dhp
464 | - dlink_dir-885l
465 | - dlink_dir-890l
466 | - dlink_dwl-8610ap
467 | - linksys_ea6300-v1
468 | - linksys_ea6500-v2
469 | - linksys_ea9200
470 | - linksys_ea9500
471 | - luxul_abr-4500
472 | - luxul_xap-1610
473 | - luxul_xbr-4500
474 | - luxul_xwr-3150
475 | - meraki_mr26
476 | - meraki_mr32
477 | - meraki_mx64
478 | - meraki_mx64_a0
479 | - meraki_mx65
480 | - netgear_r6250
481 | - netgear_r6300-v2
482 | - netgear_r7000
483 | - netgear_r7900
484 | - netgear_r8000
485 | - smartrg_sr400ac
486 | - tenda_ac9
487 | default: glinet_gl-mt6000
488 | custom_router_ip:
489 | description: "请设置路由器的管理地址 格式:192.168.x.1 或 10.x.x.1"
490 | required: true
491 | default: "192.168.100.1"
492 | enable_store:
493 | description: "集成 store 商店"
494 | required: false
495 | type: boolean
496 | default: false
497 | include_docker:
498 | description: |
499 | 是否编译 Docker 插件
500 | required: true
501 | default: 'no'
502 | type: choice
503 | options:
504 | - 'yes'
505 | - 'no'
506 | enable_pppoe:
507 | description: "是否配置PPPoE拨号信息?"
508 | required: true
509 | default: 'no'
510 | type: choice
511 | options:
512 | - 'yes'
513 | - 'no'
514 | pppoe_account:
515 | description: "宽带账号 (若启用PPPoE)"
516 | required: false
517 | pppoe_password:
518 | description: "宽带密码 (若启用PPPoE)"
519 | required: false
520 |
521 |
522 | jobs:
523 | build:
524 | runs-on: ubuntu-22.04
525 |
526 | steps:
527 | - name: Checkout code
528 | uses: actions/checkout@v3
529 |
530 | - name: Set executable permissions
531 | run: |
532 | chmod +x ${{ github.workspace }}/mediatek-filogic/build24.sh
533 |
534 | - name: Save Custom Router IP into OpenWrt files
535 | run: |
536 | mkdir -p "${{ github.workspace }}/custom"
537 | echo "${{ github.event.inputs.custom_router_ip }}" > "${{ github.workspace }}/custom/custom_router_ip.txt"
538 | echo "您设置的路由器管理地址是:${{ github.event.inputs.custom_router_ip }}"
539 | # 后续步骤会将该文件映射到路由器/etc/config/custom_router_ip.txt 以便用于开机脚本99-custom.sh读取用户设置的ip
540 |
541 |
542 | - name: Validate PPPoE Inputs
543 | run: |
544 | if [[ "${{ inputs.enable_pppoe }}" == "yes" ]]; then
545 | if [[ -z "${{ inputs.pppoe_account }}" || -z "${{ inputs.pppoe_password }}" ]]; then
546 | echo "Error: PPPoE account and password must be provided when PPPoE is enabled!"
547 | exit 1
548 | fi
549 | fi
550 |
551 | - name: Enable Store integration
552 | run: |
553 | if [ "${{ github.event.inputs.enable_store }}" == "true" ]; then
554 | echo 'CUSTOM_PACKAGES="$CUSTOM_PACKAGES luci-app-store"' >> shell/custom-packages.sh
555 | echo "✅ 已追加 luci-app-store"
556 | else
557 | echo "❎ 未启用 luci-app-store"
558 | fi
559 |
560 |
561 | - name: Build Wireless ImmortalWrt
562 | run: |
563 | profile="${{ github.event.inputs.profile }}"
564 | echo "Building for profile: $profile"
565 | include_docker="${{ github.event.inputs.include_docker }}"
566 | # 默认平台
567 | echo "platform=mediatek/filogic" >> $GITHUB_ENV
568 |
569 | # 读取 ipq807x 机型文件
570 | ipq807x_models=$(cat model/ipq807x.txt | tr '\n' '|')
571 | ipq807x_models=${ipq807x_models%|}
572 | if [[ "$profile" =~ ^($ipq807x_models)$ ]]; then
573 | case_tag="qualcommax-ipq807x-openwrt-24.10.4"
574 | case_platform="qualcommax/ipq807x"
575 | fi
576 |
577 | # 读取 mt7621 机型文件
578 | mt7621_models=$(cat model/mt7621.txt | tr '\n' '|')
579 | mt7621_models=${mt7621_models%|}
580 | if [[ "$profile" =~ ^($mt7621_models)$ ]]; then
581 | case_tag="ramips-mt7621-openwrt-24.10.4"
582 | case_platform="ramips/mt7621"
583 | fi
584 |
585 | # 读取 bcm53xx/generic 机型文件
586 | bcm53xx_models=$(cat model/bcm53xx.txt | tr '\n' '|')
587 | bcm53xx_models=${bcm53xx_models%|}
588 | if [[ "$profile" =~ ^($bcm53xx_models)$ ]]; then
589 | case_tag="bcm53xx-generic-openwrt-24.10.4"
590 | case_platform="bcm53xx/generic"
591 | fi
592 |
593 | # 判断机型
594 | case "$profile" in
595 | glinet_gl-b2200)
596 | # 虽然它是高通ipq40xx平台 但由于都是gl机型 故放在一起 找起来方便
597 | tag=ipq40xx-generic-openwrt-24.10.4
598 | echo "platform=ipq40xx/generic" >> $GITHUB_ENV
599 | ;;
600 | glinet_gl-axt1800|glinet_gl-ax1800)
601 | # 虽然它是高通ipq60xx平台 但由于都是gl机型 故放在一起 找起来方便
602 | tag=qualcommax-ipq60xx-snapshot
603 | echo "platform=qualcommax/ipq60xx" >> $GITHUB_ENV
604 | ;;
605 | xiaomi_redmi-router-ax6s)
606 | tag=mediatek-mt7622-openwrt-24.10.4
607 | echo "platform=mediatek/mt7622" >> $GITHUB_ENV
608 | ;;
609 | # 下列机型目前没有24.10 因此采用23.05.4分支来构建
610 | cmcc_rax3000m-emmc-ubootmod | \
611 | cmcc_rax3000m-nand-ubootmod | \
612 | cmcc_a10 | \
613 | abt_asr3000-ubootmod | \
614 | imou_lc-hx3001-ubootmod | \
615 | jcg_q30 | \
616 | jcg_q30-ubootmod | \
617 | xiaomi_mi-router-wr30u-112m-nmbm | \
618 | cetron_ct3003-stock | \
619 | xiaomi_redmi-router-ax6000 | \
620 | qihoo_360t7-ubootmod)
621 | tag=mediatek-filogic-openwrt-23.05.4
622 | ls ${{ github.workspace }}/mediatek-filogic/
623 | cp ${{ github.workspace }}/mediatek-filogic/build23.sh ${{ github.workspace }}/mediatek-filogic/build24.sh
624 | ;;
625 | *)
626 | # 如果前面匹配了 ipq807x、mt7621、bcm53xx 机型文件,则使用对应 tag
627 | if [[ -n "$case_tag" ]]; then
628 | tag=$case_tag
629 | echo "platform=$case_platform" >> $GITHUB_ENV
630 | else
631 | # 默认分支
632 | tag=mediatek-filogic-openwrt-24.10.4
633 | fi
634 | ;;
635 | esac
636 |
637 | docker run --rm -i \
638 | --user root \
639 | -v "${{ github.workspace }}/bin:/home/build/immortalwrt/bin" \
640 | -v "${{ github.workspace }}/glinet:/home/build/immortalwrt/files/etc/uci-defaults" \
641 | -v "${{ github.workspace }}/custom:/home/build/immortalwrt/files/etc/config" \
642 | -v "${{ github.workspace }}/arch/arch.conf:/home/build/immortalwrt/files/etc/opkg/arch.conf" \
643 | -v "${{ github.workspace }}/shell:/home/build/immortalwrt/shell" \
644 | -v "${{ github.workspace }}/mediatek-filogic/build24.sh:/home/build/immortalwrt/build.sh" \
645 | -e PROFILE=$profile \
646 | -e INCLUDE_DOCKER=$include_docker \
647 | -e ENABLE_PPPOE=${{ inputs.enable_pppoe }} \
648 | -e PPPOE_ACCOUNT=${{ inputs.pppoe_account }} \
649 | -e PPPOE_PASSWORD=${{ inputs.pppoe_password }} \
650 | immortalwrt/imagebuilder:$tag /bin/bash /home/build/immortalwrt/build.sh
651 |
652 |
653 | - name: Create info
654 | run: |
655 | if [ "${{ github.event.inputs.include_docker }}" == "yes" ]; then
656 | extra_content="### 默认带docker"
657 | echo -e "\n $extra_content" >> ${{ github.workspace }}/mediatek-filogic/info.md
658 | else
659 | echo -e "NO docker"
660 | fi
661 | custom_router_ip="${{ github.event.inputs.custom_router_ip }}"
662 | extra_content_ip="#### 管理地址 $custom_router_ip"
663 | echo -e "\n $extra_content_ip" >> ${{ github.workspace }}/mediatek-filogic/info.md
664 |
665 |
666 | - name: Upload ImmortalWrt as release assets
667 | uses: softprops/action-gh-release@v2.2.1
668 | with:
669 | tag_name: ${{ github.event.inputs.profile }}
670 | name: ImmortalWrt-Wireless
671 | body_path: ${{ github.workspace }}/mediatek-filogic/info.md
672 | files: |
673 | ${{ github.workspace }}/bin/targets/${{ env.platform }}/*
674 | token: ${{ secrets.GITHUB_TOKEN }}
675 | env:
676 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
677 |
--------------------------------------------------------------------------------
/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # 本项目支持的机型列表
2 |
3 | > ### x86-64 工作流
4 |
5 | | 🖥️ 工作流分类 | 处理器 | 备注 | luci版本 |
6 | | ---------------- | -------------- | ---------- |---------- |
7 | | x86-64 efi.img.gz | Intel/AMD | EFI向下兼容传统BIOS |24.10.x |
8 | | x86-64 OpenWrt安装器 | Intel/AMD | ISO格式适用于任何虚拟机和任何物理机 引导后输入ddd来安装 |24.10.x |
9 |
10 | > ### QEMU-qcow2 ARM-64 工作流
11 | - 你可以理解为这是一种ARM64平台下通用型OpenWrt ,产出格式为qcow2,适合所有ARM64平台的虚拟机
12 | - 比如斐讯N1刷了armbian系统,armbian系统里安装了PVE虚拟机 可用
13 | - 比如新款Apple Silicon芯片的苹果电脑里的虚拟机UTM 可用
14 | - 比如友善NanoPi R3S、R5S 官方推出的预装了PVE的debian系统 可用
15 | - 比如瑞莎E20C刷了Armbian系统,自己安装了QEMU+KVM虚拟机 可用
16 |
17 | > ### Rockchip 工作流
18 | | 📦 工作流分类 | 型号 | 厂商 | 处理器型号 | luci版本 |
19 | |------------------|----------------------------------|------------------|-------------|------------|
20 | | Rockchip瑞芯微 | ariaboard_photonicat | Ariaboard | RK3588 | 24.10.x |
21 | | Rockchip瑞芯微 | armsom_sige3 | Armsom | RK3568 | 24.10.x |
22 | | Rockchip瑞芯微 | armsom_sige7 | Armsom | RK3588 | 24.10.x |
23 | | Rockchip瑞芯微 | cyber_cyber3588-aib | Cyber | RK3588 | 24.10.x |
24 | | Rockchip瑞芯微 | ezpro_mrkaio-m68s | EZPro | RK3568 | 24.10.x |
25 | | Rockchip瑞芯微 | firefly_roc-rk3328-cc | Firefly | RK3328 | 24.10.x |
26 | | Rockchip瑞芯微 | firefly_roc-rk3568-pc | Firefly | RK3568 | 24.10.x |
27 | | Rockchip瑞芯微 | friendlyarm_nanopc-t4 | FriendlyARM | RK3399 | 24.10.x |
28 | | Rockchip瑞芯微 | friendlyarm_nanopc-t6 | FriendlyARM | RK3588 | 24.10.x |
29 | | Rockchip瑞芯微 | friendlyarm_nanopi-r2c | FriendlyARM | RK3328 | 24.10.x |
30 | | Rockchip瑞芯微 | friendlyarm_nanopi-r2c-plus | FriendlyARM | RK3328 | 24.10.x |
31 | | Rockchip瑞芯微 | friendlyarm_nanopi-r2s | FriendlyARM | RK3328 | 24.10.x |
32 | | Rockchip瑞芯微 | friendlyarm_nanopi-r3s | FriendlyARM | RK3568 | 24.10.x |
33 | | Rockchip瑞芯微 | friendlyarm_nanopi-r4s | FriendlyARM | RK3399 | 24.10.x |
34 | | Rockchip瑞芯微 | friendlyarm_nanopi-r4se | FriendlyARM | RK3399 | 24.10.x |
35 | | Rockchip瑞芯微 | friendlyarm_nanopi-r4s-enterprise| FriendlyARM | RK3399 | 24.10.x |
36 | | Rockchip瑞芯微 | friendlyarm_nanopi-r5c | FriendlyARM | RK3568 | 24.10.x |
37 | | Rockchip瑞芯微 | friendlyarm_nanopi-r5s | FriendlyARM | RK3568 | 24.10.x |
38 | | Rockchip瑞芯微 | friendlyarm_nanopi-r6c | FriendlyARM | RK3588 | 24.10.x |
39 | | Rockchip瑞芯微 | friendlyarm_nanopi-r6s | FriendlyARM | RK3588 | 24.10.x |
40 | | Rockchip瑞芯微 | huake_guangmiao-g4c | Huake | RK3568 | 24.10.x |
41 | | Rockchip瑞芯微 | lunzn_fastrhino-r66s | Lunzn | RK3568 | 24.10.x |
42 | | Rockchip瑞芯微 | lunzn_fastrhino-r68s | Lunzn | RK3588 | 24.10.x |
43 | | Rockchip瑞芯微 | lyt_t68m | LYT | RK3568 | 24.10.x |
44 | | Rockchip瑞芯微 | pine64_rock64 | Pine64 | RK3328 | 24.10.x |
45 | | Rockchip瑞芯微 | pine64_rockpro64 | Pine64 | RK3399 | 24.10.x |
46 | | Rockchip瑞芯微 | radxa_cm3_io | Radxa | RK3566 | 24.10.x |
47 | | Rockchip瑞芯微 | radxa_e25 | Radxa | RK3568 | 24.10.x |
48 | | Rockchip瑞芯微 | radxa_rock-3a | Radxa | RK3568 | 24.10.x |
49 | | Rockchip瑞芯微 | radxa_rock-3b | Radxa | RK3568 | 24.10.x |
50 | | Rockchip瑞芯微 | radxa_rock-3c | Radxa | RK3568 | 24.10.x |
51 | | Rockchip瑞芯微 | radxa_rock-5a | Radxa | RK3588S | 24.10.x |
52 | | Rockchip瑞芯微 | radxa_rock-5b | Radxa | RK3588 | 24.10.x |
53 | | Rockchip瑞芯微 | radxa_rock-pi-4a | Radxa | RK3399 | 24.10.x |
54 | | Rockchip瑞芯微 | radxa_rock-pi-e | Radxa | RK3328 | 24.10.x |
55 | | Rockchip瑞芯微 | radxa_rock-pi-s | Radxa | RK3308 | 24.10.x |
56 | | Rockchip瑞芯微 | radxa_zero-3e | Radxa | RK3566 | 24.10.x |
57 | | Rockchip瑞芯微 | radxa_zero-3w | Radxa | RK3566 | 24.10.x |
58 | | Rockchip瑞芯微 | sinovoip_bpi-r2-pro | SinoVoip | RK3568 | 24.10.x |
59 | | Rockchip瑞芯微 | xunlong_orangepi-5 | OrangePi | RK3588S | 24.10.x |
60 | | Rockchip瑞芯微 | xunlong_orangepi-5-plus | OrangePi | RK3588 | 24.10.x |
61 | | Rockchip瑞芯微 | xunlong_orangepi-r1-plus | OrangePi | RK3328 | 24.10.x |
62 | | Rockchip瑞芯微 | xunlong_orangepi-r1-plus-lts | OrangePi | RK3328 | 24.10.x |
63 |
64 | > ### 树莓派1-5 工作流
65 | | 📦 开发板分类 | 型号 | 厂商 | 处理器型号 | luci版本 |
66 | |------------------|--------------------|-------------|-------------------|------------|
67 | | Broadcom博通 | raspberrypi_1_model_b | Raspberry Pi | BCM2835 (ARMv6) | 24.10.x |
68 | | Broadcom博通 | raspberrypi_2_model_b | Raspberry Pi | BCM2836 (ARMv7) | 24.10.x |
69 | | Broadcom博通 | raspberrypi_3_model_b | Raspberry Pi | BCM2837 (ARM Cortex-A53) | 24.10.x |
70 | | Broadcom博通 | raspberrypi_3_model_b_plus| Raspberry Pi | BCM2837B0 | 24.10.x |
71 | | Broadcom博通 | raspberrypi_4_model_b | Raspberry Pi | BCM2711 (Cortex-A72) | 24.10.x |
72 | | Broadcom博通 | raspberrypi_5 | Raspberry Pi | BCM2712 (Cortex-A76 + RPI RP1) | 24.10.x |
73 |
74 | > ### 全志Allwinner-sunxi-cortexa53 工作流
75 |
76 | | 📦 工作流分类 | 型号 | 厂商 | 处理器型号 | luci版本 |
77 | |-----------------------|-----------------------------|---------------|----------------|------------|
78 | | sunxi-cortexa53 | xunlong_orangepi-zero3 | OrangePi | H618 | 24.10.x |
79 | | sunxi-cortexa53 | friendlyarm_nanopi-r1s-h5 | FriendlyARM | H5 | 24.10.x |
80 | | sunxi-cortexa53 | xunlong_orangepi-zero2 | OrangePi | H616 | 24.10.x |
81 | | sunxi-cortexa53 | xunlong_orangepi-zero-plus | OrangePi | H5 | 24.10.x |
82 | | sunxi-cortexa53 | friendlyarm_nanopi-neo2 | FriendlyARM | H5 | 24.10.x |
83 | | sunxi-cortexa53 | xunlong_orangepi-pc2 | OrangePi | H5 | 24.10.x |
84 | | sunxi-cortexa53 | friendlyarm_nanopi-neo-plus2| FriendlyARM | H5 | 24.10.x |
85 | | sunxi-cortexa53 | libretech_all-h3-cc-h5 | Libre Computer| H5 | 24.10.x |
86 | | sunxi-cortexa53 | pine64_pine64-plus | Pine64 | A64 | 24.10.x |
87 | | sunxi-cortexa53 | pine64_sopine-baseboard | Pine64 | A64 | 24.10.x |
88 |
89 |
90 |
91 | > ### ~~GL-iNet 和 Cudy MediaTek Filogic 工作流~~ 归入build-wireless-router.yml
92 |
93 | | 📦 SoC平台 | 型号 | 厂商 | 处理器型号 | luci版本 |
94 | |-----------------------------------|--------------------------------|------------|----------------|------------|
95 | | MediaTek Filogic (MT7981B, Quad-core Cortex-A53 @1.3GHz) | glinet_gl-mt3000 | GL.iNet | MT7981B | 24.10.x |
96 | | MediaTek Filogic (MT7981B, Quad-core Cortex-A53 @1.3GHz) | glinet_gl-mt2500 | GL.iNet | MT7981B | 24.10.x |
97 | | MediaTek Filogic (MT7986A, Quad-core Cortex-A53 @1.3GHz) | glinet_gl-mt6000 | GL.iNet | MT7986A | 24.10.x |
98 | | Qualcomm IPQ4019 (Quad-core Cortex-A7 @717MHz) | glinet_gl-b2200 | GL.iNet | IPQ4019 | 24.10.x |
99 | | MediaTek Filogic (MT7981B, Quad-core Cortex-A53 @1.3GHz) | cudy_tr3000-v1 | Cudy | MT7981B | 24.10.x |
100 | | MediaTek Filogic (MT7981B, Quad-core Cortex-A53 @1.3GHz) | cudy_tr3000-v1-ubootmod | Cudy | MT7981B | 24.10.x |
101 | | MediaTek Filogic (MT7981B, Quad-core Cortex-A53 @1.3GHz) | cudy_tr3000-256mb-v1 | Cudy | MT7981B | 24.10.x |
102 |
103 | > ### 以下设备并非 OpenWrt 官方支持,但可通过 Flippy 打包工具二次生成img 的工作流
104 |
105 | | 📦 启动方式 / 分类 | 型号 | 厂商 | 处理器/芯片组 | 说明 |
106 | | ----------------------- | -------- | ------- | -------------- | ----------- |
107 | | Flippy兼容设备(armsr-armv8) | e20c | Radxa | RK3528A | 需Flippy工具打包 |
108 | | Flippy兼容设备(armsr-armv8) | e24c | Radxa | RK3528A | 需Flippy工具打包 |
109 | | Flippy兼容设备(armsr-armv8) | e25 | Radxa | RK3568 | OpenWrt官方支持/Flippy工具打包 |
110 | | Flippy兼容设备(armsr-armv8) | e52c | Radxa | RK3582 | 需Flippy工具打包 |
111 | | Flippy兼容设备(armsr-armv8) | e54c | Radxa | RK3582 | 需Flippy工具打包 |
112 | | Flippy兼容设备(armsr-armv8) | rock5b | Radxa | RK3588 | 高性能SBC |
113 | | Flippy兼容设备(armsr-armv8) | rock5c | Radxa | RK3588S | 紧凑型版本 |
114 | | Flippy兼容设备(armsr-armv8) | r66s | Lunzn | RK3568 | OpenWrt官方支持/lunzn_fastrhino-r66s |
115 | | Flippy兼容设备(armsr-armv8) | r68s | Lunzn | RK3568 | OpenWrt官方支持/lunzn_fastrhino-r68s |
116 | | Flippy兼容设备(armsr-armv8) | ht2 | 未明确 | RK3328 | TV盒子类 |
117 | | Flippy兼容设备(armsr-armv8) | h28k | HINLINK | Amlogic S905X3 | 电视盒子 |
118 | | Flippy兼容设备(armsr-armv8) | h66k | HINLINK | Amlogic S922X | |
119 | | Flippy兼容设备(armsr-armv8) | h68k | HINLINK | Amlogic S922X | |
120 | | Flippy兼容设备(armsr-armv8) | h69k | HINLINK | Amlogic S922X | |
121 | | Flippy兼容设备(armsr-armv8) | h69k-max | HINLINK | Amlogic S922X | Max版本,扩展内存 |
122 | | Flippy兼容设备(armsr-armv8) | h88k | HINLINK | Amlogic S922X | |
123 | | Flippy兼容设备(armsr-armv8) | h88k-v3 | HINLINK | Amlogic S922X | 第三版本 |
124 | | Flippy兼容设备(armsr-armv8) | jp-tvbox | 未明确 | Amlogic S905X3 | 电视盒改装 |
125 | | Flippy兼容设备(armsr-armv8) | l1pro | 未明确 | RK3588S | 小型软路由 |
126 | | Flippy兼容设备(armsr-armv8) | s905 | 多厂商 | Amlogic S905 | 早期电视盒芯片 |
127 | | Flippy兼容设备(armsr-armv8) | s905x2 | 多厂商 | Amlogic S905X2 | |
128 | | Flippy兼容设备(armsr-armv8) | s905x3 | 多厂商 | Amlogic S905X3 | |
129 | | Flippy兼容设备(armsr-armv8) | s912 | 多厂商 | Amlogic S912 | |
130 | | Flippy兼容设备(armsr-armv8) | s922x | 多厂商 | Amlogic S922X | Odroid N2芯片 |
131 | | Flippy兼容设备(armsr-armv8) | s922x-n2 | Odroid | Amlogic S922X | 高兼容性设备 |
132 |
133 | > ### 斐讯N1 电视盒子
134 | > 构建的是armsr-armv8的rootfs Flippy打包工具打包为OpenWrt镜像
135 | > 用户基数比较庞大 所以我是单独一个工作流 build-n1.yml 支持根据具体 特定内核版本来构建
136 |
137 | ### 晶晨电视盒子类和部分开发板
138 | > a311d, a311d-oes, s922x-oes-plus, wxy-oect, wxy-oect-replaced, panther-x2, jp-tvbox, s905x3-hk1, tanix-tx6, s905l-b860av21u, s905l2-e900v21e, s905l, s905l-aurora-1s, s905l-mg101, s905l2, s905l2-wojia, s905l3, s905l3-cm211, s905l3-unt400g1, s905l3-unt402a, s905l3a, s905l3a-cm311, s905l3a-m401a, s905l3b, s905l3b-e900v21d, s905l3b-e900v22d, s905l3b-e900v22e, s905l3b-ip103h, s905l3b-rg020et-ca, s905l3b-unt403a, s905lb-ipbs9505, s905lb-q96-mini, s905lb-r3300l, r66s, r68s, nanopc-t6, nanopi-r5c, nanopi-r5s, orangepi-5-plus, orangepi-5b, alark35-3500, anas3035, beikeyun, chainedbox, crrc, dc-a588, dg3399, dg-tn3568, dlfr100, e20c, e25, eaidk-610, emb3531, fine3399, firefly-rk3399, fmx1-pro, h28k, h66k, h68k, h69k, h88k, h88k-v3, h96-max-m2, hs530r, hugsun-x99, ipc-r, king3399, kylin3399, lckfb-tspi, leez, lx-r3s, mrkaio-m68s, renegade-rk3328, rk3318-box, rock5b, rock5c, ruisen-box, s905, s905-beelink-mini, s905-mxqpro-plus, s905d-ki-pro, s905d-sml5442tw, s905mb, s905w, s905w-w95, s905w-x96-mini, s905w-x96w, s905x, s905x-b860h, s905x-nexbox-a95x, s905x-t95, s905x-tbee, s905x-tx9, s905x2, s905x2-km3, s905x2-x96max-2g, s905x3, s905x3-2101, s905x3-a100, s905x3-a95xf3, s905x3-a95xf3-gb, s905x3-b, s905x3-h96max, s905x3-ip1001m, s905x3-q1, s905x3-q2, s905x3-tx3, s905x3-tx3-bz, s905x3-ugoosx3, s905x3-whale, s905x3-x88-pro-x3, s905x3-x96air, s905x3-x96air-gb, s905x3-x96max, s912, s912-h96pro-plus, s912-m8s-pro, s912-nexbox-a1, s912-nexbox-a2, s912-onecloudpro, s912-phicomm-t1, s912-t95z-plus, s912-tx8-max, s912-tx9-pro-2g, s912-tx9-pro-3g, s912-x92, s912-zyxq-fake, s922x, s922x-ct2000, s922x-gtking, s922x-gtkingpro-h, s922x-odroid-n2, s922x-reva, s922x-ugoos-am6, seewo-sv21, smart-am40, smart-am60, station-m1, station-m2, sv-33a6x, swan1-w28, sw799, tb-ls3399, tn3399, tpm312, tqc-a01, tvi3315a, vplus, xiaobao, yskj, zcube1-max, zk-r39a, zysj
139 |
140 | > ### MediaTek 路由器工作流(大约103种)build-wireless-router.yml
141 |
142 | | 机型 | 机型 | 机型 |
143 | |------|------|------|
144 | | abt_asr3000 | acelink_ew-7886cax | acer_predator-w6 |
145 | | acer_predator-w6d | acer_vero-w6m | arcadyan_mozart |
146 | | asus_rt-ax52 | asus_rt-ax59u | asus_tuf-ax4200 |
147 | | asus_tuf-ax6000 | bananapi_bpi-r3 | bananapi_bpi-r3-mini |
148 | | bananapi_bpi-r4 | bananapi_bpi-r4-poe | cetron_ct3003 |
149 | | **cetron_ct3003-stock** | cetron_ct3003-ubootmod | **cmcc_a10** |
150 | | cmcc_a10-stock | cmcc_a10-ubootmod | cmcc_rax3000m |
151 | | **cmcc_rax3000m-emmc-ubootmod** | **cmcc_rax3000m-nand-ubootmod** | cmcc_rax3000me |
152 | | comfast_cf-e393ax | confiabits_mt7981 | cudy_ap3000-v1 |
153 | | cudy_ap3000outdoor-v1 | cudy_m3000-v1 | cudy_re3000-v1 |
154 | | cudy_tr3000-v1 | cudy_tr3000-v1-ubootmod | cudy_wr3000-v1 |
155 | | cudy_wr3000e-v1 | cudy_wr3000h-v1 | cudy_wr3000s-v1 |
156 | | dlink_aquila-pro-ai-m30-a1 | dlink_aquila-pro-ai-m60-a1 | edgecore_eap111 |
157 | | gatonetworks_gdsp | glinet_gl-mt2500 | glinet_gl-mt3000 |
158 | | glinet_gl-mt6000 | glinet_gl-x3000 | glinet_gl-xe3000 |
159 | | h3c_magic-nx30-pro | h3c_magic-nx30-pro-nmbm | huasifei_wh3000-emmc |
160 | | imou_lc-hx3001 | **imou_lc-hx3001-ubootmod** | **jcg_q30** |
161 | | **jcg_q30-ubootmod** | jcg_q30-pro | jdcloud_re-cp-03 |
162 | | keenetic_kn-3811 | keenetic_kn-3911 | konka_komi-a31 |
163 | | livinet_zr-3020 | livinet_zr-3020-ubootmod | mediatek_mt7981-rfb |
164 | | mediatek_mt7986a-rfb-nand | mediatek_mt7986b-rfb | mediatek_mt7988a-rfb |
165 | | mercusys_mr80x-v3 | mercusys_mr90x-v1 | mercusys_mr90x-v1-ubi |
166 | | netcore_n60 | netcore_n60-pro | netgear_wax220 |
167 | | netis_nx31 | nokia_ea0326gmp | openembed_som7981 |
168 | | openwrt_one | qihoo_360t7 | **qihoo_360t7-ubootmod** |
169 | | routerich_ax3000 | routerich_ax3000-ubootmod | routerich_ax3000-v1 |
170 | | ruijie_rg-x60-pro | smartrg_sdg-8612 | smartrg_sdg-8614 |
171 | | smartrg_sdg-8622 | smartrg_sdg-8632 | smartrg_sdg-8733 |
172 | | smartrg_sdg-8733a | smartrg_sdg-8734 | tplink_archer-ax80-v1 |
173 | | tplink_re6000xd | tplink_tl-xdr4288 | tplink_tl-xdr6086 |
174 | | tplink_tl-xdr6088 | tplink_tl-xtr8488 | ubnt_unifi-6-plus |
175 | | unielec_u7981-01-emmc | unielec_u7981-01-nand | wavlink_wl-wn573hx3 |
176 | | wavlink_wl-wn586x3 | xiaomi_mi-router-ax3000t | xiaomi_mi-router-ax3000t-ubootmod |
177 | | xiaomi_mi-router-wr30u-stock | xiaomi_mi-router-wr30u-ubootmod | **xiaomi_mi-router-wr30u-112m-nmbm** |
178 | | xiaomi_redmi-router-ax6000-stock | xiaomi_redmi-router-ax6000-ubootmod | yuncore_ax835 |
179 | | zbtlink_zbt-z8102ax | zbtlink_zbt-z8103ax | zyxel_ex5601-t0-stock |
180 | | zyxel_ex5601-t0-ubootmod | zyxel_ex5700-telenor | zyxel_nwa50ax-pro |
181 |
182 |
183 | > ### 高通ipq807x 路由器
184 |
185 | | 序号 | 机型 | 序号 | 机型 | 序号 | 机型 |
186 | |------|-------------------|------|-------------------|------|-------------------|
187 | | 1 | arcadyan_aw1000 | 12 | linksys_mx5300 | 23 | redmi_ax6-stock |
188 | | 2 | asus_rt-ax89x | 13 | linksys_mx8500 | 24 | spectrum_sax1v1k |
189 | | 3 | buffalo_wxr-5950ax12 | 14 | netgear_rax120v2 | 25 | tplink_eap660hd-v1 |
190 | | 4 | cmcc_rm2-6 | 15 | netgear_sxr80 | 26 | xiaomi_ax3600 |
191 | | 5 | compex_wpq873 | 16 | netgear_sxs80 | 27 | xiaomi_ax3600-stock|
192 | | 6 | dynalink_dl-wrx36 | 17 | netgear_wax218 | 28 | xiaomi_ax9000 |
193 | | 7 | edgecore_eap102 | 18 | netgear_wax620 | 29 | xiaomi_ax9000-stock|
194 | | 8 | edimax_cax1800 | 19 | netgear_wax630 | 30 | yuncore_ax880 |
195 | | 9 | linksys_mx4200v1 | 20 | prpl_haze | 31 | zbtlink_zbt-z800ax |
196 | | 10 | linksys_mx4200v2 | 21 | qnap_301w | 32 | zte_mf269 |
197 | | 11 | linksys_mx4300 | 22 | redmi_ax6 | 33 | zte_mf269-stock |
198 | | | | | | 34 | zyxel_nbg7815 |
199 |
200 | > #### MT7621 路由器(267个)
201 |
202 | | 机型1 | 机型2 | 机型3 |
203 | | ---------------------------- | ---------------------------- | ------------------------------- |
204 | | adslr\_g7 | afoundry\_ew1200 | alfa-network\_ax1800rm |
205 | | alfa-network\_quad-e4g | ampedwireless\_ally-00x19k | ampedwireless\_ally-r1900k |
206 | | arcadyan\_we410443 | arcadyan\_we420223-99 | asiarf\_ap7621-001 |
207 | | asiarf\_ap7621-nv1 | asus\_rp-ac56 | asus\_rp-ac87 |
208 | | asus\_rt-ac57u-v1 | asus\_rt-ac65p | asus\_rt-ac85p |
209 | | asus\_rt-ax53u | asus\_rt-ax54 | asus\_rt-n56u-b1 |
210 | | beeline\_smartbox-flash | beeline\_smartbox-giga | beeline\_smartbox-pro |
211 | | beeline\_smartbox-turbo | beeline\_smartbox-turbo-plus | belkin\_rt1800 |
212 | | bolt\_arion | buffalo\_wsr-1166dhp | buffalo\_wsr-2533dhpl2 |
213 | | buffalo\_wsr-2533dhpls | buffalo\_wsr-600dhp | comfast\_cf-e390ax |
214 | | comfast\_cf-ew72-v2 | confiabits\_mt7621-v1 | **cudy\_m1300-v2** |
215 | | **cudy\_m1800** | **cudy\_wr1300-v1** | **cudy\_wr1300-v2** |
216 | | **cudy\_wr1300-v3** | **cudy\_wr2100** | **cudy\_x6-v1** |
217 | | **cudy\_x6-v2** | d-team\_newifi-d2 | d-team\_pbr-m1 |
218 | | dlink\_covr-x1860-a1 | dlink\_dap-1620-b1 | dlink\_dap-x1860-a1 |
219 | | dlink\_dir-1935-a1 | dlink\_dir-1960-a1 | dlink\_dir-2055-a1 |
220 | | dlink\_dir-2150-a1 | dlink\_dir-2150-r1 | dlink\_dir-2640-a1 |
221 | | dlink\_dir-2660-a1 | dlink\_dir-3040-a1 | dlink\_dir-3060-a1 |
222 | | dlink\_dir-853-a1 | dlink\_dir-853-a3 | dlink\_dir-853-r1 |
223 | | dlink\_dir-860l-b1 | dlink\_dir-867-a1 | dlink\_dir-878-a1 |
224 | | dlink\_dir-878-r1 | dlink\_dir-882-a1 | dlink\_dir-882-r1 |
225 | | dlink\_dra-1360-a1 | dna\_valokuitu-plus-ex400 | dual-q\_h721 |
226 | | edimax\_ra21s | edimax\_re23s | edimax\_rg21s |
227 | | elecom\_wmc-m1267gst2 | elecom\_wmc-s1267gs2 | elecom\_wmc-x1800gst |
228 | | elecom\_wrc-1167ghbk2-s | elecom\_wrc-1167gs2-b | elecom\_wrc-1167gst2 |
229 | | elecom\_wrc-1750gs | elecom\_wrc-1750gst2 | elecom\_wrc-1750gsv |
230 | | elecom\_wrc-1900gst | elecom\_wrc-2533ghbk-i | elecom\_wrc-2533gs2 |
231 | | elecom\_wrc-2533gst | elecom\_wrc-2533gst2 | elecom\_wrc-x1800gs |
232 | | elecom\_wsc-x1800gs | etisalat\_s3 | firefly\_firewrt |
233 | | gehua\_ghl-r-001 | gemtek\_wvrtm-127acn | gemtek\_wvrtm-130acn |
234 | | genexis\_pulse-ex400 | **glinet\_gl-mt1300** | gnubee\_gb-pc1 |
235 | | gnubee\_gb-pc2 | h3c\_tx1800-plus | h3c\_tx1801-plus |
236 | | h3c\_tx1806 | haier\_har-20s2u1 | hanyang\_hyc-g920 |
237 | | hilink\_hlk-7621a-evb | hiwifi\_hc5962 | huasifei\_ws1208v2 |
238 | | humax\_e10 | iodata\_wn-ax1167gr | iodata\_wn-ax1167gr2 |
239 | | iodata\_wn-ax2033gr | iodata\_wn-deax1800gr | iodata\_wn-dx1167r |
240 | | iodata\_wn-dx1200gr | iodata\_wn-dx2033gr | iodata\_wn-gx300gr |
241 | | iodata\_wnpr2600g | iptime\_a3002mesh | iptime\_a3004ns-dual |
242 | | iptime\_a3004t | iptime\_a6004ns-m | iptime\_a6ns-m |
243 | | iptime\_a8004t | iptime\_ax2004m | iptime\_t5004 |
244 | | jcg\_jhr-ac876m | **jcg\_q20** | **jcg\_y2** |
245 | | **jdcloud\_re-cp-02** | **jdcloud\_re-sp-01b** | keenetic\_kn-3010 |
246 | | keenetic\_kn-3510 | lenovo\_newifi-d1 | linksys\_e5600 |
247 | | linksys\_e7350 | linksys\_ea6350-v4 | linksys\_ea7300-v1 |
248 | | linksys\_ea7300-v2 | linksys\_ea7500-v2 | linksys\_ea8100-v1 |
249 | | linksys\_ea8100-v2 | linksys\_re6500 | linksys\_re7000 |
250 | | mediatek\_ap-mt7621a-v60 | mediatek\_mt7621-eval-board | meig\_slt866 |
251 | | mercusys\_mr70x-v1 | mikrotik\_ltap-2hnd | mikrotik\_routerboard-750gr3 |
252 | | mikrotik\_routerboard-760igs | mikrotik\_routerboard-m11g | mikrotik\_routerboard-m33g |
253 | | mqmaker\_witi | mtc\_wr1201 | mts\_wg430223 |
254 | | netgear\_eax12 | netgear\_ex6150 | netgear\_r6220 |
255 | | netgear\_r6260 | netgear\_r6350 | netgear\_r6700-v2 |
256 | | netgear\_r6800 | netgear\_r6850 | netgear\_r6900-v2 |
257 | | netgear\_r7200 | netgear\_r7450 | netgear\_wac104 |
258 | | netgear\_wac124 | netgear\_wax202 | netgear\_wax214v2 |
259 | | netgear\_wndr3700-v5 | netis\_n6 | netis\_wf2881 |
260 | | openfi\_5pro | oraybox\_x3a | phicomm\_k2p |
261 | | planex\_vr500 | raisecom\_msg1500-x-00 | renkforce\_ws-wn530hp3-a |
262 | | rostelecom\_rt-fe-1a | rostelecom\_rt-sf-1 | ruijie\_rg-ew1200g-pro-v1.1 |
263 | | samknows\_whitebox-v8 | sercomm\_na502 | sercomm\_na502s |
264 | | sim\_simax1800t | snr\_snr-cpe-me1 | snr\_snr-cpe-me2-lite |
265 | | snr\_snr-cpe-me2-sfp | storylink\_sap-g3200u3 | telco-electronics\_x1 |
266 | | tenbay\_t-mb5eu-v01 | thunder\_timecloud | totolink\_a7000r |
267 | | totolink\_x5000r | tozed\_zlt-s12-pro | tplink\_archer-a6-v3 |
268 | | tplink\_archer-ax23-v1 | tplink\_archer-c6-v3 | tplink\_archer-c6u-v1 |
269 | | tplink\_deco-m4r-v4 | tplink\_eap235-wall-v1 | tplink\_eap613-v1 |
270 | | tplink\_eap615-wall-v1 | tplink\_ec330-g5u-v1 | tplink\_er605-v2 |
271 | | tplink\_ex220-v1 | tplink\_mr600-v2-eu | tplink\_re350-v1 |
272 | | tplink\_re500-v1 | tplink\_re650-v1 | tplink\_re650-v2 |
273 | | tplink\_tl-wpa8631p-v3 | ubnt\_edgerouter-x | ubnt\_edgerouter-x-sfp |
274 | | ubnt\_unifi-6-lite | ubnt\_unifi-flexhd | ubnt\_unifi-nanohd |
275 | | ubnt\_usw-flex | unielec\_u7621-01-16m | unielec\_u7621-06-16m |
276 | | unielec\_u7621-06-32m | unielec\_u7621-06-64m | wavlink\_wl-wn531a6 |
277 | | wavlink\_wl-wn533a8 | wavlink\_wl-wn573hx1 | wavlink\_ws-wn572hp3-4g |
278 | | wevo\_11acnas | wevo\_w2914ns-v2 | wifire\_s1500-nbn |
279 | | winstars\_ws-wn536p3 | winstars\_ws-wn583a6 | wodesys\_wd-r1802u |
280 | | **xiaomi\_mi-router-3-pro** | **xiaomi\_mi-router-3g** | **xiaomi\_mi-router-3g-v2** |
281 | | **xiaomi\_mi-router-4** | **xiaomi\_mi-router-4a-gigabit** | **xiaomi\_mi-router-4a-gigabit-v2** |
282 | | **xiaomi\_mi-router-ac2100** | **xiaomi\_mi-router-cr6606** | **xiaomi\_mi-router-cr6608** |
283 | | **xiaomi\_mi-router-cr6609** | **xiaomi\_redmi-router-ac2100** | xiaoyu\_xy-c5 |
284 | | xzwifi\_creativebox-v1 | youhua\_wr1200js | youku\_yk-l2 |
285 | | yuncore\_ax820 | yuncore\_fap640 | yuncore\_fap690 |
286 | | yuncore\_g720 | z-router\_zr-2660 | zbtlink\_zbt-we1326 |
287 | | zbtlink\_zbt-we3526 | zbtlink\_zbt-wg1602-16m | zbtlink\_zbt-wg1602-v04-16m |
288 | | zbtlink\_zbt-wg1602-v04-32m | zbtlink\_zbt-wg1608-16m | zbtlink\_zbt-wg1608-32m |
289 | | zbtlink\_zbt-wg2626 | zbtlink\_zbt-wg3526-16m | zbtlink\_zbt-wg3526-32m |
290 | | zio\_freezio | zte\_e8820s | zyxel\_lte3301-plus |
291 | | zyxel\_lte5398-m904 | zyxel\_nr7101 | zyxel\_nwa50ax |
292 | | zyxel\_nwa55axe | zyxel\_wap6805 | zyxel\_wsm20 |
293 |
294 |
295 |
296 | > ### 硬路由固件格式说明
297 |
298 | | 文件类型 | 用途 | 内容 | 常用场景 |
299 | | ---- | --------- | ---------------- | ---------------- |
300 | | FIP | Arm 固件包 | BL1/BL2/BL31 等 | CPU 上电启动 |
301 | | BIN | 泛二进制 | Bootloader/内核等 | 烧录或加载执行 |
302 | | UBI | NAND 文件系统 | UBIFS 镜像 | 嵌入式 NAND 路由器/开发板 |
303 | | ITB | U-Boot 镜像 | 内核+设备树+initramfs | U-Boot 启动镜像 |
304 |
305 |
--------------------------------------------------------------------------------