move device managers to hooks
This commit is contained in:
parent
32a38b17a5
commit
5eae5cd6a9
17
config
17
config
@ -45,14 +45,6 @@
|
|||||||
#
|
#
|
||||||
#root_opts=""
|
#root_opts=""
|
||||||
|
|
||||||
# device manager
|
|
||||||
#
|
|
||||||
# supported - none, proc, udev, mdev, mdevd
|
|
||||||
# none means no device manager. requires monolithic kernel and you will unable to use UUID, LABEL, PARTUUID, /dev/mapper/*
|
|
||||||
# proc requires monolithic kernel and legacy CONFIG_UEVENT_HELPER
|
|
||||||
#
|
|
||||||
#devmgr=""
|
|
||||||
|
|
||||||
# hostonly mode
|
# hostonly mode
|
||||||
#
|
#
|
||||||
# default - 0
|
# default - 0
|
||||||
@ -63,11 +55,12 @@
|
|||||||
|
|
||||||
# hooks
|
# hooks
|
||||||
#
|
#
|
||||||
# currently supported - lvm, luks
|
# supported - proc, eudev, systemd-udevd, mdev, mdevd, lvm, luks
|
||||||
# example -
|
# example -
|
||||||
# hooks="lvm luks" will support booting LUKS on LVM
|
# hooks="eudev lvm luks" will use eudev as device manager and support booting LUKS on LVM
|
||||||
# hooks="luks lvm" will support booting LVM on LUKS
|
# hooks="mdev luks lvm" will use mdev as device manager and support booting LVM on LUKS
|
||||||
# hooks="luks" will support booting only LUKS
|
# hooks="systemd-udevd luks" will use systemd-udevd as device manager and support booting only LUKS
|
||||||
|
# hooks="proc" will use CONFIG_UEVENT_HELPER as device manager
|
||||||
# and so on...
|
# and so on...
|
||||||
#
|
#
|
||||||
#hooks=""
|
#hooks=""
|
||||||
|
24
hooks/eudev/eudev
Normal file
24
hooks/eudev/eudev
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# handle_eudev()
|
||||||
|
{
|
||||||
|
print "configuring eudev"
|
||||||
|
|
||||||
|
for _binary in udevd udevadm; do
|
||||||
|
copy_binary "$_binary"
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p "${tmpdir}/lib/udev/rules.d"
|
||||||
|
|
||||||
|
printf "%s\n" \
|
||||||
|
'SUBSYSTEMS=="block", ACTION=="add", RUN+="/bin/device-helper"' \
|
||||||
|
> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
||||||
|
|
||||||
|
[ "$monolith" = 1 ] || printf "%s\n" \
|
||||||
|
'ENV{MODALIAS}=="?*", ACTION=="add", RUN+="/bin/modprobe %E{MODALIAS}"' \
|
||||||
|
>> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
||||||
|
}
|
15
hooks/eudev/eudev.init
Normal file
15
hooks/eudev/eudev.init
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2034
|
||||||
|
#
|
||||||
|
# run_eudev()
|
||||||
|
{
|
||||||
|
[ "$break" = devmgr ] && { print "break before run_eudev()"; sh; }
|
||||||
|
|
||||||
|
udevd -N never & eudev_pid="$!"
|
||||||
|
udevadm trigger -c add -t subsystems
|
||||||
|
udevadm trigger -c add -t devices
|
||||||
|
udevadm settle
|
||||||
|
}
|
10
hooks/eudev/eudev.init.late
Normal file
10
hooks/eudev/eudev.init.late
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# stop_eudev()
|
||||||
|
{
|
||||||
|
kill "$eudev_pid"
|
||||||
|
}
|
22
hooks/mdev/mdev
Normal file
22
hooks/mdev/mdev
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2016
|
||||||
|
#
|
||||||
|
# handle_mdev()
|
||||||
|
{
|
||||||
|
print "configuring mdev"
|
||||||
|
|
||||||
|
for _binary in mdev find; do
|
||||||
|
copy_binary "$_binary"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "%s\n" \
|
||||||
|
'SUBSYSTEM=block;.* 0:0 660 @device-helper' \
|
||||||
|
> "${tmpdir}/etc/mdev.conf"
|
||||||
|
|
||||||
|
[ "$monolith" = 1 ] || printf "%s\n" \
|
||||||
|
'$MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"' \
|
||||||
|
>> "${tmpdir}/etc/mdev.conf"
|
||||||
|
}
|
19
hooks/mdev/mdev.init
Normal file
19
hooks/mdev/mdev.init
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2034
|
||||||
|
#
|
||||||
|
# run_mdev()
|
||||||
|
{
|
||||||
|
[ "$break" = devmgr ] && { print "break before run_mdev()"; sh; }
|
||||||
|
|
||||||
|
mdev -s
|
||||||
|
mdev -df 2> /dev/null & mdev_pid="$!"
|
||||||
|
|
||||||
|
find /sys/devices -name uevent |
|
||||||
|
|
||||||
|
while read -r uevent; do
|
||||||
|
printf add > "$uevent"
|
||||||
|
done 2> /dev/null
|
||||||
|
}
|
10
hooks/mdev/mdev.init.late
Normal file
10
hooks/mdev/mdev.init.late
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# stop_mdev()
|
||||||
|
{
|
||||||
|
kill "$mdev_pid"
|
||||||
|
}
|
22
hooks/mdevd/mdevd
Normal file
22
hooks/mdevd/mdevd
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2016
|
||||||
|
#
|
||||||
|
# handle_mdevd()
|
||||||
|
{
|
||||||
|
print "configuring mdevd"
|
||||||
|
|
||||||
|
for _binary in mdevd mdevd-coldplug; do
|
||||||
|
copy_binary "$_binary"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "%s\n" \
|
||||||
|
'SUBSYSTEM=block;.* 0:0 660 @device-helper' \
|
||||||
|
> "${tmpdir}/etc/mdev.conf"
|
||||||
|
|
||||||
|
[ "$monolith" = 1 ] || printf "%s\n" \
|
||||||
|
'$MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"' \
|
||||||
|
>> "${tmpdir}/etc/mdev.conf"
|
||||||
|
}
|
13
hooks/mdevd/mdevd.init
Normal file
13
hooks/mdevd/mdevd.init
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2034
|
||||||
|
#
|
||||||
|
# run_mdevd()
|
||||||
|
{
|
||||||
|
[ "$break" = devmgr ] && { print "break before run_mdevd()"; sh; }
|
||||||
|
|
||||||
|
mdevd 2> /dev/null & mdevd_pid="$!"
|
||||||
|
mdevd-coldplug
|
||||||
|
}
|
10
hooks/mdevd/mdevd.init.late
Normal file
10
hooks/mdevd/mdevd.init.late
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# stop_mdevd()
|
||||||
|
{
|
||||||
|
kill "$mdevd_pid"
|
||||||
|
}
|
9
hooks/proc/proc
Normal file
9
hooks/proc/proc
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# handle_proc()
|
||||||
|
{
|
||||||
|
print "configuring /proc hotplugger"
|
||||||
|
|
||||||
|
copy_binary find
|
||||||
|
}
|
19
hooks/proc/proc.init
Normal file
19
hooks/proc/proc.init
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# run_proc()
|
||||||
|
{
|
||||||
|
[ "$break" = devmgr ] && { print "break before run_proc()"; sh; }
|
||||||
|
|
||||||
|
command -v device-helper > /proc/sys/kernel/hotplug
|
||||||
|
|
||||||
|
# get ready for fork bomb. kek
|
||||||
|
find /sys/devices -name uevent |
|
||||||
|
|
||||||
|
while read -r uevent; do
|
||||||
|
printf add > "$uevent"
|
||||||
|
done 2> /dev/null
|
||||||
|
}
|
7
hooks/proc/proc.init.late
Normal file
7
hooks/proc/proc.init.late
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# stop_proc()
|
||||||
|
{
|
||||||
|
printf '\n' > /proc/sys/kernel/hotplug
|
||||||
|
}
|
24
hooks/systemd-udevd/systemd-udevd
Normal file
24
hooks/systemd-udevd/systemd-udevd
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# handle_systemd_udevd()
|
||||||
|
{
|
||||||
|
print "configuring systemd-udevd"
|
||||||
|
|
||||||
|
for _binary in /lib/systemd/systemd-udevd udevadm; do
|
||||||
|
copy_binary "$_binary"
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p "${tmpdir}/lib/udev/rules.d"
|
||||||
|
|
||||||
|
printf "%s\n" \
|
||||||
|
'SUBSYSTEMS=="block", ACTION=="add", RUN+="/bin/device-helper"' \
|
||||||
|
> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
||||||
|
|
||||||
|
[ "$monolith" = 1 ] || printf "%s\n" \
|
||||||
|
'ENV{MODALIAS}=="?*", ACTION=="add", RUN+="/bin/modprobe %E{MODALIAS}"' \
|
||||||
|
>> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
||||||
|
}
|
15
hooks/systemd-udevd/systemd-udevd.init
Normal file
15
hooks/systemd-udevd/systemd-udevd.init
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154,2034
|
||||||
|
#
|
||||||
|
# run_systemd_udevd()
|
||||||
|
{
|
||||||
|
[ "$break" = devmgr ] && { print "break before run_systemd_udevd()"; sh; }
|
||||||
|
|
||||||
|
/lib/systemd/systemd-udevd -N never & systemd_udevd_pid="$!"
|
||||||
|
udevadm trigger -c add -t subsystems
|
||||||
|
udevadm trigger -c add -t devices
|
||||||
|
udevadm settle
|
||||||
|
}
|
10
hooks/systemd-udevd/systemd-udevd.init.late
Normal file
10
hooks/systemd-udevd/systemd-udevd.init.late
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
# shellcheck shell=sh
|
||||||
|
#
|
||||||
|
# false positive
|
||||||
|
# shellcheck disable=2154
|
||||||
|
#
|
||||||
|
# stop_systemd_udevd()
|
||||||
|
{
|
||||||
|
kill "$systemd_udevd_pid"
|
||||||
|
}
|
50
init
50
init
@ -86,44 +86,6 @@ parse_cmdline()
|
|||||||
esac 2> /dev/null || :; done
|
esac 2> /dev/null || :; done
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_devmgr()
|
|
||||||
{
|
|
||||||
[ "$break" = devmgr ] && { print "break before setup_devmgr()"; sh; }
|
|
||||||
|
|
||||||
case "$devmgr" in
|
|
||||||
proc)
|
|
||||||
command -v device-helper > /proc/sys/kernel/hotplug
|
|
||||||
|
|
||||||
# get ready for fork bomb. kek
|
|
||||||
find /sys/devices -name uevent |
|
|
||||||
|
|
||||||
while read -r uevent; do
|
|
||||||
printf add > "$uevent"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
udev)
|
|
||||||
udevd -N never & devmgr_pid="$!"
|
|
||||||
udevadm trigger -c add -t subsystems
|
|
||||||
udevadm trigger -c add -t devices
|
|
||||||
udevadm settle
|
|
||||||
;;
|
|
||||||
mdev)
|
|
||||||
mdev -s
|
|
||||||
mdev -df & devmgr_pid="$!"
|
|
||||||
|
|
||||||
find /sys/devices -name uevent |
|
|
||||||
|
|
||||||
while read -r uevent; do
|
|
||||||
printf add > "$uevent"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
mdevd)
|
|
||||||
mdevd & devmgr_pid="$!"
|
|
||||||
mdevd-coldplug
|
|
||||||
;;
|
|
||||||
esac 2> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
mount_root()
|
mount_root()
|
||||||
{
|
{
|
||||||
[ "$break" = root ] && { print "break before mount_root()"; sh; }
|
[ "$break" = root ] && { print "break before mount_root()"; sh; }
|
||||||
@ -143,10 +105,6 @@ boot_system()
|
|||||||
{
|
{
|
||||||
[ "$break" = boot ] && { print "break before boot_system()"; sh; }
|
[ "$break" = boot ] && { print "break before boot_system()"; sh; }
|
||||||
|
|
||||||
{
|
|
||||||
kill "$devmgr_pid" || printf '\n' > /proc/sys/kernel/hotplug
|
|
||||||
} 2> /dev/null || :
|
|
||||||
|
|
||||||
for dir in run dev sys proc; do
|
for dir in run dev sys proc; do
|
||||||
mount -o move "$dir" "/mnt/root/${dir}"
|
mount -o move "$dir" "/mnt/root/${dir}"
|
||||||
done
|
done
|
||||||
@ -169,14 +127,8 @@ boot_system()
|
|||||||
|
|
||||||
prepare_environment
|
prepare_environment
|
||||||
parse_cmdline
|
parse_cmdline
|
||||||
|
|
||||||
run_hook init.early
|
|
||||||
|
|
||||||
# XXX may be moved to hooks soon
|
|
||||||
setup_devmgr
|
|
||||||
|
|
||||||
run_hook init
|
run_hook init
|
||||||
|
|
||||||
mount_root
|
mount_root
|
||||||
|
run_hook init.late
|
||||||
boot_system
|
boot_system
|
||||||
}
|
}
|
||||||
|
66
tinyramfs
66
tinyramfs
@ -134,7 +134,7 @@ prepare_initramfs()
|
|||||||
copy_binary "$_binary"
|
copy_binary "$_binary"
|
||||||
done
|
done
|
||||||
|
|
||||||
if command -v blkid; then
|
if command -v blkid > /dev/null; then
|
||||||
copy_binary blkid
|
copy_binary blkid
|
||||||
else
|
else
|
||||||
print "blkid not found. you will unable to use UUID, LABEL, PARTUUID"
|
print "blkid not found. you will unable to use UUID, LABEL, PARTUUID"
|
||||||
@ -260,7 +260,7 @@ copy_hook()
|
|||||||
|
|
||||||
print "running $hook hook"; . "${_dir}/${hook}/${hook}"
|
print "running $hook hook"; . "${_dir}/${hook}/${hook}"
|
||||||
|
|
||||||
for _file in init init.early; do
|
for _file in init init.late; do
|
||||||
[ -f "${_dir}/${hook}/${hook}.${_file}" ] || continue
|
[ -f "${_dir}/${hook}/${hook}.${_file}" ] || continue
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -357,67 +357,6 @@ copy_modules()
|
|||||||
depmod -b "$tmpdir" "$kernel"
|
depmod -b "$tmpdir" "$kernel"
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_devmgr()
|
|
||||||
{
|
|
||||||
print "configuring device manager"
|
|
||||||
|
|
||||||
# false positive
|
|
||||||
# shellcheck disable=2016
|
|
||||||
case "$devmgr" in
|
|
||||||
proc)
|
|
||||||
copy_binary find
|
|
||||||
;;
|
|
||||||
mdev)
|
|
||||||
for _binary in mdev find; do
|
|
||||||
copy_binary "$_binary"
|
|
||||||
done
|
|
||||||
|
|
||||||
printf "%s\n" \
|
|
||||||
'SUBSYSTEM=block;.* 0:0 660 @device-helper' \
|
|
||||||
> "${tmpdir}/etc/mdev.conf"
|
|
||||||
|
|
||||||
[ "$monolith" = 1 ] || printf "%s\n" \
|
|
||||||
'$MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"' \
|
|
||||||
>> "${tmpdir}/etc/mdev.conf"
|
|
||||||
;;
|
|
||||||
mdevd)
|
|
||||||
for _binary in mdevd mdevd-coldplug; do
|
|
||||||
copy_binary "$_binary"
|
|
||||||
done
|
|
||||||
|
|
||||||
printf "%s\n" \
|
|
||||||
'SUBSYSTEM=block;.* 0:0 660 @device-helper' \
|
|
||||||
> "${tmpdir}/etc/mdev.conf"
|
|
||||||
|
|
||||||
[ "$monolith" = 1 ] || printf "%s\n" \
|
|
||||||
'$MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"' \
|
|
||||||
>> "${tmpdir}/etc/mdev.conf"
|
|
||||||
;;
|
|
||||||
udev)
|
|
||||||
# why systemd violates FHS and places daemon in /lib ?
|
|
||||||
if [ -e /lib/systemd/systemd-udevd ]; then
|
|
||||||
copy_binary /lib/systemd/systemd-udevd
|
|
||||||
mv "${tmpdir}/lib/systemd/systemd-udevd" "${tmpdir}/bin/udevd"
|
|
||||||
rmdir "${tmpdir}/lib/systemd"
|
|
||||||
else
|
|
||||||
copy_binary udevd
|
|
||||||
fi
|
|
||||||
|
|
||||||
copy_binary udevadm
|
|
||||||
|
|
||||||
mkdir -p "${tmpdir}/lib/udev/rules.d"
|
|
||||||
|
|
||||||
printf "%s\n" \
|
|
||||||
'SUBSYSTEMS=="block", ACTION=="add", RUN+="/bin/device-helper"' \
|
|
||||||
> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
|
||||||
|
|
||||||
[ "$monolith" = 1 ] || printf "%s\n" \
|
|
||||||
'ENV{MODALIAS}=="?*", ACTION=="add", RUN+="/bin/modprobe %E{MODALIAS}"' \
|
|
||||||
>> "${tmpdir}/lib/udev/rules.d/device-helper.rules"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
make_initramfs()
|
make_initramfs()
|
||||||
(
|
(
|
||||||
print "generating initramfs image"
|
print "generating initramfs image"
|
||||||
@ -449,7 +388,6 @@ make_initramfs()
|
|||||||
copy_hook "$_hook"
|
copy_hook "$_hook"
|
||||||
done
|
done
|
||||||
|
|
||||||
copy_devmgr
|
|
||||||
copy_modules
|
copy_modules
|
||||||
make_initramfs
|
make_initramfs
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user