How to uninstall NetworkManager in RHEL7?

Latest response

I'm using /etc/sysconfig/network-scripts files to configure my network.
So I guess I can uninstall NetworkManager and may be something else?
(I noticed "ModemManager" in the list of running process which I want to remove it too).

How should I do this in RHEL 7? Should I use NM_CONTROLLED=no flag and where (phisical interfaces, bonds, teams, vlans?) How can I remove ModemManager from the list of running processes?

Responses

Hi Oleg,

You can disable NetworkManager using the systemctl tool:

systemctl stop NetworkManager
systemctl disable NetworkManager

Also, see the Networking Guide: NetworkManager and the Network Scripts.

thanks, it work with problems. when I start RHEL 7 my networking works fine. I can see teams/vlan in "ifconfig". Once I execute "telinit 3" to switch from GUI to console there are not teams and no VLANs in the "ifconfig" output (and of course networking doesn't work). To make network working I have to execute "service network stop / service network start". Do you know how can I fix this? (also I've added NM_CONTROLLED=no to /ets/sysconfig/network-scripts files)

Can you tell us what you are trying to achieve? The guides document many common tasks so we are interested to know what task you have in mind when you ask these questions.

BTW, ifconfig is deprecated.
Also note there are no runlevels in RHEL7, see the Managing Services with systemd chapter in the Enterprise Linux 7 System Administrators' Guide.

I'm using /etc/services/network-scripts to configure my network. Hence I don't need NetworkManager, i don't use it and I want to completely disable it. (i'm using my machine for low-latency operations so it's important to disable everything I don't actually need.)

BTW I also noticed ModemManager in the list of running processes, I want to disable it too.

Thanks for links, I didn't know this, now I will use "ip" instead of "ifconfig" :)

Also let me copy-paste from doc: "In Red Hat Enterprise Linux 7, the default networking service is provided by NetworkManager, which is a dynamic network control and configuration daemon that attempts to keep network devices and
connections up and active when they are available. The traditional ifcfg type configuration files are still supported."

So this means that if i'm using "traditional ifcfg" files I do not need NetworkManager? And as NetworkManager is enabled by default should I disable it then?

The link to the guide that Robert posted in the first reply is applicable to your question. Here is the non-Beta version NetworkManager and the Network Scripts

The phrase "traditional ifcfg type configuration files are still supported" means that NetworkManager can read them, or if you disable it then the network service will read them.

What do you see if you do:

systemctl status network

Thanks Stephen

I turned back NetworkManager and LACP works now. It seems with network service LACP doesn't start properly.

network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Wed 2015-03-04 12:40:34 MSK; 8min ago
Process: 1464 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)

Do you know in terms of latency what is faster NetworkManager or "traditional ifcfg files"?

Am I correct that I should choose between network.service and NetworkManager? So one of them should be disabled and one of them should be enabled? In simple server config there are no reason to enable both?

You could open a support case for that, I cannot think why LACP does not work when NetworkManager is disabled.

As to latency, I cannot see why this would make a difference, the traffic is not passing through the user space code which is doing the configuring. But I am just a humble scribe, so I will check that with someone with more in depth knowledge of NetworkManager and the network service.

Until you can find out why LACP was not working as expected, why not leave things at there default settings? You can optionally use NM_CONTROLLED=no if you prefer.

Developer confirms, the choice of tool used to configure networking does not change the data path so latency should be the same when using both NetworkManager and the network service.

You should mask it first, otherwise another process can re-activate it over D-Bus.

systemctl mask NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager

But this is not strictly necessary, you can use network scripts and still leave NetworkManager running.

thanks, I don't want to keep anything that I don't use running :)
I've executed this code but my problem persist - after executing telinit 3 I loose my LACP network & VLANs

probably I just should not execute "telinit 3". probably I can "unload X" another way?

Oleg,

Try the following instead of telinit 3

systemctl isolate multi-user.target

same effect - network disappear after executing this command

I've tried to use these commands to disable NetworkManager.
After reboot I have this error:

"A start job is running for LSB: Bring up/down networking"
FAILED: Failed to start LSB: Starts the Spacewalk Daemon.
See 'systemctl status rhnsd.service' for details.

Hello

Have you successfully subscribed the system to the Red Hat CDN?

thanks, i've found this bug too. however it marked fixed at 2015-06. In September I've installed all possible updates, so I was thinking I should have this fix. But may be it takes more time "to deliver" bugfix to the clients... I see that Fixed In Version: rhnsd-5.0.13-5.el7 but I don't know how I can verify my current version.

My redhat installation has active subscription.

Tomorrow I will try to install recent updates may be bug disappear then.

Hello

You can check the version as follows:

rpm -q rhnsd

or just try to update it:

yum update rhnsd

It seems this fix still not delivered to clients:

[root@localhost]# rpm -q rhnsd
rhnsd-5.0.13-3.el7.x86_64
[root@localhost]# yum update rhnsd
Loaded plugins: langpacks, product-id, subscription-manager
No packages marked for update

