为什么网络管理器不能在启动时启动?
我认为这是几个月前我从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