├── .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 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](https://wkdaily.cpolar.top/archives/1) 2 | #### 用户名 `root` 密码:无 -------------------------------------------------------------------------------- /info.md: -------------------------------------------------------------------------------- 1 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](https://wkdaily.cpolar.top/archives/1) 2 | #### 固件地址 `192.168.100.1` 3 | #### 用户名 `root` 密码:无 4 | #### 默认软件包大小 1GB 5 | -------------------------------------------------------------------------------- /sunxi-cortexa53/info.md: -------------------------------------------------------------------------------- 1 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](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 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](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 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](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 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](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 | [![Github](https://img.shields.io/badge/Release文件可在国内加速站下载-FC7C0D?logo=github&logoColor=fff&labelColor=000&style=for-the-badge)](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 | [![GitHub](https://img.shields.io/github/license/wukongdaily/AutoBuildImmortalWrt.svg?label=LICENSE&logo=github&logoColor=%20)](https://github.com/wukongdaily/AutoBuildImmortalWrt/blob/master/LICENSE) 3 | ![GitHub Stars](https://img.shields.io/github/stars/wukongdaily/AutoBuildImmortalWrt.svg?style=flat&logo=appveyor&label=Stars&logo=github) 4 | ![GitHub Forks](https://img.shields.io/github/forks/wukongdaily/AutoBuildImmortalWrt.svg?style=flat&logo=appveyor&label=Forks&logo=github) [![Github](https://img.shields.io/badge/RELEASE:AutoBuildImmortalWrt-123456?logo=github&logoColor=fff&labelColor=green&style=flat)](https://github.com/wukongdaily/AutoBuildImmortalWrt/releases) [![Bilibili](https://img.shields.io/badge/Bilibili-123456?logo=bilibili&logoColor=fff&labelColor=fb7299)](https://www.bilibili.com/video/BV1EG6VYCER3) [![操作步骤](https://img.shields.io/badge/YouTube-123456?logo=youtube&labelColor=ff0000)](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 | image
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://img.shields.io/badge/YouTube-123456?logo=youtube&labelColor=ff0000)](https://www.youtube.com/watch?v=ftSE3wSJi64) [![Bilibili](https://img.shields.io/badge/Bilibili-123456?logo=bilibili&logoColor=fff&labelColor=fb7299)](https://www.bilibili.com/video/BV1enxMzwEUe/) 29 | 30 | ## 物理机如何使用ISO格式的安装器(本项目独有) 31 | - Windows 建议将ISO拷贝到制作好的[Ventoy](https://www.ventoy.net/cn/index.html)
32 | image 33 | 34 | - macOS 使用[balenaEtcher](https://etcher.balena.io/) 将ISO 刻录到U盘即可
35 | image 36 | 37 | - 将制作好的U盘提前插在软路由 然后启动后 按Del 或者F12、F11、F7等 使U盘成为第一启动盘 38 | 39 | image
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 | image 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://img.shields.io/badge/点击这里赞助我-支持作者的项目-orange?logo=github)](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 | --------------------------------------------------------------------------------