6. En cas de problèmes

Contenu de cette section

En construisant des disques de secours, il est courant que les premiers essais ne démarrent pas. En général, pour construire un disque d'amorce, on assemble des composants de son système existant, et on tente d'obtenir que le système sur disquette démarre jusqu'à afficher des messages sur la console. Une fois qu'il vous parle, vous avez presque gagné la bataille, car vous pouvez voir de quoi il se plaint, et corriger les problèmes individuels jusqu'à ce que le système marche sans problèmes. Si le système s'arrête sans explications, il peut être difficile de trouver l'origine du problème. Pour obtenir un système qui démarre et arrive à parler, un certain nombre de composants doivent être présents et correctement configurés. La méthode recommandée pour trouver le problème si le système n'affiche rien est comme suit :

Une fois ces divers points généraux couverts, voici quelques points plus particuliers à surveiller :

  1. Vérifiez qu'init est présent en tant que /sbin/init ou /bin/init, et qu'il est executable.
  2. Lancez ldd init pour vérifier les bibliothèques d'init. En général il n'y a que libc.so, mais il vaut mieux vérifier. Vérifiez que vous incluez ces bibliothèques.
  3. Lancez file sur la(les) bibliothèque(s) indiquées par ldd pour connaître leur type. Vérifiez que vous avez le bon chargeur présent sur le disque racine. Le chargeur est soit ld.so (pour les bibliothèques a.out), soit ld-linux.so (pour les bibliothèques ELF).
  4. Vérifiez /etc/inittab sur le système de fichiers de votre disque amorce pour les appels a *getty*.
    La notation *getty* sera utilisée pour indiquer des programmes du genre de getty, comme getty, agetty, mgetty ou getty_ps.
    Vérifiez bien ceux-ci avec ceux de l'inittab de votre disque dur. Vérifiez les pages de manuel du programme pour vous assurez que cela est utile. Inittab est peut-être la partie la plus difficile car sa syntaxe et son contenu dépendent du programme init utilisé et de la nature du système. La seule façon de résoudre le problème est de lire les pages de manuel d'init et inittab et de comprendre ce que fait exactement votre système existant lorsqu'il démarre. Vérifiez que /etc/inittab a une entrée pour l'initialisation du système. Elle devrait contenir une commande de la forme /etc/rc.x, pour lancer l'un des scripts /etc/rc. Ce script doit exister.
  5. Pour init, lancez ldd sur getty (ou agetty) pour déterminer ses besoins, et vérifiez que les bibliothèques et chargeurs nécessaires ont été inclus dans votre système de fichiers racine.
  6. Si vous avez un fichier /etc/ld.so.cache sur votre disque de secours, regénérez-le.

Si init démarre, mais que vous obtenez un message du type :

Id xxx respawning too fast: disabled for n minutes  

cela provient d'init, qui indique généralement par là que votre *getty* ou login se termine aussitôt démarré. Vérifiez les exécutables de *getty* et login, et les bibliothèques dont ils dépendent. Vérifiez que les invocations dans /etc/inittab sont correctes. Si vous obtenez d'étranges messages de *getty*, cela peut vouloir dire que son appel dans /etc/inittab est erroné. Les options des programmes *getty* sont variées ; même entre différentes versions de agetty, il semblerait qu'on trouve des arguments incompatibles. Si vous utilisez des arguments ou un programme différent de ce que vous utilisez dans le /etc/inittab de votre disque dur, vérifiez plutôt deux fois qu'une.

Si vous essayez de lancer un programme quelconque, tel que df, qui se trouve sur votre disque de secours mais que vous obtenez un message du genre : df: not found, vérifiez deux choses :

  1. Vérifiez que le répertoire contenant le programme est dans votre variable PATH
  2. Vérifiez que vous avez les bibliothèques et chargeurs dont le programme a besoin. Tapez ldd fichier pour voir la liste des bibliothèques nécessaires, et vérifiez que celles-ci existent. Voir la section précédente sur /lib.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre