Archivos de la categoría Software libre

Úsalo, modifícalo, cópialo, distribúyelo…

Compilación, instalación y uso de QEMU y kqemu en Ubuntu GNU/Linux

QEMU es un conocido emulador que permite ejecutar otros sistemas (como Hasefroch u otras distribuciones de GNU/Linux) en una ventana. Desafortunadamente, el sistema emulado funcionará unas diez veces más lento que una instalación nativa. kqemu es un acelerador de QEMU, un módulo para el núcleo escrito por el mismo autor de QEMU, que acelera notablemente el funcionamiento de éste (multiplica la velocidad por cinco) si emulamos un x86 en un x86 (pues qemu permite ejecutar binarios compilados para una arquitectura sobre otra distinta).

Debe advertirse que, por el momento, kqemu es gratuito, pero no libre (el autor está dispuesto a liberarlo si alguien le da dinero para compensar el tiempo invertido en él):

As a supporter of open source, the author accepts to open source the QEMU Accelerator Technology provided a company invests enough money to support the project and to recompense the author from the potential loss of revenue. Interested companies can look at the roadmap and make suggestions to the author.

(Cita de http://fabrice.bellard.free.fr/qemu/qemu-accel.html)

Ya se está desarrollando un acelerador libre, llamado qvm86, pero parece estar todavía en estado pre-alpha y no lo he probado.

Algunas alternativas a QEMU son Xen y Bochs (quizás también OpenVZ, que todavía no he mirado, pero me parece que es más comparable a Linux-VServer o User Mode Linux (UML)). Como opción privativa estaría VMWare.

Instalacion de QEMU

Para emplear el módulo acelerador no podemos instalar QEMU desde el paquete .deb binario, sino que debemos compilarlo todo nosotros mismos. Empezamos instalando las dependencias y programas necesarios para compilar:
aptitude install libsdl1.2-dev zlib1g-dev linux-headers-`uname -r` build-esential checkinstall nasm vgabios bochsbios

A continuación descargamos el código fuente de la última versión de QEMU de
http://fabrice.bellard.free.fr/qemu/download.html
y lo descomprimimos en /usr/local/src.

Parece ser que QEMU da problemas cuando se compila con gcc 4.x, así que debe compilarse con gcc 3.x:
# cd /usr/local/src/qemu-0.8.2
# ./configure --cc=gcc-3.4 --host-cc=gcc-3.4
# make
# checkinstall (para instalar usando un paquete debian, o bien make install)

Para evitar que nuestro paquete pueda ser sobreescrito al hacer un aptitude upgrade perdiendo así la aceleración, bloqueamos el paquete con
# echo "qemu hold" | dpkg --set-selections

Instalación de kqemu

Ahora descargamos de la misma página el tarball del módulo acelerador de QEMU (kqemu), y lo descomprimimos. El módulo kqemu debe compilarse con la misma versión del compilador que el núcleo que usamos (se puede ver con cat /proc/version), y para el mismo procesador, u obtendremos un error similar a
FATAL: Error inserting kqemu (/lib/modules/2.6.15-26-686/misc/kqemu.ko): Invalid module format
En nuestro caso, observamos que el núcleo ha sido compilado con la versión de gcc que usa por omisión el sistema, así que no nos preocupamos de ello.

Pensaba que con las cabeceras del núcleo linux sería suficiente, pero me encontré con este error:
# ./configure
Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kqemu module
Source path /usr/local/src/kqemu-1.3.0pre9
C compiler gcc
Host C compiler gcc
make make
host CPU i386
./configure: line 344: test: =: se esperaba operador unario

Así que instalé el paquete del código fuente del núcleo, lo descomprimí, creé un enlace simbólico «linux» al directorio del código fuente, y copié en él el fichero de configuración.
# aptitude install linux-source-2.6.15
# cd /usr/src/
# tar jxvf linux-source-2.6.15.tar.bz2
# ln -s linux-source-2.6.15 linux
# cp /boot/config-2.6.15-26-686 linux/.config

Pero entonces pasé a encontrarme con este otro error al intentar hacer el make:
WARNING: Symbol version dump /usr/src/linux-source-2.6.15/Module.symvers
is missing; modules will have no dependencies and modversions.

y otros indicando que no encontraba autoconf.h, etc.

Finalmente lo resolví con
# cd /usr/src/linux
# make

Si quisiéramos aprovechar para personalizar nuestro núcleo, sería buena idea editar el Makefile antes de compilar, y cambiar la variable EXTRAVERSION.

Finalmente pude ya compilar kqemu:
# cd /usr/local/src/kqemu-1.3.0pre9/
# ./configure
# make

Durante el make aparece una advertencia:
Warning: could not find /usr/local/src/kqemu-1.3.0pre9/.kqemu-mod.o.cmd for /usr/local/src/kqemu-1.3.0pre9/kqemu-mod.o
pero podemos prescindir de ella.

Primero intenté instalarlo usando un paquete debian, pero me daba el error
dpkg: error al procesar /usr/local/src/kqemu-1.3.0pre9/kqemu_1.3.0pre9-1_i386.deb (--install):
intentando sobreescribir `/lib/modules/2.6.15-25-686/modules.alias', que está también en el paquete linux-image-2.6.15-25-686
dpkg-deb: el subproceso paste fue terminado por la señal (Tubería rota)

así que finalmente lo he instalado con
# cp /lib/modules/2.6.15-26-686/modules.alias /lib/modules/2.6.15-26-686/modules.alias.bak
# make install

Para cargar el módulo normalmente ejecutaríamos
# modprobe kqemu
pero como Ubuntu utiliza udev, lo hacemos con
# modprobe kqemu major=0
para que se cree el dispositivo /dev/kqemu (por supuesto también podríamos crearlo con # mknod /dev/kqemu c 250 0).

También podemos utilizar modconf para que se cargue siempre automáticamente (el módulo está en la sección misc).

Ahora debemos dar permisos al dispositivo kqemu para que todos los usuarios puedan acceder a él:
# chmod 666 /dev/kqemu
Para que udev ponga automáticamente los permisos adecuados en el arranque, editamos el fichero /etc/udev/rules.d/40-permissions.rules añadiendo las líneas
# Permisos para /dev/kqemu
KERNEL=="kqemu", MODE="0666"

Si no diésemos estos pasos, nos encontraríamos con este error al intentar usar QEMU:
Could not open '/dev/kqemu' - QEMU acceleration layer not activated
es decir, que a pesar de tener el módulo cargado, el acelerador no funcionaría.

Mientras estamos emulando algún sistema, para comprobar que el módulo acelerador está efectivamente en funcionamiento, pasamos al monitor de QEMU pulsando Ctrl-Alt-2, e introducimos la orden info kqemu. Deberíamos obtener algo así:
QEMU 0.8.2 monitor - type 'help' for more information
(qemu) info kqemu
kqemu support: enabled for user and kernel code
(qemu)

Para volver al sistema emulado pulsamos Ctrl-Alt-1

Al utilizar QEMU por primera vez me apareció esta curiosa advertencia:
Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal
error, but for better emulation accuracy either use a 2.6 host Linux kernel or
type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.

y la califico de curiosa porque sí que estoy usando un núcleo Linux 2.6… En fin, podemos hacer que se calle ejecutando esa orden.

Utilización de QEMU

Tras estudiar como instalar QEMU y el módulo acelerador kqemu en un sistema Ubuntu o Debian GNU/Linux, veamos ahora cómo usar las opciones básicas. Para más información, se puede consultar la documentación de QEMU.

Para probar la imagen ISO de una distribución en live-CD, ejecutaremos una orden similar a
$ qemu -boot d -m 224 -kernel-kqemu -cdrom gluz2_beta1.iso

La opción -boot d indica el dispositivo desde el que debe arrancar: disquete (a), disco duro (c) o CD-ROM (d).

La opción -m 224 indica cuanta memoria le asignamos a QEMU. Por omisión son 128 MB, pero si disponemos de más memoria libre, es recomendable asignarle más.
-kernel-kqemu es una nueva opción que habilita el modo de virtualización completa: tanto el código de usuario como el del núcleo invitado se ejecutan directamente en la CPU anfitriona (en el modo normal, sólo se ejecuta directamente el código de usuario, mientras que el código de núcleo es traducido dinámicamente por QEMU). Esto no funciona para todos los sistemas operativos invitados (sí la mayoría de los recientes, como GNU/Linux y Windows 2000/XP, aunque estos últimos no durante la instalación), y de momento sólo de 32 bits.

Y con la opción -cdrom gluz2_beta1.iso indicamos que la máquina virtual debe usar como unidad de CD-ROM ese fichero de imagen ISO.

Otra opción es -soundhw es1370, que habilita el sonido emulando una tarjeta con chip ENSONIQ AudioPCI ES1370 (como la SoundBlaster 128). A mí me da problemas, pero es posible que sea debido al hardware de mi máquina.

Si lo que necesitamos es poder usar dos sistemas operativos distintos simultáneamente, lo mejor es hacer una instalación en el disco duro. Para ello, empezamos creando una imagen de disco, que es un fichero que contendrá un sistema de ficheros con el sistema emulado, actuando como su disco duro

Esto se podría hacer con dd, pero normalmente lo haremos con la orden qemu-img, que admite varios formatos de imagen de disco:

raw
formato de imagen de disco en bruto (formato predeterminado). Este formato tiene la ventaja de ser sencillo y fácilmente exportable a los demás emuladores. Si nuestro sistema de ficheros admite agujeros (como ext2 y ext3), solamente se reservará espacio para los sectores escritos. Podemos conocer el tamaño real que usa la imagen con qemu-img info o ls -ls en sistemas de tipo Unix.
qcow
Formato de imagen de QEMU, el más versátil. Se usa para obtener imágenes más pequeñas en sistemas de ficheros que no admiten agujeros, como el de Windows, cifrado AES opcional y compresión basada en zlib.
cow
Formato de imagen Copy On Write de User Mode Linux. Antiguamente era el único formato de QEMU que podía crecer. Ahora se conserva solamente para mantener compatibilidad con las versiones anteriores. No funciona en Windows.
vmdk
Formato de imagen compatible con VMware 3 y 4.
cloop
Imagen Loop comprimido de GNU/Linux, útil para usar directamente imágenes de CD-ROM comprimidas, como la que usa Knoppix. Ubuntu usa squashfs en vez de cloop.

Si necesitásemos instalar uno de los sistemas de Hasecorp, podríamos ejecutar por ejemplo:
$ qemu-img create -f qcow winxp.img 10G
qcow es el formato recomendado para Hasefroch, winxp.img es el nombre del fichero de imagen, y 10G es el tamaño que le damos.

Para instalar el sistema en el fichero imagen, introducimos el CD-ROM de instalación y ejecutamos
$ qemu -boot d -m 224 -cdrom /dev/cdrom -hda winxp.img
Con la opción -hda indicamos que utilice como disco duro ese fichero de imagen.

Tras realizar la instalación, podremos arrancar el Hasefroch XP con
qemu -boot c -m 224 -hda winxp.img
Por omision arranca con la opción -net user, que proporciona una manera de usar la red. Sin embargo hay otra manera más fina de configurar la red, usando un dispositivo tun y el paquete bridge-utils (véase la documentación). Una cosa que me estaba volviendo loco: desde el sistema emulado, no podemos hacer ping a máquinas de Internet. Sin embargo, sí podemos navegar por la web, etc.

También es posible tener un directorio en el sistema anfitrión al que el Windows emulado pueda acceder por SMB de forma transparente (véase la documentación).

¿Llevas tiempo deseando echar un vistazo a FreeBSD, Plan 9 o Minix? En FreeOsZoo puedes descargar imágenes para QEMU de estos y otros sistemas, y así probarlos fácilmente.

Instalación de GNU/Linux en un Apple MacBook

Desde la semana pasada tengo un ordenador portátil: un Apple MacBook. De momento estoy muy contento con él, aunque hay quien tiene razones para no comprarlo, como que se calienta demasiado como para tenerlo en las rodillas y que a algunos usuarios se les corroído misteriosamente la carcasa (Apple ya las está reemplazando).

Rápidamente instalé Kubuntu, aunque del mismo modo se podría instalar Debian, Gentoo u otra distribución. Esta computadora lleva un procesador Intel Core Duo, así que se puede usar cualquier distro para x86.

Para instalar la Ubuntu, seguí los pasos que indica vud1 en su blog, y que reproduzco a continuación con un par de pequeñas modificaciones, y el añadido de como configurar el teclado español.

Partición del disco

Antes de nada hay que hacer espacio en el disco duro, que tendremos totalmente ocupado por Mac OS X. En vez de usar BootCamp, podemos utilizar la utilidad diskutil, que según creo se incluye a partir de la versión 10.4.6 del sistema (creo que si quisiéramos tener un triple arranque con MS Windows, sí que necesitaríamos BootCamp, pero si alguna vez necesitara usar Hasefroch, recurriría a QEMU o Parallels).

Miramos las particiones de nuestro disco:

# diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *55.9 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 55.6 GB disk0s2

Según entiendo, la primera partición hace la función del BIOS de un PC normal. La partición que debemos redimensionar es la 2. Para ello hago:

# diskutil resizeVolume disk0s2 26624M "Linux" GNU 26624M "Swap" swap 2048M
Started resizing on disk disk0s2 Macintosh HD
Verifying
Resizing Volume
Adjusting Partitions

Finished resizing on disk disk0s2 Macintosh HD
You will need to manually reformat your new partitions.
WARNING: You must now reboot!

Inicialmente indiqué los tamaños en GB, pero no funcionó, mientras que señalándolos en MB curiosamente sí que funciona.

Instalación del gestor de arranque

Tras reiniciar el sistema, instalamos la aplicación rEFIt, que es un gestor de arranque, como LILO, GRUB o yaboot. Una vez descargada la imagen de disco, la abrimos y copiamos el directorio efi al directorio / de Mac OS X, de tal modo que al hacer un

# ls /efi/

nos salgan estos dos directorios:

refit tools

y activamos el rEFIt tal que así:

#cd /efi/refit
#sh ./enable.sh

Instalación de Ubuntu

Insertamos el CD de Kubuntu Dapper y reiniciamos. En principio, para que el MacBook arranque desde CD hay que pulsar la tecla C, aunque creo recordar que rEFIt ya lo hizo innecesario. Una vez arrancado el live-CD, usamos el instalador gráfico basado en Ubiquity de la manera habitual. A la hora de asignar las particiones, no debemos señalar nada para la partición EFI.

La instalación falla en el último paso, la instalación de GRUB, sobre lo que ya hay un bug abierto. Cerramos el instalador y abrimos una consola. Desde la consola lo que tenemos que hacer es montar la partición donde hemos instalado, montamos el dev y el proc y hacemos un chroot. Desde ahí instalamos y configuramos el cargador de Linux:

% sudo -s
# mount /dev/sda3 (o la partición donde hayamos instalado) /mnt
# cp /etc/resolv.conf /mnt/etc/resolv.conf (para tener unos servidores de nombres -DNS- funcionales)
# mount -t proc none /mnt/proc
# mount -o bind /dev /mnt/dev
# chroot /mnt
# vim /etc/apt/sources.list
# aptitude update
# aptitude install lilo
# aptitude dist-upgrade (para actualizar el sistema)
# aptitude install linux-686-smp (para que nos reconozca los dos procesadores del dual core :D )

En mi sources.list tengo activadas estas líneas:

deb http://es.archive.ubuntu.com/ubuntu/ dapper main restricted universe
deb http://es.archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe

deb http://kubuntu.org/packages/kde-latest dapper main
deb http://kubuntu.org/packages/koffice-stable dapper main
deb http://kubuntu.org/packages/amarok-stable dapper main

Desde esta misma consola editamos el fichero /etc/lilo.conf, dejándolo algo tal que así:

boot=/dev/sda3
default=Kubuntu

map=/boot/map
delay=20
append=”noapic”
image=/vmlinuz initrd=/initrd.img
root=/dev/sda3
label=Kubuntu
read-only

En otra terminal lanzamos lo siguiente para añadir el flag de arranque a la partición de Ubuntu:

#sudo parted
(parted) print
(parted) set 3 (o el número de la partición raíz de la instalación)
(parted) boot
(parted) on
(parted) quit

Volvemos a la terminal donde hemos editado el lilo y ejecutamos:

#lilo -b /dev/sda

Primer arranque

Finalmente reiniciamos la máquina, extrayendo el CD de instalación. Al reiniciar, en la pantalla del rEFIt veremos dos iconos: uno de la manzana, y otra del querido pingüino Tux (o quizás un rombo feote). En las opciones de abajo, las pequeñas, seleccionamos con las teclas cursor el segundo icono empezando por abajo a la izquierda, el del particionador. Al lanzarse sale una consola donde pregunta si queremos sincronizar con el MBR o algo así, y le decimos que sí. Acto seguido reiniciamos, y ya podremos arrancar GNU/Linux.

Mientras que el MacBook Pro creo que lleva una tarjeta gráfica ATI, nuestro MacBook lleva una tarjeta Intel (chipset i950) integrada en placa. Para que la resolución de pantalla tenga unos valores correctos (1280×800, por ejemplo), debemos instalar el paquete 915resolution (está en los repositorios de Ubuntu).

La disposición del teclado no coincide exactamente con la de un PC normal. La tecla AltGr no funciona (con lo que no se pueden escribir arrobas, tuberías (pipes), etc) y las teclas ºª y <> están intercambiadas.

Para solucionarlo en la consola he preparado este mapa de teclado, que se debe poner en /etc/console/boottime.kmap.gz.

Para solucionarlo en el sistema de ventanas X he creado este fichero .Xmodmap :

!!
!! xmodmap for Apple MacBook, Spanish keyboard
!! xmodmap para el Apple MacBook con teclado español
!! Enrique Matias Sanchez
!!
!! Cada tecla tiene un keycode (que se averigua con xev),
!! y se le asignan hasta 8 keysyms (fichero keysymdef.h):
!! 1) Cuando se pulsa la tecla sin ningún modificador
!! 2) Cuando se pulsa con Shift (mayúsculas)
!! 3) Cuando se pulsa con AltGr
!! 4) Cuando cuando se pulsa junto con AltGr y Shift
!!
! Se intercambian las teclas ºª y <>
keycode 94 = masculine ordfeminine backslash backslash backslash backslash
keycode 49 = less greater bar brokenbar bar brokenbar
!
! Manzana derecha -> AltGr
! Mayúsculas + manzana derecha -> botón central del ratón
keycode 116 = ISO_Level3_Shift Pointer_Button2
! Mayúsculas + Intro numérico -> botón derecho del ratón
keycode 108 = KP_Enter Pointer_Button3

Supongo que ambos se podrían mejorar (espero vuestros parches en los comentarios 😉 ) . El primer fichero será efectivo tras reiniciar la computadora (¡ojo si algún momento hay que reconfigurar console-data!).

Para el segundo hay que hacer xmodmap .Xmodmap cada vez que se arranque el sistema de ventanas X. Para que se haga automáticamente he puesto este script (con permisos de ejecución) en ~/.kde/AutoStart (supongo que habrá mejores maneras de hacerlo):

#!/bin/sh
xmodmap /home/quique/.Xmodmap

Como no siempre se tiene un ratón USB a mano, he emulado los clics derecho y central con pulsaciones del teclado (manzana derecha e intro numérico, en vez de los tradicionales F11 y F12). Para activar esta funcionalidad hay que instalar el paquete xkbset, y ejecutar xkbset m.

Con la versión actual del paquete del núcleo (linux-image-2.6.15-26-686) parecen funcionar correctamente la tecla Fn, el bluetooth y el sonido.

La tarjeta wireless está basada en el chip Atheros y usa los drivers madwifi, pero de momento no he conseguido ponerla en modo monitor, me escupe este error:

# iwconfig ath0 mode Monitor
Error for wireless request “Set mode” (8B06) :
SET failed on device ath0 ; Invalid argument.

Otros problemas:

  • si conecto un ratón al puerto USB que está al lado del puerto FireWire, el puntero va a saltos. En el otro puerto no da problemas.
  • La cámara de vídeo integrada todavía no va, aunque Ronald S. Bultje está trabajando para que funcione la iSight sobre Linux
  • A veces el teclado no reaccionaba bien, iba lento, ignoraba algunas pulsaciones o lo que es peor, repetía dos o más veces una pulsación. Éste era el principal problema, pues cuando sucedía, era muy difícil trabajar. Tal vez fuese cuestión del SMP (el live-CD funciona bien) o del orden en que se cargan los módulos. Desde hace dos o tres días no me ha sucedido, ¿quizás se haya arreglado de alguna manera?

Creación de una distribución basada en Ubuntu

En este artículo se explica como remasterizar (personalizar) la distribución (K)Ubuntu Dapper GNU/Linux. Es poco más que una traducción de los artículos

Requisitos

Antes de nada, debemos asegurarnos de que tenemos todo lo necesario:

  • unos 3-5 GB de espacio libre en disco
  • un CD o imagen ISO de (K)Ubuntu Dapper (http://releases.ubuntu.com/dapper/)
  • squashfs-utils y mkisofs instalados
  • un núcleo que admita squashfs (como el que viene de serie en Kubuntu Dapper
  • qemu instalado, para probar las imágenes que creemos

Extracción del CD

Cargamos el módulo squashfs:
$ sudo modprobe squashfs

Montamos la imagen ISO o el CD-ROM
$ sudo mount -o loop kubuntu-6.06-desktop-i386.iso /mnt
ó
$ mount /cdrom

Extraemos el contenido de la imagen en un directorio llamado «extract-cd». En mi caso lo hago en una partición aparte (hdb1), que debe estar montada de modo que permita la ejecución de binarios.
$ mkdir /media/hdb1/extract-cd
$ rsync –exclude=/casper/filesystem.squashfs -ax /mnt/ /media/hdb1/extract-cd

El CD contiene varios subdirectorios, incluyendo uno con una selección de programas libres para Windows. Si lo deseamos podemos borrarlo, ahorrando unos 95 MB.
$ sudo rm -rf /media/hdb1/extract-cd/programs
Igualmente podemos borrar el directorio disctree.

Extracción del sistema

Montamos el sistema de ficheros comprimido con squashfs
$ sudo mkdir /mnt2
$ sudo mount -t squashfs -o loop /mnt/casper/filesystem.squashfs /mnt2/

Extraemos el contenido del squashfs en un directorio llamado edit
$ mkdir /media/hdb1/edit
$ sudo cp -a /mnt2/* /media/hdb1/edit/

Ya podemos desmontar el CD y el sistema comprimido:
sudo umount /mnt2
sudo umount /mnt
sudo rmdir /mnt2

Personalización

Copiamos nuestro fichero /etc/resolv.conf para tener unos DNS que consultar al acceder a Internet
$ sudo cp /etc/resolv.conf edit/etc/

Finalmente entramos en nuestro nuevo sistema:
$ sudo chroot edit
# mount -t proc proc proc
# mount -t sysfs sys sys

Ahora podemos hacer todos los cambios que queramos. Podemos empezar editando el fichero /etc/apt/sources.list para modificar los repositorios, actualizar, y añadir/quitar paquetes.

Por ejemplo podemos eliminar los paquetes de idioma que no nos interesen (esto elimina también el paquete kubuntu-live, pero no lo necesitamos para nada)
# aptitude purge language-pack-ar language-pack-ar-base language-pack-bn language-pack-bn-base language-pack-de language-pack-de-base language-pack-fr language-pack-fr-base language-pack-hi language-pack-hi-base language-pack-nl language-pack-nl-base language-pack-kde-ar language-pack-kde-ar-base language-pack-kde-bn language-pack-kde-bn-base language-pack-kde-de language-pack-kde-de-base language-pack-kde-fr language-pack-kde-fr-base language-pack-kde-hi language-pack-kde-hi-base language-pack-kde-nl language-pack-kde-nl-base language-pack-kde-zh language-pack-kde-zh-base
e instalar otros idiomas que sí nos interesen:
# aptitude install language-pack-an language-pack-an-base

Limpieza

Borramos los ficheros que se hayan ido creando
$ sudo rm ~/.bash_history ~/.viminfo [etc]
$ sudo rm -rf /tmp/*

Los paquetes deb que hayamos descargados y estén en la cache:
$ sudo apt-get clean

Y finalmente desmontamos los sistemas de ficheros especiales y salimos del chroot
$ sudo umount proc
$ sudo umount sys
$ exit

Preparación del CD

Podemos editar el fichero extract-cd/isolinux/isolinux.cfg y añadir
preseed/locale=es_ES kbd-chooser/method=es
a las entradas append para que el CD arranque directamente en castellano.

Le damos un nombre a la imagen en extract-cd/README.diskdefines
$ sudo vim extract-cd/README.diskdefines

Regeneramos el manifest (lista de los paquetes del sistema):
chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W –showformat=’${Package} ${Version}n’ > extract-cd/casper/filesystem.manifest

Cuando se ejecuta el instalador del CD de escritorio, lo copia todo al sistema objetivo, pero después hace limpieza y elimina los paquetes que no estén en un segudo fichero llamado filesystem.manifest-desktop. Así se evita que en la instalación se incluya el propio instalador, por ejemplo.

Podemos filtrar el manifest con un script de sed. Creamos un fichero /tmp/filtro con este contenido:
/casper/d
/libdebian-installer4/d
/os-prober/d
/ubiquity/d
/ubuntu-live/d
/user-setup/d

y ejecutamos
cd /media/hdb1/extract-cd/casper
sed -f /tmp/filtro filesystem.manifest-desktop
rm /tmp/filtro

Comprimimos el sistema de ficheros (esto puede tomar 15-20 minutos, así que podemos salir a echar un café)
$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs

Calculamos las sumas MD5
$ (cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)

Y creamos la imagen ISO
$ cd extract-cd
$ mkisofs -r -V “MI_DISTRO” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../midistro.iso .

Por último, podemos probar la imagen de CD creada con el emulador QEMU
$ qemu -cdrom cdname.iso -boot d

Instalación de Lotus Notes 6.5 en Ubuntu

En mi trabajo me veo obligado a usar Lotus Notes, pero a mí me gusta trabajar en sistemas libres como Debian o Ubuntu GNU/Linux. Finalmente, hoy he conseguido hacer funcionar LN 6.5 usando Wine.

Hasta ahora había tenido problemas, usaba los paquetes .deb binarios de Ubuntu y Notes no llegaba a arrancar. Finalmente, he compilado wine usando apt-build, y curiosamente ahora funciona.

En cualquier caso, para hacer que funcione con esta versión de Wine (0.9.9), hay que borrar (o renombrar) el fichero /usr/lib/wine/usp10.dll.so. so. Por lo visto todavía está incompleta, y uno de sus huecos impide que Notes funcione.

Además, en el directorio ~/.wine/drive_c/windows/system32 hay que copiar las bibliotecas mfc42.dll, mfc42u.dll y msvcp60.dll de la instalación de Windows (o también se pueden descargar de www.dlldump.com). Con otras versiones de Wine puede hacer falta alguna cosa más o menos, véase Installing Lotus Notes 6.5 under Wine.

El directorio ~/.wine se crea al ejecutar winecfg, en donde el único cambio que hice fue decirle que imitara a Windows 98.

Ahora se copia la carpeta Lotus a ~/.wine/drive_c/Program Files/ y ya podemos probarlo con wine “c:\program files\lotus\notes\nlnotes.exe”. Además he seguido el consejo de Ted Ruegsegger y creado en .bashrc un alias que me facilite el lanzamiento:
alias notes=’wine “c:\program files\lotus\notes\nlnotes.exe” > ~/tmp/winelog 2>&1′

Panorama actual de las distribuciones institucionales

En abril de 2002 la Junta de Extremadura lanzó con notable éxito y repercusión (la iniciativa llegó a aparecer en la portada del Washington Post) la distribución de GNU/Linux LinEx, en el marco de un plan (un ordenador por cada dos alumnos, vívero de empresas, etc) para llevar Extremadura a una buena posición en la sociedad de la información. gnuLinEx está basada en Debian, y utiliza el entorno de escritorio GNOME, pero los iconos y los nombres de los programas han sido modificados para reflejar personajes y lugares de Extremadura.

Unos meses más tarde el profesor alemán Klaus Knopper publicó Knoppix, un CD arrancable, con detección de software, que presentaba al usuario un sistema Debian completo con el entorno de escritorio KDE sin necesidad de instalar nada en el disco duro de la computadora.

En primavera de 2003, un local geek llamado David Charro modificó ligeramente Knoppix para crear un live-CD hecho por el mundo para Aragón, llamado AugustuX, con el que difundir el software libre en esta tierra. Poco después el ex-ministro bicéfalo Juan Alberto Belloch se presentó como candidato a alcalde de la ciudad. Uno de los ejes de su programa era convertir Zaragoza en una ciudad del conocimiento, por lo que se reunió con miembros de la comunidad del software libre, y repartió en su campaña electoral miles de copias de Augustux. Esta iniciativa le llevó a ser entrevistado en Wired. Belloch ganó las elecciones y el concejal de nuevas tecnologías, Ricardo Cavero, ha dado pasos en la dirección correcta, pero se está lejos de convertir Zaragoza en «el Redmond del software libre en Europa».

Ya en verano, y siguiendo la estela de Extremadura, Andalucía presentó GuadaLinex. Este proyecto ha sabido encadenar tres acertadas decisiones: la primera fue basarse en el trabajo previo de LinEx (de ahí su nombre). La segunda fue abrir el desarrollo de su distribución en julio de 2005, con la creación de una forja, de modo que a partir de ese momento el desarrollo no dependería exclusivamente de una empresa, sino que cualquiera que lo desee puede participar en él. Las listas de distribución de correo de GuadaLinex se han convertido de este modo en el principal punto de encuentro de los desarrolladores de las distintas distribuciones locales, donde anuncian sus áreas de trabajo para evitar duplicidades y facilitar la coordinación de esfuerzos. Y el tercer y último acierto fue que la versión 3.0 pasara a basarse en Ubuntu, distribución orientada al escritorio a la que la empresa Canonical está dedicando importantes recursos.

A partir de ese momento empezaron a proliferar un sinnúmero de distribuciones locales impulsadas desde otros gobiernos autonómicos: MAX (Madrid), Lliurex (Valencia), MoLinux (Castilla-La Mancha), Càtix (Cataluña), Agnix (Galicia), Linux Global (Cantabria), Tirwal (Teruel), y universidades: GPUL live CD (Universidad de La Coruña), SILU-ULPGC (Universidad de Las Palmas de Gran Canaria), Einam/gnUPCix (Universitat Politècnica de Catalunya), GnUAMix (Universidad Autónoma de Madrid), Ehux (Universidad del País Vasco), ACMLux (Universidad Rey Juan Carlos), GuadaLinex_US (Universidad de Sevilla), GuadaLinex_UCA (Universidad de Cádiz), LUC3M (Universidad Carlos III de Madrid), ETSII::Live/Guachinche, Rabiche y ULL Linux (Universidad de La Laguna), etc.

Frecuentemente se critica que el motivo de esta proliferación es que los políticos puedan colgarse medallas, y que tiene aspectos negativos como división de esfuerzos, reinvención de la rueda una y otra vez y falta de coordinación entre los diferentes proyectos.

En realidad no hay tamaña duplicación de esfuerzos: todas estas distribuciones tienen una base común: Debian (o últimamente, la derivación orientada al escritorio, Ubuntu) a la que se le cambia el aspecto y se añaden unos u otros programas y modificaciones para orientarla al objetivo concreto de cada distribución. Así, por ejemplo, la próxima versión de Ubuntu (Dapper Drake) incluirá un nuevo instalador escrito en Python (Espresso) basado en el desarrollado por GuadaLinex, al igual que ya hacen Molinux y Tirwal.

El primer paso de esa colaboración fue Metadistros, un proyecto de Hispalinux para hacer fácil la creación de sistemas ‘vivos’ (live CDs) personalizados, y en el que se basaron la mayoría de las mencionadas. Una de los subproyectos de metadistros fue crear una distribucion base para cualquier universidad, llamado SILU (Sistema Informático Libre Universitario). Actualmente las universidades intercambian información por medio de los grupos de trabajo CrueTIC-SL de la Conferencia de Rectores de Universidades Españolas (cuestiones estratégicas y políticas) e IRIS-Libre de RedIRIS (cuestiones técnicas y ejecutivas).

GLUZ, desarrollada en la Universidad de Zaragoza y el Gobierno de Aragón en 2004, no aportó mayores innovaciones técnicas, pero en su desarrollo se elaboró un buen documento de Historia y cultura del Software Libre y un voluminoso manual de uso y disfrute. La documentación de usuario alcanzaría una nueva cota con el Manual de usuario Lliurex, que se imprimió en castellano y catalán valenciano en sendos libros de 400 páginas, vendiéndose al módico precio de 10 euros.

Esta documentación tiene licencia libre, por lo que está siendo aprovechada por el resto de distribuciones. Los desarrolladores se están coordinando por medio de una informal Unión de Distribuciones Autonómicas (UDA) y mantienen el código fuente en DocBook en un repositorio común, de modo que sea fácilmente personalizable para cada una de ellas. La iniciativa UDA fue presentada por Antonio Rodríguez (HispaFuentes) en el Congreso HispaLinux 2005 y en la II Open Source World Conference de Málaga.

Por último, El Periódico de Catalunya publicó en enero de 2005 que el Centro Nacional de Información y Coordinación Educativa (Cenice), dependiente del Ministerio de Educación y Ciencia, pretendía facilitar la coordinación de las distribuciones, no con idea de hacer una distribución única, sino de crear un repositorio común de soluciones para asegurar que nadie reinvente la rueda. Sin embargo no han llegado posteriormente más noticias sobre esta propuesta.

Conclusión

En mi opinión, la fantástica proliferación de distribuciones ha contribuido a que el sistema operativo sea conocido por una gran cantidad de gente a la que de otra manera hubiera sido difícil llegar y conseguir que probaran el software libre, así como traducciones, corrección de fallos, nuevas herramientas y aplicaciones, formación de usuarios… Las distribuciones colaboran entre sí mucho más de lo que la gente cree, aprovechando cada una los avances de las otras, aunque se echa de menos que esta cooperación no esté más organizada y centralizada en un solo punto.

Esto ha sido un examen a vista de pájaro de la situación. Sin duda habré cometido errores y pasado por alto numerosos aspectos, cosa que podéis corregir añadiendo comentarios.

The Complete FreeBSD, con una licencia CC

Hace diez años, el 24 de febrero de 1996, Greg Lehey envió para su publicación la versión final del primer libro de la historia sobre el sistema operativo FreeBSD, “Installing and Using FreeBSD”. Posteriormente se le cambiaría el nombre a “The Complete FreeBSD“, como hoy es conocido y estimado por los usuarios de este sistema.

Grog tuvo cuidado en conservar todos los derechos sobre el libro, y hoy ha decidido publicarlo en Internet bajo una licencia de Creative Commons license.

Además, y dado que él no dispone de tiempo para seguir actualizándolo, pide ayuda a los usuarios. No garantiza dinero, pero sí gloria.

Más información en http://www.lemis.com/grog/Documentation/CFBSD/

GNU Gnash – Reproductor libre de Flash 7

La FSF anuncia GNU Gnash – Reproductor de películas Flash
Traducción: Enrique Matías.

La Free Software Foundation anunció ayer, lunes 9 de enero de 2006, la adición de Gnash, reproductor de películas flash y complemento de Firefox de GNU, publicado bajo la Licencia Pública General de GNU (GNU GPL).

Gnash es un proyecto para crear un reproductor de flash que cumpla con la versión 7 de SWF, con una imagen de alta calidad. Es el reproductor libre de Flash más avanzado que existe actualmente, y una importante adición al proyecto GNU.

La publicación de Gnash representa el logro de uno de los proyectos de más alta prioridad del movimiento del software libre (vea http://www.fsf.org/campaigns/priority.html).

Rob Savoye, responsable de Gnash, bosquejó los detalles del proyecto e hizo una llamada de apoyo a desarrolladores: «Ahora mismo, Gnash reproduce más películas que cualquiera de los otros reproductores libres. Todas las clases ActionScript existen y funcionan, pero no todos los métodos de cada una de las clases están completamente implementados. Con unos pocos desarrolladores más, podría estar razonablemente completo en unos pocos meses.»

Sus capacidades incluyen:

Funciona como una aplicación autónoma – Gnash puede ejecutarse independientemente para reproducir películas Flash.

Complemento de Firefox – Gnash puede ejecutarse como un complemento desde Firefox y Mozilla.

Cumple con SWF v7 – Gnash puede reproducir muchas películas Flash actuales.

Servidor de mensajes XML – Gnash también reconoce un sistema de mensajes basado en XML tal y como está documentado en la especificación del formato Flash.

Salida de alta calidad – Gnash utiliza OpenGL para representar los gráficos.

La página web del proyecto está en http://www.gnu.org/software/gnash/. Las fuentes en desarrollo de Gnash están disponibles vía CVS anónimo desde http://savannah.gnu.org/projects/gnash/. Los servicios de CVS anónimo los proporciona Savannah, una interfaz web para alojar y mantener páginas web, seguimiento de fallos, CVS, FTP, y listas de distribución, todo funcionando con software libre, sin publicidad, para toda la comunidad.

El desarrollo de Gnash está patrocinado por PubSoft. PubSoft apoya varios proyectos de software libre conectando desarrolladores con financiación https://www.pubsoft.org/pubsoft.py/viewprojects.

Acerca de la Fundación para el Software Libre:

La Free Software Foundation, fundada en 1985, se dedica a promover los derechos de los usuarios de computadoras a usar, estudiar, copiar, modificar y distribuir programas de computadoras. La FSF promueve el desarrollo y uso de software libre, particularmente el sistema operativo GNU y sus variantes GNU/Linux, y documentación libre para el software libre. La FSF también ayuda a crear conciencia de los aspectos éticos y políticos de la libertad en el uso de software. Su sitio web, ubicado en www.fsf.org, es una importante fuente de información sobre GNU/Linux. Se pueden hacer donaciones para apoyar su trabajo en http://donate.fsf.org. Su cuartel general está en Boston, Massachusetts, Estados Unidos.

La Fundación para el Software Libre en Europa (FSFE), fundada en 2001, es una organización caritativa no gubernamental dedicada a todos los aspectos del software libre en Europa. El acceso al software determina quien puede participar en una sociedad digital. Las libertades de usar, copiar, modificar y redistribuir software, tal y como se describen en la definición del software libre, permiten la participación equitativa en la era de la información. Crear conciencia sobre estos asuntos, dar garantías al software libre política y legalmente, y dar a la gente libertad apoyando el desarrollo de software libre son cuestiones centrales para la FSFE. Se puede encontrar más información sobre el trabajo de la FSFE en http://fsfeurope.org, y usted puede participar activamente en http://fsfeurope.org/contribute/.

Actualmente existen Fundaciones para el Software Libre en los Estados Unidos, Europa, India y América Latina. Todas las FSF forman una red de organizaciones hermanas.

Instalación de MySQL en FreeBSD

Empezamos por instalar el port:
cd /usr/ports/databases/mysql41-server/
make install clean

A continuación generamos las tablas de permisos de MySQL:
/usr/local/bin/mysql_install_db

Cambiamos el propietario y grupo del directorio de datos:
chown -R mysql:mysql /var/db/mysql/

Iniciamos MySQL en modo seguro:
/usr/local/bin/mysqld_safe --user=mysql &

Y establecemos la contraseña del administrador de la base de datos (que no debe ser la misma que la del administrador del sistema):
/usr/local/bin/mysqladmin -u root password abrete_sesamo

Lo que no tengo claro es si debe ejecutar también otra orden del estilo de
/usr/local/bin/mysqladmin -u root -h maquina.dominio.red password abrete_sesamo
¿Alguien me lo puede aclarar, por favor?

Y para que el servidor MySQL se inicie automáticamente al arrancar el equipo:
echo mysql_enable = "YES" >> /etc/rc.conf

Si en cambio quisiéramos iniciarlo manualmente:
/usr/local/etc/rc.d/mysql-server.sh start

El tutorial Cómo configurar MySQL de Joel Barrios Dueñas explica muy bien las órdenes básicas de MySQL: como crear y borrar bases de datos y usuarios, ver tablas, etc. Únicamente echo en falta la cláusula WITH GRANT OPTION, que permite que un usuario conceda a otros usuarios cualquiera de los permisos que tiene.

Debian estable (Sarge) actualizada a 3.1r1

Ayer 20 de diciembre se publicó la primera actualización de Debian GNU/Linux 3.1 (nombre en código `sarge’), que principalmente añade actualizaciones de seguridad a la versión estable, así como algunas correcciones a problemas serios. Quienes actualicen frecuentemente de security.debian.org no tendrán que actualizar muchos paquetes, y la mayoría de las actualizaciones de security.debian.org se incluyen en esta actualización.

