kiddin9 2 년 전
부모
커밋
4521e41297

+ 24 - 19
.github/workflows/Openwrt-AutoBuild.yml

@@ -62,13 +62,14 @@ jobs:
         echo "UPLOAD_FIRMWARE_TO_COWTRANSFER=${UPLOAD_FIRMWARE_TO_COWTRANSFER}" >> $GITHUB_ENV
         echo "UPLOAD_FIRMWARE_TO_WETRANSFER=${UPLOAD_FIRMWARE_TO_WETRANSFER}" >> $GITHUB_ENV
         sed -i "1a REPO_TOKEN=${{ secrets.REPO_TOKEN }}" ${GITHUB_WORKSPACE}/devices/common/diy.sh
+        sed -i "1a TARGET=${{matrix.target}}" ${GITHUB_WORKSPACE}/devices/common/diy.sh
         if [ ${{matrix.target}} == "x86_64" ]; then
             echo "ARCH=linux/amd64" >> $GITHUB_ENV
             echo "MTARGET=x86_64" >> $GITHUB_ENV
         elif [ ${{matrix.target}} == "x86_generic" ]; then
             echo "ARCH=linux/amd32" >> $GITHUB_ENV
             echo "MTARGET=x86_generic" >> $GITHUB_ENV
-        elif [[ ${{matrix.target}} =~ (armvirt_64|ipq807x|mediatek_mt7622|mediatek_mt7981|mediatek_filogic|bcm27xx_bcm2710|ipq60xx_generic|bcm4908_generic|sunxi_cortexa53) ]]; then
+        elif [[ ${{matrix.target}} =~ (armvirt_64|ipq807x|mediatek_mt7622|mediatek_mt7981|mediatek_gl_mt7981|mediatek_filogic|bcm27xx_bcm2710|ipq60xx_generic|ipq807x_ipq60xx|bcm4908_generic|sunxi_cortexa53) ]]; then
             echo "MTARGET=aarch64_cortex-a53" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} =~ (ramips_mt7621|ramips_mt7620|ramips_mt76x8) ]]; then
             echo "MTARGET=mipsel_24kc" >> $GITHUB_ENV
@@ -122,8 +123,8 @@ jobs:
         sudo -E apt-get -qq autoremove --purge
         sudo -E apt-get -qq clean ) &
         sudo timedatectl set-timezone "$TZ"
-        sudo mkdir -p /workdir
-        sudo chown $USER:$GROUPS /workdir
+        git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
+        git config --global user.name "github-actions[bot]"
     
     - name: Get current date
       id: date
@@ -137,9 +138,20 @@ jobs:
         fi
 
     - name: Clone source code
-      working-directory: /workdir
       run: |
