Changeset 3147 in MondoRescue for branches/3.1/mindi/rootfs/etc/init.d/rcS
- Timestamp:
- Jun 19, 2013, 8:34:46 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.1/mindi/rootfs/etc/init.d/rcS
r2937 r3147 53 53 mount / -o rw,remount > /dev/null 2> /dev/null 54 54 LogIt "Launching Shell" 55 setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1' 55 for i in `cat /proc/cmdline`; do 56 echo $i | grep -qi console= && console=`echo $i | cut -d= -f2` 57 echo $i | grep -qi serial= && serial=`echo $i | cut -d= -f2` 58 done 59 LogIt "Launching Shell" 60 if [[ $serial != "" && -e $serial ]]; then 61 setsid sh -c "exec sh <$serial >$serial 2>&1" 62 elif [[ $console != "" && -e $console ]]; then 63 setsid sh -c "exec sh <$console >$console 2>&1" 64 else 65 setsid sh -c "exec sh </dev/tty1 >/dev/tty1 2>&1" 66 fi 56 67 } 57 68 … … 95 106 openvt $opt 7 /bin/sh /sbin/wait-for-petris 96 107 openvt $opt 8 /usr/bin/tail -f $LOGFILE 108 openvt $opt 9 /usr/bin/tail -f /var/log/messages 97 109 # May avoid shell error messages 98 110 chmod 666 /dev/tty* /dev/console … … 130 142 [ ! "$tapedev" ] && tapedev=`grep media-dev /tmp/mondo-restore.cfg 2>/dev/null | tr -s ' ' ' ' | cut -d' ' -f2` 131 143 mt -f $tapedev rewind 144 if [ $? -ne 0 ]; then 145 LogIt "WARNING: $tapedev failed to rewind, either not a tape or still in OBDR mode." 1 146 LogIt " Trying to find the corresponding SCSI generic device." 1 147 c=0 148 for d in `ls /sys/class/scsi_device/*`; do 149 devtype=`cat $d/device/type` 150 if [ _"$devtype" -eq _"1" ]; then 151 LogIt "NOTE: Device /dev/sg$c is a Sequential device." 1 152 if [ -x /usr/bin/sg_map ]; then 153 dev=`/usr/bin/sg_map | grep -E "^/dev/sg$c" | awk '{print $2}'` 154 LogIt " Retry using device $dev" 1 155 fi 156 elif [ _"$devtype" -eq _"0" ]; then 157 # Skipping a HDD 158 /bin/true 159 elif [ _"$devtype" -eq _"5" ]; then 160 # Checking whether it's a CD or a tape in OBDR mode 161 grep -q -i -E 'dat|ultrium|tape' $d/device/model 162 if [ $? -eq 0 ]; then 163 # Is probably a Tape drive left in OBDR. 164 LogIt "Found that /dev/sg$c is a tape drive (`cat $d/device/model`)." 1 165 grep -q -i -w 'hp' $d/device/vendor 166 if [ $? -eq 0 ]; then 167 LogIt "This is an HP tape drive, even better :-)." 1 168 fi 169 if [ -x /usr/bin/sg_reset ]; then 170 OBDR_MODS="st mptsas mptspi aic7xxx aic94xx mpt2sas " 171 if [ "`grep -i obdrmods /proc/cmdline`" ]; then 172 OBDR_MODS="$OBDR_MODS `cat /proc/cmdline | sed 's~.*obdrmods=\"\(.*\)\".*~\1~'`" 173 fi 174 LogIt "Removing modules $OBDR_MODS." 1 175 for m in $OBDR_MODS; do 176 rmmod $i 177 done 178 LogIt "Trying to force device /dev/sg$c to be in sequential mode." 1 179 /usr/bin/sg_reset -d /dev/sg$c 180 LogIt "Inserting modules `rev $OBDR_MODS`." 1 181 for m in `rev $OBDR_MODS`; do 182 modprobe $i 183 done 184 LogIt "Retry again as the device has been set back into sequential mode." 1 185 mt -f $tapedev fsf 2 186 res=$? 187 # exit the loop to continue and return if that previous mt failed. 188 # If it succeeded we transparently continue !! 189 break 190 else 191 LogIt "WARNING: Unable to reset /dev/sg$c as the sg_reset command is not availble." 1 192 fi 193 fi 194 else 195 LogIt "Device /dev/sg$c has an unknown type $devtype." 1 196 fi 197 c=`expr $c + 1` 198 done 199 200 if [ $res -ne 0 ]; then 201 cd $old_pwd 202 return $res 203 fi 204 fi 205 132 206 mt -f $tapedev fsf 2 133 207 # 32k is DEFAULT_INTERNAL_TAPE_BLOCK_SIZE … … 150 224 151 225 # Here we can add the USB storage module, it's working even with OBDR ! 152 modprobe -q usb-storage 226 modprobe -q usb-storage 2> /dev/null 153 227 # Tape takes some time to appear 154 228 sleep 10 … … 156 230 UntarTapeStuff $tapedev 157 231 res=$? 232 tapedev="default tape device" 158 233 while [ "$res" -ne "0" ] ; do 159 234 LogIt "$tapedev failed to act as extended data disk for booting." 1 160 LogIt "Please specify an alternate tape device," 1235 LogIt "Please specify an alternate non-rewinding tape device, such as /dev/nst0" 1 161 236 LogIt "or hit <Enter> to boot from another media." 1 162 237 echo -en "---> " … … 198 273 fi 199 274 echo "Activating a potential USB Storage device" 200 modprobe -q usb-storage 275 modprobe -q usb-storage 2> /dev/null 201 276 for i in 1 2 3 4 5 6 7 8 9 10 ; do 202 277 sleep 1 … … 322 397 ps | grep -v grep |grep udevd 2> /dev/null 1> /dev/null 323 398 if [ $? -ne 0 ]; then 324 /sbin/udevd --daemon & 399 if [ -x /sbin/udevd ]; then 400 /sbin/udevd --daemon & 401 elif [ -x /usr/bin/udevd ]; then 402 /usr/bin/udevd --daemon & 403 fi 325 404 echo "Waiting for udev to start..." 326 405 sleep 5 … … 337 416 /sbin/udevsettle --timeout=10 338 417 LogIt "Discovering with udevsettle" 339 elif [ -x /sbin/udevadm ] ; then340 UdevadmTrigger341 /sbin/udevadmsettle --timeout=10418 elif [ -x /sbin/udevadm ] || [ -x /usr/bin/udevadm ]; then 419 ua=`UdevadmTrigger` 420 $ua settle --timeout=10 342 421 LogIt "Discovering with udevadm" 343 422 fi … … 390 469 return 391 470 fi 392 modprobe -q uhcd_hci 393 modprobe -q usbhid 471 modprobe -q uhcd_hci 2> /dev/null 472 modprobe -q usbhid 2> /dev/null 394 473 } 395 474 … … 403 482 LogIt "Scanning LVM's..." 1 404 483 if which lvm ; then 405 modprobe -q dm-mod 406 modprobe -q dm_mod 484 modprobe -q dm-mod 2> /dev/null 485 modprobe -q dm_mod 2> /dev/null 407 486 lvm vgscan --mknodes 408 487 else … … 602 681 # For technical reasons, some sets are as large as 16MB. 603 682 # I am allowing 32MB because selective restore occupies a lot of space. 604 for size in 128m 64m 48m 40m 32m ; do683 for size in 256m 128m 64m 48m 40m 32m ; do 605 684 mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003 606 685 LogIt "Trying '$mount_cmd'" … … 651 730 } 652 731 653 654 732 EnableCcissIfAppropriate() { 655 733 local f … … 668 746 669 747 # Now engage all Smart Array controllers to detect attached devices 670 for f in /proc/driver/cciss/cciss* ; do 671 LogIt "Engaging $f" 672 echo "engage scsi" > $f 673 LogIt "...result=$?" 674 done 748 if [ -d "/proc/driver/cciss" ]; then 749 for f in /proc/driver/cciss/cciss* ; do 750 LogIt "Engaging $f" 751 echo "engage scsi" > $f 752 LogIt "...result=$?" 753 done 754 fi 675 755 } 676 756 … … 685 765 if [ $? -eq 0 ]; then 686 766 echo "Forcing first $j..." 687 modprobe -q $j 767 modprobe -q $j 2> /dev/null 688 768 fi 689 769 done … … 701 781 fi 702 782 echo "Probing $j..." 703 modprobe -q $j 783 modprobe -q $j 2> /dev/null 704 784 done 705 785 } … … 707 787 UdevadmTrigger() { 708 788 789 # This function should just echo the return value $ua 790 709 791 if [ -x /sbin/udevadm ]; then 710 v=`/sbin/udevadm --version` 711 if [ "$v" -ge "146" ]; then 712 /sbin/udevadm trigger --type=failed 792 ua="/sbin/udevadm" 793 elif [ -x /usr/bin/udevadm ]; then 794 ua="/usr/bin/udevadm" 795 else 796 LogIt "WARNING: Unable to find udevadm. Not triggering udev" 797 ua="/bin/true" 798 fi 799 800 v="`$ua --version`" 801 802 if [ -x "$v" ]; then 803 LogIt "Triggering udev again..." 804 if [ "$v" -ge "146" -a "$v" -lt "174" ]; then 805 $ua trigger --type=failed 806 elif [ "$v" -lt "146" ]; then 807 $ua trigger --retry-failed 713 808 else 714 /sbin/udevadm trigger --retry-failed 715 fi 716 fi 809 LogIt "... not needed" 810 fi 811 fi 812 echo $ua 717 813 } 718 814 … … 730 826 # (useful for rules creating network ifcfg files) 731 827 if [ -e "/tmp/USE-UDEV" ] ; then 732 UdevadmTrigger828 ua=`UdevadmTrigger` 733 829 fi 734 830 } … … 739 835 MINDI_REV=PBREV 740 836 trap CaughtSoftReset SIGTERM 741 trap GetShell SIGINT R837 trap GetShell SIGINT 742 838 LOGFILE=/var/log/mondorestore.log 743 839 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games … … 907 1003 dmesg >> $LOGFILE 908 1004 LogIt "-------------" 1005 LogIt "/proc/mdstat:" >> $LOGFILE 1006 LogIt "-------------" 1007 cat /proc/mdstat >> $LOGFILE 1008 LogIt "-------------" 909 1009 LogIt "/proc/swaps:" >> $LOGFILE 910 1010 LogIt "-------------" … … 937 1037 # Not sure it's still needed, but shouldn't hurt 938 1038 if [ -e "/tmp/USE-UDEV" ] ; then 939 UdevadmTrigger1039 ua=`UdevadmTrigger` 940 1040 fi 941 1041 if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
Note:
See TracChangeset
for help on using the changeset viewer.