Почему сетевой менеджер не запускается при загрузке?
Я думаю, что это начало происходить пару месяцев назад, когда я обновился с 10.04 до 12.04.
При каждой перезагрузке сетевой менеджер не запускается. Я должен вручную запустить sudo start network-manager
и тогда все работает нормально.
Вещи, которые я уже пробовал (перезагрузка после каждой попытки исправить):
- Убедитесь, что все ссылки /etc/rc*.d/*network-manager существуют так, как они должны.
- Поскольку в конфигурационном файле выскочки менеджера сети упоминается
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
8 ответов
В разделе "начало с" вы можете узнать, какие события нужно отправить, прежде чем upstart запустит сетевой менеджер.
В этом случае это:
- местные-файловые системы
- DBus
- статическая сеть до
Вероятность того, что первые два уже были выброшены, если вы загрузились на рабочий стол.
Статическая сеть испускается /etc/network/if-up.d/upstart script
главное, событие не будет отправлено, если каждый интерфейс не настроен как "автоматический" в /etc/network/interfaces
вверх
В моем случае у меня была оставленная запись для eth0 в /etc/network/interfaces
который был настроен на использование DHCP, но так как не было Ethernet, подключенного к eth0, DHCP никогда не мог преуспеть.
Вы можете сказать upstart о создании событий и использовать это, чтобы проверить, отсутствует ли событие static-network-up.
- Перезагрузите компьютер и не запускайте сетевой менеджер
man initctl
(вам нужно запустить команду emit с помощью sudo, чтобы запуститьman initctl
сначала проверить команды, размещенные в интернете)sudo initctl emit static-network-up
(вам может понадобиться Ctrl+C через некоторое время)initctl status network-manager
(чтобы проверить, началось ли это)
Если это решит вашу проблему, проверьте /etc/network/interfaces
закомментируйте все, кроме:
авто ло iface lo inet loopback
Затем перезагрузитесь и, надеюсь, сетевой менеджер запустится, как и ожидалось.
На моем Arch Linux мне нужно было выполнить следующую команду и теперь NetworkManager
запускается автоматически:
systemctl enable NetworkManager
Это позволяет NetworkManager
запускаться при запуске. Это то, что я понимаю.
Была такая же проблема, но ни одно из предложенных решений (включая некоторые из других форумов) не помогло.
Во всяком случае, после прочтения ответа Гордона, я просто удалил and static-network-up
линия от /etc/init/network-manager.conf
, Это сработало.
У меня была та же проблема после переключения моего ThinkPad при повторном использовании старого диска. Он все еще помнил старые MAC-адреса. Мне пришлось удалить их вручную в /etc/udev/rules.d/70-persistent-net.rules, что решило проблему для меня.
От README
на /etc/udev/rules.d
:
Файлы в этом каталоге читаются udev(7) и используются, когда ядро выполняет события. Демон udev следит за этим каталогом с помощью inotify, чтобы изменения в этих файлах автоматически регистрировались, по этой причине они должны быть файлами, а не символическими ссылками на другое местоположение, как в случае с Debian.
в дальнейшем:
Напишите свои собственные правила в этом каталоге, которые назначают имя, символические ссылки, разрешения и т. Д., Которые вы хотите. Выберите число выше правил, которые вы хотите переопределить, и ваши будут использованы.
поэтому, пожалуйста, не копируйте / вставляйте файлы, как описано в ответе@epek, а просто добавьте туда еще один файл с более высоким целым числом в начале имени файла. Например,
// Ubuntu core:
70-persistent-net.rules
// Custom overrides and/or additions:
80-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/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
Для ubuntu 14.04 получил домашний хит "автозагрузка приложений", нажмите "добавить имя-сети", "cmd-sudo service network network manager restart commant- - [его работа работает только с действующими сетевыми настройками, такими как ips,dns, шлюз и т. д.]