-        if [ ! "${{ env.REPO_BRANCH }}" ]; then
+        if [ "${{matrix.target}}" == "ipq807x_ipq60xx" ]; then
+            git clone https://github.com/gl-inet/gl-infra-builder.git
+            cd gl-infra-builder
+            python3 setup.py -c configs/config-wlan-ap-5.4.yml
+            ln -sf gl-infra-builder/wlan-ap/openwrt ../openwrt
+            cd -
+        elif [ "${{matrix.target}}" == "mediatek_gl_mt7981" ]; then
+            git clone https://github.com/gl-inet/gl-infra-builder.git
+            cd gl-infra-builder
+            python3 setup.py -c configs/config-mt798x-7.6.6.1.yml
+            ln -sf gl-infra-builder/mt7981 ../openwrt
+            cd -
+        elif [ ! "${{ env.REPO_BRANCH }}" ]; then
           REPO_BRANCH="$((curl -gs -H 'Content-Type: application/json' \
            -H "Authorization: Bearer ${{ secrets.REPO_TOKEN }}" \
            -X POST -d '{ "query": "query {repository(owner: \"openwrt\", name: \"openwrt\") {refs(refPrefix: \"refs/tags/\", last: 4, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {edges {node {name}}}}}"}' https://api.github.com/graphql) | jq -r '.data.repository.refs.edges[].node.name' | grep v22 | tail -n 1)"
@@ -147,8 +159,7 @@ jobs:
         else
             git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt
         fi
-        ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
-
+    
     - name: Free up disk space
       env:
         DEBIAN_FRONTEND: noninteractive
@@ -168,6 +179,7 @@ jobs:
         /bin/bash "devices/common/$DIY_SH"
         if [ -f "devices/${{matrix.target}}/$DIY_SH" ]; then
           chmod +x devices/${{matrix.target}}/$DIY_SH
+          echo "/bin/bash devices/${{matrix.target}}/$DIY_SH"
           /bin/bash "devices/${{matrix.target}}/$DIY_SH"
         fi
         cp -Rf ./diy/* ./ || true
@@ -185,8 +197,10 @@ jobs:
       run: |
         cd openwrt
         find "devices/common/patches" -type f ! -name 'china_mirrors.patch' -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%'  | patch -d './' --no-backup-if-mismatch --merge -p1 -E --forward"
+        #git apply devices/common/patches/*.patch
         if [ -n "$(ls -A "devices/${{matrix.target}}/patches" 2>/dev/null)" ]; then
-          find "devices/${{matrix.target}}/patches" -type f -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%'  | patch -d './' --no-backup-if-mismatch --merge -p1 -E --forward"
+          find "devices/${{matrix.target}}/patches" -maxdepth 1 -type f -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%'  | patch -d './' --no-backup-if-mismatch --merge -p1 -E --forward"
+          #git apply devices/${{matrix.target}}/patches/*.patch
         fi
         
     - name: Default PPPOE Setting
@@ -263,25 +277,16 @@ jobs:
         echo "NOTICE=请分配不少于1G的存储容量" >> $GITHUB_ENV
         fi
 
-    - name: Deploy firmware to server
-      uses: easingthemes/ssh-deploy@main
-      if: env.SSH_PRIVATE_KEY && contains(github.event.action, 'toser')
-      with:
-        SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
-        ARGS: "-avzr --exclude="
-        SOURCE: firmware/
-        REMOTE_HOST: op.supes.top
-        REMOTE_USER: root
-        TARGET: "/www/wwwroot/op.supes.top/firmware/"
-
     - name: Deploy imagebuilder to server
       uses: easingthemes/ssh-deploy@main
+      continue-on-error: true
       if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser')
       with:
         SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
         ARGS: "-avzr"
         SOURCE: openwrt/bin/targets
         REMOTE_HOST: op.supes.top
+        REMOTE_PORT: '223'
         REMOTE_USER: root
         TARGET: "/www/wwwroot/op.supes.top/releases/tmp/"
 

+ 15 - 0
.github/workflows/repo-dispatcher.yml

@@ -117,6 +117,16 @@ jobs:
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
           -H "Accept: application/vnd.github.everest-preview+json" \
           -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
+          -d '{"event_type": "mediatek_mt7981 ${{ github.event.inputs.param }}", "client_payload": {"target": "mediatek_mt7981"}}'
+          curl \
+          -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
+          -H "Accept: application/vnd.github.everest-preview+json" \
+          -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
+          -d '{"event_type": "mediatek_gl_mt7981 ${{ github.event.inputs.param }}", "client_payload": {"target": "mediatek_gl_mt7981"}}'
+          curl \
+          -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
+          -H "Accept: application/vnd.github.everest-preview+json" \
+          -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
           -d '{"event_type": "ramips_mt7621 ${{ github.event.inputs.param }}", "client_payload": {"target": "ramips_mt7621"}}'
           curl \
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
@@ -157,6 +167,11 @@ jobs:
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
           -H "Accept: application/vnd.github.everest-preview+json" \
           -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
+          -d '{"event_type": "ipq807x_ipq60xx ${{ github.event.inputs.param }}", "client_payload": {"target": "ipq807x_ipq60xx"}}'
+          curl \
+          -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
+          -H "Accept: application/vnd.github.everest-preview+json" \
+          -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
           -d '{"event_type": "meson_meson8b ${{ github.event.inputs.param }}", "client_payload": {"target": "meson_meson8b"}}'
           curl \
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \

+ 15 - 17
devices/common/diy.sh

@@ -1,22 +1,29 @@
 #!/bin/bash
 #=================================================
 shopt -s extglob
+
+[ ! -f feeds.conf ] && {
+sed -i '$a src-git kiddin9 https://github.com/kiddin9/openwrt-packages.git;master' feeds.conf.default
+}
+
+sed -i '/	refresh_config();/d' scripts/feeds
+
+./scripts/feeds update -a
+./scripts/feeds install -a -p kiddin9 -f
+./scripts/feeds install -a
+
 kernel_v="$(cat include/kernel-5.10 | grep LINUX_KERNEL_HASH-* | cut -f 2 -d - | cut -f 1 -d ' ')"
 echo "KERNEL=${kernel_v}" >> $GITHUB_ENV || true
 sed -i "s?targets/%S/packages?targets/%S/$kernel_v?" include/feeds.mk
 
 echo "$(date +"%s")" >version.date
 sed -i '/$(curdir)\/compile:/c\$(curdir)/compile: package/opkg/host/compile' package/Makefile
+sed -i 's/$(TARGET_DIR)) install/$(TARGET_DIR)) install --force-overwrite --force-depends/' package/Makefile
 sed -i "s/DEFAULT_PACKAGES:=/DEFAULT_PACKAGES:=luci-app-advanced luci-app-firewall luci-app-gpsysupgrade luci-app-opkg luci-app-upnp luci-app-autoreboot \
 luci-app-wizard luci-base luci-compat luci-lib-ipkg luci-lib-fs \
 coremark wget-ssl curl htop nano zram-swap kmod-lib-zstd kmod-tcp-bbr bash openssh-sftp-server block-mount resolveip ds-lite swconfig /" include/target.mk
 sed -i "s/procd-ujail//" include/target.mk
 
-sed -i '/	refresh_config();/d' scripts/feeds
-[ ! -f feeds.conf ] && {
-sed -i '$a src-git kiddin9 https://github.com/kiddin9/openwrt-packages.git;master' feeds.conf.default
-}
-
 sed -i "s/^.*vermagic$/\techo '1' > \$(LINUX_DIR)\/.vermagic/" include/kernel-defaults.mk
 
 status=$(curl -H "Authorization: token $REPO_TOKEN" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
@@ -25,27 +32,18 @@ while [ "$status" == "in_progress" ];do
 	status=$(curl -H "Authorization: token $REPO_TOKEN" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
 done
 
-./scripts/feeds update -a
-rm -rf feeds/kiddin9/.diy
-./scripts/feeds install -a -p kiddin9 -f
-./scripts/feeds install -a
-
 mv -f feeds/kiddin9/{r81*,igb-intel} tmp/
 
 sed -i "s/192.168.1/10.0.0/" package/feeds/kiddin9/base-files/files/bin/config_generate
 
 (
-svn export --force https://github.com/coolsnowwolf/lede/trunk/tools/upx tools/upx
-svn export --force https://github.com/coolsnowwolf/lede/trunk/tools/ucl tools/ucl
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/generic/hack-5.10 target/linux/generic/hack-5.10
 rm -rf target/linux/generic/hack-5.10/{220-gc_sections*,781-dsa-register*,780-drivers-net*,996-fs-ntfs3*}
 ) &
 
 sed -i "/BuildPackage,miniupnpd-iptables/d" feeds/packages/net/miniupnpd/Makefile
-sed -i 's?zstd$?zstd ucl upx\n$(curdir)/upx/compile := $(curdir)/ucl/compile?g' tools/Makefile
 sed -i 's/\/cgi-bin\/\(luci\|cgi-\)/\/\1/g' `find package/feeds/kiddin9/luci-*/ -name "*.lua" -or -name "*.htm*" -or -name "*.js"` &
 sed -i 's/Os/O2/g' include/target.mk
-sed -i 's/$(TARGET_DIR)) install/$(TARGET_DIR)) install --force-overwrite --force-depends/' package/Makefile
 sed -i "/mediaurlbase/d" package/feeds/*/luci-theme*/root/etc/uci-defaults/*
 sed -i 's/=bbr/=cubic/' package/kernel/linux/files/sysctl-tcp-bbr.conf
 
@@ -54,9 +52,6 @@ sed -i 's/max_requests 3/max_requests 20/g' package/network/services/uhttpd/file
 #rm -rf ./feeds/packages/lang/{golang,node}
 sed -i "s/tty\(0\|1\)::askfirst/tty\1::respawn/g" target/linux/*/base-files/etc/inittab
 
-sed -i '$a CONFIG_ACPI=y\nCONFIG_X86_ACPI_CPUFREQ=y\nCONFIG_NR_CPUS=128\nCONFIG_FAT_DEFAULT_IOCHARSET="utf8"\nCONFIG_CRYPTO_CHACHA20_NEON=y\n \
-CONFIG_CRYPTO_CHACHA20POLY1305=y\nCONFIG_BINFMT_MISC=y' `find target/linux -path "target/linux/*/config-*"`
-
 sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/2e6d19ee32399e37c7545aefc57d41541a406d55.patch | patch -d './' -p1 --forward" || true
 
 sed -i '$a  \
@@ -64,6 +59,9 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y \
 CONFIG_CPU_FREQ_GOV_USERSPACE=y \
 CONFIG_CPU_FREQ_GOV_ONDEMAND=y \
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y \
+CONFIG_CRYPTO_CHACHA20_NEON=y \
+CONFIG_CRYPTO_CHACHA20POLY1305=y \
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8" \
 ' `find target/linux -path "target/linux/*/config-*"`
 
 date=`date +%m.%d.%Y`

+ 1 - 0
devices/ipq40xx_generic/.config

@@ -9,6 +9,7 @@ CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_p2w_r619ac-64m=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_zte_mf286d=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-b1300=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-a1300=y
+CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-s1300-emmc=y
 #CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea6350v3=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-ap1300=y
 #CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea8300=y

+ 29 - 0
devices/mediatek_gl_mt7981/.config

@@ -0,0 +1,29 @@
+
+CONFIG_TARGET_mediatek_gl=y
+CONFIG_TARGET_mediatek_gl_mt7981=y
+CONFIG_TARGET_MULTI_PROFILE=y
+CONFIG_TARGET_DEVICE_mediatek_gl_mt7981_DEVICE_glinet_gl-mt2500=y
+
+CONFIG_PACKAGE_kmod-nft-fullcone=n
+CONFIG_PACKAGE_kmod-ax25=n
+CONFIG_PACKAGE_kmod-fast-classifier=n
+CONFIG_PACKAGE_kmod-shortcut-fe=n
+CONFIG_PACKAGE_kmod-shortcut-fe-cm=n
+CONFIG_PACKAGE_kmod-mpls=n
+CONFIG_PACKAGE_kmod-netem=n
+CONFIG_PACKAGE_kmod-sched=n
+CONFIG_PACKAGE_kmod-sched-act-vlan=n
+CONFIG_PACKAGE_kmod-sched-bpf=n
+CONFIG_PACKAGE_kmod-sched-cake=n
+CONFIG_PACKAGE_kmod-sched-connmark=n
+CONFIG_PACKAGE_kmod-sched-core=n
+CONFIG_PACKAGE_kmod-sched-ctinfo=n
+CONFIG_PACKAGE_kmod-sched-flower=n
+CONFIG_PACKAGE_kmod-sched-ipset=n
+CONFIG_PACKAGE_kmod-sched-mqprio=n
+CONFIG_PACKAGE_dockerd=n
+
+CONFIG_PACKAGE_luci-ssl=y # uhttpd服务
+
+
+

+ 18 - 0
devices/mediatek_gl_mt7981/diy.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+shopt -s extglob
+
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+
+kernel_v="$(cat include/kernel-version.mk | grep LINUX_KERNEL_HASH-5.* | cut -f 2 -d - | cut -f 1 -d ' ')"
+echo "KERNEL=${kernel_v}" >> $GITHUB_ENV || true
+sed -i "s?targets/%S/.*'?targets/%S/$kernel_v'?" include/feeds.mk
+
+rm -rf package/feeds/kiddin9/{firewall,rtl88x2bu,base-files,netifd}
+
+rm -rf devices/common/patches/{glinet,imagebuilder.patch,iptables.patch,targets.patch,kernel-defaults.patch,disable_flock.patch}
+
+sed -i "s/BOARD:=mediatek$/BOARD:=mediatek_gl/" target/linux/mediatek/Makefile
+
+mv -f target/linux/mediatek target/linux/mediatek_gl
+

+ 7 - 0
devices/mediatek_gl_mt7981/feeds.conf

@@ -0,0 +1,7 @@
+src-git packages https://git.openwrt.org/feed/packages.git;openwrt-21.02
+src-git luci https://git.openwrt.org/project/luci.git;openwrt-21.02
+src-git routing https://git.openwrt.org/feed/routing.git;openwrt-21.02
+src-git kiddin9 https://github.com/kiddin9/openwrt-packages.git;master
+src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds.git^df3fc79
+src-git gl_feed_common https://github.com/gl-inet/gl-feeds.git;common
+src-git gl_feed_21_02 https://github.com/gl-inet/gl-feeds.git^032786d5ff300ebdd83fb1b5fec5344b3da04953

+ 10 - 0
devices/mediatek_gl_mt7981/patches/0999-depends.patch

@@ -0,0 +1,10 @@
+--- a/target/linux/mediatek_gl/image/mt7981.mk
++++ b/target/linux/mediatek_gl/image/mt7981.mk
+@@ -219,6 +219,6 @@
+   SUPPORTED_DEVICES := glinet,mt2500-emmc
+   DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
+-  DEVICE_PACKAGES := mkf2fs kmod-mmc kmod-fs-f2fs gdisk
++  DEVICE_PACKAGES := mkf2fs kmod-mmc kmod-fs-f2fs gdisk wpad-basic-wolfssl mii_mgr losetup e2fsprogs blockdev blkid kmod-nls-cp437 regs switch mtk_factory_rw ethtool kmod-mediatek_hnat mtkhnat_util mmc-utils
+   IMAGE/sysupgrade.bin := sysupgrade-tar | append-gl-metadata
+ endef
+ TARGET_DEVICES += glinet_gl-mt2500

+ 108 - 0
devices/mediatek_gl_mt7981/patches/base-files.patch

@@ -0,0 +1,108 @@
+--- a/package/base-files/files/etc/rc.common
++++ b/package/base-files/files/etc/rc.common
+@@ -28,7 +28,10 @@ restart() {
+ }
+ 
+ boot() {
+-	start "$@"
++	name="$(basename "${initscript}")"
++	name="${name##S[0-9][0-9]}"
++	[[ "$(uci -q get $name.$name[0].enabled)" == 0 || "$(uci -q get $name.config.enabled)" == 0 || "$(uci -q get $name.$name.enabled)" == 0 || "$(uci -q get $name.main.enabled)" == 0 || "$(uci -q get $name.$name[0].enable)" == 0 || "$(uci -q get $name.config.enable)" == 0 || "$(uci -q get $name.$name.enable)" == 0 || "$(uci -q get $name.main.enable)" == 0 ]] || start "$@";
++	
+ }
+ 
+ shutdown() {
+
+--- a/package/base-files/files/lib/functions.sh
++++ b/package/base-files/files/lib/functions.sh
+@@ -283,10 +283,13 @@ default_postinst() {
+ 			if [ "$PKG_UPGRADE" != "1" ]; then
+ 				"$i" enable
+ 			fi
+-			"$i" start
++			if "$i" enabled; then
++				"$i" start
++			fi
+ 		fi
+ 	done
+ 
++	[ -x /etc/init.d/ucitrack ] && /etc/init.d/ucitrack reload
+ 	return $ret
+ }
+ 
+
+--- a/package/base-files/files/etc/shinit
++++ b/package/base-files/files/etc/shinit
+@@ -2,6 +2,8 @@
+ [ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
+ 
+ alias ll='ls -alF --color=auto'
++alias reboot='(/bin/busybox reboot &);sleep 3;/bin/busybox reboot -f'
++PS1='\[\e[32m\][\[\e[m\]\[\e[31m\]\u\[\e[m\]\[\e[33m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\]:\[\e[m\]\[\e[32m\]\[\e[1;32m\]\@\[\e[36m\] \w\[\e[m\]\[\e[32m\]]\[\e[0m\] \$\[\e[m\] '
+ 
+ [ -z "$KSH_VERSION" -o \! -s /etc/mkshrc ] || . /etc/mkshrc
+
+--- a/package/base-files/files/sbin/sysupgrade
++++ b/package/base-files/files/sbin/sysupgrade
+@@ -231,24 +231,15 @@ do_save_conffiles() {
+ 	ask_bool 0 "Edit config file list" && vi "$CONFFILES"
+ 
+ 	if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then
+-		echo "${INSTALLED_PACKAGES}" >> "$CONFFILES"
+-		mkdir -p "$ETCBACKUP_DIR"
+-		# Avoid touching filesystem on each backup
+-		RAMFS="$(mktemp -d -t sysupgrade.XXXXXX)"
+-		mkdir -p "$RAMFS/upper" "$RAMFS/work"
+-		mount -t overlay overlay -o lowerdir=$ETCBACKUP_DIR,upperdir=$RAMFS/upper,workdir=$RAMFS/work $ETCBACKUP_DIR &&
+-			UMOUNT_ETCBACKUP_DIR=1 || {
+-				echo "Cannot mount '$ETCBACKUP_DIR' as tmpfs to avoid touching disk while saving the list of installed packages." >&2
+-				ask_bool 0 "Abort" && exit
+-			}
+-
+-		# Format: pkg-name<TAB>{rom,overlay,unkown}
+-		# rom is used for pkgs in /rom, even if updated later
+-		find /usr/lib/opkg/info -name "*.control" \( \
+-			\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
+-			\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
+-			\( -exec echo {} unknown \; \) \
+-			\) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES}
++		. /etc/profile.d/opkg.sh && opkg save
++		[ -f /rom/etc/uci-defaults/zz-asu-defaults ] && {
++		 cp -f /rom/etc/uci-defaults/zz-asu-defaults /etc/uci-defaults/zz-asu-defaults
++		 echo "/etc/uci-defaults/zz-asu-defaults" >> $CONFFILES
++		}
++	else
++		uci -q del opkg.auto
++		uci -q del opkg.custom
++		uci commit opkg
+ 	fi
+ 
+ 	v "Saving config files..."
+
+--- a/package/base-files/files/etc/profile
++++ b/package/base-files/files/etc/profile
+@@ -22,7 +23,11 @@ esac
+ 
+ [ -n "$FAILSAFE" ] || {
+ 	for FILE in /etc/profile.d/*.sh; do
+-		[ -e "$FILE" ] && . "$FILE"
++		if [ "$FILE" == "/etc/profile.d/sysinfo.sh" ]; then
++		 [ "$(which bash)" ] && env -i bash "$FILE"
++		else
++		 [ -e "$FILE" ] && . "$FILE"
++		fi
+ 	done
+ 	unset FILE
+ }
+
+--- a/package/base-files/files/lib/preinit/02_sysinfo
++++ b/package/base-files/files/lib/preinit/02_sysinfo
+@@ -5,6 +5,7 @@ do_sysinfo_generic() {
+ 		echo "$(strings /proc/device-tree/compatible | head -1)" > /tmp/sysinfo/board_name
+ 	[ ! -e /tmp/sysinfo/model -a -e /proc/device-tree/model ] && \
+ 		echo "$(cat /proc/device-tree/model)" > /tmp/sysinfo/model
++	sed -i "s/friendlyelec/friendlyarm/" /tmp/sysinfo/board_name
+ }
+ 
+ boot_hook_add preinit_main do_sysinfo_generic
+

+ 122 - 0
devices/mediatek_gl_mt7981/patches/imagebuilder.patch

@@ -0,0 +1,122 @@
+--- a/target/imagebuilder/Makefile
++++ b/target/imagebuilder/Makefile
+@@ -38,13 +38,15 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean
+ 		./files/repositories.conf \
+ 		$(TMP_DIR)/.targetinfo \
+ 		$(TMP_DIR)/.packageinfo \
+-		$(PKG_BUILD_DIR)/
++		$(TOPDIR)/files \
++		$(PKG_BUILD_DIR)/ || true
+ 
+-ifeq ($(CONFIG_IB_STANDALONE),)
+ 	echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
+ 	$(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories.conf)
+ 	$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
+-endif
++	$(SED) 's/^src\/gz \(.*\) https.*top\/\(packages.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/\2/' $(PKG_BUILD_DIR)/repositories.conf
++	$(SED) 's/^src\/gz \(.*\) https.*top\/\(targets.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/releases\/\2/' $(PKG_BUILD_DIR)/repositories.conf
++	$(SED) 's/\/kiddin9//' $(PKG_BUILD_DIR)/repositories.conf
+ 
+ 	$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
+ 	# create an empty package index so `opkg` doesn't report an error
+
+--- a/target/imagebuilder/files/Makefile
++++ b/target/imagebuilder/files/Makefile
+@@ -115,17 +115,32 @@ BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(fi
+ PACKAGES:=
+ 
+ _call_image: staging_dir/host/.prereq-build
++	[ "$(DATE)" ] && DATE="$(DATE)" || DATE="`date +'%m.%d.%Y'`"; \
++	mkdir -p $(USER_FILES)/etc/uci-defaults || true; \
++	echo -e " \
++	sed -i \"s/[0-9]\+.[0-9]\+.[0-9]\{4\}/$$DATE/\" /etc/openwrt_release \n \
++	sed -i \"s/DISTRIB_ID=.*/DISTRIB_ID='$(PARTSIZE)'/\" /etc/openwrt_release \n \
++	sed -i \"s/OpenWrt .* by/OpenWrt $$DATE by/\" /etc/banner \n \
++	echo \"$$DATE\" >/etc/openwrt_version \n \
++	"> $(USER_FILES)/etc/uci-defaults/99-version; \
+ 	echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'
+ 	echo 'Packages: $(BUILD_PACKAGES)'
+ 	echo
+ 	rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
+ 	mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
++	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban) || "$(TARGETID)" == "ramips/mt76x8" ]]; then \
++		echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(TOPDIR)/repositories.conf; \
++	else \
++		sed -i "/smflash/d" $(TOPDIR)/repositories.conf; \
++	fi
+ 	$(MAKE) package_reload
+ 	$(MAKE) package_install
+ 	$(MAKE) -s prepare_rootfs
+ 	$(MAKE) -s build_image
+ 	$(MAKE) -s json_overview_image_info
+ 	$(MAKE) -s checksum
++	rm -rf $(KERNEL_BUILD_DIR)/tmp
++	rm -rf $(KERNEL_BUILD_DIR)/root.*
+ 
+ _call_manifest: FORCE
+ 	rm -rf $(TARGET_DIR)
+@@ -166,7 +181,14 @@ package_install: FORCE
+ 	@echo Installing packages...
+ 	$(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk))
+ 	$(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
+-	$(OPKG) install $(BUILD_PACKAGES)
++	for p in $(BUILD_PACKAGES); do \
++		if [[ $$p == luci-app-* && "`$(OPKG) list | grep luci-i18n-\`echo $$p | cut -d - -f 3-\`-zh-cn`" ]]; then \
++			packages+="luci-i18n-`echo $$p | cut -d - -f 3-`-zh-cn "; \
++		fi \
++	done; \
++	$(OPKG) install --force-overwrite --force-checksum --force-depends $(BUILD_PACKAGES) luci-i18n-base-zh-cn luci-i18n-base-en; \
++	$(OPKG) install $$packages || true
++	$(OPKG) install --force-overwrite --force-checksum --force-depends --force-maintainer --force-reinstall my-default-settings
+ 
+ prepare_rootfs: FORCE
+ 	@echo
+@@ -180,12 +202,15 @@ prepare_rootfs: FORCE
+ 		) \
+ 	)
+ 	$(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
++	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban) || "$(TARGETID)" == "ramips/mt76x8" ]]; then \
++		echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(BUILD_DIR)/root-ramips/etc/opkg/distfeeds.conf; \
++	fi
+ 
+ build_image: FORCE
+ 	@echo
+ 	@echo Building images...
+ 	rm -rf $(BUILD_DIR)/json_info_files/
+-	$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
++	nice -n 19 $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
+ 		$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
+ 
+ $(BIN_DIR)/profiles.json: FORCE
+
+--- a/scripts/json_overview_image_info.py
++++ b/scripts/json_overview_image_info.py
+@@ -47,7 +47,7 @@ def get_initial_output(image_info):
+ 
+ 
+ if output:
+-    default_packages, output["arch_packages"] = run(
++    default_packages, output["arch_packages"], output["kernel_version"], output["initramfs"] = run(
+         [
+             "make",
+             "--no-print-directory",
+@@ -55,6 +55,8 @@ def get_initial_output(image_info):
+             "target/linux/",
+             "val.DEFAULT_PACKAGES",
+             "val.ARCH_PACKAGES",
++            "val.LINUX_VERSION",
++            "val.KERNEL_INITRAMFS",
+         ],
+         stdout=PIPE,
+         stderr=PIPE,
+
+--- a/rules.mk
++++ b/rules.mk
+@@ -59,6 +59,7 @@ _SINGLE=export MAKEFLAGS=$(space);
+ CFLAGS:=
+ ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
+ ARCH_PACKAGES:=$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES))
++KERNEL_INITRAMFS:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_INITRAMFS))
+ BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
+ SUBTARGET:=$(call qstrip,$(CONFIG_TARGET_SUBTARGET))
+ TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))

