Mémoire vidéo en tant que péripherique de stockage
Memoire video en tant que périphérique de stockage
Dépendances noyau:
Vous devez, dans un premier temps, compiler les modules noyau permettant l'exploitation de la mémoire de votre carte. Sur un noyau 2.6 ces derniers sont:
"Device Drivers"-"Memory Technology Devices" and "Device Drivers"-"Memory Technology Devices"-"Caching Block Device access to MTD devices"
"Device Drivers"-"Memory Technology Devices"-"Self-contained MTD Device Drivers"-"Physical System RAM"
Trouver la zone mémoire à utiliser :
Il faut ensuite trouver l'adresse mémoire hexadécimale à partir de laquelle la mémoire de votre carte graphique débute. Pour cela deux méthodes s'offrent à vous :
root@localhost # lspci -vv | less
Trouvez ensuite la partie se référant a votre carte, sur mon T42p j'obtiens ceci:
01:00.0 VGA compatible controller: ATI Technologies Inc M10 NT [FireGL Mobility T2] (rev 80) (prog-if 00 [VGA])
Subsystem: IBM Unknown device 054f
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B+
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium TAbort- TAbort- MAbort- SERR- PERR-
Latency: 66 (2000ns min), Cache Line Size 08
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e0000000 (32-bit, prefetchable) [size=128M] -----
Voici la ligne qui nous interesse. L'adresse est 0xe0000000
Vous pouvez également obtenir cette adresse via le fichier de log de votre serveur Xorg :
root@localhost # grep framebuffer /var/log/Xorg.1.log
(**) fglrx(0): Depth 24, (--) framebuffer bpp 32
(--) fglrx(0): Linear framebuffer (phys) at 0xe0000000
(II) fglrx(0): [drm] framebuffer handle = 0xe0000000
Nous obtenons la encore la valeur 0xe0000000
Vous devez ensuite limiter la mémoire graphique utilisée par votre serveur Xorg et ajouter sa valeur hexadécimale à l'adresse trouvée précedemment. Pour cela, ajoutez la ligne suivante dans le fichier de configuration de Xorg, à savoir /etc/X11/xorg.conf, dans la section concernant votre carte graphique :
VideoRam 4096
Adaptez bien évidemment cette valeur à vos besoins, personnellement ma
résolution est de 1400x1050 avec une profondeur de 16bits. Attention en
limitant ainsi la mémoire utilisée vous désactivez l'utilisation du
module fglrx et donc de l'OpenGL par votre serveur Xorg. Veuillez
également à desactiver votre framebuffer, en effet celui ci utilise la
RAM de votre carte graphique d'où certain problèmes graphiques (écran
partielement ou totalement noir, freeze...) lors de la création du
système de fichier.
Chargement des modules :
Nous allons maintenant charger nos deux modules :
root@localhost # modprobe phram phram=vram,0xe0400000,124Mi.
Pour information voici la syntaxe utilisée : modprobe phram phram=nom","adresse_de_depart","taille". Ici notre adresse de départ est 0xe0000000 plus nos 4Mo (4 086) de Xorg soit 0xe0400000. Ma carte graphique disposant de 128Mo, nous créons ici un peripherique de 128-4 soit 124Mo.
Chargeons ensuite le module nous permettant l'exploitation du péripherique precedement créé via la commande :
root@localhost # modprobe mtdblock
Utilisation de notre peripherique:
Et voila nous disposons d'un nouveau périphérique fraichement créé : /dev/mtdblock0.
Vous pouvez l'utiliser comme un périphérique de stockage "normal" ou comme une swap. Pour rappel les taux de transfert en AGP4x sont de 1Go/s théoriques et de 2Go/s en AGP8x. Le PCI-Express offre quand à lui du 8Go/s.
La création d'un système de fichier se fait comme d'habitude : mkfs.ext3 /dev/mtdblock0.