Browse Source

initramfs: allow preinit to enable switching from initramfs to tmpfs to allow overlayfs to be mounted on top of it

SVN-Revision: 27960
Felix Fietkau 14 years ago
parent
commit
82a05d1a19
1 changed files with 13 additions and 0 deletions
  1. 13 0
      target/linux/generic/base-files/init

+ 13 - 0
target/linux/generic/base-files/init

@@ -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"