为什么网络管理器无法在启动时启动?


10

我认为这是在几个月前从10.04升级到12.04时开始发生的。

每当我重新启动时,网络管理器都不会启动。我必须手动运行sudo start network-manager,然后一切正常。

我已经尝试过的事情(每次尝试修复后重新启动):

  • 验证所有/etc/rc*.d/*network-manager链接是否以应有的方式存在。
  • 由于network-manager的upstart配置文件提到了local-filesystems,而我的fstab引用了一个未连接的USB HDD,因此我在fstab中注释了这一行。
  • sudo dpkg-reconfigure network-manager 接着 sudo apt-get install --reinstall network-manager
  • 在syslog中寻找提示,没有看到任何跳出的内容。

我认为我没有修改过/etc/init/network-manager.conf,但是在此仅供参考:

# network-manager - network connection manager
#
# The Network Manager daemon manages the system's network connections,
# automatically switching between the best available.

description "network connection manager"

start on (local-filesystems
      and started dbus
      and static-network-up)
stop on stopping dbus

expect fork
respawn

script
    # set $LANG so that messages appearing on the GUI will be translated. See LP: 875017
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi

    exec NetworkManager
end script

Answers:


15

“启动”部分使您知道在新贵启动网络管理器之前需要发出哪些事件。

在这种情况下:

  • 本地文件系统
  • 公交车
  • 静态网络

如果您已引导至桌面,则前两个已经发出了。

静态网络启动是由发出的/etc/network/if-up.d/upstart script,至关重要的是,除非每个接口中配置为“自动”的接口都不会发出事件/etc/network/interfaces

在我的情况下,我为eth0保留了一个剩余条目,/etc/network/interfaces该条目已配置为使用DHCP,但是由于没有将以太网插入eth0中,因此DHCP无法成功。

您可以告诉upstart发出事件,并可以使用它来检查是否缺少静态网络启动事件。

  • 重新启动计算机,并且不启动网络管理器
  • man initctl(您需要使用sudo运行emit命令,因此先运行man initctl验证在Internet上发布的命令是没有害处的)
  • sudo initctl emit static-network-up(您可能需要Ctrl+ C这个过了一会儿)
  • initctl status network-manager (检查它是否开始)

如果这解决了您的问题,请检查/etc/network/interfaces,并注释掉除以下内容以外的所有内容:

自动搜索
iface lo inet回送

然后重新启动,希望网络管理器将按预期启动。


没错,这是NetworkManager决定不启动的愚蠢愚蠢行为,因为lo该文件中有其他东西,即使该文件使WIFI完全未配置!
Forbesmyester 2015年

为我工作,非常神奇:P
boh

5

在Arch Linux上,我需要运行以下命令,NetworkManager然后自动启动:

systemctl enable NetworkManager

这样可以NetworkManager在启动时运行。这是我的理解。


谢谢,这解决了我的问题。更新失败后重新启动前崩溃。造币厂19.1
托尼·霍姆德桑

4

遇到了同样的问题,但是所有提议的解决方案(包括其他论坛的解决方案)都没有帮助。

无论如何,在阅读Gordon的回复后,我只是and static-network-up从中删除了这一行/etc/init/network-manager.conf。有效。


我猜这里的问题是应该触发静态网络启动,但事实并非如此。您是否看到引导消息“正在等待网络配置”?
2014年

@Andy,如果他处于无线状态,则没有静态接口。如果他auth eth0在自己的界面中,它将等待几分钟,失败,并且永远不会触发该事件。
塞林2015年

我猜你的意思是auto eth0?等待几分钟后,系统会显示“等待网络配置”,这就是我问的原因。
安迪

2

在重新使用旧磁盘时切换了ThinkPad之后,我遇到了同样的问题。它仍然记得旧的MAC地址。我必须在/etc/udev/rules.d/70-persistent-net.rules中手动删除它们,从而为我解决了该问题。


0

同样在12.04-我做到了:

sudo -s
mv /etc/udev/rules.d/70-persistent-net.rules ~/
touch /etc/udev/rules.d/70-persistent-net.rules
reboot

固定!

您也可以手动编辑该文件并更正mac地址...


0

README开始/etc/udev/rules.d

此目录中的文件由udev(7)读取,并在内核执行事件时使用。udev守护程序 使用inotify监视此目录,以便自动拾取对这些文件的更改,因此,它们必须是文件,而不是像Debian中那样符号链接到另一个位置。

进一步:

在此目录中编写自己的规则,以分配所需的名称,符号链接,权限等。选择一个比您要覆盖的规则更高的数字,您的规则将被使用。

因此,请不要按照@epek answer中的说明进行复制/粘贴文件,而只需在文件名的开头添加另一个具有较大整数的文件即可。例如

// Ubuntu core:
70-persistent-net.rules
// Custom overrides and/or additions:
80-persistent-net.rules

0

对于ubuntu 14.04,获得了成功的“启动应用程序”,请点击添加名称-网络cmd-sudo服务网络-管理员重新启动命令--[其仅适用于有效的网络设置,例如ips,dns,网关等]


0

一个简单的解决方法是编辑/etc/rc.local,以便在每次启动计算机时都启动NetworkManager。这并不能真正解决根本问题,但是对我来说,它使功能变得简单易行。

首先,执行以下命令:

sudo vim /etc/rc.local

然后,内容应类似于以下内容:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#Sleeping a little might be necessary to let it catch up the boot. 
#However, for me, this sleep was a useless overhead.
#sleep 3 
service network-manager restart

exit 0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.