#!/bin/sh

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
    prereqs
    exit 0
    ;;
esac

# stop vdevd (listener owns /run/udev/control)
_pid="$(vdevadm control --print-pid 2>/dev/null)" || true
if [ -n "${_pid}" ]; then
	kill -TERM "${_pid}" 2>/dev/null || true
	# Give it a moment to unlink; then drop any leftover socket so the
	# real-root listener is not masked by a dead AF_UNIX inode on the
	# moved /dev tmpfs (/run/udev -> metadata/udev).
	i=0
	while kill -0 "${_pid}" 2>/dev/null && [ "$i" -lt 50 ]; do
		sleep 0.1
		i=$((i + 1))
	done
fi
rm -f /run/udev/control /dev/metadata/udev/control 2>/dev/null || true

# move the /dev tmpfs to the rootfs
mount -n -o move /dev "${rootmnt}/dev"

# create a temporary symlink to the final /dev for other initramfs scripts
nuke /dev
ln -s "${rootmnt}/dev" /dev
