systemd/rootfs-generator.sh: generate units in /run/systemd/generator
Generate the units in /run/systemd/generator, so they are picked up by systemd. https://bugzilla.redhat.com/show_bug.cgi?id=1069133 https://bugzilla.redhat.com/show_bug.cgi?id=949697master
parent
ab9457efd7
commit
fa795f29e2
|
@ -3,6 +3,37 @@
|
|||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
generator_wait_for_dev()
|
||||
{
|
||||
local _name
|
||||
|
||||
_name="$(str_replace "$1" '/' '\x2f')"
|
||||
|
||||
[ -e "$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
|
||||
|
||||
printf '[ -e "%s" ]\n' $1 \
|
||||
>> "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||
{
|
||||
printf '[ -e "%s" ] || ' $1
|
||||
printf 'warn "\"%s\" does not exist"\n' $1
|
||||
} >> "$hookdir/emergency/80-${_name}.sh"
|
||||
|
||||
_name=$(dev_unit_name "$1")
|
||||
if ! [ -L /run/systemd/generator/initrd.target.wants/${_name}.device ]; then
|
||||
[ -d /run/systemd/generator/initrd.target.wants ] || mkdir -p /run/systemd/generator/initrd.target.wants
|
||||
ln -s ../${_name}.device /run/systemd/generator/initrd.target.wants/${_name}.device
|
||||
fi
|
||||
|
||||
if ! [ -f /run/systemd/generator/${_name}.device.d/timeout.conf ]; then
|
||||
mkdir -p /run/systemd/generator/${_name}.device.d
|
||||
{
|
||||
echo "[Unit]"
|
||||
echo "JobTimeoutSec=3600"
|
||||
} > /run/systemd/generator/${_name}.device.d/timeout.conf
|
||||
fi
|
||||
}
|
||||
|
||||
root=$(getarg root=)
|
||||
case "$root" in
|
||||
block:LABEL=*|LABEL=*)
|
||||
|
@ -29,6 +60,6 @@ case "$root" in
|
|||
rootok=1 ;;
|
||||
esac
|
||||
|
||||
[ "${root%%:*}" = "block" ] && wait_for_dev -n "${root#block:}"
|
||||
[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}"
|
||||
|
||||
exit 0
|
||||
|
|
Loading…
Reference in New Issue