├── armsr └── armv8 │ ├── N1 │ ├── files │ │ └── etc │ │ │ ├── crontabs │ │ │ └── root │ │ │ └── config │ │ │ ├── amlogic │ │ │ └── network │ ├── .config │ └── mk_s905d_n1.sh │ └── diy │ ├── diy.sh │ └── luci.patch ├── README.md └── .github └── workflows └── armsr_armv8.yml /armsr/armv8/N1/files/etc/crontabs/root: -------------------------------------------------------------------------------- 1 | 0 4 * * * fstrim -a 2 | -------------------------------------------------------------------------------- /armsr/armv8/diy/diy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Adjust source code 4 | patch -p1 -f < $(dirname "$0")/luci.patch 5 | 6 | # Add packages 7 | git clone https://github.com/ophub/luci-app-amlogic --depth=1 clone/amlogic 8 | git clone https://github.com/xiaorouji/openwrt-passwall --depth=1 clone/passwall 9 | 10 | # Update packages 11 | rm -rf feeds/luci/applications/luci-app-passwall 12 | cp -rf clone/amlogic/luci-app-amlogic clone/passwall/luci-app-passwall feeds/luci/applications/ 13 | 14 | # Clean packages 15 | rm -rf clone -------------------------------------------------------------------------------- /armsr/armv8/N1/files/etc/config/amlogic: -------------------------------------------------------------------------------- 1 | config amlogic 'config' 2 | option enable '1' 3 | option amlogic_firmware_repo 'https://github.com/nantayo/N1-OpenWrt' 4 | option amlogic_firmware_tag 'OpenWrt' 5 | option amlogic_firmware_suffix '.img.xz' 6 | option amlogic_kernel_path 'https://github.com/breakingbadboy/OpenWrt' 7 | option amlogic_kernel_branch '6.6' 8 | option amlogic_firmware_config '1' 9 | option amlogic_write_bootloader '1' 10 | option amlogic_shared_fstype 'ext4' 11 | 12 | config settings 'armcpu' 13 | option governor0 'performance' 14 | option minfreq0 '1512000' 15 | option maxfreq0 '1512000' -------------------------------------------------------------------------------- /armsr/armv8/N1/files/etc/config/network: -------------------------------------------------------------------------------- 1 | config interface 'loopback' 2 | option device 'lo' 3 | option proto 'static' 4 | option ipaddr '127.0.0.1' 5 | option netmask '255.0.0.0' 6 | 7 | config interface 'docker' 8 | option device 'docker0' 9 | option proto 'none' 10 | option auto '0' 11 | 12 | config interface 'lan' 13 | option proto 'static' 14 | option netmask '255.255.255.0' 15 | option device 'eth0' 16 | option ipaddr '192.168.2.2' 17 | option gateway '192.168.2.1' 18 | option delegate '0' 19 | 20 | config device 21 | option type 'bridge' 22 | option name 'docker0' 23 | 24 | config globals 'globals' 25 | option packet_steering '2' 26 | option steering_flows '256' 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 项目简介 2 | 本固件适配斐讯 N1 旁路由模式,追求轻量(请注意:不具备 PPPoE、WiFi 相关功能)。
3 | 固件包含默认皮肤、完整 IPv6 支持,以及下列 luci-app:
4 | [luci-app-amlogic](https://github.com/ophub/luci-app-amlogic):系统更新、文件传输、CPU 调频等
5 | luci-app-dockerman:docker 管理
6 | [luci-app-passwall](https://github.com/xiaorouji/openwrt-passwall):科学上网
7 | luci-app-samba4:存储共享 8 | *** 9 | # 致谢 10 | 本项目基于 [ImmortalWrt-24.10](https://github.com/immortalwrt/immortalwrt/tree/openwrt-24.10) 源码编译,使用 flippy 的[脚本](https://github.com/unifreq/openwrt_packit)和 breakingbadboy 维护的[内核](https://github.com/breakingbadboy/OpenWrt/releases/tag/kernel_stable)打包成完整固件,感谢开发者们的无私分享。
11 | flippy 固件的更多细节参考[恩山论坛帖子](https://www.right.com.cn/forum/thread-4076037-1-1.html)。 -------------------------------------------------------------------------------- /armsr/armv8/diy/luci.patch: -------------------------------------------------------------------------------- 1 | --- a/feeds/luci/modules/luci-base/root/usr/share/rpcd/ucode/luci 2 | +++ b/feeds/luci/modules/luci-base/root/usr/share/rpcd/ucode/luci 3 | @@ -695,13 +695,24 @@ 4 | 5 | getOnlineUsers: { 6 | call: function() { 7 | + let dev = 'br-lan'; 8 | + try { 9 | + const ubus = connect(); 10 | + const st = ubus?.call?.('network.interface.lan', 'status'); 11 | + if (st) 12 | + dev = st.l3_device || st.device || dev; 13 | + } catch (e) {} 14 | + 15 | const fd = open('/proc/net/arp', 'r'); 16 | if (fd) { 17 | let onlineusers = 0; 18 | 19 | - for (let line = fd.read('line'); length(line); line = fd.read('line')) 20 | - if (match(trim(line), /^.*(0x2).*(br-lan)$/)) 21 | + for (let line = fd.read('line'); length(line); line = fd.read('line')) { 22 | + line = trim(line); 23 | + const f = split(line, /\s+/); 24 | + if (length(f) >= 6 && f[2] == '0x2' && f[5] == dev) 25 | onlineusers++; 26 | + } 27 | 28 | fd.close(); 29 | 30 | -------------------------------------------------------------------------------- /armsr/armv8/N1/.config: -------------------------------------------------------------------------------- 1 | CONFIG_TARGET_armsr=y 2 | CONFIG_TARGET_armsr_armv8=y 3 | CONFIG_TARGET_armsr_armv8_DEVICE_generic=y 4 | CONFIG_TARGET_ROOTFS_INITRAMFS=n 5 | CONFIG_TARGET_ROOTFS_CPIOGZ=n 6 | CONFIG_TARGET_ROOTFS_EXT4FS=n 7 | CONFIG_TARGET_ROOTFS_SQUASHFS=n 8 | 9 | # necessary 10 | CONFIG_BTRFS_PROGS_ZSTD=y 11 | CONFIG_PACKAGE_bsdtar=y 12 | CONFIG_PACKAGE_btrfs-progs=y 13 | CONFIG_PACKAGE_chattr=y 14 | CONFIG_PACKAGE_f2fs-tools=y 15 | CONFIG_PACKAGE_gawk=y 16 | CONFIG_PACKAGE_getopt=y 17 | CONFIG_PACKAGE_lsattr=y 18 | CONFIG_PACKAGE_perlbase-file=y 19 | CONFIG_PACKAGE_perlbase-getopt=y 20 | CONFIG_PACKAGE_perlbase-unicode=y 21 | CONFIG_PACKAGE_perl-http-date=y 22 | CONFIG_PACKAGE_pigz=y 23 | CONFIG_PACKAGE_tar=y 24 | CONFIG_PACKAGE_xfs-fsck=y 25 | CONFIG_PACKAGE_xfs-mkfs=y 26 | 27 | # luci 28 | CONFIG_PACKAGE_luci-app-amlogic=y 29 | CONFIG_PACKAGE_luci-app-dockerman=y 30 | CONFIG_PACKAGE_luci-app-filetransfer=n 31 | CONFIG_PACKAGE_luci-app-passwall=y 32 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Client=n 33 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Server=n 34 | CONFIG_PACKAGE_luci-app-samba4=y 35 | 36 | # kmod 37 | CONFIG_PACKAGE_kmod-amazon-ena=n 38 | CONFIG_PACKAGE_kmod-atlantic=n 39 | CONFIG_PACKAGE_kmod-bcmgenet=n 40 | CONFIG_PACKAGE_kmod-dwmac-imx=n 41 | CONFIG_PACKAGE_kmod-dwmac-rockchip=n 42 | CONFIG_PACKAGE_kmod-dwmac-sun8i=n 43 | CONFIG_PACKAGE_kmod-e1000e=n 44 | CONFIG_PACKAGE_kmod-fsl-dpaa1-net=n 45 | CONFIG_PACKAGE_kmod-fsl-dpaa2-net=n 46 | CONFIG_PACKAGE_kmod-fsl-enetc-net=n 47 | CONFIG_PACKAGE_kmod-fsl-fec=n 48 | CONFIG_PACKAGE_kmod-fsl-xgmac-mdio=n 49 | CONFIG_PACKAGE_kmod-gpio-pca953x=n 50 | CONFIG_PACKAGE_kmod-i2c-mux-pca954x=n 51 | CONFIG_PACKAGE_kmod-macsec=n 52 | CONFIG_PACKAGE_kmod-mdio-bcm-unimac=n 53 | CONFIG_PACKAGE_kmod-mvneta=n 54 | CONFIG_PACKAGE_kmod-mvpp2=n 55 | CONFIG_PACKAGE_kmod-net-selftests=n 56 | CONFIG_PACKAGE_kmod-octeontx2-net=n 57 | CONFIG_PACKAGE_kmod-phy-aquantia=n 58 | CONFIG_PACKAGE_kmod-phy-broadcom=n 59 | CONFIG_PACKAGE_kmod-phy-marvell=n 60 | CONFIG_PACKAGE_kmod-phy-marvell-10g=n 61 | CONFIG_PACKAGE_kmod-phy-realtek=n 62 | CONFIG_PACKAGE_kmod-phy-smsc=n 63 | CONFIG_PACKAGE_kmod-ppp=n 64 | CONFIG_PACKAGE_kmod-ptp=n 65 | CONFIG_PACKAGE_kmod-renesas-net-avb=n 66 | CONFIG_PACKAGE_kmod-rtc-rx8025=n 67 | CONFIG_PACKAGE_kmod-sfp=n 68 | CONFIG_PACKAGE_kmod-stmmac-core=n 69 | CONFIG_PACKAGE_kmod-thunderx-net=n 70 | CONFIG_PACKAGE_kmod-usb2=y 71 | CONFIG_PACKAGE_kmod-vmxnet3=n 72 | CONFIG_PACKAGE_kmod-wdt-sp805=n 73 | 74 | # other packages 75 | CONFIG_PACKAGE_autocore=y 76 | CONFIG_PACKAGE_fstrim=y 77 | CONFIG_PACKAGE_partx-utils=n 78 | CONFIG_PACKAGE_ppp=n 79 | CONFIG_PACKAGE_shellsync=n 80 | CONFIG_PACKAGE_zoneinfo-asia=y -------------------------------------------------------------------------------- /.github/workflows/armsr_armv8.yml: -------------------------------------------------------------------------------- 1 | name: Build ImmortalWrt-24.10 for armsr_armv8 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | ssh: 7 | description: 'SSH connection to Actions' 8 | required: true 9 | default: 'false' 10 | type: choice 11 | options: 12 | - true 13 | - false 14 | schedule: 15 | - cron: "0 0 1,16 * *" 16 | 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | REPO_URL: https://github.com/immortalwrt/immortalwrt 20 | REPO_BRANCH: openwrt-24.10 21 | TZ: Asia/Shanghai 22 | 23 | jobs: 24 | build: 25 | runs-on: ubuntu-24.04 26 | 27 | steps: 28 | - name: Checkout 29 | uses: actions/checkout@main 30 | 31 | - name: Free up space 32 | uses: jlumbroso/free-disk-space@main 33 | with: 34 | tool-cache: true 35 | android: true 36 | dotnet: true 37 | haskell: true 38 | large-packages: true 39 | docker-images: true 40 | swap-storage: true 41 | 42 | - name: Initialize environment 43 | env: 44 | DEBIAN_FRONTEND: noninteractive 45 | run: | 46 | sudo -E apt-get -qq update > /dev/null 47 | sudo -E apt-get -qq install -y $(curl -fsSL https://raw.githubusercontent.com/nantayo/My-Pkg/master/2410) > /dev/null 48 | sudo -E apt-get -qq autoremove --purge > /dev/null 49 | sudo -E apt-get -qq clean > /dev/null 50 | sudo timedatectl set-timezone "$TZ" 51 | sudo mkdir -p /workdir 52 | sudo chown $USER:$GROUPS /workdir 53 | 54 | - name: Clone source code 55 | working-directory: /workdir 56 | run: | 57 | git clone $REPO_URL -b $REPO_BRANCH --single-branch --depth=1 openwrt 58 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt 59 | echo "FILE_DATE=$(date +"%Y%m%d")" >> $GITHUB_ENV 60 | 61 | - name: Update & Install feeds 62 | run: | 63 | chmod +x armsr/armv8/diy/diy.sh 64 | cd openwrt 65 | ./scripts/feeds update -a 66 | $GITHUB_WORKSPACE/armsr/armv8/diy/diy.sh 67 | ./scripts/feeds update -a 68 | ./scripts/feeds install -a 69 | 70 | - name: Load N1 custom config 71 | run: | 72 | rm -rf openwrt/files openwrt/.config 73 | mv armsr/armv8/N1/files armsr/armv8/N1/.config openwrt/ 74 | 75 | - name: SSH connect to Actions 76 | uses: P3TERX/ssh2actions@main 77 | if: github.event.inputs.ssh == 'true' 78 | 79 | - name: Download package 80 | working-directory: ./openwrt 81 | run: | 82 | make defconfig 83 | make download -j$(( $(nproc) * 2 )) 84 | find dl -size -1k -exec rm -f {} \; 85 | 86 | - name: Compile N1 firmware 87 | run: | 88 | chmod -R 755 openwrt 89 | cd openwrt 90 | echo -e "$(nproc) thread compile" 91 | make -j$(( $(nproc) + 1 )) || make -j1 V=s 92 | 93 | - name: Package N1 firmware 94 | uses: unifreq/openwrt_packit@master 95 | env: 96 | OPENWRT_ARMVIRT: openwrt/bin/targets/armsr/armv8/*rootfs.tar.gz 97 | KERNEL_REPO_URL: breakingbadboy/OpenWrt 98 | KERNEL_VERSION_NAME: 6.6.y 99 | PACKAGE_SOC: diy 100 | GZIP_IMGS: .xz 101 | SCRIPT_DIY_PATH: armsr/armv8/N1/mk_s905d_n1.sh 102 | WHOAMI: nantayo 103 | SW_FLOWOFFLOAD: 0 104 | SFE_FLOW: 0 105 | 106 | - name: Upload firmware to release 107 | uses: softprops/action-gh-release@master 108 | with: 109 | tag_name: OpenWrt_${{ env.FILE_DATE }} 110 | files: ${{ env.PACKAGED_OUTPUTPATH }}/*.img.xz 111 | body: | 112 | 首次使用建议全新刷写 113 | * 基本信息 114 | IP: 192.168.2.2 115 | 账户: root 116 | 密码: password 117 | 118 | - name: Delete old releases 119 | uses: dev-drprasad/delete-older-releases@master 120 | with: 121 | keep_latest: 2 122 | delete_tags : true -------------------------------------------------------------------------------- /armsr/armv8/N1/mk_s905d_n1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "========================= begin $0 ===========================" 4 | source make.env 5 | source public_funcs 6 | init_work_env 7 | 8 | # 盒子型号识别参数 9 | PLATFORM=amlogic 10 | SOC=s905d 11 | BOARD=n1 12 | 13 | # 让N1一直有wifi可用,以减少抱怨 14 | # 5.10(及以上)内核是否启用wifi 1:启用 0:禁用 15 | ENABLE_WIFI_K510=0 16 | 17 | SUBVER=$1 18 | 19 | # Kernel image sources 20 | ################################################################### 21 | KERNEL_TAGS="stable" 22 | KERNEL_BRANCHES="mainline:all:>=:5.4" 23 | MODULES_TGZ=${KERNEL_PKG_HOME}/modules-${KERNEL_VERSION}.tar.gz 24 | check_file ${MODULES_TGZ} 25 | BOOT_TGZ=${KERNEL_PKG_HOME}/boot-${KERNEL_VERSION}.tar.gz 26 | check_file ${BOOT_TGZ} 27 | DTBS_TGZ=${KERNEL_PKG_HOME}/dtb-amlogic-${KERNEL_VERSION}.tar.gz 28 | check_file ${DTBS_TGZ} 29 | K510=$(get_k510_from_boot_tgz "${BOOT_TGZ}" "vmlinuz-${KERNEL_VERSION}") 30 | export K510 31 | ########################################################################### 32 | 33 | # Openwrt root 源文件 34 | OPWRT_ROOTFS_GZ=$(get_openwrt_rootfs_archive ${PWD}) 35 | check_file ${OPWRT_ROOTFS_GZ} 36 | echo "Use $OPWRT_ROOTFS_GZ as openwrt rootfs!" 37 | 38 | # 目标镜像文件 39 | TGT_IMG="${WORK_DIR}/openwrt_${SOC}_${BOARD}_${OPENWRT_VER}_k${KERNEL_VERSION}${SUBVER}.img" 40 | 41 | # 补丁和脚本 42 | ########################################################################### 43 | KMOD="${PWD}/files/kmod" 44 | KMOD_BLACKLIST="${PWD}/files/kmod_blacklist" 45 | MAC_SCRIPT2="${PWD}/files/find_macaddr.pl" 46 | MAC_SCRIPT3="${PWD}/files/inc_macaddr.pl" 47 | CPUSTAT_SCRIPT="${PWD}/files/cpustat" 48 | CPUSTAT_SCRIPT_PY="${PWD}/files/cpustat.py" 49 | INDEX_PATCH_HOME="${PWD}/files/index.html.patches" 50 | GETCPU_SCRIPT="${PWD}/files/getcpu" 51 | FLIPPY="${PWD}/files/scripts_deprecated/flippy_cn" 52 | BANNER="${PWD}/files/banner" 53 | 54 | # 20200314 add 55 | FMW_HOME="${PWD}/files/firmware" 56 | SMB4_PATCH="${PWD}/files/smb4.11_enable_smb1.patch" 57 | SYSCTL_CUSTOM_CONF="${PWD}/files/99-custom.conf" 58 | 59 | # 20200930 add 60 | SND_MOD="${PWD}/files/s905d/snd-meson-gx" 61 | DAEMON_JSON="${PWD}/files/s905d/daemon.json" 62 | 63 | # 20201006 add 64 | FORCE_REBOOT="${PWD}/files/s905d/reboot" 65 | # 20201017 add 66 | BAL_ETH_IRQ="${PWD}/files/balethirq.pl" 67 | # 20201026 add 68 | FIX_CPU_FREQ="${PWD}/files/fixcpufreq.pl" 69 | SYSFIXTIME_PATCH="${PWD}/files/sysfixtime.patch" 70 | 71 | # 20201128 add 72 | SSL_CNF_PATCH="${PWD}/files/openssl_engine.patch" 73 | 74 | # 20201212 add 75 | BAL_CONFIG="${PWD}/files/s905d/balance_irq" 76 | CPUFREQ_INIT="${PWD}/files/s905d/cpufreq" 77 | 78 | # 20210302 modify 79 | FIP_HOME="${PWD}/files/meson_btld/with_fip/s905d" 80 | UBOOT_WITH_FIP="${FIP_HOME}/n1-u-boot.bin.sd.bin" 81 | UBOOT_WITHOUT_FIP_HOME="${PWD}/files/meson_btld/without_fip" 82 | UBOOT_WITHOUT_FIP="u-boot-n1.bin" 83 | 84 | # 20210307 add 85 | SS_LIB="${PWD}/files/ss-glibc/lib-glibc.tar.xz" 86 | SS_BIN="${PWD}/files/ss-glibc/armv8a_crypto/ss-bin-glibc.tar.xz" 87 | JQ="${PWD}/files/jq" 88 | 89 | # 20210330 add 90 | DOCKERD_PATCH="${PWD}/files/dockerd.patch" 91 | 92 | # 20200416 add 93 | FIRMWARE_TXZ="${PWD}/files/firmware_armbian.tar.xz" 94 | BOOTFILES_HOME="${PWD}/files/bootfiles/amlogic" 95 | GET_RANDOM_MAC="${PWD}/files/get_random_mac.sh" 96 | 97 | # 20210618 add 98 | DOCKER_README="${PWD}/files/DockerReadme.pdf" 99 | 100 | # 20210704 add 101 | SYSINFO_SCRIPT="${PWD}/files/30-sysinfo.sh" 102 | 103 | # 20210923 add 104 | OPENWRT_INSTALL="${PWD}/files/openwrt-install-amlogic" 105 | OPENWRT_UPDATE="${PWD}/files/openwrt-update-amlogic" 106 | OPENWRT_KERNEL="${PWD}/files/openwrt-kernel" 107 | OPENWRT_BACKUP="${PWD}/files/openwrt-backup" 108 | 109 | # 20211019 add 110 | FIRSTRUN_SCRIPT="${PWD}/files/first_run.sh" 111 | 112 | # 20211020 add 113 | BTLD_BIN="${PWD}/files/s905d/u-boot-2015-phicomm-n1.bin" 114 | 115 | # 20211024 add 116 | MODEL_DB="${PWD}/files/amlogic_model_database.txt" 117 | # 20211214 add 118 | P7ZIP="${PWD}/files/7z" 119 | # 20211217 add 120 | DDBR="${PWD}/files/openwrt-ddbr" 121 | # 20220225 add 122 | SSH_CIPHERS="aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr,chacha20-poly1305@openssh.com" 123 | SSHD_CIPHERS="aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr" 124 | ########################################################################### 125 | 126 | check_depends 127 | 128 | SKIP_MB=4 129 | BOOT_MB=256 130 | ROOTFS_MB=960 131 | SIZE=$((SKIP_MB + BOOT_MB + ROOTFS_MB)) 132 | create_image "$TGT_IMG" "$SIZE" 133 | create_partition "$TGT_DEV" "msdos" "$SKIP_MB" "$BOOT_MB" "fat32" "0" "-1" "btrfs" 134 | make_filesystem "$TGT_DEV" "B" "fat32" "BOOT" "R" "btrfs" "ROOTFS" 135 | mount_fs "${TGT_DEV}p1" "${TGT_BOOT}" "vfat" 136 | mount_fs "${TGT_DEV}p2" "${TGT_ROOT}" "btrfs" "compress=zstd:${ZSTD_LEVEL}" 137 | echo "创建 /etc 子卷 ..." 138 | btrfs subvolume create $TGT_ROOT/etc 139 | extract_rootfs_files 140 | extract_amlogic_boot_files 141 | 142 | echo "修改引导分区相关配置 ... " 143 | cd $TGT_BOOT 144 | rm -f uEnv.ini 145 | cat > uEnv.txt <" 161 | echo "===============================================================================" 162 | cat uEnv.txt 163 | echo "===============================================================================" 164 | echo 165 | 166 | echo "修改根文件系统相关配置 ... " 167 | cd $TGT_ROOT 168 | copy_supplement_files 169 | extract_glibc_programs 170 | adjust_docker_config 171 | adjust_openssl_config 172 | adjust_getty_config 173 | adjust_samba_config 174 | adjust_openssh_config 175 | use_xrayplug_replace_v2rayplug 176 | create_fstab_config 177 | adjust_mosdns_config 178 | patch_admin_status_index_html 179 | adjust_kernel_env 180 | copy_uboot_to_fs 181 | write_release_info 182 | write_banner 183 | config_first_run 184 | create_snapshot "etc-000" 185 | write_uboot_to_disk 186 | clean_work_env 187 | mv ${TGT_IMG} ${OUTPUT_DIR} && sync 188 | echo "镜像已生成! 存放在 ${OUTPUT_DIR} 下面!" 189 | echo "========================== end $0 ================================" 190 | echo --------------------------------------------------------------------------------