update mt2500 emmc patch and some profiles

This commit is contained in:
gl-luochongjun 2022-08-24 10:34:49 +08:00
parent 8b178e54d4
commit f916a5ee21
8 changed files with 556 additions and 3 deletions

View File

@ -0,0 +1,96 @@
From e577117aabd73af3809dc2e9c69eda5fa515f6d0 Mon Sep 17 00:00:00 2001
From: gl-luochongjun <luochongjun@gl-inet.com>
Date: Thu, 11 Aug 2022 15:17:31 +0800
Subject: [PATCH] add glient info for x86
---
.../x86/base-files/etc/board.d/01_gl_info | 26 +++++++++++++++++
.../x86/base-files/etc/board.d/02_network | 3 ++
.../x86/base-files/etc/board.d/04_gl_firewall | 28 +++++++++++++++++++
3 files changed, 57 insertions(+)
create mode 100755 target/linux/x86/base-files/etc/board.d/01_gl_info
create mode 100755 target/linux/x86/base-files/etc/board.d/04_gl_firewall
diff --git a/target/linux/x86/base-files/etc/board.d/01_gl_info b/target/linux/x86/base-files/etc/board.d/01_gl_info
new file mode 100755
index 0000000000..a814196b36
--- /dev/null
+++ b/target/linux/x86/base-files/etc/board.d/01_gl_info
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+#
+
+ MAC=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')
+ SN=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum |cut -c1-16)
+ SN_BAK=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum |cut -c1-16)
+ DDNS=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum |cut -c1-7)
+
+touch /etc/config/board_special 2>/dev/null
+
+uci -q batch <<-EOF
+ set board_special.hardware=board
+ set board_special.hardware.model='VMX86'
+ set board_special.hardware.wan='eth0'
+ set board_special.hardware.lan='eth1'
+ set board_special.hardware.mac='$MAC'
+ set board_special.hardware.sn='$SN'
+ set board_special.hardware.sn_bak='$SN_BAK'
+ set board_special.hardware.ddns='$DDNS'
+EOF
+
+uci commit board_special
+
+
+exit 0
diff --git a/target/linux/x86/base-files/etc/board.d/02_network b/target/linux/x86/base-files/etc/board.d/02_network
index 21f054019a..7ecdc7fd58 100755
--- a/target/linux/x86/base-files/etc/board.d/02_network
+++ b/target/linux/x86/base-files/etc/board.d/02_network
@@ -22,6 +22,9 @@ traverse-technologies-geos)
macaddr="$(cat /sys/class/net/eth0/address)" 2>/dev/null
[ -n "$macaddr" ] && ucidef_set_interface_macaddr "wan" "$macaddr"
;;
+ *)
+ ucidef_set_interfaces_lan_wan "eth1" "eth0"
+ ;;
esac
board_config_flush
diff --git a/target/linux/x86/base-files/etc/board.d/04_gl_firewall b/target/linux/x86/base-files/etc/board.d/04_gl_firewall
new file mode 100755
index 0000000000..2a8b9b09cf
--- /dev/null
+++ b/target/linux/x86/base-files/etc/board.d/04_gl_firewall
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+#
+
+uci -q batch <<-EOF
+ add firewall rule
+ set firewall.@rule[-1]=rule
+ set firewall.@rule[-1].dest_port='80'
+ set firewall.@rule[-1].proto='tcp udp'
+ set firewall.@rule[-1].name='GL-web'
+ set firewall.@rule[-1].target='ACCEPT'
+ set firewall.@rule[-1].enabled='1'
+ set firewall.@rule[-1].src='wan'
+
+ add firewall rule
+ set firewall.@rule[-1]=rule
+ set firewall.@rule[-1].dest_port='22'
+ set firewall.@rule[-1].proto='tcp udp'
+ set firewall.@rule[-1].name='GL-ssh'
+ set firewall.@rule[-1].target='ACCEPT'
+ set firewall.@rule[-1].enabled='1'
+ set firewall.@rule[-1].src='wan'
+EOF
+
+uci commit firewall
+
+
+exit 0
--
2.25.1

