| #!/bin/sh |
| # Copyright (C) 2011, 2012 O.S. Systems Software LTDA. |
| # Licensed on MIT |
| |
| udev_shutdown_hook_handler() { |
| status=$1 |
| module=$2 |
| if [ "$status" = "pre" ] && [ "$module" = "finish" ]; then |
| udevadm settle |
| killall `basename $_UDEV_DAEMON` 2>/dev/null |
| fi |
| } |
| |
| udev_daemon() { |
| OPTIONS="/sbin/udev/udevd /sbin/udevd /lib/udev/udevd /lib/systemd/systemd-udevd" |
| |
| for o in $OPTIONS; do |
| if [ -x "$o" ]; then |
| echo $o |
| return 0 |
| fi |
| done |
| |
| return 1 |
| } |
| |
| _UDEV_DAEMON=`udev_daemon` |
| |
| udev_enabled() { |
| if [ -z "$_UDEV_DAEMON" ]; then |
| msg "WARNING: Cannot find the udev daemon; daemon will not be started in initramfs." |
| return 1 |
| fi |
| |
| return 0 |
| } |
| |
| udev_run() { |
| add_module_pre_hook "udev_shutdown_hook_handler" |
| |
| mkdir -p /run |
| mkdir -p /var/run |
| |
| # Workaround if console=null, systemd-udevd needs valid stdin, stdout and stderr to work |
| sh -c "exec 4< /dev/console" || { exec 0> /dev/null; exec 1> /dev/null; exec 2> /dev/null; } |
| |
| $_UDEV_DAEMON --daemon |
| udevadm trigger --action=add |
| udevadm settle |
| } |