+ 36 - 0
devices/mediatek_gl_mt7981/patches/targets.patch

@@ -0,0 +1,36 @@
+--- a/include/target.mk
++++ b/include/target.mk
+@@ -44,9 +44,11 @@
+ # For router targets
+ DEFAULT_PACKAGES.router:=\
+-	dnsmasq \
++	dnsmasq-full \
+ 	firewall \
+ 	ip6tables \
+ 	iptables \
+ 	kmod-ipt-offload \
++	kmod-ipt-nat \
++	kmod-ipt-nat6 \
+ 	odhcp6c \
+ 	odhcpd-ipv6only \
+@@ -83,4 +85,20 @@
+     -include ./$(SUBTARGET)/target.mk
+   endif
++endif
++
++ifneq ($(CONFIG_SMALL_FLASH),)
++  DEFAULT_PACKAGES+=-coremark -htop -bash -openssh-sftp-server
++endif
++
++ifeq ($(ARCH),arm)
++  DEFAULT_PACKAGES+=autocore-arm luci-app-cpufreq
++endif
++
++ifeq ($(ARCH),aarch64)
++  DEFAULT_PACKAGES+=autocore-arm luci-app-cpufreq
++endif
++
++ifneq ($(CONFIG_USB_SUPPORT),)
++  DEFAULT_PACKAGES+=automount
+ endif
+ 

