web-dev-qa-db-fra.com

Aide à comprendre et à déboguer un démarrage lent avec systemd network-online.target

J'ai passé quelque temps sur Google, mais je ne veux pas de solution miracle, je veux comprendre ce qui se passe. J'ai un bureau qui démarre sous Windows en 3 secondes et a démarré sous Ubuntu sous 10, mais avec Kubuntu 15.10, le démarrage prend plus de 40 secondes et la connexion à KDE est également très lente.

$ systemd-analyze critical-chain 

graphical.target @9.961s
└─multi-user.target @9.961s
  └─getty.target @9.961s
    └─[email protected] @9.961s
      └─rc-local.service @9.925s +3ms
        └─network-online.target @9.924s
          └─network.target @1.000s
            └─wpa_supplicant.service @1.772s +338ms
              └─basic.target @797ms
                └─sockets.target @797ms
                  └─avahi-daemon.socket @797ms
                    └─sysinit.target @795ms
                      └─networking.service @740ms +54ms
                        └─apparmor.service @416ms +323ms
                          └─local-fs.target @409ms
                            └─local-fs-pre.target @409ms
                              └─systemd-remount-fs.service @401ms +6ms
                                └─system.slice @128ms
                                  └─-.slice @128ms

Il est donc clair que le retard est dû à l'attente de la connexion. Beaucoup de questions ici:

  1. Pourquoi une version de bureau d'Ubuntu bloquer mon démarrage et connexion en attente d'une connexion réseau? Ces services ne peuvent-ils pas démarrer après le démarrage? Je veux comprendre pourquoi tout le monde pense que c'est raisonnable. Même pour un serveur, ne serait-il pas préférable de le laisser démarrer puis de démarrer des services nécessitant un réseau?

  2. Comment puis-je déboguer quels services bloquent sur le réseau? J'ai essayé $ systemctl show network-online.target et cela me montre que la cible en ligne est recherchée par kerneloops.service. Pourquoi ce service aurait-il besoin d'internet pour démarrer? En outre, cela semble être quelque chose qui viendrait standard sur l'installation. J'imagine que je peux le désactiver, mais je ne veux pas passer les 3 prochaines heures à le désactiver et le redémarrer un à un. Existe-t-il un meilleur moyen de voir tous les services qui bloquent sur network-online.target? Puis-je différer ces services pour commencer la post-connexion au lieu de les désactiver?

  3. C'est le moins important pour moi, mais sur un ordinateur de bureau avec une connexion Ethernet à un routeur, pourquoi met-il près de 10 secondes à se connecter?

1
stokastic

J'ai (partiellement) résolu cela, alors je voulais poster comment au cas où quelqu'un avec des problèmes similaires le trouverait.

résumé - j'ai commenté la ligne After=network-online.target dans /lib/systemd/system/rc-local.service.d/debian.conf. Notez que cela peut casser les scripts rc.local qui dépendent du réseau.

Voici comment je l'ai trouvé. Premièrement, j'ai lu certaines ressources ici https://fedoramagazine.org/what-is-an-init-system/

De mon message ci-dessus, je savais que network-online.target était lent, et de googler, je savais que c'était ce qui attendait d'avoir une connexion réseau. J'ai exécuté systemctl list-dependencies network-online.target --before pour déterminer quels services attendaient après le démarrage du réseau et j'ai constaté que rc-local.service était présent. En outre, la cible graphique (qui, à mon avis, est ce qui fait apparaître l'écran de connexion) dépend de rc-local.service. J'ai lancé systemctl cat rc-local.service et j'ai vu que Debian avait ajouté la dépendance After en ligne, quelques informations supplémentaires ici: bug: https://bugs.launchpad.net/ubuntu/+source/systemd/+ bug/1451797

Je pense que cela n’est pas dangereux, tant que vous n’avez rien dans rc.local qui nécessite un réseau, ce qui devrait être le cas pour la plupart des non normaux. -server installe.

Maintenant, mon système "démarre" en 3 secondes environ, mais il me faut beaucoup de temps pour me connecter après avoir saisi mon mot de passe;

1
stokastic