From 537babea1759f977928a3560c97dc896976668a4 Mon Sep 17 00:00:00 2001 From: aliriza Date: Tue, 10 Jan 2023 10:05:32 +0000 Subject: [PATCH] eudev initramfs-tools scripts from devuan --- sys/fs/eudev/eudev.hook | 67 ++++++++++++++++++++++++++++++++++ sys/fs/eudev/eudev.init-bottom | 23 ++++++++++++ sys/fs/eudev/eudev.init-top | 35 ++++++++++++++++++ sys/fs/eudev/ympbuild | 17 ++++++++- 4 files changed, 141 insertions(+), 1 deletion(-) create mode 100755 sys/fs/eudev/eudev.hook create mode 100755 sys/fs/eudev/eudev.init-bottom create mode 100755 sys/fs/eudev/eudev.init-top diff --git a/sys/fs/eudev/eudev.hook b/sys/fs/eudev/eudev.hook new file mode 100755 index 00000000..342e74c6 --- /dev/null +++ b/sys/fs/eudev/eudev.hook @@ -0,0 +1,67 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +root_over_the_network() { + if egrep -qs '^/dev/(nbd|nd[a-z]|etherd/e)[^[:space:]]+[[:space:]]+/[[:space:]]' /etc/fstab; then + return 0 + elif egrep -qs '^[^[:space:]#]+[[:space:]]+/[[:space:]]+nfs[234]?[[:space:]]' /etc/fstab; then + return 0 + fi + return 1 # false +} + +. /usr/share/initramfs-tools/hook-functions + +copy_exec /sbin/udevd /sbin +copy_exec /bin/udevadm /bin + +# copy compat symlink +cp -a /sbin/udevadm $DESTDIR/sbin/udevadm + +mkdir -p $DESTDIR/etc/udev +cp -p /etc/udev/udev.conf $DESTDIR/etc/udev/ + +mkdir -p $DESTDIR/lib/udev/rules.d/ +for rules in 50-udev-default.rules 60-persistent-storage.rules \ + 80-drivers.rules \ + 64-md-raid.rules 60-persistent-storage-lvm.rules \ + 55-dm.rules 60-persistent-storage-dm.rules; do + if [ -e /etc/udev/rules.d/$rules ]; then + cp -p /etc/udev/rules.d/$rules $DESTDIR/lib/udev/rules.d/ + elif [ -e /lib/udev/rules.d/$rules ]; then + cp -p /lib/udev/rules.d/$rules $DESTDIR/lib/udev/rules.d/ + fi +done + +# try to autodetect the value of this configuration option +if [ -z "$NEED_PERSISTENT_NET" ] && root_over_the_network; then + NEED_PERSISTENT_NET='yes' +fi + +# Copy the rules for persistent network interface names for the benefit of +# systems which need to boot over the network. If this is enabled then the +# initramfs must be rebuilt every time a new network interface is added. +# See #414287 for details. +case "$NEED_PERSISTENT_NET" in +YES|yes|Yes|Y|y) + if [ -e /etc/udev/rules.d/70-persistent-net.rules ]; then + cp -p /etc/udev/rules.d/70-persistent-net.rules $DESTDIR/lib/udev/rules.d/ + fi + ;; +esac + +cp /lib/udev/hotplug.functions $DESTDIR/lib/udev/ +for program in ata_id scsi_id; do + copy_exec /lib/udev/$program /lib/udev +done +copy_exec /sbin/blkid /sbin diff --git a/sys/fs/eudev/eudev.init-bottom b/sys/fs/eudev/eudev.init-bottom new file mode 100755 index 00000000..ff99edc0 --- /dev/null +++ b/sys/fs/eudev/eudev.init-bottom @@ -0,0 +1,23 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +# Stop udevd, we'll miss a few events while we run init, but we catch up +udevadm control --exit + +# 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 + diff --git a/sys/fs/eudev/eudev.init-top b/sys/fs/eudev/eudev.init-top new file mode 100755 index 00000000..20416c3d --- /dev/null +++ b/sys/fs/eudev/eudev.init-top @@ -0,0 +1,35 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +if [ -w /sys/kernel/uevent_helper ]; then + echo > /sys/kernel/uevent_helper +fi + +udevd --daemon --resolve-names=never + +udevadm trigger --action=add +udevadm settle || true + +if [ -d /sys/bus/scsi ]; then + modprobe -q scsi_wait_scan && modprobe -r scsi_wait_scan || true + udevadm settle || true +fi + +# If the rootdelay parameter has been set, we wait a bit for devices +# like usb/firewire disks to settle. +if [ "$ROOTDELAY" ]; then + sleep $ROOTDELAY +fi + +# Leave udev running to process events that come in out-of-band (like USB +# connections) diff --git a/sys/fs/eudev/ympbuild b/sys/fs/eudev/ympbuild index 186dde4d..7a954777 100644 --- a/sys/fs/eudev/ympbuild +++ b/sys/fs/eudev/ympbuild @@ -10,10 +10,16 @@ license=('GPLv3') source=("https://github.com/eudev-project/eudev/releases/download/v$version/eudev-$version.tar.gz" "eudev.openrc" "eudev.groups" - "eudev.sysconf") + "eudev.sysconf" + "eudev.init-top" + "eudev.init-bottom" + "eudev.hook") depends=(kmod) makedepends=() md5sums=('417ba948335736d4d81874fba47a30f7' + 'SKIP' + 'SKIP' + 'SKIP' 'SKIP' 'SKIP' 'SKIP') @@ -55,5 +61,14 @@ package(){ # sysconf install -Dm755 ../eudev.sysconf \ ${DESTDIR}/etc/sysconf.d/eudev + # initramfs-tools stuff + mkdir -p ${DESTDIR}/usr/share/initramfs-tools/{hooks,scripts} + mkdir -p ${DESTDIR}/usr/share/initramfs-tools/scripts/init-{top,bottom} + install ../eudev.hook \ + ${DESTDIR}/usr/share/initramfs-tools/hooks/udev + install ../eudev.init-top \ + ${DESTDIR}/usr/share/initramfs-tools/scripts/init-top/udev + install ../eudev.init-bottom \ + ${DESTDIR}/usr/share/initramfs-tools/scripts/init-bottom/udev }