Page suivantePage pr�c�denteTable des mati�res

9. Cons�quences

Qu'est-ce que tout cela signifie ? Pour les utilisateurs de Linux seulement une chose : qu'ils doivent s'assurer que LILO et fdisk utilisent la bonne g�om�trie, o� 'bonne' pour fdisk est d�finie comme la g�om�trie utilis�e par les autres syst�mes d'exploitation sur le m�me disque dur et pour LILO comme la g�om�trie qui va permettre des �changes valides avec le BIOS au moment du d�marrage (en g�n�ral les deux vont de pair).

Comment fdisk conna�t-il la g�om�trie ? Il demande au noyau en utilisant l'ioctl HDIO_GETGEO. Mais l'utilisateur peut passer outre cela en pr�cisant la g�om�trie de mani�re interactive, ou sur la ligne de commande.

Comment LILO conna�t-il la g�om�trie ? Il demande au noyau en utilisant l'ioctl HDIO_GETGEO. Mais l'utilisateur peut passer outre cela en utilisant l'option 'disk=' dans le fichier /etc/lilo.conf (voyez la page de manuel lilo.conf(5)). On peut �galement passer l'option linear � LILO, il va alors stocker des adresses LBA � la place des CHS dans son fichier 'map' et retrouvera la g�om�trie � utiliser au moment du d�marrage (en utilisant la fonction 8 de INT13 pour conna�tre la g�om�trie du disque dur).

Comment le noyau sait-il r�pondre ? Eh bien, en tout premier lieu, l'utilisateur doit avoir sp�cifi� de mani�re explicite, soit � la main soit par l'interm�diaire du chargeur d'amorce, la g�om�trie avec la commande en ligne du noyau 'hda=cyls,t�tes,secs' (voyez la page de manuel bootparam(7)). Par exemple, vous pouvez demander � LILO de fournir une telle option en ajoutant une ligne 'append="hda=cyls,t�tes,secs"' dans le fichier /etc/lilo.conf (voyez la page de manuel de lilo.conf(5)). Sinon, le noyau devra deviner, probablement en se servant des valeurs obtenues � partir du BIOS ou du mat�riel lui-m�me.

Il est possible (depuis Linux 2.1.79) de changer l'id�e qu'a le noyau de la g�om�trie en utilisant le syst�me de fichiers /proc. Par exemple :

# sfdisk -g /dev/hdc
/dev/hdc: 4441 cylinders, 255 heads, 63 sectors/track
# cd /proc/ide/ide1/hdc
# echo bios_cyl:17418 bios_head:128 bios_sect:32> settings
# sfdisk -g /dev/hdc
/dev/hdc: 17418 cylinders, 128 heads, 32 sectors/track
#
Ceci est particuli�rement utile si vous avez besoin d'un nombre tel de param�tres sur la ligne de commande, que LILO est d�pass� (ce qui n'est pas difficile � accomplir).

Comment le BIOS conna�t-il la g�om�trie ? L'utilisateur peut l'avoir donn�e dans la configuration du CMOS. Peut-�tre aussi que la g�om�trie est lue depuis le disque et convertie comme pr�cis� dans la configuration. Dans le cas de disques SCSI, o� il n'y a pas de g�om�trie, celle que le BIOS doit inventer peut �galement �tre pr�cis� via des cavaliers ou des param�tres de configuration (par exemple, les contr�leurs Adaptec ont la possibilit� de choisir entre les valeur habituelles H=64, S=32 et les 'conversions �tendues' H=255, S=63). Parfois, le BIOS lit la table des partitions pour savoir quelle �tait la g�om�trie du disque au moment du dernier partitionnement. -- ceci implique l'hypoth�se qu'une table des partitions valide est pr�sente quand il y a une signature 55aa. Ceci est plut�t positif puisque il est alors possible de d�placer les disques de machine en machine. Mais le fait que le comportement du BIOS d�pende du contenu du disque peut �galement �tre la source d'�tranges probl�mes. Par exemple, il a �t� rapport� qu'un disque de 2,5 Go �tait reconnu comme ayant une capacit� de 528 Mo � cause du BIOS qui lisait la table des partitions et d�duisait qu'il pouvait utiliser des valeurs CHS non converties. Un autre effet de ce comportement peut �tre lu dans ce rapport : des disques non partitionn�s �taient plus lents que des disques partitionn�s, ceci � cause du BIOS qui testait des modes 32 bits en lisant le MBR et en voyant qu'il poss�dait effectivement une signature 55aa.

Comment le disque conna�t-il la g�om�trie ? En fait, le fabricant invente une g�om�trie qui, � un facteur pr�s, donne la bonne capacit�. De nombreux disques ont des cavaliers qui permettent de modifier la g�om�trie qu'ils donnent. Ceci permet d'�viter les bugs des BIOS. Par exemple, tous les disques IBM permettent � l'utilisateur de choisir entre 15 et 16 t�tes et de nombreux fabricants ajoutent des cavaliers pour permettre de faire croire que le disque est plus petit que 2,1 Go ou 33,8 Go. Vous pouvez �galement lire la partie sur les cavaliers plus bas. Parfois, certains utilitaires permettent de changer le micro-code du disque dur.

9.1 Calcul des param�tres de LILO

Parfois il est utile de forcer une certaine g�om�trie en ajoutant 'hda=cyls,t�tes,secs' � la ligne de commande du noyau. On voudra pratiquement toujours secs=63 et le but recherch� en ajoutant cela est de sp�cifier t�tes. (Des valeurs raisonnables de nos jours sont t�tes=16 et t�tes=255.) Que devra-t-on mettre pour cyls ? Pr�cis�ment le nombre qui donnera la bonne capacit� totale de C*H*S secteurs. Par exemple, pour un disque dur avec 71346240 secteurs (36529274880 octets) on calculera C comme �tant 71346240/(255*63)=4441 (par exemple en utilisant le programme bc) et on donnera le param�tre de d�marrage hdc=4441,255,63. Comment conna�t-on la capacit� totale exacte ? Par exemple,

# hdparm -g /dev/hdc | grep sectors
 geometry     = 4441/255/63, sectors = 71346240, start = 0
# hdparm -i /dev/hdc | grep LBAsects
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=71346240
donne deux mani�res de trouver le nombre total de secteurs 71346240. Les noyaux r�cent donnent �galement la taille pr�cise dans les messages de d�mararge :
# dmesg | grep hde
hde: Maxtor 93652U8, ATA DISK drive
hde: 71346240 sectors (36529 MB) w/2048KiB Cache, CHS=70780/16/63
 hde: hde1 hde2 hde3 < hde5> hde4
 hde2: <bsd: hde6 hde7 hde8 hde9>
Les noyaux plus anciens donnent simplement les Mo et CHS. En g�n�ral la valeur CHS et arrondie � l'entier inf�rieur, ce qui, pour la sortie ci-dessus, nous donnerait au moins 70780×16×63=71346240 secteurs. Dans cet exemple, il se trouve que ce sont les valeurs pr�cises. La valeur en Mo peut �tre arrondie au lieu d'�tre tronqu�e et peut, dans les vieux noyaux, �tre en unit�s 'binaire' (Mio) plut�t que d�cimale. Remarquez la correspondance entre la taille en Mo donn�e par le noyau et le num�ro de mod�le du Maxtor. �galement, dans le cas des disques SCSI, le nombre pr�cis de secteurs est donn� dans les message de d�marrage du noyau :
SCSI device sda: 17755792 512-byte hdwr sectors (9091 MB)


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:42