$Revision: 1.15 $
$Date: 2004/01/19 10:15:38 $
Ce document explique comment nous avons installé un gros disque dur EIDE (Seagate Barracuda ST380021A de 80 Go) sur un ordinateur ancien (Pentium à 166 Mhz d'occasion, avec une carte mère ASUS P/1-P55T2P4) pour créer un serveur de sauvegarde. Le BIOS installé sur les ordinateurs de cette génération ne gère pas les disques de grande taille. Une fois le disque monté, l'ordinateur peut rester bloqué au démarrage. C'est ce qui nous est arrivé avec un BIOS Award datant de 1998. Des solutions sont décrites ci-dessous.
Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License). [Explications]
Vérifier que les cavaliers qui définissent le statut des disques durs (master/slave) sont bien en place. Objectif : être certain que le problème est lié à la taille du disque. Sinon, ça finira par être crispant.
Mettre à jour le BIOS en le flashant. Chercher une mise à jour sur le site du fabricant de la carte mère de l'ordinateur (Asus P55T2P4 dans notre cas). Dans la foulée, récupérer la doc de la carte mère. Les docs sont souvent téléchargeables au format PDF. (Nous avons découvert que la mise à jour la plus récente pour cette carte mère date de 1998 et qu'elle a déjà été installée sur l'ordinateur.)
Essayer de démarrer avec autodétection des disques. C'est le paramétrage par défaut dans les BIOS, en général.
Démarrer en déclarant dans le BIOS que le disque n'est pas là. Voir dans la doc de la carte mère si d'autres paramètres sont proposés.
Essayer de désactiver la détection automatique des disques en appuyant sur F4 au démarrage (source : section 11.3 du Linux Large Disk Howto).
Vous pouvez essayer de désactiver un des canaux EIDE dans le BIOS. Regarder dans Chipset Features Setup > Onboard PCI ID Enable > choisir Primary ou Secondary, selon le canal à conserver. Par défaut, les deux canaux sont activés (Both). Dans notre cas, l'opération semblait fonctionner (l'ordinateur démarrait sans problème), mais ensuite Linux n'a pas reconnu le disque.
Démarrer en entrant des valeurs à la main dans le BIOS
- Avec les "vraies" valeurs (celles indiquées sur le disque)
- Avec C/H/S = 4092/16/93 (2,11 Go, juste pour voir)
- Avec C/H/S = 16383/16/63 (8,4 Go, pour voir aussi)
- Avec C/H/S = 65535/16/63 (env. 32 Go, la limite qui nous intéresse)
Voir si un cavalier ne permet pas de sélectionner le nombre de têtes du disque (source : section 11.2 du Linux Large Disk Howto).
Voir si le disque est équipé d'un cavalier qui permette de
limiter (clipping) à environ 30 Go la capacité totale
détectée. Voir s'il est ensuite possible de réactiver
la capacité réelle ensuite au niveau de Linux (section 11.3
du Linux Large Disk
Howto).
Apparemment, avec certaines marques (IBM) c'est une limite dure, avec d'autres
(Maxtor) c'est une limite modifiable. Avec notre disque Seagate Barracuda,
la limite était également modifiable. Nous avons recompilé
le noyau (2.4.19) en activant l'option Auto-Geometry
resizing support de la section IDE, ATA and ATAPI
block device (CONFIG_IDEDISK_STROKE). Au redémarrage,
la capacité totale du disque a été reconnue, bien que
le cavalier soit toujours en place.
Voir si le site du fabricant du disque ne propose pas un utilitaire qui s'installe dans le MBR (Master Boot Record) et permet de gérer les disques de grande taille. Si c'est le cas, LILO ne doit pas être installé dans le MBR, sinon il écrase l'utilitaire. Il faudra quand même utiliser le cavalier pour limiter la capacité du disque, car l'ordinateur bloque au stade du BIOS, avant de lancer les périphériques ; l'utilitaire installé dans le MBR ne peut donc rien y faire.
Avec le cavalier, si la limite de 32 Go est une limite dure (pas récupérable
au niveau du système), monter temporairement le disque dans une autre
machine et définir une limite "molle" avec l'utilitaire
setmax (voir la section 11.3 du Linux Large Disk
Howto
; faire une recherche complémentaire sur cet utilitaire avant de
l'appliquer, par sécurité).
Si ça ne marche toujours pas, voir du côté des contrôleurs EIDE supplémentaires. Ces cartes ont leur propre BIOS (qui prend en charge les grands disques, si la carte est récente).
Nous avons exploré pas mal de pistes, mais la solution était finalement simple :
Mettre en place le cavalier qui limite la capacité du disque à 32 Go et démarrer. L'ordinateur démarre correctement ; Linus reconnaît un disque avec une capacité limitée.
Recompiler le noyau (version 2.4.19 ou ultérieure) activant l'option
Auto-Geometry resizing support de la section IDE,
ATA and ATAPI block device (option CONFIG_IDEDISK_STROKE
du fichier .config). Installer le nouveau noyau et redémarrer.
A ce stade, Linux reconnaît la capacité réelle du disque.
Elle est indiquée dans les messages de démarrage et peut être
vérifiée en exécutant cfdisk /dev/hdX
(où X est le numéro du disque). Le disque peut
ensuite être partionné et formaté.
$Id: index.html,v 1.15 2004/01/19 10:15:38 alex Exp $
http://www.gabuzomeu.net/alex/doc/disque/index.html
courrier électronique | e-mail Alexandre Ratti