slitaz-boot-scripts diff init @ rev 416

Use 'action' before 'status' in pair
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Nov 27 12:48:01 2015 +0200 (2015-11-27)
parents 5f5c78d24bfd
children 220cadd40305
line diff
     1.1 --- a/init	Thu Aug 27 14:40:07 2015 +0200
     1.2 +++ b/init	Fri Nov 27 12:48:01 2015 +0200
     1.3 @@ -50,121 +50,124 @@
     1.4  # isofs [LORAM]
     1.5  #         do not use squashfs filesystem images, but the cdrom filesystem only
     1.6  
     1.7 -fail()
     1.8 -{
     1.9 -echo -e '\033[70G[ \033[1;3'${1:-1mFailed}'\033[0;39m ]'
    1.10 +
    1.11 +fail() {
    1.12 +	echo -e '\033[70G[ \033[1;3'${1:-1mFailed}'\033[0;39m ]'
    1.13  }
    1.14  
    1.15 -quit()
    1.16 -{
    1.17 -[ -d /mnt$4/etc ] || return
    1.18 -[ -n "$4" ] || busybox mount /mnt -o remount,ro
    1.19 -busybox mount --move /run /mnt/${1:-run}
    1.20 -cat>/run/init<<EOT
    1.21 +
    1.22 +quit() {
    1.23 +	[ -d /mnt$4/etc ] || return
    1.24 +	[ -n "$4" ] || busybox mount /mnt -o remount,ro
    1.25 +	busybox mount --move /run /mnt/${1:-run}
    1.26 +	cat > /run/init <<EOT
    1.27  $2
    1.28  x=/sbin/switch_root
    1.29  [ -x \$x ] && exec \$x mnt $3 /sbin/init
    1.30  EOT
    1.31 -fail 2mDone
    1.32 -exit
    1.33 +	fail 2mDone
    1.34 +	exit
    1.35  }
    1.36  
    1.37 -arg()
    1.38 -{
    1.39 -grep -q $1 /proc/cmdline
    1.40 +
    1.41 +arg() {
    1.42 +	grep -q $1 /proc/cmdline
    1.43  }
    1.44  
    1.45 -got()
    1.46 -{
    1.47 -arg $1= && root="$(sed "s/.*$1=\([^ ]*\).*/\1/" </proc/cmdline)"
    1.48 +
    1.49 +got() {
    1.50 +	arg $1= && root="$(sed "s/.*$1=\([^ ]*\).*/\1/" </proc/cmdline)"
    1.51  }
    1.52  
    1.53 -msg()
    1.54 -{
    1.55 -echo "Switching / to $1..."
    1.56 +
    1.57 +msg() {
    1.58 +	echo "Switching / to $1..."
    1.59  }
    1.60  
    1.61 -use()
    1.62 -{
    1.63 -got $1 && msg "$1 $root"
    1.64 +
    1.65 +use() {
    1.66 +	got $1 && msg "$1 $root"
    1.67  }
    1.68  
    1.69 -mnt()
    1.70 -{
    1.71 -r=$(busybox blkid 2> /dev/null | sed "s|\"||g;/${root//[^a-zA-Z0-9]/.}/!d;s|:.*||;q")
    1.72 -r=${r:-$root}
    1.73 -if [ ! -b $r ]; then
    1.74 -	r=${r#/dev/}
    1.75 -	r=/dev/${r%%/*}
    1.76 -fi
    1.77 -d=${root#*$r}
    1.78 -busybox mount $r $1 && return
    1.79 -w=$(cat /sys/module/usb_storage/parameters/delay_use)
    1.80 -w=$((1+${w:-2}))
    1.81 -echo -n "Sleep $w seconds..."
    1.82 -sleep $w
    1.83 -busybox mount $r $1
    1.84 +
    1.85 +mnt() {
    1.86 +	r=$(busybox blkid 2> /dev/null | sed "s|\"||g;/${root//[^a-zA-Z0-9]/.}/!d;s|:.*||;q")
    1.87 +	r=${r:-$root}
    1.88 +	if [ ! -b $r ]; then
    1.89 +		r=${r#/dev/}
    1.90 +		r=/dev/${r%%/*}
    1.91 +	fi
    1.92 +	d=${root#*$r}
    1.93 +	busybox mount $r $1 && return
    1.94 +	w=$(cat /sys/module/usb_storage/parameters/delay_use)
    1.95 +	w=$((1+${w:-2}))
    1.96 +	echo -n "Sleep $w seconds..."
    1.97 +	sleep $w
    1.98 +	busybox mount $r $1
    1.99  }
   1.100  
   1.101 -mod()
   1.102 -{
   1.103 -for i in $@; do
   1.104 -	echo "Loading module: $i"
   1.105 -	modprobe $i 2>/dev/null || busybox insmod $(find /lib/modules|sed "/$i.ko/!dq")
   1.106 -done
   1.107 +
   1.108 +mod() {
   1.109 +	for i in $@; do
   1.110 +		echo "Loading module: $i"
   1.111 +		modprobe $i 2>/dev/null || busybox insmod $(find /lib/modules|sed "/$i.ko/!dq")
   1.112 +	done
   1.113  }
   1.114  
   1.115 -try()
   1.116 -{
   1.117 -if [ ! -d /mnt/etc ] && got cryptoroot; then
   1.118 -	mod dm-mod dm-crypt aes-256
   1.119 -	d=${root#/dev/}
   1.120 -	l=crypto-$d
   1.121 -	if cryptsetup isLuks $root 2>/dev/null; then
   1.122 -		cryptsetup luksOpen $root $l
   1.123 -	else
   1.124 -		read -st 60 -p "Pass phrase : " p
   1.125 -		k=$(echo $p|hashalot -x -n 32 sha512)
   1.126 -		echo 0 $(cat $(find /sys/block|grep /$d/size))\
   1.127 -		crypt aes-plain $k 0 $root 0|dmsetup create $l
   1.128 +
   1.129 +try() {
   1.130 +	if [ ! -d /mnt/etc ] && got cryptoroot; then
   1.131 +		mod dm-mod dm-crypt aes-256
   1.132 +		d=${root#/dev/}
   1.133 +		l=crypto-$d
   1.134 +		if cryptsetup isLuks $root 2>/dev/null; then
   1.135 +			cryptsetup luksOpen $root $l
   1.136 +		else
   1.137 +			read -st 60 -p "Pass phrase : " p
   1.138 +			k=$(echo $p|hashalot -x -n 32 sha512)
   1.139 +			echo 0 $(cat $(find /sys/block|grep /$d/size))\
   1.140 +			crypt aes-plain $k 0 $root 0|dmsetup create $l
   1.141 +		fi
   1.142 +		busybox mount /dev/mapper/$l /mnt
   1.143  	fi
   1.144 -	busybox mount /dev/mapper/$l /mnt
   1.145 -fi
   1.146 -got subroot && return
   1.147 -got loopfs && return
   1.148 -if [ -d /mnt/etc ]; then
   1.149 -	for i in $@; do
   1.150 -		cp -a $i /mnt$(dirname $i)
   1.151 -	done
   1.152 -	quit
   1.153 -fi
   1.154 -fail
   1.155 +	got subroot && return
   1.156 +	got loopfs && return
   1.157 +	if [ -d /mnt/etc ]; then
   1.158 +		for i in $@; do
   1.159 +			cp -a $i /mnt$(dirname $i)
   1.160 +		done
   1.161 +		quit
   1.162 +	fi
   1.163 +	fail
   1.164  }
   1.165  
   1.166 -lvm()
   1.167 -{
   1.168 -use lvmroot || return
   1.169 -mod dm-mod
   1.170 -vgscan --ignorelockingfailure
   1.171 -vgchange -ay --ignorelockingfailure
   1.172 -busybox mount /dev/mapper/$root /mnt
   1.173 -try /dev/mapper $1
   1.174 +
   1.175 +lvm() {
   1.176 +	use lvmroot || return
   1.177 +	mod dm-mod
   1.178 +	vgscan --ignorelockingfailure
   1.179 +	vgchange -ay --ignorelockingfailure
   1.180 +	busybox mount /dev/mapper/$root /mnt
   1.181 +	try /dev/mapper $1
   1.182  }
   1.183  
   1.184 -ldraid()
   1.185 -{
   1.186 -while read l; do
   1.187 -	case "$l" in
   1.188 -		*raid10*)	mod raid10;;
   1.189 -		*raid0*)	mod raid0;;
   1.190 -		*raid1*)	mod raid1;;
   1.191 -		*raid*)		mod raid456;;
   1.192 -		*mirror*)	mod dm-mirror;;
   1.193 -	esac
   1.194 -done
   1.195 +
   1.196 +ldraid() {
   1.197 +	while read l; do
   1.198 +		case "$l" in
   1.199 +			*raid10*)	mod raid10;;
   1.200 +			*raid0*)	mod raid0;;
   1.201 +			*raid1*)	mod raid1;;
   1.202 +			*raid*)		mod raid456;;
   1.203 +			*mirror*)	mod dm-mirror;;
   1.204 +		esac
   1.205 +	done
   1.206  }
   1.207  
   1.208 -if [ "$1" != "log" ]; then
   1.209 +
   1.210 +
   1.211 +
   1.212 +if [ "$1" != 'log' ]; then
   1.213  	busybox mount -t proc proc /proc
   1.214  	busybox mount -t sysfs sys /sys
   1.215  	busybox mount -t tmpfs tmpfs /run
   1.216 @@ -175,6 +178,7 @@
   1.217  	. /run/init
   1.218  	sh
   1.219  fi
   1.220 +
   1.221  for i in /sys/block/*/dev /sys/block/*/*/dev ; do
   1.222  	[ -s "$i" ] || continue
   1.223  	n=${i%/dev}
   1.224 @@ -183,9 +187,12 @@
   1.225  	echo "Create $n "
   1.226  	mknod $n b $(sed 's/:/ /' < $i)
   1.227  done
   1.228 +
   1.229  got modprobe && mod ${root//,/ }
   1.230 +
   1.231  [ -d /proc/sys/dev/cdrom ] &&
   1.232  	ln -s $(sed '/name/!d;s/.*:[^a-z]*//' /proc/sys/dev/cdrom/info) /dev/cdrom
   1.233 +
   1.234  if use dmraid; then
   1.235  	dmraid -s | sed '/^type/!ds/.*: *//' | ldraid
   1.236  	[ ${root:0:4} = /dev ] ||
   1.237 @@ -209,6 +216,7 @@
   1.238  	lvm /etc/mdadm.conf
   1.239  fi
   1.240  lvm
   1.241 +
   1.242  if got mount; then
   1.243  	dev=$root
   1.244  	x=$(busybox blkid|grep $dev|sed 's/:.*//;q')
   1.245 @@ -219,6 +227,7 @@
   1.246  	arg posixovl && echo "And posixovl..." &&
   1.247  	mount.posixovl -F /mnt -- -oallow_other -odefault_permissions -osuid
   1.248  fi
   1.249 +
   1.250  got loopfs && echo "Into file $root..." &&
   1.251  	losetup /dev/loop0 /mnt/$root && busybox mount /dev/loop0 /mnt
   1.252  got bindfs && echo "Bind ${root/,/ to }..." &&
   1.253 @@ -242,17 +251,17 @@
   1.254  got rootfssize
   1.255  [ $(busybox free|busybox awk '/Mem:/{print int(($4*100)/$3)}') -ge $r ] &&
   1.256  	busybox mount -t tmpfs -o size=$root,nr_inodes=$inodes tmpfs /mnt &&
   1.257 -for i in $(ls -ar /); do
   1.258 -	case "$i" in
   1.259 -	.*|cdrom)	;;
   1.260 -	mnt|proc|sys)	mkdir /mnt/$i;;
   1.261 -	usr|var|rootfs*) mv /$i /mnt;;
   1.262 -	*)	cp -a /$i /mnt 2>/dev/null && continue
   1.263 -		fail
   1.264 -		busybox umount /mnt
   1.265 -		exit
   1.266 -	esac
   1.267 -done || fail 3mSkipped
   1.268 +	for i in $(ls -ar /); do
   1.269 +		case "$i" in
   1.270 +			.*|cdrom)	;;
   1.271 +			mnt|proc|sys)	mkdir /mnt/$i;;
   1.272 +			usr|var|rootfs*) mv /$i /mnt;;
   1.273 +			*)	cp -a /$i /mnt 2>/dev/null && continue
   1.274 +				fail
   1.275 +				busybox umount /mnt
   1.276 +				exit
   1.277 +		esac
   1.278 +	done || fail 3mSkipped
   1.279  quit
   1.280  mod squashfs 2>/dev/null || exit
   1.281  msg aufs