Dlaczego menedżer sieci nie uruchamia się przy rozruchu?

10

Myślę, że zaczęło się to dziać kilka miesięcy temu, kiedy uaktualniłem z 10.04 do 12.04.

Po każdym ponownym uruchomieniu menedżer sieci nie uruchamia się. Muszę uruchomić ręcznie sudo start network-manager, a potem wszystko działa dobrze.

Rzeczy, które już próbowałem (ponowne uruchomienie po każdej próbie naprawy):

  • Zweryfikowano, że wszystkie łącza /etc/rc*.d/*net-manager istnieją tak, jak powinny.
  • Ponieważ wzmiankowany plik konfiguracyjny menedżera sieci wspomina local-filesystems, a mój fstab zawierał odniesienie do dysku twardego USB, który nie jest podłączony, skomentowałem ten wiersz poza fstab.
  • sudo dpkg-reconfigure network-manager i wtedy sudo apt-get install --reinstall network-manager
  • Szukałem podpowiedzi w dzienniku systemowym, nie widziałem niczego, co by wyskoczyło.

Nie sądzę, żebym zmodyfikował /etc/init/network-manager.conf, ale tutaj jest to w celach informacyjnych:

# 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
bstpierre
źródło

Odpowiedzi:

15

Sekcja „start on” informuje, które zdarzenia muszą być emitowane, zanim upstart uruchomi menedżera sieci.

W tym przypadku jest to:

  • lokalne systemy plików
  • dbus
  • sieć statyczna

Szanse są dwa pierwsze zostały już wyemitowane, jeśli uruchomiłeś komputer.

sieć statyczna jest emitowana przez /etc/network/if-up.d/upstart script, co najważniejsze, zdarzenie nie będzie emitowane, chyba że każdy interfejs skonfigurowany jako „auto” w/etc/network/interfaces jest włączony.

W moim przypadku pozostało mi trochę wpisu dla eth0, w /etc/network/interfacesktórym skonfigurowano korzystanie z DHCP, ale ponieważ nie było podłączonej sieci Ethernet do eth0, DHCP nigdy nie mógłby się powieść.

Możesz powiedzieć upstartowi, aby emitował zdarzenia i możesz użyć tego, aby sprawdzić, czy brakuje zdarzenia statycznej sieci.

  • Uruchom ponownie komputer i nie uruchamiaj menedżera sieci
  • man initctl(musisz uruchomić polecenie emitowania z sudo, aby uruchomić man initctlsprawdzanie poleceń opublikowanych w Internecie nie jest szkodliwe )
  • sudo initctl emit static-network-up( po pewnym czasie może być konieczne Ctrl+ C)
  • initctl status network-manager (aby sprawdzić, czy to się zaczęło)

Jeśli to rozwiąże problem /etc/network/interfaces, skomentuj wszystko inne niż:

auto lo
iface lo inet loopback

Następnie uruchom ponownie komputer i mam nadzieję, że menedżer sieci uruchomi się zgodnie z oczekiwaniami.

Gordon
źródło
Masz rację, to głupie idiotyczne zachowanie NetworkManagera, który postanowił nie uruchamiać się, ponieważ coś innego niż lojest w tym pliku, nawet jeśli pozostawia WIFI całkowicie nieskonfigurowane!
Forbesmyester,
pracował dla mnie, dość magiczny: P
boh
5

W moim Arch Linux musiałem uruchomić następującą komendę, a teraz NetworkManageruruchomię się automatycznie:

systemctl enable NetworkManager

Umożliwia NetworkManagerto uruchomienie przy starcie. Właśnie to rozumiem.

Sufian
źródło
Dzięki, to rozwiązało mój problem. Błąd po aktualizacji + awaria przed ponownym uruchomieniem. Mennica 19.1
Toni Homedes i Saun
4

Miał ten sam problem, ale żadne z proponowanych rozwiązań (w tym niektóre z innych forów) nie pomogło.

W każdym razie po przeczytaniu odpowiedzi Gordona po prostu usunąłem and static-network-upwiersz /etc/init/network-manager.conf. Zadziałało.

Mikrofon
źródło
Wydaje mi się, że problemem jest to, że statyczne połączenie sieciowe powinno zostać odpalone, ale tak nie jest. Czy widzisz komunikat startowy „czeka na konfigurację sieci”?
Andy,
@Andy, jeśli ma połączenie bezprzewodowe, nie ma statycznego interfejsu. Jeśli ma auth eth0w swoich interfejsach, poczeka kilka minut, zawiedzie i nigdy nie uruchomi zdarzenia.
Cerin,
Chyba masz na myśli auto eth0? Podczas oczekiwania przez kilka minut powie „czekam na konfigurację sieci”, dlatego zapytałem.
Andy,
2

Miałem ten sam problem po zmianie komputera Thinkpad podczas ponownego używania starego dysku. Nadal pamiętał stare adresy MAC. Musiałem usunąć je ręcznie w /etc/udev/rules.d/70-persistent-net.rules, co rozwiązało problem.

Roman Pletka
źródło
0

To samo tutaj 12.04 - zrobiłem:

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

Naprawiony!

Możesz także ręcznie edytować ten plik i poprawić adresy mac ...

epek
źródło
0

Od READMEdnia /etc/udev/rules.d:

Pliki w tym katalogu są odczytywane przez udev (7) i wykorzystywane, gdy zdarzenia są wykonywane przez jądro. Demon udev obserwuje ten katalog z inotify, aby zmiany tych plików były automatycznie wychwytywane , dlatego muszą to być pliki, a nie dowiązania symboliczne do innej lokalizacji, jak w przypadku Debiana.

dalej:

Napisz własne reguły w tym katalogu, które przypisują nazwę, dowiązania symboliczne, uprawnienia itp., Które chcesz. Wybierz liczbę wyższą niż reguły, które chcesz zastąpić, a Twoja zostanie wykorzystana.

więc proszę, nie kopiuj / wklej plików , jak opisano w odpowiedzi @epek , ale po prostu dodaj tam inny plik z wyższą liczbą całkowitą na początku pod nazwą pliku. Na przykład

// Ubuntu core:
70-persistent-net.rules
// Custom overrides and/or additions:
80-persistent-net.rules
kajzer
źródło
0

dla Ubuntu 14.04 dostał home-hit „aplikacje startowe” hit dodaj nazwy-sieci cmd-sudo usługa menedżer sieci uruchom ponownie komendę- - [działa tylko poprawne ustawienia sieciowe, takie jak ips, dns, brama itp.]

Vijay Galagali
źródło
0

Łatwym obejściem jest edycja pliku /etc/rc.local w celu uruchomienia Menedżera sieci przy każdym uruchomieniu komputera. To tak naprawdę nie rozwiązuje problemu root, ale sprawiło, że wszystko stało się funkcjonalne i proste.

Najpierw wykonaj to polecenie:

sudo vim /etc/rc.local

Następnie treść powinna wyglądać podobnie do tego:

#!/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
Michael Fayad
źródło