web-dev-qa-db-fra.com

Démarrage lent, temps de chargement du noyau long, en raison d'un mauvais périphérique de reprise

Depuis quelque temps, mon processus de démarrage prend trop de temps (presque 1 minute).

systemd-analyse time 

montre que le noyau prend 35.765s

En regardant dmesg, il semble que le problème soit lié au montage de systèmes de fichiers:

...
[    2.186084]  sdb: sdb1 sdb9
[    2.186919] sd 2:0:0:0: [sdb] supports TCG Opal
[    2.186922] sd 2:0:0:0: [sdb] Attached SCSI disk
[    2.499795] ata5: SATA link down (SStatus 0 SControl 300)
[    2.844320] clocksource: Switched to clocksource tsc
[   35.670493] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[   35.782128] ip_tables: (C) 2000-2006 Netfilter Core Team
[   35.803610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
...

Mon /etc/fstab ressemble à ceci:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=3996-2381  /boot/efi       vfat    umask=0077      0       1
#/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Comment puis-je résoudre ce problème?

EDIT: en regardant de près les messages de démarrage (après avoir supprimé l’option quiet de grub), j’ai repéré une ligne suspecte:

gave up waiting for suspend/resume device

Je pense que mon échange est crypté et que l’UUID dans /etc/initramfs/conf.d/resume ne correspond à aucun périphérique.

Devrais-je désactiver reprendre/suspendre? et comment faire ça?

35
alci

Ok, j'ai trouvé la solution, grâce au commentaire de Sudhanshu.

Le problème était dû au cryptage de mon échange. Ainsi, le script local-premount dans initramfs attendait un périphérique de swap non disponible jusqu'à la fin de son délai d'attente. Le message pertinent était gave up waiting for suspend/resume device.

Pour le désactiver (la reprise d'un échange n'est pas possible avec un échange chiffré et je n'utilise pas le mode veille de toute façon), j'ai modifié le fichier suivant: /etc/initramfs-tools/conf.d/resume.

Dans ce fichier, une ligne avec

RESUME=none

(au lieu de l'UUID qui était ici) désactivera l'attente d'un périphérique de reprise.

Courir

Sudo update-initramfs -u

appliquer les modifications.

Le système démarre maintenant normalement.

48
alci

J'ai également vu cela dans Linux Mint (basé sur Ubuntu) et passé un certain temps à chercher ce qui n'allait pas.

Cela se produit si votre système est installé sur LVM et utilise un volume LVM en tant que disque d'échange.

Il existe un bogue récurrent de longue date dans lequel le fichier de reprise contient incorrectement un UUID (non valide pour LVM) au lieu du chemin de périphérique qu'il devrait avoir. Voir https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/17682

Vous pouvez résoudre ce problème en modifiant le fichier /etc/initramfs-tools/conf.d/resume et en remplaçant l'UUID par le chemin du périphérique du lecteur d'échange. L'extrait de commande suivant le fera pour vous, en utilisant le premier lecteur d'échange trouvé et signalé par blkid:

Sudo bash -c 'mv /etc/initramfs-tools/conf.d/resume /tmp/resume.bak; echo RESUME=$(blkid | grep swap | head -n 1 | cut -d : -f 1) > /etc/initramfs-tools/conf.d/resume'
1
Nameless Voice

Aucune de ces solutions ci-dessus ou ailleurs n'a fonctionné pour moi mais j'ai trouvé une solution qui réduit mon temps de démarrage à 40 secondes de 2 minutes à 10 secondes.

J'avais l'habitude de créer et de supprimer des partitions d'échange et ces journaux étaient conservés dans un fichier etc/fstab. Mon système essayait donc de monter ces partitions d'échange créées précédemment et qui n'existent plus. Alors s'il vous plaît laissez-moi vous expliquer ce que j'ai fait étape par étape.

  1. J'ai exécuté cette commande Sudo blkid | grep swap pour connaître mes partitions d'échange. Il y en avait deux mais un n'existe pas réellement (il ne fait référence à aucune de mes partitions).

  2. Je suis donc allé éditer le fichier/etc/fstab en tapant Sudo gedit /etc/fstab

  3. Ensuite, j'ai réalisé qu'il y avait tellement de fichiers d'échange que j'avais supprimés mais qui avaient repris leur existence dans ce fichier. J'ai donc fait référence à l'étape 1 et aux partitions supprimées qui n'existent plus .

Veuillez en voir deux avant et après les captures d'écran du fichier/etc/fstab. Après ce nettoyage, tout fonctionne normalement.

Ceci est un fichier/etc/fstab non édité / etc/fstab non édité

et ici après avoir effacé les partitions swap non existantes nettoyer/etc/fstab

1
deni

J'ai eu ce problème après l'installation de 2 distributions Linux différentes. D'une manière ou d'une autre, sur une distribution, la partition de swap a reçu un autre UUID puis attendue. Ma solution était la suivante: Tout d'abord, exécutez Sudo blkid pour obtenir le bon UUID pour la partition de swap. Copiez l'UUID du swap. Collez-le dans /etc/initramfs-tools/conf.d/resume pour obtenir RESUME=_the_correct_UUID_. Maintenant, lancez Sudo update-initramfs -u pour appliquer cette modification.

Ensuite, vérifiez/etc/fstab et modifiez-y l’UUID de la partition de swap si nécessaire. (J'ai dû)

0
Benny