Quand le noyau Linux demande au BIOS la géométrie du
disque (il se contente en fait de lire les paramètres CMOS), il
obtiendra une réponse erronée indiquant qu'il y a plus
de seize têtes. Mais Linux sait que cela n'est pas possible, et
le noyau (source dans hd.c
) abandonne et ignore le
disque. (Notons que même si le BIOS retourne une
géométrie trafiquée, les requêtes faites au
contrôleur de disque doivent se faire conformément
à la géométrie réelle du
disque. Éliminer le test effectué dans hd.c
ne
suffit donc pas.)
Une solution est d'utiliser le programme de paramétrage (setup) du BIOS pour supprimer complètement la conversion d'adresse. On peut soit fixer soi-même le nombre de cylindres/têtes/secteurs conformément à la géométrie du disque, soit simplement inhiber la conversion d'adresse selon ce que permet son programme de paramétrage du BIOS.
Vous pouvez alors repartitionner votre disque dur avec fdisk sous DOS et/ou sous Linux, puis installer les deux systèmes d'exploitation. Cela fonctionnera sous réserve d'observer les restrictions suivantes.
Le problème reste que le BIOS ne peut être utilisé pour accéder aux cylindres au-delà du 1024-ième. Toutes vos partitions DOS devront donc se situer avant cette limite, ainsi que toutes informations auxquelles le BIOS aura besoin d'accéder. Ainsi, LILO utilise le BIOS pour faire le sale boulot et donc, si vous voulez utiliser LILO pour lancer Linux, vous devez vous assurer que le noyau (plus précisément toute la partition racine) se situe avant cette limite du 1024-ième secteur. Linux, lui, accèdera sans problème à l'intégralité du disque.
Les limitations sont toujours gênantes, et nous allons donc nous débrouiller pour les éviter. Nous devons donc continuer à utiliser le mécanisme de conversion d'adresses et résoudre chacun des problèmes que cela engendre.
Pour résoudre le problème au niveau du noyau, nous
allons passer en paramètre la véritable
géométrie au noyau grâce à une ligne
d'option au démarrage. Ceci peut se faire à partir de
l'invite d'initialisation de LILO, en tapant
<image name>
hd=<nb.~cylindres>,<nb.~tête>,<nb.~secteurs>
.
On peut aussi utiliser un ordre append=
dans le fichier de
configuration de LILO (lilo.conf) pour que cela se fasse
automatiquement.
Le noyau peut maintenant reconnaître et utiliser le disque, mais lorsqu'un programme utilisateur (comme fdisk ou le programme d'installation de LILO) demande au noyau la géométrie du disque, le noyau lui renvoie la vraie géométrie et non celle obtenue après conversion. Et donc fdisk sous Linux (qui interroge le noyau) et fdisk sous DOS (qui interroge le BIOS) n'utilisent pas la même géométrie, ce qui est très gênant au niveau des informations à placer dans la table des partitions du disque dur. De même, le programme d'installation de LILO calculera des adresses physiques incompatibles avec ce dont le BIOS (donc LILO lors du démarrage) a besoin.
Le problème avec fdisk est simple à résoudre~: lorsque vous lancez fdisk sous Linux, passez en mode expert, et fixez le nombre de cylindres/têtes/secteurs aux valeurs utilisables par le BIOS. Puis éditez votre table des partitions et écrivez-la, fdisk sous Linux et sous DOS seront ainsi d'accord.
Le problème de LILO est aussi simple à résoudre~:
ajouter l'ordre linear
à votre fichier
lilo.conf. LILO utilisera alors des adresses logiques et non
des adresses physiques, l'obligeant ainsi à calculer les
adresses physiques au démarrage et non lors de son
installation. C'est donc la géométrie fournie par le
BIOS qui sera utilisée, plutôt que celle fournie par le
noyau, et ainsi tout fonctionnera.
Nous disposons d'un disque EIDE d'un giga-octet sur lequel nous allons installer Linux. Voici comment procéder.
fdisk
pour
créer une partition DOS.
ramdisk hd=2100,16,63
avant le lancement du
chargement du noyau. Puis lancer fdisk
(sous Linux). Si on
tape p
, un tas de messages d'erreur apparaît. Passer
en mode expert x
, fixer le nombre de cylindres à 525,
le nombre de têtes à 64. Une fois revenu en mode normal,
si on tape p
pour voir la liste des partitions, il n'y a plus
d'erreur. Il est alors possible créer ses partitions.
Écrire la table, puis redémarrer avec la disquette de la
Slackware (il est conseillé de redémarrer la machine
après avoir modifié la table des partitions).
lilo.conf
classique.
lilo.conf
(dans ce cas
/mnt/etc/lilo.conf
) pour y ajouter les lignes suivantes au
début~:
append="hd=2100,16,63" linear
lilo -r /mnt
.
Bonne chance à tous~!
Patrick LoPresti
patl@lcs.mit.edu
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