slitaz-modular rev 22

Update init and linuxrc scripts.
author Christopher Rogers <slaxemulator@gmail.com>
date Wed Jan 19 02:54:34 2011 +0000 (2011-01-19)
parents addad59ccab5
children 3a30fa829e2a
files initramfs/init initramfs/linuxrc
line diff
     1.1 --- a/initramfs/init	Sun Dec 26 23:31:03 2010 +0000
     1.2 +++ b/initramfs/init	Wed Jan 19 02:54:34 2011 +0000
     1.3 @@ -2,6 +2,7 @@
     1.4  
     1.5  launch_init()
     1.6  {
     1.7 +	umount /proc
     1.8  	echo -e "\\033[70G[ \\033[1;33mOK\\033[0;39m ]"
     1.9  	exec /sbin/switch_root mnt /sbin/init
    1.10  }
    1.11 @@ -9,20 +10,21 @@
    1.12  launch_init_modular()
    1.13  {
    1.14  	echo -e "\\033[70G[ \\033[1;33mOK\\033[0;39m ]"
    1.15 -	[ -d /mnt/memory/initramfs ] || mkdir -p /mnt/memory/initramfs
    1.16 +	[ -d /mnt/initramfs ] || mkdir -p /mnt/initramfs
    1.17  	SYS_DIR="dev bin etc boot lib sbin home root usr var"
    1.18  	for dir in $SYS_DIR; do
    1.19 -		cp -a /$dir /mnt/memory/initramfs
    1.20 +		cp -a /$dir /mnt/initramfs
    1.21  	done
    1.22  	MK_DIR="sys proc tmp media mnt"
    1.23  	for dir1 in $MK_DIR; do
    1.24 -		mkdir -p /mnt/memory/initramfs/$dir
    1.25 +		mkdir -p /mnt/initramfs/$dir
    1.26  	done
    1.27  	exec /sbin/switch_root mnt /linuxrc
    1.28  }
    1.29  
    1.30  failed()
    1.31  {
    1.32 +	umount /proc
    1.33  	echo -e "\\033[70G[ \\033[1;31mFailed\\033[0;39m ]"
    1.34  }
    1.35  
    1.36 @@ -51,7 +53,7 @@
    1.37  		[ -n "$1" ] && for i in $@ ; do
    1.38  			cp -a $i /mnt$(dirname $i)
    1.39  		done
    1.40 -		umount /proc
    1.41 +		mount /mnt -o remount,ro
    1.42  		launch_init
    1.43  	fi
    1.44  	failed
    1.45 @@ -105,6 +107,8 @@
    1.46  	root="$(sed 's/.*softraid=\([^ ]*\).*/\1/' < /proc/cmdline)"
    1.47  	echo -n "Switching / to softraid $root..."
    1.48  	mdadm --examine --scan --config=partitions > /etc/mdadm.conf
    1.49 +	grep -qs " $root " /etc/mdadm.conf ||
    1.50 +		root=$(awk '/dev.md/ { print $2; exit }' < /etc/mdadm.conf)
    1.51  	grep level=raid /etc/mdadm.conf | load_raid
    1.52  	mdadm --assemble --scan
    1.53  	lvmsetup 
    1.54 @@ -114,11 +118,10 @@
    1.55  	echo -n "Switching / to lvm $root..."
    1.56  	mount_mapper
    1.57  fi
    1.58 -if grep -q loopfs= /proc/cmdline; then
    1.59 -	loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)"
    1.60 -	dev=${loopfs%,*}
    1.61 -	loopfs=${loopfs#*,}
    1.62 -	echo -n "Switching / to loop $loopfs on $dev..."
    1.63 +if grep -q mount= /proc/cmdline; then
    1.64 +	root="$(sed 's/.*mount=\([^ ]*\).*/\1/' < /proc/cmdline)"
    1.65 +	dev=$(blkid | grep $root | sed 's/:.*//;q')
    1.66 +	echo -n "Mounting $dev ($root) ..."
    1.67  	if ! mount $dev /mnt; then
    1.68  		if echo $dev | grep -q "/dev/sd"; then
    1.69  			delay=`cat /sys/module/usb_storage/parameters/delay_use`
    1.70 @@ -126,20 +129,27 @@
    1.71  			echo -n "sleep for $delay seconds..."
    1.72  			sleep $delay
    1.73  		fi
    1.74 -		mount $dev /mnt || loopfs=""
    1.75 +		mount $dev /mnt
    1.76  	fi
    1.77 -	if [ -n "$loopfs" ]; then
    1.78 -		losetup /dev/loop0 /mnt/$loopfs
    1.79 -		mount /dev/loop0 /mnt 2> /dev/null
    1.80 -	fi
    1.81 -	try_init
    1.82 +fi
    1.83 +if grep -q loopfs= /proc/cmdline; then
    1.84 +	loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)"
    1.85 +	echo -n "Switching / to loop $loopfs..."
    1.86 +	losetup /dev/loop0 /mnt/$loopfs
    1.87 +	mount /dev/loop0 /mnt 2> /dev/null
    1.88  fi
    1.89  grep -q cryptoroot= /proc/cmdline && try_init
    1.90 -if grep -q rootuuid= /proc/cmdline; then
    1.91 -	root="$(sed 's/.*rootuuid=\([^ ]*\).*/\1/' < /proc/cmdline)"
    1.92 -	mount $(blkid | grep $root | sed 's/:.*//') /mnt && try_init
    1.93 +umount /sys
    1.94 +if grep -q subroot= /proc/cmdline; then
    1.95 +	subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" &&
    1.96 +	if [ -s /usr/share/boot/busybox-static ]; then
    1.97 +		mv /usr/share/boot/busybox-static .
    1.98 +		/busybox-static rm -rf /etc /lib /*bin /usr /var
    1.99 +		exec /busybox-static chroot /mnt$subroot /sbin/init
   1.100 +	else
   1.101 +		exec chroot /mnt$subroot /sbin/init
   1.102 +	fi
   1.103  fi
   1.104 -umount /sys
   1.105  echo -n "Switching / to tmpfs..."
   1.106  size="$(grep rootfssize= < /proc/cmdline | \
   1.107  	sed 's/.*rootfssize=\([0-9]*[kmg%]\).*/-o size=\1/')"
     2.1 --- a/initramfs/linuxrc	Sun Dec 26 23:31:03 2010 +0000
     2.2 +++ b/initramfs/linuxrc	Wed Jan 19 02:54:34 2011 +0000
     2.3 @@ -179,9 +179,9 @@
     2.4  debug_shell
     2.5  
     2.6  # setup initramfs if it exist
     2.7 -if [ -d /memory/initramfs ]; then
     2.8 +if [ -d /initramfs ]; then
     2.9  	echolog "Setup initramfs for first module..."
    2.10 -	mount -n -o remount,add:1:/memory/initramfs=ro aufs $UNION
    2.11 +	mount -n -o remount,add:1:/initramfs=ro aufs $UNION
    2.12  fi
    2.13  
    2.14  debug_shell