为什么网络管理器不能在启动时启动?

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

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

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

  • validation了所有/etc/rc*.d/*network-manager链接的存在方式。
  • 由于网络管理器的upstart配置文件提到local-filesystems ,而我的fstab引用了未连接的USB HDD,我评论说fstab中的那条线路。
  • sudo dpkg-reconfigure network-manager然后sudo apt-get install --reinstall network-manager
  • 在系统日志中查看提示,没有看到任何跳出来的东西。

我不认为我已经修改了/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 

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

在这种情况下,它是:

  • 本地文件系统
  • DBUS
  • 静态网络行动

如果您已启动到桌面,则可能已经排出了前两个。

static-network-up由/etc/network/if-up.d/upstart script发出,关键的是,除非在/etc/network/interfaces配置为“auto”的每个接口都启动,否则不会发出该事件。

在我的情况下,我在/etc/network/interfaces有一个剩余的eth0条目,它被配置为使用DHCP,但由于没有以太网插入eth0,DHCP永远不会成功。

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

  • 重新启动计算机,不要启动网络管理器
  • man initctl (你需要用sudo运行emit命令,所以运行man initctl来validation首先发布在互联网上的命令没有坏处)
  • sudo initctl emit static-network-up (你可能需要在一段时间后按Ctrl + C
  • initctl status network-manager (检查它是否已启动)

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

汽车公司
 iface lo inet loopback

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

有同样的问题,但提议的解决方案(包括其他论坛的一些)都没有帮助。

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

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

 systemctl enable NetworkManager 

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

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

同样在这里12.04 – 我做了:

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

固定!

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

/etc/udev/rules.d上的README

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

进一步:

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

所以请不要 ,如@epek 回答中所述 ,复制/粘贴文件,但只需在文件名的开头添加一个更高整数的另一个文件。 例如

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

为ubuntu 14.04得到了主打“启动应用程序”命中添加名称网络cmd-sudo服务网络管理器重启commant- – [其工作只有有效的网络设置,如ips,DNS,网关等]

一个简单的解决方法是编辑/etc/rc.local ,以便每次启动计算机时启动NetworkManager。 这并没有真正解决根本问题,但它使我的function和简单。

首先,执行以下命令:

 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