--- elwix/config/etc/rootfs/rc 2011/11/02 10:30:20 1.1.1.1.6.2 +++ elwix/config/etc/rootfs/rc 2018/01/01 21:54:24 1.7.2.6 @@ -2,7 +2,7 @@ # # Boot startup script for ELWIX RootFS ... # -# $Id: rc,v 1.1.1.1.6.2 2011/11/02 10:30:20 misho Exp $ +# $Id: rc,v 1.7.2.6 2018/01/01 21:54:24 misho Exp $ stty status '^T' @@ -18,47 +18,142 @@ EDITOR=vi PAGER=less export HOME PATH TERM BLOCKSIZE EDITOR PAGER +ETCDEV="md1" +ETCSIZE="8m" + +FRMDEV="md3" +FRMSIZE="48m" +FRMFILE="elwix-firmware.sys" + +FRMDEV2="md4" +FRMSIZE2="24m" +FRMFILE2="elwix-firmware2.sys" + +FRMPATH="/elwix" +FRM2PATH="/elwix/pkg" FIT2CF="/dev/ufs/fit2cf" CFDIR="/elwix/cf" +ELWIX2="/dev/ufs/elwix2" +ELWIX="/dev/ufs/elwix" + umask 022 failed_sysvol() { - echo " RootFS: Failed $1 ELWIX $2 ... Go to emergency shell !!!" + echo " RootFS: Failed $1 - $2 ... Go to emergency shell !!!" exit 127 } boot_elwix() { - echo " RootFS: Load ELWIX system firmware" - mdconfig -a -t vnode -u 1 -f /elwix/elwix-firmware.sys && mount -r /dev/md1.uzip /usr - if test $? -ne 0; then - mdconfig -a -t vnode -u 1 -f /elwix/altroot/elwix-firmware.sys && mount -r /dev/md1.uzip /usr - if test $? -ne 0; then - failed_sysvol "load system and default image" elwix-firmware.sys - fi + echo " RootFS: Loading ELWIX system firmware" + + mdmfs -s $FRMSIZE -S -n -m0 -oasync $FRMDEV /usr + if [ "$?" != "0" ]; then + failed_sysvol "to mount firmware image " $FRMFILE fi - sleep 2 + cd /usr + pax -r -z -pe -f $FRMPATH/$FRMFILE + if [ "$?" != "0" ]; then + failed_sysvol "to load firmware image " $FRMFILE + fi + cd - + mount -ur /usr } +boot_elwix2() +{ + echo " RootFS: Loading ELWIX secondary firmware" + + mdmfs -s $FRMSIZE2 -S -n -m0 -oasync $FRMDEV2 $FRM2PATH + if [ "$?" != "0" ]; then + failed_sysvol "to mount firmware image " $FRMFILE2 + fi + cd $FRM2PATH + pax -r -z -pe -f $FRMPATH/$FRMFILE2 + if [ "$?" != "0" ]; then + failed_sysvol "to load firmware image " $FRMFILE2 + fi + cd - + mount -ur $FRM2PATH +} + +mount_usr() +{ + echo " RootFS: Mounting ELWIX system image" + + mount -t nullfs -r $FRMPATH/usr /usr + if [ "$?" != "0" ]; then + failed_sysvol "to mount system image " $FRMFILE + fi +} + # ## main() # echo "ELWIX>>> Firmware RootFS boot stage ..." -echo " RootFS: Mount ELWIX system volume" -fsck -q -y 1>/dev/null 2>&1 && mount -a || fsck -y 1>/dev/null 2>&1 && mount -a || \ - fsck -f -y 1>/dev/null 2>&1 && mount -a || failed_sysvol mount "system volume" -if test -c $FIT2CF -a -d $CFDIR; then +if test -c $ELWIX2; then + BOOTSLICE=`kenv currdev` + if test "${BOOTSLICE#disk0}" != "a:"; then + ELWIX=$ELWIX2 + fi +fi + +if ! mount -o ro $ELWIX $FRMPATH; then + umount $FRMPATH + fsck -y $ELWIX 1>/dev/null 2>&1 + if ! mount -o ro $ELWIX $FRMPATH; then + umount -f $FRMPATH + fsck -f -y $ELWIX 1>/dev/null 2>&1 + if ! mount -o ro $ELWIX $FRMPATH; then + failed_sysvol mount "system volume" + fi + fi +fi + +if ! mount -a; then + umount -A + fsck -y 1>/dev/null 2>&1 + if ! mount -a; then + umount -A -f + fsck -f -y 1>/dev/null 2>&1 + if ! mount -a; then + failed_sysvol mount "system volume" + fi + fi +fi + +if test -c "$FIT2CF" -a -d "$CFDIR"; then echo " RootFS: Mount ELWIX flash volume" - fsck -y -tufs $FIT2CF 1>/dev/null 2>&1 && mount -o ro $FIT2CF $CFDIR || \ - fsck -f -y -tufs $FIT2CF 1>/dev/null 2>&1 && mount -o ro $FIT2CF $CFDIR || \ - failed_sysvol mount "flash volume" + if ! mount -o ro $FIT2CF $CFDIR; then + umount $CFDIR + fsck -y -tufs $FIT2CF 1>/dev/null 2>&1 + if ! mount -o ro $FIT2CF $CFDIR; then + echo "Error:: mount of $FIT2CF to $CFDIR failed!" + fi + fi fi -boot_elwix +if [ -r $FRMPATH/$FRMFILE ]; then + boot_elwix +else + if [ -d $FRMPATH/usr ]; then + mount_usr + else + echo " RootFS: Skip loading ELWIX system firmware ..." + fi +fi -/etc/rc.init +if [ -r $FRMPATH/$FRMFILE2 ]; then + boot_elwix2 +fi + +cd /elwix +mdmfs -s $ETCSIZE -S -n -m0 -oasync $ETCDEV /etc +pax -rw -pe etc / + +exec /etc/rc.init