openwrt/target/linux
Linus Walleij 5ac8f14ccb kernel: mtdsplit: create executable prolog splitter
The problem is the following: we have three fixed partitions
in a RedBoot partition for kernel, initrd and rootfs. On the
surface this looks good.

But we have little flash and want to use it efficiently. We want
to use the OpenWrt "firmware" partition scheme where the kernel,
initramfs and sqashfs+jffs2 rootfs is appended, leaving maximum
space for a writeable rootfs.

To do this we will override the existing RedBoot partition table
with one that merges the three separate partitions into one
"firmware" partition.

RedBoot is still booting the system. It still needs to read the
first two parts "as if" these were the kernel and initrd. This
works fine, because the kernel still comes first.

We already have hacks in place to merge the two kernel and initrd
into one binary image and execute it. This is done by prepending
a "prolog" to the kernel that does the necessary copying in
memory and then jumps to execute the kernel.

Since this "prolog" copying routine is just 92 bytes but has 512
bytes allocated, we can trivially create a firmware format that
can be used for splitting the image into kernel and rootfs
using a tagging scheme that can be done directly by scripting
so we don't need any special binary programs.

This splitter implements that idea.

This will be used on the Gemini platform and was tested on the
Raidsonic IB-4220-B.

Link: https://github.com/openwrt/openwrt/pull/21820
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-03 13:33:12 +01:00
..
airoha airoha: an7581: add switch ports interrups 2026-01-29 00:07:47 +01:00
apm821xx kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
armsr kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
at91 kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
ath79 ath79: add calibration variant for TP-Link TL-WA1201 v2 2026-01-28 12:05:55 +01:00
bcm27xx kernel: bump 6.12 to 6.12.68 2026-02-01 19:03:59 +01:00
bcm47xx kernel: bump 6.12 to 6.12.64 2026-01-15 01:22:47 +01:00
bcm53xx bcm53xx: add support for ASUS RT-AC3200 and ASUS RT-AC5300 2025-12-18 18:18:48 +00:00
bcm4908 kernel: disable non layout u-boot,env 2025-11-28 01:20:33 +01:00
bmips kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
d1 d1: Enable LED driver for D1 builds 2026-01-23 10:35:36 +01:00
econet kernel: bump 6.12 to 6.12.67 2026-01-24 21:36:10 +01:00
gemini gemini: use tar stream to write firmware 2026-01-30 14:33:34 +01:00
generic kernel: mtdsplit: create executable prolog splitter 2026-02-03 13:33:12 +01:00
imx imx: drop support for kernel 6.6 2025-11-22 10:11:52 +01:00
ipq40xx kernel: bump 6.12 to 6.12.68 2026-02-01 19:03:59 +01:00
ipq806x kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
ixp4xx ixp4xx: select the GPIO keys input package 2026-01-28 18:59:47 +01:00
kirkwood kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
lantiq lantiq: xrx200: add env-size for P-2812HNU-F1 u-boot-env 2026-01-31 11:20:23 +01:00
layerscape layerscape: set PREEMPT_NONE as default preemption model 2026-01-24 22:52:49 +01:00
loongarch64 loongarch64: set PREEMPT_NONE as default preemption model 2026-01-24 22:54:29 +01:00
malta kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
mediatek mediatek: routerich be7200: fix usb issue 2026-02-03 00:33:24 +01:00
microchipsw microchipsw: lan969x: include ip-bridge and dcb tools 2026-01-25 22:10:22 +01:00
mpc85xx kernel: reorder configuration options 2026-01-26 23:57:25 +01:00
mvebu mvebu: cortex-a53: fix Methode eDPU migration to upstream DTS 2026-01-28 10:19:18 +01:00
mxs kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
octeon kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
omap kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
pistachio kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
qoriq package: uboot-qoriq: fix T4240RDB u-boot selection 2026-01-12 13:59:30 +01:00
qualcommax qualcommax: ipq60xx: fix bootconfig script sysupgrade problem 2026-01-29 11:22:36 +01:00
qualcommbe kernel: bump 6.12 to 6.12.68 2026-02-01 19:03:59 +01:00
ramips ramips: add support for D-Link DIR-1360 A1 2026-02-01 19:10:44 +01:00
realtek realtek: eth: define hardware receive rings in config 2026-02-03 10:00:07 +01:00
rockchip kernel: bump 6.12 to 6.12.68 2026-02-01 19:03:59 +01:00
sifiveu kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
siflower kernel: bump 6.12 to 6.12.64 2026-01-15 01:22:47 +01:00
starfive kernel: net: phy: realtek: backport upstream commits 2026-01-19 13:51:41 +00:00
stm32 kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
sunxi kernel: reorder configuration options 2026-01-26 23:57:25 +01:00
tegra kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
uml kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU 2026-01-11 12:52:54 +01:00
x86 x86: cs5535audio: add support for subtarget legacy 2026-01-19 12:50:00 +01:00
zynq zynq: drop support for kernel 6.6 2025-11-25 17:27:24 +01:00
Makefile linux: fix missing default packages in profiles.json 2024-11-17 19:29:06 +01:00