Почему сетевой менеджер не запускается при загрузке?


10

Я думаю, что это начало происходить пару месяцев назад, когда я обновился с 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

Ответы:


15

В разделе «начало с» вы можете узнать, какие события нужно отправить, прежде чем upstart запустит сетевой менеджер.

В этом случае это:

  • местные-файловые системы
  • DBus
  • статическая сеть до

Вероятность того, что первые два уже испущены, если вы загрузились на рабочий стол.

static-network-up испускается /etc/network/if-up.d/upstart script, главное, событие не будет отправлено, пока не будет активирован каждый интерфейс, настроенный как 'auto' in /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

Затем перезагрузитесь и, надеюсь, сетевой менеджер запустится, как и ожидалось.


Вы совершенно правы, это глупое идиотское поведение от NetworkManager, решившего не запускаться, потому что loв этом файле есть что-то иное , даже если оно оставляет WIFI полностью ненастроенным!
Forbesmyester

работал для меня, довольно волшебно: P
Boh

5

На моем Arch Linux мне нужно было выполнить следующую команду и теперь NetworkManagerзапускается автоматически:

systemctl enable NetworkManager

Это позволяет NetworkManagerзапускаться при запуске. Это то, что я понимаю.


Спасибо, это решило мою проблему. Сбой после обновления + сбой до перезагрузки. Монетный двор 19.1
Тони Хомедес и Саун

4

Была такая же проблема, но ни одно из предложенных решений (включая некоторые из других форумов) не помогло.

В любом случае, прочитав ответ Гордона , я просто удалил and static-network-upстроку из /etc/init/network-manager.conf. Это сработало.


Я предполагаю, что проблема здесь в том, что статическая сеть должна быть запущена, но это не так. Вы видите загрузочное сообщение "ожидание конфигурации сети"?
Энди

@Анди, если он по беспроводной связи, у него нет статического интерфейса. Если он имеет auth eth0в своих интерфейсах, он подождет несколько минут, потерпит неудачу и никогда не запустит событие.
Церин

Я думаю, вы имеете в виду 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 , а просто добавьте туда другой файл с более высоким целым числом в начале имени файла. Например,

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

0

для Ubuntu 14.04 получил домашний хит «автозагрузка приложений», нажмите «добавить имя-сети», «cmd-sudo service network network manager restart commant- - [его работа работает только с действующими сетевыми настройками, такими как ips, dns, gateway и т. д.]


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.