kiddin9 2 ani în urmă
părinte
comite
f4ded70b79

+ 6 - 6
.github/workflows/Openwrt-AutoBuild.yml

@@ -68,7 +68,7 @@ jobs:
         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_filogic|bcm27xx_bcm2710|ipq60xx_generic|bcm4908_generic|sunxi_cortexa53) ]]; then
+        elif [[ ${{matrix.target}} =~ (armvirt_64|ipq807x|mediatek_mt7622|mediatek_mt7981|mediatek_filogic|bcm27xx_bcm2710|ipq60xx_generic|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
@@ -139,13 +139,13 @@ jobs:
     - name: Clone source code
       working-directory: /workdir
       run: |
-        REPO_BRANCH="$((curl -gs -H 'Content-Type: application/json' \
+        if [ ! "${{ 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)"
-        git clone $REPO_URL -b $REPO_BRANCH openwrt
-        if [ "${{ env.REPO_BRANCH }}" ]; then
-          cd openwrt
-          git checkout ${{ env.REPO_BRANCH }}
+           git clone $REPO_URL -b $REPO_BRANCH openwrt
+        else
+            git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt
         fi
         ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
 

+ 20 - 0
devices/armvirt_64/diy/target/linux/armvirt/image/Makefile

@@ -95,6 +95,22 @@ define Device/odroid-n2
 endef
 TARGET_DEVICES += odroid-n2
 
+define Device/rock5b
+  DEVICE_VENDOR := Radxa
+  DEVICE_MODEL := ROCK 5B
+  SOC := RK3588
+  DEVICE_PACKAGES := 
+endef
+TARGET_DEVICES += rock5b
+
+define Device/h88k
+  DEVICE_VENDOR := HinLink
+  DEVICE_MODEL := H88K
+  SOC := RK3588
+  DEVICE_PACKAGES := 
+endef
+TARGET_DEVICES += h88k
+
 define Image/Build
 	export IMG_PREFIX="$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))"; \
 	export BIN_DIR=$(BIN_DIR); \
@@ -123,6 +139,10 @@ define Image/Build
 		./mk_rk3568_r68s.sh; \
 	elif [ $(PROFILE_SANITIZED) == "hk1" ]; then \
 		./mk_s905x3_multi.sh; \
+	elif [ $(PROFILE_SANITIZED) == "rock5b" ]; then \
+		./mk_rk3588_rock5b.sh; \
+	elif [ $(PROFILE_SANITIZED) == "h88k" ]; then \
+		./mk_rk3588_h88k.sh; \
 	fi; \
 	gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).img || true
 endef

+ 12 - 0
devices/armvirt_64/patches/rootfs.patch

@@ -0,0 +1,12 @@
+--- a/include/image.mk
++++ b/include/image.mk
+@@ -768,7 +768,7 @@
+ define Device
+   $(call Device/InitProfile,$(1))
+-  $(call Device/Init,$(1))
++  $(call Device/Init,$(PROFILE_SANITIZED))
+   $(call Device/Default,$(1))
+-  $(call Device/$(1),$(1))
++  $(call Device/$(PROFILE_SANITIZED),$(1))
+   $(call Device/Check,$(1))
+   $(call Device/$(if $(DUMP),Dump,Build),$(1))

+ 4 - 3
devices/bcm27xx_bcm2708/diy.sh

@@ -1,9 +1,10 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+#bash $SHELL_FOLDER/../common/kernel_5.15.sh
+
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
 
 sed -i 's/ factory.img.gz / /' target/linux/bcm27xx/image/Makefile
 
-SHELL_FOLDER=$(dirname $(readlink -f "$0"))
-#bash $SHELL_FOLDER/../common/kernel_5.15.sh
 

+ 3 - 3
devices/bcm27xx_bcm2709/diy.sh

@@ -1,10 +1,10 @@
 #!/bin/bash
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+#bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
 
 sed -i 's/ factory.img.gz / /' target/linux/bcm27xx/image/Makefile
 
-SHELL_FOLDER=$(dirname $(readlink -f "$0"))
-#bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
 

+ 3 - 3
devices/bcm27xx_bcm2710/diy.sh

@@ -1,11 +1,11 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
 sed -i 's/ factory.img.gz / /' target/linux/bcm27xx/image/Makefile
 
-SHELL_FOLDER=$(dirname $(readlink -f "$0"))
-bash $SHELL_FOLDER/../common/kernel_5.15.sh
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
 
 mkdir -p files/lib/firmware/brcm
 wget -P files/lib/firmware/brcm/ https://github.com/RPi-Distro/firmware-nonfree/raw/bullseye/debian/config/brcm80211/brcm/brcmfmac43436-sdio.bin

+ 3 - 4
devices/bcm27xx_bcm2711/diy.sh

@@ -1,9 +1,8 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
-
-sed -i 's/ factory.img.gz / /' target/linux/bcm27xx/image/Makefile
-
 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
+sed -i 's/ factory.img.gz / /' target/linux/bcm27xx/image/Makefile
+

+ 0 - 1
devices/common/.config

@@ -81,7 +81,6 @@ CONFIG_PACKAGE_ca-bundle=y
 
 CONFIG_PACKAGE_dockerd=m
 
-CONFIG_PACKAGE_kmod-usb-net-rtl8152=n
 CONFIG_PACKAGE_kmod-hermes-pci=n
 CONFIG_PACKAGE_kmod-hermes-pcmcia=n
 CONFIG_PACKAGE_kmod-hermes-plx=n

+ 74 - 34
devices/common/patches/imagebuilder.patch

@@ -91,50 +91,78 @@
 
 --- a/include/image.mk
 +++ b/include/image.mk
-@@ -7,6 +7,7 @@ include $(INCLUDE_DIR)/prereq.mk
- include $(INCLUDE_DIR)/kernel.mk
- include $(INCLUDE_DIR)/version.mk
- include $(INCLUDE_DIR)/image-commands.mk
-+-include $(TOPDIR)/.profiles.mk
- 
- ifndef IB
-   ifdef CONFIG_TARGET_PER_DEVICE_ROOTFS
-@@ -292,11 +293,34 @@ define Image/gzip-ext4-padded-squashfs
- 
- endef
+@@ -300,6 +300,44 @@ ifdef CONFIG_TARGET_ROOTFS_TARGZ
+   endef
+ endif
  
-+ROOTFSTZ = $(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz
- ifdef CONFIG_TARGET_ROOTFS_TARGZ
-   define Image/Build/targz
- 	$(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \
- 		$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
--		-C $(TARGET_DIR)/ . | gzip -9n > $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz
-+		-C $(TARGET_DIR)/ . | gzip -9n > $(BIN_DIR)/$(ROOTFSTZ)
++define Device/Build/targz
++  $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
++	  $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json, \
++	  $(BIN_DIR)/$$(ROOTFSTZ))
++
++  $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json,$(1))
 +
-+	mkdir $(BUILD_DIR)/json_info_files
-+	touch $(BUILD_DIR)/json_info_files/$(ROOTFSTZ).json
++  $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json: $(BIN_DIR)/$$(ROOTFSTZ)
 +	@mkdir -p $$(shell dirname $$@)
-+	DEVICE_ID="$(PROFILE_SANITIZED)" \
++	DEVICE_ID="$(1)" \
 +	SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
-+	FILE_NAME="$(ROOTFSTZ)" \
++	FILE_NAME="$$(notdir $$^)" \
 +	FILE_DIR="$(BIN_DIR)" \
 +	FILE_TYPE="rootfs" \
 +	FILE_FILESYSTEM="rootfs" \
-+	DEVICE_IMG_PREFIX="$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))" \
-+	DEVICE_VENDOR="$(shell echo $($(PROFILE)_NAME) | cut -d " " -f1)" \
-+	DEVICE_MODEL="$(shell echo $($(PROFILE)_NAME) | cut -d " " -f2-)" \
-+	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
-+	DEVICE_TITLE="$($(PROFILE)_NAME)" \
-+	DEVICE_PACKAGES="$($(PROFILE)_PACKAGES)" \
++	DEVICE_IMG_PREFIX="$$(DEVICE_IMG_PREFIX)" \
++	DEVICE_VENDOR="$$(DEVICE_VENDOR)" \
++	DEVICE_MODEL="$$(DEVICE_MODEL)" \
++	DEVICE_VARIANT="$$(DEVICE_VARIANT)" \
++	DEVICE_ALT0_VENDOR="$$(DEVICE_ALT0_VENDOR)" \
++	DEVICE_ALT0_MODEL="$$(DEVICE_ALT0_MODEL)" \
++	DEVICE_ALT0_VARIANT="$$(DEVICE_ALT0_VARIANT)" \
++	DEVICE_ALT1_VENDOR="$$(DEVICE_ALT1_VENDOR)" \
++	DEVICE_ALT1_MODEL="$$(DEVICE_ALT1_MODEL)" \
++	DEVICE_ALT1_VARIANT="$$(DEVICE_ALT1_VARIANT)" \
++	DEVICE_ALT2_VENDOR="$$(DEVICE_ALT2_VENDOR)" \
++	DEVICE_ALT2_MODEL="$$(DEVICE_ALT2_MODEL)" \
++	DEVICE_ALT2_VARIANT="$$(DEVICE_ALT2_VARIANT)" \
++	DEVICE_TITLE="$$(DEVICE_TITLE)" \
++	DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \
 +	TARGET="$(BOARD)" \
 +	SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
 +	VERSION_NUMBER="$(VERSION_NUMBER)" \
 +	VERSION_CODE="$(VERSION_CODE)" \
-+	SUPPORTED_DEVICES="$($(PROFILE)_SUPPORTED_DEVICES)" \
-+	$(TOPDIR)/scripts/json_add_image_info.py $(BUILD_DIR)/json_info_files/$(ROOTFSTZ).json
-   endef
- endif
++	SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
++	$(TOPDIR)/scripts/json_add_image_info.py $$@
++endef
++
+ ifdef CONFIG_TARGET_ROOTFS_CPIOGZ
+   define Image/Build/cpiogz
+ 	( cd $(TARGET_DIR); find . | $(STAGING_DIR_HOST)/bin/cpio -o -H newc -R 0:0 | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz )
+@@ -367,6 +405,7 @@ define Device/Init
+   DEVICE_IMG_PREFIX := $(IMG_PREFIX)-$(1)
+   DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2)
+   IMAGE_SIZE :=
++  ROOTFSTZ = $$(DEVICE_IMG_PREFIX)-rootfs.tar.gz
+   KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX)
+   KERNEL_SUFFIX := -kernel.bin
+   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
+@@ -567,7 +606,7 @@ define Device/Build/kernel
+ endef
  
+ define Device/Build/image
+-  GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
++  GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(findstring img,$(2)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
+   $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
+ 	  $(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json, \
+ 	  $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX))
+@@ -677,6 +716,8 @@ define Device/Build
+   $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1)))
+   $(call Device/Build/kernel,$(1))
+ 
++  $(if $(CONFIG_TARGET_ROOTFS_TARGZ),$(call Device/Build/targz,$(PROFILE_SANITIZED)))
++
+   $$(eval $$(foreach compile,$$(COMPILE), \
+     $$(call Device/Build/compile,$$(compile),$(1))))
+ 
+
 --- a/scripts/json_overview_image_info.py
 +++ b/scripts/json_overview_image_info.py
 @@ -47,7 +47,7 @@ def get_initial_output(image_info):
@@ -142,15 +170,27 @@
  
  if output:
 -    default_packages, output["arch_packages"] = run(
-+    default_packages, output["arch_packages"], output["kernel_version"] = run(
++    default_packages, output["arch_packages"], output["kernel_version"], output["initramfs"] = run(
          [
              "make",
              "--no-print-directory",
-@@ -55,6 +55,7 @@ def get_initial_output(image_info):
+@@ -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))

+ 12 - 0
devices/mediatek_mt7981/.config

@@ -0,0 +1,12 @@
+
+CONFIG_TARGET_mediatek=y
+CONFIG_TARGET_mediatek_mt7981=y
+CONFIG_TARGET_MULTI_PROFILE=y
+CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_mt7981-360-t7=y
+CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_mt7981-360-t7-108M=y
+
+
+CONFIG_PACKAGE_luci-ssl=y # uhttpd服务
+
+
+

+ 8 - 0
devices/mediatek_mt7981/diy.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+shopt -s extglob
+
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+
+rm -rf devices/common/patches/{imagebuilder.patch,iptables.patch,kernel-defaults.patch,targets.patch}
+

+ 10 - 0
devices/mediatek_mt7981/patches/depends.patch

@@ -0,0 +1,10 @@
+--- a/target/linux/mediatek/image/mt7981.mk
++++ b/target/linux/mediatek/image/mt7981.mk
+@@ -177,6 +177,7 @@ define Device/mt7981-360-t7
+   DEVICE_MODEL := 360 T7
+   DEVICE_DTS := mt7981-360-t7
+   DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
++  DEVICE_PACKAGES := luci-app-mtk mii_mgr wifi-profile switch regs kmod-warp kmod-mt_wifi kmod-mediatek_hnat kmod-conninfra
+   SUPPORTED_DEVICES := 360,t7
+   UBINIZE_OPTS := -E 5
+   BLOCKSIZE := 128k

+ 122 - 0
devices/mediatek_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))

