Changeset 3147 in MondoRescue for branches/3.1/mindi/rootfs/etc/init.d/rcS


Ignore:
Timestamp:
Jun 19, 2013, 8:34:46 AM (11 years ago)
Author:
Bruno Cornec
Message:
  • First pass on svn merge -r 2935:3146 ../3.0
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.1/mindi/rootfs/etc/init.d/rcS

    r2937 r3147  
    5353    mount / -o rw,remount > /dev/null 2> /dev/null
    5454    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
    5667}
    5768
     
    95106    openvt $opt 7 /bin/sh /sbin/wait-for-petris
    96107    openvt $opt 8 /usr/bin/tail -f $LOGFILE
     108    openvt $opt 9 /usr/bin/tail -f /var/log/messages
    97109    # May avoid shell error messages
    98110    chmod 666 /dev/tty* /dev/console
     
    130142    [ ! "$tapedev" ] && tapedev=`grep media-dev /tmp/mondo-restore.cfg 2>/dev/null | tr -s ' ' ' ' | cut -d' ' -f2`
    131143    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
    132206    mt -f $tapedev fsf 2
    133207    # 32k is DEFAULT_INTERNAL_TAPE_BLOCK_SIZE
     
    150224
    151225    # 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
    153227    # Tape takes some time to appear
    154228    sleep 10
     
    156230    UntarTapeStuff $tapedev
    157231    res=$?
     232    tapedev="default tape device"
    158233    while [ "$res" -ne "0" ] ; do
    159234        LogIt "$tapedev failed to act as extended data disk for booting." 1
    160         LogIt "Please specify an alternate tape device," 1
     235        LogIt "Please specify an alternate non-rewinding tape device, such as /dev/nst0" 1
    161236        LogIt "or hit <Enter> to boot from another media." 1
    162237        echo -en "---> "
     
    198273    fi
    199274    echo "Activating a potential USB Storage device"
    200     modprobe -q usb-storage
     275    modprobe -q usb-storage 2> /dev/null
    201276    for i in 1 2 3 4 5 6 7 8 9 10 ; do
    202277        sleep 1
     
    322397    ps | grep -v grep |grep udevd 2> /dev/null 1> /dev/null
    323398    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
    325404        echo "Waiting for udev to start..."
    326405        sleep 5
     
    337416        /sbin/udevsettle --timeout=10
    338417        LogIt "Discovering with udevsettle"
    339     elif [ -x /sbin/udevadm ]; then
    340         UdevadmTrigger
    341         /sbin/udevadm settle --timeout=10
     418    elif [ -x /sbin/udevadm ] || [ -x /usr/bin/udevadm ]; then
     419        ua=`UdevadmTrigger`
     420        $ua settle --timeout=10
    342421        LogIt "Discovering with udevadm"
    343422    fi
     
    390469    return
    391470fi
    392 modprobe -q uhcd_hci
    393 modprobe -q usbhid
     471modprobe -q uhcd_hci 2> /dev/null
     472modprobe -q usbhid 2> /dev/null
    394473}
    395474
     
    403482        LogIt "Scanning LVM's..." 1
    404483        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
    407486            lvm vgscan --mknodes
    408487        else
     
    602681# For technical reasons, some sets are as large as 16MB.
    603682# I am allowing 32MB because selective restore occupies a lot of space.
    604     for size in 128m 64m 48m 40m 32m ; do
     683    for size in 256m 128m 64m 48m 40m 32m ; do
    605684        mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003
    606685        LogIt "Trying '$mount_cmd'"
     
    651730}
    652731
    653 
    654732EnableCcissIfAppropriate() {
    655733    local f
     
    668746
    669747    # 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
    675755}
    676756
     
    685765        if [ $? -eq 0 ]; then
    686766            echo "Forcing first $j..."
    687             modprobe -q $j
     767            modprobe -q $j 2> /dev/null
    688768        fi
    689769    done
     
    701781        fi
    702782        echo "Probing $j..."
    703         modprobe -q $j
     783        modprobe -q $j 2> /dev/null
    704784    done
    705785}
     
    707787UdevadmTrigger() {
    708788
     789# This function should just echo the return value $ua
     790
    709791if [ -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"
     793elif [ -x /usr/bin/udevadm ]; then
     794    ua="/usr/bin/udevadm"
     795else
     796    LogIt "WARNING: Unable to find udevadm. Not triggering udev"
     797    ua="/bin/true"
     798fi
     799
     800v="`$ua --version`"
     801
     802if [ -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
    713808    else
    714         /sbin/udevadm trigger --retry-failed
    715     fi
    716 fi
     809        LogIt "... not needed"
     810    fi
     811fi
     812echo $ua
    717813}
    718814
     
    730826    # (useful for rules creating network ifcfg files)
    731827    if [ -e "/tmp/USE-UDEV" ] ; then
    732         UdevadmTrigger
     828        ua=`UdevadmTrigger`
    733829    fi
    734830}
     
    739835MINDI_REV=PBREV
    740836trap CaughtSoftReset SIGTERM
    741 trap GetShell SIGINTR
     837trap GetShell SIGINT
    742838LOGFILE=/var/log/mondorestore.log
    743839PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
     
    9071003dmesg >> $LOGFILE
    9081004LogIt "-------------"
     1005LogIt "/proc/mdstat:" >> $LOGFILE
     1006LogIt "-------------"
     1007cat /proc/mdstat  >> $LOGFILE
     1008LogIt "-------------"
    9091009LogIt "/proc/swaps:" >> $LOGFILE
    9101010LogIt "-------------"
     
    9371037# Not sure it's still needed, but shouldn't hurt
    9381038if [ -e "/tmp/USE-UDEV" ] ; then
    939     UdevadmTrigger
     1039    ua=`UdevadmTrigger`
    9401040fi
    9411041if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
Note: See TracChangeset for help on using the changeset viewer.