Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 1c8dd3ad2a7f81676a3a01bf6b47f616 > files > 167

howto-sgml-fr-9.0-1mdk.noarch.rpm

<!-- Mini-HOWTO Gros-IDE (gros hideux)                 -->
<!-- aka Large-IDE Mini-HOWTO                          -->
<!-- Ecrit par Patrick LoPresti (patl@lcs.mit.edu)     -->
<!-- Traduction : Herv&eacute; Mignot (mh@lri.fr)      -->

<!doctype linuxdoc system>

<article>

<title>Mini-HOWTO Gros IDE
<subtitle>Ou comment utiliser ces gros hideux sous Linux et DOS
<author>Patrick LoPresti, <tt>patl@lcs.mit.edu</tt>, version
fran&ccedil;aise par Herv&eacute; Mignot
<date> v1.1, 19 Janvier 1995.

<abstract>

Les noyaux des versions de Linux ult&eacute;rieures &agrave; la
version 1.1.40 de Linux g&egrave;rent sans aucune difficult&eacute; de
gros disques IDE (c'est-&agrave;-dire comportant plus de 1024
cylindres). Toutefois, de nombreuses distributions utilisent des
versions de noyau plus anciennes sur leur disque d'installation, et ce
Mini-HOWTO peut donc vous &ecirc;tre utile<footnote>
Il servira surtout aux personnes utilisant conjointement Linux et
MS-DOS, sur une m&ecirc;me machine. En effet, si le BIOS de cette
machine n'est pas un BIOS EIDE, il est n&eacute;cessaire de
proc&eacute;der comme d&eacute;crit dans ce mini-HOWTO pour permettre
une cohabitation tranquille des deux syst&egrave;mes d'exploitation.
(<em>N.D.T.</em>)</footnote>.

</abstract>

<toc>

<sect> Introduction <p>


<p>
Il est possible d'utiliser Linux avec de gros disques durs EIDE sans
aucune restriction. Seuls les cas de DOS et Linux seront
abord&eacute;s dans ce document, mais je pense que l'approche
pr&eacute;sent&eacute;e ici est utilisable avec tout autre
syst&egrave;me d'exploitation.

<p>
J'utilise actuellement la version 1.0.9 du noyau, mais tout ce qui est
dit ici s'applique pareillement jusqu'&agrave; la version 1.1.34.  Les
versions ult&eacute;rieures de Linux g&egrave;rent compl&egrave;tement
les disques EIDE, ce qui r&eacute;duit l'int&eacute;r&ecirc;t de tout
ce qui suit. Je pense toutefois que cela continuera de fonctionner
avec les versions de noyau &agrave; venir, m&ecirc;me si cela devient
inutile.

<sect>Un peu de technique et de terminologie

<p>
Les secteurs des disques ATA (IDE) comportent 512 octets. On peut
adresser un secteur de deux mani&egrave;res&nbsp;: par son adresse
logique (<EM>LBA, Logical Block Address</EM>), qui est un num&eacute;ro
compris entre 0 et le nombre total de secteurs du disque, ou par son
adresse physique qui est un triplet cylindre-t&ecirc;te-secteur
(<EM>CHS, Cylinder-Head-Sector</EM>). Pour convertir des adresses
logiques en adresses physiques, il est n&eacute;cessaire de
conna&icirc;tre la <EM>g&eacute;om&eacute;trie du disque</EM>,
c'est-&agrave;-dire le nombre de t&ecirc;tes par cylindre, le nombre
de secteurs par t&ecirc;te et le nombre de cylindres qu'il comporte.
Ces informations permettent aussi de calculer la taille du disque.

<p>
Les anciens contr&ocirc;leurs et les vieux BIOS ne permettent d'utiliser
que l'adresse physique pour adresser un secteur. Tous les
contr&ocirc;leurs et tous les BIOS permettent d'utiliser l'adresse
physique pour rep&eacute;rer un secteur. Linux manipule le plus souvent
possible des adresses logiques, sauf au plus bas niveau, o&ugrave; il
effectue une conversion de ces adresses en adresses physiques pour
dialoguer avec le contr&ocirc;leur. Linux n'utilise pas le BIOS pour
tout cela, sauf pour d&eacute;terminer la g&eacute;om&eacute;trie du
disque.

<p>
La table des partitions contient les adresses de d&eacute;but et de
fin des partitions sous forme logique ET physique. <em>fdisk</em> sous
DOS et <em>fdisk</em> sous Linux s'attendent bien s&ucirc;r &agrave;
ce que les deux formes soient coh&eacute;rentes entre elles pour
chaque partition.  <em>fdisk</em> sous DOS demande au BIOS la
g&eacute;om&eacute;trie du disque, et <em>fdisk</em> sous Linux la
demande au noyau.

