Why not using NetworkManager in some cases
NetworkManager is a great tool for managing connectivity on Notebooks and other mobile devices, On server or desktop machines with a complex network setup such as a combination of bonding, bridging and VLAN its probably not the best choice, at least I was not able to configure it that way. This was some time ago (approx 1y), meanwhile it may have changed.
Removing NetworkManager
Unfortunately on a desktop system its impossible to get rid of NetworkManager, there are too many really weird dependencies. On servers without a GUI it is very easy to uninstall it, IIRC no drawbacks so far.
To remove NetworkManager run
system:~# yum remove NetworkManager
Be careful, there can a a lot of dependencies getting uninstalled as well. Handle with care.
Solution w/o removing NetworkManager
Disabling the NetworkManager itself is easy,
system:~# systemctl stop NetworkManager system:~# systemctl disable NetworkManager system:~# systemctl mask NetworkManager
Unfortunately the NetworkManager-wait-online.service Systemd unit file can not be disabled, its enabled even when systemctl status says its disabled. At the end this means that the boot process will take 30 seconds longer than needed, that is the timeout defined for /usr/bin/nm-online.
You can check the boot process which step is to blame for the long boot time with systemd-analyze blame.
system:~# systemd-analyze blame|grep NetworkManager 30.060s NetworkManager-wait-online.service system:~#
Changing the Systemd unit file
Never ever edit a systemd unit file in /usr/lib/systemd/system/ as they get overwritten with the next software update (in this case NetworkManager).
You can simply copy the unit file to the systemd local config directory /etc/systemd/system.
system:~# cp NetworkManager-wait-online.service /etc/systemd/system
You now replace the /usr/bin/nm-online with /usr/bin/true which always exits with 0.
system:~# sed -i "s|/usr/bin/nm-online -s -q --timeout=30|/usr/bin/true|g" /etc/systemd/system/NetworkManager-wait-online.service
Reload the Systemd daemon
system:~# systemctl daemon-reload
Ensure the Symlink is correct
system:~# systemctl disable NetworkManager-wait-online.service system:~# systemctl enable NetworkManager-wait-online.service
Further reading
- Redhat Bugzilla entry https://bugzilla.redhat.com/show_bug.cgi?id=1357899
Have fun 🙂