Looking at where the blacklists come from, it looks like kernel autogenerates "blacklist_linux_4.15-0-15-generic.conf" files which have a combination of OSS and watchdog blacklists.
this indeed is not very nice/easy to override. I wonder if the "watchdog" like modules should be shipped in separate files elsewhere on disk, and collected into a "watchdog.conf" file which matches blacklists for all installed kernels? That way it would be easier for admin to override it, by dropping in an empty /etc/modules- load.d/watchdog.conf? Not sure how to make these modules 'available' yet not autoloaded. Split them into a separate -watchdog-modules binary package? not installed = not autoloaded? without any blacklists at all? ** Description changed: - Before systemd-modules-load, /etc/init.d/kmod would load modules - directly with "modprobe" (and _not_ "modprobe -b"): + Impossible / hard to force the system to load a watchdog module because + it is blacklisted by the kernel auto-generated list of "watchdog" + modules. + + /etc/modules used to "just work" before. + + === + + + Before systemd-modules-load, /etc/init.d/kmod would load modules directly with "modprobe" (and _not_ "modprobe -b"): load_module() { - local module args - module="$1" - args="$2" + local module args + module="$1" + args="$2" - if [ "$VERBOSE" != no ]; then - log_action_msg "Loading kernel module $module" - modprobe $module $args || true - else - modprobe $module $args > /dev/null 2>&1 || true - fi + if [ "$VERBOSE" != no ]; then + log_action_msg "Loading kernel module $module" + modprobe $module $args || true + else + modprobe $module $args > /dev/null 2>&1 || true + fi } However, under 18.04, systemd-modules-load will _ignore_ modules that are manually listed in /etc/modules and process them with the blacklist (the same as "modprobe -b" would). This means that it is not possible to manually load modules that are blacklisted (like watchdog modules): systemd-238/src/modules-load/modules-load.c: static int load_module(struct kmod_ctx *ctx, const char *m) { - const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST; + const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST; ... - default: - err = kmod_module_probe_insert_module(mod, probe_flags, - NULL, NULL, NULL, NULL); + default: + err = kmod_module_probe_insert_module(mod, probe_flags, + NULL, NULL, NULL, NULL); - if (err == 0) - log_info("Inserted module '%s'", kmod_module_get_name(mod)); - else if (err == KMOD_PROBE_APPLY_BLACKLIST) - log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); + if (err == 0) + log_info("Inserted module '%s'", kmod_module_get_name(mod)); + else if (err == KMOD_PROBE_APPLY_BLACKLIST) + log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); Blacklists should _not_ be applied by systemd-modules-load. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to systemd in Ubuntu. https://bugs.launchpad.net/bugs/1767172 Title: Regression: /etc/modules checked against blacklist Status in linux package in Ubuntu: Incomplete Status in systemd package in Ubuntu: New Bug description: Impossible / hard to force the system to load a watchdog module because it is blacklisted by the kernel auto-generated list of "watchdog" modules. /etc/modules used to "just work" before. e.g. bcm2835_wdt module on arm64 === Before systemd-modules-load, /etc/init.d/kmod would load modules directly with "modprobe" (and _not_ "modprobe -b"): load_module() { local module args module="$1" args="$2" if [ "$VERBOSE" != no ]; then log_action_msg "Loading kernel module $module" modprobe $module $args || true else modprobe $module $args > /dev/null 2>&1 || true fi } However, under 18.04, systemd-modules-load will _ignore_ modules that are manually listed in /etc/modules and process them with the blacklist (the same as "modprobe -b" would). This means that it is not possible to manually load modules that are blacklisted (like watchdog modules): systemd-238/src/modules-load/modules-load.c: static int load_module(struct kmod_ctx *ctx, const char *m) { const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST; ... default: err = kmod_module_probe_insert_module(mod, probe_flags, NULL, NULL, NULL, NULL); if (err == 0) log_info("Inserted module '%s'", kmod_module_get_name(mod)); else if (err == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); Blacklists should _not_ be applied by systemd-modules-load. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1767172/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp