Page suivante Page précédente Table des matières

12. Limite de Linux à 65535 cylindres

L'ioctl HDIO_GETGEO retourne le nombre de cylindres dans un short. Cela signifie que si vous avez plus de 65535 cylindres, le nombre est tronqué, et (pour une configuration SCSI typique avec 1 Mio de cylindres) un disque de 80 Gio peut apparaître comme ne faisant que 16 Gio. Une fois que le problème a été détecté, il est facile de l'éviter.

12.1 Problèmes de l'IDE avec des disques durs de 34 Go et plus

Des unités d'une taille supérieure à 33,8 Go ne fonctionneront pas avec les noyaux antérieurs au 2.3.21. Les détails sont les suivants. Supposez que vous ayez acheté un tout nouveau disque dur IBM-DPTA-373420 qui offre une capacité de 66835440 secteurs (34,2 Go). Les noyaux plus anciens que le 2.3.21 vous diront que la taille est de 769*16*63 = 775152 secteurs (0,4 Go), ce qui est quelque peu étonnant. Et le fait de donner les paramètres hdc=4160,255,63 au démarrage n'aide en rien -- ils sont tout simplement ignorés. Que se passe-t-il ? La routine idedisk_setup() retrouve la géométrie rapportée par le disque dur (qui est 16383/16/63) et écrase ce que l'utilisateur avait demandé sur la ligne de commande, de telle manière que les données de l'utilisateur ne sont utilisées que pour la géométrie du BIOS. La routine current_capacity() ou idedisk_capacity() recalcule le nombre de cylindres comme étant 66835440/(16*63)=66305 mais comme il est stocké dans un short, il devient 769. Comme lba_capacity_is_ok() a détruit id->cyls, tous les appels se solderont par un échec, et la capacité du disque deviendra 769*16*63. Un patch est disponible pour de nombreux noyaux. Un patch pour le 2.0.38 peut être trouvé à ftp.kernel.org. Un patch pour le 2.2.12 peut être trouvé à www.uwsg.indiana.edu (il se peut qu'il faille le modifier un peu pour se débarasser des tags html). Les noyaux 2.2.14 supportent ces disques durs. Dans la série 2.3.* des noyaux, le support pour ces disques existe depuis le 2.3.21. Il est également possible de résoudre ce problème avec une méthode matérielle en positionnant des cavaliers pour limiter la taille à 33,8 Go. Dans la plupart des cas, une mise à jour du BIOS sera nécessaire pour pouvoir démarrer depuis ce disque dur.


Page suivante Page précédente Table des matières