Important :

Le présent wiki a été migré vers wiki.archlinux.org.

Ce Wiki a été archivé. Toute contribution doit donc désormais se faire là-bas. Cette page de Wiki possède donc potentiellement des informations qui ne sont plus à jour !

Accueil wiki FR sur .org

Dépannage : Différence entre versions

De ArchwikiFR
(Fini traduction pragraphe #Boot_problems)
(Gestion des paquets : déplacé paragraphe #reparer_un_systeme_cassé vers page [[dépannage depuis [[Maintenance)
Ligne 106 : Ligne 106 :
  
 
cf. la page [[Kernel_modules|modules]].
 
cf. la page [[Kernel_modules|modules]].
 +
 +
== Gestion des paquets ==
 +
 +
Voir les pages:
 +
* [[Pacman]]
 +
* https://wiki.archlinux.org/index.php/Pacman/Package_signing#Troubleshooting
 +
 +
=== Réparer un système cassé ===
 +
 +
Si vous avez quand même effectué une mise à niveau partielle, et que le système est cassé au point que vous ne puissiez plus exécuter ''pacman'', [https://wiki.archlinux.org/index.php/Installation_guide#Pre-installationGuide_d'installation#Pré-installation Démarrer à l'aide d'une ISO Arch mensuelle à partir d'une clé USB, d'un disque optique ou d'un réseau avec PXE].  (Ne suivez pas le reste du guide d'installation.)
 +
 +
Montez votre système de fichiers racine :
 +
 +
[ISO] # mount /dev/'''rootFilesystemDevice''' /mnt
 +
 +
Montez toutes les autres partitions que vous avez créées séparément, en ajoutant le préfixe {{ic||/mnt}} à chacune d'elles, c'est-à-dire :
 +
 +
[ISO] # mount /dev/'''bootDevice''' /mnt/boot
 +
 +
Essayez d'utiliser le "pacman" de votre système :
 +
 +
[ISO] # arch-chroot /mnt
 +
# pacman -Syu
 +
 +
Si cela échoue, quittez le "chroot" et essayez :
 +
 +
[ISO] # pacman -Syu --sysroot /mnt
 +
 +
Si cela échoue, essayez :
 +
 +
[ISO] # pacman -Syu --root /mnt

Version du 15 février 2021 à 22:40

Cet article donne une méthode générale de dépannage. Pour des problèmes spécifiques à une application qui possède une page dans le wiki, veuillez vous y référer.

Procédure générale

Attention aux détails

Afin de résoudre votre problème, il est «absolument crucial» que vos connaissances du sous-système qui vous intéresse soient solides. Comment cela fonctionne t'il? Qu'est ce qu'il devrait se passer s'il n'y avait cette erreur? Si vous avez du mal à répondre à ces deux questions, vous devriez probablement revoir vos connaissances sur le sujet.

Questions / checklist

Voici une liste de question que vous devriez vous poser chaque fois que vous êtes face à un système qui fonctionne mal. Sous chaque question se trouvent des notes expliquant comment vous devriez tenter de répondre, suivis d'exemples de façon de collecter des données, et des outils pour accéder aux journaux des opérations.

  1. Quel est le problème?
    Soyez aussi précis que possible. Cela vous aidera à ne pas être submergé ou distrait lors de la recherche d'une information spécifique.
  2. Quels sont les messages d'erreur? (s'il y en a)
    Copier et coller la sortie complète qui contient les messages d'erreur dans un fichier à part tel $HOME/issue.log. Par exemple, pour récupérer la sortie de la commande mkinitcpio vers le fichier $HOME/issue.log:
    $ mkinitcpio -p linux >> $HOME/issue.log
  3. Pouvez-vous reproduire le problème?
    Si oui, établissez la liste exacte des instructions/commandes nécessaires pour le reproduire. En ligne de commande, vous pouvez commencer par enregistrer vos commandes accompagnées de leurs sorties. Voir à ce propos script, une commande fournie par le paquet util-linux. Pour vous débarrasser des caractères de contrôle, et/ou non-imprimables du fichier typescript résultant, utilisez tr. Les séquences d’échappement ANSI sont plus difficiles à gérer (car plus complexes). Pour l'utilisation de sed à ce propos visitez https://stackpointer.io/unix/unix-linux-remove-ansi-escape-sequences/464/.
  4. Quand avez-vous rencontré ce problème pour la première fois? Quand le système a t'il été fonctionnel pour la dernière fois? Qu'est ce qui a changé entre temps?
    Si cela survient après une mise à jour, listez tous les paquet mis à jour, ainsi que leur numéro de version. Examinez /var/log/pacman.log. Pensez aux éventuels services requis pour le bon fonctionnement du système.
    $ systemctl status dhcpcd@eth0.service >> $HOME/issue.log

Approche

Plutôt que d'approcher un problème en constatant

L'application X ne fonctionne pas.

il est plus utile de de formuler le problème dans le contexte de son environnement.

L'application X produit l'erreur Y lors de l’exécution de la tâche Z dans les conditions A et B.

Besoin d'aide?

Après toutes ces étapes, vous devriez certaine idée de ce qu'il se passe sur le système et devriez pouvoir commencer à travailler à une solution.

Si vous avez besoin d'aide, celle-ci peut être trouvée sur https://forum.archlinux.fr, le forum de la communauté Archlinux francophone. N'oubliez pas que la nétiquette vous recommande d'avoir lu:

  1. L'art de poser de bonnes questions si vous n'avez jamais posté sur un forum,
  2. Les règles du forum si vous n'avez jamais posté sur le forum ArchLinuxFR.
Note : Le document en version anglophone précise que le support n'est fournis que pour Archlinux uniquement et aucune des distributions dérivées. La communauté francophone est probablement plus coulante la dessus. Mais de grâce si vous utilisez une distribution dérivée, mentionnez-le! (NdT)

Si l'on vous demande les sorties de commandes ou de journaux, postez ceux-ci dans leur intégralité, ne les tronquez pas aux seules sections que vous jugez utiles.

Problèmes de démarrage

Le diagnostique des problèmes de démarrage impliquent de pouvoir changer les paramètres passés au noyau. Cela suppose de pouvoir interagir avec le bootloader. Si cela n'est même pas possible, démarrez depuis une iso live et utilisez arch-chroot.

Astuce : La suite de cette section suppose que vous sachiez modifier les paramètres que votre bootloader passe au noyau. Si besoin, consultez la documentation de votre chargeur de démarrage. L'iso d'installation utilise GRUB.

Messages sur la console

A la fin du processus de démarrage, l'écran est entièrement vidé, et le login (ou un gestionnaire de connexion) apparaît. Ceci laisse l'utilisateur incapable de lire les éventuels messages d'erreur. Ce comportement pour être modifié par chacune des méthodes exposées dans les suivantes sous-sections. La page Messages_au_demarrage explique comment désactiver ceci de façon permanente.

N'oubliez pas que quelle que soit l'option choisie, les messages du noyau peuvent être visualisés après démarrage avec la commande journalctl -k ou dmesg. Pour afficher tous les logs depuis le derniers démarrage utilisez journalctl -b.

Contrôle du flux

Ce système rudimentaire de gestion du flux de la console s'applique à la plupart des émulateurs de terminaux incluant les consoles virtuelles.

  • Utilisez Ctrl+s pour mettre en pause l'affichage
  • Et Ctrl+q pour reprendre.

Cela ne met pas seulement l'affichage «en pause», cela gèle tout le programme qui tente d'afficher sur le terminal. Si le processus de démarrage semble bloqué, vérifiez que la console n'est pas «en pause».

Sortie verbeuse

La majorité des messages que le noyau produit lors du démarrage ne sont pas affichés. Vous pouvez rendre le noyau plus bavard en plus passant des paramètres tels:

  • debug active l'affichage des messages de débogage pour systemd et le noyau.
  • ignore_loglevel force l'affichage de tous les messages du noyau

Dans certaines situations vous pouvez également être intéressés par les paramètres suivants:

  • earlyprintk=vga,keep pour afficher les messages du «early boot». Utilisez cette option si le noyau crashe sans avoir eu le temps d'afficher quoi que ce soit. Remplacez vga par efi pour les systèmes en UEFI.
  • log_buf_len=16M alloue un grand tampon pour les messages du noyau (16 MiB), dans le cas d'une sortie très verbeuse, cela peut éviter un écrasement des données par manque de place dans le tampon.

Le noyau linux reconnait de nombreux paramètres pour le deboguage de sous-composants (par example: bootmem_debug, sched_debug. Voir la documentation du noyau pour des informations complémentaires.

netconsole

netconsole est un module qui envoi tous les messages de log du kernel à travers le réseau. Ceci peut vous sauver la mise dans le cas d'un serveur «headless»...

Shell de secours

Lancer un shell de secours avant la fin du démarrage est souvent la façon la plus simple de mettre le doigt sur ce qui cause le problème. Dans ce cas, différents paramètres peuvent être passés au noyau.

  • rescue lance un shell immédiatement après que le noyau monte la racine en écriture.
  • emergency lance un shell plus tôt encore, (avant que la plupart des partitions ne soit montées)
  • init=/bin/sh en dernier recours, ceci lance un shell avec les droits root. Alors que les deux points du dessus font tout deux appel à systemd, ce dernier paramètre devrait fonctionner même si systemd est «cassé».

Une autre option et d'utiliser le «shell de débogage» de systemd. Ce dernier active un shell (root) sur la neuvième console virtuelle (Ctrl+Alt+F9). Ceci peut être activé au moyen du service debug-shell.service ou en passant le paramètre systemd.debug_shell au noyau.

Attention : Ne pas oublier de désactiver le shell de débogage! Un shell avec des droits root à chaque démarrage serait une grosse faille de sécurité.

Écran noir et Carte graphique Intel

Il s'agit probablement d'un problème avec KMS. Voyez KMS#Désactiver_KMS. Si cela ne suffit pas, consultez ce paragraphe du wiki officiel.

Plantage lors du chargement du noyau

Désactivez la gestion de l'ACPI avec le paramètre acpi=off.

Déboguer les modules du noyau

Il est possible passer au noyau un paramètre tel module.option=val ceci commandera comment linux devra charger ou ne pas charger un module.

cf. la page modules.

Gestion des paquets

Voir les pages:

Réparer un système cassé

Si vous avez quand même effectué une mise à niveau partielle, et que le système est cassé au point que vous ne puissiez plus exécuter pacman, Démarrer à l'aide d'une ISO Arch mensuelle à partir d'une clé USB, d'un disque optique ou d'un réseau avec PXE. (Ne suivez pas le reste du guide d'installation.)

Montez votre système de fichiers racine :

[ISO] # mount /dev/rootFilesystemDevice /mnt

Montez toutes les autres partitions que vous avez créées séparément, en ajoutant le préfixe à chacune d'elles, c'est-à-dire :

[ISO] # mount /dev/bootDevice /mnt/boot

Essayez d'utiliser le "pacman" de votre système :

[ISO] # arch-chroot /mnt
# pacman -Syu

Si cela échoue, quittez le "chroot" et essayez :

[ISO] # pacman -Syu --sysroot /mnt

Si cela échoue, essayez :

[ISO] # pacman -Syu --root /mnt