should we just wait for rhnsd-5.0.13-5.el7 ?

or can I just disable rhnsd on my machine?

In regards to one of the original questions: "How to uninstall NetworkManager in RHEL7?"
Is that actually a supported approach (specifically uninstalling)? I have not attempted such a thing and I don't even know if it would allow you to (due to dependencies) - but if we knew, for certain, that you should NOT remove NetworkManager (and instead disable, as suggested) then we won't have folks trying to do so ;-)

I can only say I am not aware of any way to uninstall it.

It removes very cleanly from our server deployment and static (classic) networking functions as expected without it.

Oleg Vazhnev,

Although "classic networking" is still supported, NetworkManager is the prefered way to go for RHEL7.
Some new functionality will not be available in "classic networking", I heard this during the RH300 training.

As with every rpm you can remove it, I cannot tell you what would break on RHEL 7, for I did not uninstall it.
I am preparing for a re-exam for RHCE 7.

Kind regards,

Jan Gerrit Kootstra

Thanks Jan Gerrit Kootstra

As I understand NetworkManager is more modern, supports recent stuff - WiFi (LTE?) and other similar things. So it likely much more "heavy", occupy more memory, more resources.

I'm not sure but on server machine, which will never connect to wifi, of 3g or lte, which only use Ethernet it might be a good idea to switch back to "classic networking"? Unless "classic networking" is completely deprecated and it's recommended to use NetworkManager even on servers?

Oleg

Valid concerns Oleg.

However, NetworkManager has been updated to do quite a bit more than previous iterations. Myself, I used to view NM as an "added feature" to manage the network environment on something like my desktop (where situations/conditions changed frequently) so I was not having to deal with network manually.

I am absolutely positive I would not be able to convey it's value (so I won't try ;-)
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Introduction_to_NetworkManager.html

I found this doc to be fairly helpful (and addresses some questions you may have)
https://access.redhat.com/solutions/783533

EDIT: I was a bit curious also regarding the memory usage. If I did this correctly... it appears my desktop (RHEL 7 Workstation) is using about 11MB

cat /proc/`ps -ef | grep /usr/sbin/NetworkManager | grep -v grep | awk '{ print $2 }'`/smaps | egrep '^Rss' | awk '{ SUM += $2 } END { print SUM }'
11276

Thanks for links.

11 MB is nothing for the modern server. I think it's more important to avoid "latency spikes" especially in low-latency setup. What if NetworkManager at some point will "check if we have LTE connection" or something. Can this introduce latency spikes? Afterall NetworkManager may crash by some reason and this may affect system. So In general I prefer to keep running only things I need and to avoid things I don't need :)

By some reason when I disable NetworkManager my LACP stop working. I don't know why. It seems NetworkManager and network service work a little bit different. In my case NetworkManager is able to process my config files and start LACP but network service can not.

As I have to use NetworkManager another question arise - should I stop network service? If NetworkManager substitutes network service or it build on top of it?

BTW during all these investigations I've found that in my case, if NetworkManager is disabled, then:

LACP doesn't start if I use "teaming"
LACP starts if I use "bonding"

So it seems "old style network service" doesn't fully support teaming? Can someone confirm this?

So if you use teaming you have to use NetworkManager.

Both NetworkManager and the network service call teamd to do the work, so there should be no difference.

thanks! it seems something wrong with my installation then

is it safe to execute "yum remove NetworkManager"? I've noticed that 11 dependencies packages will be uninstalled too, including "anaconda-core". Does it mean that if I need anaconda I should not execute "yum remove NetworkManager"?

Hello, I just found this thread, while looking into why PolKit is getting installed on my server build for RHEL 7. Turns out that Polkit is a dependency for Network Manager. Thus, it might be reasonable that, if you have a kickstart method to load your installation, you might be able to avoid loading Network Manager altogether if you simply do not install it to begin with. Just a suggestion, I may test this idea and report back.

I'm having a similar issue. I did a "yum remove NetworkManager" and configured some VLANs using the ip commands. On reboot they fail to come up because the 8021q module just doesn't load anymore. 8021q.ko exists and is in the correct location. I tried specifying 8021q in /etc/modules-load.d/8021q.conf, and it's even mentioned in messages:

systemd-modules-load: Inserted module '8021q'
kernel: 8021q: 802.1Q VLAN Support v1.8

but after boot lsmod still doesn't show 8021q loaded. Once I manually do a "modprobe 8021q" and re-add the VLANs it's ok.

Hello, if the configuration file is correct it should, since RHEL6 days, load the module and "modprobe 8021q" should not be required. But I was told it loads it when its required, which I think means it would not be loaded until the interface came up.

Do you have VLAN=yes in the VLAN interface config file?

Yes I do. I'm getting around this with a kludge where I call modprobe, then recreate all the vlan devices, then restart the network service, then mount my network shares and all in rc.local. There's got to be a better way!