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 :
/disque_racine/bin
au lieu de
/bin
sur votre disquette racine.
/lib/libc.so
et
/lib/libtermcap.so
sont présents, avec les mêmes liens que
dans votre répertoire lib sur le disque dur.
/dev
de
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/console
est
indispensable dans bien des cas.
/dev/tty1
sur votre
disque racine.
/dev/null
,
/dev/zero
, /dev/mem
, /dev/ram
et /dev/kmem
.
ramdisk
) doit être inclus.
Une fois ces divers points généraux couverts, voici quelques points plus particuliers à surveiller :
/sbin/init
ou
/bin/init
, et qu'il est executable.
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.
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).
/etc/inittab
sur 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
,mgetty
ougetty_ps
.
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.
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.
/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 :
PATH
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