+ 50 - 0
devices/mediatek_mt7981/patches/targets.patch

@@ -0,0 +1,50 @@
+--- a/include/target.mk
++++ b/include/target.mk
+@@ -44,29 +44,33 @@ DEFAULT_PACKAGES.nas:=\
+ # For router targets
+ DEFAULT_PACKAGES.router:=\
+ 	dnsmasq-full \
++	kmod-ipt-nat \
+++	kmod-ipt-nat6 \
+ 	firewall \
++	ip6tables \
+ 	iptables \
++	kmod-ipt-offload \
++	odhcp6c \
++	odhcpd-ipv6only \
+ 	ppp \
+ 	ppp-mod-pppoe
+-# For easy usage
+-DEFAULT_PACKAGES.tweak:=\
+-	block-mount \
+-	default-settings-chn \
+-	kmod-ipt-raw \
+-	kmod-nf-nathelper \
+-	kmod-nf-nathelper-extra \
+-	luci \
+-	luci-app-filetransfer \
+-	luci-app-turboacc \
+-	luci-compat \
+-	luci-lib-base \
+-	luci-lib-fs \
+-	luci-lib-ipkg
+ 
+ ifneq ($(DUMP),)
+   all: dumpinfo
+ 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
++
+ target_conf=$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
+ ifeq ($(DUMP),)
+   PLATFORM_DIR:=$(TOPDIR)/target/linux/$(BOARD)

