[Bug 1767172] Re: Regression: /etc/modules checked against blacklist
Dimitri John Ledkov
launchpad at surgut.co.uk
Tue May 1 18:19:23 UTC 2018
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
Foundations Bugs, 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
More information about the foundations-bugs
mailing list