MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

El xorg.conf más pequeño que hayas visto nunca

Hoy me ha dado por actualizar a la última versión de Xorg en Debian SID (1:7.4+1) y como ya había visto por el planet las quejas de la gente, estaba avisado que ahora HAL es el que configura en caliente las Xorg. Copia de seguridad de xorg.conf (por si las moscas) y dpkg-reconfigure xserver-xorg. He añadido a mano la línea del driver nvidia aunque no estoy seguro si hace falta.

$ grep -v -e ^$ -e ^# /etc/X11/xorg.conf
Section "Device"
Identifier	"Configured Video Device"
Driver		"nvidia"
EndSection

Reinicio y a pesar de parpadear un par de veces las X cargan y el monitor externo parece que lo reconoce y consigo configurarlo como extendido sin mucho problema.

Desde Octubre tengo un ratón Logitech Laser y la rueda tiene la función de botones laterales, en mi anterior xorg.conf tuve que hacer malabarismos para configurarlo como ratón de 7 botones, ahora con ayuda de xbindkeys funciona sin tocar nada:

$ grep -v -e ^# -e ^$ ~/.xbindkeysrc 
"xbindkeys_show" 
control+shift + q
"/usr/bin/xvkbd -xsendevent -text "\C\[Prior]""
m:0x0 + b:6
"/usr/bin/xvkbd -xsendevent -text "\C\[Next]""
m:0x0 + b:7

Con esta configuración puedo cambiar de pestaña del navegador o la consola de una manera super cómoda.

