Améliorer la vitesse de démarrage

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Améliorer la vitesse de démarrage

Connaître la vitesse de démarrage du système

systemd-analyze
# Ou :
systemd-analyze time
# Affiche :
Startup finished in 20.140s (firmware) + 7.419s (loader) + 37.920s (kernel) + 1min 21.394s (userspace) = 2min 26.874s
graphical.target reached after 55.567s in userspace

Temps utilisé pour le chargement de chaque service

systemd-analyze blame
# Affiche :
40.597s apt-daily.service
19.447s networking.service
15.335s mysql.service
13.259s vboxdrv.service
12.514s ModemManager.service
12.427s dev-sda6.device
11.984s ufw.service
11.723s preload.service
11.704s denyhosts.service
11.479s ubuntu-system-adjustments.service
11.159s udisks2.service
10.495s keyboard-setup.service
9.588s accounts-daemon.service
9.200s ntp.service
8.848s NetworkManager.service
7.973s lightdm.service
7.887s systemd-journal-flush.service
7.817s apport.service
7.497s loadcpufreq.service
7.401s plymouth-quit-wait.service
7.141s colord.service
7.007s apache2.service
...

Supprimer ModemManager.service

# On peut gagner 12.514s en supprimant "ModemManager.service" qui ne sert plus.
sudo apt remove modemmanager

Failed to start Cgroup management daemon

