NetworkManager-1.42.0
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.3 platform.
Package Information
NetworkManager Dependencies
Required
jansson-2.14 and
libndp-1.8
Recommended
cURL-7.88.1,
DHCP-4.4.3-P1 (client only),
gobject-introspection-1.74.0,
iptables-1.8.9,
newt-0.52.23 (for nmtui),
nss-3.88.1,
Polkit-122,
PyGObject-3.42.2,
elogind-246.10,
UPower-1.90.0,
Vala-0.56.4, and
wpa_supplicant-2.10 (runtime, built with D-Bus support)
Optional
BlueZ-5.66,
D-Bus Python-1.3.2 (for the test suite),
GnuTLS-3.8.0 (used if nss-3.88.1 is not found),
GTK-Doc-1.33.2,
libpsl-0.21.2,
Qt-5.15.8 (for examples),
ModemManager-1.18.12,
Valgrind-3.20.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, check that at least the following options
are enabled in the kernel configuration. Those options have been
determined to be necessary, but may not be sufficient. Recompile the
kernel if necessary:
[*] Networking support---> [CONFIG_NET]
Networking options--->
[*] TCP/IP networking [CONFIG_INET]
<*/M> IP: tunelling [CONFIG_NET_IPIP]
<*/M> IP: GRE demultiplexer [CONFIG_NET_IPGRE_DEMUX]
<*/M> IP: GRE tunnels over IP [CONFIG_NET_IPGRE]
<*> The IPv6 protocol ---> [CONFIG_IPV6]
<*/M> IPv6: IPv6-in-IPv4 tunnel (SIT driver) [CONFIG_IPV6_SIT]
<*/M> IPv6: GRE tunnel [CONFIG_IPV6_GRE]
[*] IPv6: Multiple Routing Tables [CONFIG_IPV6_MULTIPLE_TABLES]
[*] MPTCP: Multipath TCP [CONFIG_MPTCP]
[*] MPTCP: IPv6 support for Multipath TCP [CONFIG_MPTCP_IPV6]
<*/M> 802.1Q/802.1ad VLAN Support [CONFIG_VLAN_8021Q]
[*] QoS and/or fair queueing ---> [CONFIG_NET_SCHED]
<*/M> Stochastic Fairness Queueing (SFQ) [CONFIG_NET_SCH_SFQ]
<*/M> Token Bucket Filter (TBF) [CONFIG_NET_SCH_TBF]
<*/M> Fair Queue Controlled Delay AQM (FQ_CODEL) [CONFIG_NET_SCH_FQ_CODEL]
<*/M> Ingress/classifier-action Qdisc [CONFIG_NET_SCH_INGRESS]
Device Drivers --->
[*] Network device support ---> [CONFIG_NETDEVICES]
[*] Network core driver support [CONFIG_NET_CORE]
<*> Bonding driver support [CONFIG_BONDING]
<*> Dummy net driver support [CONFIG_DUMMY]
<*> Ethernet team driver support ---> [CONFIG_NET_TEAM]
<*> MAC-VLAN support [CONFIG_MACVLAN]
<*> MAC-VLAN based tap driver [CONFIG_MACVTAP]
<*> IP-VLAN support [CONFIG_IPVLAN]
<*> Virtual eXtensible Local Area Network (VXLAN) [CONFIG_VXLAN]
<*> Virtual ethernet pair device [CONFIG_VETH]
<*> Virtual Routing and Forwarding (Lite) [CONFIG_VRF]
Installation of NetworkManager
If Qt-5.15.8 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 setup \
--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, issue
ninja test.
A few tests may fail, depending on enabled kernel options.
Now, as the root
user:
ninja install &&
mv -v /usr/share/doc/NetworkManager{,-1.42.0}
If you have not passed the -Ddocs=true
option to
meson, you can install the pregenerated manual pages
with (as the root
user):
for file in $(echo ../man/*.[1578]); do
section=${file##*.} &&
install -vdm 755 /usr/share/man/man$section
install -vm 644 $file /usr/share/man/man$section/
done
Still in case you have not used -Ddocs=true
, the
pregenerated HTML documentation can also be installed with (as
the root
user):
cp -Rv ../docs/{api,libnm} /usr/share/doc/NetworkManager-1.42.0
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/networkmanager
bootscript from the
blfs-bootscripts-20230101 package.
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.42.0,
/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
|