<p>
C'est ici que les choses se corsent. MS-DOS et l'interface BIOS
utilisent un champ de dix bits pour stocker les num&eacute;ros de
cylindre, ne permettant d'utiliser que des num&eacute;ros compris
entre 0 et 1023, ce qui est tout &agrave; fait insuffisant pour les
disques modernes qui comportent habituellement 63 secteurs par
t&ecirc;te, 16 t&ecirc;tes par cylindre, et un tr&egrave;s grand
nombre de cylindres (<em>N.D.T.</em> plus de 2&nbsp;000 pour un disque
de 1&nbsp;Go). La solution pour pouvoir exploiter ces
disques, en d&eacute;pit de cette limitation est une bidouille&nbsp;: un
BIOS EIDE ment au sujet de la g&eacute;om&eacute;trie du disque en
divisant par deux (ou par quatre) le nombre de cylindres et en
doublant (respectivement, en quadruplant) le nombre de
t&ecirc;tes. Quand une requ&ecirc;te comportant une adresse physique
lui arrive, le BIOS consid&eacute;rera que cette requ&ecirc;te utilise
la g&eacute;om&eacute;trie bidon et la convertira pour dialoguer avec
le contr&ocirc;leur du disque. Ce m&eacute;canisme est appel&eacute;
une <em>conversion d'adresse</em>.

<sect>Le probl&egrave;me

<p>
Quand le noyau Linux demande au BIOS la g&eacute;om&eacute;trie du
disque (il se contente en fait de lire les param&egrave;tres CMOS), il
obtiendra une r&eacute;ponse erron&eacute;e indiquant qu'il y a plus
de seize t&ecirc;tes. Mais Linux sait que cela n'est pas possible, et
le noyau (source dans <tt>hd.c</tt>) abandonne et ignore le
disque. (Notons que m&ecirc;me si le BIOS retourne une
g&eacute;om&eacute;trie trafiqu&eacute;e, les requ&ecirc;tes faites au
contr&ocirc;leur de disque doivent se faire conform&eacute;ment
&agrave; la g&eacute;om&eacute;trie r&eacute;elle du
disque. &Eacute;liminer le test effectu&eacute; dans <tt>hd.c</tt> ne
suffit donc pas.)

<sect1>La mauvaise solution

<p>
Une solution est d'utiliser le programme de param&eacute;trage
(<em>setup</em>) du BIOS pour supprimer compl&egrave;tement la
conversion d'adresse. On peut soit fixer soi-m&ecirc;me le nombre de
cylindres/t&ecirc;tes/secteurs conform&eacute;ment &agrave; la
g&eacute;om&eacute;trie du disque, soit simplement inhiber la
conversion d'adresse selon ce que permet son programme de
param&eacute;trage du BIOS.

<p>
Vous pouvez alors repartitionner votre disque dur avec <em>fdisk</em>
sous DOS et/ou sous Linux, puis installer les deux syst&egrave;mes
d'exploitation.  Cela fonctionnera sous r&eacute;serve d'observer les
restrictions suivantes.

<p>
Le probl&egrave;me reste que le BIOS ne peut &ecirc;tre
utilis&eacute; pour acc&eacute;der aux cylindres au-del&agrave; du
1024-i&egrave;me. Toutes vos partitions DOS devront donc se situer
avant cette limite, ainsi que toutes informations auxquelles le BIOS
aura besoin d'acc&eacute;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&eacute;cis&eacute;ment toute la partition racine) se situe avant
cette limite du 1024-i&egrave;me secteur. Linux, lui, acc&egrave;dera
sans probl&egrave;me &agrave; l'int&eacute;gralit&eacute; du disque.

<sect1>La bonne solution

<p>
Les limitations sont toujours g&ecirc;nantes, et nous allons donc nous
d&eacute;brouiller pour les &eacute;viter. Nous devons donc continuer
&agrave; utiliser le m&eacute;canisme de conversion d'adresses et
r&eacute;soudre chacun des probl&egrave;mes que cela engendre.

<p>
Pour r&eacute;soudre le probl&egrave;me au niveau du noyau, nous
allons passer en param&egrave;tre la v&eacute;ritable
g&eacute;om&eacute;trie au noyau gr&acirc;ce &agrave; une ligne
d'option au d&eacute;marrage. Ceci peut se faire &agrave; partir de
l'invite d'initialisation de LILO, en tapant
<tt>&lt;image name&gt;
hd=&lt;nb.&nbsp;cylindres&gt;,&lt;nb.&nbsp;t&ecirc;te&gt;,&lt;nb.&nbsp;secteurs&gt;</tt>.
On peut aussi utiliser un ordre <tt>append=</tt> dans le fichier de
configuration de LILO (<em>lilo.conf</em>) pour que cela se fasse
automatiquement.

