NetworkManager-1.38.4

Introduction to NetworkManager

NetworkManager is a set of co-operative tools that make networking simple and straightforward. Whether you use WiFi, wired, 3G, or Bluetooth, NetworkManager allows you to quickly move from one network to another: Once a network has been configured and joined once, it can be detected and re-joined automatically the next time it's available.

This package is known to build and work properly using an LFS-11.2 platform.

Package Information

NetworkManager Dependencies

Required

jansson-2.14 and libndp-1.8

Recommended

Optional

BlueZ-5.65, D-Bus Python-1.2.18 (for the test suite), GnuTLS-3.7.7 (used if nss-3.82 is not found), GTK-Doc-1.33.2, libpsl-0.21.1, Qt-5.15.5 (for examples), ModemManager-1.18.10, Valgrind-3.19.0, dnsmasq, firewalld, libaudit, libteam, mobile-broadband-provider-info, PPP, and RP-PPPoE

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/NetworkManager

Kernel Configuration

If you wish to run the tests, enable the following options in the kernel configuration and recompile the kernel if necessary:

Device Drivers --->
  [*] Network device support         [CONFIG_NETDEVICES] --->
    [*] Bonding driver support       [CONFIG_BONDING]
    [*] Dummy net driver support     [CONFIG_DUMMY]
    [*] Ethernet team driver support [CONFIG_NET_TEAM]

Installation of NetworkManager

If Qt-5.15.5 is installed and the Qt based examples are desired, fix two meson.build files:

sed -e 's/-qt4/-qt5/'              \
    -e 's/moc_location/host_bins/' \
    -i examples/C/qt/meson.build   &&

sed -e 's/Qt/&5/'                  \
    -i meson.build

Fix the python scripts so that they use Python 3:

grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

Install NetworkManager by running the following commands:

mkdir build &&
cd    build &&

CXXFLAGS+="-O2 -fPIC"            \
meson --prefix=/usr              \
      --buildtype=release        \
      -Dlibaudit=no              \
      -Dlibpsl=false             \
      -Dnmtui=true               \
      -Dovs=false                \
      -Dppp=false                \
      -Dselinux=false            \
      -Dsession_tracking=elogind \
      -Dmodem_manager=false      \
      -Dsystemdsystemunitdir=no  \
      -Dsystemd_journal=false    \
      -Dqt=false                 \
      .. &&
ninja

An already active graphical session with a bus address is necessary to run the tests. To test the results, as the root user, issue: ninja test. One test, test-core, is known to fail.

Now, as the root user:

ninja install &&
mv -v /usr/share/doc/NetworkManager{,-1.38.4}

Command Explanations

CXXFLAGS="-O2 -fPIC": These compiler options are necessary to build the Qt5 based examples.

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Ddocs=true: Use this switch to enable building man pages and documentation if GTK-Doc-1.33.2 is installed.

-Dnmtui=true: This parameter enables building nmtui.

-Dsystemdsystemunitdir=no and -Dsystemd_journal=false: systemd is not used for sysv init systems.

-Dlibpsl=false and -Dovs=false: These switches disable building with the respective libraries. Remove if you have the needed libraries installed.

-Dmodem_manager=false: This switch is required if ModemManager is not installed. Omit if you have built ModemManager and mobile-broadband-provider-info.

-Dsession_tracking=elogind: This switch is used to set elogind as the default program for session tracking.

-Dppp=false: This parameter disables PPP support in NetworkManager.

-Dlibaudit=no and -Dselinux=false: libaudit and SELinux are not used in BLFS.

-Dqt=false: disables the QT examples. Omit if you have QT available and wish to install the examples.

Configuring NetworkManager

Config Files

/etc/NetworkManager/NetworkManager.conf

Configuration Information

For NetworkManager to work, at least a minimal configuration file must be present. Such a file is not installed with make install. Issue the following command as the root user to create a minimal NetworkManager.conf file:

cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
[main]
plugins=keyfile
EOF

This file should not be modified directly by users of the system. Instead, system specific changes should be made using configuration files in the /etc/NetworkManager/conf.d directory.

To allow polkit to manage authorizations, add the following configuration file:

cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
[main]
auth-polkit=true
EOF

To use something other than the built-in dhcp client (recommended if using only nmcli), use the following configuration (valid values include either dhclient or internal):

cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
[main]
dhcp=dhclient
EOF

To prevent NetworkManager from updating the /etc/resolv.conf file, add the following configuration file:

cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
[main]
dns=none
EOF

For additional configuration options, see man 5 NetworkManager.conf.

To allow regular users to configure network connections, you should add them to the netdev group, and create a polkit rule that grants access. Run the following commands as the root user:

groupadd -fg 86 netdev &&
/usr/sbin/usermod -a -G netdev <username>

cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
        return polkit.Result.YES;
    }
});
EOF

Boot Script

To automatically start the NetworkManager daemon when the system is rebooted, install the /etc/rc.d/init.d/networkmanagerbootscript from the blfs-bootscripts-20220722 package.

[Note]

Note

If using Network Manager to manage an interface, any previous configuration for that interface should be removed, and the interface brought down prior to starting Network Manager.

make install-networkmanager

Contents

Installed Programs: NetworkManager, nmcli, nm-online, nmtui, and, symlinked to nmtui: nmtui-connect, nmtui-edit, and nmtui-hostname
Installed Libraries: libnm.so and several modules under /usr/lib/NetworkManager
Installed Directories: /etc/NetworkManager, /usr/include/libnm, /usr/lib/NetworkManager, /usr/share/doc/NetworkManager-1.38.4, /usr/share/gtk-doc/html/{libnm,NetworkManager} (if the documentation is built), and /var/lib/NetworkManager

Short Descriptions

nmcli

is a command-line tool for controlling NetworkManager and getting its status

nm-online

is an utility to determine whether you are online

nmtui

is an interactive ncurses-based user interface for nmcli

nmtui-connect

is an interactive ncurses-based user interface to activate/deactivate connections

nmtui-edit

is an interactive ncurses-based user interface to edit connections

nmtui-hostname

is an interactive ncurses-based user interface to edit the hostname

NetworkManager

is the network management daemon

libnm.so

contains functions used by NetworkManager