Page suivante Page précédente Table des matières
6. En cas de problèmes
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 :
- Vérifiez que le disque racine contient bien les répertoires que vous croyez. Il est facile de se tromper de répertoire origine et de se retrouver avec quelque chose du genre
/disque_racine/binau lieu de/binsur votre disquette racine.- Vérifiez que
/lib/libc.soet/lib/libtermcap.sosont présents, avec les mêmes liens que dans votre répertoire lib sur le disque dur.- Vérifiez que tous les liens symboliques du répertoire
/devde votre système existent également dans votre système de fichiers racine, quant il s'agit de liens vers des périphériques que vous avez inclus dans votre disquette racine. En particulier,/dev/consoleest indispensable dans bien des cas.- Vérifiez que vous avez inclus
/dev/tty1sur votre disque racine.- Vérifiez que vous avez inclus les périphériques
/dev/null,/dev/zero,/dev/mem,/dev/ramet/dev/kmem.- Vérifiez la configuration de votre noyau - le support de toutes les ressources nécessaires pour vous logguer doivent être inclus dans le noyau, et non pas sous forme de modules. Surtout, le support pour disque mémoire (
ramdisk) doit être inclus.- Vérifiez que les paramètres de périphérique racine et de disque mémoire du noyau sont corrects. Reportez-vous à la section Création de disque d'amorce évolué pour les détails.
Une fois ces divers points généraux couverts, voici quelques points plus particuliers à surveiller :
- Vérifiez qu'init est présent en tant que
/sbin/initou/bin/init, et qu'il est executable.- Lancez
ldd initpour vérifier les bibliothèques d'init. En général il n'y a quelibc.so, mais il vaut mieux vérifier. Vérifiez que vous incluez ces bibliothèques.- Lancez
filesur 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 soitld.so(pour les bibliothèques a.out), soitld-linux.so(pour les bibliothèques ELF).- Vérifiez
/etc/inittabsur le système de fichiers de votre disque amorce pour les appels a *getty*.La notationVérifiez bien ceux-ci avec ceux de l'*getty*sera utilisée pour indiquer des programmes du genre degetty, commegetty,agetty,mgettyougetty_ps.inittabde votre disque dur. Vérifiez les pages de manuel du programme pour vous assurez que cela est utile.Inittabest peut-être la partie la plus difficile car sa syntaxe et son contenu dépendent du programmeinitutilisé 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'initetinittabet de comprendre ce que fait exactement votre système existant lorsqu'il démarre. Vérifiez que/etc/inittaba 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.- Pour
init, lancezlddsurgetty(ouagetty) 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.- Si vous avez un fichier
/etc/ld.so.cachesur votre disque de secours, regénérez-le.Si
initdémarre, mais que vous obtenez un message du type :Id xxx respawning too fast: disabled for n minutescela provient d'
init, qui indique généralement par là que votre*getty*ouloginse termine aussitôt démarré. Vérifiez les exécutables de*getty*etlogin, et les bibliothèques dont ils dépendent. Vérifiez que les invocations dans/etc/inittabsont correctes. Si vous obtenez d'étranges messages de*getty*, cela peut vouloir dire que son appel dans/etc/inittabest erroné. Les options des programmes*getty*sont variées ; même entre différentes versions deagetty, 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/inittabde 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 :
- Vérifiez que le répertoire contenant le programme est dans votre variable
PATH- Vérifiez que vous avez les bibliothèques et chargeurs dont le programme a besoin. Tapez
ldd fichierpour voir la liste des bibliothèques nécessaires, et vérifiez que celles-ci existent. Voir la section précédente sur/lib.
Page suivante Page précédente Table des matières