# HG changeset patch # User Pascal Bellard # Date 1293542993 -3600 # Node ID 7b3b7e2a569dc4165a742cf7696995a73e73608e # Parent 5c676acf3361a2ee08464042050f0545a59aad8e busybox/init: replace rootuuid= by mount= diff -r 5c676acf3361 -r 7b3b7e2a569d busybox/stuff/init --- a/busybox/stuff/init Tue Dec 28 12:31:53 2010 +0100 +++ b/busybox/stuff/init Tue Dec 28 14:29:53 2010 +0100 @@ -2,21 +2,20 @@ launch_init() { + umount /proc echo -e "\\033[70G[ \\033[1;33mOK\\033[0;39m ]" - subroot= - grep -q subroot= /proc/cmdline && - subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" exec /sbin/switch_root mnt$subroot /sbin/init } failed() { + umount /proc echo -e "\\033[70G[ \\033[1;31mFailed\\033[0;39m ]" } try_init() { - if [ ! -d /mnt/etc ] && grep -q cryptoroot= /proc/cmdline; then + if [ ! -d /mnt$subroot/etc ] && grep -q cryptoroot= /proc/cmdline; then modprobe dm-mod modprobe dm-crypt modprobe aes-i586 @@ -34,12 +33,12 @@ fi mount /dev/mapper/$dmlabel /mnt fi - if [ -d /mnt/etc ]; then + if [ -d /mnt$subroot/etc ]; then umount /sys [ -n "$1" ] && for i in $@ ; do - cp -a $i /mnt$(dirname $i) + cp -a $i /mnt$subroot$(dirname $i) done - umount /proc + mount /mnt -o remount,ro launch_init fi failed @@ -104,11 +103,10 @@ echo -n "Switching / to lvm $root..." mount_mapper fi -if grep -q loopfs= /proc/cmdline; then - loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" - dev=${loopfs%,*} - loopfs=${loopfs#*,} - echo -n "Switching / to loop $loopfs on $dev..." +if grep -q mount= /proc/cmdline; then + root="$(sed 's/.*mount=\([^ ]*\).*/\1/' < /proc/cmdline)" + dev=$(blkid | grep $root | sed 's/:.*//;q') + echo -n "Mounting $dev ($root) ..." if ! mount $dev /mnt; then if echo $dev | grep -q "/dev/sd"; then delay=`cat /sys/module/usb_storage/parameters/delay_use` @@ -116,28 +114,28 @@ echo -n "sleep for $delay seconds..." sleep $delay fi - mount $dev /mnt || loopfs="" + mount $dev /mnt fi - if [ -n "$loopfs" ]; then - losetup /dev/loop0 /mnt/$loopfs - mount /dev/loop0 /mnt 2> /dev/null - fi - try_init +fi +if grep -q loopfs= /proc/cmdline; then + loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" + echo -n "Switching / to loop $loopfs..." + losetup /dev/loop0 /mnt/$loopfs + mount /dev/loop0 /mnt 2> /dev/null fi grep -q cryptoroot= /proc/cmdline && try_init -if grep -q rootuuid= /proc/cmdline; then - root="$(sed 's/.*rootuuid=\([^ ]*\).*/\1/' < /proc/cmdline)" - mount $(blkid | grep $root | sed 's/:.*//') /mnt && try_init -fi +grep -q subroot= /proc/cmdline && +subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" +[ -d /mnt$subroot/etc ] && try_init umount /sys echo -n "Switching / to tmpfs..." size="$(grep rootfssize= < /proc/cmdline | \ sed 's/.*rootfssize=\([0-9]*[kmg%]\).*/-o size=\1/')" free=$(busybox free | busybox awk '/Mem:/ { print int(($4*100)/$3) }') -umount /proc [ -n "$size" ] || size="-o size=90%" if [ $free -lt 100 ] || ! mount -t tmpfs $size tmpfs /mnt; then echo -e "\\033[70G[ \\033[1;33mSkipped\\033[0;39m]" + umount /proc exec /sbin/init fi for i in $(ls -a /); do