poky/meta/recipes-core/initrdscripts/initramfs-framework/udev
Stefan Eichenberger cf2ea6cc27 initramfs-framework: fix boothang when console=null
If console=null systemd-udevd throws an assertion which prevents the
system from booting. This patch redirects stdin, stdout and stderr to
/dev/null in case that the console can't be opened so that udevd still
boots.

A systemd issue was reported here. However, they will not fix this
specific use-case:
https://github.com/systemd/systemd/issues/13332

(From OE-Core rev: dd6ee0b06cd8df6204cf600050516d15172302ea)

Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-03-13 23:00:26 +00:00

1012 B

#!/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

}