Apportez votre aide…
libATA
La libATA est une bibliothèque pour le noyau linux introduite lors de la version 2.6.18. Elle est censée permettre de gérer tous les transferts ATA et ATAPI via le sous-système SCSI.
C'est « grâce » à elle que vos partitions apparaissent sous la forme /dev/sdX au lieu de /dev/hdX depuis qu'Ubuntu a fait le choix d'utiliser les modules liés à cette bibliothèque par défaut. C'est aussi à cause d'elle que vous rencontrez peut-être des performances catastrophiques, des problèmes de prise en charge du DMA, ou autre option traditionnellement activée par hdparm.
Cette page a pour but de recenser quelques solutions face aux problèmes que peuvent engendrer l'utilisation de cette bibliothèque.
Diagnostic
Faux problème
Vous avez décidé d'activer le DMA et la prise en charge de l'I/O 32bits (ou tout autre option) sur votre disque dur (ou votre graveur DVD), en utilisant la commande hdparm. Et là, c'est le drame :
sudo hdparm -d1 -c1 /dev/sda
/dev/sda: setting 32-bit IO_support flag to 1 HDIO_SET_32BIT failed: Invalid argument IO_support = 0 (default) (16-bit) HDIO_GET_DMA failed: Inappropriate ioctl for device
Pas d'inquiétude : la libATA active par défaut le DMA sur tous les périphériques compatibles. La prise en charge de l'I/O 32bits n'est pour l'instant disponible que sur un nombre limité de périphériques, et ce n'est pas la priorité des développeurs de la libATA, car les situations où le besoin s'en fait sentir sont relativement rares. Lorsque c'est possible, cette option est également activée par défaut.
Vrai problème
Si votre disque est lent, si la lecture d'un DVD est saccadée, s'il vous faut plusieurs heures pour graver quelques centaines de Mo, alors vous avez peut-être réellement un problème avec la libATA. Commencez par effectuer le test suivant sur le périphérique problématique (dans cet exemple, /dev/sda) :
sudo hdparm -T /dev/sda
Si le résultat est de plusieurs centaines de Mo par seconde, votre problème est ailleurs. En revanche, si le résultat donne quelques Mo voire des centaines de ko par seconde, alors votre problème vient vraisemblablement de la libATA : votre matériel n'est pas (encore) correctement pris en charge. C'est en particulier vrai pour les cartes mères Intel fonctionnant en mode « combiné ».
Solutions
Il existe plusieurs solutions préconisées. Elles sont présentées ici par ordre (supposé) de préférence de la part des développeurs de la libATA. Si l'une d'elle ne fonctionne pas, passez à la suivante.
Elles sont surtout valables pour les cartes mères Intel proposant le mode « combiné », qui permet aux modes PATA (comprendre IDE) et SATA de fonctionner comme une seule fonction PCI, mais entre en conflit avec la libATA, les pilotes IDE et la libATA essayant de gérer le même matériel. Le principe est donc de n'utiliser soit QUE la libATA, soit QUE les pilotes IDE.
Dans le BIOS
Modifiez dans votre BIOS l'option mode IDE de legacy ou combined en AHCI, RAID ou native.
Dans Grub
Essayez de démarrer Grub en ajoutant à la ligne kernel le paramètre combined_mode=libata ou le paramètre combined_mode=ide, afin de permettre à l'un ou l'autre des pilotes libata/ide de prendre en charge tous les ports IDE.
Désactiver libATA
Par les modules
Désactiver les modules liés à la libATA. Dans le fichier /etc/modprobe.d/blacklist, ajouter les lines suivantes (toutes ne sont pas forcément nécessaires, vous pouvez faire des tests si vous le souhaitez) :
blacklist pata_atiixp blacklist pata_acpi blacklist sg blacklist sr_mod blacklist sd_mod
Par le noyau
Vous pouvez également recompiler le noyau en désactivant complètement la libATA (CONFIG_ATA) et en activant CONFIG_BLK_DEV_IDE_SATA.
Alternative par le noyau
Alternativement, vous pouvez désactiver complètement CONFIG_IDE, et autoriser la libATA à diriger tous vos ports IDE et SATA.
Liens
- (en) Site officiel
- (en) Wiki libATA