Esta actualización no produce una nueva versión de Debian GNU/Linux 3.1, sino que sólo actualiza unos pocos paquetes de ella. No hay necesidad de tirar los CD de 3.1, sino simplemente actualizar con ftp.debian.org tras la instalación, para incorporar estos últimos cambios.

La actualización a esta revisión a través de la red se hace normalmente apuntando la herramienta de paquetes `apt’ (véase la página de manual sources.list(5)) a una de las numerosas réplicas FTP o HTTP de Debian. Hay una lista completa de réplicas en http://www.debian.org/mirror/list.

La preparación de esta actualización ha durado seis meses. Acumula 172 actualizaciones de seguridad y 16 correcciones importantes.

Entrevista a Richard Stallman

ZNet ha publicado una nueva entrevista a Richard Stallman. La primera parte es una breve introducción a la filosofía del software libre, que probablemente no dirá nada nuevo a la mayoría de los barrapunteros, pero para los no iniciados, condensa las ideas esenciales en unos pocos párrafos.

La segunda parte de la entrevista es más especial, pues Stallman expone sus opiniones personales sobre el capitalismo, George W. Bush y cuestiones de raíz política como las patentes de software o la prohibición de programas como DeCSS.

Un fragmento:

Fascism is a system of government that sucks up to business and has no respect for human rights. So the Bush regime is an example, but there are lots of others. In fact, it seems we are moving towards more fascism globally.

Sigue leyendo Entrevista a Richard Stallman