+ 2 - 0
devices/mediatek_mt7981/settings.ini

@@ -0,0 +1,2 @@
+REPO_URL="https://github.com/hanwckf/immortalwrt-mt798x"
+REPO_BRANCH="openwrt-21.02"

+ 2 - 1
devices/meson_meson8b/patches/onecloud.patch

@@ -1,11 +1,12 @@
 --- a/target/linux/meson/image/Makefile
 +++ b/target/linux/meson/image/Makefile
-@@ -112,7 +112,7 @@ endif
+@@ -112,7 +112,8 @@ endif
  
  define Device/thunder-onecloud
    DEVICE_DTS := meson8b-onecloud
 -  DEVICE_TITLE := Thunder OneCloud
 +  DEVICE_TITLE := OneCloud 玩客云
++  DEVICE_PACKAGES += kmod-usb-net-rtl8152
    KERNEL_LOADADDR := 0x00208000
  endef
  ifeq ($(SUBTARGET),meson8b)

+ 1 - 0
devices/ramips_mt7621/.config

@@ -8,6 +8,7 @@ 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

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

@@ -0,0 +1,196 @@
+--- /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)

+ 108 - 0
devices/rockchip_armv8/patches/r6s.patch

@@ -0,0 +1,108 @@
+--- a/target/linux/rockchip/image/armv8.mk
++++ b/target/linux/rockchip/image/armv8.mk
+@@ -52,4 +52,13 @@
+ TARGET_DEVICES += friendlyarm_nanopi-r2s
+ 
++define Device/friendlyarm_nanopi-r6s
++  DEVICE_VENDOR := FriendlyARM
++  DEVICE_MODEL := NanoPi R6S
++  SOC := rk3328
++  DEVICE_PACKAGES := -luci-app-gpsysupgrade
++  DEVICE_DTS = rockchip/rk3328-nanopi-r2s
++endef
++TARGET_DEVICES += friendlyarm_nanopi-r6s
++
+ define Device/friendlyarm_nanopi-r4s
+   DEVICE_VENDOR := FriendlyARM
+
+--- 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()
+ 	friendlyarm,nanopi-r5s)
+ 		ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
+ 		;;
++	friendlyarm,nanopi-r6s)
++		ucidef_set_interfaces_lan_wan "eth1 eth0" "eth2"
++		;;
+ 	*)
+ 		ucidef_set_interface_lan 'eth0'
+ 		;;
+@@ -45,7 +48,7 @@ generate_mac_from_mmc_cid()
+ 	echo "$(macaddr_unsetbit_mc "$(macaddr_setbit_la "${mac_base}")")"
+ }
+ 
+-nanopi_r4s_get_mac()
++nanopi_get_mac()
+ {
+ 	local interface=$1
+ 	local eeprom_path="/sys/bus/i2c/devices/2-0051/eeprom"
+@@ -88,8 +91,12 @@ rockchip_setup_macs()
+ 		;;
+ 	friendlyarm,nanopi-r4s|\
+ 	friendlyarm,nanopi-r4se)
+-		wan_mac=$(nanopi_r4s_get_mac wan)
+-		lan_mac=$(nanopi_r4s_get_mac lan)
++		wan_mac=$(nanopi_get_mac wan 2-0051)
++		lan_mac=$(nanopi_get_mac lan 2-0051)
++		;;
++	friendlyarm,nanopi-r6s)
++		wan_mac=$(nanopi_get_mac wan 6-0053)
++		lan_mac=$(nanopi_get_mac lan 6-0053)
+ 		;;
+ 	xunlong,orangepi-r1-plus|\
+ 	xunlong,orangepi-r1-plus-lts)
+
+--- 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"
+ 	;;
++friendlyarm,nanopi-r6s)
++	ucidef_set_led_netdev "wan" "WAN" "wan_led" "eth2" "link"
++	ucidef_set_led_netdev "lan1" "LAN1" "lan1_led" "eth1" "link"
++	ucidef_set_led_netdev "lan2" "LAN2" "lan2_led" "eth0" "link"
++	;;
+ esac
+ 
+
+--- 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"
+ 	;;
++friendlyarm,nanopi-r6s)
++	set_interface_core 2 "eth0"
++	echo 3e > /sys/class/net/eth0/queues/rx-0/rps_cpus
++	set_interface_core 10 "eth1-0"
++	set_interface_core 20 "eth1-16"
++	set_interface_core 20 "eth1-18"
++	echo fe > /sys/class/net/eth1/queues/rx-0/rps_cpus
++	set_interface_core 40 "eth2-0"
++	set_interface_core 80 "eth2-16"
++	set_interface_core 80 "eth2-18"
++	echo fe > /sys/class/net/eth2/queues/rx-0/rps_cpus
++	;;
+ esac
+
+--- a/target/linux/rockchip/image/Makefile
++++ b/target/linux/rockchip/image/Makefile
+@@ -75,4 +75,17 @@ endef
+ 
+ include $(SUBTARGET).mk
+ 
++define Image/Build
++	if [ $(PROFILE_SANITIZED) == "friendlyarm_nanopi-r6s" ]; 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-rk3588; \
++		. ../modify_packit.sh; \
++		./build.sh sd-img; \
++		[ "$(MORE)" == "eflasher" ] && ./build.sh emmc-img; \
++		rm -rf $(BIN_DIR)/*r6s-squashfs-sysupgrade.img.gz $(BIN_DIR)/images-for-eflasher; \
++	fi
++endef
++
+ $(eval $(call BuildImage))
+ 
+

+ 11 - 0
devices/sunxi_cortexa53/patches/r1s-h5.patch

@@ -0,0 +1,11 @@
+--- a/target/linux/sunxi/image/cortexa53.mk
++++ b/target/linux/sunxi/image/cortexa53.mk
+@@ -43,7 +43,7 @@ TARGET_DEVICES += friendlyarm_nanopi-neo2
+ define Device/friendlyarm_nanopi-r1s-h5
+   DEVICE_VENDOR := FriendlyARM
+   DEVICE_MODEL := Nanopi R1S H5
+-  DEVICE_PACKAGES := kmod-gpio-button-hotplug kmod-usb-net-rtl8152
++  DEVICE_PACKAGES := kmod-gpio-button-hotplug kmod-usb-net-rtl8152 kmod-rtl8189es
+   SUPPORTED_DEVICES:=nanopi-r1s-h5
+   $(Device/sun50i-h5)
+ endef

+ 11 - 0
devices/sunxi_cortexa7/patches/wireless.patch

@@ -0,0 +1,11 @@
+--- a/target/linux/sunxi/image/cortexa7.mk
++++ b/target/linux/sunxi/image/cortexa7.mk
+@@ -47,7 +47,7 @@ TARGET_DEVICES += friendlyarm_nanopi-neo-air
+ define Device/friendlyarm_nanopi-r1
+   DEVICE_VENDOR := FriendlyARM
+   DEVICE_MODEL := NanoPi R1
+-  DEVICE_PACKAGES := kmod-usb-net-rtl8152 kmod-leds-gpio \
++  DEVICE_PACKAGES := kmod-usb-net-rtl8152 kmod-leds-gpio kmod-rtl8189es \
+ 	kmod-brcmfmac cypress-firmware-43430-sdio wpad-basic-wolfssl
+   SOC := sun8i-h3
+ endef