diff --git a/.github/workflows/build-minimal.yml b/.github/workflows/build-minimal.yml
index 1845702..6b7d327 100644
--- a/.github/workflows/build-minimal.yml
+++ b/.github/workflows/build-minimal.yml
@@ -55,7 +55,7 @@ jobs:
uses: sbwml/actions@openwrt-build-setup
- name: Install LLVM
- uses: sbwml/actions@install-llvm
+ uses: sbwml/actions@install-llvm-19
- name: Compile OpenWrt
id: compile
@@ -173,7 +173,7 @@ jobs:
echo y | aliyunpan logout
- name: Release OTA
- uses: sbwml/FTP-Deploy-Action@master
+ uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: ${{ secrets.ftp_address }}
username: ${{ matrix.model }}-minimal
diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml
index c1f9dea..9a90223 100644
--- a/.github/workflows/build-release.yml
+++ b/.github/workflows/build-release.yml
@@ -68,7 +68,7 @@ jobs:
uses: sbwml/actions@openwrt-build-setup
- name: Install LLVM
- uses: sbwml/actions@install-llvm
+ uses: sbwml/actions@install-llvm-19
- name: Compile OpenWrt
id: compile
@@ -148,7 +148,7 @@ jobs:
echo "
x86_64 虚拟机平台镜像
" > README.md
- name: Create release
- uses: sbwml/release-action@main
+ uses: ncipollo/release-action@v1.14.0
with:
name: OpenWrt-${{ env.latest_release }}
allowUpdates: true
@@ -160,7 +160,7 @@ jobs:
- name: Release kmods
if: env.release_kmod == 'true'
- uses: sbwml/release-action@main
+ uses: ncipollo/release-action@v1.14.0
with:
name: OpenWrt-${{ env.latest_release }}
allowUpdates: true
@@ -212,19 +212,19 @@ jobs:
export ALIYUNPAN_CONFIG_DIR="$(pwd)/.aliyunpan"
version=$(cat openwrt/version.txt)
if [ "${{ matrix.model }}" = "nanopi-r4s" ]; then
- aliyunpan upload --timeout 30 --retry 10 --ow info/config.buildinfo openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/manifest.txt openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/sha256sums.txt openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r4s-ext4-sysupgrade.img.gz openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r4s-squashfs-sysupgrade.img.gz openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/config.buildinfo openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/manifest.txt openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/sha256sums.txt openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r4s-ext4-sysupgrade.img.gz openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r4s-squashfs-sysupgrade.img.gz openwrt/nanopi-r4s/releases/${{ matrix.tag.version }}/$version/
elif [ "${{ matrix.model }}" = "nanopi-r5s" ]; then
- aliyunpan upload --timeout 30 --retry 10 --ow info/config.buildinfo openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/manifest.txt openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/sha256sums.txt openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r5c-ext4-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r5c-squashfs-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r5s-ext4-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*-r5s-squashfs-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/config.buildinfo openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/manifest.txt openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/sha256sums.txt openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r5c-ext4-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r5c-squashfs-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r5s-ext4-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*-r5s-squashfs-sysupgrade.img.gz openwrt/nanopi-r5s/releases/${{ matrix.tag.version }}/$version/
elif [ "${{ matrix.model }}" = "x86_64" ]; then
aliyunpan upload --timeout 30 --retry 10 --ow info/config.buildinfo openwrt/x86_64/releases/${{ matrix.tag.version }}/$version/
aliyunpan upload --timeout 30 --retry 10 --ow info/manifest.txt openwrt/x86_64/releases/${{ matrix.tag.version }}/$version/
@@ -239,10 +239,10 @@ jobs:
aliyunpan upload --timeout 30 --retry 10 --ow virtual_images/*.vhd openwrt/x86_64/releases/${{ matrix.tag.version }}/$version/virtual_machine_images/
aliyunpan upload --timeout 30 --retry 10 --ow virtual_images/*.qcow2 openwrt/x86_64/releases/${{ matrix.tag.version }}/$version/virtual_machine_images/
elif [ "${{ matrix.model }}" = "netgear_r8500" ]; then
- aliyunpan upload --timeout 30 --retry 10 --ow info/config.buildinfo openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/manifest.txt openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow info/sha256sums.txt openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
- aliyunpan upload --timeout 30 --retry 10 --ow rom/*.chk openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/config.buildinfo openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/manifest.txt openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow info/sha256sums.txt openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
+ aliyunpan upload --timeout 20 --retry 10 --ow rom/*.chk openwrt/netgear-r8500/releases/${{ matrix.tag.version }}/$version/
fi
aliyunpan recycle delete -all
echo y | aliyunpan logout
@@ -254,7 +254,7 @@ jobs:
sshpass -p ${{ secrets.user_password }} ssh root@${{ secrets.ftp_address }} "/opt/sbin/fw-upload ${{ matrix.model }}"
- name: Release OTA
- uses: sbwml/FTP-Deploy-Action@master
+ uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: ${{ secrets.ftp_address }}
username: ${{ matrix.model }}
diff --git a/.github/workflows/build-snapshots.yml b/.github/workflows/build-snapshots.yml
index 2c8383a..b20e49e 100644
--- a/.github/workflows/build-snapshots.yml
+++ b/.github/workflows/build-snapshots.yml
@@ -55,7 +55,7 @@ jobs:
uses: sbwml/actions@openwrt-build-setup
- name: Install LLVM
- uses: sbwml/actions@install-llvm
+ uses: sbwml/actions@install-llvm-19
- name: Compile OpenWrt
id: compile
diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
new file mode 100644
index 0000000..ddee0e1
--- /dev/null
+++ b/.github/workflows/build-test.yml
@@ -0,0 +1,130 @@
+name: Build Testing
+
+on:
+ workflow_dispatch:
+
+jobs:
+ build:
+ name: Build ${{ matrix.model }}-${{ matrix.tag.version }}
+ runs-on: ubuntu-24.04
+ defaults:
+ run:
+ shell: bash
+ strategy:
+ fail-fast: false
+ matrix:
+ model:
+ - armv8
+ - nanopi-r4s
+ - nanopi-r5s
+ - x86_64
+ - netgear_r8500
+ tag:
+ - type: rc2
+ version: openwrt-23.05
+
+ steps:
+ - name: Setup variables
+ run: |
+ sudo timedatectl set-timezone 'Asia/Shanghai'
+ git config --global user.name 'actions'
+ git config --global user.email 'action@github.com'
+ echo WORKDIR="/builder" >> "$GITHUB_ENV"
+
+ - name: Show system
+ run: |
+ echo -e "\n\e[1;32mCPU:\e[0m"
+ echo "$(grep 'model name' /proc/cpuinfo | head -1 | awk -F ': ' '{print $2}') ($(grep 'cpu MHz' /proc/cpuinfo | head -1 | awk -F ': ' '{print $2}')MHz) x $(grep processor /proc/cpuinfo | wc -l)"
+ echo -e "\n\e[1;32mMemory:\e[0m"
+ free -h
+ echo -e "\n\e[1;32mStorage:\e[0m"
+ df -Th / /mnt
+ echo -e "\n\e[1;32mSystem:\e[0m"
+ lsb_release -a
+ echo -e "\n\e[1;32mKernel:\e[0m"
+ uname -a
+ echo
+
+ - name: Free disk space
+ uses: sbwml/actions@free-disk
+ with:
+ build-mount-path: /builder
+
+ - name: Build System Setup
+ uses: sbwml/actions@openwrt-build-setup
+
+ - name: Install LLVM
+ uses: sbwml/actions@install-llvm-19
+
+ - name: Compile OpenWrt
+ id: compile
+ continue-on-error: true
+ working-directory: /builder
+ env:
+ git_password: ${{ secrets.ftp_password }}
+ run: |
+ [ "${{ matrix.model }}" != "netgear_r8500" ] && export KERNEL_CLANG_LTO=y
+ export TESTING_KERNEL=y BUILD_FAST=y ENABLE_OTA=y ENABLE_BPF=y ENABLE_LTO=y ENABLE_LRNG=y USE_GCC15=y ENABLE_MOLD=y
+ bash <(curl -sS ${{ secrets.script_url_general }}) ${{ matrix.tag.type }} ${{ matrix.model }}
+ cd openwrt
+ tags=$(git describe --abbrev=0 --tags)
+ echo "latest_release=$tags" >>$GITHUB_ENV
+
+ - name: Extensive logs after a failed compilation
+ if: steps.compile.outcome == 'failure'
+ working-directory: /builder
+ run: |
+ cd openwrt
+ make V=s
+
+ - name: Prepare Firmware Files
+ working-directory: /builder
+ run: |
+ mkdir -p rom info
+ if [ "${{ matrix.model }}" = "nanopi-r4s" ]; then
+ cp -a openwrt/bin/targets/rockchip/*/*.img.gz rom/
+ cp -a openwrt/bin/targets/rockchip/*/*-r4s.manifest info/manifest.txt
+ cp -a openwrt/bin/targets/rockchip/*/config.buildinfo info/config.buildinfo
+ cd rom && sha256sum * > ../info/sha256sums.txt
+ elif [ "${{ matrix.model }}" = "nanopi-r5s" ]; then
+ cp -a openwrt/bin/targets/rockchip/*/*.img.gz rom/
+ cp -a openwrt/bin/targets/rockchip/*/*.manifest info/manifest.txt
+ cp -a openwrt/bin/targets/rockchip/*/config.buildinfo info/config.buildinfo
+ cd rom && sha256sum * > ../info/sha256sums.txt
+ elif [ "${{ matrix.model }}" = "x86_64" ]; then
+ cp -a openwrt/bin/targets/x86/*/*-ext4-combined-efi.img.gz rom/
+ cp -a openwrt/bin/targets/x86/*/*-squashfs-combined-efi.img.gz rom/
+ cp -a openwrt/bin/targets/x86/*/*-generic-rootfs.tar.gz rom/
+ cp -a openwrt/bin/targets/x86/*/*-x86-64-generic.manifest info/manifest.txt
+ cp -a openwrt/bin/targets/x86/*/config.buildinfo info/config.buildinfo
+ cd rom && sha256sum * > ../info/sha256sums.txt
+ elif [ "${{ matrix.model }}" = "netgear_r8500" ]; then
+ cp -a openwrt/bin/targets/bcm53xx/generic/*-bcm53xx-generic-netgear_r8500-squashfs.chk rom/
+ cp -a openwrt/bin/targets/bcm53xx/generic/*.manifest info/manifest.txt
+ cp -a openwrt/bin/targets/bcm53xx/generic/config.buildinfo info/config.buildinfo
+ cd rom && sha256sum * > ../info/sha256sums.txt
+ elif [ "${{ matrix.model }}" = "armv8" ]; then
+ tar zcf rom/u-boot-qemu_armv8.tar.gz -C openwrt/bin/targets/armsr/armv8*/ ./u-boot-qemu_armv8
+ cp -a openwrt/bin/targets/armsr/armv8*/*-generic-initramfs-kernel.bin rom/
+ cp -a openwrt/bin/targets/armsr/armv8*/*-generic-kernel.bin rom/
+ cp -a openwrt/bin/targets/armsr/armv8*/*-generic-ext4-combined-efi.img.gz rom/
+ cp -a openwrt/bin/targets/armsr/armv8*/*-generic-squashfs-combined-efi.img.gz rom/
+ cp -a openwrt/bin/targets/armsr/armv8*/*-rootfs.tar.gz rom/
+ cp -a openwrt/bin/targets/armsr/armv8*/*.manifest info/manifest.txt
+ cp -a openwrt/bin/targets/armsr/armv8*/config.buildinfo info/config.buildinfo
+ cd rom && sha256sum * > ../info/sha256sums.txt
+ fi
+ cd ..
+ tar zcf rom/buildinfo_${{ matrix.model }}.tar.gz info
+
+ - name: Create release
+ uses: ncipollo/release-action@v1.14.0
+ with:
+ name: OpenWrt-Test-${{ env.latest_release }}
+ allowUpdates: true
+ prerelease: true
+ tag: test-${{ env.latest_release }}
+ commit: main
+ replacesArtifacts: true
+ token: ${{ secrets.workflow_token }}
+ artifacts: ${{ env.WORKDIR }}/rom/*
diff --git a/README.md b/README.md
index cd82793..9294594 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-
+
OpenWrt for FriendlyElec NanoPi R4S / R5S & X86_64 & Netgear R8500
-
+
@@ -56,6 +56,7 @@
| BBRv3 拥塞控制 | ✅ | LLVM-BPF 支持 | ✅ |
| KVM 虚拟化加速 | ✅ | Shortcut-FE(支持 UDP 入站) | ✅ |
| NGINX & CURL HTTP3/QUIC 支持 | ✅ | LRNG(v54) | ✅ |
+| TCP Brutal 拥塞控制 | ✅ | | |
| 内置插件 | 状态 | 内置插件 | 状态 |
|:------------------------:|:----:|:----------------:|:----:|
@@ -127,7 +128,6 @@
├── 服务
├── PassWall
- ├── ShadowSocksR Plus+
├── HomeProxy
├── qBittorrent
├── MosDNS
@@ -301,26 +301,8 @@ bash -c "$(curl -sS https://r5s.cooluc.com/daed-install.sh)"
------
-## 概览
-
![](https://cdn.cooluc.com/r4s/1.webp)
-![](https://cdn.cooluc.com/r4s/menu.webp)
-
-![](https://cdn.cooluc.com/r4s/23.05.02.webp)
-
-![](https://cdn.cooluc.com/r4s/nanopi-ota.webp)
-
-![](https://cdn.cooluc.com/r4s/firewall.webp)
-
-![](https://cdn.cooluc.com/r4s/4.webp)
-
-![](https://cdn.cooluc.com/r4s/5.webp)
-
-![](https://cdn.cooluc.com/r4s/udp2.webp)
-
-![](https://cdn.cooluc.com/r4s/daed.webp)
-
------
## 开源地址