Cette réponse a été transférée dans la Section En cas de problèmes ci-dessus.
La manière la plus facile est d'obtenir le noyau d'une distribution Slackware depuis le site miroir Slackware le plus proche. Les noyaux Slackware sont des noyaux génériques qui tentent d'inclure autant de gestionnaires pour des périphériques différents que possible donc si vous avez un controlleur SCSI ou IDE, il y a de grandes chances qu'un gestionnaire approprié soit inclus dans le noyau Slackware.
Allez dans le répertoire a1
et sélectionnez un noyau soit SCSI, soit
IDE, en fonction du type de controlleur que vous avez. Vérifiez dans
le fichier xxxxkern.cfg
correspondant au noyau que vous avez
sélectionné la liste des gestionnaires inclus dans ce noyau. Si le
périphérique dont vous avez besoin se trouve dans la liste, alors le
noyau correspondant devrait pouvoir démarrer votre
ordinateur. Récupérez le fichier xxxxkern.tgz
et copiez-le sur votre
disquette d'amorce comme indiqué précédemment dans la section sur la
fabrication des disques d'amorces.
Vous devez alors indiquer le périphérique de démarrage au noyau, en
utilisant la commande rdev
:
rdev zImage
Rdev
va alors indiquer le périphérique racine actuel configuré dans le
noyau. S'il ne s'agit pas de celui que vous voulez, utilisez alors
rdev
pour le modifier. Par exemple, le noyau que j'ai utilisé était
réglé pour /dev/sda2
, mais ma partition SCSI racine est
/dev/sda8
. Pour utiliser une disquette racine, vous devriez lancer la
commande :
rdev zImage /dev/fd0
Si vous voulez aussi savoir comment utiliser une disquette racine Slackware, c'est un sujet hors du cadre de ce HOWTO, et je suggère donc que vous lisiez le Guide d'Installation de Linux ou que vous récupériez la distribution Slackware. Cf. la section de ce HOWTO intitulée ``Références''.
Il suffit de copier le noyau sur la disquette amorce en utilisant la
commande dd
dans le cas d'une disquette amorce sans système de
fichiers, ou alors d'utiliser la commande cp
dans le cas d'un ensemble
de disques amorce et racine. Reportez-vous à la section de ce HOWTO
intitulée ``Amorce'' pour plus de détails sur la création d'un disque
d'amorce. La description s'applique aussi à la mise à jour d'un noyau
sur un disque amorce.
Ce n'est pas vraiment un sujet sur les disques d'amorce, mais la question est souvent posée, et donc : la réponse est d'utiliser la commande DOS :
FDISK /MBR
MBR signifie Master Boot Record (enregistrement original d'amorce), et cela remplace le secteur d'amorce par un original du DOS, sans affecter la table de partitions. Quelques puristes ne semblent pas d'accord, mais même l'auteur de LILO, Werner Almesberger, le suggère. C'est simple, et cela fonctionne.
Vous pouvez aussi utiliser la commande dd pour copier la sauvegarde effectuée par LILO vers le secteur d'amorce : voir la documentation de LILO si vous souhaitez le faire.
Si vous n'avez pas de disque amorce sous la main, la solution la plus simple est sans doute de récupérer un noyau Slackware correspondant à votre type de controlleur disque (IDE ou SCSI), comme décrit ci-dessus dans la réponse à la question ``Comment puis-je faire un disque d'amorce avec un gestionnaire pour XXX ?''. Vous pouvez alors démarrer votre ordinateur en utilisant ce noyau, puis réparer les dégâts.
Le noyau récupéré peut ne pas être configuré pour s'amorcer sur le type de disque ou sur la partition que vous souhaitez. Par exemple, le noyau générique SCSI de Slackware est configuré pour démarrer avec comme périphérique racine /dev/sda2, alors que ma partition racine Linux se trouve être /dev/sda8. Dans ce cas, il faut modifier la configuration du périphérique racine dans le noyau.
Il reste possible de changer la racine ou les paramètres du disque-mémoire dans le noyau même si tout ce dont vous disposez est un noyau, et un autre système d'exploitation tel que DOS.
Rdev modifie la configuration du noyau en changeant les valeurs situées à certaines adresses dans le fichier du noyau, ce que vous pouvez faire si vous avez un éditeur hexadécimal disponible dans l'un des systèmes qui marche encore - par exemple, le Disk Editor des Norton Utilities sous DOS. Vous devez alors vérifier et éventuellement modifier les valeurs contenues dans le noyau aux adresses suivantes :
0x01F8 Octet de poids faible de la taille du disque-memoire
0x01F9 Octet de poids fort de la taille du disque-memoire
0x01FC Numero de peripherique mineur de la racine_- voir ci-dessous
0X01FD Numero de peripherique majeur de la racine_- voir ci-dessous
La taille du disque mémoire est le nombre de blocs à créer pour le disque. Si vous désirez démarrer depuis une disquette racine, il faut mettre cette valeur a 1440 en base décimale, soit 0x05A0, et donc mettre la valeur 0xA0 au décalage 0x01F8 et la valeur 0x05 au décalage 0x01F9. La place sera allouée pour une disquette de 1.4 Mo.
Notons que la signification du mot donnant la taille du disque mémoire a changé dans la version 1.3.48 du noyau. Cette signification est décrite dans la section Création de disquette de démarrage élaborée .
Les numéros de périphérique majeurs et mineurs doivent être positionnés en fonction du périphérique que vous souhaitez utiliser comme système de fichiers racine. Voici un certain nombre de valeurs utiles :
Peripherique majeur mineur
/dev/fd0 2 0 premier lecteur de disquette
/dev/hda1 3 1 partition 1 sur le premier disque IDE
/dev/sda1 8 1 partition 1 sur le premier disque SCSI
/dev/sda8 8 8 partition 8 sur le premier disque SCSI
Une fois ces valeurs entrées, vous pouvez écrire le fichier sur une disquette en utilisant soit le Disk Editor des Norton Utilities, soit un programme appelé rawrite.exe. Ce programme est inclus dans de nombreuses distributions, comme la SLS et la Slackware. Il s'agit d'un programme DOS qui écrit un fichier vers les ``couches basses'' du disque, en partant du secteur d'amorce, au lieu de l'écrire sur le système de fichiers. Si vous utilisez les Norton Utilities, vous devez alors faire écrire le fichier sur un disque physique en commençant au début du disque.
Il n'est jamais souhaitable de n'avoir qu'un seul jeu de disques de secours - 2 ou 3 devraient être conservés au cas ou l'un est illisible.
Le plus simple pour réaliser des copies de disquettes, quelles
qu'elles soient, y compris des disquettes amorçables et d'utilitaires,
est d'utiliser la commande dd
pour copier le contenu de la disquette
originale dans un fichier sur votre disque dur, puis d'utiliser la
même commande pour recopier ce fichier sur une nouvelle
disquette. Notez que vous n'avez pas besoin, et ne devriez pas en
avoir besoin, de monter les disquettes, car dd
utilise l'interface
d'accès au périphérique physique.
Pour copier l'original, tapez la commande :
dd if=nom-du-peripherique of=nom-du-fichier
ou nom-du-peripherique est le nom du peripherique du
lecteur de disquette
et nom-du-fichier est le nom du fichier dans lequel vous
voulez ecrire
Par exemple, pour copier depuis /dev/fd0
vers un fichier temporaire
appelé /tmp/disquette.copie
, je taperais la commande :
dd if=/dev/fd0 of=/tmp/disquette.copie
Ne pas donner le paramètre ``count
'', comme ici, signifie que l'ensemble
de la disquette, soit 2880 blocs pour une disquette haute densité,
seront copiés.
Pour recopier le fichier résultant sur une nouvelle disquette, mettez la disquette dans le lecteur et tapez la commande inverse :
dd if=fnom-du-fichier of=nom-du-peripherique
Notons que l'on fait ici l'hypothèse que vous n'avez qu'un seul lecteur de disquette. Si vous en avez deux du même type, vous pouvez copier des disquettes avec une commande du type :
dd if=/dev/fd0 of=/dev/fd1
Quand un périphérique de disque n'est pas détecté automatiquement au démarrage, il faut fournir au noyau une chaîne de paramètres pour le périphérique, telle que :
aha152x=0x340,11,3,1
Cette chaîne peut être fournie de diverses manières grâce à
LILO :
lock
'' de LILO pour s'assurer qu'il
conserve la ligne de commande en question comme ligne de commande par
défaut, utilisant ainsi les mêmes options à chaque démarrage.APPEND
dans le fichier de
configuration de LILO. Dans ce cas la chaîne de paramètres doit être
entourée de guillemets.Ainsi, un exemple de ligne de commande utilisant la chaîne de paramètres ci-dessus pourrait être :
zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock
La chaîne de paramètres pour le périphérique est ainsi passée au
noyau, tout en lui indiquant d'utiliser /dev/sda1
comme périphérique
racine et de sauver la ligne de commande complète afin de la
réutiliser pour tous les futurs démarrages.
Un exemple d'utilisation de l'instruction APPEND
serait :
APPEND = "aha152x=0x340,11,3,1"
A noter que la chaîne NE DOIT PAS être entourée de guillemets dans le
cas de la ligne de commande, mais DOIT l'être lors de l'utilisation
d'APPEND
.
Notons aussi que pour que la chaîne de paramètres soit prise en compte
par le noyau, celui-ci doit contenir le gestionnaire pour ce type de
disque. Si ce n'est pas le cas, il n'y a alors personne à l'écoute des
arguments fournis, et vous devrez reconstruire le noyau pour inclure
le gestionnaire requis. Pour plus de détails sur la construction d'un
noyau, allez dans le répertoire /usr/src/linux
et lisez le fichier
README, puis la FAQ Linux et le HOWTO Installation. Ou encore vous
pouvez obtenir un noyau générique pour le type de disque utilisé et
l'installer à la place.
Il est incessamment recommandé aux lecteurs de lire la documentation
de LILO avant de faire des essais d'installation. L'utilisation de
l'instruction BOOT
peut en particulier endommager des partitions si
elle tombe mal à point.
Pour les noyaux supérieurs à la version 1.3.48, il vaut mieux créer un système de fichiers compressé comme indiqué dans la section Création de disquette de démarrage élaborée . Si votre noyau est antérieur à cette version vous pouvez soit le mettre à jour, soit vous referer à la version 2.0 ou antérieure de ce HOWTO.
a: cannot execute B
. Pourquoi ?Il arrive souvent que les noms de programmes soient écrits en dur dans
divers utilitaires. Cela n'arrive pas partout, mais cela peut
expliquer pourquoi un executable ne peut apparemment pas être trouvé
sur votre système de fichiers même lorsque vous le voyez
vous-même. Vous pouvez savoir si un programme donné contient le nom
d'un autre programme écrit directement grâce à la commande ``strings
'',
en redirigeant sa sortie vers le programme grep
.
Quelques exemples de codage en dur :
Shutdown
dans certaines versions contient /etc/reboot
en dur, nécessitant que vous placiez reboot
dans le répertoire
/etc
.
Init
a posé des problèmes à au moins une personne pour qui le
noyau ne pouvait pas trouver init
.Pour résoudre ces problèmes, déplacez les programmes vers le
répertoire attendu, ou changez les fichiers de configuration (par
exemple inittab
) pour qu'ils pointent vers les répertoires
corrects. Dans le doute, mettez les programmes dans les mêmes
répertoires que sur votre disque dur, et utilisez le même fichier
inittab
et les mêmes fichiers de /etc/rc.d
que sur votre
disque.
Lorsque cela arrive, un message du type :
Ramdisk driver initialized : 16 ramdisks of 0K size
apparaît lors du démarrage du noyau. La taille doit être soit la
taille par défaut, soit 4096 ko, soit la taille spécifiée dans les
paramètres du noyau ramdisk_size
ou ramdisk
. Si vous obtenez une
taille de 0 ko, c'est probablement parce que celle-ci a été fixée à 0
par les paramètres du noyau au démarrage. Cela peut être du à une
ligne oubliée dans le fichier de configuration de LILO, du type
ramdisk 0
Cette ligne était incluse dans les fichiers exemples de configuration
de LILO fournis avec d'anciennes distributions, afin d'écraser tout
paramètre modifié du noyau. Depuis la version 1.3.48 c'est inutile,
puisque le paramètre ramdisk_size
du noyau indique maintenant la
taille maximum du disque mémoire, et non pas la taille allouée au
démarrage, aucun disque mémoire n'étant alloué au démarrage.
La solution est de retirer le paramètre ramdisk
de LILO.
A noter que si vous tentez d'utiliser un disque mémoire dont la taille est de 0 ko, vous obtenez un comportement imprévisible pouvant résulter en panique du noyau.
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