initramfs: allow preinit to enable switching from initramfs to tmpfs to allow overlay...
[openwrt/svn-archive/archive.git] / target / linux / generic / base-files / init
index 9e8ba7c5eb0c3f2809d0afb8b4ffcab39011f3da..5e4fbaec36a5e9b43f024834270807a43e5cefa5 100755 (executable)
@@ -8,6 +8,19 @@ INITRAMFS=1
 set_state init
 echo "- init -"
 
+[ -n "$SWITCH_ROOT_TMPFS" ] && {
+  mount none /mnt -t tmpfs
+  ( cd /; find -xdev -type d ) | ( cd /mnt; xargs mkdir -p )
+  find / \! -type d -xdev | tar -cT /proc/self/fd/0 | tar -xC /mnt
+  mkdir /mnt/proc /mnt/dev /mnt/tmp /mnt/sys
+  mount -o move /proc /mnt/proc
+  mount -o move /dev /mnt/dev
+  mount -o move /tmp /mnt/tmp
+  mount -o move /sys /mnt/sys
+  rm -rf /proc /dev /tmp /sys
+  exec switch_root -c /dev/console /mnt /sbin/init
+}
+
 # if we have no root parameter, just go to running from ramfs
 [ -z $rootfs ] && {
   export NOMOUNT="No Root"