+ 1 - 1
devices/mediatek_mt7981/diy.sh

@@ -8,6 +8,6 @@ kernel_v="$(cat include/kernel-version.mk | grep LINUX_KERNEL_HASH-5.* | cut -f
 echo "KERNEL=${kernel_v}" >> $GITHUB_ENV || true
 sed -i "s?targets/%S/.*'?targets/%S/$kernel_v'?" include/feeds.mk
 
-rm -rf devices/common/patches/{imagebuilder.patch,iptables.patch,kernel-defaults.patch,targets.patch}
+rm -rf devices/common/patches/{glinet,imagebuilder.patch,iptables.patch,kernel-defaults.patch,targets.patch}
 
 

+ 1 - 2
devices/ramips_mt7621/.config

@@ -8,7 +8,6 @@ CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-3g=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-3-pro=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-4=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-4a-gigabit=y
-CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-4a-gigabit-v2=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_redmi-router-ac2100=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-ac2100=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaoyu_xy-c5=y
@@ -30,7 +29,7 @@ CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_netgear_wndr3700-v5=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_oraybox_x3a=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_thunder_timecloud=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_ubnt_edgerouter-x-sfp=y
-CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_edgerouter-x=y
+CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_ubnt_edgerouter-x=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_mi-router-3g-v2=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_youhua_wr1200js=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_youku_yk-l2=y

