Kernel Mode-Setting con Intel 945GM en Debian

Hoy dediqué unos minutos a probar Kernel Mode-Setting en el Debian de la laptop, aprovechando que tiene una placa de video Intel Mobile 945GM/PM/GM, que según dicen funciona razonablemente bien para KMS.

El sistema operativo de la laptop es casi en su totalidad Debian Lenny, salvo por OpenOffice, que es el 3.1 de experimental, por lo que no quería meter demasiados paquetes de otros repositorios.

Para arrancar, hace falta un kernel bastante nuevo. En inestable está el 2.6.29 que para esto viene muy bien. De paso trae soporte para ext4 y btrfs.

Posteriormente, algún servidor X.org más o menos reciente: xorg, xserver-xorg 7.4 y xserver-xorg-core 1.6.1 de unstable, más las dependencias que correspondieron (xserver-xorg-input-*, xserver-xorg-video-*, hal, console-setup, etc.).

También es necesario un driver de video intel actualizado: xserver-xorg-video-intel 2.7.0, con libdrm-intel1 y libdrm2, todo de sid. Y finalmente, para no perder la aceleración 3d, hay que actualizar libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa y mesa-utils a la versión 7.4.

Luego de reiniciar con kernel 2.6.29 (aunque no es necesario, conviene para ver que todo ande correctamente) el pegamento que une a toda esta mezcla es crear un nuevo initrd con KMS habilitado desde el inicio, para ello, en el archivo /etc/initramfs-tools/modules hay que agregar.

# Enable Kernel Modesetting
intel_agp
drm
i915 modeset=1

Y luego regenerar el initramfs:

# update-initramfs -k `uname -r` -u

tal como se especifica en la Debian Wiki.

Como ultimo paso antes de reiniciar con KMS activado hay que editar el archivo de configuración xorg.conf, comentando todas las líneas (todas) o directamente creando un archivo xorg.conf de tamaño cero (previo backup por supuesto) pues ahora el servidor X trata de autodetectar los dispositivos existentes.

# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.pre-kms
# rm /etc/X11/xorg.conf

Y listo. Reinicio y arriba KMS.

Con aceleración UXA, compiz y todo, la interfaz gráfica se siente realmente mucho más liviana, incluso mejor que sin compiz en el driver anterior, y el cambio entre terminales y la gráfica es casi imperceptible.

La verdad, es una maravilla. Mis felicitaciones a todos los que metieron código para hacer posible este avance. Esperemos que llegue pronto a las restantes placas de video.

Peticion para que NVIDIA libere documentación de sus productos de gráficos

Un grupo de comprometidos usuarios de software libre ha lanzado una petición para que NVIDIA libere documentación de su hardware de gráficos. Transcribo aquí la solicitud…

OpenTheBlob.com – Una carta abierta a NVIDIA

NVIDIA Corporation,

Nosotros, la comunidad GNU/Linux y los abajo firmantes, solicitamos amablemente que Uds., la NVIDIA Corporation, incremente los esfuerzos en ayudar a la comunidad open-source a desarrollar controladores para su hardware de gráficos. Sus mayores competidores en este mercado, AMD/ATI e Intel, no sólo han apoyado a la comunidad en el desarrollo de controladores de código abierto, sino que ahora están liberando abiertamente documentación para la programación del hardware.

Si bien estamos agradecidos de que su compañía ofrezca uno de los mejores controladores de gráficos de fuente cerrada para Linux, el mismo no está exento de problemas e impide a muchos usuarios de contar con una verdadera plataforma de software libre. Han mostrado pasión por el open-source en el pasado al dejar de lado el binario nforce-net en favor del controlador forcedeth, generado por la comunidad, para el soporte Ethernet en los chipsets de sus placas madre. Ha habido un rumor de que pueden estar desarrollando una estrategia de código abierto para sus productos gráficos, de modo que si ese es el caso, por favor, háganos saber sus verdaderas intenciones. Incluso si sólo fueran capaces de abrir un subconjunto de su controlador para Linux, ésto demostraría un signo de solidaridad hacia el mundo del software libre.