<p>
Le noyau peut maintenant reconna&icirc;tre et utiliser le disque, mais
lorsqu'un programme utilisateur (comme <em>fdisk</em> ou le programme
d'installation de LILO) demande au noyau la g&eacute;om&eacute;trie du
disque, le noyau lui renvoie la vraie g&eacute;om&eacute;trie et non
celle obtenue apr&egrave;s conversion. Et donc <em>fdisk</em> sous
Linux (qui interroge le noyau) et <em>fdisk</em> sous DOS (qui
interroge le BIOS) n'utilisent pas la m&ecirc;me
g&eacute;om&eacute;trie, ce qui est tr&egrave;s g&ecirc;nant au niveau
des informations &agrave; placer dans la table des partitions du
disque dur.  De m&ecirc;me, le programme d'installation de LILO
calculera des adresses physiques incompatibles avec ce dont le BIOS
(donc LILO lors du d&eacute;marrage) a besoin.

<p>
Le probl&egrave;me avec <em>fdisk</em> est simple &agrave;
r&eacute;soudre~: lorsque vous lancez <em>fdisk</em> sous Linux,
passez en mode expert, et fixez le nombre de
cylindres/t&ecirc;tes/secteurs aux valeurs utilisables par le
BIOS. Puis &eacute;ditez votre table des partitions et
&eacute;crivez-la, <em>fdisk</em> sous Linux et sous DOS seront
ainsi d'accord.

<p>
Le probl&egrave;me de LILO est aussi simple &agrave; r&eacute;soudre~:
ajouter l'ordre <tt>linear</tt> &agrave; votre fichier
<em>lilo.conf</em>. LILO utilisera alors des adresses logiques et non
des adresses physiques, l'obligeant ainsi &agrave; calculer les
adresses physiques au d&eacute;marrage et non lors de son
installation. C'est donc la g&eacute;om&eacute;trie fournie par le
BIOS qui sera utilis&eacute;e, plut&ocirc;t que celle fournie par le
noyau, et ainsi tout fonctionnera.

<sect1>Exemple r&eacute;sum&eacute;

<p>
Nous disposons d'un disque EIDE d'un giga-octet sur lequel nous allons
installer Linux. Voici comment proc&eacute;der.

<enum>
<item> Noter au niveau du programme de param&eacute;trage
(<em>setup</em>) du BIOS la g&eacute;om&eacute;trie trafiqu&eacute;e
du disque. Par exemple, il est indiqu&eacute; que le disque comporte
525 cylindres, 64 t&ecirc;tes, et 63 secteurs. Comme il n'est pas
possible qu'il y ait plus de seize t&ecirc;tes sur ce disque, on en
d&eacute;duit qu'il comporte en fait 2100 cylindres, 16 t&ecirc;tes
et 63 secteurs.

<item> D&eacute;marrer sous DOS, lancer <tt>fdisk</tt> pour
cr&eacute;er une partition DOS.

<item> &Agrave; partir d'une disquette de d&eacute;marrage de la
Slackware, taper <tt>ramdisk hd=2100,16,63</tt> avant le lancement du
chargement du noyau. Puis lancer <tt>fdisk</tt> (sous Linux). Si on
tape <tt>p</tt>, un tas de messages d'erreur appara&icirc;t.  Passer
en mode expert <tt>x</tt>, fixer le nombre de cylindres &agrave; 525,
le nombre de t&ecirc;tes &agrave; 64. Une fois revenu en mode normal,
si on tape <tt>p</tt> pour voir la liste des partitions, il n'y a plus
d'erreur. Il est alors possible cr&eacute;er ses partitions.
&Eacute;crire la table, puis red&eacute;marrer avec la disquette de la
Slackware (il est conseill&eacute; de red&eacute;marrer la machine
apr&egrave;s avoir modifi&eacute; la table des partitions).

<item> Proc&eacute;der ensuite &agrave; l'installation de la
Slackware, normalement, en cr&eacute;ant (entre autres) un fichier
<tt>lilo.conf</tt> classique.

<item> &Eacute;diter le fichier <tt>lilo.conf</tt> (dans ce cas
<tt>/mnt/etc/lilo.conf</tt>) pour y ajouter les lignes suivantes au
d&eacute;but~:

<verb>
append="hd=2100,16,63"
linear
</verb>

<item> Lancer la commande <tt>lilo -r /mnt</tt>.

<item> Installer, &eacute;ventuellement, si c'est absolument
n&eacute;cessaire, DOS et/ou Windows.
</enum>

<p>
Bonne chance &agrave; tous&nbsp;!

<quote>
Patrick LoPresti
</quote>
<quote>
patl@lcs.mit.edu
</quote>

</article>