Le plus simple est peut-être de récupérer un noyau de la distribution Slackware de votre crêmerie la plus proche. Les noyaux de la Slackware sont des noyaux standards qui tentent d'inclure le plus de pilotes possibles. Si vous avez un contrôleur SCSI ou IDE, vous avez des chances de les trouver là.
Allez dans le répertoire a1
et choisissez sun noyau IDE ou SCSI,
selon le type de contrôleur que vous avez. Vérifiez dans le fichier
xxxxkern.cfg
si les pilotes nécessaires sont inclus ; si c'est le
cas, récupérez donc xxxxkern.tgz
, installez-le comme décrit plus haut
sur la disquette d'amorce.
(( NDT : vous pouvez trouver d'autres noyaux dans
XXXX/distributions/slakinst/kernels/*
dont la liste des périphériques contenus est cette fois dans le
config.in
. D'autre part les noyaux de la Slackware ne sont pas
forcement investis de super-pouvoirs, donc le noyau que vous compilez
vous-même fera sûrement l'affaire )).
Vous devez alors vérifier le périphérique racine du noyau, en
utilisant la commande rdev
:
rdev vmlinuz
rdev
affichera alors la racine du noyau. Si ce n'est pas
celle que vous voulez, utilisez encore une fois rdev pour la
changer. Par exemple, le noyau que j'ai essayé avait pour racine
/dev/sda3
, mais ma partition scsi racine était
/dev/sda8
. Pour utiliser une disquette comme racine, vous aurez à
utiliser la commande :
rdev vmlinuz /dev/fd0
Si vous voulez aussi savoir comment créer une disquette racine Slackware, c'est hors du sujet de ce document~; je suggère donc que vous vous référiez au Linux Install Guide ((NdT: dont le titre de la version française par René Cougnenc est Bien débuter sous Linux)), ou aux fichiers de la distribution Slackware. Voyez la section intitulée "Références".
Pour une disquette sans système de fichiers, copiez simplement le noyau
sur votre disquette d'amorce avec dd
; sinon, pour une disquette
amorce/racine, utilisez cp
. Référez-vous à la section de ce
document intitulée "Amorce" pour des détails sur la création d'une
disquette d'amorce. La description s'applique aussi bien à la mise à
jour d'un noyau sur une disquette d'amorce.
Ce n'est pas vraiment un sujet de ce document, mais la question est posée si souvent ! Donc voilà, sous DOS utilisez :
FDISK /MBR
MBR signifie Master Boot Record, et il remplace le secteur d'amorce par celui de DOS, sans toucher à la table des partitions. Certains puristes ne sont pas d'accord, mais même l'auteur de LILO, Werner Almesberger le suggère. C'est simple et efficace.
Vous pouvez aussi utiliser la commande dd
pour copier
l'archive qu'a faite LILO du secteur d'amorce ; voir la documentation
de LILO.
Si vous n'avez pas de disquette d'amorce, la méthode la plus simple est de récupérer un noyau de la Slackware pour votre type de contrôleur (IDE ou SCSI) comme décrit précédemment dans "Comment faire une disquette d'amorce avec un pilote XXX ?". Vous pouvez même démarrer votre système avec ce noyau, et réparer les dommages.
Le noyau que vous obtiendrez peut ne pas avoir le périphérique racine
pointant sur la bonne partition chez vous. Par exemple, le noyau
standard SCSI de la Slackware pointe sur /dev/sda2
. Chez moi ma
partition racine est /dev/sda8
. Dans ce cas cela doit être changé.
Vous pouvez toujours changer le périphérique racine et les options disque mémoire du noyau, même si tout ce que vous avez est un noyau et un autre système d'exploitation comme DOS.
rdev
change les paramètres du noyau en modifiant les valeurs à des
emplacements fixes du fichier contenant le noyau. Vous pouvez faire de
même avec un éditeur hexadécimal, quel que soit le système
d'exploitation que vous utilisez. Par exemple "Norton Utilities
Disk Editor" sous DOS. Vous vérifierez et, le cas échéant, modifierez
les octets du noyau aux endroits suivants :
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 - cf plus bas
0X01FD Numero de peripherique, majeur - cf plus bas
La taille du disque mémoire est le nombre de blocs du disque virtuel en mémoire à créer. Si vous voulez amorcer avec une disquette racine, fixer celle-ci à 1440 en base 10, c'est-à-dire 0x05A0 : donc mettez l'octet 0x01F8 du fichier à 0xA0 et celui en 0x01F9 à 0x05. Ceci réservera assez d'espace pour une disquette.
Le numéros de périphérique majeurs et mineurs doivent être ceux du périphérique contenant votre disquette racine. Des valeurs utiles :
peripherique majeur mineur
/dev/fd0 2 0 premier lecteur de disquette
/dev/hda1 3 1 partition 1 du 1er disque IDE
/dev/sda1 8 1 partition 1 du 1er disque SCSI
/dev/sda8 8 8 partition 8 on 1er disque SCSI
Une fois que vous avez fixé ces paramètres, vous pouvez écrire le
fichier sur une disquette en utilisant soit "Norton Utilities Disk
Editor", soit un programme appelé rawrite.exe
. Ce programme est
inclus dans plusieurs distributions dont la SLS et la Slackware. C'est
un programme DOS qui copie un fichier sur une disquette "brute", en
commençant par le secteur d'amorce, au lieu de l'écrire sur le système
de fichier. Si vous utilisez "Norton
Utilities", vous devez écrire le fichier sur une disquette physique
commençant au début de la disquette.
Il n'est pas souhaitable de n'avoir qu'un seul jeu de disquettes de secours. 2 ou 3 doivent être conservées au cas où l'une d'entre elles serait illisible.
Le moyen le plus simple de faire des copies de disquettes, y compris
pour les disquettes amorce et les disquettes utilitaires, est
d'utiliser dd
pour copier le contenu de la disquette dans un fichier
sur votre disque dur, puis d'utiliser ce même fichier pour faire la
copie dans l'autre sens avec une disquette différente.
Pour copier l'original, utilisez la commande :
dd if=<peripherique> of=<nom de fichier>
ou <peripherique> = nom du peripherique du lecteur
de disquette
et <nom de fichier> = nom du fichier que vous
voulez copier
Par exemple, pour copier /dev/fd0
dans un fichier appelé
/tmp/disquette.copie
, on utilisera
dd if=/dev/fd0 of=/tmp/disquette.copie
Sans le paramètre count
, comme ici, ceci
signifie qu'une disquette entière de 2880 blocs (3 1/2 haute densité) sera
copiée.
Pour copier le fichier obtenu sur une nouvelle disquette, mettez la nouvelle disquette dans le lecteur et utilisez la commande inverse :
dd if=<nom de fichier> of=<peripherique>
Remarquez que j'ai supposé qu'il n'y avait qu'un seul lecteur de disquette. Si vous en avez deux de même type, vous pouvez copier des disquettes en utilisant :
dd if=/dev/fd0 of=/dev/fd1
Quand un périphérique disque n'est pas détecté automatiquement, il est nécessaire de fournir au noyau une liste de paramètres comme :
aha152x=0x340,11,3,1
Cette liste de paramètres peut être fournie de plusieurs manières avec
LILO :
lock
de LILO pour que celui-ci
enregistre la ligne de commande comme étant celle par défaut. Elle
sera alors utilisée à chaque démarrage (sauf si l'utilisateur en entre
une autre).APPEND
dans le fichier de
configuration de LILO. Attention, la liste des paramètres doit être
mise entre guillemets (").Un exemple de ligne de commande utilisant une liste de paramètres :
vmlinux aha152x=0x340,11,3,1 root=/dev/sda1 lock
Ceci passera la liste des paramètres périphériques ainsi que le
périphérique racine à utiliser (/dev/sda1
) au noyau. La ligne
de commande sera aussi conservée et utilisée dans tous les démarrages
ultérieurs.
Un exemple de commande APPEND
est :
APPEND = "aha152x=0x340,11,3,1"
Notez que que la liste des paramètres NE doit PAS être entre
guillemets sur la ligne de commande, mais DOIT l'être dans
la commande APPEND
.
Notez aussi que pour que la liste des paramètres soit effective, le
noyau doit contenir le pilote approprié. Sinon les
paramètres ne serviront à rien. Vous devrez recompiler le noyau pour
inclure le pilote requis. Pour des détails sur la recompilation du
noyau, voyez dans /usr/src/linux
le fichier README
,
lisez la FAQ Linux, et l'Installation-HOWTO (( et le Kernel-HOWTO
)). Ou bien vous vous procurerez un noyau adéquat pour vos
périphériques.
Les lecteurs sont fortement invités à lire la documentation de LILO
avant de s'essayer à l'installation de LILO. Une utilisation sans
précaution de la commande BOOT
peut endommager les partitions.
((NdT: section ajoutée.
En supposant que vous ayez amorcé sur une disquette, que votre
partition racine soit votre disquette, et que vous puissiez monter
votre partition disque ex-partition racine par exemple
sur /mnt
.
C'est ce qui se passe si vous essayez de récupérer une partition racine sur le disque dont un des fichiers vitaux manque pour amorcer.
Vous pouvez bien sûr exécuter directement un programme de votre
partition racine, par exemple /mnt/usr/local/bin/mlist
. Ou
vous pouvez ajouter /mnt/bin
, /mnt/usr/bin
, ... à
votre variable d'environnement PATH
. Mais il y a des chances
pour qu'un programme qui recherche des fichiers dans /usr/lib
par exemple ne fonctionne pas directement (ex: l'éditeur emacs
).
Une solution est d'utiliser chroot
pour lancer un programme
en changeant sa partition racine. Par exemple~:
( cd /mnt ; /mnt/usr/sbin/chroot /mnt /usr/bin/emacs /etc/fstab )
lancera chroot
supposé être ici dans /usr/sbin
de la
partition disque, qui d'abord fixera la racine du programme à /mnt
:
alors tous les accès au système de fichiers ajouteront /mnt
aux chemins
spécifiés. Ainsi lorsque chroot
lancera l'exécution de son
deuxième argument /usr/bin/emacs
, le noyau Linux traduira
celui-ci en /mnt/usr/bin/emacs
. De même lorsque l'éditeur
emacs
lancé avec l'argument /etc/fstab
, essayera
d'ouvrir ce fichier, le système traduira le chemin du fichier en
/mnt/etc/fstab
.
Il peut-être utile de lancer quelque chose comme :
( cd /mnt ; /mnt/usr/sbin/chroot /mnt /bin/bash -login )
qui permet d'avoir bash
comme sur son ancien système, ou encore :
( cd /mnt ; /mnt/usr/sbin/chroot /mnt /sbin/agetty 38400 tty7 )
qui permet d'avoir un "login:" comme sur son ancienne partition racine,
sur la console 7 (taper Alt-F7
). (7 étant une console sur
laquelle il n'y a pas déjà de "login:", à remplacer par un nombre
adéquat chez vous).
))
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