Compare commits

...

138 Commits

Author SHA1 Message Date
5b9f1f2f39 Re-add specific device config 2025-10-23 16:46:16 -04:00
c5bfc7907b Remove specific device config 2025-10-23 16:43:34 -04:00
533b0b5ffc Re-add specific device config 2025-10-23 16:34:37 -04:00
eba54804d3 Blank the seed file 2025-10-23 16:31:34 -04:00
09b62923a8 Re-add specific device config 2025-10-23 16:19:58 -04:00
960755e6a2 Use faster feeds mirror 2025-10-22 21:16:41 -04:00
0fa9b0d85a Streamling config options 2025-10-22 21:02:36 -04:00
4de18e6696 Add optional build clean arg to --source 2025-10-22 20:55:20 -04:00
3772d373bb Tune resource limits 2025-10-22 20:27:21 -04:00
b75597946d Improve worktree detection 2025-10-22 19:35:38 -04:00
018a91e216 Introduce reusable worktrees 2025-10-22 19:31:58 -04:00
0c61a27b06 Reorganize from_source() 2025-10-22 19:25:59 -04:00
675ed5eb39 Abandon upstream seed, untenable 2025-10-22 19:11:51 -04:00
94f60e30b1 Pass BIN_DIR to make and not .config 2025-10-22 15:46:06 -04:00
e8ccb76cc6 Remove more default buildbot configs 2025-10-21 23:58:35 -04:00
4274f876a7 Remove more default buildbot configs 2025-10-21 20:40:19 -04:00
4760c84bff Remove more default buildbot configs 2025-10-21 20:35:38 -04:00
20b3f7f4ec Strip CONFIG_ALL_KMODS 2025-10-21 10:45:18 -04:00
f178e39a28 Use CONFIG_ALL_KMODS=n in global profile 2025-10-20 16:31:48 -04:00
c7b954252d Fetch worktree branch instead of pull 2025-10-19 15:21:53 -04:00
18929109a2 Omit oldconfig step 2025-10-18 21:17:35 -04:00
8d24cb96a9 Switch to canonical make order 2025-10-18 12:27:40 -04:00
9be43af11a Make olddefconfig non-interactive 2025-10-18 11:33:04 -04:00
ce2e85d197 Attempt one step olddefconfig 2025-10-18 11:30:42 -04:00
aeead798c3 Test explicit branch 2025-09-23 16:12:57 -04:00
72355bb65a Use fetch --all to grab wt breanches 2025-09-23 15:37:13 -04:00
3053b24063 Update default release 2025-09-23 15:13:35 -04:00
186fe21d73 Update profiles 2025-09-10 19:29:56 -04:00
d63a909d54 Simplify script dir ID 2025-09-09 16:57:22 -04:00
9128c453f3 Move pfring exclusions to r4s 2025-08-19 16:54:27 -04:00
ffbd193b79 Clarify skipping lock files for --debug 2025-08-19 16:38:03 -04:00
5259c72de4 Exclude pfring kmods 2025-08-18 07:43:09 -04:00
045f43b51f Exclude more pfring packages 2025-08-15 16:53:59 -04:00
89cc3cddeb Exclude problematic packages 2025-08-13 17:34:37 -04:00
cd7449dd7c Re-disable multicore make 2025-08-11 17:44:04 -04:00
2b35e1e017 Re-enable multicore make 2025-08-11 17:10:20 -04:00
983f9ecb04 Exclude libpfring to fix compilation 2025-08-11 15:50:20 -04:00
b5f567ce2b Attempt to mix yes and execute() 2025-08-09 00:01:34 -04:00
a16e713895 Use canonincal method for now 2025-08-08 23:56:28 -04:00
70d24d7fae Replace defconfig with oldconfig 2025-08-08 22:33:30 -04:00
d5069d4c40 Add golang dependency 2025-08-08 22:24:39 -04:00
718b29cfe8 Try to omit oldconfig 2025-08-08 22:22:35 -04:00
e3ce0b6e57 Make oldconfig to prevent upstream clobbers 2025-08-08 20:50:07 -04:00
3ba76a4e8d Add early debugging 2025-08-08 19:48:53 -04:00
4f1f145a10 Fix comments 2025-08-08 14:33:50 -04:00
2123205ca0 Reformat profiles 2025-08-08 14:30:31 -04:00
e510f8ccb6 Don't build unecessary kmods 2025-08-08 14:20:50 -04:00
da398172e8 Workaround libpfring issue #26569 2025-08-06 21:10:36 -04:00
12067ac09b Disable cherrypicks by default since branch-specific 2025-08-06 21:06:25 -04:00
cf2c35b114 Specify fork with cherrypick 2025-08-06 21:01:08 -04:00
5629472aa3 Support cherrypicks 2025-08-06 20:55:59 -04:00
a7a85ee67a Use --detached worktrees 2025-08-05 14:14:16 -04:00
4890aa192d Cleanup some comments 2025-07-29 17:40:02 -04:00
819ff0add0 Update README 2025-07-29 02:13:55 -04:00
149da1be87 Update README 2025-07-29 02:12:03 -04:00
6f1bc4dd00 SHow more commit info 2025-07-29 02:01:52 -04:00
5d434f031d Remove extraneous normalize_and_ref output 2025-07-29 01:58:37 -04:00
25b5623a65 Add temp debug 2025-07-29 01:56:19 -04:00
20477c21ab Add temp debug 2025-07-29 01:54:34 -04:00
8ed85fff2b Add temp debug 2025-07-29 01:52:51 -04:00
ab8f58ca92 Add temp debug 2025-07-29 01:52:36 -04:00
20e11b7419 Add temp debug 2025-07-29 01:49:03 -04:00
11c28c7ab3 Add temp debug 2025-07-29 01:47:28 -04:00
908664b185 Resimplify worktrees 2025-07-29 01:43:53 -04:00
40ce9940ae Debug commit print 2025-07-29 01:15:10 -04:00
64ffeeca17 Fix git object 2025-07-29 01:06:01 -04:00
0106ac7eff Use full name for branch ref 2025-07-29 00:44:49 -04:00
86f5bf7e3f Skip fetch 2025-07-29 00:32:38 -04:00
a18d467c4f Hacky way to show latest commit 2025-07-29 00:25:06 -04:00
3a659b4798 Fix clashing worktrees 2025-07-29 00:05:26 -04:00
7f996e7724 Silence commond debug warning 2025-07-28 23:51:44 -04:00
3688539a90 Return early and add debug output for dependencies 2025-07-28 23:48:14 -04:00
c28d7683d8 Make BUILD_DIR worktree_dir 2025-07-28 23:44:19 -04:00
a5b559c59c Fix parsing in normalize_and_ref() 2025-07-28 23:29:46 -04:00
d22d21148c Implement per-profile modes 2025-07-28 23:24:16 -04:00
2b4dac7ef3 Hide openwrt src dir 2025-07-28 21:38:09 -04:00
498f8a7333 Use a global release object 2025-07-28 21:36:01 -04:00
d28f2e8c31 Only fetch if not checked out 2025-07-28 19:03:17 -04:00
ca3f1e82ed Use git fetch for branches 2025-07-28 19:00:44 -04:00
4b66de068b Refactor worktree code 2025-07-28 18:31:20 -04:00
1e88f1b912 Revert to serial debug 2025-07-28 17:45:51 -04:00
cbe7e0468d Use multicore debug 2025-07-28 01:02:49 -04:00
a664b70cf4 Update README 2025-07-28 00:36:14 -04:00
b5199d5682 Remove index update 2025-07-28 00:29:33 -04:00
35ec2993cc Remove worktree dir before add 2025-07-27 22:53:32 -04:00
e4838f361e Cleanup dependency arrays 2025-07-27 22:46:40 -04:00
f32b8c84b0 Update dependencies 2025-07-27 22:39:31 -04:00
f34953b3cc Fix for missing worktree metadata 2025-07-27 22:22:55 -04:00
e91394ee00 Add --depends to README 2025-07-27 21:29:26 -04:00
a40ac543e9 Use default CFLAGS 2025-07-27 00:05:03 -04:00
06a3209046 Use CFLAGS in make 2025-07-26 21:39:58 -04:00
5ef6d2dc0f Use CFLAGS var 2025-07-26 19:39:53 -04:00
36c0786255 Use -std=c17 for gcc15 2025-07-26 00:43:03 -04:00
25e66b3d19 Update openwrt default to 24.10.2 2025-07-25 19:25:30 -04:00
aa24a58aae Roll verbose into debug 2025-04-22 20:13:12 -04:00
7298fca349 User serial compilation for --debug 2025-04-22 16:58:06 -04:00
7191e10f91 Use n-1 cores 2025-04-22 16:55:43 -04:00
e80dddf9a7 Update default release 2025-04-21 16:48:51 -04:00
481e2e2277 Update print_help() 2025-02-22 17:21:03 -05:00
de84a404f0 Update default release 2025-02-22 17:06:32 -05:00
a5d57fdd3d Move from dirclean to distclean 2025-01-07 10:03:19 -05:00
732233df32 Update default release 2025-01-07 09:55:48 -05:00
93a962a008 Use zstd extension for IB too 2024-12-09 12:18:46 -05:00
ed13912034 Fix BIN_DIR bug 2024-12-09 12:10:06 -05:00
2ee0ed2a09 Add zstd package for new openwrt IB compression 2024-12-07 17:19:10 -05:00
f9f5f9a017 remove legacy python2 dependency 2024-12-07 17:03:54 -05:00
647f64c99e Move make clean options to beginning 2024-12-07 15:16:29 -05:00
e04a5a2de4 Use dirclean instead of distclean 2024-12-07 15:13:37 -05:00
395263ee66 Update feeds after distclean 2024-12-07 10:02:34 -05:00
bdc4ff67e7 Mke backup filenames human readable 2024-12-06 12:51:31 -05:00
1d078a30e0 Include target subdirs in sysupgrade filepath 2024-12-06 12:32:01 -05:00
0d8502bfac Add debugging to fix backup 2024-12-06 11:49:19 -05:00
a44254bcc9 FReformat case statements 2024-12-06 09:43:04 -05:00
dcf9aaee84 Add back partition size desc 2024-12-06 09:12:04 -05:00
8dc558a6d5 Do distclean before editing .config 2024-12-05 22:10:30 -05:00
ff275aa0ad Retry dirclean 2024-12-05 22:00:08 -05:00
0ead0af0b5 Remove kernel config overridden by defconfig 2024-12-05 21:56:59 -05:00
21899bb072 Remove tabs from profiles 2024-12-05 21:39:32 -05:00
84dc370d32 Separate debug output from verbose make 2024-12-05 21:37:15 -05:00
ab1569fced Remove unecessary element quoting 2024-12-05 21:25:11 -05:00
be5dfb2832 Reformat and simplify device profiles 2024-12-05 21:21:02 -05:00
7dbc7fc3ef Multicore --debug make 2024-11-30 20:57:50 -05:00
9efb42f944 Refactor image backup 2024-11-30 19:41:38 -05:00
6ba2335f8a Standardize var naming 2024-11-30 19:03:17 -05:00
114c9dfc68 Don't install zero dependencies 2024-11-30 18:28:34 -05:00
864756c815 Remove --skip-unavailable for dnf5 2024-11-29 22:20:31 -05:00
116636c9a3 Archive existing image builds 2024-11-29 22:17:09 -05:00
dc3ccef3fd Update comments 2024-11-26 11:13:35 -05:00
5ae94d72b4 Use make distclean 2024-11-25 17:23:59 -05:00
b245bffbc8 Disable buildbot 2024-11-20 11:41:10 -05:00
98c17f4ad7 Don't remove build dir 2024-11-19 20:01:52 -05:00
a75505f467 Reuse build dir 2024-11-18 09:55:48 -05:00
cabd3aca8b Add python3-devel to RHEL dependencies 2024-11-15 20:46:11 -05:00
75303a619e Use single-threaded make for --debug 2024-11-15 13:58:14 -05:00
60c73cac78 Don't pause on commit hash 2024-11-14 17:13:47 -05:00
3c8b230cc3 Skip unavailable dependencies 2024-11-12 13:10:57 -05:00
d22e0ead04 Additional execute() 2024-10-24 16:24:06 -04:00
e43971d3de Update profiles 2024-10-24 16:06:26 -04:00
4 changed files with 608 additions and 619 deletions

5
.gitignore vendored
View File

@@ -1,7 +1,8 @@
src/
bin/
.vscode/
.dependencies
.dependencies_sc
*.code-workspace
backups/
.dependencies_source
.dependencies_ib

View File

@@ -1,10 +1,10 @@
# openwrtbuilder
Sanely build and deploy OpenWRT images using the Image Builder or from source code.
Build and deploy OpenWRT images using shell-style device profiles, via source code or the official Image Builder.
## Usage
`openwrtbuilder [--option [VALUE]]... -p PROFILE [-p PROFILE]...`
`openwrtbuilder [OPTION [VALUE]]... -p PROFILE [-p PROFILE]...`
## Options
@@ -13,8 +13,9 @@ Sanely build and deploy OpenWRT images using the Image Builder or from source co
--release,-r,--version,-v RELEASE ("snapshot", "22.03.3")
--buildroot,-b PATH (Default: script directory)
--source
Build image from source, not from Image Builder
Allows make config options to be passed in profile
Build image from source code, not from Image Builder.
Allows make config options to be passed in profile.
Uses git worktree for multi-profile deduplication.
--ssh-upgrade HOST
Example: root@192.168.1.1
--ssh-backup SSH_PATH
@@ -24,6 +25,8 @@ Sanely build and deploy OpenWRT images using the Image Builder or from source co
--reset
Cleanup all source and output files
Can be combined with -p to reset a specific profile
--depends
Force dependency installation
--yes,-y
Assume yes for all questions (automatic mode)
--debug,-d
@@ -32,15 +35,22 @@ Sanely build and deploy OpenWRT images using the Image Builder or from source co
## Profiles
See `./profiles` for example device profile definitions.
See `profiles` for example device profile definitions. Multiple `--profile` can be passed at once.
The default build mode is `imagebuilder` unless `--source` is passed. Default profile modes can be set individually in `profiles`.
## Examples
* `./openwrtbuilder -p r4s -r snapshot --debug`
* `./openwrtbuilder -p ax6000 -r 23.05.5 --source --debug`
* `./openwrtbuilder -p rpi4 -r 23.05.5 --flash /dev/sdX`
* `./openwrtbuilder -p linksys -r snapshot --ssh-upgrade root@192.168.1.1`
* `openwrtbuilder -p r4s -p ax6000`
* `openwrtbuilder -p r4s -r snapshot --debug`
* `openwrtbuilder -p ax6000 -r 23.05.5 --source --debug`
* `openwrtbuilder -p rpi4 -r 23.05.5 --flash /dev/sdX`
* `openwrtbuilder -p linksys -r snapshot --ssh-upgrade root@192.168.1.1`
## Additional Info
Did you find `openwrtbuilder` useful? [Buy me a coffee!](https://paypal.me/bryanroessler)
Find `openwrtbuilder` useful? [Paypal me a coffee!](https://paypal.me/bryanroessler)
[↓ ↓ ↓ Bitcoin ↓ ↓ ↓](bitcoin:bc1q7wy0kszjavgcrvkxdg7mf3s6rh506rasnhfa4a)
[![Bitcoin](https://repos.bryanroessler.com/files/bc1q7wy0kszjavgcrvkxdg7mf3s6rh506rasnhfa4a.png)](bitcoin:bc1q7wy0kszjavgcrvkxdg7mf3s6rh506rasnhfa4a)

File diff suppressed because it is too large Load Diff

319
profiles
View File

@@ -1,219 +1,130 @@
#!/usr/bin/env bash
# Device profiles for openwrtbuilder
# shellcheck disable=SC2034
# This file contains a set of device profiles for openwrtbuilder
# bash doesn't like nested arrays so we use strings instead
# Packages to install for all profiles
default_packages="\
luci \
luci-ssl \
luci-proto-wireguard \
luci-app-statistics \
collectd-mod-sensors \
collectd-mod-thermal \
collectd-mod-conntrack \
collectd-mod-cpu \
nano \
htop \
diffutils \
tar \
iperf3 \
zsh \
rsync \
openssh-sftp-server \
"
# Default (but optional) packages (precede with "-" to exclude)
default_packages=(nano htop diffutils tar iperf3 zsh rsync curl tcpdump
openssh-sftp-server luci luci-ssl luci-proto-wireguard luci-app-statistics
collectd-mod-sensors collectd-mod-thermal collectd-mod-conntrack collectd-mod-cpu
)
# Default (but optional) kernel configs
default_configs=(
)
# Current devices
# Main router
declare -Ag r4s
r4s['device']="friendlyarm_nanopi-r4s"
r4s['target']="rockchip/armv8"
r4s['filesystem']="ext4"
r4s['packages']="\
$default_packages \
luci-app-ddns \
luci-app-sqm \
irqbalance \
collectd-mod-df \
usbutils \
kmod-usb-storage \
kmod-usb-storage-uas \
kmod-fs-btrfs \
btrfs-progs \
block-mount \
smcroute \
avahi-daemon \
curl \
ethtool \
ca-bundle"
# The following are source mode only
r4s['config']="\
CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y \
CONFIG_BTRFS_PROGS_ZSTD=y \
CONFIG_TARGET_ROOTFS_PARTSIZE=512 \
CONFIG_TARGET_KERNEL_PARTSIZE=32"
r4s['files']="\
/mnt/backup"
declare -Ag r4s=(
[mode]="source"
[device]="friendlyarm_nanopi-r4s"
[target]="rockchip/armv8"
[filesystem]="ext4"
[packages]="${default_packages[*]} \
luci-app-ddns luci-app-sqm \
adblock luci-app-adblock \
collectd-mod-df usbutils kmod-usb-storage kmod-usb-storage-uas \
kmod-fs-btrfs btrfs-progs block-mount smcroute avahi-daemon \
ethtool ca-bundle tailscale"
[config]="${default_configs[*]} \
CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \
CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32"
[files]="/mnt/backup"
# For 24.10 branch (Linux 6.6)
# [cherrypicks]="wurzerj:59d6e31 wurzerj:bb251b8" # fix inconsistent reboot
)
# Access point
declare -Ag ax6000
ax6000['device']="xiaomi_redmi-router-ax6000-stock"
ax6000['target']="mediatek/filogic"
ax6000['release']="snapshot"
ax6000['filesystem']="squashfs"
ax6000['packages']="\
$default_packages \
-dnsmasq \
-odhcpd-ipv6only \
-nftables \
-firewall4"
declare -Ag ax6000=(
[mode]="imagebuilder"
[device]="xiaomi_redmi-router-ax6000-stock"
[target]="mediatek/filogic"
[release]="snapshot"
[filesystem]="squashfs"
[packages]="${default_packages[*]} \
-dnsmasq -odhcpd-ipv6only -nftables -firewall4 tailscale"
)
# For converted uboots
# declare -Ag ax6000_uboot
# ax6000_uboot['device']="xiaomi_redmi-router-ax6000-ubootmod"
# ax6000_uboot['target']="mediatek/filogic"
# ax6000_uboot['release']="snapshot"
# ax6000_uboot['filesystem']="squashfs"
# ax6000_uboot['packages']="\
# $default_packages \
# -dnsmasq \
# -odhcpd-ipv6only \
# -nftables \
# -firewall4 \
# -kmod-nft-offload \
# collectd-mod-iwinfo"
declare -Ag ax6000_uboot=(
[mode]="imagebuilder"
[device]="xiaomi_redmi-router-ax6000-ubootmod"
[target]="mediatek/filogic"
[release]="snapshot"
[filesystem]="squashfs"
[packages]="${default_packages[*]} \
-dnsmasq -odhcpd-ipv6only -nftables -firewall4"
)
# Remote NAS
declare -Ag n5100
n5100['device']="generic"
n5100['target']="x86/64"
n5100['filesystem']="squashfs"
n5100['packages']="\
$default_packages \
luci-app-ddns \
irqbalance \
collectd-mod-df \
usbutils \
kmod-usb-storage \
kmod-usb-storage-uas \
kmod-fs-btrfs \
btrfs-progs \
block-mount \
cryptsetup \
kmod-crypto-xts \
smcroute \
avahi-daemon \
curl \
ethtool \
ca-bundle \
smartmontools \
intel-microcode \
lm-sensors \
samba4-server \
luci-app-samba4 \
tailscale \
shadow-useradd"
# The following are source mode only
n5100['config']="\
CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y \
CONFIG_BTRFS_PROGS_ZSTD=y \
CONFIG_TARGET_ROOTFS_PARTSIZE=512 \
CONFIG_TARGET_KERNEL_PARTSIZE=32"
n5100['files']="\
/mnt/backup"
declare -Ag n5100=(
[device]="generic"
[target]="x86/64"
[filesystem]="squashfs"
[packages]="${default_packages[*]} \
luci-app-ddns irqbalance collectd-mod-df \
usbutils kmod-usb-storage kmod-usb-storage-uas kmod-fs-btrfs \
btrfs-progs block-mount cryptsetup kmod-crypto-xts smcroute \
avahi-daemon curl ethtool ca-bundle smartmontools intel-microcode \
lm-sensors samba4-server luci-app-samba4 tailscale shadow-useradd"
[config]="${default_configs[*]} \
CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \
CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32"
# [files]="/mnt/backup"
)
# Dusty drawer
declare -Ag rpi4
rpi4['device']="rpi-4"
rpi4['target']="bcm27xx/bcm2711"
rpi4['filesystem']="ext4"
rpi4['packages']="\
$default_packages \
kmod-usb-net-asix-ax88179 \
kmod-usb-net-rtl8152 \
luci-app-upnp \
luci-app-pbr \
-dnsmasq \
dnsmasq-full \
luci-app-ddns \
luci-app-sqm"
declare -Ag rpi4=(
[device]="rpi-4"
[target]="bcm27xx/bcm2711"
[filesystem]="ext4"
[packages]="${default_packages[*]} \
luci-app-upnp luci-app-pbr -dnsmasq dnsmasq-full luci-app-ddns luci-app-sqm \
kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152"
)
# Stock builds
declare -Ag r4s_stock
r4s_stock['device']="friendlyarm_nanopi-r4s"
r4s_stock['target']="rockchip/armv8"
r4s_stock['filesystem']="ext4"
r4s_stock['release']="snapshot"
declare -Ag r4s_stock=(
[device]="friendlyarm_nanopi-r4s"
[target]="rockchip/armv8"
[filesystem]="ext4"
[release]="snapshot"
)
# Old devices
declare -Ag totolink
totolink['device']="totolink_x5000r"
totolink['target']="ramips/mt7621"
totolink['filesystem']="squashfs"
totolink['packages']="\
$default_packages \
-dnsmasq \
-odhcpd-ipv6only \
-nftables \
-firewall4 \
-kmod-nft-offload \
collectd-mod-iwinfo"
declare -Ag totolink=(
[device]="totolink_x5000r"
[target]="ramips/mt7621"
[filesystem]="squashfs"
[packages]="${default_packages[*]} \
-dnsmasq -odhcpd-ipv6only -nftables -firewall4 \
-kmod-nft-offload collectd-mod-iwinfo"
)
declare -Ag archer
archer['device']="tplink_archer-c7-v2"
archer['target']="ath79/generic"
archer['filesystem']="squashfs"
archer['packages']="\
$default_packages \
-dnsmasq \
-odhcpd \
-iptables \
-ath10k-firmware-qca988x-ct \
ath10k-firmware-qca988x-ct-full-htt"
declare -Ag archer=(
[device]="tplink_archer-c7-v2"
[target]="ath79/generic"
[filesystem]="squashfs"
[packages]="${default_packages[*]} -dnsmasq -odhcpd -iptables \
-ath10k-firmware-qca988x-ct ath10k-firmware-qca988x-ct-full-htt"
)
declare -Ag linksys
linksys['device']="linksys_ea8300"
linksys['target']="ipq40xx/generic"
linksys['filesystem']="squashfs"
linksys['packages']="\
$default_packages \
-dnsmasq \
-odhcpd \
-iptables"
declare -Ag linksys=(
[device]="linksys_ea8300"
[target]="ipq40xx/generic"
[filesystem]="squashfs"
[packages]="${default_packages[*]} \
-dnsmasq -odhcpd -iptables"
)
declare -Ag r2s
r2s['device']="friendlyarm_nanopi-r2s"
r2s['target']="rockchip/armv8"
r2s['filesystem']="ext4"
r2s['packages']="\
$default_packages \
luci-app-upnp \
luci-app-pbr \
-dnsmasq \
dnsmasq-full \
luci-app-ddns \
luci-app-sqm \
luci-app-statistics \
collectd-mod-sensors \
collectd-mod-thermal \
collectd-mod-conntrack \
smcroute \
curl \
ethtool"
declare -Ag r2s=(
[device]="friendlyarm_nanopi-r2s"
[target]="rockchip/armv8"
[filesystem]="ext4"
[packages]="${default_packages[*]} \
luci-app-upnp luci-app-pbr -dnsmasq dnsmasq-full \
luci-app-ddns luci-app-sqm luci-app-statistics collectd-mod-sensors \
collectd-mod-thermal collectd-mod-conntrack smcroute curl ethtool"
)
declare -Ag r2s_tr
r2s_tr['device']="friendlyarm_nanopi-r2s"
r2s_tr['target']="rockchip/armv8"
r2s_tr['filesystem']="ext4"
r2s_tr['packages']="\
$default_packages \
luci-app-upnp \
luci-app-pbr \
luci-app-ddns \
luci-app-statistics \
collectd-mod-sensors \
collectd-mod-thermal \
collectd-mod-conntrack \
curl \
ethtool \
travelmate"
declare -Ag r2s_tr=(
[device]="friendlyarm_nanopi-r2s"
[target]="rockchip/armv8"
[filesystem]="ext4"
[packages]="${default_packages[*]} \
luci-app-upnp luci-app-pbr luci-app-ddns \
luci-app-statistics collectd-mod-sensors collectd-mod-thermal \
collectd-mod-conntrack curl ethtool travelmate"
)