# Avec le splash screen de désactivé, on observe l'erreur que Cgroup management daemon n'est pas chargé au démarrage.
systemctl status cgmanager.service
Loaded: loaded (/lib/systemd/system/cgmanager.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2019-11-03 14:20:26 CET; 6min ago
Process: 1267 ExecStart=/sbin/cgmanager -m name=systemd (code=exited, status=1/FAILURE)
Main PID: 1267 (code=exited, status=1/FAILURE)

nov. 03 14:20:26 alien systemd[1]: cgmanager.service: Service hold-off time over, scheduling restart.
nov. 03 14:20:26 alien systemd[1]: cgmanager.service: Scheduled restart job, restart counter is at 5.
nov. 03 14:20:26 alien systemd[1]: Stopped Cgroup management daemon.
nov. 03 14:20:26 alien systemd[1]: cgmanager.service: Start request repeated too quickly.
nov. 03 14:20:26 alien systemd[1]: cgmanager.service: Failed with result 'exit-code'.
nov. 03 14:20:26 alien systemd[1]: Failed to start Cgroup management daemon.
# Autant le désactiver totalement :
sudo systemctl disable cgmanager.service
# Recharger :
sudo update-initramfs -u
sudo update-grub
sudo update-grub2

Renseigner le bon UUID pour la SWAP

# Il est demandé d'utiliser RESUME pour modifier la configuration.
sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.15.0-66-generic
I: The initramfs will attempt to resume from /dev/zram7
I: (UUID=243514b5-d5d7-4443-912c-5d78fcd584db)
I: Set the RESUME variable to override this.
# Identifier le bon UUID et l'ajouter dans RESUME :
blkid
sudo nano /etc/initramfs-tools/conf.d/resume
# Ajouter :
RESUME=UUID=0eba5b09-c13e-4411-a169-52d199942dbd
sudo update-initramfs -u -k all

Ne pas charger le spash screen pour accélérer le chargement

# Au lieu de l'animation visuelle, les lignes de code du démarrage seront affichées.
# Le démarrage sera plus rapide de quelques secondes car le splash screen n'aura plus à être chargé.
# Faire une sauvegarde du fichier de configuration avant d'appliquer les changements :
sudo cp -a /etc/default/grub /etc/default/grub.bak
# Éditer le fichier de configuration du Grub :
sudo nano /etc/default/grub
# Remplacer la ligne :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
# par :
GRUB_CMDLINE_LINUX_DEFAULT=""
# Mettre à jour la configuration
sudo update-grub
sudo update-grub2

Failed to start Raise network interfaces

# Le message d'erreur "Failed to start Raise network interfaces" est également affiché au démarrage.
# Vérifier le service :
systemctl status networking.service
networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2019-11-03 16:09:06 CET; 8min ago
Docs: man:interfaces(5)
Process: 993 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
Process: 990 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && ude
Main PID: 993 (code=exited, status=1/FAILURE)

nov. 03 16:09:05 alien dhclient[1047]: than a configuration issue please read the section on submitting
nov. 03 16:09:05 alien dhclient[1047]: bugs on either our web page at www.isc.org or in the README file
nov. 03 16:09:05 alien dhclient[1047]: before submitting a bug.  These pages explain the proper
nov. 03 16:09:05 alien dhclient[1047]: process and the information we find helpful for debugging..
nov. 03 16:09:05 alien dhclient[1047]: 
nov. 03 16:09:05 alien dhclient[1047]: exiting.
nov. 03 16:09:05 alien ifup[993]: Failed to bring up eth0.
nov. 03 16:09:06 alien systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
nov. 03 16:09:06 alien systemd[1]: networking.service: Failed with result 'exit-code'.
nov. 03 16:09:06 alien systemd[1]: Failed to start Raise network interfaces.
# Autant le désactiver pour une machine de bureau :
# Je ne suis pas connecté en Ethernet au démarrage, peut être que ce service est nécessaire pour la connexion Ethernet par la suite ?
# J'utilise essentiellement le wifi, mais, avoir accès au réseau internet par Ethernet pourrait permettre un jour d'effectuer une réparation, une installation de paquet !
# Vérifier que la configuration des interface est sur "allow-hotplug eth0" :
sudo nano /etc/network/interfaces
# Remplacer :
auto eth0
iface eth0 inet dhcp
# Par :
allow-hotplug eth0
iface eth0 inet dhcp
# Si et seulement si, on souhaite gagner quelques secondes de plus, désactiver le réseau Ethernet au démarrage :
sudo systemctl disable networking.service

Désactiver les différents services inutiles au démarrage

# Les services suivants sont désactivés pour une machine de travail, et, non pas, pour un serveur web.

Réduire le temps de chargement pour apt-daily.service

# On peut gagner 40.597s en différant le chargement de "apt-daily.service" qui ralentit considérablement le démarrage.
# C'est le bogue Debian n ° 844453. apt-daily.service ne devrait pas être exécuté au démarrage, mais seulement un peu de temps après.
# Certaines fonctionnalités sur le bureau sont fournies par update-manager.
# Pour ne pas recevoir de messages d'erreur sur les fichiers de verrouillage dans les archives ou les répertoires de listes à chaque lancement manuel de apt, on peut désactiver les services suivants :
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily-upgrade.service
# On pourrait retarder le chargement du service pour ne pas le lancer au démarrage.
# Cette seconde proposition ne semble pas avoir fonctionné et j'ai désactivé apt-daily.
# La solution de contournement proposée est de modifier apt-daily.timer pour créer un override et surcharger la configuration du timer apt-daily.
# Le timer déclenchera l'exécution du programme apt-daily.service à une heure quelconque entre 15 et 45 minutes après le démarrage, puis une fois par jour.
sudo systemctl edit apt-daily.timer
# Ajouter les informations suivantes :
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
AccuracySec=1h
RandomizedDelaySec=30min

Réduire le temps de chargement pour mysql.service

sudo systemctl disable mysql.service
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable mysql
insserv: warning: current start runlevel(s) (empty) of script `mysql' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `mysql' overrides LSB defaults (0 1 6).
# Les services désactivés pourront être redémarrés manuellement :
sudo systemctl start mysql.service

Réduire le temps de chargement pour apache2.service

sudo systemctl disable apache2.service
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable apache2
insserv: warning: current start runlevel(s) (empty) of script `apache2' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `apache2' overrides LSB defaults (0 1 6).
# Les services désactivés pourront être redémarrés manuellement :
sudo systemctl start apache2.service

Réduire le temps de chargement pour php7.2-fpm.service

sudo systemctl disable php7.2-fpm.service
Synchronizing state of php7.2-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable php7.2-fpm
insserv: warning: current start runlevel(s) (empty) of script `php7.2-fpm' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `php7.2-fpm' overrides LSB defaults (0 1 6).
# Les services désactivés pourront être redémarrés manuellement :
sudo systemctl start php7.2-fpm.service

Réduire le temps de chargement pour phpsessionclean.service

sudo systemctl disable phpsessionclean.service

Réduire le temps de chargement pour systemd-journal-flush.service

# D'anciens fichiers d'enregistrement volumineux, qui sont vérifiés au démarrage, et, l'ajout de nouvelles données de journal ralentit le démarrage.
# Le service systemd-journal-flush.service demande au démon de journal de vider toutes les données de journal stockées dans /run/log/journal dans /var/log/journal, si le stockage persistent est activé.
# Si vous avez de gros fichiers journaux, le démarrage sera plus lent. En outre, le disque (avec /var/log ) doit être monté dans un mode inscriptible pour pouvoir le faire.

# Vérifier le type de stockage :
systemctl cat systemd-journal-flush.service | grep -i storage
# Affiche
Description=Flush Journal to Persistent Storage

# Éditer le fichier de configuration qui renseigne ce message :
sudo nano /lib/systemd/system/systemd-journal-flush.service
# D'après les développeurs de systemd, dans l'issue Github suivante, https://github.com/systemd/systemd/pull/10502, remplacer :
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service 
# Par :
Before=systemd-tmpfiles-setup.service

# Vérifier les fichiers concernés :
journalctl --verify

# Vérifier la taille du journal journalctl :
journalctl --disk-usage
# Affiche :
Archived and active journals take up 1.6G in the file system.

# Vérifier par la même occasion que le dossier journal fait la même taille :
du -hs /var/log/journal/

# Vérifier les informations de temps et d'espace disque du traitement de vidage :
journalctl -b --unit systemd-journald
# Affiche :
-- Logs begin at Sun 2019-08-18 13:08:39 CEST, end at Thu 2019-10-31 23:41:54 CET. --
oct. 31 21:32:52 nom_de_machine systemd-journald[439]: Journal started
oct. 31 21:32:52 nom_de_machine systemd-journald[439]: Runtime journal (/run/log/journal/0a2058fc54c649ada1c67c1b7f870152) is 8.0M, max 320.3M, 312.3M free.
oct. 31 21:32:52 nom_de_machine systemd-journald[439]: Time spent on flushing to /var is 20.505157s for 842 entries.
oct. 31 21:32:52 nom_de_machine systemd-journald[439]: System journal (/var/log/journal/0a2058fc54c649ada1c67c1b7f870152) is 1.6G, max 4.0G, 2.3G free.
# Il est possible de refuser l'écriture de la journalisation sur le disque mais ce n'est pas recommandé pour pouvoir continuer le traitement des erreurs de démarrage.

# Consulter le manuel de la commande journalctl :
journalctl -h

# Réduire l'utilisation du disque en dessous de la taille spécifiée :
--vacuum-size=BYTES
# Laisser uniquement le nombre spécifié de fichiers journaux :
--vacuum-files=INT
# Supprimer les fichiers journaux plus anciens que l'heure spécifiée :
--vacuum-time=TIME
# Spécifier l'une ou l'autre des commandes suivantes pour nettoyer le fichier de journalisation.
# La deuxième commande sera suffisante pour une machine personnelle.
sudo journalctl --vacuum-size=1G --vacuum-time=5d --vacuum-files=5 
sudo journalctl --vacuum-time=7d
# Flush le journal pour prendre en compte le nettoyage qui a été effectué (Vérifier cette définition pour --flush) :
journalctl --flush

# Ce changement réduit bien mon fichier de taille mais ne semble pas améliorer le problème de lenteur au démarrage.
# Éditer le fichier de configuration de "systemd-journal-flush.service" pour optimiser le paramétrage du journal :
sudo nano /etc/systemd/journald.conf
Storage=auto
SystemMaxFileSize=1G
SystemMaxFiles=5
# Dans un ultime recours je tente de supprimer manuellement les fichiers journaux :
find /var/log/journal -name "*.journal" | xargs sudo rm
sudo systemctl restart systemd-journald

# Enregistrer et redémarrer.
# L'ensemble des propositions qui semblaient fonctionner ont été testé, mais, j'ai toujours un temps de réponse élevé, qui a même augmenté !
systemd-analyze blame
27.078s systemd-journal-flush.service
# Comment j'ai planté ma machine :
sudo gedit /etc/systemd/system.conf 

# Le système ne va plus démarrer avec le paramétrage suivant !
# Ajoute une ligne afin de décommenter 90secondes à 5 secondes pour le démarrage :
#DefaultTimeoutStartSec=90s
DefaultTimeoutStartSec=5s
# Pour la fermeture du système :
#DefaultTimeoutStopSec=90s
DefaultTimeoutStopSec=5s
# Pour terminer :
sudo update-initramfs -u
sudo update-grub
sudo update-grub2

# Dans le Grub, au démarrage, c'est Ubuntu qui apparaît, et non plus Linux Mint.
# Depuis la console de récupération , je commente à nouveau les 2 valeurs.
# Je relance update-initramfs et update-grub et update-grub2.
# Le système redémarre normalement, mais, toujours avec le blame de 27 secondes.
# Afficher le nombre d'entrées qui expliquent la lenteur du boot :
journalctl -b | grep "Time spent on flushing"
nov. 02 22:32:45 Nom_Hostname systemd-journald[388]: Time spent on flushing to /var is 27.980420s for 839 entries.

# Afficher le résultat de systemd-analyze critical-chain :
systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @42.149s
└─multi-user.target @42.147s
  └─mysql.service @36.913s +5.233s
    └─network.target @35.321s
      └─NetworkManager.service @33.287s +2.034s
        └─dbus.service @32.488s
          └─basic.target @32.442s
            └─sockets.target @32.442s
              └─dbus.socket @32.409s
                └─sysinit.target @32.408s
                  └─systemd-timesyncd.service @32.205s +202ms
                    └─systemd-tmpfiles-setup.service @31.529s +649ms
                      └─systemd-journal-flush.service @4.639s +26.888s
                        └─systemd-remount-fs.service @4.194s +444ms
                          └─systemd-journald.socket @4.145s
                            └─system.slice @4.144s
                              └─-.slice @3.533s

# Consulter le contenu du journal :
lsattr /var/log/journal/0a2058fc54c649ada1c67c1b7f870152
--------------e--- /var/log/journal/0a2058fc54c649...c1b7f870152/user-1000.journal
--------------e--- /var/log/journal/0a2058fc54c649...c1b7f870152/system.journal
# Supprimer le contenu du dossier intégralement :
sudo rm /var/log/journal/0a2058fc54c649...c1b7f870152/*

Réduire le temps de chargement pour systemd-tmpfiles-setup.service

# Chercher comment réduire le temps de chargement pour systemd-tmpfiles-setup.service
# Chercher comment réduire le temps de chargement pour systemd-tmpfiles-setup-dev.service
# Aucune erreur n'est affichée pour systemd-tmpfiles-setup.service :
sudo systemctl status systemd-tmpfiles-setup
systemd-tmpfiles-setup.service - Create Volatile Files and Directories
  Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
  Active: active (exited) since Wed 2019-11-06 12:12:39 CET; 47min ago
    Docs: man:tmpfiles.d(5)
          man:systemd-tmpfiles(8)
 Process: 825 ExecStart=/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
Main PID: 825 (code=exited, status=0/SUCCESS)

nov. 06 12:12:39 alien systemd[1]: Starting Create Volatile Files and Directories...
nov. 06 12:12:39 alien systemd[1]: Started Create Volatile Files and Directories.
# Vérifier pour status systemd-tmpfiles-setup-dev.service :
sudo systemctl status systemd-tmpfiles-setup-dev.service
# Consulter les dossiers de configuration suivants pour les fichiers temporaires du système :
/usr/lib/tmpfiles.d/*.conf - these files are provided by the relevant RPM package and shouldn't be edited by system admin.
/run/tmpfiles.d/*.conf - these files are normally used by daemons to manage their own runtime temporary files
/etc/tmpfiles.d/*.conf - these files are meant for sysadmis to configure custom temporary locations, and to override vendor-provided default
# Nettoyage du dossier /var/tmp :
# De très nombreux dossiers flatpak-cache-* sont présents, et, certains, assez anciens. Je les supprime tous.
cd /var/tmp
sudo rm -R flatpak-cache-*
# Le man de systemd-tmpfiles : https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup.service.html

Réduire le temps de chargement pour local-premount.service

# Le chargement prend 35 secondes à cette étape et effectuer ce paramétrage va permettre de gagner 30 secondes !
# Begin: Running /scripts/local-premount
# Ensuite, s'affichait le scanning for btrfs file systems, BTRFS ayant été désinstallé entre temps, mais, les lenteurs persistent.
# Passer RESUME UUID à none.
# Attention, la valeur est sensible à la CASE, donc, écrire none, et non pas NONE.
sudo nano /etc/initramfs-tools/conf.d/resume
# Remplacer :
RESUME=UUID=xxx 
# Par :
RESUME=none
# Mettre à jour initramfs et le grub :
sudo update-initramfs -u
sudo update-grub
sudo update-grub2
# Si le temps de chargement est énormément amélioré, j'ai l'impression que la swap n'est plus du tout utilisée.
# La commande suivante affiche les processus et leur utilisation de la swap :
for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB  | sort -k 3 -n
# La ligne pourrait également être ajoutée dans le grub, mais, pour le moment, j'ai ajouté "RESUME=none" dans "/etc/initramfs-tools/conf.d/resume".
# Ajouter RESUME=UUID=0eba5b09-c13e-4411-a169-52d199942dbd dans le grub.
# GRUB_CMDLINE_LINUX="RESUME=UUID=0eba5b09-c13e-4411-a169-52d199942dbd"

Réduire le temps de chargement pour keyboard-setup.service

# Définir une limite de délai d'attente pour que le service puisse contrôler le temps qu'il consomme au démarrage.
Méthode 1 :
SERVICETOFIX="keyboard-setup.service"
sudo mkdir -p "/etc/systemd/system/$SERVICETOFIX.d"
sudo bash
SERVICETOFIX="keyboard-setup.service"
sudo echo -e "[Service]\nTimeoutStartSec=10" | tee "/etc/systemd/system/$SERVICETOFIX.d/reduce-timeout.conf"
Méthode 2 :
Lancer sudo systemctl edit keyboard-setup.service , puis dans l'éditeur, ajouter ce qui suit, puis enregistrer et quitter l'éditeur.
[Service]
TimeoutStartSec=10
Source complémentaire : https://unix.stackexchange.com/questions/413656/keyboard-setup-service-is-slow-at-boot-do-i-need-it

Réduire le temps de chargement pour lvm2-monitor.service

# Actuellement, j'ai le rendu suivant :
systemctl list-unit-files *lvm*
UNIT FILE             STATE  
lvm2-lvmetad.service  static 
lvm2-lvmpolld.service static 
lvm2-monitor.service  enabled
lvm2-pvscan@.service  static 
lvm2.service          masked 
lvm2-lvmetad.socket   enabled
lvm2-lvmpolld.socket  enabled
# Masquer le service lvm2-monitor.service ?
systemd-analyze blame | cat | grep lvm
11.728s lvm2-monitor.service
sudo systemctl mask lvm2-monitor.service

Réduire le temps de chargement pour accounts-daemon.service

Il s'agit d'un démon faisant partie de la suite AccountsService, permettant aux programmes d'obtenir et de manipuler les informations des comptes utilisateur du système.
On peut le masquer, sans le désactiver.
sudo systemctl mask accounts-daemon.service

Réduire le temps de chargement pour avahi-daemon.service

Il s'agit d'une découverte du réseau sans configuration et rendant également la recherche d'imprimantes ou de périphériques du réseau très aisée.
Il est fortement conseillé de désactiver ce service.
sudo systemctl disable avahi-daemon.service

Réduire le temps de chargement pour bluetooth.service

Il s'agit du service de connexion sans fil de type BlueTooth.
Il n’est pas nécessaire d'insister sur le fait qu'il est conseillé de désactiver ce démon à moins d'en avoir vraiment l'utilité, pour des raisons évidentes de sécurité.
sudo systemctl disable bluetooth.service
Synchronizing state of bluetooth.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable bluetooth
insserv: warning: current start runlevel(s) (empty) of script `bluetooth' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `bluetooth' overrides LSB defaults (0 1 6).

Réduire le temps de chargement pour debug-shell.service

Il s'agit d'un Shell root sans mot de passe, permettant de debugger les problèmes survenant sur le processus SystemD.
Là encore il est conseillé de désactiver ce démon pour des raisons de sécurité.
sudo systemctl disable debug-shell.service

Réduire le temps de chargement pour cups.service

Le service cups.service: il s'agit du service d'impression. Si le serveur ne fournit pas ce genre de fonctionnalité, on peut le désactiver.
Je conserve ce service.
sudo systemctl disable cups.service

Réduire le temps de chargement pour qemu-guest-agent.service

Il s'agit d’un démon d'aide utilisé pour échanger des informations entre hôtes et machines virtuelles. Lorsque l'on n'utilise aucun service de virtualisation, on peut désactiver cette fonctionnalité.
Je conserve ce service.
sudo systemctl disable

Réduire le temps de chargement pour ntp.service

sudo systemctl status ntp
● ntp.service - LSB: Start NTP daemon
Loaded: loaded (/etc/init.d/ntp; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-11-07 16:01:19 CET; 5min ago
  Docs: man:systemd-sysv-generator(8)
  Process: 1047 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
 Tasks: 2 (limit: 4915)
CGroup: /system.slice/ntp.service
  └─1312 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109:116
nov. 07 16:01:20 nom_de_machine ntpd[1312]: Listen normally on 2 lo 127.0.0.1:123
nov. 07 16:01:20 nom_de_machine ntpd[1312]: Listening on routing socket on fd #19 for interface updates
nov. 07 16:01:21 nom_de_machine ntpd[1312]: error resolving pool 0.ubuntu.pool.ntp.org: Temporary failure in name resolution (-3)
nov. 07 16:01:21 nom_de_machine ntpd[1312]: error resolving pool 1.ubuntu.pool.ntp.org: Temporary failure in name resolution (-3)
nov. 07 16:01:22 nom_de_machine ntpd[1312]: error resolving pool 2.ubuntu.pool.ntp.org: Temporary failure in name resolution (-3)
nov. 07 16:01:23 nom_de_machine ntpd[1312]: error resolving pool 3.ubuntu.pool.ntp.org: Temporary failure in name resolution (-3)
nov. 07 16:01:24 nom_de_machine ntpd[1312]: error resolving pool ntp.ubuntu.com: Temporary failure in name resolution (-3)
nov. 07 16:02:02 nom_de_machine ntpd[1312]: Listen normally on 3 wlp60s0 192.168.1.64:123
nov. 07 16:02:02 nom_de_machine ntpd[1312]: Listen normally on 4 wlp60s0 [fe80::fd2d:cb8e:8466:7b63%3]:123
nov. 07 16:02:02 nom_de_machine ntpd[1312]: new interface(s) found: waking up resolver
# Consulter le fichier de configuration :
sudo nano /etc/ntp.conf
# J'arrête le service et le désactive.
Stop:
sudo systemctl stop ntp
Start:
sudo systemctl start ntp
Disable at start-up:
sudo systemctl disable ntp
# Affiche :
Synchronizing state of ntp.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ntp
insserv: warning: current stop runlevel(s) (1) of script `ntp' overrides LSB defaults (empty).
insserv: warning: current start runlevel(s) (empty) of script `ntp' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (1 2 3 4 5) of script `ntp' overrides LSB defaults (empty).
Enable at start-up:
sudo systemctl enable ntp

Réduire le temps de chargement pour plymouth-quit-wait.service

sudo systemctl disable plymouth-quit-wait.service
# Je met à jour les modifications qui ont été apportées, enfin, je crois.
sudo update-initramfs -u
# Les erreurs suivants sont 
update-initramfs: Generating /boot/initrd.img-5.3.0-19-generic
W: Possible missing firmware /lib/firmware/i915/icl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_huc_ver8_4_3238.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_huc_ver03_01_2893.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_huc_ver01_8_2893.bin for module i915
# Mettre à jour les firmwares :
sudo apt-get install --reinstall linux-firmware
# Affiche :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 1 réinstallés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de prendre 71,1 Mo dans les archives.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
Réception de :1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-firmware all 1.173.9 [71,1 MB]
71,1 Mo réceptionnés en 2min 3s (577 ko/s)                                                                                                                                                 
(Lecture de la base de données... 370114 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../linux-firmware_1.173.9_all.deb ...
Dépaquetage de linux-firmware (1.173.9) sur (1.173.9) ...
Paramétrage de linux-firmware (1.173.9) ...
# Le problème ne semble se produire que pour le dernier kernel :
update-initramfs: Generating /boot/initrd.img-5.3.0-19-generic
W: Possible missing firmware /lib/firmware/i915/icl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_32.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_huc_ver8_4_3238.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_huc_ver03_01_2893.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_huc_ver01_8_2893.bin for module i915
# Le kernel en 4.15.0-66 n'affiche aucune erreur :
update-initramfs: Generating /boot/initrd.img-4.15.0-66-generic
# Consulter alors le lien suivant : https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
# Copier coller les fichiers manquants depuis répertoire "linux-firmware-20191022/i915/" vers le répertoire "/lib/firmware/i915/".
# On peut le faire depuis un terminal de cette façon : sudo cp ./linux-firmware/i915/icl_guc_32.0.3.bin /lib/firmware/i915/icl_guc_32.0.3.bin
# Relancer la commande et plus aucune erreur ne sera affichée :
sudo update-initramfs -u
Source : https://askubuntu.com/questions/1131885/help-w-possible-missing-firmware-lib-firmware-i915-kbl-guc-ver9-14-bin-for-mo
# Quoi qu'il en soit, désactiver ce service ne sert à rien, le splash screen serait terminé par quelques lignes de code, hors, c'est ce qu'est censé éviter le splash screen.
# Autant désactiver totalement le splash screen et Plymouth à ce moment la.
# Je redémarre ce service au cas ou il était arrêté et j'enlève le mask :
sudo systemctl start plymouth-quit-wait.service
sudo systemctl unmask plymouth-quit-wait.service

Informations sur le service rtkit-daemon.service

Il s'agit du planificateur temps-réel du noyau. Il vaut donc mieux le laisser activé !

Créer un rendu visuel du démarrage des services

# La commande suivante va créer un rendu visuel svg du démarrage des services et identifier les services qui mettent trop de temps à charger.
systemd-analyze plot > init.svg

Lister l'entropie disponible sur le serveur

# Observer combien d'entropie la machine a collectée. Si le nombre est faible, inférieur à 1000, il faut installer haveged.
cat /proc/sys/kernel/random/entropy_avail
# Installer haveged :
sudo apt-get install haveged
# Éditer son fichier de configuration :
sudo nano /etc/default/haveged
# Augmenter la taille de la limite d'écriture dans les arguments passés en options :
DAEMON_ARGS="-w 2048"
# Démarrer le service :
sudo service haveged start
# S'assurer qu'il démarre bien lors du boot du serveur :
sudo update-rc.d haveged defaults
sudo update-rc.d -f haveged enable
# Finalement, j'ai des messages d'erreurs qui s'affichent à la fin du boot, avant l'écran de connexion.
# Je supprime le démarrage de ce paquet au boot.
sudo update-rc.d -f haveged disable
sudo update-rc.d -f haveged remove
# Suppression le paquet :
sudo apt-get autoremove haveged

Tester l'entropie avec rng-tools

# Mieux que la commande cat, le paquet nrg-tools permet de vérifier que l'entropie est correcte.
# Installer rng-tools :
apt-get install rng-tools
# Lancer la commande rng-test qui utilise la méthode FIPS-140 pour vérifier l'entropie :
cat /dev/random | rngtest -c 1000
# La ligne importante à contrôler est la ligne rngtest: FIPS 140-2 failures: qui représente les es échecs.
# Sur 1000 essais, il ne doit pas y avoir un nombre d'échecs supérieur à 5.
Source : https://www.skyminds.net/serveur-dedie-produire-une-meilleure-reserve-dentropie-avec-haveged/

Stopper les services pour un serveur web

# Stopper les services inutiles gagne en sécurité et en performance.
# Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin).
# Il en existe d'autres, selon votre distribution et les choix d'installation originaux.
# A revoir :
/etc/init.d/portmap stop
/etc/init.d/nfs-common stop
update-rc.d -f portmap remove
update-rc.d -f nfs-common remove
update-rc.d -f inetd remove
apt-get remove portmap
apt-get remove ppp

En conclusion

# Utiliser une partition loin du démarrage, comme sda6, pour y positionner le grub, est une mauvaise idée.
# Il faudra de préférence utiliser une partition en sda1, ou, sur le premier disque qui sera consulté par la machine.
# Relance du test pour blame :
# Le temps de chargement a été amélioré même si il n'est pas encore optimale, il semble rester aléatoire.
systemd-analyze blame
# Temps affichés avec le noyau 4.15.0-66 :
29.281s dev-sda6.device
28.844s systemd-journal-flush.service
26.783s ufw.service
26.359s systemd-hwdb-update.service
25.882s lvm2-monitor.service
25.478s keyboard-setup.service
22.584s systemd-sysctl.service
 7.561s udisks2.service
 6.741s accounts-daemon.service
 5.209s grub-common.service
 5.026s preload.service
 4.953s loadcpufreq.service
 4.025s apport.service
 3.697s networking.service
 3.613s ntp.service
 3.294s ubuntu-system-adjustments.service
 3.263s console-kit-log-system-start.service
 3.234s rsyslog.service
 3.226s thermald.service
 3.225s pppd-dns.service
 3.224s avahi-daemon.service
 3.221s bluetooth.service
 3.219s speech-dispatcher.service
 ...

systemd-analyze time
Startup finished in 19.936s (firmware) + 10.852s (loader) + 5.031s (kernel) + 44.527s (userspace) = 1min 20.348s
graphical.target reached after 43.777s in userspace
# Temps affichés avec le noyau 5.3.0-19 après nouvelle mise à jour :
19.931s denyhosts.service
17.890s systemd-journal-flush.service
14.199s udisks2.service
12.904s dev-sda6.device
12.203s ntp.service
12.115s accounts-daemon.service
12.093s grub-common.service
10.688s preload.service
10.544s loadcpufreq.service
 9.465s apport.service
 9.064s speech-dispatcher.service
 8.970s console-kit-log-system-start.service
 8.945s hddtemp.service
 8.867s pppd-dns.service
 8.858s rsyslog.service
 8.793s zram-config.service
 8.717s alsa-restore.service
 8.669s gpu-manager.service
 8.667s ubuntu-system-adjustments.service
 8.666s vboxdrv.service
 8.654s lm-sensors.service
 8.652s avahi-daemon.service
 8.642s bluetooth.service

systemd-analyze time
Startup finished in 20.085s (firmware) + 4.940s (loader) + 4.069s (kernel) + 1min 1.282s (userspace) = 1min 30.379s
graphical.target reached after 1min 499ms in userspace

Bibliographie

 Optimiser Ubuntu : http://doc.ubuntu-fr.org/optimisation

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.