+ 0 - 196
devices/ramips_mt7621/patches/mi-4a-gigabit-v2.patch

@@ -1,196 +0,0 @@
---- /dev/null
-+++ b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-gigabit-v2.dts
-@@ -0,0 +1,157 @@
-+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-+
-+#include "mt7621.dtsi"
-+
-+#include <dt-bindings/gpio/gpio.h>
-+#include <dt-bindings/input/input.h>
-+
-+/ {
-+	compatible = "xiaomi,mi-router-4a-gigabit-v2", "mediatek,mt7621-soc";
-+	model = "Xiaomi Mi Router 4A Gigabit Edition V2";
-+
-+	aliases {
-+		led-boot = &led_status_yellow;
-+		led-failsafe = &led_status_yellow;
-+		led-running = &led_status_blue;
-+		led-upgrade = &led_status_yellow;
-+		label-mac-device = &wan;
-+	};
-+
-+	chosen {
-+		bootargs = "console=ttyS0,115200n8";
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+
-+		led_status_blue: status_blue {
-+			label = "blue:status";
-+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led_status_yellow: status_yellow {
-+			label = "yellow:status";
-+			gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
-+		};
-+	};
-+
-+	keys {
-+		compatible = "gpio-keys";
-+
-+		reset {
-+			label = "reset";
-+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
-+			linux,code = <KEY_RESTART>;
-+		};
-+	};
-+};
-+
-+&spi0 {
-+        status = "okay";
-+
-+        flash@0 {
-+                compatible = "jedec,spi-nor";
-+                reg = <0>;
-+                spi-max-frequency = <50000000>;
-+		m25p,fast-read;
-+
-+                partitions {
-+                        compatible = "fixed-partitions";
-+                        #address-cells = <1>;
-+                        #size-cells = <1>;
-+
-+                        partition@0 {
-+                                label = "u-boot";
-+                                reg = <0x0 0x30000>;
-+                                read-only;
-+                        };
-+
-+                        partition@30000 {
-+                                label = "u-boot-env";
-+                                reg = <0x30000 0x10000>;
-+                                read-only;
-+                        };
-+
-+                        factory: partition@40000 {
-+                                label = "factory";
-+                                reg = <0x40000 0x10000>;
-+                                read-only;
-+                        };
-+
-+                        partition@50000 {
-+                                compatible = "denx,uimage";
-+                                label = "firmware";
-+                                reg = <0x50000 0xfb0000>;
-+                        };
-+                };
-+        };
-+};
-+
-+&pcie {
-+	status = "okay";
-+};
-+
-+&pcie0 {
-+	wifi@0,0 {
-+		compatible = "pci14c3,7603";
-+		reg = <0x0000 0 0 0 0>;
-+		mediatek,mtd-eeprom = <&factory 0x0000>;
-+		ieee80211-freq-limit = <2400000 2500000>;
-+	};
-+};
-+
-+&pcie1 {
-+	wifi@0,0 {
-+		compatible = "pci14c3,7663";
-+		reg = <0x0000 0 0 0 0>;
-+		mediatek,mtd-eeprom = <&factory 0x8000>;
-+		ieee80211-freq-limit = <5000000 6000000>;
-+	};
-+};
-+
-+&gmac0 {
-+	nvmem-cells = <&macaddr_factory_e000>;
-+	nvmem-cell-names = "mac-address";
-+};
-+
-+&switch0 {
-+	ports {
-+		port@1 {
-+			status = "okay";
-+			label = "lan1";
-+		};
-+
-+		port@2 {
-+			status = "okay";
-+			label = "lan2";
-+		};
-+
-+		wan: port@3 {
-+			status = "okay";
-+			label = "wan";
-+			nvmem-cells = <&macaddr_factory_e006>;
-+			nvmem-cell-names = "mac-address";
-+		};
-+	};
-+};
-+
-+&state_default {
-+	gpio {
-+		groups = "jtag", "uart2", "uart3", "wdt";
-+		function = "gpio";
-+	};
-+};
-+
-+&factory {
-+	compatible = "nvmem-cells";
-+	#address-cells = <1>;
-+	#size-cells = <1>;
-+
-+	macaddr_factory_e000: macaddr@e000 {
-+		reg = <0xe000 0x6>;
-+	};
-+
-+	macaddr_factory_e006: macaddr@e006 {
-+		reg = <0xe006 0x6>;
-+	};
-+};
-diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
-index 795f567c2bdb..40b56c58bb74 100644
---- a/target/linux/ramips/image/mt7621.mk
-+++ b/target/linux/ramips/image/mt7621.mk
-@@ -1770,6 +1770,17 @@ define Device/xiaomi_mi-router-4a-gigabit
- endef
- TARGET_DEVICES += xiaomi_mi-router-4a-gigabit
- 
-+define Device/xiaomi_mi-router-4a-gigabit-v2
-+  $(Device/dsa-migration)
-+  $(Device/uimage-lzma-loader)
-+  IMAGE_SIZE := 16064k
-+  DEVICE_VENDOR := Xiaomi
-+  DEVICE_MODEL := Mi Router 4A
-+  DEVICE_VARIANT := Gigabit Edition V2
-+  DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap
-+endef
-+TARGET_DEVICES += xiaomi_mi-router-4a-gigabit-v2
-+
- define Device/xiaomi_mi-router-ac2100
-   $(Device/xiaomi_nand_separate)
-   DEVICE_MODEL := Mi Router AC2100
-diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
-index dab53124c6ef..51d7af4eb787 100644
---- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
-+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
-@@ -38,7 +38,8 @@ ramips_setup_interfaces()
- 	xiaomi,mi-router-3g|\
- 	xiaomi,mi-router-3g-v2|\
- 	xiaomi,mi-router-4|\
--	xiaomi,mi-router-4a-gigabit)
-+	xiaomi,mi-router-4a-gigabit|\
-+	xiaomi,mi-router-4a-gigabit-v2)
- 		ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
- 		;;
- 	beeline,smartbox-turbo-plus)

