From c37229405805e769efec9f96706dc62de798f35b Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Thu, 9 Apr 2026 17:41:20 +0300 Subject: [PATCH 1/6] RM-7673: add Linux 6.12 kernel headers support and lite SDK defconfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add BR2_KERNEL_HEADERS_6_12 option and BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12 to support Linux 6.12.x kernel headers in the toolchain build. Add arm_cortexm_sdk_lite_defconfig — a lightweight SDK configuration without aktualizr, libostree, boost, and their dependencies. Suitable for general-purpose development with the Emcraft uClinux BSP. --- configs/arm_cortexm_sdk_lite_defconfig | 29 ++++++++++++++++++++++++++ package/linux-headers/Config.in.host | 11 +++++++++- toolchain/Config.in | 5 +++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 configs/arm_cortexm_sdk_lite_defconfig diff --git a/configs/arm_cortexm_sdk_lite_defconfig b/configs/arm_cortexm_sdk_lite_defconfig new file mode 100644 index 0000000000..041e1d2a98 --- /dev/null +++ b/configs/arm_cortexm_sdk_lite_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_m7=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_EABI=y +BR2_ARM_FPU_FPV4D16=y +BR2_KERNEL_HEADERS_6_12=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_PTHREAD_DEBUG=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_PACKAGE_HOST_GDB=y +BR2_GDB_VERSION_11=y +BR2_SHARED_STATIC_LIBS=y +BR2_INIT_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_JQ=y +BR2_PACKAGE_LIBUBOOTENV=y +BR2_PACKAGE_LSHW=y +BR2_PACKAGE_OPENSSL=y +BR2_PACKAGE_EXPAT=y +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_LIBTIRPC=y +BR2_PACKAGE_URANDOM_SCRIPTS=y +BR2_PACKAGE_UTIL_LINUX=y +BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y +BR2_PACKAGE_UTIL_LINUX_LIBUUID=y +BR2_TARGET_ROOTFS_TAR_XZ=y diff --git a/package/linux-headers/Config.in.host b/package/linux-headers/Config.in.host index 19dfc6a863..696a33e87f 100644 --- a/package/linux-headers/Config.in.host +++ b/package/linux-headers/Config.in.host @@ -56,6 +56,10 @@ config BR2_KERNEL_HEADERS_5_15 config BR2_KERNEL_HEADERS_5_17 bool "Linux 5.17.x kernel headers" select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 + +config BR2_KERNEL_HEADERS_6_12 + bool "Linux 6.12.x kernel headers" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12 select BR2_KERNEL_HEADERS_LATEST config BR2_KERNEL_HEADERS_VERSION @@ -133,8 +137,12 @@ choice If your kernel headers are more recent than the latest version in the choice, then select the latest version. +config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12 + bool "6.12.x or later" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12 + config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_17 - bool "5.17.x or later" + bool "5.17.x" select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16 @@ -383,6 +391,7 @@ config BR2_DEFAULT_KERNEL_HEADERS default "5.10.155" if BR2_KERNEL_HEADERS_5_10 default "5.15.79" if BR2_KERNEL_HEADERS_5_15 default "5.17.15" if BR2_KERNEL_HEADERS_5_17 + default "6.12.20" if BR2_KERNEL_HEADERS_6_12 default BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION default "custom" if BR2_KERNEL_HEADERS_CUSTOM_TARBALL default BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION \ diff --git a/toolchain/Config.in b/toolchain/Config.in index 33c5e66e37..a86d9d363a 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -583,6 +583,10 @@ config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 bool select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 select BR2_TOOLCHAIN_HEADERS_LATEST # This should be selected by the latest version, above, to indicate that @@ -596,6 +600,7 @@ config BR2_TOOLCHAIN_HEADERS_LATEST # stops affecting a value on the first matching default. config BR2_TOOLCHAIN_HEADERS_AT_LEAST string + default "6.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12 default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 From d3c388c39e7ee71f8b95ce0175dea80cad32821e Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Fri, 10 Apr 2026 12:15:37 +0300 Subject: [PATCH 2/6] RM-7673: update lite defconfig with busybox, i2c-tools, tslib Enable BR2_PACKAGE_BUSYBOX and BR2_PACKAGE_BUSYBOX_SHOW_OTHERS to build busybox and allow standalone i2c-tools alongside busybox applets. Add BR2_PACKAGE_I2C_TOOLS and BR2_PACKAGE_TSLIB. Remove BR2_PACKAGE_LIBTIRPC (unused on noMMU targets with kernel >= 2.6.23). --- configs/arm_cortexm_sdk_lite_defconfig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/configs/arm_cortexm_sdk_lite_defconfig b/configs/arm_cortexm_sdk_lite_defconfig index 041e1d2a98..06043378bc 100644 --- a/configs/arm_cortexm_sdk_lite_defconfig +++ b/configs/arm_cortexm_sdk_lite_defconfig @@ -11,17 +11,19 @@ BR2_PACKAGE_HOST_GDB=y BR2_GDB_VERSION_11=y BR2_SHARED_STATIC_LIBS=y BR2_INIT_NONE=y -# BR2_PACKAGE_BUSYBOX is not set +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GDB=y BR2_PACKAGE_JQ=y BR2_PACKAGE_LIBUBOOTENV=y +BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_LSHW=y +BR2_PACKAGE_TSLIB=y BR2_PACKAGE_OPENSSL=y BR2_PACKAGE_EXPAT=y BR2_PACKAGE_LIBCURL=y BR2_PACKAGE_LIBCURL_CURL=y -BR2_PACKAGE_LIBTIRPC=y BR2_PACKAGE_URANDOM_SCRIPTS=y BR2_PACKAGE_UTIL_LINUX=y BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y From 61d2b968a121510d1290efb076f1bd64311a4d4e Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Thu, 16 Apr 2026 10:42:35 +0300 Subject: [PATCH 3/6] RM-7673: enable dropbear and openssh-sftp-server in the sdk_lite config Enable BR2_PACKAGE_DROPBEAR for SSH server support via inetd. Add openssh-sftp-server package -- a minimal buildroot package that builds only sftp-server from OpenSSH 9.1p1. Key design decisions: - Built with --without-openssl to avoid libssl/libcrypto dependency (sftp-server runs inside an already-encrypted dropbear session) - Uses -ffunction-sections/-fdata-sections with --gc-sections to drop unreferenced code from libssh.a (notably misc.c:subprocess() which calls fork() and would fail to link on noMMU targets) --- configs/arm_cortexm_sdk_lite_defconfig | 7 ++- package/Config.in | 1 + package/openssh-sftp-server/Config.in | 12 ++++ .../openssh-sftp-server.hash | 4 ++ .../openssh-sftp-server.mk | 57 +++++++++++++++++++ 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 package/openssh-sftp-server/Config.in create mode 100644 package/openssh-sftp-server/openssh-sftp-server.hash create mode 100644 package/openssh-sftp-server/openssh-sftp-server.mk diff --git a/configs/arm_cortexm_sdk_lite_defconfig b/configs/arm_cortexm_sdk_lite_defconfig index 06043378bc..9680620d6c 100644 --- a/configs/arm_cortexm_sdk_lite_defconfig +++ b/configs/arm_cortexm_sdk_lite_defconfig @@ -11,19 +11,20 @@ BR2_PACKAGE_HOST_GDB=y BR2_GDB_VERSION_11=y BR2_SHARED_STATIC_LIBS=y BR2_INIT_NONE=y -BR2_PACKAGE_BUSYBOX=y BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GDB=y BR2_PACKAGE_JQ=y -BR2_PACKAGE_LIBUBOOTENV=y BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_LIBUBOOTENV=y BR2_PACKAGE_LSHW=y -BR2_PACKAGE_TSLIB=y BR2_PACKAGE_OPENSSL=y +BR2_PACKAGE_TSLIB=y BR2_PACKAGE_EXPAT=y BR2_PACKAGE_LIBCURL=y BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_OPENSSH_SFTP_SERVER=y BR2_PACKAGE_URANDOM_SCRIPTS=y BR2_PACKAGE_UTIL_LINUX=y BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y diff --git a/package/Config.in b/package/Config.in index d4765c0a51..b4a53085f6 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2362,6 +2362,7 @@ endif source "package/openobex/Config.in" source "package/openresolv/Config.in" source "package/openssh/Config.in" + source "package/openssh-sftp-server/Config.in" source "package/openswan/Config.in" source "package/openvpn/Config.in" source "package/p910nd/Config.in" diff --git a/package/openssh-sftp-server/Config.in b/package/openssh-sftp-server/Config.in new file mode 100644 index 0000000000..7880b909d0 --- /dev/null +++ b/package/openssh-sftp-server/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_OPENSSH_SFTP_SERVER + bool "openssh-sftp-server" + select BR2_PACKAGE_ZLIB + help + SFTP server from OpenSSH. This is a standalone helper program + that handles SFTP protocol over stdin/stdout, typically spawned + by an SSH server (e.g., dropbear) on incoming SFTP connections. + + Unlike the full openssh package, sftp-server does not use + fork() and works on noMMU targets. + + https://www.openssh.com/ diff --git a/package/openssh-sftp-server/openssh-sftp-server.hash b/package/openssh-sftp-server/openssh-sftp-server.hash new file mode 100644 index 0000000000..eefb11ec15 --- /dev/null +++ b/package/openssh-sftp-server/openssh-sftp-server.hash @@ -0,0 +1,4 @@ +# From https://www.openssh.com/txt/release-9.1 (base64 encoded) +sha256 19f85009c7e3e23787f0236fbb1578392ab4d4bf9f8ec5fe6bc1cd7e8bfdd288 openssh-9.1p1.tar.gz +# Locally calculated +sha256 05c30446ba738934b3f1efa965b454c122ca26cc4b268e5ae6843f58ccd1b16d LICENCE diff --git a/package/openssh-sftp-server/openssh-sftp-server.mk b/package/openssh-sftp-server/openssh-sftp-server.mk new file mode 100644 index 0000000000..4dca91ceea --- /dev/null +++ b/package/openssh-sftp-server/openssh-sftp-server.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# openssh-sftp-server +# +# Builds only the sftp-server binary from OpenSSH. This is safe on noMMU +# targets because sftp-server never calls fork(). +# +################################################################################ + +OPENSSH_SFTP_SERVER_VERSION_MAJOR = 9.1 +OPENSSH_SFTP_SERVER_VERSION_MINOR = p1 +OPENSSH_SFTP_SERVER_VERSION = $(OPENSSH_SFTP_SERVER_VERSION_MAJOR)$(OPENSSH_SFTP_SERVER_VERSION_MINOR) +OPENSSH_SFTP_SERVER_SOURCE = openssh-$(OPENSSH_SFTP_SERVER_VERSION).tar.gz +OPENSSH_SFTP_SERVER_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable +OPENSSH_SFTP_SERVER_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain +OPENSSH_SFTP_SERVER_LICENSE_FILES = LICENCE + +OPENSSH_SFTP_SERVER_CONF_ENV = \ + LD="$(TARGET_CC)" \ + LDFLAGS="$(TARGET_CFLAGS)" + +OPENSSH_SFTP_SERVER_CONF_OPTS = \ + --sysconfdir=/etc/ssh \ + --without-sandbox \ + --without-pam \ + --without-selinux \ + --without-audit \ + --without-openssl \ + --without-ssl-engine \ + --disable-lastlog \ + --disable-utmp \ + --disable-utmpx \ + --disable-wtmp \ + --disable-wtmpx + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +OPENSSH_SFTP_SERVER_CONF_OPTS += --without-pie +endif + +OPENSSH_SFTP_SERVER_DEPENDENCIES = host-pkgconf zlib + +# Only build sftp-server. Use -ffunction-sections/-fdata-sections with +# --gc-sections so the linker drops unreferenced functions from libssh.a +# (notably misc.c:subprocess() which calls fork()). This avoids the +# fork link error on noMMU targets without any stub or defsym hack. +define OPENSSH_SFTP_SERVER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS) -ffunction-sections -fdata-sections" \ + LD="$(TARGET_CC) -Wl,--gc-sections" \ + sftp-server +endef + +define OPENSSH_SFTP_SERVER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/sftp-server $(TARGET_DIR)/usr/libexec/sftp-server +endef + +$(eval $(autotools-package)) From 894d099ac8ab51aaeac8171232a2023c85ce4447 Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Thu, 30 Apr 2026 18:43:09 +0200 Subject: [PATCH 4/6] RM-7673: drop lshw from arm_cortexm SDK defconfigs lshw allocates large buffers during hardware enumeration that exceed the noMMU heap on RT1170. The package builds but the binary cannot run usefully on the target, so it has no place in either the lite or the full SDK output. --- configs/arm_cortexm_sdk_defconfig | 1 - configs/arm_cortexm_sdk_lite_defconfig | 1 - 2 files changed, 2 deletions(-) diff --git a/configs/arm_cortexm_sdk_defconfig b/configs/arm_cortexm_sdk_defconfig index 08aacfd02b..832319992d 100644 --- a/configs/arm_cortexm_sdk_defconfig +++ b/configs/arm_cortexm_sdk_defconfig @@ -16,7 +16,6 @@ BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GDB=y BR2_PACKAGE_JQ=y BR2_PACKAGE_LIBUBOOTENV=y -BR2_PACKAGE_LSHW=y BR2_PACKAGE_LIBARCHIVE=y BR2_PACKAGE_LIBSODIUM=y BR2_PACKAGE_OPENSSL=y diff --git a/configs/arm_cortexm_sdk_lite_defconfig b/configs/arm_cortexm_sdk_lite_defconfig index 9680620d6c..06cad93536 100644 --- a/configs/arm_cortexm_sdk_lite_defconfig +++ b/configs/arm_cortexm_sdk_lite_defconfig @@ -17,7 +17,6 @@ BR2_PACKAGE_GDB=y BR2_PACKAGE_JQ=y BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_LIBUBOOTENV=y -BR2_PACKAGE_LSHW=y BR2_PACKAGE_OPENSSL=y BR2_PACKAGE_TSLIB=y BR2_PACKAGE_EXPAT=y From f5fb5c45635846c4f6ad55ed4c0f02243f691e1b Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Thu, 30 Apr 2026 18:43:43 +0200 Subject: [PATCH 5/6] RM-7673: trim arm_cortexm_sdk_lite_defconfig to deployed-only packages The rootfs project's initramfs does not stage bzip2, jq, openssl, libcurl, expat, urandom-scripts, util-linux (libblkid/libuuid), or the rootfs tarball -- rfs-builder reads target/ directly. Building them only inflates the SDK without affecting the deployed image. Drop them. The remaining set -- busybox, gdb, i2c-tools, libubootenv, tslib, dropbear, openssh-sftp-server -- covers everything the rootfs initramfs actually places in the image. --- configs/arm_cortexm_sdk_lite_defconfig | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/configs/arm_cortexm_sdk_lite_defconfig b/configs/arm_cortexm_sdk_lite_defconfig index 06cad93536..0bf6c83b8d 100644 --- a/configs/arm_cortexm_sdk_lite_defconfig +++ b/configs/arm_cortexm_sdk_lite_defconfig @@ -12,20 +12,9 @@ BR2_GDB_VERSION_11=y BR2_SHARED_STATIC_LIBS=y BR2_INIT_NONE=y BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GDB=y -BR2_PACKAGE_JQ=y BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_LIBUBOOTENV=y -BR2_PACKAGE_OPENSSL=y BR2_PACKAGE_TSLIB=y -BR2_PACKAGE_EXPAT=y -BR2_PACKAGE_LIBCURL=y -BR2_PACKAGE_LIBCURL_CURL=y BR2_PACKAGE_DROPBEAR=y BR2_PACKAGE_OPENSSH_SFTP_SERVER=y -BR2_PACKAGE_URANDOM_SCRIPTS=y -BR2_PACKAGE_UTIL_LINUX=y -BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y -BR2_PACKAGE_UTIL_LINUX_LIBUUID=y -BR2_TARGET_ROOTFS_TAR_XZ=y From 90a5d8e2e53c01428114e59f1d3b454af04ab9c0 Mon Sep 17 00:00:00 2001 From: Vladimir Skvortsov Date: Thu, 30 Apr 2026 18:48:49 +0200 Subject: [PATCH 6/6] RM-7673: align arm_cortexm_sdk_defconfig with rootfs runtime needs * BR2_KERNEL_HEADERS_5_15 -> BR2_KERNEL_HEADERS_6_12 to match the shipped Linux 6.12.20 kernel * Enable BR2_PACKAGE_BUSYBOX (was disabled, which made BUSYBOX_OVERRIDE_SRCDIR / BUSYBOX_CONFIG_FILE written to local.mk by the consuming project inert) * Add BR2_PACKAGE_BUSYBOX_SHOW_OTHERS, I2C_TOOLS, TSLIB, DROPBEAR, OPENSSH_SFTP_SERVER -- parity with sdk_lite --- configs/arm_cortexm_sdk_defconfig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/configs/arm_cortexm_sdk_defconfig b/configs/arm_cortexm_sdk_defconfig index 832319992d..db9f75f1ca 100644 --- a/configs/arm_cortexm_sdk_defconfig +++ b/configs/arm_cortexm_sdk_defconfig @@ -3,7 +3,7 @@ BR2_cortex_m7=y BR2_ARM_ENABLE_VFP=y BR2_ARM_EABI=y BR2_ARM_FPU_FPV4D16=y -BR2_KERNEL_HEADERS_5_15=y +BR2_KERNEL_HEADERS_6_12=y BR2_TOOLCHAIN_BUILDROOT_WCHAR=y BR2_PTHREAD_DEBUG=y BR2_TOOLCHAIN_BUILDROOT_CXX=y @@ -11,11 +11,13 @@ BR2_PACKAGE_HOST_GDB=y BR2_GDB_VERSION_11=y BR2_SHARED_STATIC_LIBS=y BR2_INIT_NONE=y -# BR2_PACKAGE_BUSYBOX is not set +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GDB=y +BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_JQ=y BR2_PACKAGE_LIBUBOOTENV=y +BR2_PACKAGE_TSLIB=y BR2_PACKAGE_LIBARCHIVE=y BR2_PACKAGE_LIBSODIUM=y BR2_PACKAGE_OPENSSL=y @@ -29,6 +31,8 @@ BR2_PACKAGE_BOOST=y BR2_PACKAGE_BOOST_JSON=y BR2_PACKAGE_BOOST_LOG=y BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_OPENSSH_SFTP_SERVER=y BR2_PACKAGE_URANDOM_SCRIPTS=y BR2_PACKAGE_AKTUALIZR=y BR2_PACKAGE_LIBOSTREE=y