D.10. /etc/rc.d/init.d/udev_retry

#### Linux From Scratch - Version 9.1

### Appendix D. Boot and sysconfig scripts version-20191031

- Prev

  /etc/rc.d/init.d/mountfs

- Next

  /etc/rc.d/init.d/cleanfs

- Up
- Home

# D.10. /etc/rc.d/init.d/udev_retry

    #!/bin/sh
    ########################################################################
    # Begin udev_retry
    #
    # Description : Udev cold-plugging script (retry)
    #
    # Authors     : Alexander E. Patrakov
    #               DJ Lucas - dj@linuxfromscratch.org
    # Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
    #               Bryan Kadzban -
    #
    # Version     : LFS 7.0
    #
    ########################################################################

    ### BEGIN INIT INFO
    # Provides:            udev_retry
    # Required-Start:      udev
    # Should-Start:        $local_fs cleanfs
    # Required-Stop:
    # Should-Stop:
    # Default-Start:       S
    # Default-Stop:
    # Short-Description:   Replays failed uevents and creates additional devices.
    # Description:         Replays any failed uevents that were skipped due to
    #                      slow hardware initialization, and creates those needed
    #                      device nodes
    # X-LFS-Provided-By:   LFS
    ### END INIT INFO

    . /lib/lsb/init-functions

    case "${1}" in
       start)
          log_info_msg "Retrying failed uevents, if any..."

          # As of udev-186, the --run option is no longer valid
          #rundir=$(/sbin/udevadm info --run)
          rundir=/run/udev
          # From Debian: "copy the rules generated before / was mounted
          # read-write":

          for file in ${rundir}/tmp-rules--*; do
             dest=${file##*tmp-rules--}
             [ "$dest" = '*' ] && break
             cat $file >> /etc/udev/rules.d/$dest
             rm -f $file
          done

          # Re-trigger the uevents that may have failed,
          # in hope they will succeed now
          /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
          while read line ; do
             for subsystem in $line ; do
                /sbin/udevadm trigger --subsystem-match=$subsystem --action=add
             done
          done

          # Now wait for udevd to process the uevents we triggered
          if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
             /sbin/udevadm settle
          fi

          evaluate_retval
          ;;

       *)
          echo "Usage ${0} {start}"
          exit 1
          ;;
    esac

    exit 0

    # End udev_retry

- Prev

  /etc/rc.d/init.d/mountfs

- Next

  /etc/rc.d/init.d/cleanfs

- Up
- Home