Estamos unidos bajo el nombre OpenTheBlob.com, pero comprendemos que legalmente puede ser casi imposible liberar la porción binaria de su controlador de gráficos, debido a patentes y a la preservación de la propiedad intelectual en este competitivo mercado. Lo que estamos solicitando, sin embargo, es su apoyo a la comunidad de código abierto en la mayor medida posible.

El controlador de código abierto “nv” que proveen para X es un abominable desastre que se limita a aceleración 2D y no viene sin su cuota de limitaciones y código revuelto. Esperamos que NVIDIA proporcione la documentación de programación concisa a los desarrolladores voluntarios, sin que esté cubierta por acuerdos de no divulgación u otras restricciones de carácter legal.

Hay un grupo de desarrolladores interesados que están dispuestos a contribuir en favor de un driver 3D de NVIDIA abierto. Los desarrolladores de Nouveau están comprometidos con estos ideales de software libre en la medida que han dedicado años haciendo ingeniería inversa a su hardware sin recibir ningún tipo de fondos para esta obra inmensa, sino dependiendo de donaciones de la comunidad. Un controlador oficial de código abierto podría complementar su controlador binario, con el objeto de proveer una mejor experiencia “fuera de la caja” en muchas distribuciones Linux y satisfacer a los clientes — incluyendo a los clientes corporativos — que utilizan software de código abierto.

De manera firme, pedimos a sabiendas de su verdadero compromiso con GNU/Linux y las comunidades de código abierto. Por cada día que permanecen inactivos, sus competidores siguen perfeccionando sus controladores de código abierto y liberando más documentación, dando mayores posibilidades a la comunidad open-source. Por favor, háganos saber lo que está pasando y únanse a la comunidad de código abierto en este esfuerzo.

Atentamente,
Los abajo firmantes
29 de febrero de 2008

La dirección para firmar es http://www.opentheblob.com/nvidia/

Actualización 10/08/2008: Acomodé los saltos de línea de los párrafos, que me habían quedado un desastre.

Compiz Fusion en Debian Lenny con Nvidia o Intel

Actualización 06/10/2007: Chantanito nos ha acercado un excelente dato al apuntarnos con su comentario que los repositorios shame han sido separados por release. Yo no me había percatado de ello pues ya tengo compiz instalado 😉 En el repository of shame tienen toda la data de cual es la línea que deben agregar al sources.list. Para los impacientes que tenemos Debian Lenny 32 bits, es la siguiente:

deb http://download.tuxfamily.org/shames/debian-lenny/desktopfx/unstable/ ./
Mil gracias!!

Como ustedes saben, por junio de este año los proyectos de escritorios 3d Beryl y Compiz se unieron para dar nacimiento a Compiz Fusion, del cual pueden ver algunos videos, como es usual, en youtube.

Esta semana han dado a conocer la primer release de desarrollo, Compiz Fusion 0.5.2, que he probado en dos equipos y la verdad anda sin problemas incluso con una performance un poco mejor (al menos a mi juicio) que los proyectos originales. Algunas de las novedades que se incorporaron, además de los plugins de Compiz y Beryl originales, son:

  • Efectos de reflexión en el cubo
  • Un plugin de exposición de escritorios
  • Un nuevo selector de aplicaciones
  • Un completo gestor de configuración

Para los impacientes, aquí está la receta para tenerlo andando en Debian Lenny. La publico ahora (un poco tarde, por cierto) pues el repositorio de paquetes está más estable que hace unos días.

1. Instalación de los drivers de video

Para aquellos que poseen tarjetas de video nVidia, deben tener instalado y configurado el driver propietario, de lo cual ya hemos hablado en un post anterior. Con algunas modificaciones, las instrucciones son las mismas.

Por las dudas, si tenemos una placa de video nVidia, en el archivo /etc/X11/xorg.conf deberíamos tener:

