I recently set up an Ubuntu 16.04 system with a bonded ethernet configuration. Previously, it appears that to get this to work the bonding module needed to be included in /etc/modules or /etc/modules.d. This is documented here:


However, on the Ubuntu 16.04 system I just set up, I didn't doing anything to force the loading of the bonding kernel module (e.g. no entry in /etc/modules) and yet the bonding kernel module is loaded and the bonded port is working as advertised.

I've been trying to figure out what is triggering this module load and can't find it. As far as I can tell, Canonical did not get it together to switch to systemd-networkd for the 16.04 release, so there is no systemd magic at work as far as I can tell.. Also no udev rules are defined.

Now the whole thing is really bothering me (particularly since not explicitly loading the module in 14.04 would not have worked), so asking on StackExchange.


NetworkManager gained support for bonding recently. I doubt it expects you to load the module manually.

There's a minority of tutorials that don't tell you to load the module, so I wonder about the ifenslave script... hah.

From the Debian 8 package, file ifenslave.pre-up:

    # Return if $BOND_MASTER is already a bonding interface.
    [ -f "/sys/class/net/$BOND_MASTER/bonding/slaves" ] && return

    # If the bonding module is not yet loaded, load it.
    if [ ! -r /sys/class/net/bonding_masters ]; then
        modprobe -q bonding

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.