+ 12 - 0
devices/ramips_mt76x8/patches/hc5611.patch

@@ -117,6 +117,18 @@ index 38ff38bac5fea..d85cdf3db7fac 100644
  	zyxel,keenetic-extra-ii)
  		wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1)
  		;;
++	hiwifi,hc5611|\
+ 	hiwifi,hc5661a|\
+ 	hiwifi,hc5761a|\
+ 	hiwifi,hc5861b)
+diff --git a/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+index b8f8faee9ca28..c9e205a0fc143 100644
+--- a/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
++++ b/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+@@ -10,6 +10,7 @@ PHYNBR=${DEVPATH##*/phy}
+ board=$(board_name)
+ 
+ case "$board" in
 +	hiwifi,hc5611|\
  	hiwifi,hc5661a|\
  	hiwifi,hc5761a|\

+ 1 - 1
devices/rockchip_armv8/diy.sh

@@ -25,7 +25,7 @@ rm -rf target/linux/rockchip/armv8/base-files/etc/uci-defaults/13_opkg_update
 
 sed -i -e 's,kmod-r8168,kmod-r8169,g' target/linux/rockchip/image/armv8.mk
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-drm-rockchip kmod-gpu-lima/' target/linux/rockchip/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-drm-rockchip/' target/linux/rockchip/Makefile
 
 echo '
 CONFIG_SENSORS_PWM_FAN=y

+ 62 - 10
devices/rockchip_armv8/patches/r6s.patch

@@ -1,8 +1,17 @@
 --- a/target/linux/rockchip/image/armv8.mk
 +++ b/target/linux/rockchip/image/armv8.mk
-@@ -52,4 +52,13 @@
+@@ -52,4 +52,22 @@
  TARGET_DEVICES += friendlyarm_nanopi-r2s
  
++define Device/friendlyarm_nanopi-r5c
++  DEVICE_VENDOR := FriendlyARM
++  DEVICE_MODEL := NanoPi R5C
++  SOC := rk3328
++  DEVICE_PACKAGES := -luci-app-gpsysupgrade
++  DEVICE_DTS = rockchip/rk3328-nanopi-r2s
++endef
++TARGET_DEVICES += friendlyarm_nanopi-r5c
++
 +define Device/friendlyarm_nanopi-r6s
 +  DEVICE_VENDOR := FriendlyARM
 +  DEVICE_MODEL := NanoPi R6S
@@ -17,7 +26,15 @@
 
 --- a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
 +++ b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
-@@ -32,6 +32,9 @@ rockchip_setup_interfaces()
+@@ -14,6 +14,7 @@ rockchip_setup_interfaces()
+ 	friendlyarm,nanopi-r2s|\
+ 	friendlyarm,nanopi-r4s|\
+ 	friendlyarm,nanopi-r4se|\
++	friendlyarm,nanopi-r5c|\
+ 	sharevdi,guangmiao-g4c|\
+ 	xunlong,orangepi-r1-plus|\
+ 	xunlong,orangepi-r1-plus-lts)
+@@ -33,6 +34,9 @@ rockchip_setup_interfaces()
  	friendlyarm,nanopi-r5s)
  		ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
  		;;
