1#!/bin/sh 2# Copyright (C) 2011, 2012 O.S. Systems Software LTDA. 3# Licensed on MIT 4 5udev_shutdown_hook_handler() { 6 status=$1 7 module=$2 8 if [ "$status" = "pre" ] && [ "$module" = "finish" ]; then 9 udevadm settle 10 killall `basename $_UDEV_DAEMON` 2>/dev/null 11 fi 12} 13 14udev_daemon() { 15 OPTIONS="/sbin/udev/udevd /sbin/udevd /lib/udev/udevd /lib/systemd/systemd-udevd" 16 17 for o in $OPTIONS; do 18 if [ -x "$o" ]; then 19 echo $o 20 return 0 21 fi 22 done 23 24 return 1 25} 26 27_UDEV_DAEMON=`udev_daemon` 28 29udev_enabled() { 30 if [ -z "$_UDEV_DAEMON" ]; then 31 msg "WARNING: Cannot find the udev daemon; daemon will not be started in initramfs." 32 return 1 33 fi 34 35 return 0 36} 37 38udev_run() { 39 add_module_pre_hook "udev_shutdown_hook_handler" 40 41 mkdir -p /run 42 mkdir -p /var/run 43 44 # Workaround if console=null, systemd-udevd needs valid stdin, stdout and stderr to work 45 sh -c "exec 4< /dev/console" || { exec 0> /dev/null; exec 1> /dev/null; exec 2> /dev/null; } 46 47 $_UDEV_DAEMON --daemon 48 udevadm trigger --action=add 49 udevadm settle 50} 51