initramfs: switch to tmpfs to fix ujail
authorDaniel Golle <daniel@makrotopia.org>
Fri, 27 Nov 2020 00:00:31 +0000 (01:00 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 27 Nov 2020 01:23:43 +0000 (01:23 +0000)
Hauke wrote:
> We want to run some processes in the procd-ujail, this works when we
> use a SquashFS image and an overlay file system, but when we use an
> initramfs it does not work.
> [...]
> When we switch from initramfs to tmpfs, it is working, we added this
> code to target/linux/generic/other-files/init to make [it] work.

Move files to newly mounted tmpfs and then use switch_root to chroot
into new rootfs and free initramfs.

Suggested-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/generic/other-files/init

index 514be57e66446ebef206f2d41f37c9c9dfae19fd..521655b8c239d8dc459b80d373843f48acbcec98 100755 (executable)
@@ -1,4 +1,14 @@
 #!/bin/sh
 # Copyright (C) 2006 OpenWrt.org
 export INITRAMFS=1
-exec /sbin/init
+
+# switch to tmpfs to allow run daemons in jail on initramfs boot
+DIRS=$(echo *)
+NEW_ROOT=/new_root
+
+mkdir -p $NEW_ROOT
+mount -t tmpfs tmpfs $NEW_ROOT
+
+cp -pr $DIRS $NEW_ROOT
+
+exec switch_root $NEW_ROOT /sbin/init