Feisty Fawn

Last Saturday, I went with many friends to the local installment of FLISOL, a big install fest done across Latin America on the same day.

It was a nice event, seeing a lot of people from the local community helping newbies to install their first GNU/Linux. Most of the installations were -not surprisingly- Ubuntus. I was very surprised of Feisty: the installer is really simple and powerful for desktop users, and once installed, there are a lot of things that I'd really like to see in Debian.

But, everything cames with a price. Don't ever try to install it without enough RAM (the site says 256MiB). The graphical installer won't even boot (OOM killer kills the machine for you). If you download the alternate CD, which uses d-i, it will seem to work, but you'll notice a system which is a trashing hell: for starters, the restricted modules are kept in a tmpfs, eating over 30MiB of RAM! I tried unsuccessfully to trim it a little to make it work on a old laptop of a friend (only 64MiB of RAM), removing the tmpfs, killing daemons and stuff... But not even xfce will run on it: when I opened a terminal the whole X session will crash instantly.

So now, I'm starting a etch install on it. It will involve some work to make a end-user-friendly desktop, but I'm confident there is a way of making it work. Ubuntu just works in most cases, but when it doesn't, it's much more difficult to tweak. YMMV.

DMA blues

Desde hace unos días estoy tratando de dejar a punto una vieja laptop. Antes solía usar la opción ide=nodma en el kernel ya que el módulo piix pensaba que había DMA y eso resultaba en timeouts insoportables. Al intentar usar Ubuntu (sin éxito en este pobre carro viejo), la opción seguía andando, pero al instalar un etch dejó de prestarme atención.

Luego de varias horas de investigación, lectura de código fuente incluída, pude solucionarlo. Y les cuento para quién se vea con algo similar (al menos acá encontré alguien con el problema).

Encontré que el código que procesa esa opción está en drivers/ide/ide.c, que termina en ide-core.ko en los kernels super modulares que trae etch. No sé si antes esto no era módulo, ni cómo hace Ubuntu para que funcione; pero al ser un módulo, ide.c no recibe la command line del kernel. Según Documentation/ide.txt, hay que usar insmod ide.o options="..", obviamente este archivo no está muy actualizado :-).

El problema es pasar esa opción al módulo, que se carga desde el initramfs. Encontré que hay una manera de detener el script de initramfs y dar un shell. Pasando la opción break[=top|modules|premount|mount|bottom|init] corta la ejecución en un determinado momento, dando un shell de busybox. Cuando se cierra el shell el booteo continúa normalmente. Ahí pude cargar el módulo a mano y ver que efectivamente la opción nodma funcionaba.

Seguí leyendo el contenido del initramfs y aunque no encontré cómo hace la carga de módulos de disco, veo que usa un modprobe completo, con /etc/modprobe.d incluído! Deduje que lo copiaba del root filesystem, así que creé un archivo nuevo en ese directorio y corrí update-initramfs y problema solucionado.

Ahora me gustaría que alguien me diga si esto estaba escrito en algún lado, porque realmente no lo encontré. Ni cómo pasar opciones que solían pasarse por cmdline, ni que era tan fácil como configurar un módulo tal cual es usado fuera de initramfs.

About installing a complex perl web application

Today, MJRay asks how to make MakeMaker (no redundancy!) do what he wants.

Incidentally, I faced this issue just yesterday, preparing an application for internal use in my job. As sysadmin, I want all the homebrew software to be Debian-packaged, even if they're not the most policy abiding packages.

I was installing some modules for mod_perl2, some utility modules and a couple of scripts. Of course, it also needed accesory files, like images for the web or templates for HTML, and configuration too.

After reading the reply to this post, written by Randal Shwartz himself, I got convinced that there wasn't any frigging way to make the thing do it.

So my solution was far from ideal, as I wanted to put everything in the Makefile, but it wasn't so ugly, considering that it was only meant for use in a Debian package:

  • mod_perl and regular modules, using the standard method: put them under lib/ and MakeMaker takes care of them. As I didn't wanted site-wide modules, I changed INSTALLVENDORLIB in the debian/rules to point to /usr/share/pkgname/lib
  • for scripts, perl or not: you list them in EXE_FILES, and then point INSTALLVENDORSCRIPT to where you want them. In my case it was /usr/share/pkgname/bin, but if you need to install CGIs, it would be valid to point to /usr/lib/cgi-bin.
  • For support files, at first I put them under PMLIBDIRS control (as the rest of the modules), but I didn't like the resulting directory layout. So I processed them, along with configuration files, and stuff with debhelper tools.

In a nutshell, if you only want to process modules and CGIs, you can do it with MakeMaker

OMGOGG!!1

¡Yay! ¡Lo logré! Finalmente conseguí un reproductor que soporte archivos ogg-vorbis.

Hoy iba por mi barrio buscando otra cosa, y de pronto veo en una vidriera un reproductor que decía a todas luces soportar ogg (un Samsung), pero los delirantes pedían más de $700. Sin embargo, esto me indujo a volver a probar suerte en los numerosos locales que venden reproductores de todo tipo (especialmente de los chinos/s1mp3). Muy para mi sorpresa, en una casa de electrodomésticos, ¡encontré no uno, sino dos reproductores que lo soportaban!

El que me compré, similar al de la foto, el más visto de todos, lo decía claramente en la caja: mp3, wma, ogg. El otro no, un reproductor con soporte para mpeg, pero también andaba. Finalmente me decidí por el primero, que era mucho más barato -y no tanto más caro de lo que se consigue en mercadolibre y similares-.

Así que ya saben, si necesitan uno en este comercio bien medio pelo, me aguantaron una hora rompiendo la paciencia y me vendieron un reproductor de archivos libres de patentes.