update: kernel-modules-hook-hardlinks: fix umount issue caused by udevd try 1

This commit is contained in:
JerryXiao 2023-05-31 13:48:16 +08:00
parent 512e59c17d
commit 3591f5ee9e
Signed by: Jerry
GPG key ID: 22618F758B5BE2E5
2 changed files with 13 additions and 2 deletions

View file

@ -4,8 +4,18 @@ kver=$(uname -r)
while read -r line; do while read -r line; do
# We only care about the running kernel # We only care about the running kernel
if [[ "$line" == usr/lib/modules/$kver/vmlinuz && -d usr/lib/modules/running-kernel ]];then if [[ "$line" == usr/lib/modules/$kver/vmlinuz && -d usr/lib/modules/running-kernel ]];then
mount --mkdir --bind --options ro /usr/lib/modules/{running-kernel,$kver} mount --mkdir --bind --options ro /usr/lib/modules/{running-kernel,$kver} || continue
# Mounting read-only since the only modification here should be unmounting # Mounting read-only since the only modification here should be unmounting
# when rebooting or reinstalling the running kernel # when rebooting or reinstalling the running kernel
mount_unit="usr-lib-modules-${kver//-/\\x2d}.mount"
install -Dm644 <(
cat << EOF
[Unit]
After=$mount_unit
Requires=$mount_unit
EOF
) /run/systemd/system/systemd-udevd.service.d/kernel-modules-hook-hardlinks.conf
systemctl daemon-reload
# Required for clean umount on shutdown
fi fi
done done

View file

@ -9,7 +9,8 @@ while read -r line; do
# This means we already ran that hook during 'remove case' # This means we already ran that hook during 'remove case'
# #
# Remove the mount so we can reinstall the kernel # Remove the mount so we can reinstall the kernel
umount ${line%vmlinuz} # Fixme: systemd-udevd would likely block the umount
umount /${line%vmlinuz}
elif [[ -f "$line" && ! -d "/usr/lib/modules/running-kernel/" ]];then elif [[ -f "$line" && ! -d "/usr/lib/modules/running-kernel/" ]];then
# Kernel install is present and we do not have a copy # Kernel install is present and we do not have a copy
# #