View File

@ -0,0 +1,337 @@
From b7be7705913d6d76ba0fd2afba50c7e28e8de945 Mon Sep 17 00:00:00 2001
From: gl-luochongjun <luochongjun@gl-inet.com>
Date: Wed, 24 Aug 2022 10:31:40 +0800
Subject: [PATCH] adjust mt2500 emmc partitions
---
.../boot/dts/mediatek/mt7981-gl-mt2500.dts | 10 +-
target/linux/mediatek/mt7981/config-5.4 | 3 +-
.../9999-block2mtd-support-partline.patch | 20 +-
.../9999-support-partition-split.patch | 186 ++++++++++++++++++
4 files changed, 200 insertions(+), 19 deletions(-)
create mode 100644 target/linux/mediatek/patches-5.4/9999-support-partition-split.patch
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-gl-mt2500.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-gl-mt2500.dts
index a638d4de49..d19c8fbe2f 100755
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-gl-mt2500.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-gl-mt2500.dts
@@ -7,7 +7,7 @@
bootargs = "console=ttyS0,115200n1 loglevel=8 \
earlycon=uart8250,mmio32,0x11002000 \
root=PARTLABEL=rootfs rootwait rootfstype=squashfs,f2fs \
- block2mtd.block2mtd=/dev/mmcblk0,512,mmc0 mtdparts=mmc0:34k(gpt)ro,64k(Factory)ro,1024k(log),64M(kernel),-(rootfs)";
+ block2mtd.block2mtd=/dev/mmcblk0boot1,512,Factory";
};
//memory {
// fpga ddr2: 128MB*2
@@ -29,10 +29,10 @@
usb-port = "1-1";
flash_size = <4096>;
factory_data {
- device_mac = "PARTLABEL=Factory", "0x0a";
- device_ddns = "PARTLABEL=Factory", "0x10";
- device_sn_bak = "PARTLABEL=Factory", "0x20";
- device_sn = "PARTLABEL=Factory", "0x30";
+ device_mac = "Factory", "0x0a";
+ device_ddns = "Factory", "0x10";
+ device_sn_bak = "Factory", "0x20";
+ device_sn = "Factory", "0x30";
};
};
gpio-keys {
diff --git a/target/linux/mediatek/mt7981/config-5.4 b/target/linux/mediatek/mt7981/config-5.4
index cbdb411554..8404df380d 100644
--- a/target/linux/mediatek/mt7981/config-5.4
+++ b/target/linux/mediatek/mt7981/config-5.4
@@ -326,6 +326,7 @@ CONFIG_OF_NET=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_PADATA=y
CONFIG_PARTITION_PERCPU=y
+CONFIG_PARTITION_SPLIT=y
CONFIG_PCI=y
# CONFIG_PCIE_MEDIATEK is not set
CONFIG_PCIE_MEDIATEK_GEN3=y
@@ -468,5 +469,3 @@ CONFIG_XPS=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA32=y
-CONFIG_NVMEM=y
-CONFIG_MTK_EFUSE=y
diff --git a/target/linux/mediatek/patches-5.4/9999-block2mtd-support-partline.patch b/target/linux/mediatek/patches-5.4/9999-block2mtd-support-partline.patch
index 80b556fda2..c261d143c6 100644
--- a/target/linux/mediatek/patches-5.4/9999-block2mtd-support-partline.patch
+++ b/target/linux/mediatek/patches-5.4/9999-block2mtd-support-partline.patch
@@ -34,7 +34,7 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
struct block_device *bdev;
struct block2mtd_dev *dev;
char *name;
-@@ -278,11 +283,15 @@ static struct block2mtd_dev *add_device(
+@@ -278,10 +283,13 @@ static struct block2mtd_dev *add_device(
/* Setup the MTD structure */
/* make the name contain the block device in */
@@ -47,11 +47,9 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
+ strcpy(name, mtdname);
dev->mtd.name = name;
-+ //dev->mtd.name = "mmc";
dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK;
- dev->mtd.erasesize = erase_size;
-@@ -297,7 +306,8 @@ static struct block2mtd_dev *add_device(
+@@ -297,7 +305,8 @@ static struct block2mtd_dev *add_device(
dev->mtd.priv = dev;
dev->mtd.owner = THIS_MODULE;
@@ -61,18 +59,16 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
/* Device didn't get added, so free the entry */
goto err_destroy_mutex;
}
-@@ -305,8 +315,9 @@ static struct block2mtd_dev *add_device(
+@@ -305,7 +314,7 @@ static struct block2mtd_dev *add_device(
list_add(&dev->list, &blkmtd_device_list);
pr_info("mtd%d: [%s] erase_size = %dKiB [%d]\n",
dev->mtd.index,
- dev->mtd.name + strlen("block2mtd: "),
+ dev->mtd.name,
dev->mtd.erasesize >> 10, dev->mtd.erasesize);
-+ bdput(bdev);
return dev;
- err_destroy_mutex:
-@@ -381,7 +392,7 @@ static int block2mtd_setup2(const char *
+@@ -381,7 +390,7 @@ static int block2mtd_setup2(const char *
/* 80 for device, 12 for erase size, 80 for name, 8 for timeout */
char buf[80 + 12 + 80 + 8];
char *str = buf;
@@ -81,7 +77,7 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
char *name;
size_t erase_size = PAGE_SIZE;
unsigned long timeout = MTD_DEFAULT_TIMEOUT;
-@@ -395,7 +406,7 @@ static int block2mtd_setup2(const char *
+@@ -395,7 +404,7 @@ static int block2mtd_setup2(const char *
strcpy(str, val);
kill_final_newline(str);
@@ -90,7 +86,7 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
token[i] = strsep(&str, ",");
if (str) {
-@@ -421,8 +432,13 @@ static int block2mtd_setup2(const char *
+@@ -421,8 +430,13 @@ static int block2mtd_setup2(const char *
return 0;
}
}
@@ -105,7 +101,7 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
return 0;
}
-@@ -454,9 +470,8 @@ static int block2mtd_setup(const char *v
+@@ -454,9 +468,8 @@ static int block2mtd_setup(const char *v
#endif
}
@@ -116,7 +112,7 @@ Index: linux-5.4.188/drivers/mtd/devices/block2mtd.c
static int __init block2mtd_init(void)
{
-@@ -484,7 +499,7 @@ static void block2mtd_exit(void)
+@@ -484,7 +497,7 @@ static void block2mtd_exit(void)
mutex_destroy(&dev->write_mutex);
pr_info("mtd%d: [%s] removed\n",
dev->mtd.index,
diff --git a/target/linux/mediatek/patches-5.4/9999-support-partition-split.patch b/target/linux/mediatek/patches-5.4/9999-support-partition-split.patch
new file mode 100644
index 0000000000..8e0026c216
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/9999-support-partition-split.patch
@@ -0,0 +1,186 @@
+Index: linux-5.4.188/block/Kconfig
+===================================================================
+--- linux-5.4.188.orig/block/Kconfig
++++ linux-5.4.188/block/Kconfig
+@@ -105,6 +105,9 @@ config BLK_DEV_THROTTLING_LOW
+
+ Note, this is an experimental interface and could be changed someday.
+
++config PARTITION_SPLIT
++ bool "Openwrt Block device partition rootfs split"
++
+ config BLK_CMDLINE_PARSER
+ bool "Block device command line partition parser"
+ ---help---
+Index: linux-5.4.188/block/Makefile
+===================================================================
+--- linux-5.4.188.orig/block/Makefile
++++ linux-5.4.188/block/Makefile
+@@ -36,3 +36,4 @@ obj-$(CONFIG_BLK_DEBUG_FS) += blk-mq-deb
+ obj-$(CONFIG_BLK_DEBUG_FS_ZONED)+= blk-mq-debugfs-zoned.o
+ obj-$(CONFIG_BLK_SED_OPAL) += sed-opal.o
+ obj-$(CONFIG_BLK_PM) += blk-pm.o
++obj-$(CONFIG_PARTITION_SPLIT) += partition-split.o
+Index: linux-5.4.188/block/partition-generic.c
+===================================================================
+--- linux-5.4.188.orig/block/partition-generic.c
++++ linux-5.4.188/block/partition-generic.c
+@@ -21,6 +21,10 @@
+
+ #include "partitions/check.h"
+
++#ifdef CONFIG_PARTITION_SPLIT
++#include "partition-split.h"
++#endif
++
+ #ifdef CONFIG_BLK_DEV_MD
+ extern void md_autodetect_dev(dev_t dev);
+ #endif
+@@ -569,6 +573,9 @@ rescan:
+ highest = p;
+
+ disk_expand_part_tbl(disk, highest);
++#ifdef CONFIG_PARTITION_SPLIT
++ partition_split(bdev, state);
++#endif
+
+ /* add partitions */
+ for (p = 1; p < state->limit; p++) {
+Index: linux-5.4.188/block/partition-split.c
+===================================================================
+--- /dev/null
++++ linux-5.4.188/block/partition-split.c
+@@ -0,0 +1,111 @@
++#include <linux/blkdev.h>
++#include <linux/magic.h>
++#include <linux/module.h>
++#include "partitions/check.h"
++#include "partition-split.h"
++
++void print_sblock_value(char *buf)
++{
++ int i, j;
++ for (i = 0; i < sizeof(struct squashfs_sblock);) {
++ for (j = 0; j < 16; j++) {
++ printk("%02x ", buf[i]);
++ i++;
++ }
++ printk("\n");
++ }
++}
++
++unsigned char *fs_read_super_block(struct block_device *bdev, sector_t from, Sector *sector)
++{
++ if (from >= get_capacity(bdev->bd_disk)) {
++ return NULL;
++ }
++ return read_dev_sector(bdev, from, sector);
++}
++
++
++int get_squashfs_len(struct block_device *bdev, sector_t from, size_t *squashfs_len)
++{
++ struct squashfs_sblock sb;
++ unsigned char *buf;
++ Sector sector;
++ size_t retlen;
++
++ buf = fs_read_super_block(bdev, from, &sector);
++ if (!buf) {
++ printk("failed to get super\n");
++ return -EIO;
++ }
++ memcpy((void *)&sb, buf, sizeof(sb));
++ put_dev_sector(sector);
++
++ if (le32_to_cpu(sb.s_magic) != SQUASHFS_MAGIC) {
++ printk("no squashfs found in\n");
++ //print_sblock_value((char *)&sb);
++ return -EINVAL;
++ }
++
++ retlen = le64_to_cpu(sb.bytes_used);
++ if (retlen <= 0) {
++ printk("squashfs is empty in \n");
++ return -ENODEV;
++ }
++
++ *squashfs_len = retlen;
++ return 0;
++}
++
++static int find_part_by_lable(struct parsed_partitions *state, const char *lable)
++{
++ int p;
++ /* add partitions */
++ for (p = 1; p < state->limit; p++) {
++ if (!strcmp(state->parts[p].info.volname, lable))
++ return p;
++ }
++ return 0;
++}
++
++int partition_split(struct block_device *bdev, struct parsed_partitions *state)
++{
++ int p, insert;
++ size_t sqfs_size;
++ sector_t new_size, new_from;
++ struct partition_meta_info *info;
++ char tmp[sizeof(info->volname) + 4];
++
++ p = find_part_by_lable(state, ROOTFS_PART);
++ if (p == 0)
++ return 0;
++ if (get_squashfs_len(bdev, state->parts[p].from, &sqfs_size))
++ return 0;
++
++ sqfs_size = (sqfs_size + (ALING_SQFS - 1)) & ~(ALING_SQFS - 1); //squashfs 64k对齐
++
++ //计算新分区大小和起始位置
++
++ new_size = state->parts[p].size - (sqfs_size >> 9);
++ new_from = state->parts[p].from + (sqfs_size >> 9);
++
++ for (insert = 1; insert < state->limit; insert++) {
++ if (!state->parts[insert].size)
++ break;
++ }
++
++ if (insert >= state->limit)
++ return 0;
++
++ //追加一个新分区并设置相关信息
++ put_partition(state, insert, new_from, new_size);
++
++ info = &state->parts[insert].info;
++
++ strncpy(info->volname, ROOTFS_PART_DATA, strlen(ROOTFS_PART_DATA) + 1);
++ snprintf(tmp, sizeof(tmp), "(%s)", info->volname);
++ strlcat(state->pp_buf, tmp, PAGE_SIZE);
++
++ state->parts[insert].has_info = true;
++ return 0;
++
++}
+Index: linux-5.4.188/block/partition-split.h
+===================================================================
+--- /dev/null
++++ linux-5.4.188/block/partition-split.h
+@@ -0,0 +1,17 @@
++#ifndef __PARTITION_SPLIT_H
++#define __PARTITION_SPLIT_H
++
++#define ROOTFS_PART "rootfs"
++#define ROOTFS_PART_DATA "rootfs_data"
++
++#define ALING_SQFS 0X10000
++
++struct squashfs_sblock {
++ __le32 s_magic;
++ __le32 pad0[9];
++ __le64 bytes_used;
++};
++
++extern int partition_split(struct block_device *bdev, struct parsed_partitions *state);
++
++#endif
--
2.25.1

View File

@ -19,6 +19,7 @@ packages:
- dnsmasq-full
- mwan3
- iwinfo
- mmc-utils
- block-mount
- blkid
- ntfs-3g

112
profiles/glinet_x86.yml Normal file
View File

@ -0,0 +1,112 @@
---
description: Add the glinet dependencies
feeds:
- name: glinet
uri: git@gitlab.com:gl.sdk4.0/gl.router/gl-sdk4-collect.git
branch: v4.1.0
packages:
- kmod-usb-storage
- kmod-usb-uhci
- kmod-usb2
- kmod-usb-ohci
- kmod-gl-sdk4-hw-info
- kmod-gl-sdk4-tertf
- dnsmasq-full
- mwan3
- iwinfo
- block-mount
- blkid
- ntfs-3g
- ntfs-3g-utils
- kmod-fs-ext4
- kmod-fs-ntfs
- kmod-fs-vfat
- kmod-fs-exfat
- gl-sdk4-luci
- gl-sdk4-rtty
- gl-sdk4-base-files
- gl-sdk4-tethering
- gl-sdk4-network
- gl-sdk4-acl
- gl-sdk4-system
- gl-sdk4-mqtt
- gl-sdk4-qos
- gl-sdk4-network-diag
- gl-sdk4-carrier-monitor
- gl-sdk4-init-portal
- gl-sdk4-s2s
- gl-sdk4-ui-adguardhome
- gl-sdk4-ui-adminpw
- gl-sdk4-ui-advanced
- gl-sdk4-ui-bridge
- gl-sdk4-ui-btnsettings
- gl-sdk4-ui-clients
- gl-sdk4-ui-cloud
- gl-sdk4-ui-core
- gl-sdk4-ui-dnsview
- gl-sdk4-ui-dynamicdns
- gl-sdk4-ui-edgerouter
- gl-sdk4-ui-firewallview
- gl-sdk4-ui-home
- gl-sdk4-ui-internet
- gl-sdk4-ui-ipv6
- gl-sdk4-ui-lanip
- gl-sdk4-ui-login
- gl-sdk4-ui-logview
- gl-sdk4-ui-macclone
- gl-sdk4-ui-modemmanage
- gl-sdk4-ui-nasview
- gl-sdk4-ui-ovpnclient
- gl-sdk4-ui-ovpnserver
- gl-sdk4-ui-plugins
- gl-sdk4-ui-process
- gl-sdk4-ui-reset
- gl-sdk4-ui-sms
- gl-sdk4-ui-timezone
- gl-sdk4-ui-upgrade
- gl-sdk4-ui-vpndashboard
- gl-sdk4-ui-welcome
- gl-sdk4-ui-wgclient
- gl-sdk4-ui-wgserver
diffconfig: |
CONFIG_SIGNATURE_CHECK=n
CONFIG_PACKAGE_dnsmasq=n
CONFIG_PACKAGE_wpad-basic=n
CONFIG_PACKAGE_wpad=n
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP=y
CONFIG_NGINX_HTTP_CHARSET=n
CONFIG_NGINX_HTTP_GZIP=n
CONFIG_NGINX_HTTP_SSI=n
CONFIG_NGINX_HTTP_USERID=n
CONFIG_NGINX_HTTP_ACCESS=n
CONFIG_NGINX_HTTP_AUTH_BASIC=n
CONFIG_NGINX_HTTP_AUTOINDEX=n
CONFIG_NGINX_HTTP_GEO=n
CONFIG_NGINX_HTTP_MAP=n
CONFIG_NGINX_HTTP_SPLIT_CLIENTS=n
CONFIG_NGINX_HTTP_REFERER=n
CONFIG_NGINX_HTTP_REWRITE=n
CONFIG_NGINX_HTTP_FASTCGI=n
CONFIG_NGINX_HTTP_SCGI=n
CONFIG_NGINX_HTTP_MEMCACHED=n
CONFIG_NGINX_HTTP_LIMIT_CONN=n
CONFIG_NGINX_HTTP_LIMIT_REQ=n
CONFIG_NGINX_HTTP_EMPTY_GIF=n
CONFIG_NGINX_HTTP_BROWSER=n
CONFIG_NGINX_HTTP_UPSTREAM_HASH=n
CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH=n
CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN=n
CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE=n
CONFIG_NGINX_HTTP_CACHE=n
CONFIG_NGINX_NAXSI=n
CONFIG_NGINX_HEADERS_MORE=n
CONFIG_LIBCURL_MBEDTLS=n
CONFIG_LIBCURL_OPENSSL=y
CONFIG_OPENSSL_OPTIMIZE_SPEED=y
CONFIG_LUCI_LANG_zh_Hans=y

View File

@ -37,6 +37,8 @@ packages:
- ethtool
- luci-app-mtk
- mtkhnat_util
- gdisk
- mmc-utils
- kmod-conninfra
diffconfig: |

View File

@ -6,7 +6,7 @@ feeds:
path: ../../feeds/ipq807x
- name: gl_feeds_common
uri: https://github.com/gl-inet/gl-feeds.git
revision: 6d36fa8b49061674c709c40b8c3ed5881be3190a
branch: common
- name: luci
uri: https://github.com/openwrt/luci.git
revision: 1c3b32dc1bec15e3076a447762b1c4f94eb75fb7

View File

@ -8,7 +8,7 @@ feeds:
path: ../../feeds/wifi-ax
- name: gl_feeds_common
uri: https://github.com/gl-inet/gl-feeds.git
revision: 6d36fa8b49061674c709c40b8c3ed5881be3190a
branch: common
- name: luci
uri: https://github.com/openwrt/luci.git
revision: 1c3b32dc1bec15e3076a447762b1c4f94eb75fb7

View File

@ -1,8 +1,13 @@
---
profile: Generic
profile: generic
target: x86
subtarget: 64
description: Build image for the x86_64
feeds:
- name: gl_feeds_common
uri: https://github.com/gl-inet/gl-feeds.git
branch: common
diffconfig: |
CONFIG_TARGET_IMAGES_GZIP=n