diff options
Diffstat (limited to 'debian/extra/initramfs-tools/hooks')
-rwxr-xr-x | debian/extra/initramfs-tools/hooks/udev | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/debian/extra/initramfs-tools/hooks/udev b/debian/extra/initramfs-tools/hooks/udev index 5a860e1..06f3c5e 100755 --- a/debian/extra/initramfs-tools/hooks/udev +++ b/debian/extra/initramfs-tools/hooks/udev @@ -46,11 +46,29 @@ for rules in 50-firmware.rules 50-udev-default.rules \ fi done +# See if chzdev can filter out generated rules, per LP: #2044104 +ZDEV_FILTERING=0 +if [ -e /usr/sbin/chzdev ] && \ + dpkg --compare-versions "$(dpkg-query -f '${Version}' -W s390-tools 2> /dev/null)" '>=' '2.33.0'; +then + ZDEV_FILTERING=1 +fi + # now copy all custom udev rules which don't have an equivalent in /usr/lib (e. g. # 70-persistent-net.rules or similar); They might contain network names or # other bits which are relevant for the initramfs. for rules in /etc/udev/rules.d/*.rules; do - if [ -e "$rules" ] && [ ! -e "/usr/lib/${rules#/etc/}" ]; then + if [ ! -e "$rules" ]; then + continue + fi + + # Skip rules generated by chzdev as they are handled by its own hook. + # See LP: #2044104 + if [ $ZDEV_FILTERING -eq 1 ] && /usr/sbin/chzdev --is-owner "$rules"; then + continue; + fi + + if [ ! -e "/usr/lib/${rules#/etc/}" ]; then cp -p "$rules" "$DESTDIR/usr/lib/udev/rules.d/" fi done |