...
Section "Device"
Identifier "Tarjeta de vídeo genérica"
Driver     "nvidia"
Option     "AllowGLXWithComposite" "true"
Option     "RenderAccel" "true"
EndSection
...
Section "Screen"
...
Option "AddARGBGLXVisuals" "True"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
EndSection
...

Para el caso de una placa de video Intel 915/945/9xx:

...
Section "Device"
...
Option "XAANoOffscreenPixmaps" "True"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
EndSection
...

2. Eliminar los paquetes antiguos de Beryl y Compiz

He tenido algunas dificultades al intentar actualizar los paquetes desde versiones antiguas, por lo que recomiendo remover y purgar todos los paquetes relacionados con Compiz y Beryl que estén instalados en el equipo.

# aptitude purge beryl… compiz… heliodor… emerald… etc, etc…

3. Agregar el repositorio shame

Esta buen alma caritativa se ha encargado de empaquetar Compiz Fusion para Debian, así que aprovecho para agradecer su laburo.

Agregar, entonces, las líneas siguientes a /etc/apt/sources.list

# Compiz Fusion development (shame)
deb http://download.tuxfamily.org/shames/debian-sid/desktopfx/unstable/ ./

Update 06/09/2007

Agrego dos repos más por si tienen problemas con el anterior. El siguiente es también de shame, pero contiene una versión más antigua y un poco más estable de compiz:

deb http://download.tuxfamily.org/shames/debian-sid/desktopfx/snapshot/ ./

Este último lo encontré de casualidad y proviene del O.S. Revolution Unnoficial Debian Repository:

deb http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git

4. Agregar las llaves del repositorio

# wget http://download.tuxfamily.org/shames/A42A6CF5.gpg -O- | apt-key add –

5. Instalar los paquetes de Compiz Fusion

Dependiendo del entorno escritorio en el cual deseamos ver los efectos gráficos, es conveniente instalar…

# aptitude install compiz-fusion-kde (para KDE)
# aptitude install compiz-fusion-gnome (para Gnome)
# aptitude install compiz-gnome emerald emerald-themes (para XFCE)
# aptitude install compiz-fusion-all (todos los paquetes para cualquier entorno)

6. Iniciar Compiz Fusion

Como usuario normal, una vez iniciada la sesión en el escritorio de preferencia, ejecutar

$ fusion-icon

o bien

$ fusion-manager

Como he tenido algunos inconvenientes con gtk-window-decorator, les recomiendo iniciar con el decorador de ventanas emerald. Para ello en vez de ejecutar fusion-icon, ejecuten compiz y luego inicien emerald, de la siguiente forma:

$ compiz &
$ emerald &

Eso debería andar; o por lo menos en mi modesta pc con 256 de RAM y 256 de video anda muy lindo.
Bien, por ahora es todo, los dejo para que disfruten de los atractivos efectos y saquen sus propias conclusiones.

nVidia + AIGLX + Compiz à la Debian

Hasta hace un tiempo, a aquellos que nos interesaba tener los efectos que inauguró XGL en nuestro querido Debian sólo nos quedaba:

  1. Compilar e instalar todo desde las fuentes (salvo, y obviamente, el driver de nVidia porque los muy turros no nos quieren liberar el código).
  2. Usar los paquetes de otra distro (léase Ubuntu).
  3. Usar paquetes para Debian, empaquetados por algún alma caritativa.

Cualquiera sea las opciones que hayamos tomado, terminabamos siempre ensuciando nuestra instalación con paquetes externos y de dudosa procedencia, lo que nos llevaba muy probablemente a un montón de incompatibilidades entre versiones, dependencias, etc…

Pero a partir del 18/11/2006, y gracias a la Debian X Strike Force y a otros mantenedores, ya disponemos en Debian testing de los paquetes xorg 7.1 y compiz, con lo cual tenemos facilitado una buena parte del trabajo necesario para tener los tan deseados efectos en nuestro escritorio.
Además, como Xorg 7.1 incorpora AIGLX ya no es necesario tener un servidor Xgl, con el servidor X nos basta.

Así que si disponemos de Debian testing, mas una tarjeta nVidia, podemos tener un desktop lleno de chiches en minutos nada más siguiendo estos pasos:

0. Un poco de limpieza

Como prerrequisito para todo esto, deberemos tener el sistema lo más limpio que podamos, es decir, sin paquetes compiz*, xgl, libglitz ni nada raro. Eso es algo así:

apt-get remove –purge compiz* xgl libglitz1

1. Actualización de Xorg

A continuación necesitaremos actualizar el servidor X. Si ustedes, como yo, están al día con la distro, entonces ya está listo y podremos continuar con el siguiente paso. Si no, es tan sencillo como hacer:

apt-get install xorg

2. Instalación del driver nVidia

Lamentablemente aún no disponemos de un driver libre para tarjetas gráficas nVidia que nos permita disfrutar de aceleración 3D. Esperemos que esto cambie pronto, ya sea con la liberación del driver por parte de la empresa, o bien con el desarrollo del proyecto nouveau. Por ahora nos quedaremos con lo que tenemos a mano.

Necesitaremos de testing los paquetes build-essential, module-assistant, kernel-package, nvidia-kernel-common, y de experimental los paquetes nvidia-glx y nvidia-kernel-source. A los primeros los podemos conseguir haciendo:

apt-get install build-essential module-assistant kernel-package nvidia-kernel-common

A los dos restantes podemos bajarlos directamente desde el repositorio. Los enlaces son nvidia-kernel-source y nvidia-glx. Noten que yo estoy descargando las versiones para arquitectura 386. Estos drivers también están para amd64 pero no sé qué tal andarán.

Para instalar los paquetes que descargamos recién, en una consola como usuario root, hacemos:

dpkg -i nvidia-*.deb

Probablemente nos harán falta los encabezados para la versión y arquitectura del kernel que estemos usando. En mi caso el paquete es linux-headers-2.6.17-2-k7, pero en el de ustedes puede variar. Si no saben que paquete instalar, hagan uname -r y lo que les salga es lo que va luego de linux-headers.

apt-get install linux-headers-2.6.17-2-k7

Bueno, la cosa ahora viene mas o menos así. Para crear el módulo del driver, lo cual es una tarea bastante tediosa, usaremos module-assistant, que hará todo el trabajo sucio por nosotros.

module-assistant auto-install nvidia-kernel

Este proceso compilará el módulo (lo que se pueda compilar) y lo dejará listo para utilizar.

3. Configuración del driver nVidia

Si todo salió como esperábamos, ahora podremos cambiar en el archivo /etc/X11/xorg.conf, la línea Driver “nv” por Driver “nvidia”, y ya que estamos en el archivo de configuración de xorg, agregaremos algunas sentencias más al inicio:

Section “Extensions”
Option “Composite” “Enable”
EndSection

en Device Section:

Option “AllowGLXWithComposite” “True”
Option “XAANoOffscreenPixmaps” “true”

y en Screen Section:

Option “AddARGBGLXVisuals” “True”

Ahora podremos reiniciar el servidor X para verificar que todo ande de 10.

4. Instalación del paquete compiz

Sencillo:

apt-get install compiz

5. Añadir compiz al inicio de sesión gráfica

Todo lo anterior es suficiente para poder probar nuestro escritorio 3d. Iniciaremos sesión en Gnome como de costumbre, y en una consola invocaremos a compiz:

compiz –replace

Esto reemplazará el gestor de ventanas actual y tendremos a tiro todos los efectos sobre los que hablan nuestros amigos.

Para hacer efectivo el cambio en cada inicio de sesión hay miles de recetas. Una de ellas, para aquellos que usen Gnome pueden incluir el comando en gnome-session-properties. En el caso de que usen Xfce, habrá que añadirlo a xfce4-autostart-editor.

Bien, eso es todo por ahora, espero no haberme olvidado de nada y que les haya sido de utilidad.
Suerte…

Actualización (20-Mar-2007): He publicado una breve guía sobre Beryl, el fork GPL de Compiz, en este post.

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress