initramfs: allow preinit to enable switching from initramfs to tmpfs to allow overlay...
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 11 Aug 2011 20:32:57 +0000 (20:32 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 11 Aug 2011 20:32:57 +0000 (20:32 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27960 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/generic/base-files/init

index 9e8ba7c..5e4fbae 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"