@@ -27,7 +44,7 @@
  	*)
  		ucidef_set_interface_lan 'eth0'
  		;;
-@@ -45,7 +48,7 @@ generate_mac_from_mmc_cid()
+@@ -46,10 +50,10 @@ generate_mac_from_mmc_cid()
  	echo "$(macaddr_unsetbit_mc "$(macaddr_setbit_la "${mac_base}")")"
  }
  
@@ -35,8 +52,12 @@
 +nanopi_get_mac()
  {
  	local interface=$1
- 	local eeprom_path="/sys/bus/i2c/devices/2-0051/eeprom"
-@@ -88,8 +91,12 @@ rockchip_setup_macs()
+-	local eeprom_path="/sys/bus/i2c/devices/2-0051/eeprom"
++	local eeprom_path="/sys/bus/i2c/devices/$2/eeprom"
+ 	local address
+ 
+ 	if [ -f "$eeprom_path" ]; then
+@@ -90,8 +94,12 @@ rockchip_setup_macs()
  		;;
  	friendlyarm,nanopi-r4s|\
  	friendlyarm,nanopi-r4se)
@@ -54,9 +75,15 @@
 
 --- a/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds
 +++ a/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds
-@@ -24,4 +24,9 @@
- 	ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth1"
+@@ -30,6 +30,16 @@ friendlyarm,nanopi-r5s)
+ hinlink,opc-h68k)
+ 	ucidef_set_led_netdev "wan" "WAN" "blue:net" "eth0"
  	;;
