blob: 4898b89246346815d295b5b1c1a0182159e0ff0f [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001#!/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
Brad Bishop6ef32652018-10-09 18:59:25 +01009 udevadm settle
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010 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
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050042 mkdir -p /var/run
Patrick Williamsc124f4f2015-09-15 14:41:29 -050043
Andrew Geissler82c905d2020-04-13 13:39:40 -050044 # 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
Patrick Williamsc124f4f2015-09-15 14:41:29 -050047 $_UDEV_DAEMON --daemon
48 udevadm trigger --action=add
49 udevadm settle
50}