aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-08-11 20:32:57 +0000
committerFelix Fietkau <nbd@openwrt.org>2011-08-11 20:32:57 +0000
commit5331e1bdc4005f5afcf1bbf1c0b31aa5ed73186e (patch)
tree01552b9642552a7e8a4c80936d667ce18b0888d1 /target/linux
parentc300dae78ba77b11e65634512f59bf7fbaad0dc2 (diff)
downloadmaster-187ad058-5331e1bdc4005f5afcf1bbf1c0b31aa5ed73186e.tar.gz
master-187ad058-5331e1bdc4005f5afcf1bbf1c0b31aa5ed73186e.tar.bz2
master-187ad058-5331e1bdc4005f5afcf1bbf1c0b31aa5ed73186e.zip
initramfs: allow preinit to enable switching from initramfs to tmpfs to allow overlayfs to be mounted on top of it
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27960 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux')
-rwxr-xr-xtarget/linux/generic/base-files/init13
1 files changed, 13 insertions, 0 deletions
diff --git a/target/linux/generic/base-files/init b/target/linux/generic/base-files/init
index 9e8ba7c5eb..5e4fbaec36 100755
--- a/target/linux/generic/base-files/init
+++ b/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"