++friendlyarm,nanopi-r5c)
++	ucidef_set_led_netdev "wan" "WAN" "wan_led" "eth0" "link"
++	ucidef_set_led_netdev "lan1" "LAN1" "lan1_led" "eth1" "link"
++	ucidef_set_led_netdev "lan2" "LAN2" "lan2_led" "wlan0" "link"
++	;;
 +friendlyarm,nanopi-r6s)
 +	ucidef_set_led_netdev "wan" "WAN" "wan_led" "eth2" "link"
 +	ucidef_set_led_netdev "lan1" "LAN1" "lan1_led" "eth1" "link"
@@ -64,12 +91,24 @@
 +	;;
  esac
  
+ board_config_flush
 
 --- a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
 +++ a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
-@@ -43,4 +43,16 @@
- 	set_interface_core 20 "eth1"
+@@ -51,5 +51,27 @@ friendlyarm,nanopi-r5s)
+ 	set_interface_core 2 "eth1"
+ 	set_interface_core 4 "eth2"
  	;;
++friendlyarm,nanopi-r5c)
++	set_interface_core 2 "eth0-0"
++	set_interface_core 2 "eth0-16"
++	set_interface_core 2 "eth0-18"
++	echo d > /sys/class/net/eth0/queues/rx-0/rps_cpus
++	set_interface_core 4 "eth1-0"
++	set_interface_core 4 "eth1-16"
++	set_interface_core 4 "eth1-18"
++	echo b > /sys/class/net/eth1/queues/rx-0/rps_cpus
++	;;
 +friendlyarm,nanopi-r6s)
 +	set_interface_core 2 "eth0"
 +	echo 3e > /sys/class/net/eth0/queues/rx-0/rps_cpus
@@ -83,6 +122,7 @@
 +	echo fe > /sys/class/net/eth2/queues/rx-0/rps_cpus
 +	;;
  esac
+ 
 
 --- a/target/linux/rockchip/image/Makefile
 +++ b/target/linux/rockchip/image/Makefile
@@ -90,6 +130,19 @@
  
  include $(SUBTARGET).mk
  
++define Image/Build
++	if [ $(PROFILE_SANITIZED) == "friendlyarm_nanopi-r5c" ]; then \
++		export IMG_PREFIX="$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))"; \
++		export BIN_DIR=$(BIN_DIR); \
++		export TOPDIR=$(TOPDIR); \
++		cd /www/wwwroot/op.supes.top/bcache/rockchip/armv8/friendlywrt22-rk3568; \
++		. ../modify_packit.sh; \
++		./build.sh sd-img; \
++		[ "$(MORE)" == "eflasher" ] && ./build.sh emmc-img; \
++		rm -rf $(BIN_DIR)/*r5c-squashfs-sysupgrade.img.gz $(BIN_DIR)/images-for-eflasher; \
++	fi
++endef
++
 +define Image/Build
 +	if [ $(PROFILE_SANITIZED) == "friendlyarm_nanopi-r6s" ]; then \
 +		export IMG_PREFIX="$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))"; \
@@ -105,4 +158,3 @@
 +
  $(eval $(call BuildImage))
  
-