modprobe.d: ship drop-in to set bonding max_bonds to 0 (#6448)

This allows networkd to correctly manage bond0 using networkd, when requested
by the user.

Fixes #5971 #6184
This commit is contained in:
Dimitri John Ledkov 2017-08-02 13:41:18 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent d2a1ba103b
commit 582faeb461
4 changed files with 33 additions and 5 deletions

11
NEWS
View File

@ -1,5 +1,16 @@
systemd System and Service Manager
CHANGES WITH 235:
* modprobe.d drop-in is now shipped by default that sets bonding module
option max_bonds=0. This overrides the kernel default, to avoid
conflicts and ambigiuty as to whether or not bond0 should be managed
by networkd or not. This resolves multiple bugs of bond0 properties
not being applied, when bond0 is configured with
networkd. Distributors may choose to not package this, however in
that case users will be prevented from correctly managing bond0
interface using networkd.
CHANGES WITH 234:
* Meson is now supported as build system in addition to Automake. It is

9
README
View File

@ -110,11 +110,10 @@ REQUIREMENTS:
It's a good idea to disable the implicit creation of networking bonding
devices by the kernel networking bonding module, so that the
automatically created "bond0" interface doesn't conflict with any such
device created by systemd-networkd (or other tools). Please make sure
that the kernel module bonding.ko is shipped with max_bonds=0 set by
default. Ideally there would be a kernel compile-time option for this,
but there currently isn't. The next best thing is to make this change
through a modprobe.d drop-in.
device created by systemd-networkd (or other tools). Ideally there
would be a kernel compile-time option for this, but there currently
isn't. The next best thing is to make this change through a modprobe.d
drop-in. This is shipped by default, see modprobe.d/systemd.conf.
Note that kernel auditing is broken when used with systemd's
container code. When using systemd in conjunction with

View File

@ -81,6 +81,7 @@ polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor
varlogdir = join_paths(localstatedir, 'log')
xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
rpmmacrosdir = get_option('rpmmacrosdir')
modprobedir = join_paths(rootlibdir, 'modprobe.d')
# Our own paths
pkgdatadir = join_paths(datadir, 'systemd')
@ -2307,6 +2308,8 @@ install_data('xorg/50-systemd-user.sh',
install_dir : xinitrcdir)
install_data('system-preset/90-systemd.preset',
install_dir : systempresetdir)
install_data('modprobe.d/systemd.conf',
install_dir : modprobedir)
install_data('README',
'NEWS',
'CODING_STYLE',
@ -2393,6 +2396,7 @@ status = [
'PAM modules dir: @0@'.format(pamlibdir),
'PAM configuration dir: @0@'.format(pamconfdir),
'RPM macros dir: @0@'.format(rpmmacrosdir),
'modprobe.d dir: @0@'.format(modprobedir),
'D-Bus policy dir: @0@'.format(dbuspolicydir),
'D-Bus session dir: @0@'.format(dbussessionservicedir),
'D-Bus system dir: @0@'.format(dbussystemservicedir),

14
modprobe.d/systemd.conf Normal file
View File

@ -0,0 +1,14 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# When bonding module is loaded, it creates bond0 by default due to max_bonds
# option default value 1. This interferes with the network configuration
# management / networkd, as it is not possible to detect whether this bond0 was
# intentionally configured by the user, or should be managed by
# networkd/NM/etc. Therefore disable bond0 creation.
options bonding max_bonds=0