Ya para terminar último truco "GRATIX", mi portatil da 1680x1050 de resolución y hace unos meses me compré otro monitor (LG de 22") para trabajar con escritorio extendido (3360x1050).

Al usar el driver de NVidia estas obligado a usar su interfaz gráfico «nvidia-settings» y son un montón de clicks para configurarlo, en Launchpad he encontrado un proyecto super interesante: disper, son unos binding en python para que ataque a las libs de nvidia o a xrand y poder cambiar resolución mediante atajos de teclado, scripts o usandolos en otros programas...

Me he hecho un script y con un botón en el panel lo llamo:

#!/bin/sh
cd /home/mario/sources/disper/disper
RES=$(/usr/lib/tcos/screensize)
if [ "$RES" = "1680x1050" ]; then
# extend if CRT-0 is connected
python src/cli.py --list| grep -q "CRT-0" && python src/cli.py --extend
elif [ "$RES" = "3360x1050" ]; then
python src/cli.py --single
else
zenity --error --text="NVidia extend resolución desconocida ($RES)"
fi

Básicamente lo que hace es detectar la resolución actual y si es 1680x1050 y detecta el monitor CRT-0 la cambia a extendida (3360x1050), si ya está extendida la pone en simple deshabilitando el monitor externo. Si esto lo añadimos a un atajo de teclado tipo Fn+F6 ya tenemos el conector desconector de proyectores.

Por hoy nada más, voy a investigar como le sienta a TCOS el cambio de Xorg.





NVidia en Debian con el kernel 2.6.29

Es un verdadero dolor de cabeza cada vez que se cambia algo en el kernel y nvidia da largas.

Esta vez el motivo es una nueva versión de kbuild y diferentes modelos de empaquetado de las cabeceras del kernel (antes entre el common y el -686, por ejemplo, había enlaces para que el de cada arquitectura tuviera lo necesario del common, ahora parece que no)

He probado miles de cosas hasta que he dado con el truco para hacerlo funcionar, inspirado en un comentario de este bug de Debian: #520706. Primero hay que buscar el archivo Makefile_32.cpu y copiarlo en su sitio.

¿Como compilamos?

  1. Ejecutar module-assistant como siempre (y esperar el fallo) para así tenerlo descomprimido.
  2. Editar /usr/src/modules/nvidia-kernel/debian/rules y cambiar la línea:

    IGNORE_CC_MISMATCH=1 CC="$(CC)" $(MAKE) -C $(CURDIR)/$(dirname) -f Makefile SYSSRC=$(KSRC) $(KPKG_EXTRAV_ARG) KBUILD_PARAMS=$(KBUILD_PARAMS) module;

    por:

    IGNORE_CC_MISMATCH=1 CC="$(CC)" $(MAKE) -C $(CURDIR)/$(dirname) -f Makefile SYSSRC=/usr/src/linux-headers-2.6.29-1-common/ KERNEL_OUTPUT=$(KSRC) $(KPKG_EXTRAV_ARG) KBUILD_PARAMS=$(KBUILD_PARAMS) module;

  3. Ejecutar nuevamente m-a -O -t build,install nvidia (es muy importante el -O ya que así no descomprime de nuevo las fuentes, y nos chafa la edición)

En el bug comentaban de usar la variable $(KCOM), pero debo tener una versión de module-assistant que no genera esa variable.

Escribo desde un kernel 2.6.29-1-686 con el driver nvidia 180.44.

A todo esto y ya se que «glxgears» es una unidad de medida de una credibilidad nula, pero hay un aumento considerable de rendimiento desde el 180.22 o 180.29 (2.500FPS) a este 180.44 (4200 FPS) (NVidia Quadro NVS 140M).

Los paquetes deb del 180.44 me los hice hace tiempo para el 2.6.28, pero eso será una historia para otro día.





Y ya van dos

Acaba de llegarme el mail de confirmación de un nuevo paquete Debian: p910nd.

Este pequeño paquete es un servicio que escucha en el puerto 9100 y siguientes (de ahí su nombre) y redirige las peticiones a un dispositivpo de impresora del tipo /dev/lpX, lo que venía haciendo en TCOS con lp_server (de dudosa licencia) o print_server (que nunca llegó a funcionar bien del todo).

Con este, son dos los paquetes de los que soy responsable en Debian, aunque dependo de un sponsor para las subidas, las dos personas que me han ayudado (xam@d.o y piotr@d.o) estan dispuestas a seguir esponsorizando las subidad y suelen ser bastante rápidos en responder.

¿Por qué subo estos paquetes?

En mi cruzada de subir TCOS a Debian, son las primeras y más sencillas dependencias, ahora me tengo que pegar con busybox o buscar otra alternativa a tinylogin, este es el Roadmap para subir TCOS a Debian.

La rama tcosdebian del paquete initramfs-tools-tcos es donde estoy trabajando los cambios para que el paquete sea más amigable con las políticas de Debian.





Marketing bluetooth por proximidad: python-thinblue

ThinBlue es una aplicación desarrollada en python que envía archivos mediante el protocolo OBEX a dispositivos móviles (teléfonos por ejemplo).

Desde Thinetic Systems (empresa en la que trabajo) hemos liberado una primera versión (funcional, aunque beta) de esta aplicación bajo la licencia GPL2.

De momento tenemos un repositorio GIT con el código y en breve publicaremos paquetes *.deb para las versiones más usadas de Debian y Ubuntu.

Tienes más información en la noticia de nuestra web: ThinBlue, aplicación bluetooth para marketing por proximidad.

Una de las cosas más chulas ha sido desarrollar el panel de administración con el framework web: web.py , de hecho sin contar javascript, html o css son apenas 300 líneas.

A disfrutarla Wink





Manteniendo paquetes Debian con GIT

Llevo ya un tiempo usando GIT y voy aprendiendo a manejarlo muy poco a poco.

Una de las cosas que más me gustan es la facilidad para tener varias ramas y poder crear paquetes deb de una manera simple con «git-buildpackage».

Por ejemplo, con el paquete gnome-pulse-audio tengo 3 ramas:

  • master: rama de trabajo (lo que sería trunk en SVN)
  • upstream: rama de donde se obtienen las fuentes del paquete Debian (orig.tar.gz)
  • gnome-pulse-audio: rama SVN que se sincroniza con el upstream y que permite hacer merges sencillos contra upstream y master.
A veces entre tanta rama se pierde «el norte» (o el HEAD Laughing) y es necesario acudir a una interfaz gráfica, he probado varias pero la que más me convence es gitg. De hecho está en cola de NEW.


Se que GIT hace mucho más que todo esto (podría deshacerme del sistema dpatch) pero iremos aprendiendo poco a poco.



Nuevo juguete: gnome-pulse-applet

Hace poco he descubierto una aplicación simple pero la mar de útil (sobre todo en ambientes donde se usa PulseAudio por defecto como TCOS o LTSP)

 

 

Se trata de gnome-pulse-applet, un applet de GNOME que (o bien en horizontal o vertical) muestra los controles individuales por cada aplicación que reproduzca sonido mediante PulseAudio.

Los paquetes disponibles en su web no funcionan en Debian (ya he avisado dle bug) y de paso he estado modificándolo para que se pueda lanzar como aplicación independiente de GNOME en la bandeja del sistema.

Quizás haga un ITP para subirlo a Debian ya que he hecho los paquetes. (y compilado para todos los Debian y Ubuntu)

Voy a probar si detecta bien el servidor desde un terminal ligero...





Debian Lenny ya está aquí

Esta vez no se ha hecho esperar demasiado. Felicidades (y gracias) a todos los que han contribuido.

Por lo que me toca, estoy haciendo limpieza en el repositorio de TCOS y compilando nuevos paquetes. De momento falta alguno para Lenny, espero que entre hoy y mañana tenga casi todo listo.

Los próximos días en unstable van a ser moviditos (Gnome 2.24, Xorg 1.5...) «agarraos que vienen curvas».





«Anterior   1 2