From b70d7cda7f29de1ec0952f4caf759481d560e4dd Mon Sep 17 00:00:00 2001 From: Jan Delgado Date: Sat, 30 May 2026 13:32:31 +0200 Subject: [PATCH 1/4] update to OpenWrt 25.12.4 --- CHANGELOG.md | 103 ++++++++++++++++--------------- README.md | 89 +++++++++++++------------- example-glinet-gl-ar750.conf | 5 +- example-glinet-gl-mt300n-v2.conf | 2 +- example-nexx-wt3020.conf | 13 +--- example-rpi2.conf | 4 +- example-rpi4.conf | 4 +- example-wrt1043nd.conf | 2 +- example-x86_64-snapshot.conf | 4 +- example-x86_64.conf | 4 +- 10 files changed, 113 insertions(+), 117 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ee67f4..553153a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,140 +1,143 @@ # Changelog for lede-dockerbuilder +## v3.9 [2026-05-30] + +- Upgrade to OpenWrt 25.12.4 + ## v3.8 [2025-02-09] -* Upgrade to OpenWrt 24.10.0 +- Upgrade to OpenWrt 24.10.0 ## v3.7 [2024-11-10] -* Upgrade to OpenWrt 23.05.5 +- Upgrade to OpenWrt 23.05.5 ## v3.6 [2024-08-13] -* Upgrade to OpenWrt 23.05.4 -* pin nix package version +- Upgrade to OpenWrt 23.05.4 +- pin nix package version ## v3.5 [2023-11-05] -* Upgrade to OpenWrt 23.05.0 & make examples run again -* Ugrade docker base image +- Upgrade to OpenWrt 23.05.0 & make examples run again +- Ugrade docker base image ## v3.4 [2023-04-19] -* Upgrade to OpenWrt 22.03.4 +- Upgrade to OpenWrt 22.03.4 ## v3.3 [2022-09-19] -* Upgrade to OpenWrt 22.03.0 -* add script to run x86_64 image in qemu +- Upgrade to OpenWrt 22.03.0 +- add script to run x86_64 image in qemu ## v3.2 [2022-08-07] -* build image using nix-shell, which does not require a container +- build image using nix-shell, which does not require a container ## v3.1 [2022-05-03] -* Upgrade to OpenWrt 21.02.3 -* Add an example for the upcoming OpenWrt 22.03 version +- Upgrade to OpenWrt 21.02.3 +- Add an example for the upcoming OpenWrt 22.03 version ## v3.0 [2022-05-03] -* add experimental support for nerdctl with the new `--nerdctl` option -* `--dockerless` option removed, use `--podman` or `--nerdctl` instead. +- add experimental support for nerdctl with the new `--nerdctl` option +- `--dockerless` option removed, use `--podman` or `--nerdctl` instead. Docker is still the default -* `--skip-sudo` removed, is now the default. Use `--sudo` to run commands with +- `--skip-sudo` removed, is now the default. Use `--sudo` to run commands with sudo -* use ubuntu LTS as base image +- use ubuntu LTS as base image ## v2.11 [2022-03-16] -* bump to OpenWrt 21.02.2 +- bump to OpenWrt 21.02.2 ## v2.10 [2021-09-19] -* bump to OpenWrt 21.02.0 +- bump to OpenWrt 21.02.0 ## v2.9 [2021-08-20] -* bump to OpenWrt 21.02.0-rc4 +- bump to OpenWrt 21.02.0-rc4 ## v2.8 [2021-08-02] -* bump to OpenWrt 21.02.0-rc3 -* add new `profile` option to show available profiles -* ci uses matrix build now +- bump to OpenWrt 21.02.0-rc3 +- add new `profile` option to show available profiles +- ci uses matrix build now ## v2.7 [2021-03-17] -* bump to OpenWrt 19.07.7 +- bump to OpenWrt 19.07.7 ## v2.6 [2021-02-17] -* bump to OpenWrt 19.07.6 -* bump alpine in builder image to 3.13 +- bump to OpenWrt 19.07.6 +- bump alpine in builder image to 3.13 ## v2.5 [2020-10-21] -* bump to OpenWrt 19.07.4 +- bump to OpenWrt 19.07.4 ## v2.4 [2020-05-25] -* new option `--docker-opts OPTS` to pass additional docker options to docker-run -* examples upgraded to use OpenWrt 19.07.3 -* new Raspberry Pi 4 example +- new option `--docker-opts OPTS` to pass additional docker options to docker-run +- examples upgraded to use OpenWrt 19.07.3 +- new Raspberry Pi 4 example ## v2.3 [2020-01-26] -* changed: when using podman, run as root in container -* new: optionally disable services in `/etc/init.d` with variable `LEDE_DISABLED_SERVICES` +- changed: when using podman, run as root in container +- new: optionally disable services in `/etc/init.d` with variable `LEDE_DISABLED_SERVICES` ## v2.2 [2020-01-24] -* examples upgraded to use 19.07.0 +- examples upgraded to use 19.07.0 ## v2.1 [2019-12-01] -* new environment variable `REPOSITORIES_CONF` added to specify custom +- new environment variable `REPOSITORIES_CONF` added to specify custom `repositories.conf` file -* replace `gosu` by `su-exec` +- replace `gosu` by `su-exec` ## v2.0 [2019-07-28] -* add new option `--dockerless` to allow dockerless operation using buildah +- add new option `--dockerless` to allow dockerless operation using buildah and podman. -* `build` option does now longer implicitly builds the docker image. Must now +- `build` option does now longer implicitly builds the docker image. Must now explicitly call `build-docker-image` before building an OpenWrt image. -* minor optimizations in Dockerfile +- minor optimizations in Dockerfile ## v1.5 [2019-07-06] -* examples upgraded to use 18.06.4 +- examples upgraded to use 18.06.4 ## v1.4 [2019-03-29] -* build container now uses Alpine 3.9 as base image -* examples upgraded to use 18.06.2 +- build container now uses Alpine 3.9 as base image +- examples upgraded to use 18.06.2 ## v1.3 [2019-02-02] -* bumped version to OpenWRT 18.06.2 -* new x86_64 example with info on how to run in qemu +- bumped version to OpenWRT 18.06.2 +- new x86_64 example with info on how to run in qemu ## v1.2 [2018-09-01] -* `LEDE_BUILDER_URL` is now an optional parameter -* bumped version to OpenWRT 18.06.1 -* simplified examples (by removing LEDE_BUILDER_URL) -* output dir will be automatically created -* minor changes +- `LEDE_BUILDER_URL` is now an optional parameter +- bumped version to OpenWRT 18.06.1 +- simplified examples (by removing LEDE_BUILDER_URL) +- output dir will be automatically created +- minor changes ## v1.1 [2018-08-02] -* Support for [OpenWRT 18.06](https://openwrt.org/releases/18.06/notes-18.06.0) added. +- Support for [OpenWRT 18.06](https://openwrt.org/releases/18.06/notes-18.06.0) added. Since LEDE and OpenWRT projects merged, all examples will now use OpenWRT. -* CI added (checks script and tries to build examples) +- CI added (checks script and tries to build examples) ## v1.0 (2018-08-02) Just tagged the last release for LEDE 17.01 / OpenWRT 15.05 before upgrading to OpenWRT 18.06 - diff --git a/README.md b/README.md index d9f9974..6e117e4 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,11 @@ ## What Easily and quickly build [OpenWrt](https://openwrt.org/) custom images (e.g. -for your embedded device or a Raspberry PI) using a self-contained docker +for your embedded device or a Raspberry Pi) using a self-contained docker container or a [nix-shell](https://nixos.wiki/wiki/Development_environment_with_nix-shell) and the [OpenWrt image builder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder). On the builder host, Docker, podman/buildah (for dockerless operation) or nix-shell is the -only requirement. Supports latest OpenWrt release (24.10.x). +only requirement. Supports the latest OpenWrt release (25.12.4). ### Note @@ -41,10 +41,10 @@ for a docker images to compile OpenWrt completely from source. ## Why -* customized and optimized (size) images with your personal configurations -* full automatic image creation (could be run in CI) -* repeatable builds -* easy configuration, fast build +- customized and optimized (size) images with your personal configurations +- full automatic image creation (could be run in CI) +- repeatable builds +- easy configuration, fast build ## How @@ -59,7 +59,7 @@ $ ./builder.sh build example-nexx-wt3020.conf The `build-docker-image` command will first build the docker image containing the actual image builder. The resulting docker image is per default tagged with -`openwrt-imagebuilder:--`. The `build` command +`openwrt-imagebuilder:--`. The `build` command will afterwards run a container, which builds the actual OpenWrt image. The final OpenWrt image will be available in the `output/` directory. @@ -76,10 +76,10 @@ container first, therefore it is usually faster. ### Usage -``` +```text Dockerized LEDE/OpenWRT image builder. -Usage: $1 COMMAND CONFIGFILE [OPTIONS] +Usage: ./builder.sh COMMAND CONFIGFILE [OPTIONS] COMMAND is one of: build-docker-image - build the docker image (run once first) profiles - show available profiles for current configuration @@ -115,60 +115,59 @@ Example: # use nix to build the OpenWrt image, no need to build a container first ./builder.sh build example-x86_64.conf --nix - ``` #### Builder runtime -* By default docker will be used to build and run the container. -* When called with `--podman` option, lede-dockerbuilder will use buildah and +- By default docker will be used to build and run the container. +- When called with `--podman` option, lede-dockerbuilder will use buildah and podman to build and run the container. -* When called with `--nerdctl` option, lede-dockerbuilder will use nerdctl to +- When called with `--nerdctl` option, lede-dockerbuilder will use nerdctl to build and run the container. -* Use the `--sudo` option to run the container command with sudo. -* Use the `--nix` option to run the build in a [nix-shell](shell.nix) (instead +- Use the `--sudo` option to run the container command with sudo. +- Use the `--nix` option to run the build in a [nix-shell](shell.nix) (instead of using a container runtime) When using a container builder like docker, the build container will be newly created on every build. When using the nix builder, the build environment will -be reused, which is ususally faster. By default, the nix build environments are +be reused, which is usually faster. By default, the nix build environments are installed in the `.build` directory, relative to the `builder.sh` script. This can be overriden with the `NIX_BUILD_DIR` environment variable. ### Configuration file -The configuration file is quiet self-explanatory. The following parameters are +The configuration file is quite self-explanatory. The following parameters are mandatory (prefixed with `LEDE_` for historical reasons, config works also with OpenWrt): -* `LEDE_TARGET` - Target architecture -* `LEDE_SUBTARGET` - Sub target architecture -* `LEDE_RELEASE` - Release to use -* `LEDE_PROFILE` - Profile to use -* `LEDE_PACKAGES` - list of packages to include/exclude. Prepend package to be excluded with `-` -* `LEDE_DISABLED_SERVICES` - list of services to disable on startup in /etc/init.d +- `LEDE_TARGET` - Target architecture +- `LEDE_SUBTARGET` - Sub target architecture +- `LEDE_RELEASE` - Release to use +- `LEDE_PROFILE` - Profile to use +- `LEDE_PACKAGES` - list of packages to include/exclude. Prepend package to be excluded with `-` +- `LEDE_DISABLED_SERVICES` - list of services to disable on startup in /etc/init.d `LEDE_TARGET`, `LEDE_SUBTARGET` and `LEDE_RELEASE` are used to construct the URL of the image builder binary well as for the construction for the tag of the docker image. You can find the proper values by browsing the OpenWrt website e.g. -[here](https://openwrt.org/docs/techref/targets/start) and +[here](https://openwrt.org/docs/techref/targets/start) and [here](https://openwrt.org/toh/views/toh_admin_fw-pkg-download). In addition the following optional parameters can be set, to further control output and image creation: -* `OUTPUT_DIR` - path where resulting images are stored. Defaults to `output` +- `OUTPUT_DIR` - path where resulting images are stored. Defaults to `output` in the scripts directory (can be overridden by -o parameter). Will be automatically created. -* `ROOTFS_OVERLAY` - path of the root file system overlay directory. Defaults +- `ROOTFS_OVERLAY` - path of the root file system overlay directory. Defaults to `rootfs-overlay` in the scripts directory (can be overridden by -f parameter). -* `LEDE_BUILDER_URL` - URL of the LEDE/OpenWrt image builder to use, override - if you do not wish to use the default builder - (`https://downloads.openwrt.org/releases/$LEDE_RELEASE/targets/$LEDE_TARGET/$LEDE_SUBTARGET/openwrt-imagebuilder-$LEDE_RELEASE-$LEDE_TARGET-$LEDE_SUBTARGET.Linux-x86_64.tar.xz`) -* `REPOSITORIES_CONF` - optional file file to use instead of the default +- `LEDE_BUILDER_URL` - URL of the LEDE/OpenWrt image builder to use, override + if you do not wish to use the default builder + (`https://downloads.openwrt.org/releases/$LEDE_RELEASE/targets/$LEDE_TARGET/$LEDE_SUBTARGET/openwrt-imagebuilder-$LEDE_RELEASE-$LEDE_TARGET-$LEDE_SUBTARGET.Linux-x86_64.tar.xz`) +- `REPOSITORIES_CONF` - optional file file to use instead of the default `repositories.conf`. The file will be mounted in the container. Look at the [official documentation](https://openwrt.org/docs/guide-user/additional-software/imagebuilder#add_package_repositories_optional) for more information. @@ -187,7 +186,7 @@ encrypted USB disk attached so I can use it as a simple NAS with samba and ftp: ``` # LEDE profile to use: NEXX WT3020 LEDE_PROFILE=nexx_wt3020-8m -LEDE_RELEASE=23.05.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=ramips LEDE_SUBTARGET=mt7620 @@ -216,7 +215,7 @@ the resulting image to the directory pointed to by `ROOTFS_OVERLAY` (default: ### Example directory structure -The following is an example directoy layout, which I use to create a customized +The following is an example directory layout, which I use to create a customized OpenWrt image for my [NEXX WT3020](https://openwrt.org/toh/nexx/wt3020) router (including the generated output). @@ -269,15 +268,15 @@ e.g. `./builder.sh shell example.cfg`. These examples evolved from images I use myself. -* [image with LUCI web GUI for the Raspberry PI 2](example-rpi2.conf). +- [image with LUCI web GUI for the Raspberry Pi 2](example-rpi2.conf). Just ~8MB gziped. I use this image on my home dnsmasq/openvpn 'server'. -* [image with LUCI web GUI and adblocker for the Raspberry PI 4](example-rpi4.conf) -* [image for the TP-Link WR1043ND](example-wrt1043nd.conf) -* [image with samba, vsftpd and encrypted usb disk for - NEXX-WT3020](example-nexx-wt3020.conf). Is the predessor of ... -* [image with samba, vsftpd and encrypted usb disk for - GINET-GL-M300N V2](example-glinet-gl-mt300n-v2.conf). Is the predessor of ... -* [image with samba, vsftpd, adblock and encrypted usb disk for +- [image with LUCI web GUI and adblocker for the Raspberry Pi 4](example-rpi4.conf) +- [image for the TP-Link WR1043ND](example-wrt1043nd.conf) +- [image with samba, vsftpd and encrypted usb disk for + NEXX-WT3020](example-nexx-wt3020.conf). Is the predecessor of ... +- [image with samba, vsftpd and encrypted usb disk for + GINET-GL-M300N V2](example-glinet-gl-mt300n-v2.conf). Is the predecessor of ... +- [image with samba, vsftpd, adblock and encrypted usb disk for GINET-GL-AR750](example-glinet-gl-ar750.conf). This is my travel router setup where I have an encrypted USB disk connected to the router, accessible through SMB or FTP and have an adblocker running. Useful if you travel much. @@ -298,10 +297,10 @@ The [example-x86_64.conf](example-x86_64.conf) file can be used to build a x86_64 based OpenWrt image which can also be run in qemu, e.g., if you need a virtual router/firewall. -First build the image with `builder.sh build example-x86_64.conf`, then unpack -the resulting image with e.g. `gunzip -output/openwrt-24.10.0-x86-64-generic-ext4-combined.img.gz`. Finally the image -can be started with qemu (or simply use [run_in_qemu.sh](etc/run_in_qemu.sh)) +First build the image with e.g. `builder.sh build example-x86_64.conf --nix`, then unpack the +resulting image with e.g. `gunzip output/openwrt-<release>-x86-64-generic-ext4-combined.img.gz`. +Finally the image can be started with qemu (or simply use [run_in_qemu.sh](etc/run_in_qemu.sh) and +pass it the image name to boot) ```text qemu-system-x86_64 \ @@ -341,7 +340,7 @@ image using the snapshot release. ## Author -(C) Copyright 2017-2022 by Jan Delgado +(C) Copyright 2017-2026 by Jan Delgado ## License diff --git a/example-glinet-gl-ar750.conf b/example-glinet-gl-ar750.conf index ac29ffb..1580d64 100644 --- a/example-glinet-gl-ar750.conf +++ b/example-glinet-gl-ar750.conf @@ -1,10 +1,13 @@ # LEDE profile to use: GL.iNet GL-AR750 LEDE_PROFILE=glinet_gl-ar750 -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=ath79 LEDE_SUBTARGET=generic # list packages to include in LEDE image. prepend packages to deinstall with "-". +# +# include all packages to build a mobile "NAS" supporting disk encryption: +# vsftpd (needs to be configured afterwards), cryptsetup, usb disk drivers. LEDE_PACKAGES="-ath10k-firmware-qca9887-ct ath10k-firmware-qca9887-ct-full-htt \ ksmbd-server hd-idle luci-app-hd-idle diffutils\ kmod-usb-storage-uas kmod-scsi-core kmod-fs-ext4 ntfs-3g\ diff --git a/example-glinet-gl-mt300n-v2.conf b/example-glinet-gl-mt300n-v2.conf index bc73d41..1810422 100644 --- a/example-glinet-gl-mt300n-v2.conf +++ b/example-glinet-gl-mt300n-v2.conf @@ -1,6 +1,6 @@ # profile to use: GL.iNet GL-MT300N V2 LEDE_PROFILE=glinet_gl-mt300n-v2 -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=ramips LEDE_SUBTARGET=mt76x8 diff --git a/example-nexx-wt3020.conf b/example-nexx-wt3020.conf index 3d939ef..2e95846 100644 --- a/example-nexx-wt3020.conf +++ b/example-nexx-wt3020.conf @@ -1,21 +1,12 @@ # LEDE profile to use: NEXX WT3020 LEDE_PROFILE=nexx_wt3020-8m -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=ramips LEDE_SUBTARGET=mt7620 # list packages to include in LEDE image. prepend packages to deinstall with "-". # -# include all packages to build a mobile "NAS" supporting disk encryption: -# vsftpd (needs to be configured afterwards), cryptsetup, usb disk drivers. -# had to drop ksmbd with 24.10.0 since image became to large. -LEDE_PACKAGES="block-mount vsftpd\ - kmod-usb-storage-uas kmod-scsi-core lsblk\ - cryptsetup kmod-crypto-xts\ - kmod-mt76 kmod-usb2 kmod-usb-ohci kmod-usb-core kmod-dm kmod-crypto-ecb\ - kmod-crypto-misc kmod-crypto-cbc kmod-crypto-crc32c kmod-crypto-hash\ - kmod-crypto-user\ - -ppp -kmod-ppp -kmod-pppoe -kmod-pppox -ppp-mod-pppoe -opkg\ +LEDE_PACKAGES="-ppp -kmod-ppp -kmod-pppoe -kmod-pppox -ppp-mod-pppoe -opkg\ -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only" # optionally override OUTPUT_DIR and ROOTFS_OVERLAY directory location here diff --git a/example-rpi2.conf b/example-rpi2.conf index 0031d75..be52484 100644 --- a/example-rpi2.conf +++ b/example-rpi2.conf @@ -1,10 +1,10 @@ LEDE_PROFILE=rpi-2 -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=bcm27xx LEDE_SUBTARGET=bcm2709 # list packages to include in LEDE image. prepend packages to deinstall with "-". -LEDE_PACKAGES="base-files busybox dropbear mtd uci opkg netifd fstools uclient-fetch \ +LEDE_PACKAGES="base-files busybox dropbear mtd uci netifd fstools uclient-fetch \ logd kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835 \ kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 dnsmasq \ -ppp -ppp-mod-pppoe luci nginx-mod-luci nginx-ssl acme luci-app-acme" diff --git a/example-rpi4.conf b/example-rpi4.conf index e60d77c..ab9ba0c 100644 --- a/example-rpi4.conf +++ b/example-rpi4.conf @@ -1,11 +1,11 @@ # Demo for Raspberry 4. LEDE_PROFILE=rpi-4 -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=bcm27xx LEDE_SUBTARGET=bcm2711 # list packages to include in LEDE image. prepend packages to deinstall with "-". -LEDE_PACKAGES="dropbear mtd uci opkg netifd fstools uclient-fetch kmod-usb-hid \ +LEDE_PACKAGES="dropbear mtd uci netifd fstools uclient-fetch kmod-usb-hid \ kmod-sound-core kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 \ dnsmasq -ppp -ppp-mod-pppoe luci nginx-ssl nginx-mod-luci luci-app-adblock adblock acme luci-app-acme" diff --git a/example-wrt1043nd.conf b/example-wrt1043nd.conf index a53c886..e5c46bc 100644 --- a/example-wrt1043nd.conf +++ b/example-wrt1043nd.conf @@ -1,7 +1,7 @@ # OpenWRT profile to use: tp link WR1043ND LEDE_PROFILE=tplink_tl-wr1043nd-v2 LEDE_TARGET=ath79 -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_SUBTARGET=generic # list packages to include in the image. prepend packages to deinstall with "-". diff --git a/example-x86_64-snapshot.conf b/example-x86_64-snapshot.conf index e1deea0..87bb99b 100644 --- a/example-x86_64-snapshot.conf +++ b/example-x86_64-snapshot.conf @@ -7,10 +7,10 @@ LEDE_TARGET=x86 LEDE_SUBTARGET=64 # list packages to include in LEDE image. prepend packages to deinstall with "-". -LEDE_PACKAGES="base-files busybox dropbear mtd uci opkg netifd \ +LEDE_PACKAGES="base-files busybox dropbear mtd uci netifd \ fstools uclient-fetch logd kmod-usb-hid dnsmasq luci-nginx " -LEDE_BUILDER_URL="https://downloads.openwrt.org/$LEDE_RELEASE/targets/$LEDE_TARGET/$LEDE_SUBTARGET/openwrt-imagebuilder-$LEDE_TARGET-$LEDE_SUBTARGET.Linux-x86_64.tar.xz" +LEDE_BUILDER_URL="https://downloads.openwrt.org/$LEDE_RELEASE/targets/$LEDE_TARGET/$LEDE_SUBTARGET/openwrt-imagebuilder-$LEDE_TARGET-$LEDE_SUBTARGET.Linux-x86_64.tar.xz" # optionally override OUTPUT_DIR and ROOTFS_OVERLAY directory location here diff --git a/example-x86_64.conf b/example-x86_64.conf index 5c33445..94d2a84 100644 --- a/example-x86_64.conf +++ b/example-x86_64.conf @@ -2,12 +2,12 @@ # See README.md for info on running this image with QEMU. # LEDE_PROFILE=generic -LEDE_RELEASE=24.10.0 +LEDE_RELEASE=25.12.4 LEDE_TARGET=x86 LEDE_SUBTARGET=64 # list packages to include in LEDE image. prepend packages to deinstall with "-". -LEDE_PACKAGES="dropbear mtd opkg netifd fstools uclient-fetch kmod-usb-hid \ +LEDE_PACKAGES="dropbear mtd netifd fstools uclient-fetch kmod-usb-hid \ tcpdump curl netcat dnsmasq nginx-ssl nginx-mod-luci luci" # optionally override OUTPUT_DIR and ROOTFS_OVERLAY directory location here From 4ac31bfb112546e8f9c3962d4d415d0208dab108 Mon Sep 17 00:00:00 2001 From: Jan Delgado Date: Sat, 30 May 2026 14:42:34 +0200 Subject: [PATCH 2/4] add better test diagnostics --- .test/run_all.sh | 8 +++++--- .test/test_manifest_contains_packages.sh | 11 +++++++++-- example-rpi2.conf | 2 +- example-rpi4.conf | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.test/run_all.sh b/.test/run_all.sh index 599719c..8f20f9b 100755 --- a/.test/run_all.sh +++ b/.test/run_all.sh @@ -12,13 +12,15 @@ RC=0 echo "----------------------------------------------------------------------" echo "run tests for $CONF" echo "----------------------------------------------------------------------" -for t in "$SCRIPT_DIR"/test_*.sh; do +for t in "$SCRIPT_DIR"/test_*.sh; do + echo "******************** RUNNING CASE TEST $t ************************" if "$t" "$CONF" "$OUT"; then - echo "test OK" + echo ">>> TEST OK" else - echo "test FAILED" + echo ">>> TEST FAILED" RC=1 fi + echo "******************************************************************" done exit $RC diff --git a/.test/test_manifest_contains_packages.sh b/.test/test_manifest_contains_packages.sh index 9159dc7..8cb481f 100755 --- a/.test/test_manifest_contains_packages.sh +++ b/.test/test_manifest_contains_packages.sh @@ -18,9 +18,16 @@ if [ ! -f "$MANIFEST" ]; then exit 1 fi -for p in $LEDE_PACKAGES; do +for p in $LEDE_PACKAGES; do [[ $p == -* ]] && continue - grep -q -E "^$p " "$MANIFEST" || fail "package not in manifest: $p" + grep -q -E "^$p " "$MANIFEST" || fail "package not in manifest: $p" done +if [ $FAIL -ne 0 ]; then + echo "======== TEST FAILED =======" + echo "LEDE_PACKAGES: $LEDE_PACKAGES" + echo "MANIFEST: $MANIFEST" + cat "$MANIFEST" +fi + exit $FAIL diff --git a/example-rpi2.conf b/example-rpi2.conf index be52484..bfb2d90 100644 --- a/example-rpi2.conf +++ b/example-rpi2.conf @@ -7,7 +7,7 @@ LEDE_SUBTARGET=bcm2709 LEDE_PACKAGES="base-files busybox dropbear mtd uci netifd fstools uclient-fetch \ logd kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835 \ kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 dnsmasq \ - -ppp -ppp-mod-pppoe luci nginx-mod-luci nginx-ssl acme luci-app-acme" + -ppp -ppp-mod-pppoe luci nginx-mod-luci nginx-ssl acme-acmesh luci-app-acme" # optionally override OUTPUT_DIR and ROOTFS_OVERLAY directory location here diff --git a/example-rpi4.conf b/example-rpi4.conf index ab9ba0c..4cbd004 100644 --- a/example-rpi4.conf +++ b/example-rpi4.conf @@ -7,5 +7,5 @@ LEDE_SUBTARGET=bcm2711 # list packages to include in LEDE image. prepend packages to deinstall with "-". LEDE_PACKAGES="dropbear mtd uci netifd fstools uclient-fetch kmod-usb-hid \ kmod-sound-core kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 \ - dnsmasq -ppp -ppp-mod-pppoe luci nginx-ssl nginx-mod-luci luci-app-adblock adblock acme luci-app-acme" + dnsmasq -ppp -ppp-mod-pppoe luci nginx-ssl nginx-mod-luci luci-app-adblock adblock acme-acmesh luci-app-acme" From 0cd789fcd058986b9e2976e1c16b792441794b76 Mon Sep 17 00:00:00 2001 From: Jan Delgado Date: Sat, 30 May 2026 16:44:59 +0200 Subject: [PATCH 3/4] add dependabot for ci actions --- dependabot.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 dependabot.yml diff --git a/dependabot.yml b/dependabot.yml new file mode 100644 index 0000000..4082bf6 --- /dev/null +++ b/dependabot.yml @@ -0,0 +1,12 @@ +--- +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily + commit-message: + prefix: '[gh-actions] ' + groups: + all-dependencies: + patterns: ['*'] From 810b414d30e7536da41ddb9992b90f43d61a9f83 Mon Sep 17 00:00:00 2001 From: Jan Delgado Date: Sat, 30 May 2026 18:12:11 +0200 Subject: [PATCH 4/4] update example section --- README.md | 82 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 6e117e4..8b9c6f0 100644 --- a/README.md +++ b/README.md @@ -4,23 +4,23 @@ -* [What](#what) - * [Note](#note) -* [Why](#why) -* [How](#how) - * [Using docker](#using-docker) - * [Using nix-shell](#using-nix-shell) - * [Usage](#usage) - * [Builder runtime](#builder-runtime) - * [Configuration file](#configuration-file) - * [File system overlay](#file-system-overlay) - * [Example directory structure](#example-directory-structure) - * [Debugging](#debugging) -* [Examples](#examples) - * [Building a x86_64 image and running it in qemu](#building-a-x86_64-image-and-running-it-in-qemu) -* [Building an OpenWrt snapshot release](#building-an-openwrt-snapshot-release) -* [Author](#author) -* [License](#license) +- [What](#what) + - [Note](#note) +- [Why](#why) +- [How](#how) + - [Using docker](#using-docker) + - [Using nix-shell](#using-nix-shell) + - [Usage](#usage) + - [Builder runtime](#builder-runtime) + - [Configuration file](#configuration-file) + - [File system overlay](#file-system-overlay) + - [Example directory structure](#example-directory-structure) + - [Debugging](#debugging) +- [Examples](#examples) + - [Building a x86_64 image and running it in Qemu](#building-a-x86_64-image-and-running-it-in-qemu) +- [Building an OpenWrt snapshot release](#building-an-openwrt-snapshot-release) +- [Author](#author) +- [License](#license) @@ -179,32 +179,34 @@ self-contained projects outside of the lede-dockerbuilder folder. If e.g. rootfs-overlay directory is expected to be in the same directory as the configuration file. -[Example configuration](example-nexx-wt3020.conf) for my [NEXX -WT3020](https://openwrt.org/toh/nexx/wt3020) router, where I have an -encrypted USB disk attached so I can use it as a simple NAS with samba and ftp: +[Example configuration](example-glinet-gl-ar750.conf) for my [GL.iNet +GL-AR750](https://openwrt.org/toh/gl.inet/gl-ar750?) router, where I have an encrypted USB disk +attached so I can use it as a simple NAS with samba and ftp when I am on travel. ``` -# LEDE profile to use: NEXX WT3020 -LEDE_PROFILE=nexx_wt3020-8m +# LEDE profile to use: GL.iNet GL-AR750 +LEDE_PROFILE=glinet_gl-ar750 LEDE_RELEASE=25.12.4 -LEDE_TARGET=ramips -LEDE_SUBTARGET=mt7620 +LEDE_TARGET=ath79 +LEDE_SUBTARGET=generic # list packages to include in LEDE image. prepend packages to deinstall with "-". # -# include all packages to build a mobile NAS supporting disk encryption: -# ksmbd (samba4 is too large now for the WT3020's 8MB), cryptsetup. -# see https://github.com/namjaejeon/ksmbd-tools for ksmbd info. -LEDE_PACKAGES="ksmbd-server lsblk block-mount\ - kmod-usb-storage-uas kmod-scsi-core ntfs-3g\ - kmod-nls-iso8859-1 cryptsetup kmod-crypto-xts\ - kmod-mt76 kmod-usb2 kmod-usb-ohci kmod-usb-core kmod-dm kmod-crypto-ecb\ +# include all packages to build a mobile "NAS" supporting disk encryption: +# vsftpd (needs to be configured afterwards), cryptsetup, usb disk drivers. +LEDE_PACKAGES="-ath10k-firmware-qca9887-ct ath10k-firmware-qca9887-ct-full-htt \ + ksmbd-server hd-idle luci-app-hd-idle diffutils\ + kmod-usb-storage-uas kmod-scsi-core kmod-fs-ext4 ntfs-3g\ + kmod-nls-cp437 kmod-nls-iso8859-1 vsftpd cryptsetup kmod-crypto-xts\ + kmod-mt76 kmod-usb2 kmod-usb-ohci kmod-usb-core usbutils\ + block-mount kmod-dm kmod-crypto-ecb \ kmod-crypto-misc kmod-crypto-cbc kmod-crypto-crc32c kmod-crypto-hash\ - kmod-crypto-user\ - -ppp -kmod-ppp -kmod-pppoe -kmod-pppox -ppp-mod-pppoe -opkg\ - -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only" + kmod-crypto-user iwinfo dropbear \ + -ppp -kmod-ppp -kmod-pppoe -kmod-pppox -ppp-mod-pppoe nmap tcpdump\ + kmod-wireguard luci-proto-wireguard wireguard-tools\ + luci-ssl lsblk adblock luci-app-adblock" -# optionally override OUTPUT_DIR and ROOTFS_OVERLAY directory location here +LEDE_DISABLED_SERVICES="" ``` ### File system overlay @@ -272,7 +274,7 @@ These examples evolved from images I use myself. Just ~8MB gziped. I use this image on my home dnsmasq/openvpn 'server'. - [image with LUCI web GUI and adblocker for the Raspberry Pi 4](example-rpi4.conf) - [image for the TP-Link WR1043ND](example-wrt1043nd.conf) -- [image with samba, vsftpd and encrypted usb disk for +- [image ~with samba, vsftpd and encrypted usb disk~ (image with 25.12. became too large) for NEXX-WT3020](example-nexx-wt3020.conf). Is the predecessor of ... - [image with samba, vsftpd and encrypted usb disk for GINET-GL-M300N V2](example-glinet-gl-mt300n-v2.conf). Is the predecessor of ... @@ -284,22 +286,22 @@ These examples evolved from images I use myself. To build an example run `./builder.sh build `, e.g. ```text -$ ./builder.sh build example-rpi2.conf +$ ./builder.sh build example-rpi2.conf --nix ``` The resulting image can be found in the `output/` directory. The [OpenWrt wiki](https://openwrt.org/docs/guide-user/installation/generic.sysupgrade) describes how to flash the new image in detail. -### Building a x86_64 image and running it in qemu +### Building a x86_64 image and running it in Qemu The [example-x86_64.conf](example-x86_64.conf) file can be used to build a -x86_64 based OpenWrt image which can also be run in qemu, e.g., if you need +x86_64 based OpenWrt image which can also be run in Qemu, e.g., if you need a virtual router/firewall. First build the image with e.g. `builder.sh build example-x86_64.conf --nix`, then unpack the resulting image with e.g. `gunzip output/openwrt-<release>-x86-64-generic-ext4-combined.img.gz`. -Finally the image can be started with qemu (or simply use [run_in_qemu.sh](etc/run_in_qemu.sh) and +Finally the image can be started with Qemu (or simply use [run_in_qemu.sh](etc/run_in_qemu.sh) and pass it the image name to boot) ```text