Xorg i intel 855GM (i810/i830)
Reading time: 4 – 6 minutes
Actualitzant el portage de la gentoo he vist que s’ha passat d’usar com a servidor gràfic el XFree86 al Xorg. Així doncs per tal de mantenir-me al dia amb els paquets així he fet l’actualització i amb això ha començat el meu nou patiment amb les X’s, sinó que li preguntin al Josevi que ja fa unes setmanes varem estar els dos patint per arreglar el tema. Per tant, aquí intentaré explicar com m’ho he fet per fer funcionar la targeta gràfica del portàtil una intel 855GM amb el servidor gràfic Xorg.
Què diu el sistema de la targeta:
# lspci 0000:00:00.1 System peripheral: Intel Corp. 855GM/GME GMCH Memory I/O Control Registers (rev 02) 0000:00:00.3 System peripheral: Intel Corp. 855GM/GME GMCH Configuration Process Registers (rev 02) 0000:00:02.0 VGA compatible controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02) 0000:00:02.1 Display controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02)
Si voleu més detalls ja sabeu que podeu fer un lspci -v
Com sempre en aquests problemes el millor és començar pel kernel, així que després de llegir documentació de les Xorg i de gentoo, concretament el que m’ha fet decidir ha estat aquest document: Hardware 3D Acceleration Guide on es deia que amb les Xorg s’havia de deixar d’usar el suport DRM del kernel ja que aquest com posa la pròpia documentació del kernel és per XFree86 4.x i no pas per Xorg 6.x
Al fitxer de configuració del kernel he deixat les opcions com es comenten al document, el més important és això:
Processor type and features ---> <*> MTRR (Memory Type Range Register) support Character devices ---> <M> /dev/agpgart (AGP Support) [*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support [ ] Direct Rendering Manager (XFree86 DRI support)
El que el manual de gentoo ens diu és que per tenir suport de DRI/DRM al nostre kernel hem d’instal·lar el paquet x11-base/x11-drm. Per fer-ho us recomano el següent:
- Definir la variable d’entorn: VIDEO_CARDS=”i810″ i després exportar-la: export VIDEO_CARDS. També és una bona idea posar-la al /etc/make.conf, ja que aquesta variable s’usa per saber quins mòduls ha de compilar el paquet x11-drm.
- Instal·lar la versió més nova possible encara que sigui inestable una bona idea per fer això és: echo x11-base/x11-drm ~x86 >> /etc/portage/package.keywords.
- Finalment fem l’emerge: emerge x11-base/x11-drm.
- No us oblideu de carregar el modul després: modprobe i810
Això instal·la els mòduls i810.ko i i830.ko a /lib/modules/2.6.x/x11-drm. En teoria amb això ja tindrem suport DRM/DRI a les X’s.
Si no sabeu com configurar el servidor Xorg la gent de gentoo té aquest document: Guía de configuración del Servidor X. Seguint aquest document per generar el fitxer de configuració de les X’s he fet:
# Xorg -configure
Després l’he provat amb:
# X -config /root/xorg.conf.new
Si voleu que es carregui alguna cosa en aquesta prova, com per exemple un terminal, podeu posar el següent contingut a ~/.xinitrc
xterm &
Si no sabeu com matar el servidor gràfic sense un gestor de finestres una forma una mica radical de fer-ho és amb CONTROL+BACKSPACE (backspace=borrar enrera, no el suprimir). Si el fitxer funciona bé el podeu copiar a /etc/X11/xorg.conf. També us recomano que us mireu el codi ja que sovint la configuració automàtica no és perfecte i es poden millorar algunes coses. Podeu mirar el meu fitxer de configuració on es veu clarament el que el pof i jo hem anat modificant al fitxer xorg.conf.
Ara ja podem llençar les X’s com sempre amb startx si no us carrega bé, assegureu-vos d’haver borrat el ~/.xinitrc.
Malgrat tot el que explico anteriorment el fitxer de logs de les X’s (/var/log/Xorg.0.log) em donen el següent error al carregar:
... (II) I810(0): [drm] drmOpen failed (EE) I810(0): [dri] DRIScreenInit failed. Disabling DRI. ...
La qual cosa em fa pensar que tot i la parafernalia que he fet això no acaba de funcionar massa bé. Però l’important és que ara m’arrenquen les X’s i tot funciona molt més ràpid que abans així que em dono per satisfet. Si algú sap com solucionar aquest error que m’avisi jo no me n’he sortit.