Hi,

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.

We see the following error message:
--------------
Fri Oct 18 16:31:51 2019 user.err : jail: pivot_root(/tmp/ujail-ngPNoo, 
/tmp/ujail-ngPNoo/old) failed: Invalid argument
Fri Oct 18 16:31:51 2019 user.err : jail: failed to build jail fs
--------------
It is failing here:
https://git.openwrt.org/?p=project/procd.git;a=blob;f=jail/jail.c;h=54e78419b539ae6b618bc3680c01fdd9582ea318;hb=HEAD#l158

There is the following code in procd jail.c which looks to me like it should 
prevent this problem:
--------------
/* oldroot can't be MS_SHARED else pivot_root() fails */
if (mount("none", "/", NULL, MS_REC|MS_PRIVATE, NULL)) {
        ERROR("private mount failed %m\n");
        return -1;
}
--------------
https://git.openwrt.org/?p=project/procd.git;a=blob;f=jail/jail.c;h=54e78419b539ae6b618bc3680c01fdd9582ea318;hb=HEAD#l133


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:
--- a/target/linux/generic/other-files/init
+++ b/target/linux/generic/other-files/init
@@ -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

We see this on a MIPS BE system running OpenWrt master from beginning of March 
2019 with kernel 4.9.

I also see this problem also on the MIPS Malta 32 bit BE target of today's 
OpenWrt master using this configuration and with the patch in this mail I do 
not see it any more:
CONFIG_TARGET_malta=y
CONFIG_TARGET_malta_be=y
CONFIG_TARGET_malta_be_Default=y
CONFIG_PACKAGE_procd-ujail=y

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to