índice
La Redacción se ha esforzado para que el material publicado en la revista y en los DVDs que la acompañan funcionen correctamente. Sin embargo, no se responsabiliza de los posibles problemas que puedan surgir. Todas las marcas comerciales mencionadas en la revista son propiedad de las empresas correspondientes y han sido usadas únicamente con fines informativos. La Redacción usa el sistema de composición automática Imprenta: KENGRAF Los DVDs incluidos en la revista han sido comprobados con el programa AntiVirenKit, producto de la empresa G Data Software Sp. z o.o. ¡Advertencia! Venta del presente número sin el consentimiento del editor es ilícita e ilegal.
2
Linux+ 2/2004
ste es el segundo número de la revista ”Linux+”, la única revista sobre Linux con dos discos DVD, que se puede adquirir en 13 países de Europa (ahora también en Italia). El primer número, según nuestras informaciones, os ha gustado mucho y estáis muy contentos de que haya aparecido en el mercado. ¿Qué os hemos preparado esta vez? El tema de este número son los multimedia, y más exactamente se trata de la creación
de sonido. Desde hace mucho se sabe que para Linux son disponibles muchos programas de este ramo (http://www.linuxsound.org/ ), pero ahora también se pueden utilizar profesionalmente. Nuestra redacción tiene el propósito de ayudar a una de las estaciones locales de radio a pasarse a Linux: de seguro escribiremos sobre esto. Os animo a leer este número y os pido vuestra opinión sobre el tema de la revista. El próximo Linux+ aparecerá en noviembre, así que nos encontraremos de nuevo dentro de dos meses. Krzysztof Krawczyk Redactor Jefe Linux+
En este número de 6
:
Descripción del contenido de DVDs Piotr Truszkowski
linuxfresh
Actualidades: 14 Novedades
Krzysztof Krawczyk, Witold Kieraś
16
El núcleo Linux
18
Debian
20
Mandrake
Maja Królikowska
Grzegorz Prokopski Daniel Koć
21
Aurox
22
Gentoo
Jarosław Górny Jarosław Świerad, Witold Kieraś
24
GNOME
Mateusz Papiernik
26
KDE
28
LinuxFresh
34
Juegos
36
Trucos y truquillos
Paweł Biliński Piotr Machej
Witold Kieraś, Krzysztof Krawczyk Grzegorz Niewęgłowski
gnome
Dirección: Software–Wydawnictwo Sp. z o.o., ul. Lewartowskiego 6, 00-190 Varsovia, Polonia
E
kde
Bimestral Linux+ está publicado por Software-Wydawnictwo Sp. z o. o. Producción: Monika Godlewska monikag@software.com.pl Redactor jefe: Krzysztof Krawczyk krzysiek@lpmagazine.org Redactores adjuntos: Piotr Truszkowski, piotrt@lpmagazine.org Witold Kieraś, witekk@lpmagazine.org Asistentes de Redacción: Katarzyna Gajewska, kasiag@lpmagazine.org Anna Kuran, aniak@lpmagazine.org Preparación de DVDs: Krzysztof Krawczyk, Piotr Truszkowski Diseño portada: Agnieszka Marchocka Publicidad: adv@software.com.pl Suscripción: subscripcion@software.com.pl Maquetación y composición: Marcin Ziółkowski marcin@software.com.pl Traducción: Paulina Stosik, Mariusz Muszak, Roberto Buchting Soza, Hanna Grafik-Krzymińska Correctores: Rosario Ortega Serrano, Fernando Escudero García, Andoni del Olmo, David Aranda Alonso, Jorge Barrio Alfonso, Mario Plasencia Ortega Distribución: SGEL Avda Valdelaparra, No29, Polígono Industrial, 28108 Alcobendas (Madrid), España
El primer paso ya lo dimos
índice
Tema del número
Multimedia
Multimedia
42
40
Linux en el estudio de grabación
Entrevista con Ton Roosendaal, fundador de Blender Foundation Witold Kieraś
Equipo
62
Paweł Wolniewicz
Las siguientes aplicaciones de Linux son cada vez mejor recibidas. Así es en el caso de lo multimedia. Ahora mismo se puede usar con éxito nuestro sistema operativo en el estudio de grabación. Paweł presenta qué hardware y software son necesarios para este objetivo y nos enseña a cómo configurarlos y usarlos. Se centra en el servidor del sonido JACK y en las aplicaciones MuSE y Ardour.
Entrevistas
38
Entrevista con Eric S. Raymond, presidente de la Open Source Initiative Witold Kieraś
Piotr Wolny
Si no fuera por la entrega de Ton Roosendaal, Blender, superprograma para la creación de gráficos 3D, sería recordado como uno de estos programas comerciales que defraudaron las esperanzas que se pusieron en ellos. Precisamente por su iniciativa se creó la organización Blender Foundation, que recogió los fondos necesarios para dar acceso a la fuente de este programa y su consiguiente desarrollo por la comunidad Open Source. Decidimos conversar con él y darnos cuenta de algunas cosas.
Primeros pasos
52
Blender: una expedición a la tercera dimensión Piotr Machej
Si tuviéramos que señalar a la persona que más frecuentemente se asocia a Linux, ésta sería, sin lugar a dudas, Linus Torvalds. Si habláramos de Software Libre sería posiblemente Richard M. Stallman. Y ¿quién sería en el caso de Open Source? Eric S. Raymond creo que no es tan conocido como las dos personas mencionadas anteriormente, pero él es, precisamente, el presidente de Open Source Initiative. Decidimos conocer más de cerca su opinión sobre diferentes temas.
ACPI – gestión de energía en Linux
En Windows los gráficos 3D por lo general se realizan en el programa 3ds max. Su equivalente en Linux es Blender. Con ayuda de este segundo programa se pueden hacer preciosísimas imágenes y espléndidas animaciones. Todo el que quiera conocer los secretos de trabajar con este programa, debería familiarizarse con el artículo de Piotr, que paso a paso enseña cómo generar una imagen de ejemplo.
Frecuentemente dejamos encendidos nuestros ordenadores domésticos durante todo el día, incluso cuando no trabajamos en ellos. Todo esto, sin embargo , cuesta: el contador de la energía eléctrica no se detiene. Precisamente entonces pueden ser de ayuda los mecanismos de administración de energía accesibles en ACPI, que no se han diseñado única y exclusivamente para ordenadores portátiles. Piotr os enseñará cómo suspender el procesador cuando no se usa y, además, cómo disminuir su frecuencia con OverClocking.
Para programadores
72
El visualizador de consola de archivos gráficos
Marek Sawerwain Rara vez hacemos uso del framebuffer, si tenemos a nuestra disposición el entorno gráfico de trabajo, como KDE o GNOME. Sin embargo, cuando estamos “condenados” al modo textual, resultan ser muy necesarias las herramientas escritas para el framebuffer. En este artículo veremos cómo escribir un sencillo visualizador de archivos gráficos desde la consola textual. Marek nos ayudará a entender cómo funciona todo esto.
Buena lectura
80
The Art of Unix Programming Red Hat Linux and Fedora Unleashed
Witold Kieraś, Krzysztof Krawczyk www.lpmagazine.org
3
¡Acoge el pingüino! Sólo ahora, si te suscribes a Linux+ recibirás un original pingüino de peluche de una serie limitada, únicamente para los Lectores de la revista.
REGALO
¡Pide suscripción! LiNUX+ por suscripción es más barata:
86 €
¡En cada número 2 DVDs! Si tienes preguntas, problemas o dudas, escribe a:
subscription@software.com.pl
Pedido
Por favor, rellena este cupón y mándalo por fax: 0048 22 860 17 71 o por correo: Software-Wydawnictwo Sp. z o. o., Lewartowskiego 6, 00-190 Varsovia, Polonia; e-mail: subscription@software.com.pl Nombre(s)
Apellido(s)
Dirección C. P.
Localidad, provincia
Teléfono
Fax
Suscripción a partir del N°
Precio de suscripción anual (12 números) de LiNUX+ – 86 € Realizo el pago con: □ tarjeta de crédito nO
Válida hasta
□ cheque a la dirección de la editorial Software-Wydawnictwo Deseo recibir la factura antes de realizar el pago □
Fecha y firma obligatorios:
Los DVDs están disponibles únicamente en la versión de Linux+ DVD
En caso de problemas con los DVDs, escribir a: cd@software.com.pl
descripción de DVDs aktualności
Noticias Skype 0.90 ¿Tu también tienes la impresión de que tus recibos teléfonicos son muy altos? Si es así, entonces por qué no utilizar ... Internet. Skype es un programa que funciona de la misma forma que ICQ, pero dedicado a las conversaciones de voz. ¿A lo mejor ya es el momento de comenzar a conversar a través de Internet? Esto no cuesta nada. En el disco encontraréis la versión más nueva del programa presentado, en paquetes RPM, así como en un paquete estático ejecutable. http://www.skype.org/ nVidia 1.0 - 6106 La última versión de los controladores de las tarjetas gráficas apoyados en los chipsets de la empresa nVidia. El soporte de las tarjetas con los chips GeForce 6800, ayuda a la distribución con el núcleo de una pila menor (entre otros, Fedora Core 2) y con la ayuda añadida para ACPI, son sólo algunas de las novedades. Con toda seguridad vale la pena instalarlos en nuestro sistema, si poseemos la tarjeta con el chipset de la empresa nVidia. http://www.nvidia.com/ Opera 7.52 Al navegador de Internet Opera se le conoce como el más rápido navegador del mundo. La razón de esta afirmación puede ser tema de una larga discusión, pero hay que reconocer que Opera es actualmente uno de los mejores navegadores de web. Gracias a sus atractivas soluciones, el gratuito acceso a la versión completa desde la página del fabricante (con los anuncios) y a las versiones para diferentes sistemas operativos (Opera es accesible, entre otras, para las plataformas Windows, Linux, Solaris, QNX, OS/2, MacOS, FreeBSD i386, BeOS), este navegador ha obtenido reconocimiento de gran parte de los usuarios en todo el mundo. Si te parece bien utilizar Mozzila y los navegadores derivados de él, te enfada Konqueror y no puedes decidir qué escoger, entonces escoge Opera. Te garantizamos que quedarás contento. http://www.opera.com/
disco A
Linux+ Live DVD
L
inux+ Live DVD es una distribución de Linux iniciada del DVD. No exige su instalación en el disco duro y puede funcionar independientemente del sistema operativo ya instalado. Para iniciar Linux+ Live, es suficiente en la BIOS del ordenador dar la unidad de DVD como la herramienta básica de arranque, introducir el disco de nuestra distribución en la unidad y volver a iniciar el ordenador. Después de breves instantes, ante nuestros ojos aparecerá el panel de bienvenida. El sistema automáticamente detectará nuestro equipo y configurará el entorno gráfico. Durante el inicio hay que escoger todavía el lenguaje obligatorio en el sistema. Linux+ Live contiene entre otros: •
• •
el núcleo de Linux 2.6.6 con muchos parches que aumentan su funcionalidad; el entorno gráfico KDE 3.2.1; el software Blender, SuperKaramba y TuxKarts.
Linux+ Live tiene como objetivo la presentación de los programas descritos en el número. Por ejemplo, para hacer uso de los beneficios del programa Pic_View, descrito en este número por Marek Sawerwain,
Documentación El conjunto de documentos HOWTO: una ayuda inestimable para cada usuario, no sólo principiante, de Linux. Merece la pena conocerlos. http://www.tldp.org/
Linux+ Live
6
Linux+ 2/2004
es necesario iniciar el sistema con la utilización del framebuffer. Para hacer esto, después de aparecer el panel de bienvenida, escribimos fb1024 y pulsamos [Enter]. El sistema se inicia en el modo textual. Nos registramos como usuario aurox sin contraseña (cuando nos pregunten por la contraseña, pulsamos [Enter]. Para iniciar Pic_View, nos vamos al directorio adecuado (cd /home/ aurox/Pic_View) e iniciamos nuestro visualizador: ./picview logo.png. Debería aparecer una imagen que, al mismo tiempo, es el logotipo de nuestras páginas web. Desgraciadamente, en algunos ordenadores el framebuffer no funciona correctamente... Linux+ Live DVD es una estupenda ocasión para presentar a Linux en su entorno. Teniendo contigo el disco de la distribución de Linux, puedes hacer uso de ella en cualquier lugar donde tengas acceso a un ordenador. ¡Que te diviertas! Para arrancar Linux+ Live DVD, iniciamos el ordenador del DVD B, que acompaña a la revista, escribimos aurox y pulsamos [ Enter ]. Para arrancar Linux+ Live con el soporte del framebuffer, escribimos f b1024 y pulsamos [ Enter ].
disco A
Linux From Scratch
L
inux From Scratch (LFS) es un proyecto para crear la documentación completa de la construcción del sistema Linux desde el principio, en orden, compilando sus elementos fundamentales, tales como glibc, binutils, gcc o el núcleo. LFS Book, porque así se llama el producto abanderado de este proyecto, describe detalladamente todas las fases de este proceso, dando ejemplos, aclarando los pormenores de las opciones de la configuración y prediciendo los errores que más frecuentemente aparecerán. LFS es también un conjunto de fuentes de compilación, probadas por los creadores del proyecto y revisadas por un mutuo acuerdo. LFS es, sobre todo, una comunidad concentrada alrededor de las listas y grupos de discusiones y, además, de los canales IRC, donde se puede encontrar ayuda en cuestiones tanto básicas como también de un nivel más avanzado. LFS Book es accesible en tres versiones: stable, testing y unstable, completamente igual a las distribuciones de Linux. Igualmente existen varios proyectos de traducción, entre otros al francés, español y alemán, además de al ruso y al chino. El documento Beyond LFS trata del mantenimiento y del desarrollo futuro de LFS; entre otros, del servidor de los X y de los entornos gráficos más importantes (KDE o GNOME).
Creado con LFS
Pero, ¿con qué objetivo se puede pasar por un proceso penoso de desarrollo del sistema, si alguien ya lo ha hecho en vez de nosotros? Por eso, precisamente se distribuye Linux como una distribución; para ahorrar trastornos a los usuarios. Los autores de LFS no comparten esta opinión. La construcción del sistema por sí misma es ante todo una buena oportunidad para aprender: no hay mejor modo para enterarse de cómo colaboran los componentes particulares del sistema, de verificarlo por sí mismo, pero vigilado por un maestro con experiencia. LFS Book es un maestro así y lo es también el sistema entero de ayuda que ofrece este proyecto. Por fin, el usuario principiante no está solo. En nuestro disco encontraréis, sobre todo diferentes versiones de LFS Book y LFS Packages – del conjunto de las fuentes necesarias para el desarollo del sistema. Además, tenéis también nuevas versiones de los núcleos (en la versión 2.4.x, así como 2.6.x), del compilador GCC y de las librerías glibc (en la versión con CVS), además de parches extras creados para el proyecto LFS. Si quieres saber exactamente qué sucede con tu Linux familiar, LFS es para ti.
descripción de DVDs
MPlayer 1.0pre4 + codecs MPlayer es una de las mejores – no sólo de Linux - “máquinas combinadas” multimedia. Permite ver películas, escuchar música, grabar discos DVD a diferentes formatos populares de las películas y mucho más. En el disco encontraréis también un conjunto de diferentes códigos de compresión, gracias a los cuales podréis ver cualquier película sin ningún problema. Además, hemos incluido un conjunto de las más diferentes “máscaras”, que os permitirán cambiar el aspecto de Mplayer. http://www.mplayerhq.hu/ Linux 2.6.7 La última estable versión del núcleo del sistema. Mejor soporte para los chipsets nForce, multimedia y, además, la correción de muchos errores es un impulso suficiente para actualizar nuestro núcleo del sistema. Especialmente para vosotros hemos incluido también parches para el núcleo presentado, aumentando así su funcionalidad. http://www.kernel.org/ DVB Los drivers para tarjetas que permiten captar para Linux la televisión digital. http://www.linuxtv.org/ Flash Player 7 El último plug-in de Linux para Flash, destinado al navegador de Internet Mozilla (y a los navegadores parecidos: Firefox y Galeon). Konqueror, el navegador predefinido en el entorno KDE, también puede usar este plug-in. http://www.macromedia.com/ Suplementos para KDE y GNOME SuperKaramba es un programa para KDE, que permite aprovechar los así llamados temas: scripts escritos en Python que desarrollan las funcionalidades de nuestro escritorio, p.e. visualizan el estado del tiempo en un lugar determinado del mundo o las últimas noticias de las páginas web que hayamos elegido. Por otro lado, GDesklets es SuperKaramba para el entorno GNOME. En nuestro disco presentamos una amplia colección de temas, tanto para SuperKaramba, como para GDesklets, facilitados por sus autores, entre otras posibilidades, en las páginas: http://ww.kde-look.org/ http://www.gnome-look.org/. http://netdragon.sourceforge.net/ http://gdesklets.gnomedesktop.org/
www.lpmagazine.org
7
descripción de DVDs
disco A
Debian GNU/Linux 3.0r2 – Woody
D
ebian GNU/Linux es una de las más conocidas y más respetadas distribuciones de Linux. Se originó en el año 1994 como un proyecto creado por voluntarios de todo el mundo, unidos por un contrato social de Debian: no está detrás de ellos ninguna empresa. Debian es un símbolo de calidad, infalibilidad y seguridad. Sus developers ponen en primer lugar la calidad del software y la comodidad de su administración. Gracias a sus cualidades, Debian es la distribución más frecuentemente escogida como base para la creación de nuevas distribuciones especializadas, como por ejemplo la distribución que cuenta con un gran éxito, Knoppix. En este número de Linux+ hemos incluido en el DVD Debian en la versión 3.0r2: esta es la única estable versión oficial (de nombre de código Woody) con correcciones de seguridad. No contiene nuevos paquetes, pero está muy bien testeada y es perfecta como un sistema para servidores o también como base para un sistema de escritorio, que podemos actualizar con nuevos paquetes desde Internet (de la rama inestable) con ayuda de Apt. Debido a que el trabajo con la siguiente versión de nombre Sarge se retrasa y que queremos poner en vuestras manos versiones de prueba, hemos considerado que vale la pena presentaros Debian, precisamente, en la forma de Woody corregido. Para instalar Debian Woody, en BIOS configuramos la unidad DVD como la herramienta básica de arranque, y después arrancamos el ordenador desde el DVD. Al principio, escogemos el núcleo escribiendo su nombre después de boot: para escoger tenemos vanilla, compact, idepci, bf24 (recomendamos esta última opción, ya que se refiere al núcleo 2.4). Después, escogemos el lenguaje y pasamos al menú principal del instalador. Definimos el teclado como qwerty/es: Spain, y con ayuda del programa cfdisk creamos la partición para Debian (sobre todo / y swap, pero también vale la pena designar una partición aparte para el directorio /home). Después de salir de cddisk, activamos la partición
8
Linux+ 2/2004
Así puede verse vuestro Woody
swap y preparamos para montar las particiones de Linux. El paso siguiente es la instalación del núcleo y de sus módulos, y la configuración de dichos módulos. Sobre todo debemos tomar en cuenta la selección de los drivers adecuados para la tarjeta de red. Los módulos del núcleo utilizados con más frecuencia son: los drivers de las tarjetas de redes ( /kernel/drivers/net), los drivers de las tarjetas de sonido ( /kernel/drivers/sound), los drivers de las tarjetas de vídeo ( /kernel/drivers/media/ video) y los de los puertos paralelos (LPT) ( /kernel/drivers/parport). Luego configuramos la red: damos el nombre de nuestro ordenador y seleccionamos la configuración automática de las interfaces de red o, manualmente, escibimos la dirección IP del ordenador, la máscara de la subred, el gateway, nombre del dominio y la dirección IP del servidor DNS. Ahora comenzará la instalación del sistema base: el proceso de instalación puede seguir en la cuarta consola. La última etapa es la intalación y la configuración de LILO y la creación del disquette de arranque. Cuando lo hagamos, sacamos el DVD de la unidad y reiniciamos el ordenador.
Después de arrancar el ordenador, tenemos ya el sistema básico funcionando. El instalador nos pregunta si el reloj del ordenador está establecido en GMT. Debemos todavía indicar la región y la capital del país. Luego queda la creación de las cuentas y de las contraseñas del administrador y de los usuarios. En este momento podemos instalar los siguientes paquetes del disco: señalamos el DVD como la fuente de los paquetes, lo escaneamos y escogemos los paquetes que necesitamos. En el caso de algunos paquetes, tendremos que responder a las preguntas que se refieren a su configuración. Puede suceder que algunos paquetes no puedan instalarse o configurarse por primera vez. El instalador preguntará si volver a intentar: aceptamos, y probablemente esta vez todo saldrá correctamente. Después de instalar todos los paquetes, nos registramos en el sistema. Tenemos la esperanza de que nuestra edición DVD de Woody, aunque sea sólo un poco, os endulzará la espera de Sarge. Entre tanto, se puede actualizar la rama estable de una de las dos desarrolladas: testing (Sarge) o unstable (Sid). http://www.debian.org/
disco B
descripción de DVDs
Gentoo Linux 2004.1 DVD
G
entoo Linux es una distribución relativamente joven, pero muy dinámicamente creciente de Linux. La principal cualidad de este sistema, que diferencia Gentoo Linux de todas otras distribuciones, es la forma de tratar de sus autores el asunto de la instalación del software. En el Gentoo tradicional no encontraremos aplicaciones precompiladas: tendremos que compilarlo todo solos. Antes de que pienses: “no, esto no es para mí”, te pediría, querido Lector, que me escuches hasta el final. Los beneficios que obtenemos por la compilación manual de los paquetes y de su adecuación a nuestro equipo tienen decididamente más ventajas que desventajas. También hay que señalar que el proceso de compilación del software es en Gentoo totalmente automático. Las actuales distribuciones de Linux se basan en paquetes, que alguien ya compiló para ti en su ordenador, según sus gustos. ¿Te gustaría que tu sistema fuera construido de acuerdo a tus necesidades o a las necesidades de otro? ¿ Te gustaría que funcionara realmente rápido, aprovechando tu equipo al máximo? Y finalmente, ¿te gustaría despojarte de todo este relajo que se llama “búsqueda en Internet de los paquetes que cumplen la dependencia de un paquete del otro y de un tercero”? Si tu respuesta a dos de estas preguntas ha sido afirmativa, entonces Gentoo puede que resulte ser la distribución con la que te quedarás verdaderemente contento.
Antes de instalación
La instalación de Gentoo la comenzaremos desde el inicio del ordenador con el
disco DVD B, adjunto a este número de Linux+. Aparecerá la pantalla de bienvenida. Después de pulsar [F2] veremos la pantalla de selección de las opciones (hay que escribirlas sin comas, por ejemplo gentoo noacp nousb y acerptarlas pulsando [Enter]). Después de haber realizado la selección adecuada, se inicia Gentoo Live, desde donde iniciaremos nuestra intalación. Lo primero que vale la pena hacer es el cambio de la contraseña de root durante la instalación para que podamos, en caso necesario, pasar a otras consolas virtuales. Damos el comando passwd y dos veces escribimos nuestra contraseña: no tiene ninguna importancia (la contraseña para el administrador del sistema la defineremos más tarde), pero es muy importante que la recordemos durante la instalación. Después, preparamos las particiones del disco duro. Nos concentramos en la siguiente división: la partición principal (/), la partición con los directorios principales de los usuarios ( /home) y la partición swap. Para crear las particiones hacemos uso del programa cfdisk, conocido por los usuarios de Debian y Slackware: cfdisk /dev/hdX. En este caso hdX es el símbolo de nuestro disco duro. Aceptamos la convención de que nuestro disco es /dev/hda, y las particiones creadas se verán de la siguiente manera: •
/dev/hda1 – área de intercambio swap; el principio general dice que designamos para ella tanto lugar en el disco duro cuanta memoria RAM tengamos; en el caso del ordenador de casa no tiene ningún sentido que esta partición tenga más de 256 MB;
¡Atención! Instalación de Gentoo desde otra distribución de Linux
Podemos instalar Gentoo desde otra distribución de Linux. Con este fin dejamos el paso para el arranque del ordenador desde el DVD. El resto del procedimiento es idéntico, es decir, creamos una partición aparte y en ella el sistema de archivos, después descomprimimos stage1 en la nueva partición, copiamos portage-L+.tar.bz2 al directorio /usr iniciado como resultado de descomprimir stage1 y, luego, los archivos del directorio /distfiles/base presentes en el disco. Montamos el sistema de archivos /proc y ejecutamos chroot en la nueva partición creada. Después, continuamos de acuerdo a las instrucciones del artículo. El método de la instalación desde otra distribución es tan cómodo que no nos exige interrumpir nuestro trabajo. Debemos, sin embargo, tomar en cuenta la carga del sistema, así que no recomendamos este método a las personas que tengan un procesador lento y con poca memoria RAM.
Figura 1. Gentoo 2004.1 durante el inicio
www.lpmagazine.org
9
descripción de DVDs
¡Atención! Instalación desde los paquetes binarios
Para hacer uso de los paquetes binarios (incluidos en nuestro DVD en el directorio /distfiles/binary), hay que ejecutar las siguientes operaciones: iniciar el ordenador con el DVD, crear la partición y el sistema de archivos para ella, descomprimir de nuevo la partición creada stage3, copiar portage-L+.tar.bz2 al directorio /mnt/gentoo/usr, creado como resultado stage3 en la nueva partición, descomprimir portage-L+.tar.bz2, copiar el contenido presente en el disco del directorio /mnt/cdrom/distfiles/binary/* al directorio /mnt/gentoo/usr/portage/ packages en la nueva partición (mkdir /mnt/gentoo/usr/portage/packages
;
cp -r /mnt/cdrom/distfiles/binary/*
/mnt/gentoo/usr/portage/packages),
swapon /dev/hda1
gentoo/usr/portage/distfiles), ejecu-
mkdir /mnt/gentoo/home
/mnt/
/dev/hda2 – la partición principal /; sería bueno atribuir para ella 3 GB (o más); /dev/hda3 – la partición /home; su dimensión depende únicamente de las necesidades y posibilidades del usuario.
Recordemos que a la partición /dev/hda1 hay que darle el tipo swap (Type -> 82), y a la particion /dev/hda2 señalarla como bootable (Bootable). Guardamos el sistema de las particiones escogiendo la opción Write y salimos del programa (Quit). El siguiente paso será la creación de la partición de intercambio: mkswap /dev/hda1.
10
Si en estas particiones anteriormente fue creado algún sistema de archivos, es necesario obligar al cambio con la opción -f. Incluimos ahora a la acción el área de intercambio swap.
Debemos montar igualmente las particiones creadas / y /home:
tar chroot en la nueva partición y instalar el núcleo (sh kernel.sh). Más tarde, para instalar los paquetes binarios, damos el comando emerge -k nombre _ paquete (por ejemplo, emerge -k kde). La lista del software está en el directorio /usr/portage/packages/All. Cuando hayamos instalado todos los paquetes binarios necesarios y configurado el programa de arranque, podemos reiniciar el sistema. En caso de problemas con el kernel 2.6.5 precompilado, merece la pena instalar el kernel 2.4.26 desde las fuentes: emerge genkernel, emerge gentoo-sources y genkernel --install --bootsplash all. El kernel será automáticamente compilado e instalado.
•
mkfs.xfs /dev/hda2 ; mkfs.xfs /dev/hda3
copiar el contenido presente en el disco del directorio /mnt/cdrom/distfiles/base/ * al /mnt/gentoo/usr/portage/distfiles (cp /mnt/cdrom/distfiles/base/*
•
Después de crear la partición de intercambio llega la hora de crear los sistemas de archivos. Gentoo nos ofrece en este lugar, entre otros, Ext2, Ext3, ReiserFS, JFS y XFS. Mirando los grupos de discusiones y leyendo los foros de Gentoo, se puede encontrar una opinión muy buena sobre XFS, así que nos centraremos precisamente en él:
Linux+ 2/2004
mount /dev/hda2 /mnt/gentoo mount /dev/hda3 /mnt/gentoo/home
Para poder comenzar el trabajo con la instalación adecuada del sistema, debemos descomprimir los archivos que nos son necesarios: cd /mnt/gentoo tar -xvjpf /mnt/cdrom/stages/
S
stage1-x86-2004.1.tar.bz2 cp /mnt/cdrom/portage/portage-L+.
S
tar.bz2 /mnt/gentoo/usr/
Pentium 4 (Intel) CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -Os -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -Os -pipe -fomit-frame-pointer" Athlon XP (AMD) CHOST="i686-pc-linux-gnu" CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer" CXXFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer"
Ha llegado la hora de comenzar la instalación adecuada del sistema. Utilizamos para ello el mecanismo chroot, que nos permite simular nuestro nuevo entorno: chroot /mnt/gentoo/ /bin/bash
Instalación
rm portage-L+.tar.bz2
El Gentoo preparado por la redacción de Linux+ no exige conexión a Internet. Para instalar los paquetes necesarios, debemos copiar el contenido del directorio /mnt/cdrom/distfiles/base/ (allí se encuentran los archivos necesarios para la instalación básica del sistema) al directorio /mnt/gentoo/usr/portage/distfiles/:
S
/mnt/gentoo/usr/portage/distfiles/
cuando ya hemos copiado estos archivos, debemos montar el sistema /proc. Lo hacemos con ayuda del comando:
mount -t proc none /mnt/gentoo/proc
Celeron (Coppermine) aka Celeron2 (Intel) CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer"
source /etc/profile
tar - xvjpf portage-L+.tar.bz2
cd /
Pentium III (Intel) CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer"
env-update
cd /mnt/gentoo/usr
cp -prv /mnt/cdrom/distfiles/base/*
Configuración de make.conf
Gentoo se diferencia de la mayoría de otras distribuciones de Linux en que todo el software se compila desde las fuentes; gracias a esto tenemos la posibilidad de una adecuada adaptación del software a nuestro equipo. El archivo make.conf es responsable de la opción de compilación, actualmente en el directorio /etc. Todos los programas compilados por nosotros harán uso de las configuraciones que incluimos precisamente en este archivo. Para ajustar el archivo make.conf a nuestras necesidades, debemos agregar flags para el compilador. Su lista básica se halla en el recuadro Configuración de make.conf. Después de haber agregado flags a nuestro ordenador, podemos construir el fundamento necesario para seguir con el trabajo. Sirve a este fin el script bootstrap.sh,
gentoo 2004.1
Emerge
Emerge es el programa que es responsable por la instalación, actualización y eliminación de software. Ejemplos de su uso:
mos uso de emerge system para iniciar la instalación. Lo mejor es realizar esta operación por la noche, cuando nos preparamos a dormir. Por la mañana nuestro sistema básico estará ya listo.
•
Instalación del núcleo
emerge paquete – instala el paquete
escogido; •
emerge -s paquete – busca un
Tenemos dos núcleos del sistema para escoger:
•
emerge -S frase – busca una
•
paquete dado;
•
•
frase dada en toda la base de los paquetes (esto puede durar mucho tiempo); emerge -pv paquete – el paquete no será instalado pero se visualizarán sus dependencias y su tamaño contado; emerge -C nombre del archivo
– elimina un paquete escogido (Ojo: en este nivel no se revisan las dependencias);
•
emerge -DU nombre del paquete
•
emerge -DU world – actualiza todo
– actualiza el paquete; el sistema.
Si queremos ver qué paquetes están disponibles para la instalación, vamos al directorio /usr/portage/. Se encuentran ahí todas las categorías de los paquetes (por ejemplo, net-p2p, o sea, programas de intercambio de archivos en Internet). En estas categorías se encuentran los directorios que señalan un determinado programa (por ejemplo, /usr/portage/netp2p/mldonkey/).
presente en el directorio /usr/portage/scripts/. Este proceso es totalmente automático y, según la rapidez de nuestro equipo, puede durar de 30 minutos a varias horas. Iniciamos el script: sh /usr/portage/scripts/bootstrap.sh
Podemos ahora dar un largo paseo, ver alguna película, leer un libro o, lo que sería la mejor solución, dedicarle nuestra atención a este número de la revista Linux+. Después de terminar la construcción del fundamento de la siguiente intalación, damos el comando ln -sf /usr/share/ zoneinfo/Europe/Madrid /etc/localtime. Ya podemos construir el sistema básico. Para ello, usamos el programa Emerge, que es una herramienta para la administración de paquetes en el sistema Gentoo Linux. Al principio, podemos ejecutar el comando emerge -pv system, que nos visualiza qué es lo que será instalado. Finalmente hace-
•
gentoo-dev-sources 2.6.7-r8 – el núcleo más nuevo de la serie 2.6.x en el momento de escribir este artículo, enriquecido con muchos parches que aumentan su uso; gentoo-sources 2.4.26-r3 – núcleo de la serie 2.4.x, enriquecido con muchas facilidades de los núcleos de la serie 2.6.x; ésta es precisamente la versión de la que nos encargaremos en la siguiente parte del artículo.
Instalemos las fuentes del núcleo que hemos escogido. En nuestro caso será gentoo-sources 2.4.26-r3: emerge gentoo-sources. Si no nos sentimos con fuerza para compilar el núcleo del sistema manualmente, los creadores de Gentoo también han pensado en nosotros. Para compilar el núcleo, podemos también utilizar el script genkernel, que construye el núcleo en nuestro lugar. Si lo queremos construir solos, entonces el procedimiento es el siguiente: cd /usr/src/linux/, make menuconfig, make dep, make bzImage, make modules, make modules _ install. Nos concentraremos, sin embargo, en la instalación del núcleo con ayuda del script genkernel. Al principio, instalémoslo en el sistema: emerge genkernel. Las más importantes opciones del script están presentadas en el recuadro Opciones escogidas del script genkernel. Por tanto: genkernel --menuconfig --bootsplash
S
--install all
Después de un corto instante se inicia el configurador del núcleo. Podemos cambiar algunas de las configuraciones propuestas por genkernel (vale la pena poner atención en el soporte del sistema de los archivos que está iniciado en el núcleo). Si no queremos cambiar nada, escogemos Exit, respondemos afirmativamente a la pregunta de si guardamos la configuración del núcleo y regresamos a la lectura de Linux+. La compilación del núcleo y de todos los
descripción de DVDs
módulos va a tardar todavía un largo momento. Después de la compilación del núcleo merece la pena instalar el paquete hotplug, el cual durante el inicio carga los módulos que no fueron descubiertos por initrd: emerge hotplug. Para que hotplug se inicie durante el arranque del sistema, escribimos: rcupdate add hotplug default.
Selección del logger del sistema
La siguiente etapa de la instalación es la selección del visualizador de eventos del sistema: sysklogd, syslog-ng o metalog. Escogemos uno de ellos y lo agregamos a los scripts de inicio, por ejemplo: emerge sysklogd rc-update add sysklogd default
Ahora, debemos decidirnos por una de las versiones crond. Para seleccionar tenemos: dcron y fcron. Como ejemplo, podemos ejecutar: emerge dcron crontab /etc/crontab rc-update add dcron default
Si poseemos módem, debemos instalar el paquete rp-pppoe: emerge rp-pppoe. Por lo general, rp -pppoe se compila con la ayuda de los X (que dura mucho). Pero si tenemos prisa y preferimos compilar los X más tarde, podemos dar el comando: USE=”-X” emerge rp-pppoe
Opciones escogidas del script genkernel Sintax: genkernel [opción] comando Comando: •
all – construye todo el núcleo
Opciones: •
--bootsplash – instala el efectivo
•
--install – instala el núcleo des-
•
--no-install – no instala el núcleo
•
--max-kernel-size= – el máximo
•
--max-initrd-size= – el máximo
•
--max-kernel-and-initrd-size=
bootsplash de inicio;
pués de su compilación;
después de su compilación;
tamaño del núcleo (en kilobytes); tamaño del initrd (en kilobytes);
– las dos opciones anteriores en una.
www.lpmagazine.org
11
descripción de DVDs
Ahora démosle la contraseña:
Gentoo español
La creación de la versión española de Gentoo no es difícil. Se limita a las siguientes acciones: –
–
– –
cambio en el archivo /etc/make.conf (nano -w /etc/make.conf) – debemos agregar la variable LINGUAS="es"; cambio en /etc/rc.conf (nano -w /etc/rc.conf) – KEYMAP="es", CONSOLEFONT=”lat9w-16” CONSOLETRANSLATION="88591_to_uni", CLOCK="local"; cambio en /etc/env.d/00basic (nano -w /etc/env.d/00basic) – agregamos: LC_ALL="es_ES", LANG="es_ ES".
Después de reiniciar el equipo, Gentoo debería tener los caracteres españoles en la consola del sistema, y así con la mayoría de los programas podremos entendernos en español.
Edición del archivo fstab
Encarguémonos ahora del archivo fstab para preparar nuestras particiones para funcionar después del reinicio del sistema: nano -w /etc/fstab. Los autores de Gentoo nos hicieron ya la configuracion básica, así que su ajuste a nuestras necesidades se limita a dar todas las unidades y sistemas de archivos presentes en las particiones. Para nuestra instalación el archivo fstab se verá más o menos como en el Listado 1. Después de preparar el archivo fstab, es hora de establecer la contraseña del root en el sistema: passwd. El sistema pide escribir la contraseña y su repetición para verificarlo. Como ya establecimos la contraseña de administración, creamos ahora al usuario: useradd nombre del usuario -m -G
passwd nombre del usuario
después debemos nombrar el ordenador. Digamos que lo definimos simplemente como gentoo: echo gentoo.local > /etc/hostname
La siguiente actividad será preparar el archivo /etc/hosts con el ejemplo del nombre gentoo. Damos el comando: nano w /etc/hosts y agregamos las anotaciones correspondientes 127.0.0.1 localhost.localdomain localhost 192.168.1.112 gentoo.local gentoo
Configuración de la red y del programa de carga
Si tenemos la conexión a Internet, ejecutamos la configuración de la red: nano -w /etc/conf.d/net nano -w /etc/resolv.conf rc-update add net.eth0 default
Nos queda solamente la instalación del programa de carga, que nos permitirá escoger el sistema a cargar durante el inicio del ordenador. Para escoger tenemos los dos más populares: GRUB y LILO. Recomendamos el primero, ya que tiene
S
users,wheel,audio -s /bin/bash
Listado 1. Ejemplo del archivo /etc/fstab /dev/hda1 swap swap sw 0 0 /dev/hda2 / xfs noatime 0 0 /dev/hda3 /home xfs noatime 0 0 /dev/cdrom /mnt/cdrom iso9660
S
noauto,user,ro 0 0 proc /proc proc defaults 0 0 /dev/shm /dev/shm tmpfs defaults 0 0
Figura 2. Gentoo 2004.1 listo
12
Linux+ 2/2004
mayores posibilidades, seguridad y muchas facilidades en relación al ya antiguo LILO: emerge grub
Después de instalar GRUB, es hora de su activación: grub. Debemos ahora establecer unas cuantas cosas. La primera de ellas será la declaración de nuestra partición con el núcleo del sistema. Hay que recordar que GRUB significa partición de una forma específica, numerándolas desde cero, por ejemplo, la partición hda3 en la configuración GRUB se llama (hd0,2), y la particion hdb5: (hd1,4). Debido a que, en nuestro caso, el núcleo se encuentra en la partición /, señalada como /dev/hda2, escribimos: root (hd0,1)
Después de ejecutar la acción anterior, el sistema nos debería decir que ha encontrado un sistema de archivos igual al que habíamos supuesto en la partición dada. Si no recibimos este comunicado u obtenemos error, significa que hemos introducido mal los datos. Recibimos la lista de las posibilidades de las anotaciones después de pulsar la tecla [Tab].
gentoo 2004.1
Instalación de otro software
Figura 3. En Gentoo se puede hallar todo lo que hay en otras distribuciones de Linux
Si queremos que nuestro bootloader se instale en el MBR de nuestro disco (así lo hace en la mayoría de las distribuciones), escribimos: setup (hd0) quit
Ahora configuramos el archivo /boot/ grub/grub.conf, que es responsable por la posición en el menú de selección del sistema después del inicio del ordenador. Un contenido de ejemplo se encuentra en el Listado 2. Nos queda dar el comando: ln -s /boot/grub/grub.conf menu.lst.
/boot/grub/
Después de ejecutar esta operación, todavía tenemos que actualizar los módulos con el comando: modulesupdate, y después salir del entorno chroot y desmontar el sistema de archivos: exit cd / umount /mnt/gentoo/proc umount /mnt/gentoo/home umount /mnt/gentoo
Nuestro Gentoo ha sido instalado. Reiniciamos el ordenador: reboot. Listado 2. Archivo de ejemplo /boot/ grub/grub.conf title=Gentoo root (hd0,1)
kernel (hd0,1)/boot/kernel-2.4.26-S gentoo-r3 root=/dev/ram0 S init=/linuxrc real_root=/dev/hda2S ramdisk=8192 vga=0x317 splash=verbose
S
initrd (hd0,1)/boot/initrd-2.4.26gentoo-r3
Para instalar cualquier programa, debemos hacer uso del programa Emerge. Hallaréis su pequeña descripción en el recuadro Emerge. Gentoo hace uso de los mecanismos de los puertos (ejemplificado en las soluciones conocidas de FreeBSD). ¿Qué son los puertos? Hablando de la forma más sencilla, es un árbol de directorios, dividido en categorías. Los nombres de los directorios son, al mismo tiempo, nombres de los programas. Y ¿cómo es en la realidad? Vamos al directorio /usr/portage/. Tenemos allí categorías, entre otras, app-office, games-action, netp2p. Los mencionados directorios contienen subdirectorios. En el caso de los juegos games-action: chromium, glaxium, trackballs, tuxkart. Si quisiéramos instalar alguno de los juegos de acción, encontraremos su lista precisamente en el directorio games-action. Supongamos que queremos instalar chromium. Escribamos, pues, como usuario root: emerge chromium . Lo mismo hacemos durante la instalación de cualquier otro programa. Si a emerge le agregamos el parámetro -pv (emerge -pv), aparecerán los paquetes dependientes, que serán instalados con chromium (emerge -pv chromium). El sistema que obtendréis con este número de Linux+, permite instalar Gentoo sin necesidad de tener acceso a Internet. Para hacer uso de los paquetes fuentes presentes en nuestro DVD, hay que agregar al archivo /etc/make.conf la variable DISTDIR=/mnt/dvd/distfiles/full, donde /mnt/dvd es el punto de montaje de nuestra unidad DVD.
Entorno gráfico de Gentoo
El entorno gráfico escogido lo instalamos con ayuda del comando emerge. Para instalar KDE, damos el comando emerge kde, y para instalar GNOME: emerge gnome. Para obtener la lista de los paquetes que serán instalados añadimos -pv, por ejemplo, emerge -pv kde nos mostrará qué paquetes serán instalados durante la instalación KDE. Después de compilar el entorno gráfico, hay que ejecutar todavía el comando: env-update, etc-update, source /etc/ profile. Si nos decidimos a instalar KDE y queremos, que se comunique con nosotros en español, debemos primero ver
descripción de DVDs
si en el archivo /etc/make.conf tenemos anotada la variable LINGUAS=”es”; si es así entonces damos el comando: emerge kde-i18n. Después de instalar el entorno gráfico, nos registramos como usuario root y damos el comando kdm (en KDE) o gdm (en GNOME). Un asunto aparte son los flags USE. Después de dar el comando emerge -pv nombre _ paquete, a la derecha obtenemos otros flags señalados en verde, con los que podemos compilar el paquete. Para iniciar, por ejemplo, el uso del DVD en el programa k3b, escribimos: USE="dvd" emerge k3b. Si queremos que todos los programas que poseen flag dvd se compilen automáticamente con esta opción, sin necesidad de introducirlo cada vez en la línea de comandos, debemos agregar USE=”dvd” al archivo /etc/make.conf. Si queremos agregar más flags, entonces los separamos con espacios, por ejemplo: USE=”dvd java alsa”.
Para terminar
Nos queda solamente desearte, querido Lector, muchos momentos de felicidad con Gentoo. En el disco se encuentra la documentación perfecta (en formatos PDF, HTML y TXT), que, paso a paso, y de una forma accesible, te presentará el tema, tomado a partir de esta descripción. Se puede hacer uso de ella durante la instalación pasando a la segunda consola textual ([Alt]+[F2]) y abriendo, por ejemplo, los documentos HTML con ayuda del navegador textual links. En caso de encontrarnos con algún problema, la forma más rápida de resolverlo es acudiendo a los foros de discusión presentes en la página http://forums.gentoo.org/, en la sección española.
En Internet: • • •
•
Página Web Gentoo Linux: http://www.gentoo.org/ Oficial foro de discusión Gentoo: http://forums.gentoo.org/ Información sobre software para Gentoo: http://www.gentoo-portage.com/ Notificación de errores: http://www.brakemygentoo.net/
www.lpmagazine.org
13
actualidades aktualności
Noticias Slackware 10.0 Ya apareció la nueva versión de la distribución Slackware Linux, muy popular entre los usuarios avanzados de Linux, pero no es sólo eso. Hemos hallado en ella muchas novedades, entre otros, el núcleo 2.4.26 (disponible también 2.6.7), el kit de compiladores GCC 3.3.4 (disponible también 3.4.0), el servidor del entorno gráfico X11R6.7.0 (X.Org), el navegador Mozilla 1.7 y los entornos gráficos GNOME 2.6.1 y KDE 3.2.3. La lista completa de las modificaciones está disponible en el sitio del proyecto. Las imágenes de los discos están para descargar a través de la red BitTorrent. http://www.slackware.org/ Halloween XI: Get the FUD El portal Newsforge publicó recientemente un artículo muy interesante de Eric Raymond, donde el autor, basándose en la campaña Get the Facts iniciada hace poco por Microsoft en Gran Bretaña, se dedicó a estudiar los cambios en la retórica del gigante de Redmond, analizó su nueva estrategia frente a Open Source e intentó prever sus próximas actuaciones. Eric constata que para MS la coexistencia pacífica de sus productos y del Software Libre no es aceptable y, por consiguiente, es inevitable la confrontación. En cuanto a la retórica, el cambio consiste en renunciar a la táctica de llamar a Open Source "el cáncer que devora la propiedad intelectual": por el momento MS encomienda este tipo de actividades a sus subcontratistas, por ejemplo, SCO, y renuncia a las afirmaciones de la superioridad técnica de los productos de MS; ahora se habla más bien del coste de la migración hacia el Software Libre. Eric prevé que dentro de dos próximos años MS seguirá atacando al Open Source sin excusas de manera nunca vista hasta ahora. Su arma potencial son, entre otras, junk patents (patentes para las soluciones más sencillas y banales), así como el estrechamiento de la alianza con las organizaciones del tipo RIAA. MS puede también recurrir a los informes "patrocinados", por ejemplo, que Open Source es una facilidad para los terroristas. Todo esto ya se conoce, pero esta vez, MS puede atacar de verdad con fuerza. http://software.newsforge.com/ software/04/06/22/1440213.shtml?tid =150&tid=82
14
Linux+ 2/2004
novedades
SUSE en Bergen, Noruega
L
a implementación del sistema Linux en las regiones de Europa, Oriente Próximo y África, sobre todo en el sector público, acelera su ritmo: la empresa Novell informó que la administración de la segunda ciudad en Noruega, Bergen, migrará su infraestructura hacia las tecnologías Linux de Novell y renunciará a las plataformas cerradas Unix y Microsoft Windows. Las autoridades de la ciudad de Bergen implementarán el sistema SUSE LINUX Enterprise Server 8 en dos fases; la operación impactará a 50.000 usuarios de la administración e instituciones educativas de la ciudad. La implementación incluye los sistemas IBM y HP. En primer lugar, 20 servidores de las bases de datos Oracle con los sistemas HP-UX operativos actualmente encargados, entre otros, de las aplicaciones básicas relacionadas con los servicios sanitarios y sociales, serán reemplazados por los servidores HP Integrity Itanium 64 bits con el sistema SUSE LINUX Enterprise Server 8. En la segunda fase de la implementación tendrá lugar la migración y la consolidación de 100 servidores de aplicaciones presentes con la aplicación Microsoft Windows en las que está basada la red educativa de Bergen. Éstos serán cambiados por 20 servidores estables IBM de cinta escalables con el sistema SUSE LINUX Enterprise Server 8. La solución IBM eServer BladeCenter asegurará el poder
Bergen, Noruega
de cálculo máximo por metro cuadrado; IBM proveerá también la red de memoria masiva. La red educativa de la ciudad de Bergen es utilizada por 32.000 estudiantes y 4.000 profesores. La implementación tiene que estar acabada a finales del 2004 y generar economías significantes. Gracias a esto se podrá asignar más recursos al desarrollo de los servicios públicos para los habitantes de Bergen. http://www.visitbergen.com/
CELF anuncia la primera especificación y la implementación de referencia
L
a organización CE Linux Forum (CELF) fue fundada en junio de 2003 por las ocho empresas más grandes, fabricantes de la electrónica de consumo (Panasonic, Sony, Hitachi, NEC, Philips, Samsung, Sharp y Toshiba). En este momento más de 50 empresas son sus miembros. La misión de CELF es la promoción de la aplicación de Linux en los dispositivos electrónicos digitales. 29 de junio de 2004, después de más de un año de trabajo, CELF publicó los primeros resultados de su actividad: la especificación y la implementación de los dispositivos electrónicos basados en
Linux. Es el sumario de los estudios de varios grupos de proyectos integrantes de CELF y del acuerdo al que llegaron los miembros de la organización. Los asuntos principales son: la cuestión del tiempo necesario para el arranque y cierre de los dispositivos, la problemática vinculada con el ahorro de energía (bajo consumo de potencia), las funciones audiovisuales (búfer de marco), capacidades de tiempo real, requisitos de memoria (sistemas de archivos comprimidos, como cramfs) y la seguridad. http://www.celinuxforum.org/
news@lpmagazine.org
Escritorios tridimensionales
D
urante el congreso anual de programación, JavaOne, la empresa Sun Microsystems presentó su proyecto llamado Looking Glass que tiene como objetivo la creación de un entorno gráfico tridimensional. El proyecto está basado en Linux y desarrollado sobre todo en Java. Sun anunció también que el proyecto será desarrollado bajo la licencia GPL. El autor del proyecto es Hideya Kawahara que afirma ser miembro entregado a la comunidad Linux. Looking Glass ya en esta etapa es impresionante, aunque por el momento no es de uso común; se puede contemplar en las capturas de pantalla y en las demos disponibles en el sitio del proyecto. Al mismo tiempo la idea del escritorio tridimensional desde los principios suscitaba muchas controversias. La pregunta es: para qué son estas ventanas de tan buen aspecto que devoran, lamentablemente, tantos recursos y que podemos girar en todas las direcciones, siempre teniendo en cuenta que esto de ningún modo aumenta la funcionalidad de nuestro escritorio. ¿Para qué la tercera dimensión por el precio del retraso en el funcionamiento de nuestros ordenadores? ¿Es que esto vale la pena? Estos reproches los conocemos ya de los debates interminables entre los partidarios de los gestores de ventanas “light”, como por ejemplo, Fluxbox o Window Maker y los aficionados a los grandes entornos gráficos como GNOME o KDE. Con toda seguridad habrá quienes migrarán hacia los escritorios tridimensionales por puro deseo de novedad y otros quienes, independientemente de todo, se quedarán con sus gestores de ventanas tradicionales. Parece que éste será un buen motivo para empezar una nueva guerra santa.
Looking Glass...
... y Metisse
El autor de la idea de Looking Glass, Hideya Kawahara, preguntado por sus motivaciones para estar involucrado en este proyecto, dice que es la hora de que el mundo Linux promueva nuevas soluciones en los escritorios en vez de copiar las funcionalidades de Windows que no han cambiado mucho desde las primeras versiones del sistema. Looking Glass debe ser, según confirma, el reto lanzado a los fabricantes de software de escritorio. Un poco después de la presentación del escritorio tridimensional por Sun y de anunciar que será desarrollado en Open Source, apareció la primera versión (con el número 0.3.0) de un proyecto muy parecido llamado Metisse que es parte del proyecto de investigación In Situ, desarrollado en colaboración con National de Recherche en Informatique et en Automatique y Laboratoire de Recherche en Informatique de l'Université Paris-Sud. El proyecto In Situ tiene como objetivo la creación de las bases para la construcción de una nueva generación de entornos de trabajo interactivos. Metisse aprovecha la librería OpenGL y también, la versión modificada del gestor FVWM. El proyecto es accesible bajo la licencia GPL, y no hay mucha más información sobre el tema. ¿Viviremos entonces la revolución tridimensional en los escritorios o estos proyectos morirán, dado el escaso interés por parte de la comunidad? La respuesta no la conoceremos hasta dentro de algunos meses, cuando los desarrolladores facilitarán probablemente la primera versión “usual” de sus proyectos. http://lg3d.dev.java.net/ http://insitu.lri.fr/~chapuis/metisse/
sección llevada por Krzysztof Krawczyk
Superordenadores bajo Linux Cuando se completaba la lista de los quinientos ordenadores más rápidos del mundo, ninguno de los gigantes listados funcionaba bajo Linux. Sin embargo, hoy en día más de la mayoría trabaja con el sistema simbolizado por el pingüino. Eso es debido al hecho de que muchos de los ordenadores más rápidos son clusters en los que Linux funciona perfectamente. Por ejemplo, entre 287 superordenadores Intel, 243 son clusters y casi todos corren bajo Linux. Los especialistas prevén que en los próximos años Linux dominará completamente la lista de las quinientas mayores máquinas. http://www.top500.org/ Lagarto en Nokia Nokia invirtió en el mercado de los navegadores web para los teléfonos móviles, pero en vez de producir su propia versión comercial de la aplicación, recurrió a financiar a Mozilla Foundation. La empresa no quiere dar a conocer qué cantidad de dinero transfirió a la fundación. El mercado de los llamados móviles inteligentes crece muy deprisa, y hasta ahora Microsoft era el mejor preparado para hacerle frente a este fenómeno. Sin embargo, el mercado de los sistemas operativos para los smartphones se vio amenazado muy peligrosamente por Symbian, una iniciativa común de, entre otros, Nokia, Sony Ericsson y Siemens. Ahora llegó la época de los navegadores: aún más nos alegra la elección de Mozilla, por la que apuesta el gigante celular. Nuevo récord de rendimiento de los sistemas Linux no cluster Las empresas Oracle y Novell informaron sobre un nuevo récord del rendimiento de la base de datos Oracle10g en la prueba TPC-C. El entorno de test integraba la base de datos Oracle 10g, el sistema operativo Novell SUSE LINUX Enterprise Server 9 y el servidor NEC Express5800/ 1320Xd con 32 procesadores Intel Itanium 2 1,5 Ghz, dotados de 6 MB de memoria inmediata de tercer nivel. Esta configuración alcanzó un resultado impresionante: 683575 tpmC (transacciones por minuto) con la relación precio/rendimiento igual a 5,99 USD/tpmC. Vale la pena anotar que esta configuración del hardware superó a la plataforma Microsoft operante en los mismos equipos. Los resultados obtenidos por Oracle bajo Linux fueron: 609,467 tpmC y 6,78 USD/tpmC y fueron un 5% mejores en cuanto a la eficacia y un 12% en cuanto al precio por transacción en comparación con Microsoft SQL Server Enterprise Edition y Windows Server 2003 Datacenter Edition.
www.lpmagazine.org
15
actualidades aktualności
Noticias ¡No lo hagas! Desde hace algún tiempo en Linux es accesible el mecanismo hotplug PCI que permite añadir a la máquina los dispositivos PCI sin la necesidad de cerrar el sistema. Merece la pena recordar que funciona tan sólo en una dirección: se pueden añadir dispositivos pero no se pueden extraer cuando el sistema sigue funcionando. Este comportamiento puede causar problemas. No se trata de un error de la capa PCI hotplug de Linux, ya que los mismos drivers deberían comprobar que no hay errores a la hora de comunicarse con el dispositivo. No todos los drivers lo hacen, al menos por el momento. Por este motivo lo mejor en este caso es tener cuidado. http://lwn.net/Articles/88810/ GFS en la licencia GPL Red Hat Global File System, junto con la infraestructura adicional de cúmulos de Red Hat fue editado a finales de junio bajo la licencia de GPL. GFS fue creado y vendido por la empresa Red Hat y es un sistema de archivos de cúmulos que permite una lectura y escritura eficaces a muchos servidores que pertenecen a la misma red de SAN. Esta forma de dar licencias para GFS es el principio de los esfuerzos para incluir este sistema en la línea principal del kernel. Antes de que esto suceda, se necesitan nuevos desarrolladores. http://kerneltrap.org/node/view/3348 UML en 2.6 User Mode Linux fue incluido en la versión principal de Linux durante el desarrollo de la serie 2.5. Jeff Dike, el responsable de este proyecto, seguía insistiendo y esforzándose en que el UML del kernel fuera actual. El UML a partir de la versión estable dejó de compilarse correctamente, por lo tanto, no se permite su empleo. Andrew Morton, que se ocupa de la introducción de las novedades, aseguró que lo mejoraría, con tal de que Dike realizara los cambios que harían que User Mode Linux fuera compatible con el kernel actual de la serie 2.6. Podemos esperar que pronto el UML en 2.6 vuelva a funcionar correctamente. http://user-mode-linux.sourceforge.net/ http://kerneltrap.org/node/view/3355
16
Linux+ 2/2004
el núcleo Linux
Perfección de ordenación de procesos
U
no de los mayores miedos de los developers del kernel de la serie 2.6 era el planificador (ing. scheduler). En un principio podemos destacar dos causas de su debilidad: la primera es la necesidad de actuar en la máquina de multiprocesadores de varias arquitecturas de estos procesadores (sobre todo, NUMA); la segunda radica en tratar de forma poco adecuada las tareas interactivas. El primer problema deberían solucionarlo los dominios de ordenación, y el segundo hasta ahora se ha solventado mediante todo tipo de parches de interactividad. Por el momento, no hemos oído quejas sobre el planificador en las versiones de Linux posteriores a la serie 2.6 . Gracias a varios parches, sobre todo en los procesos, la ordenación funciona muy bien. Sin embargo, el algoritmo es muy complicado. Una gran parte del código responsable de la mejora de la interactividad es confusa y, mucho peor, incluye muchas constantes mágicas y cálculos extraños. Este problema fue ya señalado mucho antes por los developers. Decían en el grupo de noticias linux-kernel que, a pesar de una mejora del funcionamiento del sistema, no creen en la efectividad de la introducción de cambios heurísticos y detallados, y no algorítmicos. La respuesta a tales críticas, como una forma muy elegante de solucionar el problema de interactividad, puede llegar a ser el staircase scheduler, creado por Con Colivas, uno de los suministradores más importantes de los fragmentos del algoritmo de ordenación de los procesos relacionados con la interactividad. Staircase scheduler (Planificador por escalones) es una solución cuyo atributo principal tiene que ser la sencillez. El mismo tamaño del parche - en la versión 2.6.7 se han eliminado 600 líneas y se han añadido tan sólo 250 - nos permite tener esa esperanza. Muchas de estas líneas que se han eliminado son los mencionados cálculos poco claros que incluyen unas constantes extrañas. El código preparado por Con Kolivas no es nada revolucionario, todo es parecido a los estándares elaborados hace ya tiempo, incluye tan sólo una modificación, pero que es muy moderna. Al principio todo parece suceder como antes: los procesos relacionados con un procesador determinado se guardan en una tabla y su orden depende primero de las prioridades asignadas (entonces están en su turno las prioridades).
En la solución actualmente existente, los procesos que emplean su quantum de tiempo del procesador son transferidos a otra tabla (turno) y es allí donde esperan hasta que se sirvan todos los demás procesos del turno de prioridades, y precisamente en ese momento se puede asignarles el quantum que sigue el tiempo del procesador. En la solución descrita aquí desaparece ese turno especial de procesos que han caducado: todos los procesos esperan su quantum de tiempo de la misma tabla. Después de emplear su quantum de tiempo, el proceso llega otra vez al mismo turno, aunque con una prioridad de grado inferior. Después de emplear el quantum de tiempo que sigue, su prioridad sigue bajando. En el momento en que la prioridad baja totalmente, el proceso vuelve a su turno, ya que es un proceso con una prioridad inferior a la anterior máxima, no obstante, obtiene dos quanta en vez de uno. En la iteración que torna, que aquí significa volver a bajar, hay tres quanta, etc. Este proceso se parece a la acción de bajar por la escalera, de ahí viene el nombre del mecanismo. En cada una de las excursiones por las prioridades, el proceso emplea igual cantidad de tiempo. No obstante, se han guardado prioridades relativas a los procesos: su disminución en las iteraciones que siguen se compensa con la prolongación del tiempo del procesador, recibida por el proceso. Los procesos que se quedan en estado de coma durante mucho tiempo, que está determinado, luego despiertan y llegan a su prioridad máxima, es decir, a la inicial. Gracias a ello los procesos interactivos que duermen a menudo, se encuentran normalmente en la cumbre de la escalera y tienen una prioridad bastante alta, y los que requieren mucho tiempo del procesador suelen viajar con paciencia por la escalera con prioridades bajas. La descripción expuesta emplea cierta propiedad de los procesos interactivos y extrae provecho de esta propiedad para sus propios fines, no obligando a hacer cálculos mágicos de prioridades. La nueva ordenación de procesos no va a ser incluida en la serie 2.6 de Linux, solamente podemos esperar que aparezca en la versión 2.7. La sencillez de la idea es cautivadora, ya que precisamente este tipo de soluciones alegran más a los verdaderos hackers. http://lwn.net/Articles/86957/ http://ck.kolivas.org/patches/2.6/
kernel@lpmagazine.org
sección llevada por Maja Królikowska
Ext2 y ext3
E
xt3 es uno de los sistemas más populares de archivos de transacción empleados en Linux. Surgió en base de ext2, es decir, de un sistema de archivos que desde hace mucho y durante mucho tiempo ha sido el sistema básico de archivos de Linux. Aunque ext3 es el complemento natural de ext2, sobre todo la transacción (ing. journalling), se desarrolla por separado. Esta situación es resultado de la decisión de Linus que no aceptó la destrucción de un elemento tan importante como era el sistema básico de archivos. El resultado de tal decisión son dos sistemas de archivos del kernel cuyo código se distingue tan sólo por unos detalles. Alguien que no pertenecía al grupo de developers de ext3 tuvo la idea bastante obvia - si no se acuerda uno de la historia del sistema ext3 - de integrar estos sistemas de archivos. Analizó las diferencias y resultó que, además de las funciones completas, las diferencias son pequeñas y se pueden esconder en los macros del preprocesador que activan y desactivan la transacción del sistema de archivos. Los argumentos a favor de integrar dos sistemas de archivos son simples: así sería más fácil, más simple y más elegante, el kernel sería más pequeño y el compilador no tendría por qué cansarse dos veces con casi el mismo código. Sin embargo, podemos mencionar un argumento en contra de tal comportamiento. El primero es obviamente histórico, ya que desde el principio se decidió que el sistema ext3 iba a ser independiente del ext2. El segundo argumento, igual de simple, es la aversión general hacia #ifdef
en el código del kernel. El tercero puede ser que con tal integración hay que asegurar la posibilidad de poseer sistemas de archivos tanto transaccionales como no transaccionales. Aún más, no tenemos la seguridad de que ext2 y ext3 se vayan cada cual por su camino y su integración se haga imposible. Aunque hoy en día ext2 y ext3 se parecen mucho, pueden desarrollarse en dos direcciones opuestas, sobre todo si tenemos en cuenta las diferencias de su empleo. El argumento básico es que Linus simplemente no lo quiere. Andrew Morton, uno de los especialistas de ext3, notó que aparentemente esta integración no era totalmente trivial, ya que ext3 se distinguía de ext2 por algunos mecanismos. Sin embargo, acertó en que se podía realizar tal ejercicio, pero principalmente para reducir el tamaño del kernel. Añadió que el trabajo que había que poner superaba bastante el beneficio. Merece subrayar que estos sistemas tienen objetivos diferentes y, por lo tanto, es muy fácil imaginarnos que su optimización tenga en el futuro un carácter diferente. Como el sistema ext3 es seguidor del ext2, la integración de ambos sistemas de archivos quitaría muchas posibilidades al usuario de ext2. Sin embargo, no creo que próximamente sea posible crear de ext2 y ext3 un sistema homogéneo de archivos. Costaría un trabajo que, además, no merecería el resultado conseguido y desperdiciaría futuras diferencias importantes entre estos sistemas. http://lkml.org/lkml/2004/6/24/215
Lustre
L
ustre es un sistema disperso de archivos para usarse en cúmulos grandes. Aunque todavía no está incluido en el kernel, ya se emplea en la producción masiva y su creación está apoyada por importantes empresas. Como el proyecto ha conseguido cierta etapa de madurez, ha sido propuesto para ser incluido en la rama principal del kernel. Sin embargo, ha surgido un problema. Se han preparado centenares de parches en el kernel, gracias a los cuales Lustre podría funcionar únicamente como un módulo cargable y no requeriría más parches adicionales del mismo kernel; sin embargo, estos parches parecen controver-
tidos, ya que suministran interfaces que no se usaban en ninguno de los demás fragmentos del código del kernel. Para muchos usuarios esto significaría la agregación de un nuevo e inútil API. A pesar de ello, como estas intefaces no van a aparecer en el kernel, ningún sistema más va a poder, o querer, aprovecharlo. Teniendo en cuenta el hecho de que para muchos usuarios la posesión de Lustre en Linux puede resultar importante, tarde o temprano llegará el día en que se incluya este sistema de archivos en el árbol oficial del kernel del sistema Linux. http://www.clusterfs.com/lustre.html http://lwn.net/Articles/87844/
Buscamos errores Una gran parte de los errores que se siguen encontrando y corrigiendo en Linux son errores de programación que son el resultado de un insuficiente esmero durante la creación del código. Al menos una parte de estos errores se pueden prevenir gracias al análisis estático del código. Una parte de este análisis se realiza por el mismo compilador, pero normalmente no es suficiente. Por lo tanto, merece la pena usar diferentes herramientas. Un ejemplo de tal analizador es Stanford Checker, del cual se dice que es una herramienta perfecta, pero no es un proyecto abierto. Una alternativa libre de esta aplicación fue creada por el mismo Linus Torvalds. El proyecto se llama Sparse y no se puede comparar en cuanto a las posibilidades con su equivalente comercial; sin embargo, últimamente ha recobrado la confianza y se usa para comprobar algunos de los tipos de errores de los kernels de la serie 2.6. http://lwn.net/Articles/86957/ Error del kernel Stian Skjelstad encontró por casualidad un error bastante grave del kernel de Linux. Este error hace que se congele completamente el sistema. El error surgió a la hora de analizar la aplicación desde el espacio del usuario, y al principio fue reconocido como error del compilador. Sin embargo, se encontró la verdadera causa de la congelación del sistema. El error consistía en un soporte impropio de las excepciones de comas variables y pertenece a los errores típicos de programación que parecen inocentes, pero que no lo son. http://lwn.net/Articles/89002/ Depuración de módulos cargables El código del kernel de Linux es específico, pero a pesar de esto es una simple aplicación y se puede depurar de forma interactiva empleando la herramienta más popular, o sea, el gdb. Algunos developers realmente lo hacen, tratando /proc/kcore como un archivo con la memoria cargada del programa. Sin embargo, los kernels de la serie -mm imposibilitan una búsqueda más avanzada y remota de los errores. En caso de que se trate de los módulos cargables, esto es mucho más difícil, ya que el depurador no sabe reconocer bien la memoria ocupada por estos módulos. Resulta que la información necesaria no es accesible completamente, incluso se pierde. El respectivo parche de Jonathan Corbet permitirá el análisis interactivo de los módulos de Linux. http://lwn.net/Articles/89961/
www.lpmagazine.org
17
actualidades aktualności
Noticias Notas de la conferencia de Debian Juinchi Uekawa envió notas recogidas durante la Cuarta Conferencia de Debian. Incluyen información sobre las conferencias llevadas por Joey Hess sobre el nuevo instalador de Debian, por Scott James Remnant sobre las herramientas para construir las aplicaciones GNU, por Steve Langasek sobre las dependencias en Debian y por Ian Murdock sobre Linux de componentes. http://www.debian.org/events/2004/ 0526-debconf http://www.netfort.gr.jp/~dancer/diary/ 200405.html.en#2004-May-27-22:08:13 http://www.netfort.gr.jp/~dancer/diary/ 200405.html.en#2004-May-27-23:05:51 http://www.netfort.gr.jp/~dancer/diary/ 200405.html.en#2004-May-28-02:11:49 http://www.netfort.gr.jp/~dancer/diary/ 200405.html.en#2004-May-29-02:40:55 Licencia adecuada para la documentación Sigue abierta la cuestión de qué licencia deberían seleccionar los proyectos que crean aplicaciones libres para su documentación. Una de las ideas es emplear la misma licencia en lo que se refiere a las aplicaciones y a la documentación incluida. http://lists.debian.org/debian-legal/2004/ 06/msg00053.html http://lists.debian.org/debian-legal/2004/ 06/msg00054.html Portal Debianplazza sigue creciendo Los usuarios europeos de Debian pusieron en marcha un nuevo portal destinado a esta distribución. Debianplazza es un amigable entorno que sobre todo cuida la accesibilidad para principiantes y usuarios individuales. El número creciente de personas registradas en los grupos de noticias indica que el portal tiene mucho éxito. http://www.debianplaza.net/ Java libre en más plataformas Uno de los usuarios preguntó por qué los nuevos paquetes de la máquina virtual Java SableVM (1.1.5) no se pueden instalar en unstable. El responsable de los paquetes explicó que los paquetes con librerías empleadas por la máquina virtual Java se habían detenido esperando en la cola a los nuevos paquetes. Unos días más tarde la situación volvió a la normalidad y los nuevos paquetes de SableVM junto con las librerías ya son accesibles también en la distribución testing/Sarge. http://lists.debian.org/debian-java/2004/ 06/msg00004.html http://www.sablevm.org/
18
Linux+ 2/2004
debian
Puerto AMD64: ¿listo?
E
l grupo de desarrolladores encargados de transferir Debian a la plataforma AMD64 anunció que el 97% de los paquetes de Debian han sido correctamente compilados para esta arquitectura. Los demás paquetes que todavía no han sido construidos sufren problemas generales de construcción pero no sólo en esta plataforma. El nuevo instalador de Debian fue transferido y está siendo construido automáticamente cada día, y las imágenes de CD son accesibles al público. Para que Debian AMD64 se convierta en la versión oficial de Debian, es necesario incluir pequeños parches para dpkg, asignarle espacio en los servidores oficiales de Debian (analógamente, en los servidores réplicas), así como configurar los servidores de construcción automática (buildd). Como respuesta a este anuncio surge la pregunta: ¿cuál de las arquitecturas adicionales está ya preparada? La pregunta tiene sentido, ya que al principio un grupo de developers quiso crear la versión de dos arquitecturas (ing. Bi-arch) con la cual se podría ejecutar en un sistema de archivos (es decir, sin los chroots) tanto las aplicaciones de 32 bits como de 64 bits. Desgraciadamente, la tarea resultó mucho más difícil de lo que se suponía. Por lo tanto, empezaron a crear la versión virgen de 64 bits, la cual pronto llegó a ser la única versión desarrollada activamente. Hay que mencionar que incluso en esta versión virgen de 64 bits se pueden ejecutar las aplicaciones de 32 bits usando chroots, sólo si el kernel de Linux fue compilado con tal opción. Me parece que esta versión tiene la desgracia de ser víctima de todo tipo de confusiones. No sólo se empezó a crearla como bi-arch, y finalizó como virgen de 64 bits, sino que tampoco se han evitado muchos roces sobre el mismo nombre de la versión. Una gran parte de la culpa es de la empresa AMD, ya que al principio promulgaba esta arquitectura como x86-64 y este nombre llevan las versiones realizadas por SuSE y Red Hat. En cambio, lo que parece muy interesante, Mandrake y Gentoo (y también muchas distribuciones no comerciales más) eligieron el nombre AMD64. La serie de caracteres x86-64 es usada por autotools (por ejemplo, en los scripts configure) y en el mismo kernel de Linux. Muchos importantes developers de Debian preferirían más bien emplear un tecnicismo más correcto, es decir, x86-64. Resulta que, por ejemplo, los paquetes de De-
El puerto de Debian con AMD64 ha tenido mala suerte desde el comienzo de su existencia...
bian tendrían que llevar en el nombre x86_64 (¡con guión bajo y no guión normal!). Aunque parezca poco importante, el nombre de la versión llegó a ser tema de discusiones y conflictos. Por ejemplo, en un momento dado en dpkg se encontró una serie que identifica la aquitectura de esta versión de amd64 en x86_64. Esto se dió en un círculo limitado, sin la autorización u opinión de las personas interesadas en esta versión durante la conferencia de Debian que tuvo lugar hace poco en Brasil. Estos cambios fueron eliminados, sin embargo, los participantes no llegaron a un acuerdo en cuanto al nombre de la versión. Además, primero tuvo lugar una votación no oficial en la cual el 99% de los votantes aceptaron el nombre amd64. Luego, en el grupo de noticias debian-amd64 se pidió a los participantes del proyecto que apoyaran de forma unánime el nombre amd64 o su alternativa (el 100% votó por amd64). Por fin el asunto llegó al Comité Técnico que también votó por el nombre amd64. Actualmente casi todos los paquetes del archivo de Debian están compilados para AMD64, los parches necesarios han sido incluidos en dpkg, los servidores no oficiales de construcción han sido configurados (y funcionan), por lo tanto, esta versión espera tan sólo la bendición oficial para conseguir espacio en los servidores de Debian. No es absolutamente seguro que la versión amd64 se publique con Sarge, pero teniendo en cuenta la determinación de la gente que trabaja en este proyecto, hay bastantes posibilidades de éxito. http://lists.debian.org/debian-devel-announce/ 2004/06/msg00002.html http://lists.debian.org/debian-devel/2004/06/ msg00635.html http://www.debianplanet.org/ node.php?id=1115
debian@lpmagazine.org
sección llevada por Grzegorz Prokopski
Hacia la edición de Sarge
D
espués de las últimas correcciones de la edición del Contrato Público de Debian, la edición de Sarge en fechas razonables no es real, ya que, según dice este documento, todo lo que forme parte main de Debian tendría que ser compatible con las Directivas Relacionadas con el Software Libre (DFSG). Es un problema, puesto que una gran parte de la documentación procedente de la Fundación Software Libre (FSF) es accesible en la licencia GNU de la Documentación Libre (GFDL) y tendría que pasar a ser non-free antes de la posible edición de Sarge. Hay muchos más casos de este tipo y la eliminación de todos duraría meses. Por tanto, la única forma de lanzar Sarge, cuando esté técnicamente preparado, es volver a votar los resultados de las denominadas “mejoras de edición”. Para variar, se propusieron hasta 6 versiones diferentes que actualmente se votan. Os-
cilan entre “Retirar totalmente las mejoras de edición”, “Retener los cambios hasta la edición de Sarge” y “Confirmar el nuevo contenido del Contrato Público” (la última opción imposibilita la edición de Sarge en el próximo futuro). Está claro que en el grupo debian-devel aparcó un montón de análisis y discusiones sobre las opciones a votar, sobre todo con la siguiente: “¿Cómo votar para editar Sarge lo más pronto posible?”. Pienso que podemos estar tranquilos en cuanto a los resultados de esta votación, recordando una protesta decisiva de los developers contra la idea de eliminar la sección nonfree de Debian. Según dice la tradición, la nueva distribución estable Sarge se lanzará cuando esté preparada. http://www.debian.org/social_contract http://lists.debian.org/debian-devel-announce/ 2004/06/msg00004.html
El futuro de los X en Debian
E
l manager de las ediciones los X de la Tropa de Asalto X (X Strike Force) de Debian preguntó en el grupo de noticias debian-devel sobre las opiniones de los developers respecto al futuro de los X en Debian. La pregunta era importante, ya que la situación relacionada con los proyectos de los archivos fuentes de los X (ing. upstreams; proyectos de los cuales proceden las fuentes convertidas por los desarrolladores de Debian en paquetes .deb) es poco clara. Como el proyecto XFree86 ha sustituido últimamente la licencia de una parte de aplicaciones editadas junto a ella por la incompatible DFSG, ésta no puede seguir siendo la fuente para nuevas versiones de los X. Surgieron dos proyectos alternativos: X.org y FreeDesktop.org. No está claro cuál de ellos debería seleccionar Debian. ¿A lo mejor Debian debería empezar por la creación de su propia versión de los X? Tal versión es en principio imprescindible, ya que los proyectos de fuentes no toman en cuenta algunos problemas con la licencia y también porque Debian soporta arquitecturas, de las cuales el proyecto de las fuentes de los X no quiere ocuparse en absoluto. A propósito de estas confusiones se averiguaron las opiniones sobre la futura forma de los paquetes con los X en Debian. Como podíamos adivinar, varios developers tenían diversas opiniones sobre la selección del proyecto de fuentes. Algunos
X.org empezó a editar su propia versión de los X al igual que FreeDesktop.org
querían X.org como lugar ideal para el proyecto de fuentes de los X, los demás querían la versión editada por FreeDesktop.org, como la que se desarrolla de forma más dinámica y que tiene más suplementos, con lo cual tiene mejores módulos. A estos argumentos se respondió pronto que la versión procedente de X.org incluye mejoras regaladas por Sun y, además, X.org está desarrollado por la rama denominada debrix, la cual tiene muchos módulos más. En tales circunstancias resulta que lo mejor sería que los esfuerzos de ambos proyectos se integrasen. También se discutó el tema de una posible sustitución de imake, empleada desde hace mucho para construir los X, por un sistema más moderno que maneje mejor las aplicaciones modulares. Cuando la sustitución tenga lugar será probablemente el tándem autoconf y automake.
Paquetes del nuevo Firefox 0.9 El responsable de Firefox pensó qué hacer con su nueva edición. Por una parte quisiera dejar la nueva versión a los usuarios a analizar, por otra (como la edición de Sarge va aproximándose) quisiera quedarse con el paquete en unstable que tendría importantes errores. Anthony Towns sugirió situar el paquete en la sección experimental lo más pronto posible, y si no provoca problemas a los usuarios, trasladarlo a la versión unstable. http://lists.debian.org/debian-devel/ 2004/06/msg00557.html http://lists.debian.org/debian-devel/ 2004/06/msg00560.html Grupo de Debian que cuida de Firebird El responsable anterior de esta base de datos, Grzegorz B. Prokopski, anunció que reunía gente para crear un grupo que cuidara de los paquetes de Firebird en Debian. Añadió que él mismo no podía ocuparse de estos paquetes, ya que ya no los empleaba, sin embargo, podía ayudar a las personas que quisieran ocuparse de ellos. En unos días, el grupo de noticias de este grupo de Debian se activó para preparar nuevos paquetes de Firebird 1.5 para Sarge. http://lists.debian.org/debian-devel/ 2004/06/msg00258.html http://firebird.debian.net/ http://firebird.sf.net/ Manual para empaquetar las librerías en Debian Junichi Uekawa publicó el manual actualizado de empaquetar las librerías en Debian. Añadió el ejemplo de emplear los símbolos versionados (ing. versioned symbols) para las librerías compartidas (ing. shared library). Esta actualización es parcialmente el resultado de la conferencia de Steve Langasek en la última conferencia de Debian. Stephen Frost por sí mismo añadió unas actualizaciones más. http://lists.debian.org/debian-devel/ 2004/06/msg00069.html http://www.netfort.gr.jp/~dancer/ column/libpkg-guide/libpkg-guide.html http://lists.debian.org/debian-devel/ 2004/06/msg00077.html Skolelinux 1.0 ya editado Después de 3 años de un trabajo duro, Skolelinux 1.0 esperó su edición pública. Los trabajos sobre esta distribución empezaron como reacción al hecho de que las escuelas y las oficinas noruegas fueran independientes de aplicaciones cerradas. Skolelinux tiene como objetivo llegar a ser un sistema fácil de configurar en redes grandes y seguras de clientes lígeros (LTSP) para servir a usuarios normales. http://www.skolelinux.org/ ftp://developer.skolelinux.no/skolelinux-cd/
www.lpmagazine.org
19
actualidades aktualności
Noticias Extensión de PCLinuxOS Aunque Texstar realiza la parte más importante del trabajo con PCLinuxOS, podemos ayudar en sus esfuerzos a construir la mejor distribución de Linux para la oficina. TheDarb publicó en Internet una pequeña guía sobre cómo enviar los paquetes de fuentes preparados por nosotros mismos (SRPM) a la sección especial contrib. http://texsrc.trident.kicks-ass.net/ contrib/HOW-TO-CONTRIBUTE.txt Umibuilder Umibuilder es la extensión de Mklivecd. Su objetivo es preparar las instalaciones de Linux para que arranquen desde el CD o desde las tarjetas de memoria, teniendo como base los paquetes de Mandrake Linux. Los esquemas de estas instalaciones están guardados en forma de archivos de texto. En base a ellos, Umibuilder descarga de Internet las versiones más nuevas de los respectivos paquetes y realiza de manera automática todos los siguientes pasos. http://www.nexedi.org/workspaces/ project/umigumi/introduction_to_umib/ view Fechas de ediciones hasta la 10.1 Ya son conocidas las exactas fechas de apariciones de las ediciones hasta Mandrake Linux 10.1. Si no hay demoras, primero tendremos tres versiones beta y la congelación de traducciones, luego dos versiones candidatas a ser editadas y la edición Community (el 20 de agosto) y la Official (el 15 de septiembre). http://www.pclinuxonline.com/ article.php?sid=9029 El pequeño de la familia Mandrakesoft tiene un acuerdo con Edge-IT, en base al cual este segundo será incorporado en Mandrakesoft a través del intercambio de acciones. Edge-IT es una empresa muy joven, fundada hace un año, que realiza soporte para Linux, sobre todo en el mercado de empresas francesas. El grupo de seis personas tiene como clientes, tales como la organización OECD y con tal perfil de actividad conviene a los planes de desarrollo de Mandrakesoft. La transacción tiene que ser aceptada por la reunión general de accionistas. http://www.mandrakesoft.com/company/ press/pr?n=/pr/corporate/2487
20
Linux+ 2/2004
mandrake
mandrake@lpmagazine.org
sección llevada por Daniel Koć
Desktop Linux Server
M
andrakesoft conforme con el anterior aviso, después de recuperar la estabilidad financiera, volvió a luchar por su posición en el mercado. Este interesante producto está preparado en cooperación con la empresa Nexedi Rentalinux Desktop Linux Server – soluciones completas de hardware-software. Para emplear DLS es suficiente un navegador web que soporte Java en terminal o un ligero terminal de hardware (por ejemplo, el sugerido OpenBrick). Como contraposición de Linux Terminal Server Project, el cual emplea las posibilidades de red del protocolo X Window, DLS usa también el protocolo VNC en la implementación TightVNC, gracias al cual lo pueden emplear las estaciones de trabajo con diferentes sistemas operativos. Esto permite simplificar al máximo la instalación de este servidor en cualquier red local (también inalámbrica), es decir, reducir la barrera de implementar Linux en una empresa. Un servidor separado soporta más de 10 usuarios. Se pueden también
Cliente lígero de hardware: OpenBrick es pequeño y barato, en conexión con DLS puede sustituir exitosamente a un PC
añadir servidores posteriores DLS y es posible integrarlos en cúmulos, con lo cual se simplifica la administración de la red. El coste mínimo del pago mensual, incluyendo la instalación, son 500 euros al mes, sin embargo, puede variar dependiendo de la cantidad de terminales y servidores y del tiempo de alquiler. http://www.mandrakestore.com/mdkinc/ index.php?LANG_=en&tab_x=tab_nexedi http://www.openbrick.org/
PCLinuxOS Preview 7
T
exstar publicó una nueva edición, todavía en pruebas, de PCLinuxOS. KDE 3.2.2 es el entorno gráfico predeterminado. Una alternativa para las máquinas con un menor rendimiento es Fluxbox. GNOME 2.6 es accesible desde Synaptic, después de instalarlo en el disco duro. La versión incluye el kernel estable 2.4. El kernel 2.6.5 es disponible en Synaptic después de instalar el sistema en el disco. Hay que prestar gran atención en esta edición al instalador en el disco. Tom Kelly realizó un excelente trabajo añadiendo nuevas posibilidades y eliminando errores para que la instalación de PCLOS en el disco fuera muy simple. El soporte de las claves USB sigue encontrándose en fase de pruebas y debería aparecer en la siguiente versión. Había demasiados problemas que solucionar para que empezara a funcionar inmediatamente. Nvidia 3D, Java y Flash deberían funcionar inmediatamente. ATI 3D todavía no está soportado a causa de la falta de los drivers ATI para XFree86 4.4.0. La proyección ordinaria de ATI funciona normal. Por motivos de editar la versión Preview 7, cambió también el aspecto de la página del proyecto: allí se encuentran,
Dentro de PCLinuxOS, Synaptic sirve para instalaciones gráficas de aplicaciones y para administrar paquetes
entre otras cosas, las actuales capturas de pantalla. Desgraciadamente, por el momento, PCLinuxOS existe sólo en la versión inglesa, ésto cambiará después de terminar las tareas sobre la versión completa de la distribución. Ya está preparada para ser descargada la imagen de la versión Preview NV-7a, optimizada para las tarjetas de nVidia. Incluye la actualización de KDE 3.2.3, Mozilla 1.7, además de un conjunto de plug-ins y el subsistema de gráficos Xorg en vez del actual Xfree86; ¡además incluye actualizaciones de muchas aplicaciones más, por lo tanto, merece la pena analizar el sistema a esta subversión!
actualidades aktualności
aurox
aurox@lpmagazine.org
Noticias
Hibernación en Aurox
J
unto al próximo Aurox 10.0, basado en el nuevo núcleo 2.6.7 (disponible en el repositorio de los paquetes de test), aparecerá el soporte para la hibernación realizada por el mecanismo Swsusp2 que guarda los datos de la memoria en la partición de intercambio (swap). Este mecanismo puede funcionar con éxito en todos los ordenadores adecuadamente configurados y no requiere APM ni ACPI. Son necesarias cuatro particiones de intercambio de dimensión un poco más grande (alrededor del 30%) que la cantidad de la memoria operativa. Se soportan también los ordenadores multiprocesador y con mayor cantidad de memoria (hasta 4 GB). Para poder utilizar la hibernación, hay que verificar si las particiones de intercambio son mayores que la memoria operativa (comando free), y añadir en el fichero /boot/grub/grub.conf la inscripción resume2=swap:/dev/hdXY en la sección kernel del núcleo utilizado, donde XY es el nombre de la partición de intercambio
(se puede visualizar a través del comando grep "swap" /etc/fstab). A continuación, un ejemplo de esta línea:
S S root=LABEL=/ vga=791 resume2=swap: kernel /vmlinuz-2.6.7-10.0.aur.4 ro /dev/hda1 rhgb
Después del rearranque, hibernamos el sistema con el comando echo > /proc/ swsusp/activate. El contenido de la memoria es entonces guardado en el disco y el sistema se desconecta. Con su conexión la memoria se restaura a partir del disco y, trascurridos algunos segundos, tenemos el sistema en el estado antes de la hibernación. Los propietarios de los ordenadores portátiles indudablemente apreciarán esta función, sin embargo, puede ser también útil para los dispositivos fijos: con esta operación el sistema tarda menos que con el arranque completo. http://swsusp.sf.net/
Aurox en LinuxTag 2004
E
ste año, otra vez se celebró en Karlsruhe (Alemania) la feria y el congreso dedicado a Linux, LinuxTag. En el marco del congreso tuvieron lugar sesiones de ponencia simultáneas. Las intervenciones eran variadas pero la mayoría iba dirigida a los gerentes, a las personas responsables de las implementaciones y a la gente que toma decisiones sobre cómo gastar los fondos de la empresa. Esto confirma la creciente popularidad de Linux. En el pabellón de la feria se exponían varias empresas, organizaciones y proyectos. Allí había más variedad: desde los consorcios de tipo Sun, SAP, incluso Microsoft, hasta los proyectos sin ánimo de lucro. Igual que el año pasado, su stand tuvo Software-Wydawnictwo, y bajo su firma, también Aurox. La asistencia a LinuxTag era una buena oportunidad para encontrarse con los usuarios, compartir opiniones y presentarse al círculo más amplio de aficionados a Linux. En comparación con el año pasado, más gente conocía la distribución; muchos visitantes del stand fueron los usuarios contentos de Aurox de Alemania, Francia, Suiza, Austria y Polonia.
sección llevada por Jarosław Górny
Aurox en Computer Hoy La revista informática española Computer Hoy en el número 149 (21 de mayo de 2004) publicó los tests de evaluación de las distribuciones más populares de Linux. La redacción evaluó siete distribuciones adaptadas para las aplicaciones profesionales, domésticas, amistosas para los usuarios sin experiencia. Aurox obtuvo el segundo puesto de la clasificación general, adelantando a las distribuciones Mandrake y Fedora Core. Se evaluaron, entre otros, la facilidad y la intuitividad de la instalación, así como la configuración del sistema, la localización (soporte para los lenguajes) y la selección de las aplicaciones. Udev en Aurox 10.0 En el nuevo Aurox habrá muchas modificaciones. Aparte del paso al núcleo 2.6.x, la distribución incluirá también el sistema udev, equivalente de devfs operante en el espacio del usuario. Este programa coopera con hotplug y permite la creación/supresión dinámica de los equipos del directorio /dev con lo cual habrá en él solamente los ficheros de dispositivos presentes en un momento dado. Los paquetes de tests RPM se hallan en los servidores réplicas de Aurox; para cargarlos, por ejemplo, con ayuda de Yum. Cambios en Core Team A mediados de junio Robert Główczyński abandonó Aurox Core Team. Robert es el autor de Aurox. Durante varios meses era el principal desarrollador del proyecto. Robert, gracias por tu inmensa aportación de trabajo. Sin ti Aurox no sería lo que es hoy en día. Te deseamos buena suerte y que estés satisfecho con lo que haces ahora. Tras la ida de Robert, al proyecto se incorporaron dos programadores: Michał Szabelski y Karol Kozimor (responsable del proyecto Acpi4asus).
Jarosław Górny (Aurox) y Lars Neubert (Auroxusers.de)
Durante la feria, Jarosław Górny de Aurox Core Team fue entrevistado por Lars Neubert el administrador del foro alemán de usuarios de Aurox. http://www.linuxtag.org/ http://www.auroxusers.de/
Opiniones sobre Aurox El Círculo Científico de Estudiantes de Informática de la Escuela General de Comercio de Varsovia, Polonia publicó la reseña de Aurox 9.3. La mayoría de las observaciones serán también válida para Aurox 9.4, aunque, por supuesto, muchos programas fueron puestos al día y se suprimieron muchos errores y fallos. Esta disponible la traducción al inglés. Para las personas que conocen alemán una lectura interesante puede ser la reseña de Aurox 9.4 publicada por el foro alemán de usuarios de Aurox. http://skni.sgh.waw.pl/sections.php?op= viewarticle&artid=19 http://www.auroxusers.de/portal/93_ review.php
www.lpmagazine.org
21
actualidades aktualności
Noticias Paquete Gentoolkit Cada usuario de Gentoo conoce muy bien la herramienta emerge. No todos saben qué esto no es lo único que podemos utilizar con el objetivo de trabajar con el árbol Portage. La distribución nos ofrece el paquete Gentoolkit ( /usr/portage/app-portage/ gentoolkit). Es el conjunto de scripts de administración. Particularmente bien desarrollado e interesante es el script qpkg. Permite, entre otras cosas, visualizar la lista de los paquetes intalados (qpkg) y sus versiones (qpkg [paquete] -v), sacar el valor de la sección content del paquete, es decir, la lista de todos los archivos que aparecieron en el sistema en el momento de la instalación (qpkg –list [paquete]), encontrar el paquete que contiene el archivo (qpkg -f [ruta/al/archivo]), verificar la suma de chequeo md5 del paquete (qpkg –md5-check [paquete]) y además visualizar todas las dependencias del paquete instalado (qpkg –query-deps [paquete]). El siguiente script interesante es equery. Con la opción uses (equery uses [paquete]) visualiza los flags USE, con los que fue compilado (frecuentemente es una información muy necesaria), y con depgraph – busca las dependencias en ebuild recurrentemente, cuyo efecto será el árbol de todos ellos. En preparción están las funciones de presentación cómoda de ChangeLog ebuild, al igual que la información visualizada glsa, hablando de posibles actualizaciones en lo que a la seguridad se refiere. Vale también la pena prestar atención al script genlop ( /usr/portage/appportage/genlop/ ). Es un parser de log emerge ( /var/log/emerge.log). Con la opción -t permite visualizar el tiempo de la compilación del paquete, lo que frecuentemente quieren los usuarios, por ejemplo, después de la compilación OpenOffice.org o KDE. Concurso del aspecto de la web Gentoo Foundation decidió cambiar y unificar el aspecto de las diferentes páginas web creadas por la comunidad, dedicadas precisamente a la distribución, entre otras http://www.gentoo.org/, http://forums.gentoo.org/, http://packages.gentoo.org/. Por esta razón hicieron un concurso abierto para el nuevo diseño gráfico. Los proyectos se podían haber enviado hasta el 25 de julio, y entre ellos los desarrolladores deberían escoger los mejores cinco. Al ganador la comunidad lo elegirá por votación. http://www.gentoo.org/proj/en/ infrastructure/redesign-guidelines.xml
22
Linux+ 2/2004
gentoo
Gentoo Linux 2004.2
P
ara el tercer trimestre de este año está planificada la publicación de la próxima versión de Gentoo: 2004.2. Podemos esperar la implementación de la nueva funcionalidad para Gentoolkit (por ejemplo ¡la integración del sistema GLSA con la herramienta emerge!), la detección del hardware SATA y, además, una mejor ayuda para la arquitectura SMP. Aparte de esto, se está analizando el acceso a LiveCD a través de BitTorrent y una mejor integración con Catalyst (herramienta que permite la creación del propio LiveCD y de los archivos conocidos como stages). Como viene siendo habitual, aparecerán los nuevos discos PackageCD, que contendrán los paquetes binarios GRP de las versiones más recientes de KDE, X.org, Mozilla y muchos más, además del LiveCD con un perfeccionado mecanismo de detección del hardware (esto es una buena noticia especialmente para los usuarios de los ordenadores portátiles). Para los menos duchos, Gentoo GNU/Linux es una distribución iniciada por el mejicano Daniel Robbins en el año 1999. Drobbins (porque ese es el seudónimo con el cual se le puede encontrar a Daniel en Internet) fue usuario de Debian. La aventura con GNU/Linux le gustaba cada vez más, hasta que un día comenzó a crear su propia distribución llamada Enoch. Su idea fue bastante interesante: decidió juntar el núcleo de Linux con la bien conocida resolución de los usuarios BSD (se refiere a los llamados puertos). El árbol Portage en un cerrar y abrir de ojos encontró partidarios entre los usuarios de Linux, y al proyecto de Daniel se agregaban cada vez más nuevos desarrolladores. Al poco tiempo, Enoch, siguiendo el camino de la evolución, se transformó en Gentoo. Hoy en día el proyecto cuenta con más de 300 developers oficiales, además de varias decenas de miles de usuarios en todo el mundo. Actualmente, se encuentra en el sexto lugar según la clasificación realizada por DistroWatch.org. Tomando en cuenta al usuario, el proyecto ofrece un foro de discusión (http:// forums.gentoo.org/ ), también en español, la pluralidad de las listas temáticas de discusiones, el sistema para notificar errores – BugZilla (http://bugs.gentoo.org/ ), y para
los que os gusta el port 6667, el canal oficial #gentoo en la red irc.freenode.net. Siguiendo los pasos de los grandes proyectos, semanalmente se publica Gentoo Weekly Newsletter: periódico que resume la actividad en el ámbito del proyecto. Se halla en él información sobre la seguridad (Gentoo Linux Security Announcements), cambios en el árbol Portage o la sección dedicada a la descripción de uno de los developers. La rica documentación provoca que la obtención de una eventual ayuda no cause el menor problema y no se limite (método muy conocido por todos) a escribir las palabras clave en el buscador de Internet. Gracias a esto, sin lugar a dudas se le puede llamar a Gentoo una distribución estable y segura, dedicada sobre todo a las aplicaciones de oficina. El sistema por el asunto del proyecto Gentoo Hardened pasa el examen igual de bien en los servidores. La pregunta más frecuente de los usuarios principiantes de Gentoo es: “¿qué versión es la más reciente?”. La respuesta a esta pregunta no es tan evidente. Al principio, el método de la numeración era sencillo: X.Y (por ejemplo, 1.4), bien conocido de otros proyectos Open Source. Gentoo tiene, sin embargo, una filosofía muy específica. Aquí los usuarios no reciben una distribución preparada, basada en un conjunto de paquetes binarios, sino que construyen el sistema desde el principio. Sobre la actualidad de la distribución testifica la versión gcc, glibc, binutils y Portage. Por lo tanto, es difícil hablar de la versión de la distribución como tal. En relación a esta especificación se decidió introducir un nuevo sistema de numeración de la versión. Desde principios de este año se realiza de la siguiente forma: AÑO.X, donde X es una cifra del intérvalo 0-3. La versión actual es 2004.1, lo que significa que Gentoo esta en la fase del segundo trimestre del año 2004 (la numeración de los trimestres comienza en 0: tal forma es bien conocida a todos los programadores). Resumiendo, cada trimestre son accesibles los nuevos LiveCD, o sea, los discos que se inician automáticamente permitiendo la instalación, y los archivos stage comprimidos, con los cuales se puede iniciar la construcción de la distribución. http://www.gentoo.org/
gentoo@lpmagazine.org
Noticias
¡Hazte developer!
A
causa del rápido desarollo de la distribución, constantemente se necesitan nuevas personas que estén interesadas en trabajar con el conjunto de developers. Si sabes como crear un archivo ebuild, conoces muy bien el inglés o puedes hacer algo que pueda interesar a la comunidad Gentoo, escribe un mensaje a: recruiters@gentoo. org. Si tus habilidades pueden ser utilizadas, es suficiente resolver un corto Quiz (preparado especialmente para los candidatos a developer). Actualmente se hace hincapié en el desarrollo del núcleo. También son necesarios voluntarios que ayuden en el cuidado a los abandonados ebuild, cuyo número desgraciadamente aumenta sin parar. Hace un par de semanas, Stuart Herbert creó un nuevo usuario BugZilli (webappsrequest@gentoo.org), al cual se añaden todas las tareas de los ebuild a los nuevos proyectos. Algunos de ellos ya contienen archivos preparados ebuild, que exigen pruebas (correciones relativamente pequeñas). Esta es una excelente ocasión para demostrar las habilidades poseídas y aliviar a los developers del trabajo de testear y de corregir los archivos que ya se encuentran en el árbol Portage. Los trabajos de los desarrolladores se pueden ver en el canal #gentoo-dev (moderado) en la red irc.freenode.net. Este es,
Developers de Gentoo
en mi opinión, el mejor lugar (después de la lista de discusión gentoo-dev@gentoo.org) para familiarisarse con el ambiente que domina entre los developers. Una excelente ocasión es también la revista mensual (cada primer sábado del mes) “Día del Gusano”, es decir, Gentoo BugDay. Es entonces, cuando el canal #gentoo-bugs tiene vida. Allí se reúnen todos los interesados con las soluciones ya existentes o con la notificación de los nuevos errores hallados en la distribución. Como informan las estadísticas, durante todo el mes no hay ni siquiera un día, que se cierren tantos “gusanos” como precisamente durante el BugDay. Agrego además que el ambiente que domina en el canal es muy informal. ¡No se puede discutir el hecho de que para cada usuario estable de Gentoo la posibilidad de resolver un problema es una ocasión para una excelente diversión!
Wasabi – herramienta de control de logotipos
L
a herramienta Wasabi es una curiosidad que apareció últimamente en Internet. Es un programa que controla los logs del sistema, proyectados teniendo en cuenta los servidores que trabajan controlados por Gentoo. Puede controlar varios archivos a la vez con logs, revisando si no aparecen en ellos una serie de caracteres que concuerden con las expresiones regulares dadas anteriormente. El e-mail que informa sobre tal hecho es enviado inmediatamente después de encontrar adaptación o de vez en cuando como resumen de la actuación del programa. Actualmente, Wasabi tiene el número 0.2. Los cambios más importantes en relación a la versión anterior es el soporte de muchos archivos al mismo tiempo, una gran mejora del rendimiento y un soporte mejorado de las señales. Wasabi es un típico ejemplo del software de carácter Gentoo: apareció por la
sección llevada por Jarosław Świerad
necesidad del momento y fue al principio desarrollado por una sola persona (developer) porque no se encontró nadie más que pudiera desempeñar la función de guardián de los servidores de producción Gentoo. Con el paso del tiempo adquirió un gran reconocimiento de los usuarios y hasta hoy es desarrollado ya completamente de manera oficial por un mayor grupo de programadores. Se podrían multiplicar los ejemplos de otras herramientas Gentoo que surgieron de forma parecida, por ejemplo, Portage. Como dice el mismo Daniel Robbins: “Decidí crear Portage, porque apt-get, que se usaba en Debian, tenía un defecto (llamado por algunos cualidad) – me obligaba a realizar algunas actividades, que desde mi punto de vista deberían ser totalmente al contrario.”. http://article.gmane.org/gmane.linux.gentoo. announce/373
Tips & Tricks Gentoo Weekly Newsletter comenzó la publicación en cada edición de interesantes consejos de los usuarios de esta distribución. He aquí algunos de ellos: • Si te has equivocado en el cambio de redirección > de >> y has destruido algún archivo importante, este consejo es para ti. Agrega la siguiente línea a ~/.bashrc: set -o noclobber. Este comando evita la sobreescritura del archivo a través del uso del signo de cambio de dirección >. Ahora, para sobreescribir dicho archivo realmente, usa el signo >| en vez del usado hasta ahora >. Ejemplo: % programa >| archivo.txt
Para regresar rápidamente al directorio anterior, usa cd -. Ejemplo: $ pwd /home/messer $ cd /tmp $ cd $ pwd /home/messer
Frecuentemente existe la necesidad de cambiar el nombre del archivo de letras mayúsculas a minúsculas. Este comando (bucle) resuelve el problema: for n in *; do mv $n `echo $n | tr '[:upper:]' '[:lower:]'`; done.
• Adición de la variable de sistema TMOUT provoca una salida automática del usuario al pasar el número de segundos indicado. El comando : % export TMOUT=3600 saca al usuario después de 3.600 segundos sin usar el teclado. • Si acabas de instalar el nuevo administrador de ventanas y lo quieres testear sin desconectar el servidor de los X que ya funciona, es suficiente que ejecutes el comando: % startx -- :1. Esto provoca la apertura de la segunda sesión X y la nueva lectura del archivo ~/.xinitrc. Splash para PowerPC Muchas distribuciones ofrecen la posibilidad de visualizar los gráficos durante el inicio del sistema (los llamados bootsplash). Los usuarios de Gentoo en las máquinas de arquitectura Power PC no tenían hasta hace poco este placer. No hace mucho esto ha cambiado con la ayuda de Michał Januszewski, un desarrollador polaco. Gracias a su trabajo, bootsplash es ahora independiente de vesa-framebuffer y pueden alegrarse los dueños de procesadores PPC.
www.lpmagazine.org
23
actualidades aktualności
Noticias Nuevo Gaim Junto con una versión nueva del multimensajero Gaim, con el número 0.78, los autores reconocieron que no pudieron cumplir el plazo de dos semanas en el ciclo de su edición. A pesar de esto, mereció la pena esperar, porque en una nueva edición de Gaim se subsanaron todos los errores detectados, relativos a formateo del texto en la ventana de conversación, se ha agregado la compatibilidad con GTK en la versión 2.0, se ha actualizado el soporte del protocolo MSN, se ha introducido el soporte del protocolo SILC y se han corregido muchos otros errores detectados. En lo que se refiere a la comodidad del usuario, una modificación significante consiste en el rediseño de la ventana de ajustes, que llegó a ser más intuitiva y permite configurar rápidamente el mensajero. http://gaim.sourceforge.net/ ¿Vamos a jugar a cartas? David Bellot ha facilitado gratis en Internet una baraja de cartas entera construida en el formato SVG. Se creó cartas destinadas especialmente para usar con GNOME y con sus juegos, lo que tiene que ver con su total compatibilidad con la librería librsvg, dedicada a la visualización de gráficos vectoriales. En relación con este acontecimiento, vale la pena mencionar que el grupo de programadores que trabaja sobre librsvg hace todo lo posible para que la librería cumpla las exigencias de especificación SVG, instituida por W3C. Durante el análisis de ficheros SVG, los autores descubrieron que Adobe Illustrator generaba de modo incorrecto los ficheros en este formato, usando métodos no estándar para cubrir los objetos. Debido al hecho de que la mayoría de los iconos fue creada con Adobe Illustrator, Caleb Moore introdujo en la librería el soporte de extensiones no estándar popularizados por Adobe. http://david.bellot.free.fr/ Embellecemos GNOME Los autores de KDE-Look.org, una página para los interesados en embellecer el entorno KDE, de donde se puede descargar fondos y temas de escritorio, iconos y muchos otros suplementos, comunicaron que se abrió una página gemela dedicada al entorno GNOME. El propósito de GNOME-look.org, que así se llama la nueva página, es facilitar a otros usuarios de GNOME los suplementos para este entorno y estrechar las relaciones entre KDE y GNOME. http://www.gnome-look.org/
24
Linux+ 2/2004
gnome
Inkscape, ¿adónde vas?
P
odemos admitir que Linux no dispone de una colección amplia de programas que faciliten la preparación de publicación desde el principio hasta el fin, ni para emplear en Internet, ni tampoco en los usos profesionales, p.e. en las imprentas. GIMP, un programa destinado a la elaboración de gráficos vectoriales, hasta hoy en día no dispone de un soporte de modelo de colores CMYK. Sodipodi no siempre funciona de manera estable y sus funcionalidades están limitadas. Scribus, un programa aparentemente óptimo destinado a la composición de publicaciones, sigue teniendo varios defectos y no logra realizar tareas profesionales. Todos estos programas se han desarrollado de modo dinámico y sus autores se han esforzado mucho para perfeccionarlos, pero los gráficos y los operadores DTP tienen unas exigencias muy elevadas, mientras que las personas que construyen Software Libre tienen la voluntad, el tiempo y las posibilidades limitadas. Los autores de Inkscape, que antes participaron en la elaboración de Sodipodi, intentan satisfacer las exigencias de gráficos. Han decidido buscar su propio camino, puesto que tienen unos objetivos un poco distintos de los objetivos de los autores de Sodipodi. Una de las versiones de este programa les ha servido como código fuente; la empezaron a desarrollar conforme con sus propias ideas y métodos. Muy pronto se ha reconvertido Inkscape en C++ con el empleo de GtkMM (en vez de C y GTK). Los autores, igual de rápido han trazado los objetivos a los que intentan aspirar realizando su obra. El programa por su definición ha de ser un editor de ficheros SVG (Scalable Vector Format) excelente: de un formato de gráficos vectoriales abierto y estandarizado. W3C, una organización dedicada a la creación y promoción de estándares de la red, ha preparado el formato SVG. Poco a poco gana estima no sólo de los fanáticos de soluciones abiertas, sino también de empresas grandes. Permite construir gráficos vectoriales que cubren necesidades de la red, pero también se pueden emplear de otra manera. El formato escalable ha sido adaptado como un formato principal de iconos en las soluciones Open Source. Inkscape desde el principio ha sido desarrollado de modo muy dinámico:
Inkscape
en algunos campos ya adelantó de modo significante a su padre, Sodipodi. La sociedad de programadores y de gráficos externos ha tenido un papel importante en su éxito: envían sus ideas, correcciones e incluso bloques enteros del programa con funciones nuevas. A los autores les sorprende mucho cuando por la mañana se despiertan y encuentran en su buzón unas soluciones hechas, inventadas por los usuarios del programa que decidieron ayudar en el desarrollo de Inkscape. De este modo, el programa se ha enriquecido, entre otros, con: un soporte de operaciones muy bueno Boolean (unir, acortar, el resto y la parte común de dos figuras). Muy pronto se ha rediseñado la interfaz: después de la introducción de unas modificaciones en la estructura del programa, ha llegado a ser muy cómoda y fácil de manejar. Además, ocupa menos lugar en la pantalla, lo que favorece la ergonomía del trabajo. Inkscape se desarrolla en una dirección buena y a sus autores no les falta entusiasmo, que es muy importante en la sociedad Open Source. Pese al hecho de que el programa se ha construido en tiempo libre y, por decirlo así, como un hobby, sus autores tratan el asunto con toda seriedad. Gracias a los planes a largo plazo de los autores, ya podemos enterarnos qué cambios y qué funciones nuevas se preveen en el futuro y cómo se desarrollará esta aplicación. En un tiempo más cercano, podemos esperar que se agregue el soporte de clones, o sea, la reproducción del objeto de modo que la copia esté unida al padre. Por eso, cualquier cambio del padre influye en la copia, y viceversa. Esta funcionalidad es muy importante cuando se crean elementos repetibles: cuando deseamos modificar un detalle pequeño, no tenemos
gnome@lpmagazine.org
que eliminar todos los objetos, modificar y volver a reproducir: basta con cambiar el original y el cambio se reflejará en todas las copias. Otro elemento interesante planificado por los autores es la introducción del soporte de ECMAScript (denominado también JavaScript), que permitirá realizar scripts de documentos, y también crear animaciones. Otra iniciativa interesante, no relacionada con el programa en sí mismo, es Open ClipArt Library: una librería de imágenes listas para emplear en nuestros propios proyectos, alcanzable gratis en Internet (http://www.openclipart.org/ ). El grupo de creadores de Inkscape tampoco ha olvidado a los usuarios principiantes. Piensan facilitar un instalador cómodo, basado en el sistema Autopackage,
que permite elaborar sistemas de instalación cómodos e independientes de la distribución. No cada diseñador gráfico debe saber informática, por eso, la comodidad en el manejo es muy importante: tanto del programa mismo, como de su instalación. ¿Quién necesita un programa que no se puede instalar de modo fácil? Observando el desarrollo de Inkscape, podemos llegar a la conclusión que dentro de poco algunos diseñadores gráficos podrán emplear los beneficios que ofrece Linux. Pero, para que sea así, hay que desarrollar también otros programas, tales como GIMP, Scribus o CUPS: el sistema de impresión, imprescindible en el proceso de creación. ¡Sólo tenemos que animar a los autores de los programas a que trabajen más! http://www.inkscape.org/
GNOME en colores industriales: ¿qué te parece?
D
esde hace mucho tiempo (en principio, desde el lanzamiento de la versión 2.0), de modo predefinido se ha suministrado el mismo estilo gráfico que no goza de estima entre todos los usuarios. Por un lado es sencillo y legible, pero por otro, pesado y poco atractivo visualmente. A pesar de sus cuatro versiones, GNOME no ha cambiado desde aquel momento y satisface sólo a unos grupos de usuarios, desanimando desde un principio a los demás. Este problema se puede resolver instalando motivos gráficos adicionales desde las fuentes externas, pero no todos quieren o saben hacerlo. La empresa Ximian, lanzando la nueva versión de su producto principal, Ximian Desktop 2, decidió elaborar su propio motivo gráfico llamado Industrial. Su fuerza y su belleza tiene que ver con un matiz colorista claro y limpio y botones de control perfeccionados. El escritorio soportado con este motivo es limpio y agradable de mirar y el colorismo claro hace que la interfaz no parece brusca. Naturalmente, hay personas a las que Industrial no les gusta mucho o no les gusta nada de nada. No obstante, en opinión de la mayoría, es un motivo gráfico bien logrado, digno de atención de los que quieran que su escritorio tenga un aspecto sencillo, pero a la vez refinado. Respecto a la accesibilidad de este motivo: casi todas las distribuciones se suministran con GNOME cargado en las
Industrial
fuentes y no con la versión modificada por Ximian, denominada Ximian Desktop. Por eso, Jeff Waugh, después de consultarlo con Ximian y Novell, que no objetaron, propuso en la lista de desarrolladores GNOME, que se empleara el motivo Industrial como motivo predeterminado en las próximas versiones de este entorno. Lo aprobaron todos, menos algunas personas. No obstante, no faltó una discusión constructiva durante la cual surgió el problema de selección de iconos: ¿usar los que se encuentran en el conjunto Industrial, o dejar los ya existentes? O ¿crear iconos nuevos? La discusión sobre la selección de motivos gráficos para nuevo GNOME sigue desarrollándose en la lista de los desarrolladores del entorno. Si quieres ayudar a elegir nuevo aspecto, ¡únete y propon tu solución! http://mail.gnome.org/archives/desktop-devellist/2004-June/msg00033.html
sección llevada por Mateusz Papiernik
Noticias
GIMP-rovisación Salió a la luz la primera versión de GIMP, un programa de tratamiento de gráficos vectoriales, de una nueva línea de desarrollo. GIMP en la versión 2.1 introduce algunas modificaciones, por eso, es necesario instalarlo en diferente sitio que la versión 2.0. Los cambios más importantes comprenden la migración del sistema de menú al GtkUIManager, el uso de nuevo diálogo de selección de ficheros y la compatibilidad perfeccionada de la interfaz del programa con instrucciones HIG (Human Interface Guidelines). Nuevas funcionalidades introducidas en esta versión de GIMP incluyen el uso de atajos de teclado independientemente de la ventana activa. http://www.gimp.org/
GTweakUI La siguiente versión del conjunto de herramientas que facilitan la configuración de elementos del entorno GNOME, de modo predefinido ocultos para un usuario común y corriente. En esta versión del programa es posible configurar Menú de ajustes de sesión y de Nautilus. Los autores buscan personas que quieran ayudar a desarrollar el programa; también traductores, programadores y diseñadores gráficos. Cada uno que se sienta capaz, puede ayudar matriculándose en la lista de discusión del proyecto. En la versión siguiente el conjunto se enriquecerá con una configuración de colores GTK y con la administración de paneles. http://gtweakui.sourceforge.net/ Glom Glom es un programa provisto de una interfaz de usuario cómoda y sencilla, con el que se elaboran las definiciones de tablas y de relaciones entre ellas. Asimismo, permite buscar datos en estas tablas. Nueva versión con el número 0.8 subsana varios errores detectados en versiones anteriores. No obstante, depende de muchas librerías no estándar (muy a menudo en las versiones de desarrolladores y no estables). La mala compatibilidad con estándares HIG genera muchos problemas, por eso, Glom difiere de otros programas de GNOME en cuanto a la interfaz del usuario. A pesar de estos defectos, el programa es digno de atención de todas las personas que se dedican al diseño de bases de datos de relación, ya que puede facilitar y acelerar el trabajo sobre la estructura de datos. http://glom.sourceforge.net/
www.lpmagazine.org
25
actualidades aktualności
Noticias Nuevo Krusader La nueva versión del conocido por todos administrador de archivos, creado como réplica de Midnight Commander, lleva bastantes cambios. Algunos de ellos son los nuevos iconos, la posibilidad de no analizar los archivos antes de mostrar su contenido, la configuración del color del panel y la adición de muchas nuevas traducciones. El nuevo número de la versión es el 1.40beta2: os invito a analizarlo. http://krusader.sourceforge.net/ Ordenamos la basura de html Hasta el momento era difícil encontrar una herramienta que sirva para ordenar automáticamente el código HTML para KDE, sin embargo – como sucede con las aplicaciones para este entorno – tal herramienta surgió hace poco. Se llama KHTMLScrub y su objetivo principal, que se le da bastante bien, es eliminar marcadores HTML que sobran. Después de reducir el documento, tenemos la función de previsualización del trabajo efectuado y de guardar sus resultados. http://www.leonscape.pwp.blueyonder.co. uk/linux/khtmlscrub/index.html Operamos sobre imágenes Lo que pasa es que nuestro enemigo cruel – el tiempo – no permite editar manualmente los archivos que necesitamos modificar. Así es la situación con los archivos gráficos, no todos tienen tiempo para conocer aplicaciones avanzadas de gráficos, por tanto, surgió un suplemento muy útil de Konqueror, denominado KImgSm. Mediante el service menu, es decir, el menú de acción, tenemos la posibilidad de manipular los gráficos para comprimirlos, escalarlos, convertirlos o para girar la imagen. Todo se limita a un par de clicks con el ratón. El tiempo destinado a esta tarea es mucho más corto y el resultado casi igual. http://kde-apps.org/content/ show.php?content=11505 Ilusión óptica en KDE Los desarrolladores de KDE seguramente no se dejarán atraer para implementar estereogramas en la interfaz estándar del entorno, sin embargo, si queremos crear imágenes separadas, filtradas con los modelos adecuados (por ejemplo, los usados para analizar los ojos), es decir, los estereogramas, tendremos que interesarnos por la aplicación denominada Kblinsel, creada justamente para los usuarios de KDE. http://kde-apps.org/content/ show.php?content=13138
26
Linux+ 2/2004
kde
SID: un sencillo mensajero
P
asaron muchos meses hasta que llegué – por pura casualidad – a un multimensajero, que tendría grandes posibilidades de ajuste a mis necesidades y el soporte normal para el protocolo Jabber. Hasta el momento usaba la aplicación Kopete, sin embargo, cuando últimamente consulté la página www.kde-apps.org, vi el nombre: Simple Instant Messenger. Pensé: "¡es algo nuevo y a lo mejor incluye Jabber!". Abrí la página con los detalles y resultó que no era una aplicación nueva y que realmente incluye Jabber como plugin (junto a otras 20 más y el código fuente de la aplicación). Inmediatamente descargué el archivo de más de 3,5 MB y empecé la compilación. Mientras tanto vi en la página principal del proyecto el listado de funciones de la aplicación, ya que me interesaba el marco de su implementación. Sobre todo, me interesaba el soporte de la transferencia de archivos en Jabber; hasta el momento es el tercer cliente de Jabber que soporta este mecanismo (además de Gaim, escrito con el uso de la librería GTK+ 2 y de Psi, o sea, el cliente de Jabber más importante para Linux/ Windows). Después de ejecutar SID, creé mi perfil y pasé a la ventana de configuración, donde me esperaban numerosas opciones para cada uno de los plug-ins. Por ejemplo, los plug-ins más importantes que cumplen las funciones básicas son: •
•
• • •
Icons : administración de iconos para diferentes protocolos y de emoticonos, compatibles con los temas del mensajero Miranda (se pueden descargar esquemas de iconos, fondos y conjuntos de emoticonos desde la página http://miranda-icq.sourceforge.net/ Sin embargo, no pude obligar al conjunto de emoticonos descargados de aquel sitio a que funcionaran con SIM); OSD: aviso en la pantalla sobre la accesibilidad de los usuarios y sobre nuevos mensajes; GPG: posibilidad de activar la encriptación de conversaciones; Forward: reenvío de mensajes; Weather: una detallada previsión de tiempo por medio del servicio Weather.com.
Sencillo mensajero instantáneo
SIM soporta los siguientes protocolos de comunicación: Yahoo!, ICQ/AIM, MSN, LiveJournal y, desde luego, Jabber. ¿Qué opino de la ergonomía de la aplicación? Sinceramente, no he encontrado todavía un mensajero mejor preparado. Cada detalle está bien pensado, de forma que el mismo usuario pueda conversar de manera muy cómoda. En la configuración podemos fijar de forma estándar nuestros propios mensajes de accesibilidad o cada vez un mensaje diferente (mediante el botón de cambio del estatus de la ventana principal). También podemos ajustar la ventana de conversación a nuestras necesidades, de la misma manera que en Kopete, mediante el lenguaje XML (hay varias plantillas disponibles, por ejemplo, XChat). A cada usuario podemos asignar una foto, mientras que el resumen de la información sobre la persona seleccionada aparece al indicar con el ratón el lugar del listado. El soporte mencionado de la transferencia de archivos funciona bastante bien (en todos los protocolos). Además, tenemos la posibilidad de enviar mensajes SMS desde el nivel de la aplicación (desgraciadamente, esta función no está acabada todavía, ya que no pude enviar ni un mensaje desde el nivel de la aplicación). El soporte de los perfiles permite registrarse en muchas cuentas. En el plug-in para Jabber tenemos la posibilidad de activar/emplear transferencias. He enumerado tan sólo una parte de las posibilidades de SIM. Os recomiendo mucho descargar y probar este excelente mensajero, mirando con cierto recelo algunas funciones que no han sido todavía acabadas por los desarrolladores. http://kde-apps.org/content/show.php? content=10080
kde@lpmagazine.org
KDE y planes para el futuro
C
omo a menudo ocurre a la hora de desarrollar varios tipos de proyectos, después de editar la versión estable, los developers manejan el código de la versión desarrollada. La misma situación tiene lugar desde hace unos años en el caso de nuestro excelente entorno. La edición de la versión 3.2 llevó muchos cambios – a veces revolucionarios – que seguramente sintieron todos los usuarios. Hace poco fue publicada la primera versión alpha 3.3. No se puede leer mucho al respecto en las páginas web dedicadas al tema de Open Source, pero vale la pena ver las novedades que traerá la siguiente versión de KDE. A continuación presentamos el listado abreviado de algunos cambios. Las funciones implementadas son las siguientes: • • •
• •
• •
•
•
•
KNotes : posibilidad de intercambio de avisos de la red; KMail : edición de correos en formato HTML; Kontact : integración con KPilot y posibilidad de conectarse a los servidores eGroupware; KWeather : diferenciación de la noche del día; QuantaPlus : soporte para el depurador PHP e integración con las nuevas aplicaciones: KImageMapEditor y KlinkStatus; Ark : reescrita integración con Konqueror; Kompare : soporte para demostrar líneas concretas con las diferencias en los archivos; Kopete: implementación del envío de archivos y grupos de chats en el plugin del protocolo Jabber, así como el soporte para la encriptación SSL en el plug-in de IRC; KolourPaint: una nueva aplicación pequeña, creada para editar rápido simples archivos gráficos; Klatin: nueva aplicación para estudiar latín.
Las funciones disponibles durante la implementación son las siguientes: • • • •
KMail : implementación del creador del filtro anti-spam y anti-virus; Kontact: integración con el cliente Kolab; KDevelop: integración con QtDesigner; QuantaPlus: integración con el sistema de administración de la versión CVS;
Kopete
•
•
Kopete: administración de mayor cantidad de servidores del plug-in IRC, aparte del soporte para visualizar los archivos LaTeX; KDM: adición del soporte de los temas gráficos.
Las funciones planeadas son las siguientes: •
•
• • • • •
KNode: ofrece a la aplicación el aspecto del cliente de correo KMail, un mejor soporte para añadir los anexos a los mensajes y una mejora de la visualización de los mensajes en HTML; KNotes: el soporte para los avisos de “sólo-lectura” y la posibilidad de añadir alarmas a los avisos; QuantaPlus: el soporte para grupos de desarrolladores en los proyectos; KAudioCreator: posibilidad de enviar los datos CDDB al servidor; KGhostView: posibilidad de marcar y buscar el texto; Klatin: añadir diccionario latín; KMenu: menú de KDE reconstruido y orientado hacia las tareas.
Como podemos ver, muchas cosas nuevas fueron implementadas en el desarrollado actualmente KDE 3.3. Fijémonos que se pueden descargar las fuentes más nuevas de KDE desde los servidores CVS, para ver los progresos realizados desde la edición de la última versión estable. Sinceramente recomiendo probar las últimas versiones de KDE y enviar un máximo número posible de informes sobre errores de este entorno: cuanto más haya, más rápido recibiremos la versión estable. http://developer.kde.org/development-versions/ kde-3.3-features.html http://bugs.kde.org/ http://developer.kde.org/build/compile_ cvs.html
sección llevada por Paweł Biliński
Para los aficionados de Basic El autor de esta aplicación ya desde el principio quiere subrayar que su obra no es un clono del bien conocido por todos Visual Basic. La aplicación se llama Gambas y es un entorno de developers para programadores que crean en el lenguaje Basic. A través de este programa podemos crear la interfaz gráfica de una aplicación, conectarnos a las bases SQL, ajustar las aplicaciones KDE mediante los mecanismos DCOP, crear aplicaciones de red y traducir intefaz de la aplicación a muchos idiomas. Es cosa muy útil para las personas que, después de la migración a Linux, quieren crear cosas en Basic. http://gambas.sourceforge.net/ http://kde-apps.org/content/ show.php?content=10158 Editamos iconos Perico es una nueva aplicación para KDE que sirve para editar gráficos con el método de pixelar, o sea, para manejar imágenes pequeñas tales como iconos. Permite escalar imágenes, girar, cortar y pegar, pintar con diferentes pinceles y poner filtros. http://software.jodda.de/perico.html http://kde-apps.org/content/ show.php?content=10601 WinPopup para KDE Para las personas que quieran recibir mensajes, enviados en la red local por los usuarios de la aplicación WinPopup, procedente de Windows, hay una pequeña aplicación con el nombre adecuado a su tarea principal: KPopup. La aplicación se comunica con los demás ordenadores vía el protocolo SMB (Samba), pues el autor ha previsto scripts que ayudan en la adecuada configuración de este servicio. http://www.henschelsoft.de/ http://www.samba.org http://kde-apps.org/content/ show.php?content=13408 Buscando extraterrestres El conocido por todos proyecto SETI, que tiene como objetivo integrar el poder de cálculo de los procesadores de millones de ordenadores de todo el mundo a fin de encontrar civilizaciones extraterrestres, por fin tiene un par de clientes para Linux. Uno de ellos fue escrito, principalmente, para los usuarios de KDE: se llama KSetiSpy y sirve para monitorizar y analizar los datos convertidos por herramientas suministradas por el proyecto SETI@Home. La última versión llegó a ser “transparente” desde el punto de vista de la red y puede ser controlada por los comandos del sistema DCOP, así como cambiar su aspecto mediante preparados esquemas de iconos. http://ksetispy.sf.net/ http://kde-apps.org/content/ show.php?content=10303
www.lpmagazine.org
27
actualidades aktualności
Noticias MozLinker 0.2.2 MozLinker es un interesante complemento a Mozilla que funciona también en Firefox. Permite localizar en el menú enlaces descargados del archivo remoto RDF. Se pueden localizar de dos maneras: o bien en forma de pestañas en el menú, o bien como botones en una barra aparte. Los enlaces pueden actualizarse manualmente, automáticamente o cada cierto periodo de tiempo. La versión actual soporta únicamente RSS 1.0. En comparación con la versión anterior se han introducido una serie de mejoras; entre otras, no deberían de aparecer ya los enlaces y directorios doblados, se ha mejorado el botón de recarga y muchas funciones más. http://freshmeat.net/projects/mozlinker/ Wasabi 0.2.1 Wasabi es una herramienta que sirve para monitorizar los archivos del registro del sistema. Esta aplicación busca logs, comparándolos con las expresiones regulares dadas y, en caso de descubrir líneas que coincidan, avisar al usuario. El aviso se envía por correo electrónico y se puede enviar después del evento, así como después de un resumen temporal. El destinatario puede ser uno o más usuarios. Esta versión, entre otros, mejora las cabeceras que faltan del código SMTP y añade la posibilidad de esconder la PID. http://freshmeat.net/projects/wasabi/ Mozilla Thunderbird 0.7 Thunderbird es un excelente cliente de correo electrónico que surgió de una total reconstrucción del módulo de correo de Mozilla. Es una aplicación que funciona por separado, no sólo en la plataforma Linux, sino también en otras. En la edición más reciente el paquete de instalación fue reducido, se ha mejorado el rendimiento, se han añadido nuevos administradores de temas y suplementos, así como las herramientas para analizar errores del funcionamiento de aplicación, se ha introducido el marcado en colores de los fragmentos citados de enunciados y se ha permitido crear muchas identidades para una cuenta de correo. http://freshmeat.net/projects/thunderbird/
28
Linux+ 2/2004
linuxfresh
Kandid 0.3.6
N
os hemos acostumbrado a que creamos gráficos trazándolos nosotros mismos o generándolos a base de los parámetros dados. Sin embargo, ¿pueden los mismos gráficos evaluarse desde los más simples hasta los más complicados, aceptando los rasgos que creemos buenos? Resulta que sí. Justamente esta forma de tratar los gráficos nos asegura la aplicación Kandid. En esta aplicación tenemos a nuestra disposición un cierto número de dibujos. Los mejores de ellos coinciden y, en consecuencia, surge una nueva generación. Al igual que en la naturaleza, los peores dibujos deberían perderse en el precipicio del olvido y los mejores deberían sobrevivir. El usuario es quien decide cuáles son los mejores. Él mismo puede decidir que la siguiente generación no se cree con el uso de toda una población, sino tan sólo con el uso de dos padres. Los resultados se pueden guardar en el disco en forma de un archivo gráfico o pueden imprimirse. Podemos también compartir el cromosoma (conjunto de parámetros) del mejor dibujo con otros usuarios de la aplicación. Kandid fue escrito en Java, por lo tanto, si queremos usarlo tenemos que instalar Java en el sistema. Además, si queremos emplear la completa funcionalidad de la aplicación, deberíamos instalar las aplicaciones Fractal Flames (http://flam3.com/) y POV-Ray (http://www.povray.org/ ). La instalación de la aplicación no causa ningún problema. Se limita a descargar el archivo de la página principal del proyecto y desempaquetarlo. Luego, es suficiente entrar en el directorio creado y ejecutar el script ./kandid. Después de ejecutar la aplicación, nos saluda el creador, en el cual seleccionamos los tipos de poblaciones y colores, y el tamaño de la población. El tamaño de la población es el de la matriz de los dibujos que queramos ver en la pantalla. Una población mayor nos asegura más variedades, es más fácil encontrar el dibujo que nos interese. Después de terminar el creador, empezamos el verdadero trabajo. Vamos a ver los dibujos generados, de los cuales la mayoría se parecerán entre sí. Arriba se encuentran los botones de los que por el momento nos interesan tan sólo + y –. El menos está en rojo, lo cual significa que el dibujo será sustituido por
Quizás voy a fijar esta figura como tema
uno nuevo en la siguiente generación. Cuando uno de los dibujos nos guste, pulsaremos en el menos para que cambie el color en blanco. Luego, podemos volver a generar los demás dibujos pulsando el botón que está en el panel izquierdo, el tercero desde arriba (generate random next generation). Repetimos toda la operación unas cuantas veces hasta que tengamos los dibujos que nos gusten. Desde luego, si algún dibujo deja de gustarnos, podemos eliminarlo volviendo a marcar el menos. Cuando ya tengamos el conjunto de dibujos que nos gusten, será la hora de pasar a la siguiente etapa, es decir, la evolución. Si marcamos el menos en verde, podemos marcar uno de los dibujos como el mejor. Sus "genes" serán tratados como dominantes. Ahora pulsamos el botón que se encuentra en el panel izquierdo, el primero de arriba (generate next generation with sexual reproduction). Los dibujos que surjan van haciéndose cada vez más interesantes, sin embargo, entre ellos siguen encontrándose unos que no valen nada. Volvemos a cambiar el marcado de los que menos nos gustan y, luego, indicamos el mejor dibujo y repetimos toda la operación. Podemos guardar las mejores poblaciones empleando el icono del disquete y los mejores dibujos podemos exportarlos al archivo: para ello sirve el botón E (export picture) situado encima del dibujo. Sólo nos queda experimentar y buscar el dibujo más bonito. En la nueva versión se han corregido unos errores de los módulos PostScript y de la impresión. Actualmente los dibujos para imprimir se exportan con la resolución 300 DPI (antes se usaba sólo la 72 DPI). http://freshmeat.net/projects/kandid/
fresh@lpmagazine.org
Noticias
Xawdecode 1.9.2
V
er películas con Linux es algo normal. Si nuestro ordenador está dotado de la tarjeta TV, no hay obstáculo para ver también la televisión. Una de las aplicaciones que nos lo permite es Xawdecode. Puede servirnos no sólo para ver televisión sino que también puede sustituir la grabadora de vídeo. Los archivos se pueden guardar empleando los códigos ffmpeg, xvid o DivX 5.05. Gracias a la cooperación con AleVT, podemos también leer el teletexto. Podemos realizar la instalación de la aplicación de las fuentes o de los paquetes preparados para diferentes distribuciones (tenemos disponibles tanto los paquetes RPM como los DEB). Después de ejecutar la aplicación por primera vez (con el comando xawdecode), merece la pena empezar por buscar las cadenas disponibles. Suerte que Xawdecode posee script que lo hace por nosotros. Primero tenemos que fijar los adecuados parámetros. Para ello abrimos el menú pulsando el botón derecho del ratón en la ventana de la aplicación. En la sección Channel Options cambiamos la opción TV Norm en PAL. Luego, la opción Video Source fijamos en Television y la opción Frequency table fijamos en pal-europe-west. Gracias a estos valores deberíamos poder encontrar los canales emitidos en España, tanto usando la antena exterior como el cable. Podemos ya pulsar el botón Open Channel Editor que nos da acceso a la edición del listado de canales. Aquí pulsamos el botón Scan TV, lo cual hará ejecutar el script de búsqueda en la ventana separada. Tenemos que contestar unas preguntas. La primera volvemos a contestar con PAL (selecionamos el valor 0), la segunda pal-europe-west (valor 7). Ahora, durante unos minutos la aplicación, está buscando canales. Después de terminar la búsqueda, tenemos la posibilidad de añadir los canales manualmente. Cuando estemos contentos con los resultados de la búsqueda, contestaremos la pregunta introduciendo el valor 0. En la siguiente etapa podemos ordenar los canales en el orden que nos parezca oportuno. Damos los siguientes números de canales que van a encontrarse en la posición primera, segunda y en las siguientes. La última pregunta se refiere a la adición de la fuente exterior: normalmente contestamos n. En la ventana Channel Editor podemos, después, ajustar los nombres de los canales a nuestras necesidades. Podemos conmutar
sección llevada por Piotr Machej
Qué bien tener Discovery Channel...
entre los canales con las teclas del cursor (arriba/abajo). Para mostrar la imagen en la pantalla completa sirve la tecla [F], y con la tecla [T] podemos forzar la posición de la ventana con la imagen de televisión por encima de todas las aplicaciones. Una funcionalidad muy interesante es el empleo de Xawdecode como grabadora de vídeo. Podemos no sólo grabar el programa visto actualmente, sino también fijar la hora y el día de la grabación. Las opciones de grabación son accesibles después de pulsar las teclas [Alt]+[R]. Aquí configuramos el encodificador que vamos a emplear, así como los demás parámetros de grabación. El ajuste del tamaño de la imagen, el valor de bitrate o la calidad dependen del espacio que tengamos en el disco duro y de la calidad que esperemos. Al final fijamos la ruta en la cual vamos a grabar la película. Si pensamos programar la grabación con antelación, debemos tener instalados en el sistema los demonios At y Cron. Al pulsar el botón Shedule a record, iniciamos el script con el cual podemos administrar las fechas de las grabaciones programadas. En caso de una simple programación de la hora de grabaciones, tenemos menos opciones disponibles que en el modo avanzado (Shedule a record in expert mode). En el segundo caso podemos programar no sólo grabaciones separadas, sino también cíclicas (por ejemplo, nuestra serie preferida). Además, tenemos mucha influencia en tales parámetros como el encodificador y la resolución. En la nueva versión de la aplicación se ha actualizado sobre todo la nueva interfaz de usuario. Además, se ha añadido el soporte para el encodificador ffmpeg huffyuv. El script xawdecode_scan.sh funciona ya en los kernels de la serie 2.6.
Mod_bt 0.0.9 Mod_bt es tracker de BitTorrent, que funciona como módulo del servidor Apache. Se puede configurar libremente cambiando el archivo httpd.conf del servidor Apache. El objetivo del autor de la aplicación es integrar BitTorrent con Apache para que cualquier creador de páginas web que comparta grandes archivos pueda ceder la carga de la conexión a los clientes. La versión actual subsana algunos errores. Se ha añadido también la documentación. http://freshmeat.net/projects/modbt/ LiteSpeed Web Server 1.5 Hoy en día las páginas web pueden sufrir ataques de todo tipo. Con esta idea, surgió LiteSpeed Web Server, que puede funcionar tanto como un servidor separado de las páginas web como un vigilante que guarda el acceso a un servidor de páginas. Además de las funciones estándar, tales como el soporte de HTTP/1.1, SSL, CGI, PHP, JSP o la compresión GZIP, ofrece también el soporte de los archivos .htaccess, el entorno chroot, protegido contra los ataques de tipo DoS, así como los mecanismos de restauración de información. La aplicación se instala de los archivos binarios ya preparados (no se han publicado los códigos fuente), y en la versión Standard su empleo es gratuito tanto para el uso privado como para el comercial. En la versión más reciente se han introducido muchas mejoras, entre otras, el panel de administración. http://freshmeat.net/projects/lsws/ Ringtone Tools 2.20 Junto a la popularización de los teléfonos móviles y la continua extensión de sus funciones, surgió la necesidad de crear por separado timbres y logs. Una de las herramientas de este tipo es Ringtone Tools. Es un convertidor de formatos que permite convertir melodías guardadas del formato MIDI o RTTL en el formato reconocido por diferentes teléfonos móviles. En caso de crear logs, se pueden emplear archivos en el formato BMP, GIF o TXT. Actualmente la aplicación soporta algunos modelos de tales teléfonos como: Ericsson, Kyocera, Motorola, Samsung, Nokia o Siemens. En la nueva versión se ha añadido el soporte del formato GIF. http://freshmeat.net/projects/ ringtonetools/
http://freshmeat.net/projects/xawdecode/
www.lpmagazine.org
29
actualidades aktualności
Noticias ELinks 0.9.2rc1 Pese a que existen navegadores muy extendidos de páginas web que trabajan en el entorno gráfico, muchos usuarios siguen prefiriendo rápidos y cómodos navegadores de texto. Entre ellos el más importante parece ELinks, que es la extendida versión del navegador Links. Da soporte de marcos, tablas y permite descargar archivos en segundo plano. Tiene también otras funciones importantes, como el soporte de la autorización de HTTP y de las cookies. La versión actual es el primer Release Candidate de la versión estable 0.9.2. Incluye mejoras de los errores más pesados, que se detectaron en la versión anterior, número 0.9.1. http://freshmeat.net/projects/elinks/ IrcLeech 0.2 No todos saben que IRC (Internet Relay Chat) puede servir no sólo para hablar. Para muchas personas es fuente de archivos que normalmente no se pueden encontrar en otras partes. Los aficionados a manga y anime pueden descargar de aquí las obras que no se han publicado en España, traducidas por los aficionados para los aficionados. También se puede acceder a canales desde los cuales se pueden descargar películas, música o aplicaciones interesantes. La descarga de los datos desde IRC puede parecer para algunos bastante difícil. Para ellos se creó la aplicación IrcLeech. Su objetivo es facilitar la descarga de los archivos de los servidores XDCC localizados en IRC a las personas que no quieran profundizar la sintaxis de la línea de comandos. La aplicación fue escrita en el lenguaje C#, con lo cual para funcionar correctamente requiere Mono y GTK#. Para la versión más reciente de la aplicación se recomienda la versión Mono 1.0 Beta3. http://freshmeat.net/projects/ircleech/ Rssh 2.2.1 A veces existe la posibilidad de compartir archivos sólo con algunas personas, teniendo en cuenta la seguridad. La creación del servidor FTP no siempre es una buena solución. Por otra parte, si el archivo tiene que enviarse por SCP, al mismo tiempo la persona consigue acceso a la shell vía SSH. En este caso es muy útil la aplicación Rssh. Es una shell restringida (ing. restricted shell), gracias a la cual el administrador puede limitar acceso a los usuarios seleccionados a SCP y SFTP. En la última versión se han introducido mejoras relacionadas con la seguridad, así como se ha añadido el soporte de CVS, rdist y rsync. http://freshmeat.net/projects/rssh/
30
Linux+ 2/2004
linuxfresh
Hping 3.0-alpha-2
H
ping es una herramienta que debería conocer cada administrador de la red o sistema. Incluso los usuarios de ordenadores individuales, si quieren proteger su sistema por medio del cortafuegos (ing. firewall), pueden sacar provecho del empleo de la aplicación Hping. En pocas palabras, la aplicación sirve para generar diferentes paquetes ICMP, UDP o TCP y mostrar la respuesta conseguida del ordenador remoto. Es muy importante que el usuario pueda fijar prácticamente todos los parámetros de este paquete, gracias a lo cual la herramienta sirve para analizar cortafuegos, sistemas de detección de intrusos o para analizar el rendimiento de la red. Se pueden emplear para escanear los puertos, reconocer el sistema operativo instalado en el ordenador remoto e incluso para enviar archivos. Para los principiantes es una buena herramienta para conocer en la práctica el protocolo TCP/IP (gracias a ella podemos observar, por ejemplo, el valor del campo ID de la cabecera IP). En comparación con la rama 2.0 de la aplicación, las versiones 3.0 han sido enriquecidas con, por ejemplo, el motor APD (Ars Packet Description) que permite traducir las descripciones de los paquetes, guardados en forma de texto, en paquetes preparados para enviar; también al revés (creación de la representación textual de los paquetes reales). Además, se ha facilitado el empleo del lenguaje de scripts Tcl. Permite crear de una manera más fácil las aplicaciones destinadas al análisis y al aumento de la seguridad de las redes TCP/IP. Además, Hping sigue teniendo la funcionalidad completa, conocida de la serie 2.0, por lo tanto, podemos emplearlo libremente en la línea de comandos. La instalación de la aplicación consiste en desempaquetar las fuentes y realizar una serie de comandos: ./configure, make, make install (el último como usuario root). Después de instalar podemos llamar a cualquiera de los comandos: hping, hping2 o hping3 (todos localizados en el directorio /usr/sbin/ indican el archivo hping3). Cuando ejecutemos el comando hping sin parámetros, entraremos en el modo interactivo. En este modo podemos dar comandos, fijar las variables, así como teclear todas las series de comandos en
Así son los pings normales en la representación de texto
Tcl. Asimismo, podemos localizar tales comandos en un archivo separado (por ejemplo, script.htcl) y luego dar el comando hping exec script.htcl listado de argumentos, donde el_listado_de_argumentos son los argumentos opcionales transferidos al script. Podemos obtener más información sobre la sintaxis de los comandos en la página principal del proyecto y en la documentación. Puede resultar muy interesante el análisis de los scripts de ejemplo, situados en el subdirectorio lib/ del directorio que incluye fuentes. Por ejemplo, si queremos analizar los paquetes que pasan por la interfaz seleccionada, podemos emplear el script apd.htcl. Hay que abrirlo y sustituir el valor eth0 de la línea set xx [hping recv -hexdata eth0 0 100] por el nombre de la interfaz que nos interese. Luego, podemos ejecutar el script con el comando hping exec apd.htcl (en el directorio donde se encuentra este archivo), y en la pantalla veremos la representación textual de los paquetes enviados por la interfaz. Es una buena forma de conocer la representación empleada por APD. Es muy clara y, por lo tanto, muy útil en el uso. Si, a la hora de escribir el script, no usamos todas las posibilidades de los campos, Hping tratará de aceptar valores razonables para ellos (por ejemplo, por sí mismo contará la suma de control). En la nueva versión se han añadido dos parámetros nuevos de la llamada de la aplicación. El primero de ellos (--flood) permite enviar paquetes lo más rápido posible. El segundo (--beep) produce un sonido a la hora de recibir cada paquete. Además, se ha actualizado la documentación y se han corregido unos errores relacionados con el archivo Makefile. http://freshmeat.net/projects/hping/
fresh@lpmagazine.org
Noticias
Samhain 1.8.9
I
ndependientemente del nivel de segurdad del servidor, siempre existe la posibilidad de que alguien lo ataque. Cuando fallen todos los cortafuegos, protecciones y contraseñas, lo más importante será la posibilidad de ver si nuestro sistema ha sido penetrado. En este caso muy útiles son los sistemas de detección de ataques (IDS – Intrusion Detection System). Una de las aplicaciones que cumple tal papel es Samhain. Permite controlar la integridad de los datos y detectar ataques no sólo en los ordenadores individuales, sino también en las redes enteras. Esto es posible gracias al hecho de que el mismo Samhain sabe funcionar en la arquitectura cliente/ servidor, donde los clientes se ocupan de monitorizar los respectivos sistemas y el servidor central recopila todos los logs. Samhain puede también ejecutarse por separado: en este caso puede funcionar también como demonio. La funcionalidad de esta aplicación se basa en comparar el estado actual del sistema de archivos con el estado guardado en la base. Está claro, la base debería generarse en el sistema en el que confiamos (por ejemplo, recién instalado). Samhain puede también controlar los archivos ejecutables con los bits fijados SUID/SGID, buscar rootkits e incluso esconder su propia presencia. Teniendo en cuenta el carácter de Samhain, después de descargar las fuentes vale la pena comprobar si alguien las ha modificado. Después de desempaquetar el archivo descargado (tar xzvf samhaincurrent.tar.gz), deberíamos conseguir dos archivos: samhain-1.8.9.tar.gz y samhain-1.8.9.tar.gz.asc. Deberían estar firmados con la clave 0F571F6C (Rainer Wichmann). Podemos descargarla con el comando gpg
--keyserver
blackhole.pca.dfn.de
Luego, comprobamos la corrección de los archivos: --recv-keys gpg
--verify
0F571F6C.
samhain-N.N.N.tar.gz.asc
samhain-1.8.8.tar.gz. Cuando consigamos
la confirmación de la firma correcta, podemos desempaquetar el archivo respectivo (tar xzvf samhain-1.8.9.tar.gz). La compilación, en el caso de la versión separada, es normal: ./configure, make, su, make install. Además, podemos dar el comando make install-boot para configurar los scripts iniciales. En caso de que queramos compilar Samhain como cliente y servidor, tenemos que usar la documentación, ya que además de las opciones adicionales en
sección llevada por Piotr Machej
A los que quieran configurar Samhain en la arquitectura cliente/servidor les espera una instrucción detallada
el comando ./configure, hay que conocer el tema de la autorización del cliente. En vez de instalar la aplicación con los comandos make y make install, podemos crear un paquete adecuado para nuestro sistema. Para ello es suficiente (debemos tener la autorización del superusuario) dar el respectivo comando: make rpm o make deb. Después de terminar la compilación, nos van a avisar dónde se encuentra el paquete, que podemos ya instalar normalmente. El archivo principal de configuración de Samhain es /etc/samhainrc. En él determinamos la forma en la cual deberían ser tratados los respectivos archivos (por ejemplo, el tamaño de los archivos del registro del sistema puede ser cada vez mayor y esto no debería causar alarma). El archivo incluye extendidos comentarios que facilitan mucho su ajuste a nuestro sistema. Además, allí fijamos los métodos de avisar (por ejemplo, a los destinatarios del correo electrónico), así como todas las demás opciones. Cuando ajustemos este archivo a nuestras necesidades, deberíamos iniciar la base. Para ello sirve el comando samhain -t init -p info. Luego, cuando queramos actualizar la base, por ejemplo, después de unos cambios más grandes del sistema, ejecutamos el comando samhain -t update. Nos queda tan sólo ejecutar de vez en cuando la aplicación para comparar el estado actual del sistema de archivos con la información incluida en la base. Lo realizamos con el comando samhain -t check. En la nueva versión se ha corregido el error que causaba problemas si se había determinado a más de un destinatario del correo. Se ha corregido también el error relacionado con el escape de la memoria, así como unos errores más. http://freshmeat.net/projects/samhain/
Acrobat Reader 5.0.9 Aunque la mayoría de las distribuciones de Linux incluye aplicaciones para leer archivos en el formato PDF, tales como Xpdf, muchos usuarios están acostumbrados a la aplicación Acrobat Reader, conocida de Windows. Suerte que exista también la versión para Linux. Permite de forma muy cómoda leer e imprimir los documentos en el formato PDF. Desgraciadamente, las versiones para Linux no se desarrollan tan activamente como las de Windows, así pues, mientras en el sistema Windows podemos gozar de la versión 6.0.1, para Linux tenemos apenas la 5.0.9. No podemos soñar con una funcionalidad completa que tuvimos en Windows. En la versión más reciente se han mejorado algunos errores relacionados con la seguridad. http://freshmeat.net/projects/ acrobatreader/ Krusader 1.40 -beta2 Muchos usuarios prefieren emplear todo tipo de administradores de archivos para operaciones con archivos, por ejemplo, una herramienta popular llamada Midnight Commander. También en el entorno gráfico existen aplicaciones accesibles de este tipo, por lo tanto, no es necesario ejecutar MC en el emulador de terminal. Una de estas aplicaciones es Krusader, destinada para el entorno KDE. Además de las operaciones estándar en los archivos, ofrece un extendido soporte de archivos, el soporte para los sistemas de archivos montados, el soporte de FTP, un avanzado módulo de búsqueda, la posibilidad de sincronizar los directorios, etc. La nueva versión de desarrollo incluye mejoras y la actualización de traducciones. http://freshmeat.net/projects/krusader/ Advanced Strategic Command 1.15.0 Advanced Strategic Command (ASC) es un juego que seguramente despertará recuerdos de los que hace mucho jugaron a los juegos de la serie Battle Isle. El juego es desarrollado activamente: además de leer sus propios mapas, es capaz de leer los creados para Battle Isle, lo cual hace que la cantidad de batallas a realizar sea bastante grande. Podemos descargar el conjunto de mapas de la página principal del proyecto. En la versión reciente se ha añadido el sistema de inventos. Aparte de eso, se ha actualizado la campaña y se ha perfeccionado el sistema del juego, con lo cual actualmente funciona más rápido. Se han corregido bastantes errores. http://freshmeat.net/projects/asc/
www.lpmagazine.org
31
actualidades aktualności
Noticias Hdup 1.6.32 Cada persona que alguna vez haya sufrido avería del disco duro que incluía datos importantes (por ejemplo, la tesina que actualmente estabamos escribiendo), seguramente se da cuenta de la necesidad de preparar copias de seguridad de los datos. La aplicación Hdup justamente permite la realización de la copia de seguridad del sistema de archivos. Permite no sólo comprimir el archivo sino también codificarlo y enviar al ordenador remoto. La recuperación del sistema es también posible desde el archivo localizado en el ordenador remoto. En la última versión estable se han añadido muchos conmutadores, entre otros, los que permiten ignorar los errores devueltos por Tar a la hora de recuperar el archivo, o bien ignorar los errores del archivo de configuración. Puede resultar muy útil el conmutador -d que permite ejecutar la aplicación sin tocar el sistema de archivos. http://freshmeat.net/projects/hdup/ Skype 0.90.0.6 Skype es una aplicación para conversaciones en voz alta que goza de una creciente popularidad. Sus ventajas más importantes son la buena calidad del sonido y la posibilidad de conectar sin problemas (en la mayoría de los casos) a los ordenadores que se encuentran detrás del cortafuegos o del enrutador. Hasta hace poco los usuarios de Linux no podían acceder a esta aplicación, pero últimamente la situación ha cambiado. En comparación con la versión para el sistema Windows, la versión para el sistema con un pingüino en el escudo tiene menos funciones (por ejemplo, no tiene conferencia o conexión a la red de teléfonos); sin embargo, es suficiente para mantener conversaciones entre los usuarios de esta aplicación. Ya que es versión beta, hay que tener en cuenta que la aplicación puede que no funcione correctamente con algunas configuraciones. No se ha publicado el código fuente (y no se publicará), pero los autores han preparado muchas versiones de instalación para diferentes configuraciones, también con las libererías añadidas estáticamente. En la última versión se han añadido más paquetes RPM con las dependencias mejor solucionadas. Se ha facilitado la posibilidad de configurar el puerto de entrada. Además, se han introducido bastantes mejoras de errores. http://freshmeat.net/projects/skype/
32
Linux+ 2/2004
linuxfresh
TorrentFlux 1.3
A
ctualmente uno de los protocolos más populares, empleados para descargar archivos de las redes P2P es BitTorrent. Gracias a él, podemos reducir la carga del servidor que facilita los datos. Es así porque los usuarios que descargan el archivo lo facilitan simultáneamente a los demás. TorrentFlux es una solución muy interesante, que permite administrar la descarga de los archivos por medio de BitTorrent. Permite crear a muchos usuarios, de los cuales cada uno puede marcar los archivos a descargar. La interfaz tiene un aspecto muy agradable, es cómoda en el uso y, además, está dotada de temas, gracias a lo cual todos los usuarios pueden ajustar el aspecto a su gusto. Además, presenta al corriente el uso actual de las reservas del disco duro y el progreso de la descarga de los archivos. Todo el código está escrito en PHP y es tan sólo una superposición en el cliente original de BitTorrent. TorrentFlux para funcionar necesita el cliente original de BitTorrent, por tanto, hay que descargarlo de la página http:// bitconjurer.org/BitTorrent/index.html e instalar. Es necesario también instalar y ejecutar la base de datos MySQL. Después de desempaquetar el archivo TorrentFlux, hay que crear una nueva base de datos, denominada torrentflux. Hace falta crear desde el principio al usuario que tenga acceso a esta base (las instrucciones detalladas se encuentran en la documentación de MySQL). Luego, hay que usar el archivo torrentflux.sql para crear las estructuras de las tablas y de los valores predeterminados. El contenido del subdirectorio html/, que se encuentra en el directorio donde hemos desempaquetado el archivo; hay que trasladarlo al directorio disponible para el servidor Apache (por ejemplo, /var/www/html/torrentflux/ ). Luego, modificaremos el archivo config.php, localizado en este directorio. La variable que incluye $cfg["path"] debería indicar el directorio en el cual se guardarán los archivos descargados. Hay que crearlo y fijar los permisos en 777. Las variables $cfg["db_host"], $cfg["db_name"], $cfg["db_user"] y $cfg["db_pass"] determinan la localización de la base de datos y al usuario que tenga acceso a la base con la contraseña indicada. La última variable cuyo valor tenemos que cambiar es $cfg["btphpbin"]. Como su valor fijamos el nombre del directorio en
Gracias a los temas podemos ajustar el aspecto de la interfaz a nuestro gusto
el cual se encuentran los scripts del cliente de BitTorrent. Además, trasladamos a este directorio el archivo btphpdownload.py y le damos los permisos de ejecución a todos los usuarios. La última actividad es ejecutar el navegador y abrir la dirección web, en la cual hemos puesto nuestra página (por ejemplo, http://localhost/torrentflux/). Al abrirla por primera vez se nos pedirá dos veces el nombre de usuario y la contraseña. Son datos que van a identificar al primer usuario (y a la vez al superusuario) de la aplicación TorrentFlux. Despúes de registrarnos, vemos una interfaz cómoda. A nosotros nos interesan sobre todo dos campos: Select a Torrent for upload y URL for the Torrent File. En el primero de ellos podemos localizar la ruta hacia el archivo torrent, que se encuentra en nuestro disco duro, y pulsamos el botón Upload. En el segundo localizamos la ruta hacia el archivo torrent, que se encuentra en la página remota web, y pulsamos en Get File. Cada una de estas actividades debería terminar con la aparición del archivo descargado en el listado de la parte inferior de la ventana. Para empezar a descargar, hay que pulsar el botón señalado con la flechita verde. En la nueva versión se han introducido unos cambios muy importantes. Cuando se detenga la descarga de los archivos sin haber empleado TorrentFlux, este archivo se señalará como incompleto. Los archivos de los usuarios se guardarán en los subdirectorios con el nombre igual al del usuario. Los archivos descargados se ordenan según la fecha. En caso de aparecer problemas con el tracker, se muestra la respectiva información. Para soportar la descarga de archivos ya no se emplea Screen. En la página principal se ha añadido el campo de búsqueda del servicio Suprnova.org. Además, se han introducido unos cambios del soporte de RSS. http://freshmeat.net/projects/torrentflux/
fresh@lpmagazine.org
Noticias
PHPlist 2.8.8
E
l correo electrónico suele estar lleno de spam, sin embargo, sigue siendo una de las formas más populares de comunicarse en Internet. Por medio del correo podemos no sólo comunicarnos con un conocido de la otra parte del mundo (¡e incluso de la habitación al lado! ;P), sino también recibir la información que nos interese, por ejemplo, sobre la nueva versión de una aplicación, sobre un nuevo juego o reunión de ciclistas que tendrá lugar en nuestra ciudad. El sistema cuyo objetivo es facilitar el envío de tales correos es PHPlist. Según dice el mismo nombre, el sistema de soporte de listados de información fue escrito en PHP. Permite enviar correos directamente desde la página web. Los usuarios pueden registrarse en muchos de los listados ofrecidos, sin embargo, el sistema se ocupará de que no reciban copias del mismo correo enviado a ciertos listados. El sistema maneja perfectamente la correspondencia en serie, permitiendo introducir en los correos campos especiales que luego serán sustituídos por valores adecuados (por ejemplo, por el nombre y apellidos del destinatario). Después de desempaquetar el archivo, nosotros mismos tenemos que realizar una serie de actividades. Vamos a empezar por trasladar el subdirectorio public_html/lists/ del directorio de archivos al directorio disponible en nuestro servidor web (por ejemplo, con el comando cp -R lists/ /var/www/html/, dado en el subdirectorio phplist-2.8.8/public_html/ ). Luego, tenemos que corregir el contenido del archivo de configuración (en nuestro ejemplo será el archivo /var/www/html/lists/config/ config.php). En él debemos fijar las variables $database_host, $database_name, $database_ user y $database_password como valores que facilitan la conexión con la base de datos MySQL. Además, si instalamos archivos en un directorio diferente que el subdirectorio lists/, que se encuentra en el directorio principal del servidor web, deberíamos corregir el valor de la variable $pageroot. Tenemos que recordar que ésta incluye la ruta relacional, contada del directorio principal del servidor web (por ejemplo, /var/www/ html/ ). Nos queda crear la base de datos en la cual se guardarán todos los valores. Lo hacemos con el comando mysqladmin create phplistdb (si en el archivo config.php no hemos indicado un nombre diferente de la base de datos). Debemos encargarnos
sección llevada por Piotr Machej
Hemos configurado ya la mitad
de que el usuario indicado en el archivo de configuración tenga acceso a esta base. Ahora ya podemos registrarnos en el panel administrativo, abriendo en el navegador la página http://localhost/lists/admin/ (la dirección puede ser diferente, en caso de que hayamos instalado la página en el servidor remoto o en un directorio diferente). Con la primera ejecución vamos a recibir un mensaje de error que dice que la base no ha sido iniciada. Al pulsar el enlace indicado, en la base de datos se introducirá la información adecuada. Si seleccionamos el enlace phplist setup nos trasladamos a la página principal del panel administrativo. Al introducir el nombre predeterminado del usuario (admin) y la contraseña (phplist), nos encontraremos por fin en el panel administrativo. En este lugar vemos un listado de acciones que deberíamos realizar antes de empezar el verdadero trabajo. Lo más importante es cambiar la contraseña del administrador. Luego, fijamos la configuración general, el listado de atributos exigidos a los usuarios al registrarse en el grupo, el listado de grupos de noticias y, por fin, la creación de páginas para registrarse en estos grupos. En esta etapa la interfaz es ya bastante intuitiva y está bien descrita, por tanto, los usuarios no deberían tener problemas. Dependiendo de la configuración de PHP, a la hora de instalar la página, puede que exista la posibilidad de introducir algunos cambios pequeños en el código o en la configuración. Por ejemplo, en mi caso, parte de los archivos no fue convertida por PHP, sino que quedó pegada a la página como texto. La solución es o convertir más de diez archivos y sustituir en ellos el marcador de apertura <? por el completo <?php o fijar en el archivo /etc/php.ini la opción short_open_tag = On. Esta versión lleva sólo unas pequeñas mejoras, que tienen como objetivo aumentar la estabilidad del código. http://freshmeat.net/projects/phplist/
Namexif 1.0 Namexif es una pequeña aplicación, útil para los usuarios de cámaras digitales. Permite cambiar automáticamente los nombres de archivos de tal manera que reflejen la fecha de sacar la foto (hasta en segundos). Para ello emplea los datos EXIF incluidos en los archivos con fotos. Si unas fotos se han sacado a la misma hora, cambiará tan sólo el nombre de la primera de ellas. http://freshmeat.net/projects/namexif/ Anti_offline_browser.php 0.2 A pesar de las peticiones de los creadores de las páginas web, algunos usuarios no saben abstenerse de emplear todo tipo de descargadores (ing. downloaders) y de descargar varios archivos a la vez. En este caso muy útil para reducir la carga de la conexión puede ser el script Anti_offline_browser escrito en PHP. Trata de reconocer al navegador y analiza la cantidad de peticiones en un segundo. La versión más reciente incluye mejoras del soporte de sesiones y elimina algunos errores. Además, se ha introducido la comparación del nombre del navegador que intenta conectarse con la lista negra. http://freshmeat.net/projects/ antiofflinebrowser/ For each File 1.6.9 For each File es un script de shell muy interesante y para muchos usuarios muy útil. Permite ejecutar un determinado conjunto de comandos para los archivos indicados por el usuario. Gracias a él se pueden cambiar, por ejemplo, los nombres de muchos archivos según un esquema fijado o ejecutar en ellos cualquier otra operación. Los usuarios que conocen mejor las aplicaciones de shell seguramente preferirán sus propias soluciones, sin embargo, para la mayoría de los usuarios esta herramienta puede resultar muy útil. En el paquete tenemos unos scripts preparados, los que, entre otras cosas, permiten crear directorios de archivos MP3 a base de los valores de los campos ID3 o cambiar los nombres de los archivos en minúsculas. En la nueva versión se ha añadido la opción (--mask), la cual permite filtrar los nombres de los archivos de modo recursivo. Además, la documentación de la aplicación ha sido convertida en el formato HTML para integrar el formateo en las traducciones de diferentes idiomas. http://freshmeat.net/projects/ff/
www.lpmagazine.org
33
actualidades aktualności
Noticias Wormux 0.4 Si alguna vez jugaste a Worms, seguramente sabrás que es un juego muy cautivador. Cuando los “gusanos” conquistaban el mundo, nosotros, los usuarios de Linux, mirábamos este fenómeno con cierta envidia. Así que a muchos de vosotros os alegrará el hecho de que salieran una tras otra dos nuevas versiones (0.3 y 0.4) del juego Wormux, el clon fiel (y lo que es más importante, libre) de Worms, basado en la librería ClanLib. El proyecto avanza, por lo visto, con mucha dinámica, y en la versión 0.4 el juego dispone ya de 11 mapas, 10 pieles y 10 tipos de armas con los que destruir a los enemigos. ¡Nada más que jugar! http://www.haypocalc.com/wormux/en/ index.php Nuevos controladores ATI... Acaba de salir la versión de los controladores ATI fglrx 3.9.0 con el soporte de aceleración 3D para las tarjetas de la serie Radeon. Entre las modificaciones podemos destacar el mejor soporte de las nuevas versiones del núcleo en las distribuciones Red Hat, Fedora y SuSE, así como la detección correcta de las tarjetas matrices basadas en el chipset VIA KT400. Los paquetes RPM (respectivamente en las versiones para XFree86 4.1.0, XFree86 4.2.0, XFree86 4.3.0) pueden ser descargadas desde la página web de la empresa. http://www.ati.com/support/driver.html ... y nVidia también Recientemente la empresa nVidia publicó también nuevas versiones de los controladores Linux para sus tarjetas gráficas. Tienen el número 1.0-6106 y son disponibles tanto para la plataforma de 32 bits como para los procesadores de 64 bits AMD (AMD64). Las modificaciones más importantes son: el soporte de las tarjetas basadas en el chipset GeForce 6800, el servicio ACPI y la adición de la herramienta de configuración llamada nvidia-settings. http://www.nvidia.com/object/linux_ display_ia32_1.0-6106.html http://www.nvidia.com/object/linux_ display_amd64_1.0-6106.html
juegos
TuxKart
T
uxKart es un juego de carreras de karts en el que compite el pingüino Tux y sus adversarios, entre otros, el camaleón SUSE. El juego es muy parecido a Mario Kart o Crash Team Racing. Hace poco apareció su nueva versión con el número 0.4 y, aunque está lejos de la perfección, se nota un gran potencial del desarrollo. La instalación de TuxKart no ocasiona problemas: si instalamos el juego desde las fuentes, basta con ejecutar la tríada de comandos: ./configure, make, make install. Sin embargo, hay que tener en cuenta las interacciones: TuxKart utiliza OpenGL (o alternativamente Mesa 3D) y la librería PLib. La mayoría de los problemas que surgen durante la compilación de este juego tienen que ver con OpenGL/Mesa 3D, si, entonces, tenemos instaladas adecuadamente estas librerías, no corremos ningún riesgo. Si, en cambio, no nos gusta compilar, podemos utilizar los paquetes listos para nuestra distribución. El juego nos da la bienvenida con un menú de configuración bastante modesto; podemos elegir una de las seis pistas accesibles y la cantidad de vueltas. Empezamos el juego. El objetivo de la carrera es, por supuesto, alcanzar la meta más rápido que los demás competidores, pero en TuxKart hay muchas maneras más de conseguirlo. Podemos aprovechar varios tipos de “ayuda”, como, por ejemplo, el imán (para engancharse al coche del otro jugador) o el cohete (para disparar contra
Tyrant 0.11 Tyrant es un juego escrito en Java cuya instalación no es necesaria: basta un navegador de Internet con el plug-in de Java y conexión a Internet. Se puede también bajar y jugar offline. Es un juego RPG al estilo Rogue, en el que encarnamos a un héroe solitario que atraviesa un mundo de magia y aventuras. Su ventaja adicional es la licencia: GNU GPL. http://www.mikera.net/tyrant/ TuxKart
34
Linux+ 2/2004
los adversarios). Debemos también agarrar o esquivar (en función del color) los peces y tener cuidado con los obstáculos puestos en el camino. El mayor defecto de TuxKart es el número limitado de pistas, por lo que el juego puede aburrir rápido. Tampoco podemos cambiar el nivel de dificultad del juego, aunque los adversarios presentan un nivel bastante alto y no es tan fácil vencerlos. El juego no ofrece un editor de las pistas, pero sus autores en la página del proyecto describen de qué manera, con un poquito de esfuerzo, crear las pistas. Seguramente deben pensar en el futuro sobre algún editor sencillo con lo que TuxKart podría captar a los aficionados y ganar en atractividad. Además, falta la posibilidad de jugar en la red y es la característica que puede decidir sobre el éxito del proyecto. La parte gráfica y sonora no impresionan pero están bien, y el cuidado de los autores por algunos detalles hace pensar que en el futuro será mejor. La nota general de TuxKart, teniendo en cuenta el estado de su desarrollo, es indudablemente positiva y el juego mismo digno de recomendación. Esperamos solamente que los autores no pierdan su entusiasmo y que el proyecto avance, sobre todo, dado el hecho de que no sobran los juegos de código abierto y TuxKart fue publicado bajo licencia GPL. http://tuxkart.sourceforge.net/
games@lpmagazine.org
Hyperspace Delivery Boy Demo
L
a empresa LinuxGamePublishing publicó recientemente un nuevo juego Linux. Esta vez es un juego de destreza y lógica llamado Hyperspace Delivery Boy. Hemos estudiado su versión demo. En el juego encarnamos el personaje de Guy Carrington, nuevo mensajero espacial de la empresa Hyperspace Delivery Service. Nuestra misión consiste en la entrega de los envíos a los destinatarios como y donde sea. Este trabajo no es nada fácil porque en el camino debemos pasar mil obstáculos: robots enloquecidos o un entorno peligroso. A diferencia de otros juegos modernos, los requerimientos de hardware y de sistema para el juego no son muy grandes (basta un Pentium común con una tarjeta gráfica estándar). Esto resulta del hecho de que estamos en un mundo bidimensional (visto desde arriba). La instalación de la versión demo del juego no es complicada. Descargamos el fichero hdb_demo-1.0.run de la página http://demos.linuxgamepubli shing.com/, le atribuimos los derechos de ejecución chmod a +x hdb_demo-1.0. run y ejecutamos (./hdb_demo-1.0.run). Si no disponemos aún en el sistema de las herramientas LGP Update (para cargar las correcciones y extensiones para los juegos) y LGP Uninstall (para eliminar los juegos, correcciones y extensiones instaladas), tendremos que instalarlos: los instaladores sencillos automatizarán enteramente esta acción. Una vez aceptada la licencia del juego, su instalador arrancará automáticamente. Toda la
Guy Carrington en acción
instalación se completa muy rápida y hábilmente. Una vez ejecutado el juego, podemos empezar un nuevo juego, cargar uno guardado antes (durante el juego entramos en el llamado vortexian) o modificar los parámetros del juego (opciones bastante reducidas: volumen de los efectos sonoros y de la música y la asignación de las teclas de acción). Podemos también definir el tipo de juego: exclusivamente lógico o lógico con elementos destreza. Al principio debemos recoger todas las cartas esparcidas por el mensajero distraído Manny y meterlos en el clasificador del correo. Para alcanzar algunos sobres, habrá que mover los paquetes o cajas que bloquean el paso. En la siguiente parte del juego tendremos que cumplir tareas parecidas y acertar varias adivinanzas. Manejamos el repartidor de correspondencia con el ratón o teclado. Además, la combinación de las teclas [Alt]+[Enter] sirve para cambiar entre el modo de pantalla completa y ventanas. El juego no nos entusiasmará ni con su parte gráfica ni sonora, no obstante, es muy cautivador; podemos ver que nuestra propia imaginación es más importante que diferentes tipos de efectos especiales cada vez más perfectos. El juego es recomendado para todos los que quieren divertirse con un juego de ordenador sencillo. http://www.linuxgamepublishing.com/ info.php?id=17
sección llevada por Witold Kieraś
Noticias Un bug irreal En todas las partes del popular juego FPS Unreal y en los juegos basados en su motor (Postal 2, Deus Ex y Rune) se ha detectado un error muy grave que permite la toma de control sobre el ordenador del jugador. El problema aparece en el modo del juego en red: el ordenador está expuesto al error de la saturación del búfer iniciado por el agresor. El hacker tiene entonces acceso a la máquina y puede arrancar sobre ella varias aplicaciones. El problema se elimina con el parche 3236 para UT2004, para descargar de la página del proyecto. http://www.unrealtournament.com/ ut2004/downloads.php Cedega en vez de WineX La empresa TransGaming, conocida por la creación de WineX, la herramienta que facilita la descarga de los juegos Windows para Linux, publicó una nueva versión de este programa bajo el nuevo nombre Cedega. La característica más importante de la edición 4.0 es el soporte para DirectX 9.0, que permite la ejecución bajo Linux de los siguientes juegos: Battlefield Vietnam, Hitman: Contracts y Star Wars Galaxies. Lo que es interesante es que será posible también ejecutar el juego todavía no disponible Blizzard - Worlds of WarCraft. http://www.transgaming.com/ Linux Live Game Project Fue iniciado un nuevo proyecto Linux Live Game. que es una variación de Knoppix para los jugadores. En el disco hay también los mayores éxitos de Linux como TuxRacer, Cube, Egoboo, FreeCiv, Pingus, Chromium, Foobillard, Frozen Bubble, Power Manga. La distribución por el momento está preparada independientemente por Fabio Fabbri que espera ser reforzado por la comunidad de los jugadores Linux. http://tuxgamers.altervista.org/ llgp.php?tg_lang=en ¡Doom 3 ya en agosto! El juego más ansiado, Doom 3, según las informaciones oficiales, se estrenó el día 3 de agosto de este año. Según nuestras informaciones, la versión para Linux tendrá retraso en comparación con la versión para Windows, pero el fabricante no confirma esos rumores. Hasta el 3 de agosto tenemos que arreglárnoslas con las capturas de pantalla y el anuncio disponibles en la página oficial del juego. http://www.doom3.com/
Pantalla de título del juego
www.lpmagazine.org
35
actualidades aktualności
trucos y truquillos
Imprimimos con PostScript ALSA: parece que hay música pero no se oye el sonido La salida del sonido puede estar desactivada (ing. Mute) y es algo diferente que modificar el volumen a cero. Ejecutamos alsamixer (del paquete alsa-utils) y lo activamos (con la tecla [m]) para cada uno de los canales desactivados. ALSA controla las tarjetas de forma predeterminada con los canales desactivados para evitar crujidos procedentes de los altavoces a la hora de cargar módulos. ALSA: la configuración de volumen desaparece después de reiniciar el ordenador Tenemos que añadir alsactl restore a los scripts de inicio y a los de cierre del sistema alsactl store. Gracias a esto, todas las configuraciones de las tarjetas se guardarán en el archivo /etc/asound.state al cerrar el sistema y se volverán a establecer según quedaron guardadas a la hora de iniciar el sistema. El comando alsactl es parte del paquete alsa-utils. OpenOffice.org destruye fuentes en las impresiones (por ejemplo, pone en negrita) Este es un error muy antiguo y muy conocido. Ocurre cuando OpenOffice.org crea un archivo cache que incluye información general sobre las fuentes disponibles. Desgraciadamente, OpenOffice.org a veces lo hace de forma errónea. Tenemos que abrir el subdirectorio user/psprint/ de nuestro directorio principal que contiene la configuración de OOo. Tenemos que eliminar el archivo pspcache y ejecutar chmod a-w $PWD, para que no vuelva a crearse. Comprobamos la memoria R AM Vamos a emplear memtest86 (http://www.memtest86.com/ ). Lo mejor es integrarlo con el bootloader como un núcleo normal e iniciar el sistema. También podemos grabarlo en un disquete con el comando cat memtest86 >/dev/fd0 y, luego, iniciar el ordenador a partir de este disquete. Memtest86 detecta de forma muy eficaz los deterioros de la memoria, así como todo tipo de anomalías causadas por overclocking o por el recalentamiento.
36
Linux+ 2/2004
C
asi todos los usuarios de ordenadores tienen que imprimir algo, al menos de vez en cuando. Y mientras que normalmente es suficiente con pulsar en el icono Imprimir..., a veces hay que hacer algo más con la impresión. Por ejemplo, hay que cambiar las relaciones entre la página teórica para imprimir, propuesta por una aplicación en concreto, y la hoja física de papel. En tal caso el paquete PSutils es muy útil (actualmente en la versión p17). Opera con datos en formato PostScript (*.ps), con lo cual se puede emplear prácticamente con cualquier aplicación de Linux. Es capaz de imprimir a la vez que convierte el documento de postcript, esto tiene lugar en el comando de impresión (por ejemplo, en OpenOffice.org) o en imprimir al archivo convirtiendo en un fichero el resultado de lo que sería la hoja imprimida.
Empaquetamos páginas de impresión en una página física
A la hora de imprimir documentos de prueba, destinados para corregir o simplemente muy extendidos, muchas veces empleamos impresión reducida, poniendo en una página de la hoja dos páginas de documento, reducidas dos veces. Esto significa que gastamos dos veces menos tiempo en imprimir, dos veces menos papel y tinta... y, bueno, las letras también son dos veces más pequeñas en la impresión. Para convertir un documento de ejemplo orig.ps en impresión empaquetada, es suficiente dar sólo un comando: psnup -2 orig.ps > 2en1.ps
Vemos que la reducción se da con una solo opción. Aquí yo he usado -2, pero podía haber dado -4, o incluso -8. Podemos dar hasta valores asimétricos, la aplicación psnup va a aceptarlos: por ejemplo, la opción-3, pero lo mejor será imprimir escalando por potencias de dos, es decir, 2, 4, 8, 16... Merece la pena conocer el manual psnup, ya que este simple comando tiene muchas opciones que permiten ajustarlo a nuestras exigencias, por ejemplo, podemos activar la impresión de las líneas que separan las respectivas minipáginas mediante la opción -d, así como fijar un adecuado margen de la página física si la impresora corta un fragmento de la impresión en todas las páginas. PSnup permite dar el tamaño de papel en el cual queremos imprimir. Esto puede ser útil cuando, después de la siguiente confe-
Script de la shell después de ser transformado por a2ps
rencia, obtengas un conjunto de diapositivas de tamaño Letter y quieras imprimirlas en A4.
Componemos libros
Cuando imprimimos "2 en 1", podemos tratar de componer las páginas en forma de un libro (ing. Booklet). Esto consiste, en pocas palabras, en cambiar el orden de la aparición de las páginas del documento en hojas de tal forma que, después de componer todas las hojas juntas y después de doblarlas en dos, se pueda leer este pliegue de papel como un libro, dando la vuelta a la hoja. Esto es muy fácil de hacer mediante el comando psbook. El mismo psbook sólo va a mezclar el orden de las páginas, por lo tanto, para conseguir un libro luego hay que convertir este documento a través de psnup: psbook orig.ps | psnup -2 -d > booklet.ps
Seleccionamos páginas pares/impares
El libro imprimido por el duo psbook/psnup está destinado a imprimir en modo duplex (es decir, las dos caras). Esto significa que si lo voy a enviar a la impresora, debería volver a meter todas las páginas en la impresora. Ya que no todas impresoras son capaces de hacerlo de forma mecánica, sería muy difícil para el usuario si tuviera que hacerlo manualmente. Sin embargo, podemos dividir el documento en dos: uno que contenga sólo las páginas impares y el otro que contenga tan sólo las pares. Simplemente, primero se imprimirían las caras izquierdas de las hojas y, luego las mismas hojas, metidas otra vez en la impresora, se imprimirían por las caras derechas. Podemos hacerlo con el comando psselect: psselect -o booklet.ps > impares.ps psselect -e booklet.ps > pares.ps
tips@lpmagazine.org
La opción -o selecciona las paginas impares (ing. odd), y la opción -e las páginas pares (ing. even).
Invertimos el orden de las páginas
Después de dividir el texto en páginas impares/pares, no coincide el orden de las páginas, ya que la impresora, a la hora de sortear el papel imprimido, no pone las nuevas páginas en la parte superior de las hojas ya imprimidas, puesto que las empuja por debajo de esta parte (así funciona mi impresora). Normalmente esto es una ventaja, ya que no hay que sortear las hojas después de imprimirlas para conseguir el orden correcto. Sin embargo, en este caso concreto esto ha resultado un defecto: ahora el orden de las hojas después de haberlas imprimido en dos caras separadas, es totalmente opuesto a lo que debería ser. Lo más fácil sería coger este pliegue de hojas y barajar su orden, pero si se trata de unas docenas de hojas es un trabajo bastante largo y podemos confundirnos muy fácilmente (es suficiente que dos hojas se peguen para que el libro no quede perfectamente ordenado). Una solución mejor sería invertir el orden de páginas en el archivo pares.ps. Aquí, otra vez nos ayuda psselect: psselect -r pares.ps >pares invertidas.ps
Está claro que ahora sabemos ya mucho más y la próxima vez vamos a invertir el orden ya en el momento de generar el archivo pares.ps: psselect -e -r booklet.ps > pares.ps
Ahora ya podemos terminar correctamente la impresión de este libro.
Extraemos páginas concretas del documento
A veces tenemos la posibilidad de imprimir, por ejemplo, solamente unas páginas del contenido. A veces tienen lugar situaciones contrarias: hay que imprimir todo, evitando tan sólo un prefacio poco importante, agradecimientos u otras cosas que son normalmente ignoradas por los lectores. Podemos volver a emplear psselect: •
•
para sacar de todo el documento solamente la página número 5: psselect -p5 orig.ps > página5.ps
para sacar las diez primeras páginas y la página 18: psselect 10,18.ps
-p-10,18
>
páginas1-
Incluimos PSUtils en la configuración de la impresora OpenOffice.org
Si en vez del número de la página damos tan sólo el carácter '_', en su lugar psselect introducirá una página vacía. Y si cualquier número de la página va precedido por este carácter '_', entonces psselect sustituirá este número por el número contado a partir del final del documento: •
•
sacar las cinco primeras y las últimas diez páginas: psselect -p1-5, _ 10-
lo mismo que antes, pero separa los marcos con una página vacía: psselect -p1-5, _ , _ 10-
Extendemos estas grandes aplicaciones
Como ejemplo general nos va a servir OpenOffice.org. Para añadir la posibilidad de imprimir en modo económico "2 en 1", es suficiente ejecutar la aplicación spadmin, definir la nueva impresora y, como comando de impresión, utilizar: psnup -2 | lpr. Ponemos a esta impresora un nombre fácil de recordar y a partir de este momento ya podemos imprimir documentos reducidos, simplemente usando la impresora virtual. De forma parecida podemos integrar herramientas PSutils con la mayoría de las aplicaciones.
¿Qué vamos a hacer con el archivo *.ps después de convertirlo?
Podemos imprimir el archivo *.ps con el comando lpr, podemos también emplear una superposición ofrecida por tu sistema favorito de administración de impresoras o emplear GhostScript que convertirá un archivo postscript en código binario interpretado por un modelo de impresora concreto. Si eres propietario de una cara y exclusiva impresora de postscript, puedes simplemente dar el comando cat plik.ps >/dev/lp0.
sección llevada por Grzegorz Niewęgłowski
¿Cómo desfragmentar el disco duro? No es necesario. Los sistemas de archivos de la familia de Linux fueron proyectados para mantener una fragmentación muy baja (normalmente de unos por ciento), incluso después de un par de años de uso continuo. De manera que Linux no tiene ninguna extendida aplicación para desfragmentar. Linux inmediatamente ocupa 90% de la memora R AM Es normal. Linux tiene búfers muy ávidos del sistema, sin embargo, no tenemos por qué preocuparnos, ya que los reduce cuando una aplicación necesite más memoria. La memoria libre es memoria inútil, por lo tanto, si no hay aplicación que la nesesite, se puede emplear esta memoria para mantener en búfer (para acelerar) las operaciones de disco duro. Gracias a esto la memoria RAM está en uso y el sistema funciona más eficazmente. Iconos en escritorios que no sean KDE/GNOME La mayoría de los autónomos administradores de ventanas, tales como IceWM o WindowMaker, no ofrecen escritorios con iconos. Tenemos que emplear una aplicación aparte para recibirlos, p.ej. ROXFiler (http://rox.sourceforge.net/ ). Lo ejecutamos, por ejemplo, de la siguiente forma: rox -p MiEscritorio. Comprobamos la velocidad del disco Vamos a usar /sbin/hdparm -tT /dev/hda para reducir el rendimiento del disco. El resultado descrito como "buffer-cache reads" es la velocidad de transferencia de los datos entre la memoria y los búfers del disco y depende, sobre todo, del rendimiento general del sistema (de la memoria operativa, ante todo). Gracias a hdparm podemos activar el DMA y las transferencias de 32 bits, si aún no están activadas: /sbin/ hdparm -d1c1 /dev/hda. La hora del sistema se retrasa una/dos horas por sí misma Seguramente en la BIOS hemos configurado la hora local, mientras que Linux espera allí la hora universal UTC (o sea, sin tener en cuenta el huso horario). Tenemos que abrir /etc/sysconfig/clock y sustituir el valor de la línea "UTC=" ("true" por "false" o al revés). La solución alternativa puede ser la configuración de la BIOS con el tiempo UTC.
www.lpmagazine.org
37
entrevista
Entrevista con Eric S. Raymond, presidente de Open Source Initiative
Eric S. Raymond
Eric Steven Raymond, conocido también como ESR, junto con Richard Stallman y Linus Torvalds, es uno de los participantes con más renombre del movimiento Open Source en el mundo. Es coautor de proyectos de programación, entre otros de Fetchmail o Sed, y autor de libros tan conocidos como: The Cathedral and the Bazaar o The Art of Unix Programming. Eric investiga también historia y cultura de hackering (The Jargon File, A Brief History of Hackerdom). Actualmente desempeña la función del director de Open Source Initiative y hasta cierto punto, a causa de su profesión, se ha ocupado de SCO. Además, Eric es anarquista, aficionado a la literatura de ciencia ficción y propietario de un perro negro Tae Kwon Do.
38
Linux+ 2/2004
Witold Kieraś (Linux+): Últimamente has publicado un artículo sobre los problemas que pueden sufrir los usuarios al instalar Linux en sus PC de casa. Has indicado un ejemplo de CUPS, pero esto tiene que ver también con otras aplicaciones. En relación con eso, ¿sigues creyendo en Linux como un sistema de escritorio? Eric S. Raymond: Sí, pero creo que para que Linux tenga éxito en los escritorios, hay que trabajar mucho y cambiar la actitud de los developers, más de lo que esperábamos. No es muy difícil diseñar una buena interfaz del usuario con ayuda de herramientas modernas; en cambio, es difícil formar una actitud psíquica adecuada para tratar el diseño destinado para los usuarios corrientes. WK: ¿Crees que algún día Sun Microsystems liberará Java, es decir, lo facilitará con licencia GPL? ESR: En mi opinión, esto sigue siendo posible, y sobre todo es aún más probable en relación con el desarrollo de los últimos acontecimientos. WK: Si no pasara así, ¿crees que Java será capaz de competir con las plataformas abiertas y con lenguajes de programación como C# (Mono) o Python? ESR: Creo que en este caso los usuarios perderán su interés en Java y empezarán a utilizar las soluciones tipo Open Source. WK: Últimamente se ha dicho que Sun puede liberar Solaris. ¿Crees que es posible? En general, ¿necesitamos otro sistema abierto más que Unix? ¿Queda sitio libre en la sociedad para un Solaris libre?
Eric S. Raymond
ESR: Bueno, desde luego, es posible. De todas formas, no creo que necesitemos otro Unix tipo Open Source, aunque probablemente podamos aprender algo de él: ante todo, del escalamiento de más de 32 procesadores. WK: Richard Stallman opina que todos los tipos de software deberían estar libres (con código abierto). En cambio, Linus Torvalds cree que ni es necesario, ni posible. ¿Cuál es tu opinión respecto a este tema? ¿Deben estar libres todas las clases de informaciones (inclusive libros y música)? ESR: No creo que todo tipo de información deba estar "libre", si esto significa que el autor no tiene derecho a controlar el modo de reproducción y de distribucción de su obra. Normalmente, comparto gratis lo que yo
entrevista con Eric S. Raymond
Me llamo Raymond, Eric Raymond
mismo he creado, pero no creo que toda persona deba hacerlo. En mi opinión, el software supone un tipo especial de información. Requiere reparaciones frecuentes, traslados a otras plataformas y agregar componentes después de la venta. Asimismo, está estrechamente relacionado con otros dispositivos o servicios y, por eso, es posible controlar la cantidad de sus copias. De ahí que haya modelos efectivos para el negocio de software libre, que se basan en la venta de servicios, lo que, por su parte, significa que no necesitamos el sistema de propiedad. Los libros, la música o las películas no tienen los rasgos característicos que permitan ganar dinero después de su venta propios de software. Por eso, sería difícil preservar una situación denominada por RMS libertad. WK: Sueles decir sobre ti mismo que eres anarquista. ¿Estás en contra de todo tipo de patentes y de derechos de autor? ESR: Sí, soy anarquista. Es decir, creo, que podríamos vivir mejor en una sociedad que respetara el derecho y el orden, pero sin gobierno. Creo que está bien que existan tribunales, policía, e inclusive el derecho de propiedad intelectual,
si estas instituciones no se monopolizaran. Puedo imaginarme un sistema de patentes y de derechos del autor que sea a la vez justo y ejecutable, sin participación del gobierno, y que de ningún modo se parezca a lo que tenemos hoy. WK: ¿Crees que el mundo Open Source forma parte de un movimiento de liberación? ESR: No diría que nuestra sociedad sea una parte del movimiento de liberación y que seamos unos aliados naturales de los libertadores. Además, en mi opinión, lo que hacemos es expresamente pro libertad y pro mercado libre. WK: ¿Eres un partidiario conocido del derecho de llevar armas. ¿Cómo pasa su tiempo libre un hacker armado? ESR: En gran parte, del mismo modo que otros hackers, sólo que a veces voy al campo de tiro a entrenar. Ya he mencionado antes que el software abierto existe para que seamos libres. Las armas de fuego sirven para guardar esta libertad. WK: Parece que la libertad es tu objetivo más importante. Pero hay mucha gente que no comparte tus opiniones respecto a las armas. Dicen que las armas en las manos de propietarios privados ocasiona un aumento de la criminalidad o las matanzas en las escuelas, como se comentaba hace tiempo. ¿Crees que a esta gente no les interesa la libertad de la persona? ESR: No, ellos simplemente están totalmente equivocados respecto a los efectos de disponer de armas. Por ejemplo, en Noruega hay cuatro veces más armas en manos privadas por habitante que en los Estados Unidos. Si el hecho de poseer un arma ocasionara las masacres, las calles de Oslo deberían estar bañadas en sangre. En realidad, los acontecimientos en los Estados Unidos y en otros países muestran que el derecho de llevar armas provoca la caída de la criminalidad. La situación que ocasiona las matanzas es una situación en que los criminales y los locos tienen armas y los ciudadanos honrados no. Y eso es lo peor que puede suceder, si nos prohiben llevar armas. Es un mito que las armas provoquen un aumento de la criminalidad y es una propaganda difundida por las personas que quieren que estemos indefensos y dependamos del gobierno, incapaces de resistir contra los abusos del poder. Toda persona que te quiera desarmar, no es tu amigo.
entrevista
WK: Se te conoce también como un aficionado a la literatura de ciencia ficción. ¿Qué tipo de libros lees exactamente? ¿Cuál es tu autor preferido? Advino que entre ellos se encontrarán escritores como Robert Heinlein, Paul Anderson o Neil Stephenson. ESR: Has mencionado justamente a tres de mis autores preferidos: no obstante, mi favorito es Heinlein, que en realidad creó la literatura fantástica moderna y, en mi opinión, sigue siendo el escritor más admirable de este género. En general, tengo inclinación por la literatura fantástica fuerte y por lo que actualmente se denomina space opera (ópera cósmica). Quiero subrayar la palabra actualmente, porque cuando empecé a leer SF, con este nombre se denominaba a otra cosa mucho más primitiva. WK: Todos esperamos que se pruebe el robo del código de Unix, que ya hace tiempo prometió presentar la empresa SCO. ¿Crees que un día lo harán? ESR: No presentarán nada, porque no tienen nada. Tengo el código fuente de Sistema V; lo he comparado con el código de Linux con ayuda de herramientas que he escrito especialmente con este fin, y sé exactamente donde convergen estos códigos. WK: ¿Crees que Microsoft está implicado en este asunto? ESR: No hay ninguna duda de que Microsoft patrocinó este ataque. Acuérdate del documento Halloween X. WK: Pero, ¿por qué SCO ha desencadenado esta “guerra contra Linux”, si no tiene ninguna prueba? Es casi como un suicidio. ESR: No han tenido otra alternativa. Han perdido las esperanzas y las disputas en el tribunal es todo lo que les queda. WK: Para terminar, una pregunta: ¿por qué exactamente has llegado a ser un hacker? En aquellos tiempos no había “Hacker HOWTO”... ESR: En los años 70 andaba vagando por lugares donde había hackers y simplemente así pasó. WK: Gracias por la entrevista.
En Internet: • •
Sitio web de Eric S. Raymond: http://www.catb.org/~esr/ Open Source Initiative: http://www.opensource.org/
www.lpmagazine.org
39
entrevista
Entrevista con Ton Roosendaal, fundador de Blender Foundation
DVD
Después de arrancar la distribución Linux+ Live DVD podemos usar Blender.
En el DVD
En el DVD están los paquetes fuente y binarios de Blender.
40
Linux+ 2/2004
Witold Kieraś: ¿A qué te dedicas principalmente como developer y como presidente de la Fundación? Ton Roosendaal: Si tengo un poco de tiempo libre, lo dedico a programar, pero por desgracia me ocupo ante todo de la organización, soporte, correo, administración, RR.PP., la tienda virtual y ¡doy entrevistas! :) Me encanta el reto que supone la organización de un proyecto Open Source, pero es un empleo a jornada completa. Como desarrollador, normalmente examino los fragmentos de Blender que considero antiguos, mal soportados, y que requieran actualización. Asimismo, cuido que haya mejor acceso a estos fragmentos para los desarrolladores del proyecto blender.org. WK: ¿Cuántos autores y personas hay involucradas en el desarrollo de Blender? ¿Conoces a la mayoría de ellos? ¿Os encontráis a menudo? TR: Actualmente, hay 40 personas que tienen acceso a CVS con derechos de realizar inscripciones, es decir, son mucha gente. Desde luego, conozco a todas estas personas, pero más bien virtualmente: por correo electrónico, páginas web e IRC. La gran parte de nuestras actividades se desarrolla en las listas de discusión de developers y en encuentros semanales de IRC, a los que asiste mucha gente. WK: ¿Qué te inspira en el trabajo sobre Blender? TR: ¡Casi no tengo tiempo para pensar sobre esto! En la mayoría de los
Ton Roosendaal
casos es puro placer y algo muy constructivo a la vez, ante todo cuando ves que una sociedad tan grande empieza a colaborar en un trabajo que tú iniciaste. Me motiva también la posibilidad de realizar y de aprender cosas nuevas. El reto más grande y lo que más motiva son principalmente las actividades relacionadas con Open Source. WK: ¿Crees que Blender ya puede competir con 3ds max o con otros programas de gráficos 3D con un código cerrado? TR: Es una pregunta muy difícil... Blender, en muchos aspectos, es un programa excepcional que emplea unas soluciones originales que les gustan mucho a algunos usuarios, pero pueden desanimar a otra gente. Si Blender fuera un producto comercial, a lo mejor sería más fácil hacer prominente su carácter
entrevista con Ton Roosendaal
Feliz término de la historia En 1988 Ton Roosendaal creó en Holanda el estudio de animación NeoGeo, que prontó llegó a ser el centro más grande especializado en gráficos 3D de este país, al que se otorgaron varios premios. En la empresa, Ton fue encargado de la creación de gráficos y del desarrollo de software destinado a su creación. En 1995 se tomó la decisión de reescribir el software empleado hasta ahora en el estudio, construido para el uso interior de la empresa. El resultado de los trabajos iniciados entonces por NeoGeo es lo que conocemos hoy bajo el nombre Blender. En 1998 se fundó la empresa Not a Number (NaN) como una sucursal de NeoGeo, cuyo objetivo fue el desarro-
publicó su primer producto comercial: Blender Publisher, dirigido a los consumidores del sector de Internet. Desafortunadamente, el producto se vendía mal y el nuevo inversor decidió cerrar todos los proyectos de la empresa NaN, inclusive Blender. Ton Roosendaal no pudo conformarse con la decisión de dejar de desarrollar el proyecto, que le había costado tanto trabajo y que había ganado una buena reputación de la sociedad. Resultó imposible reactivar la empresa con un grupo de desarrolladores, por eso, en marzo de 2002 Ton decidió fundar Blender Foundation: una organización de tipo non-profit, cuyo objetivo básico fue encontrar el modo para conti-
llo de Blender. Los programadores de esta empresa se centraron en la creación de una compacta herramienta gratis para varias plataformas, destinada a la elaboración de gráficos 3D. En 1999 se organizó la primera presentación pública de Blender que resultó ser un gran éxito de sus autores. En verano de 2000 se lanzó Blender 2.0, y hasta los finales de 2000, ya se registraron 250.000 usuarios de este programa. Por desgracia, las aspiraciones de la empresa no se correspondieron a sus capacidades y a la realidad, y como resultado había que buscar un inversor nuevo e iniciar las actividades desde el principio, con un grupo nuevo y a menor escala. A finales de 2001, la empresa
nuar con el desarrollo de Blender como Open Source, con ayuda considerable de la sociedad. En octubre de 2002, con el lema „Free Blender” (Liberar Blender), Blender Foundation inició una campaña de colección de fondos para comprar los derechos del código fuente de Blender de la empresa NaN Holding que reclamó el pago en una sola vez de 100.000 €. En siete semanas se reunió el importe necesario. El 1 de diciembre de 2002 se firmó un contrato de venta, y ya el 13 de diciembre se publicó el código de Blender bajo la licencia GNU GPL. En actualidad, Blender sigue siendo desarrollado por un grupo de voluntarios de todo el mundo, bajo la dirección de su primer creador: Ton Roosendaal.
distinto, pero es un producto gratuito; ahora también con el código abierto; por eso mucha gente cree equivocadamente que se debería adaptar a las necesidades de cada uno. Por lo general, creemos que Blender debe tener un nivel comparable al que ofrecen otras herramientas de gráficos 3D. De todas formas, los programas como: Maya, 3ds o XSI son mucho más completos y, por eso, no son exactamente los productos con los que deseemos competir. Las empresas, como Alias, se enfocan claramente en los estudios cinematográficos. Aunque este mercado sea muy atractivo (desde el punto de vista
comercial), sólo un pequeño grupo de artistas trabaja en esta industria. En la actualidad, la tendencia principal en el mercado es la creación de gráficos 3D para cubrir necesidades propias. Estaría muy orgulloso de ayudar a ganarse la vida a artistas individuales y a empresas pequeñas. WK: ¿Existen trabajos (p.e. películas premiadas), realizados en Blender? TR: La mayoría de las carreras de animación y los fabricantes de juegos disponen de toda herramienta que les apetezca emplear. Ha habido un par de casos, en los que Bledner ha sido empleado para modelación y visualización preliminar de objetos.
entrevista
Pero, en realidad, los grandes estudios firman contratos con tales fabricantes como Alias o Softimige. De acuerdo con estos contratos se les paga por promover los productos que emplearon. En cambio, no ganan nada diciendo que utilizaron Blender. Además, no estoy autorizado para hablar en público sobre esto ... Sé muy bien que sería una publicidad excelente de Blender, pero no es lo más importante para nosotros. Prefiero trabajar empezando desde el fondo: al principio hay que demostrar que podemos crear un proyecto dinámico Open Source y hay que mostrar que prefeccionamos el software para los artistas. Sufrimos a causa de un pasado bastante turbulento y necesitaremos un poco de tiempo antes de convencer al mundo de que hemos hecho algo de valor. No me molesta la idea de que tendremos que esperar un poquito... WK: ¿Crees que algún día Linux y Blender pueden convertirse en la principal plataforma para la creación de gráficos en tres dimensiones? TR: Linux ya lo es. :) WK: ¿Cuál es tu objetivo principal durante la creación de Blender? TR: Para mí lo más importante sigue siendo la estabilización del código y el cuidado de que más developers puedan colaborar dentro de nuestro proyecto. Blender fue creado como un programa con el código cerrado, por eso, sigue estando mal adaptado al trabajo efectivo en el modelo Open Source. Las librerías y los módulos deberían tener APIs claros, con unas funcionalidades y dependencias bien documentadas. ¡Nos queda un trabajo inmenso! Además, este año me gustaría iniciar unos proyectos pequeños de investigación, destinados a realizar la modificación completa de Blender, la modificación que se conoce también bajo el nombre de Blender3. :) WK: Gracias por la entrevista.
En Internet: • •
Sitio web de Blender Foundation: http://www.blender3d.org/ Sitio web de Blender: http://www.blender.org/
www.lpmagazine.org
41
multimedia
Linux en el estudio de grabación Paweł Wolniewicz
L
En el DVD
En el DVD se encuentra la distribución multimedia de Linux ReHMuDi 2.0 (DVD B).
42
Linux+ 2/2004
os últimos años del desarrollo de Linux han sido un tiempo de madurez y de adaptación a las necesidades de diferentes grupos de usuarios. Hasta hace poco el sistema con el signo del pingüino era asociado generalmente con servidores, y su aplicación como estación de trabajo parecía no valer la pena. Actualmente este estereotipo está siendo lentamente destruido, y el nuevo software permite la aplicación de Linux en muy diferentes lugares, por ejemplo, en el estudio de grabación. El efecto de la falta de drivers profesionales para las tarjetas de sonidos y de bueno software audio era tal que hasta hace poco Linux fuera poco atractivo para los músicos. Sin embargo, actualmente no hay razón para tener pena. Han aparecido los primeros estudios de grabación que usan Linux, y el desarrollo del software libre del sonido es apoyado, entre otros, por la Comisión Europea. En este artículo presentaré los métodos de ajustar Linux a las necesidades de un estudio de grabación. Describiré también cómo utilizar algunas populares aplicaciones de música. Intentaremos, paso a paso, componer nuestra primera (sic!) grabación en Linux. Los usuarios comerciales de las aplicaciones que sirven para la edición del sonido pueden sentirse incómodos
en un primer momento. Linux no posee programas de música muy desarrollados y de muchas funciones. Durante la composición de la grabación haremos uso de, por lo menos, algunas más y menos especializadas aplicaciones. La virtud de tal solución es la posibilidad de una seleccón libre del conjunto de software y la facilidad del envío entre ellos del material de sonido. El inconveniente es la necesidad de instalar una gran cantidad de aplicaciones.
Elementos del estudio de grabación de Linux
Antes de que comencemos a configurar el sistema, mencionaré todavía los más importantes elementos del estudio de grabación basados en Linux. Sobre todo deberíamos recordar que lo más importante es siempre el hardware: el ordenador y la tarjeta de sonido, y también los micrófonos, el teclado MIDI, convertidores analógico-digitales, además del cableado adecuado. Incluso el mejor software no está en condiciones de hacer que una tarjeta de sonidos suene bien. Para no pagar por el software, invirtamos en un buen hardware para el estudio. Escojamos el hardware según el estilo de música creada por nosotros y el género de las tareas realizadas. Si tenemos la intención de grabar la pista
multimedia
estudio de grabación en Linux
Instalación de los drivers ALSA y de parches de bajas latencias Los drivers ALSA forman parte de todas las distribuciones populares de Linux. Los sistemas basados en el núcleo 2.6.x por defecto utilizan los módulos ALSA. Las actuales versiones fuentes de los drivers se pueden descargar de la web http:// www.alsa-project.org/. La instalación manual de los parches de bajas latencias es una tarea muy difícil. El núcleo adecuadamente corregido con el parche está incluido en la distribución multimedia de Linux, así que la mayor parte de los usuarios utilizará la compilación individual del núcleo mejorado. El parche del núcleo 2.4.x se puede descargar de la página: http://www.zip.com.au/ ~akpm/linux/schedlat.html. Antes de su instalación vale la pena familiarizarse
núcleo parcheado. El programa patch sirve para agregar correcciones al núcleo. Corrijamos la ruta de acceso de tal forma que apunte al archivo descomprimido del parche de bajas latencias. Ahora podemos configurar el núcleo del sistema, por ejemplo, con el comando make menuconfig. En el menú Processor Type and Features señalamos la opción Low latency scheduling. Todas las demás funciones y módulos los determinamos según las necesidades, y después compilamos el núcleo. Para aumentar todavía más el rendimiento del sistema, podemos usar el parche preemptible (ftp://ftp.kernel.org/pub/linux/ kernel/people/rml/preempt-kernel/). Gracias a él los procesos prioritarios se sopor-
con el documento Low-Latency 2.4.x with ALSA HOWTO, accesible en la web http:// www.djcj.org/LAU/guide/Low_latencyMini-HOWTO.php3. Pasemos ahora a concretos. El núcleo lo parcheamos con la ayuda del comando:
tarán de inmediato, sin esperar su turno, lo que lleva a disminuir sustancialmente las latencias. La forma de instalación es igual al caso anterior. Los mejores efectos nos los da la aplicación de los dos tipos de parches: el de bajas latencias y el preemptible. Esto no siempre es necesario. En caso de utilizar Linux sólo para reproducir el sonido y para editar de una manera simple los archivos de sonido, es suficiente un núcleo estándar, suministrado con la distribución instalada.
cd /usr/src/linux patch -p1 < /usr/src/2.4.20-low-
S
latency.patch
El primero de ellos nos traslada al directorio, en el cual se encuentran las fuentes del
vocal, la pista de guitarra y la pista de percusión, entonces necesitaremos un micrófono. Fragmentos instrumentales se pueden registrar con la ayuda del teclado MIDI, de los keyboards o de los sintetizadores. Si queremos guardar en CD la colección de discos de vinilo o los cassettes, entonces podemos conectar el gramófono directamente al ordenador. Con el fin de hacer grabaciones deberíamos usar hardware de empresas de reconocida calidad. Buenas marcas de micrófonos son AKG, Beyerdynamic, Sennheiser y Shure. Comprando instrumentos de teclas vale la pena escoger productos de las empresas Korg, Kurzweil, Roland o Yamaha. Siempre está bien escuchar los consejos de las personas que poseen los modelos de los instrumentos que nos interesan. Seguramente esto nos ayudará durante la realización de la compra.
Los métodos de grabación del sonido que voy a describir exigen la utilización del micrófono y del teclado MIDI. Se puede utilizar cualquier otra fuente de sonido, mientras que los instrumentos de teclas se pueden reemplazar con el secuenciador de programas MIDI.
Drivers y el núcleo del sistema
Además del hardware, son muy importantes los drivers de las tarjetas de sonido y de las interfaces MIDI. Ellos deberían permitir el uso al máximo de las posibilidades de nuestro hardware. En el caso del estudio basado en Linux la solución es una: drivers ALSA (Advanced Linux Sound Architecture). En comparación con la antigua tecnología OSS/Free, soportan muchas más tarjetas y están perfeccionados. Esto se nota, sobre todo, en las antiguas y menos populares tarjetas de sonido.
Otra cuestión, igual de importante que la adecuada selección de los drivers, es la apropiada configuración del núcleo del sistema. Debe permitir al hardware y software reaccionar inmediatamente al comando recibido. El parámetro que describe esta característica es la latencia (ing. latency). En pocas palabras, es el tiempo que pasa entre el envío del comunicado (el pulsar de la tecla) y la aparición del sonido en los altavoces. Las bajas latencias son fundamentales, sobre todo, cuando utilizamos nuestro equipo informático durante las actuaciones en vivo (recuadro Instalación de los drivers ALSA y de parches de bajas latencias). Hasta hace poco el soporte de bajas latencias era el talón de Aquiles de Linux. Actualmente existen parches adecuados para el núcleo, pero es imposible la instalación precompilada del núcleo. Vale la pena recordar que las latencias dependen no sólo del núcleo del sistema, sino que, en gran medida, son resultantes del poder de cálculo del procesador y de la rapidez de los componentes de la tarjeta de sonido.
El servidor de sonido y programas
Preparando a Linux para utilizarlo en el estudio de grabación no deberíamos olvidar la instalación del servidor profesional de sonido. Este es el demonio que permite a las aplicaciones un intercambio del material de audio editado. Los servidores instalados de una forma estándar – aRts para KDE y ESD para GNOME – no son suficientes. Son destinados únicamente para las operaciones más sencillas: la reproducción del sonido, las presentaciones multimedia y el soporte de juegos. No sirven para usos más avanzados, tales como mezclar la música en vivo o trabajar con los sintetizadores de programa. La mejor elección es JACK (JACK Audio Manipulation Kit). Sin ningún problema utiliza la frecuencia de prueba hasta los 96.000 Hz y el sonido de 24 bits. Además, lo usan cada vez más aplicaciones. Gracias al servidor JACK podemos enviar material de sonido editado entre varios programas especializados, sin preocuparnos de que podamos perder la calidad del material. La selección adecuada de las aplicaciones que nos sirven para editar el
www.lpmagazine.org
43
multimedia
mos intentar iniciar la aplicación desde la cuenta del administrador. La ventaja de esta solución es un mejor aprovechamiento de los recursos por los programas, el defecto: el peligro de la falta de estabilidad del sistema y de problemas con la seguridad (en caso de que nuestro ordenador esté conectado a Internet). El culpable del débil rendimiento puede ser también la mala configuración del disco duro. En este caso debería ayudar el programa hdparm. Nos permite manipular la configuración de los discos EIDE, lo que puede algunas veces llevar a colgar el sistema y a deteriorar el sistema de archivos. Antes miremos cómo Linux soporta los discos duros instalados en el sistema: hdparm /dev/hda
Deberíamos ver, entre otras cosas:
Figura 1. El instalador gráfico ReHMuDi en acción; se están instalando los programas de sonido
sonido también juega un papel importante. Depende mucho de las aplicaciones concretas, para las cuales queremos utilizar nuestro estudio. Para Linux son accesibles cientos de programas: sirven para guardar el sonido en el disco, mezclar las pistas de audio, sintetizar el sonido, dan soporte a los instrumentos MIDI, corrigen el sonido y se ocupan del montaje de efectos. Escojamos más bien las aplicaciones que pueden utilizar el servidor JACK. Aparte de aplicaciones autónomas que sirven para la edición del sonido, deberíamos instalar plug-ins, que podremos usar en cualquier editor de sonido. Los plug-ins son actualmente muy populares y usados comúnmente. Gracias a ellos, incluso la más sencilla aplicación puede convertirse en una potente herramienta. El estándar de los plug-ins para Linux es LADSPA (Linux Audio Developer's Simple Plugin API – http:// www.ladspa.org/ ). Actualmente son disponibles unos cuantos cientos de plug-ins en este formato. Además, vale la pena utilizar los plug-ins VST (Virtual Studio Technology) de la empresa Steinberg, conocidos por los usuarios del sistema Windows. Ya se pueden iniciar también en Linux, pero su instalación es aún complicada. Además, no todos los
44
Linux+ 2/2004
plug-ins VST funcionan correctamente. No obstante, vale la pena interesarse por este formato: en Internet encontraremos cientos de plug-ins VST gratuitos, que frecuentemente sirven incluso para apliciones profesionales. Para corregir el rendimiento del hardware y software utilizado, pode-
multcount
= 16 (on)
IO_support
=
1 (32-bit)
unmaskirq
=
1 (on)
using_dma
=
1 (on)
El sistema configurado de esta forma permite la transferencia de 32 bits con la utilización de 16 sectores del disco a la vez. No tenemos que conocer el significado de todos los parámetros del programa hdparm. La configuración recomendada se puede fácilmente obtener ejecutando
Figura 2. Configuración del servidor JACK en el programa Qjackctl
estudio de grabación en Linux
Figura 3. Ardour es un registrador multipista del sonido
desde la cuenta del administrador el siguiente comando: /sbin/hdparm -c 3 -d 1 -m 16 -A1 /dev/hda
Si la nueva configuración resulta ser mejor (el sistema funciona establemente y desaparecen los posibles problemas con la reproducción del sonido), entonces la llamada del programa hdparm la incluimos en uno de los archivos iniciados durante el arranque del sistema (por ejemplo, /etc/ rc.d/rc.local).
Las distribuciones multimedia de Linux
Las actividades de configuración descritas por mí en la siguiente parte, que permiten transformar el ordenador con Linux en un estudio de grabación, pueden parecer muy complicadas. En realidad, en total nos llevarán casi una hora. No es necesaria la compiliación individual del núcleo, parches y software. Aprovechamos la distribución multimedia de Linux, es decir, el conjunto de aplicaciones indispensables y el núcleo adecuadamente preparado, todo en la forma binaria (recuadro Distribuciones multimedia de Linux). Actualmente existen más de diez distribuciones multimedia. En su mayoría son extensiones para los existentes sistemas de Linux. El usuario que quiere aprovechar los beneficios de las aplicaciones de música tiene que instalar la distribución escogida de Linux, y después, la
distribución multimedia adecuada para ella. Después de hacerlo, puede ser necesaria todavía la configuración de las tarjetas de sonido que tenemos. En muchos casos este trabajo lo realiza Linux en vez de nosotros. Comenzando el trabajo con el sonido vale la pena probar las distribuciones multimedia que se inician desde el CD. Tienen un conjunto básico de aplicaciones de sonido y no exigen la instalación de nada en el disco duro. Son una perfecta solución para las personas que quieren testear el software de música para Linux. La mejor distribución multimedia iniciada desde el CD es AGNULA/DeMuDi Live. Se ejecuta en el sistema Knoppix, enriquecido con las más importantes aplicaciones de sonido. La segunda distribución de este tipo es Dyne:bolic. Está destinada para las personas que se ocupan de tareas multimedia ampliamente entendidas.
Instalación de ReHMuDi
Una de las más populares versiones multimedia de Linux es ReHMuDi (para los sistemas Red Has y compatibles). Es parte del proyecto AGNULA (A GNU/ Linux Audio distribution). Tendremos que descargar (http://download.agnula.org/ rehmudi/ ) la imagen adecuada del CD o utilizar el archivo rehmudi.tar.bz2 incluido en el DVD anexo a la revista Linux+ DVD. ReHMuDi contiene solamente paquetes multimedia: el mismo sistema Red Hat (actualmente Fedora
multimedia
Core) hay que instalarlo aparte. Para uso de este artículo he instalado – en el sistema Aurox Linux 9.3 – la distribución ReHMuDi 2.0. Aunque incluye paquetes destinados para la distribución Fedora Core 1, debido a la popularidad de Aurox en Europa, me decidí a utilizar precisamente este sistema. Vale la pena saber que los sistemas Aurox 9.3 y 9.4 fueron creados apoyándose en el sistema Fedora Core 1. Debido a que por defecto tienen instalados los drivers ALSA, tuve que desinstalar los paquetes kernel-module-alsa, alsa-utils y alsa-driver (se puede dejar el paquete alsa-lib). ReHMuDi instaló antiguas versiones de los paquetes ALSA, pero gracias a ello tenía la seguridad de que todo funcionaba adecuadamente. A pesar de varios comunicados de error (generalmente se
Distribuciones multimedia de Linux: •
•
•
•
•
•
•
•
AGNULA – A GNU/Linux Audio Distribution: http://www.agnula.org/ ReHMuDi – versión multimedia de Fedora (Red Hat), parte del proyecto AGNULA: http://www.agnula.org/download/ rehmudi/ DeMuDi – versión multimedia de Debian, parte del proyecto AGNULA: http://www.agnula.org/download/ demudi/ AGNULA/DeMuDi Live – versión DeMuDi; se inicia desde el CD: http://download.agnula.org/1.1/1.1.1/ demudi-live-cd_1.1.1.iso Planet CCRMA – conjunto de paquetes de los sistemas Red Hat y Fedora: http://ccrma-www.stanford.edu/ planetccrma/software/ Dyne:bolic – se inicia desde el CD; distribución de Linux fácil en el uso, destinada para las personas que trabajan con los multimedia: http://dynebolic.org/ Audioslack – más de diez programas de sonido comprimidos para Slackware: http://www.audioslack.com/ Paquetes RPM para Mandrake – varios cientos de ellos contienen software de música: http://rpm.nyvalls.se/
www.lpmagazine.org
45
multimedia
Conexión de equipos e instrumentos al ordenador
Las pistas vocales, el sonido de las guitarras, de las percusiones y de la naturaleza lo podemos grabar con ayuda de los micrófonos dinámicos y electrostáticos. Los conectamos al ordenador de tres formas: •
• •
a la entrada del micrófono – el cable del micrófono lo conectamos directamente a la entrada señalada en rojo en la tarjeta de sonido. a la entrada lineal (Line In) – por medio del preamplificador. a la entrada S/PDIF – con ayuda del convertidor analógico-digital.
En cada uno de estos casos es suficiente poseer los drivers ALSA configurados correctamente. Las teclas, los sintetizadores y los keyboards los conectamos también de tres formas: •
•
•
al puerto MIDI en la tarjeta de sonido – el instrumento debe tener conexión MIDI In/Out, además se debe configurar la interfaz MIDI del ordenador (drivers ALS) al puerto USB – una frecuente solución en el caso de los teclados MIDI. Es necesaria la instalación de los drivers adecuados. Está descrita en las páginas: – http://member.nifty.ne.jp/Breeze/ softwares/unix/usbmidi-e.html – http://www.djcj.org/LAU/guide/ evolution-usb-midi.php al puerto en serie del ordenador – el instrumento tiene que poseer conexión TO HOST. Habrá que instalar el driver Notemidi: http:// michaelminn.com/linux/notemidi/ README.html
A la entrada lineal de la tarjeta de sonido se pueden conectar muchos equipos. De esta forma se graba el material audio originario de los discos de vinilo y de los cassettes. No se exige la instalación de otros drivers.
refieren al uso de otra versión del compilador gcc), la instalación del núcleo del sistema y de las aplicaciones terminaron con éxito. Ahora llega nuestro turno. Si en el disco duro ya se encuentra Aurox 9.x o Fedora Core 1, podemos pasar a la instalación de los paquetes ReHMuDi 2.0. Introducimos en la unidad el CD,
46
Linux+ 2/2004
cuya imagen hemos descargado de la página web del proyecto ADNULA o del DVD de nuestra revista. El script de instalación install.sh se encuentra en el directorio principal del disco o en el archivo rehmudi.tar.bz2. Después de iniciarlo desde la cuenta del administrador, empieza a copiarse el software indispensable. Un momento después aparece la ventana (Figura 1), en la cual señalamos los programas que están designados para la instalación. Propongo escoger todos los paquetes; seguramente haremos uso de la mayoría de ellos. Después de aceptar la selección realizada, el instalador inicia su trabajo: puede durar incluso más de diez minutos. Los errores que pueden aperecer en este momento resultan de la falta de las librerías necesarias. Algunas de las aplicaciones instaladas exigen la presencia de KDE y Qt; en caso de que aparezcan estos problemas, tenemos que reinstalar los paquetes adecuados. Después de terminar la instalación, hay que reiniciar el ordenador. Durante el rearranque del sistema será cargado el nuevo núcleo (el script de instalación automáticamente actualiza el bootloader). Si usamos el demonio kudzu, éste intenta descubrir las tarjetas de sonido disponibles). No siempre esta operación termina con éxito. Nada perdido. Después de iniciar el programa alsaconf, veremos la lista de las tarjetas de sonido presentes en el sistema. Es suficiente aceptar los comunicados del configurador y ... la tarjeta funciona. Los problemas pueden aparecer únicamente en el caso del hardware “exótico” o durante la instalación de varias tarjetas de sonido. En este caso puede ser necesaria la edición manual del archivo /etc/modules.conf. Si alsaconf encuentra correctamente la tarjeta de sonido, y aún así, al iniciar estos programas para la edición del sonido, recibimos errores de bloqueo de hardware, entonces se debe comprobar si el servidor gráfico de sonido aRts o ESD está desconectado (respectivamente KDE o GNOME). Si el servidor de sonido de nuestro entorno gráfico está conectado, se debe desconectarlo (en KDE en el Centro de mando->Sonido->Sistema de Sonido en la pestaña General hay que marcar Conecta el sistema de sonido; en GNOME: en el Centro de mando->Sonido marcamos Inicio del servidor de sonido).
Servidor JACK
Después de instalar ReHMuDi 2.0, en el disco del ordenador se encuentran ya las mejores aplicaciones de música para Linux. Además, el sistema está adecuadamente configurado y preparado para el trabajo con las bajas latencias. Nos queda todavía iniciar el servidor JACK. Podemos hacerlo directamente desde la línea de comandos: jackstart -d alsa. Si queremos definir exactamente los parámetros de trabajo del servidor (lo que es muy recomendado) y preferimos evitar dar comandos complicados desde la línea de comandos, utilicemos la extensión gráfica del programa Qjackctl. Gracias a esto, podremos de una manera cómoda ajustar la configuración del servidor JACK a nuestras necesidades (el botón Setup...). Disminuyendo la medida del búfer podemos disminuir bastante la latencia. Recordemos, sin embargo, no exagerar. Si, después de iniciar el servidor en la ventana Status, aparece información de errores xrun, esto significa que nuestro sistema no es capaz de trabajar con las latencias establecidas por el usuario. Esto puede ser resultado de un bajo poder de cálculo del ordenador o de una mala configuración del sistema. Los bajos valores de la latencia son necesarios generalmente durante las presentaciones en vivo o durante la grabación del material de sonido. En otros casos la baja dimensión del búfer sólo hace más lento el trabajo del sistema operativo, así que no merece la pena disminuir los valores estándar de las latencias si en algún momento queremos únicamente reproducir los archivos de sonido.
Preparación para la grabación del sonido
El servidor JACK que funciona establemente nos permite comenzar el trabajo con el sonido. Al principio intentemos grabar la pista de audio de cualquier fuente externa. Si en algún caso escogemos el micrófono, deberíamos elegir una de las formas de conectarlo al ordenador. En la tarjeta de sonido se encuentra la entrada para el micrófono (señalado por lo general con el color rojo), pero no garantiza la buena calidad del material audio. Éste recibe los datos en forma de energía de baja intensidad, como
estudio de grabación en Linux
resultado, el sonido está expuesto a las perturbaciones que se originan dentro o cerca del ordenador. La solución a este problema puede ser la utilización del preamplificador de micrófono o del convertidor analógico-digital. El primero disminuye bastante las perturbaciones que aparecen en los circuitos de la tarjeta de sonido, y el segundo las elimina del todo. El preamplificador nos permite conectar el micrófono directamente a la entrada lineal (Line In) de la tarjeta de sonido, normalmente señalada con el color azul. Recibe los datos en forma de tensión cientos de veces mayor que en el caso de la entrada del micrófono. Como resultado, las posibles perturbaciones sólo en un pequeño grado disminuyen el intervalo entre la señal y el ruido. La solución ideal es la utilización del convertidor analógico-digital. Cambia la señal que corre del micrófono a los datos digitales, que no sufren perturbaciones dentro del ordenador. Es la mejor solución, pero no siempre imprescindible. El equipo profesional no nos garantiza buenas grabaciones. Si ponemos el micrófono cerca del ordenador, el ruido del ventilador o de un disco duro ruidoso puede en gran manera bajar la calidad del sonido registrado. Cualquier otro ruido que llega del ambiente tampoco es deseable. Iniciando la grabación del sonido deberíamos tomar en cuenta todos los pormenores: solamente entonces obtendremos un material audio de buena calidad. Las secuencias instrumentales las podemos grabar con ayuda de los teclados y sintetizadores MIDI. Existen tres formas de conexión de este tipo de instrumentos al ordenador. Según el género de salida que se encuentre en la contrucción del equipo MIDI, podemos conectarlo al puerto USB, al puerto en serie o a la interfaz MIDI. En los primeros dos casos será todavía necesaria la instalación de los drivers adecuados. Las configuraciones de ejemplo de conexión de los equipos de música al ordenador están presentados en el recuadro Conexión de equipos e instrumentos al ordenador. Las reglas son las mismas para todos los sistemas operativos: si anteriormente ya hemos grabado el material de música, no encontraremos ningún problema. Tenemos que acordarnos de elegir dentro del sistema operativo la entrada de la tarjeta, de la cual será grabado el sonido.
multimedia
Figura 4. Programa MusE – secuenciador MIDI para Linux
Nos sirve para eso el mixer del programa. En cada distribución de Linux podemos encontrar al menos un par de programas de este tipo (por ejemplo, Aumix, Xmix, Kmix, Gnome-volume-control y otros). Verificamos si el equipo del que queremos grabar el sonido está señalado adecuadamente (por lo general Record o Registro). Los mixers del programa seguramente los utilizaremos muchas veces en el futuro. Grabando el sonido hay que acordarse de regular adecuadamente su nivel. En material audio demasiado bajo hay un espacio de tiempo muy pequeño entre la señal y el ruido. Por otro lado, la grabación del sonido con un volumen demasiado alto puede producir una señal deformada y chasquidos desagradables. En ambos casos será necesario después de una corrección del nivel de la voz,
repetir la grabación de la pista. Los párametros del sonido se pueden también sintetizar con ayuda del programa Jamin (http://jamin.sourceforge.net/ ); gracias a él podemos establecer, entre otras cosas, las características adecuadas de la frecuencia del material. Para la grabación del sonido se puede utilizar Audacity, pero será más profesional la utilización del editor multipista Ardour. Permite grabar y mezclar muchas pistas de cualquier número de canales. Ardour es más dificil en el uso que Audacity, pero es el precio por su mayor funcionalidad.
Editor Ardour – grabación del sonido
Si hemos instalado ReHMuDi, Ardour ya se encuentra en el disco duro. Veremos su inicio en la ventana de la creación de
Figura 5. La selección de la fuente del sonido en el programa Ardour; esta configuración hará que el audio dado se descargue del sintetizador ZynAddSubFX
www.lpmagazine.org
47
multimedia
una nueva sesión. Es suficiente escribir el nombre del proyecto, con el cual comenzamos el trabajo. Ardour abre un directorio para guardar el material grabado. Después de crearlo, se puede pasar al trabajo con el programa. En la parte central de la ventana vemos el mapa de las pistas; por el momento se encuentra en él sólo la señal de Master. Primero, creamos la pista, en la cual registramos el material de sonido. La ventana para agregar pistas se abre después de hacer click en un campo libre debajo de la cabecera de la pista de Master. Los parámetros propuestos por Ardour se pueden dejar sin cambiar. Pero si queremos que la pista grabada sea estereofónica (que tenga dos canales), hacemos click con la tecla derecha del ratón en mono. Será sustituido por la opción estereo. La pista está ya creada, y el micrófono u otro equipo conectado a la tarjeta de sonido y comprobado, así pues podemos grabar. Señalamos nueva pista como designada para guardar. Esto se puede hacer apretando el botón con la letra r, que se encuentra a la derecha del nombre de la pista. En la barra de iconos hacemos click en el botón de grabación, y luego en el de reproducción. Ahora nuestro vocalista (guitarrista, percusionista) puede comenzar a actuar. Después de acabar la grabación, hay que hacer click en el icono de retención. En este momento deberíamos ver el nuevo segmento de audio con el gráfico ondulatorio del material registrado. Si ninguno de los sonidos se ha grabado y todos los equipos están adecuadamente conectados, la culpa puede ser del editor Ardour. Del menú Windows escogemos Route Parameters. En la ventana que aparece en la pantalla se pueden definir los equipos de entrada y salida. Por regla general, Ardour autómaticamente escoge las fuentes del sonido, pero en el caso de utilizar varios programas de música pueden ser necesarias correcciones manuales. Por lo tanto, sería aconsejable familiarizarse con las opciones Route Parameters. De la lista que se encuentra a mano izquierda de la ventana escogemos la pista que nos interesa. Hacemos click en INPUTs. En el marco 1 debería estar escrito alsa_pcm:capture_1, y en in 2 – alsa_ pcm:capture_2. Tal configuración nos permite grabar el sonido de la entrada audio. Si lo que está escrito no es correcto,
48
Linux+ 2/2004
Figura 6. Qjackctl facilita el envío del sonido entre aplicaciones
la herramienta alsa_pcm la encontraremos en una de las páginas de contenido que se ven en la parte derecha de la ventana. Ardour corrige las pistas después de hacer click en ellas. La selección de la salida del sonido adecuada (OUTPUTs) es igual de importante. La pista escogida por nosotros debería ser guardada en la pista de Master: en el campo out_1 escribimos ardour:master/in 1, y en out 2 – ardour: master/in 2. Hay que revisar también lo que está escrito en la pista de Master. En este caso atribuiremos al campo out 1 alsa_pcm:playback_1, y al out 2, alsa_pcm: playback_2. Gracias a la configuración correcta de los dispositivos de salida, escucharemos el material registrado de audio. Si todas las pistas necesarias han sido grabadas correctamente, podemos guardar la sesión (Session->Save). Para mezclar todas las pistas de un archivo individual WAVE, hacemos uso del comando Export session to audiofile... del menú Session -> Export. En la ventana para guardar damos el nombre del archivo de salida y señalamos las pistas que queremos tomar en cuenta en el mezclado, y, al mismo tiempo, atribuirlas al canal adecuado (en caso de los archivos estereofónicos).
Edición del sonido
El material grabado seguro que requiere correcciones. Puede ser necesario, por ejemplo, la eliminación del componente permanente, la normalización, la corrección de la frecuencia o de otras operaciones de edición. En la corrección del sonido ayudan los plug-ins LADSPA.
Regresemos a la ventana Route Parameters de Ardour. Nos da acceso a los plug-ins instalados en el sistema. Después de seleccionar la pista destinada a la edición y de hacer click con el botón izquierdo del ratón en Pre Redirects, se abre el menú manual. Escojamos el comando New Plugin..., que nos trasladará a la ventana con una amplia lista de plug-ins. Si instalamos los plug-ins VST, entonces también deberíamos hallarlos en la lista. El esquema del trabajo de los plug-ins que se presenta más adelante tiene aplicación en la mayoría de los casos. Sobre todo deberíamos señalar el plug-in (o los plug-ins) que queremos usar. Luego hacemos click en Add y OK. Los nombres de los plug-ins escogidos aparecerán en la ventana Route Parameters, en la sección Pre Redirects. Después de marcar uno de los plug-ins, sus parámetros serán visualizados en la parte derecha de la ventana. Podemos cambiarlos con ayuda de las barras de desplazamiento. En el caso de los plug-ins VST vale la pena conectar la visualización de la interfaz (Gui_on_off ). Es muy estético y hace el trabajo agradable. Podemos guardar los parámetros modificados (Save). El último paso debería ser la activación del plug-in. Pulsemos el botón Bypass o del menú manual Pre Redirects escojamos el comando Activate All. Durante la edición de pistas individuales y archivos de sonido se pueden usar otros programas que den soporte a los plug-ins LADSPA. Para obtener acceso a los plug-ins en Audacity, es suficiente señalar el fragmento adecuado del material, y después escoger (del menú Effect–>Plugins) el plug-in adecuado.
estudio de grabación en Linux
Instalación de los plug-ins VST Para hacer uso de los plug-ins VST, muy populares entre los usuarios de MS Windows, hay que instalar el emulador Wine (agregado a la mayoría de las distribuciones) y los programas Vstserver y Ladsparvst (http://www.notam02.no/arkiv/src/). Todos los plug-ins VST que queramos utilizar deberían estar en uno de los directorios que señalarán la variable del entorno VST_PATH. La definimos de la siguiente forma: export VST_PATH=/home/pawelw/vst
Este comando vale la pena escribirlo en alguno de los archivos ejecutables durante el inicio de la shell Bash (por ejemplo, ~/.bash_profile). En caso contrario tendremos que ejecutarlo después de cada inicio del sistema. Al contrario que el emulador Wine, los programas VSTServer y Ladspavst los compilamos individualmente. Después de descomprimir la fuente del primero de ellos, abrimos el archivo makefile. En la primera línea encontraremos la ruta de acceso a Wine (WINEPATH=/usr/local). Si es necesario la corregimos y después guardamos el archivo. Ahora ya podemos compilar VSTServer. En el directorio con las fuentes ejecutaremos, por orden: make make install
Tareas más complicadas
Hasta este momento he descrito solamente los métodos más sencillos de la edición del sonido. Las posibilidades de Linux son mucho mayores. El servidor JACK nos permite la conexión muy fácil a, por lo menos, un par de programas de audio. En el caso de otros sistemas operativos todo el proceso de la edición de la grabación es realizado desde el nivel de una aplicación, por lo tanto, los usuarios de Linux pueden utilizar muchos programas. El material audio es enviado entre ellos sin perder su calidad.
MIDI y sintetizadores
Intentemos ahora añadir a nuestra composición otra pista más. Esta vez obligamos a colaborar varias aplicaciones de música. En una de ellas preparamos la línea melódica, otra nos sirve como instrumento reproductor de cada una de las notas, y con la ayuda de la tercera
Instalamos la librería Ladspavst. Gracias a ella podremos hacer uso del plug-in VST al igual que del plug-in LADSPA. La compilación es muy sencilla: es suficiente ejecutar make. Obtenemos el archivo vst.so, lo copiamos al directorio, en el que se encuentran los plug-ins LADSPA. En el caso de ReHMuDi es /usr/lib/ladspa. Nos queda todavía iniciar el programa VSTServer. En la línea de comandos ejecutamos vstserver &. En la ventana del terminal deberíamos ver el nombre y el número de la versión de la aplicación, y también la información Waiting for requests. Si después de iniciar cualquier editor de audio que haga uso de los plug-ins LADSPA aparecen comunicados de errores, seguro que alguno de los plug-ins VST instalados no está siendo soportado en Linux. Al principio lo mejor es hacer una copia de cada plug-in; gracias a ello descubríremos rápidamente las causas de los errores. Antes de instalar los plug-ins, vale la pena familiarizarse con: •
•
el artículo Using VST Plugins In Linux: http://www.djcj.org/LAU/quicktoots/ toots/vst-plugins/ Linux Vst Compatibility Page – página web que describe la función de los plug-ins concretos VST en Linux: http://www.djcj.org/LAU/ladspavst/
realizamos el registro del sonido. De esta forma podemos grabar buenas las pistas instrumentales. Este método es apreciado por las personas que tienen un sintetizador como hardware o un fortepiano. La línea melódica la componemos en el programa MusE, con secuenciadores MIDI para Linux. Los que tienen instrumentos MIDI no tendrán ningún problema con esto: es suficiente grabar la parte creada en el teclado: ésta será registrada por MusE. Cada una de las notas se pueden también añadir directamente en el secuenciador, con ayuda del ratón. No obstante, este método exige mucho más trabajo. Después de iniciar el programa MusE (forma parte de ReHMuDi), pasamos a la creación de las pistas MIDI. A mano izquierda de la ventana se encuentra una lista vacía: pulsamos en ella con el botón derecho del ratón, y del menú contextual escogemos Add Midi Track.
multimedia
Luego, señalamos el icono-lápiz (un poco más abajo del menú del programa) y en la parte derecha de la ventana MusE dibujamos con el ratón un nuevo segmento MIDI. Ahora cambiemos el lápiz por la flecha y hagamos en él click dos veces: se abrirá la ventana del editor de matrices. Esto nos permitirá poner notas de cualquier longitud y altitud. Para pasar al modo de edición, de nuevo señalamos el icono-lápiz. Podemos ya dibujar las notas adecuadas en la red del editor. En el caso de cometer algún error, hacemos uso del borrador virtual, pero cada una de las notas las podemos, en caso de necesidad, trasladar a otro lugar. Preparamos ya el registro de notas en nuestra grabación, y dentro de un momento las podremos escuchar. El sonido será generado por el programa sintetizador. Recibe los comunicados MIDI y, después, los reproduce con ayuda del sonido programado por el usuario. Los sintetizadores son un lado fuerte de Linux. Podemos escoger entre varias aplicaciones perfectas que colaboran con el servidor JACK. Yo me decidí por ZynAddSubFX: un sintetizador disponible también en una versión para el sistema Windows. Genera un sonido de muy buena calidad, y el conjunto de instrumentos predefinidos facilita el trabajo a los usuarios principiantes. ZynAddSubFX no forma parte de la distribución ReHMuDi, por tanto, tendremos que visitar la página web del proyecto (http://zynaddsubfx.sourceforge .net/ ). Son accesibles los paquetes binarios destinados para las distribuciones populares de Linux, pero la compilación de la fuente es sencilla (./configure; make; make install) y se realiza muy rápido. ZynAddSubFX utiliza el servidor JACK, por lo que podremos registrar el sonido generado en el editor Ardour. Los que quisieran primero probar el programa ZynAddSubFX, lo pueden iniciar en la distribución AGNULA/ DeMuDi Live incluida en el disco DVD A, que acompaña a este número de Linux+.
Colaboración de los programas de música
Ya tenemos todos los programas necesarios, así que dediquemos unos cuantos momentos a su correcta configuración.
www.lpmagazine.org
49
multimedia
Otros programas de música para Linux
Además de las aplicaciones descritas en este artículo, se pueden aprovechar varias decenas de programas que sirven al servidor JACK. Secuenciadores MIDI: • •
MusE: http://lmuse.sourceforge.net/ Rosegarden-4: http://www.rosegardenmusic.com/
Programas sintetizadores: • • • • •
•
AlsaModularSynth: http://alsamodular.sourceforge.net/ gAlan: http://galan.sourceforge.net/ Hydrogen: http://hydrogen.sourceforge.net/ LegaSynth: http://www.reduz.com.ar/legasynth/ Pd: http://www-crca.ucsd.edu/~msp/ software.html ZynAddSubFX: http://zynaddsubfx.sourceforge.net/
Registro del sonido: • • •
Ardour: http://ardour.org/ Ecasound: http://www.eca.cx/ecasound/ ReZound: http://rezound.sourceforge.net/
Editores de audio sin soporte del servidor JACK: • • • •
Audacity: http://audacity.sourceforge.net/ Glame: http://glame.sourceforge.net/ Gnoise: http://gnoise.sourceforge.net/ Sweep: http://sweep.sourceforge.net/
Revisemos si el secuenciador MusE hace uso del servidor JACK. En la ventana que se abre después de escoger el comando Audio System del menú Config debería estar señalada la opción Use JACK. Después de iniciar el programa ZynAddSubFX, volvamos por un momento a MusE. Del menú Config escogemos Midi Ports / Soft Synth. Veremos la lista de los canales MIDI con los instrumentos reproductores atribuidos a ellos (por lo gene-
50
Linux+ 2/2004
ral, es None o el nombre de la tarjeta de sonido). Cambiamos la configuración del primer canal: de la lista de selección escogemos la posición ZynAddSubFX. A partir de este momento el secuenciador MusE enviará comunicados MIDI al sintetizador ZynAddSubFX a través del servidor JACK. Podríamos ahora mismo escuchar las secuencias MIDI compuestas anteriormente, pero no tenemos por ahora la posibilidad de grabar la música. Para registrarla utilizamos el editor Ardour, que conocemos muy bien. Antes de comenzar el trabajo, tenemos que corregir las notas en la ventana Route Parameters. La pista que nos sirve para registrar el sonido debería tomar los datos del sintetizador. En su entrada (INPUTs) seguramente ya está atribuido ZynAddSubFX. Si no, los dispositivos adecuados los encontraremos en la parte derecha de la ventana Route Parameters, en la pestaña ZynAddSubFX. Nos queda agregarlos, tal como lo presenta la Figura 5. Ahora podemos escuchar la grabación. En el secuenciador MusE hacemos click en el icono que inicia la reproducción. Los comunicados MIDI serán transferidos al sintetizador ZynAddSubFX, que con su funcionamiento genera los sonidos preparados. Los sonidos serán tranferidos al programa Ardour, y después a los instrumentos de entrada de la tarjeta de sonido. La pista grabada la escucharemos en los altavoces, y el inicio de la grabación en el editor Ardour provoca que sea guardada. Si durante su reproducción no oimos ningún sonido, es resultado de la mala transferencia del sonido que se perdió por el camino. Volvemos a verificar la configuración de los programas MusE y Ardour. También ayudará mucho Qjackctl. Haciendo click en el botón Connect obtemos acceso a la ventana de las conecciones de cada una de las aplicaciones. En la pestaña Audio (Figura 6) la salida ZynAddSubFX debería ser atribuida a la entrada Ardour, y ésta, a su vez, a la tarjeta de sonido (alsa_pcm). En la pestaña MIDI deberíamos ver una conexión: el secuenciador MusE con el cliente ZynAddSubFX. Gracias a Qjackctl podemos seguir la atribución de cada una de las aplicaciones y controlar la transferencia de datos audio. En la mayoría de los casos el servidor JACK une correctamente todos los programas clientes. En el ejemplo descrito, por lo general, es suficiente configurar correctamente la salida MIDI del secuenciador
MusE. Todas las demás conexiones son automáticamente creadas durante el inicio de cada uno de los programas. Si hacemos uso de una mayor cantidad de aplicaciones, entonces seguro que deberemos definir manualmente el curso correcto de los datos de sonido. En tal caso apreciamos la intuición y la sencillez del programa Qjackctl. Si no nos gusta el sonido generado por ZynAddSubFX, podemos fácilmente cambiar los parámetros del envolvente, de la resonancia y muchos otros. A los usuarios principiantes les recomiendo hacer uso de una serie de instrumentos predefinidos (archivo *.ins_zyn), instalados junto con el programa. Antes de grabar los sonidos generados, vale la pena corregir la configuración del servidor JACK para que las latencias sean más bajas. Un tiempo de reacción del sintetizador demasiado largo puede estorbar la reproducción de la secuencia MIDI.
Resumen
El esquema que he descrito (MusE ZynAddSubFX - Ardour) es solamente una de las tantas posibilidades. Varias decenas de excelentes aplicaciones de música hacen uso del servidor JACK. La forma de aprovecharlo depende, en gran medida, de la creatividad de los músicos. Tengo la esperanza de que el ejemplo que he presentado anime a los Lectores a sus propios experimentos. Les deseo muchos éxitos en su trabajo con la música de ordenador y con Linux.
En Internet: •
•
•
•
• •
Sound & MIDI Software For Linux – el más importante sitio en inglés http://linux-sound.org/ Archivo de la lista linux-audio-user: http://music.columbia.edu/pipermail/ linux-audio-user/ The Linux Musician – otro sitio en inglés: http://www.linuxmusician.com The Linux MIDI + Sound Pages – lista de programas de música para Linux: http://www.xdt.com/ar/linux-snd/ The Linux Audio Quality HOWTO: http://www.linuxdj.com/audio/quality/ The Linux Musician guide to recording – grabación del sonido en Linux: http://www.linuxmusician.com/index. php?option=displaypage&Itemid=51 &op=page&SubMenu=
www.hakin9.org
primeros pasos
Blender: una expedición a la tercera dimensión Piotr Machej
E
l programa Blender está destinado a crear gráficas en tres dimensiones. Con ayuda de este programa se pueden realizar no sólo escenas estáticas, sino también animaciones, e inclusive juegos. Los mejores trabajos de los usuarios son verdaderamente impresionantes. Sus funcionalidades, en la versión básica ya extensas, se pueden desarrollar con ayuda de scripts escritos en el lenguaje Python. Asimismo, se pueden usar programas externos de renderizado, como Yafray o POV-ray.
Ejemplo de empleo
DVD
Después de arrancar la distribución Linux+ Live DVD podemos usar Blender.
En el DVD
En el DVD están los paquetes fuente y binarios de Blender.
52
Linux+ 2/2004
Hace poco en mi casa apareció un gato. Es pequeño, un poco rojizo y mete la nariz en todas partes. Incluso ahora está en el escritorio e intenta escribir en el teclado. Se me ha ocurrido que sería interesante hacer una galería en la que aparezcan las fotos que muestren las siguientes etapas de su vida. No obstante, he comprobado que una galería normal en una página web es demasiado trivial. De todas formas, el sitio en las paredes de mi cuarto ya está ocupado por estantes llenos de libros y de fotos de caballos. Entonces, ¿para qué me sirve Blender? Puedo construir una galería virtual en la que podré moverme sobre la pantalla del ordenador. Por eso, he decidido construir una galería de la siguiente manera: un gran edificio con salas y plantas sucesivas, en cuyas paredes se colgarán las fotos puestas en bonitos marcos, desde los que me
mirará Kiba (es el nombre de mi gatito). Para empezar la aventura, hay que dar el primer paso: yo he decidido que, al principio, basta con construir una sencilla mesilla donde se pondrá una foto. Más tarde pensaré en el cuarto, la lamparilla de noche de la mesilla y en el resto de fotos.
Instalación
Blender se distribuye en versión binaria. Naturalmente, las fuentes se pueden también conseguir aparte, pero lo más fácil es emplear una versión compilada. Empecemos cargando el archivo. Con este objetivo entramos en el sitio web del programa (http://www.blender.org/ ) y seleccionamos el enlace Downloads. A continuación, buscamos la posición Linux i386 en la tabla y elegimos el servidor que nos corresponda (lo mejor Europe). En el disco indicamos el directorio en que queremos guardar el fichero (ahora, en el momento de escribir este artículo, es el fichero blender-2.33a-
Figura 1. Esto no es más que el principio modesto de la galería
blender
primeros pasos
Instalación de Blender en el directorio /usr/ local/
Si queremos que todos los usuarios del ordenador tengan acceso a Blender, no deberíamos instalarlo en nuestro propio directorio. En vez de hacerlo así, podemos instalarlo, por ejemplo, en el directorio /usr/local/. Para hacerlo, primero hay que adquirir los derechos del administrador (los obtenemos con el comando su-, después de indicar la contraseña del usuario root). A continuación, copiamos el fichero descargado en el directorio /usr/local/ (con el comando cp
/pista/a/fichero/blender-
2.33a-linux-glibc2.2.5-i386.tar.gz /usr/local/). Por supuesto, en vez de
/pista/a/fichero/ indicamos el nombre del directorio adecuado con el fichero copiado (p.e. /home/usuario/, si hemos guardado el fichero en el directorio principal del usuario con el nombre usuario). Ahora, pasamos al directorio /usr/local/ (con el comando cd /usr/ local/) y descomprimimos el archivo con el comando tar xzvf blender2.33a-linux-glibc2.2.5-i386.tar.gz. Podemos cambiar el nombre del directorio creado a uno más corto (p.e. blender), ayudándonos con el comando
Figura 2. Pantalla principal de Blender
linux-glibc2.2.5-i386.tar.gz), luego esperamos a que se descargue a nuestro disco. Vale la pena observar que en la tabla, debajo de la posición Linux i386, se encuentra la posición descrita como Linux i386 static. Es una versión con librerías OpenGL, conectadas de manera estática. Si no conseguimos arrancar la versión Linux i386, deberíamos usarla. Cuando ya tengamos el fichero en nuestro disco, hay que arrancar el emulador del terminal. Podemos escoger cualquier programa (p. e. en GNOME de Aurox disponemos de GNOME Terminal en el menú Herramientas del sistema–>Terminal). Ahora basta con descomprimir el fichero descargado con el comando tar xzvf blender-2.33a-linux-glibc2.2.5-i386.tar.gz. Después de entrar en el directorio (cd blender-2.33a-linux-glibc2.2.5-i386/), ponemos en marcha el programa por medio del comando ./blender.
Soporte básico
La regla principal del manejo de Blender es: "Pon una mano en el teclado y la otra en el ratón". Así funciona, porque con este programa podemos comunicarnos a través de un ratón de tres botones y con una serie de atajos de teclado. La mayoría de las teclas empleadas con más frecuencia está ordenada de modo que podamos presionarlas con la mano izquierda puesta en una posición normal (con el dedo índice puesto en la tecla [F]); por eso, podemos manejar el ratón con la mano derecha.
Pantalla principal
La pantalla de modo predeterminado está dividida en tres partes. En la parte superior tenemos la barra de menú. Las posiciones del menú más importantes para nosotros son: File (Fichero), Add (Añadir) y Render (Renderizar). Debajo de la barra de menú, hay una ventana con la vista del escenario en la que estamos trabajando en un momento determinado. En este área vamos a modelar objetos, añadir iluminación o colocar cámaras. Aquí ya se hallan como valores predefinidos: el cubo (cuadrado negro en el centro), la fuente de iluminación (círculo amarillo con el punto) y la cámara (punto amarillo en la cima de la pirámide, que muestra en qué dirección "mira" la cámara). Además, hay un cursor visible (un círculo rojo y blanco en el centro). el escenario se representa en una vista desde arriba, que demuestra un sistema de coordenadas ubicado en el rincón abajo a la izquierda (son visibles los ejes X e Y). Podemos cambiar el ángulo de la vista del escenario con empleo de las flechas ubicadas en el teclado numérico. Podemos también retener el botón medio del ratón y mover el escenario: de esta manera el movimiento es más preciso y suave, que el iniciado en el teclado. Podemos emplear la rueda del ratón para alejar y aproximar la vista. Si no disponemos de ratón con una rueda, con este objetivo podemos usar las teclas [+] y [-] en el teclado numérico. Hay cuatro botones en el teclado numérico que tienen funciones especiales.
mv
blender-2.33a-linux-glibc2.2.5-
i386/ blender/.
Ahora, para arrancar el programa, cada usuario puede realizar los comandos sucesivos cd /usr/local/ blender/ y ./blender en su terminal. Puede agregar el icono del fichero /usr/local/blender/blender a su escritorio, al panel o al menú, con lo que no necesitará arrancar el emulador del
Con ellos se muestran por pantalla, respectivamente: – – – –
vista desde arriba ([7]), vista de frente ([1]), vista de lado ([3]), vista de cámara ([0]).
Si estamos impacientes por ver el aspecto del cubo predeterminado después de renderizado, basta con presionar la tecla [F12] o elegir del menú la opción Render–>Render Current Frame (Renderizar–>Renderiza el cuadro corriente). En una ventana auxiliar vamos a ver el cubo iluminado sobre un fondo azul. Cuando ya nos deleitemos contemplando esta vista, podemos cerrar esta ventana.
www.lpmagazine.org
53
primeros pasos
Glosario de términos
Figura 3. Es más fácil introducir los cambios de esta manera
En la parte inferior de la ventana con el escenario, hay unas opciones que facilitan el trabajo con Blender. En la sección View (Vista) tenemos opciones que permiten manipular la vista. Junto con las opciones arriba indicadas, se encuentran las demás y los atajos de teclado que les corresponden. En la sección Select (Selecciona) se hallan las opciones con las que se marcan los objetos en el escenario. Vamos a familiarizarnos con este tema más adelante. La sección Object (Objeto) corresponde a las operaciones que podemos realizar sobre un objeto marcado. En vez de esta sección, se puede vizualizar la inscripción Mesh (Malla) cuando nos encontramos en el modo de edición. El listado de despliegue situado cerca de la inscripción Object (o Mesh) sirve para cambiar los modos del objeto y de edición (respectivamente: Object Mode y Edit Mode). Es más fácil usar la tecla [Tab]. En el listado de despliegue se encuentran también otros modos, pero por ahora no centraremos en ellos nuestra atención. El siguiente listado de despliegue permite elegir el modo de mostrar los objetos por la pantalla (desde el paralepípedo que los rodea, por la representación dividida en partes, hasta visualizar un objeto sombreado e inclusive texturizado). El último listado con opción de despliegue permite determinar el punto respecto al que se ejecutarán las diversas operaciones sobre los objetos (rotación, cambio del tamaño y otros).
54
Linux+ 2/2004
Las filas de cuadraditos colocados al lado (hay 20 filas), indican las capas accesibles en el escenario. Para luego evitar la confusión, podemos ordenar cada objeto en una capa distinta. Cuando presionamos el cuadradito, la capa ha de visualizarse (y también renderizarse). Si no lo presionamos, los objetos que se hallen en una capa determinada no se visualizarán ni en previsualización del escenario, ni durante el renderizado (esto incluye también las luces: si se encuentran en una capa oculta, no iluminarán los objetos del escenario). Podemos movernos entre las capas con ayuda de las teclas con números, o simplemente seleccionando el cuadradito adecuado con el ratón. Si queremos marcar más cuadraditos, podemos retener la tecla [Shift]. Hay que recordar que sólo la capa seleccionada como última está activa: si agregamos un objeto nuevo en el escenario, aparecerá en esta capa. La última parte de la ventana del programa contiene las teclas y los campos de edición que permiten ajustar los valores determinados, así como también arrancar varias funciones. En la siguiente parte del artículo vamos a conocer algunas de ellas.
Ajustes de la interfaz
Una sola vista puede resultar insuficiente en el trabajo con los objetos ubicados en tres dimensiones. Naturalmente, podemos cambiar las vistas todo el tiempo a fin de colocar los objetos con exactitud, pero la
El renderizado (ing. rendering) supone la representación de información de un documento electrónico, realizada de modo más propio para ese entorno. En el programa informático, el mecanismo responsable del renderizado se llama “motor de renderizado” (ing. rendering engine). El modo de renderizado se define en el mismo documento (los documentos de texto formateado, p.e. RTF), o en un fichero aparte, llamado “hoja de modos” (p.e. los ficheros CSS para documentos HTML). En gráficos 3D, el renderizado consiste en el proceso de creación de la imagen digital conforme a informaciones más abstractas, que incluyen: geometría, punto de disposición de la cámara, textura, ángulo de iluminación, etc.). El raytracing (rastreo de rayos) es actualmente el método de renderizado de gráficos 3D más popular. Consiste en el rastreo de un rayo de luz proyectado desde un punto determinado en relación con los objetos con los que tope en su camino, el cálculo de nivel de reflejo y de absorción de luz. Por ejemplo, podemos rastrear un rayo partiendo de la fuente de luz de una superficie no transparente. A causa del reflejo y de la absorción de una parte de él por la superficie, el rayo cambia de color y de dirección. El rayo reflejado da con una cámara virtual (situada de antemano en un punto determinado), y su color y su intensidad influyen directamente en la imagen renderizada. Pese a sus incuestionables cualidades, el raytracing tiene también fallos. Ante todo, no se las arregla con la iluminación dispersa y con el modelaje de fuentes de luz más complicadas, de resultas que se construyen bordes muy bruscos y poco realistas. Más información sobre este tema se puede encontrar, entre otros, en Wikipedia (http://www.wikipedia.org/).
mejor solución es visualizar las tres vistas del escenario a la vez. Podemos hacerlo de modo muy sencillo. Cuando indicamos con el cursor del ratón el borde inferior de la barra del menú, la flecha del cursor cambiará en una flecha doble puesta verticalmente. Si ahora retenemos el botón izquierdo del ratón y nos movemos abajo con él, reduciremos el tamaño de la ventana con el escenario, y encima del menú aparecerá una ventana con preferencias. Por ahora,
blender
Figura 4. Poco a poco empieza a parecerse a un tablero de la mesa
no vamos a hacerlo, en cambio, presionaremos el botón derecho del ratón y en el menú visualizado seleccionaremos la opción Split Area (Divide el área). Ponemos la línea vertical en el centro de la pantalla y aprobamos su posición pulsando el botón izquierdo del ratón. Si la línea no aparece, hay que observar qué área está activo. Lo verificamos observando si el menú resalta (si nos movemos demasiado lejos con el ratón, resalta el menú principal en vez del menú de la ventana con el escenario). Ahora disponemos de dos ventanas con el escenario. Volvemos a dividirlas. Esta vez indicamos con el cursor la línea que divide las áreas y volvemos a seleccionar Split Area en el menú que aparece después de presionar el botón derecho del ratón. Aprobamos la división del área por la mitad, indicando la ubicación de la línea horizontal de la división y presionando el botón izquierdo del ratón. Hacemos lo mismo con el otro campo. Ahora tenemos una interfaz en la que en la parte superior se encuentra el menú, y debajo de él hay cuatro ventanas con la vista del escenario. Abajo se hallan los botones normales y los de despliegue. Ya es hora de determinar lo que se visualizará en los campos respectivos de la vista del escenario. Indicamos con el ratón el campo superior a la izquierda y pulsamos el botón [7] en el teclado numérico. Ahora en este área se encuentra la vista desde arriba, lo que comprueba el sistema de coordenadas (ejes X e Y visibles). A continuación, indicamos el campo izquierdo en la parte inferior y pulsamos la tecla [1] en el teclado numérico. El resultado será una vista de frente (visibles ejes X y Z). Presionamos el botón [3] en el teclado numérico en la parte inferior derecha y tenemos una vista de lado (ejes Y y Z visibles). Nos queda el campo en la parte superior derecha, donde ubicamos la vista de la
cámara: en este campo pulsamos el botón [0] en el teclado numérico. En este momento debemos disponer de una intefraz como la representada en la Figura 3. Naturalmente, es un ejemplo: con estas instrucciones, podemos libremente modificar la interfaz. Paso a paso, cuando conozcamos las funcionalidades de Blender y aprendamos manejarlo, otros tipos de ventanas también despertarán nuestro interés (las elegimos en el menú accesible, después de oprimir el botón Displays Current Window Type que se halla a la izquierda del menú de cada uno de los campos). No obstante, por ahora vamos a usar los que ya fueron determinados. Seguramente hayamos notado que con esta división de ventanas, el área del trabajo se ha reducido de modo significativo. Sin embargo, si es necesario ampliar un campo seleccionado, cuando no precisamos de otros campos (p.ej. durante el posicionamiento preciso de objetos en una sola superficie), podemos ampliar el campo indicado con el ratón, reteniendo el botón [Ctrl] y pulsando el botón de la flecha hacia arriba. De modo parecido, restablecemos la disposición anterior presionando la tecla [Ctrl]; y pulsamos la flecha hacia abajo. Hay que recordar que en este caso empleamos las teclas del cursor y no el teclado numérico.
Las últimas modificaciones y almacenamiento de cambios
Nos queda eliminar el objeto ubicado de modo predeterminado en el escenario. Podríamos dejarlo y emplearlo, pero en nuestro escenario no necesitamos un cubo. Por esta razón, al principio lo marcamos. Con este objetivo hay que seleccionar el objeto con el cursor del ratón y a continuación pulsar el botón derecho del ratón. El objeto se debe seleccionar con el color violeta con un matiz claro. Ahora podemos pulsar la tecla [X] que sirve para eliminar el objeto. Aparecerá una ventana con solicitud de confirmación. Indicamos ERASE SELECTED (Borra lo seleccionado) y confirmamos con la tecla [Enter] o con el botón izquierdo del ratón. Si hemos cambiado de opinión, podemos salir de la ventana con el cursor del ratón hasta que desaparezca o presionar la tecla [Esc]. Dejamos aparte las fuentes de iluminación: vamos a nececitarlas durante la realización del escenario.
primeros pasos
Si nos gusta esta disposición de las ventanas, podemos definirla como una disposición predeterminada. Gracias a esta operación, cuando volvamos a arrancar Blender, no tendremos que configurar de nuevo la interfaz. Para hacerlo, elegimos la opción Save default settings (Guarda ajustes predefinidos) en el menú File (Fichero) o simplemente presionamos las teclas [Ctrl]+[U]. En caso de emplear un atajo de teclado, tendremos que confirmar nuestra selección indicando la ventana en la que aparecerá la posición SAVE USER DEFAULTS (Guarda ajustes predefinidos del usuario). Los ajustes predefinidos se guardan en el fichero .B.blend, ubicado en el directorio principal del usuario (hay que prestar atención en el punto al principio del nombre: es un fichero oculto). Si queremos restablecer los ajustes de fábrica, basta con eliminar este fichero (con el comando rm ~/.B.blend).
Construimos objetos
Ya es hora de empezar a crear nuestra mesita y nuestras fotos. Comenzamos con la mesita. Indicamos con el ratón el campo con proyección desde arriba (la ventana izquierda en la parte superior con la vista del escenario) y presionamos la tecla de espacio. Aparecerá un menú pequeño, en el que podemos movernos con el ratón (recordemos la regla principal de manejo de Blender: la mano izquierda puesta en el teclado y la mano derecha en el ratón).
Construimos el tablero de la mesita
Seleccionamos del menú Add–>Mesh–> Circle (Añadir–>Malla–>Círculo). Aparecerá la pregunta por el número de vértices (Vertices) que van a componer el círculo. En las ventanas de este tipo podemos reducir el número por medio del botón izquierdo del ratón, haciendo click al lado izquierdo del número, o aumentarlo presionando al lado derecho del número. Podemos también escribir el valor exacto: para hacerlo hay que retener la tecla [Shift] y hacer click con el botón izquierdo del ratón en el número. Confirmamos 32, es decir, el valor predefinido. El círculo creado será el borde superior de nuestra mesita. Hay que observar que nos hemos encontrado automáticamente en el modo de edición (Edit mode), cuya prueba es la inscripción en la barra del menú del campo. Por ahora nos queda-
www.lpmagazine.org
55
primeros pasos
Figura 5. Decididamente hay que reducir este marco
mos en este modo, puesto que queremos indicar el espesor del tablero de nuestra mesa. Con este objetivo movemos el cursor del ratón a la vista de frente (ventana inferior a la izquierda). Podemos acercar un poco la vista para trabajar con más comodidad (con la rueda del ratón o con la tecla [+] en el teclado numérico). Es importante que todos los vértices estén marcados (si destacan con color amarillo, están marcados). Para tener seguridad, podemos pulsar la tecla [A]: todos los vértices deben cambiar el color en violeta. Si volvemos a pulsar este botón, se marcarán todos los vértices. Ahora, recordando que la vista activa tiene que encontrarse por delante, pulsamos la tecla [E]. Aparece el pedido de confirmación si de verdad queremos emplear la función Extrude (Extruye). Lo confirmamos y a continuación nos movemos con el ratón abajo. Junto con el movimiento del ratón se mueve la copia del círculo unida con líneas (edges) con el original. Si durante el movimiento retenemos la tecla [Ctrl], el movimiento se realizará a saltos, cada unidad completa. Sucesivamente, la retención de la tecla [Shift] nos permite localizar el objeto con mucha precisión: el movimiento será muy lento. La limitación de movimiento en un solo eje es también muy útil. Con este objetivo, después de mover hacia una dirección seleccionada, pulsamos el botón medio del ratón. Se puede también presionar la
56
Linux+ 2/2004
tecla que corrseponde al eje seleccionado ([X], [Y] o [Z]: en este caso se trata del eje Z, o la tecla [Z]). Después de observar los valores en la barra debajo del campo, podemos colocar el segundo círculo (en esta vista parece una línea normal), en la posición Dx: 0.0, Dy: 0.0, Dz: 0.2 (valor Dz no debe ser exactamente el mismo, pero después de cambiar posición en un eje, los demás valores deben tener exactamente 0.0). Confirmamos la nueva posición con el botón izquierdo del ratón. Si ahora renderizamos nuestro dibujo (con tecla [F12]), vamos a observar que no es exactamente lo que queríamos, ya que tenemos un borde del tablero rellenado y no tenemos el centro. Además, el borde es muy anguloso.
Introducimos modificaciones
Al principio, nos ocupamos de alisar el borde. Con este objetivo marcamos todos los vértices (pulsamos la tecla [A] hasta que todos los vértices resalten en amarillo). Luego, pasamos a la sección Editing del campo de botones (basta con presionar la tecla [F9]). Encontramos el botón Set Smooth (se halla en la parte Link and Materials) y lo presionamos. Con ayuda de esta tecla se alisan los bordes entre las superficies marcadas. Podemos pulsar el botón [F12] y convencernos de que ahora el borde tiene un aspecto mucho mejor. Ahora, tenemos que construir dos superficies auxiliares (partes: superior e inferior del tablero). Eliminamos los puntos
marcados (con el botón [A]). Luego, vamos a marcar sólo los puntos que pertenecen al círculo superior. Con este objetivo, nos servimos de selección de bloque. Presionamos la tecla [B] y, a continuación, reteniendo el botón izquierdo del ratón, seleccionamos con un rectángulo todos los puntos que pertenezcan al círculo superior (seguimos trabajando en la vista de frente), luego, soltamos el botón izquierdo del ratón. Cuando los puntos seleccionados resalten en amarillo, presionamos las teclas [Shift]+[F]; como resultado, aparece la superficie entre los puntos seleccionados. Repetimos en el círculo inferior estas actividades (eliminación de selección, selección del bloque, creación de la superficie). Por fin, podemos salir del modo de edición (presionando la tecla [Tab]) y verificar el resultado obtenido (la tecla [F12]). Debería parecerse a lo que representa la Figura 4. Es un buen momento para guardar nuestro trabajo. No podemos olvidarnos de guardar sistemáticamente los adelantos de nuestro trabajo en el disco. Gracias a esto, si surgen problemas, no vamos a perder un tiempo precioso, así como también podremos de modo fácil volver al estado anterior a las modificaciones (simplemente cargar el fichero). Para guardar los cambios, pulsamos los botones [Ctrl]+[W ]. Guardamos nuestro trabajo por primera vez, por eso, el sistema nos va a preguntar por el nombre del fichero y su ubicación. Modificamos el nombre predefinido untitled.blend por un nombre altisonante, como galería.blend, luego pulsamos dos veces la tecla [Enter] (la primera vez para confirmar el nombre y la segunda para confirmar la decisión de grabación). Si luego queremos volver a guardar las modificaciones en el fichero y pulsamos las teclas [Ctrl]+[W ], el sistema sólo nos preguntará si estamos seguros de que queremos agregar información a un fichero ya existente: en este caso, basta con presionar el botón [Enter].
Marco de la foto
Ya es hora de crear el objeto más importante de nuestro escenario: el marco de la foto. Al principio, tenemos que asegurarnos de que Blender está en el modo Object Mode. Si seguimos en el modo de edición (Edit Mode), podemos salir de este modo con la tecla [Tab]. Ahora, estamos
primeros pasos
blender
en la vista de frente y movemos el cursor (círculo rojo y negro) en el lugar al lado de nuestra mesita. Para hacerlo, indicamos un lugar elegido con el cursor del ratón y presionamos el botón izquierdo del ratón. Puede ser, por ejemplo, el próximo cruce de las líneas más gruesas de la malla auxiliar, que se halle a la izquierda de la posición de hasta ahora del cursor. Para ser más precisos, podemos presionar las teclas [Shift]+[S] y elegir Cursor–>Grid con que se atrae (snap) el cursor a la malla auxiliar (grid). Podemos centrar la vista en el cursor con ayuda de la tecla [C]. No será muy fácil construir nuestro marco. Vamos a elaborar un marco redondo de madera. Al principio pasamos a la vista de frente y agregamos el círculo con 16 vértices (la tecla de espacio en blanco, Add–>Mesh–>Circle, cambiamos el valor Vertices en 16 y confirmamos). Ahora podemos ampiar un poco la imagen. Eliminamos la selección de vértices (tecla [A]) y seleccionamos 8 vértices, empezando con el vértice más asomado a la izquierda, y luego nos movemos en la dirección contraria al sentido de las agujas del reloj. No olvidéis: si queremos seleccionar (con el botón derecho del ratón) un grupo de vértices, tenemos que retener la tecla [Shift]. Eliminamos los vértices seleccionados pulsando la tecla [X] y pinchando en la posición Vertices (Vértices). Ahora seleccionamos todos los vértices (con el botón [A]) y los movemos a la derecha con 6 unidades. Realizamos el movimiento con la tecla [G] (Grab – Captura), y a continuación movemos los vértices con el ratón, al mismo tiempo reteniendo la tecla [Ctrl] (hasta encontrarse en la posición Dx: 6.0). Es momento de emplear una de las herramientas más útiles facilitadas por Blender. En la ventana con botones, pasamos a la sección Editing (con la tecla [F9]), después encontramos en ella la sección Mesh Tools. En el campo Degrees (Grados) escribimos el valor 360 (recuerdo que
Figura 6. Es hora de agregar los colores
Figura 7. El mundo adquiere colores
para escribir manualmente el valor, hay que presionar el botón izquierdo del ratón, reteniendo al mismo tiempo la tecla [Shift]), y el valor 16 – en el campo Steps (Pasos). Nos aseguramos de que hemos seleccionado todos los vértices, presionamos el botón Spin e indicamos la vista desde arriba (la ventana superior a la izquierda). Podemos observar que hemos obtenido un resultado bastante interesante: nuestros vértices fueron extruidos en el círculo y, en efecto, apareció una nueva superficie. Es precisamente nuestro marco. Nos quedan varias tareas a realizar. Durante la ejecución de la función Spin se doblaron los vértices: en el mismo lugar se encuentran los vértices originales y sus copias creadas tras la rotación de 360 grados. Por eso, la superficie de nuestro marco se interrumpe, de ahí que tengamos que eliminarlos. Seleccionamos todos los vértices (con la tecla [A]), y luego presionamos el botón Rem Double, que también se halla en la sección Mesh Tools. Tiene que vizualizarse el comunicado Removed: 8 que informa de que se han eliminado 8 vértices inútiles. Ya que hemos seleccionado todos los vértices, podemos presionar enseguida el botón Set Smooth para elaborar superficies más lisas.
arriba marcamos sólo los vértices ubicados en el círculo interior. Para hacerlo, lo óptimo es retener la tecla [Shift] e indicar los vértices adecuados con el botón derecho del ratón. A continuación presionamos las teclas [Shift]+[F], y en consecuencia disponemos de la superficie necesaria. Sin eliminar la selección de vértices interiores, en la sección Link and Materials debajo del botón 0 Mat: 0 se halla el botón New. Lo pulsamos dos veces (botón 0 Mat: 0 debe transformarse en 2 Mat: 2), y a continuación pulsamos el botón Assign que se encuentra más abajo. En consecuencia a la superficie destinada a la construcción de la foto se podrá asignar otro material que al resto del marco. Vamos a hablar más sobre este tema en el capítulo Añadimos materiales. Por ahora, eliminamos la selección y marcamos sólo la línea más inferior de vértices, visible en la vista de frente. Para realizarlo es óptima la selección del bloque (botón [B]). Estos vértices también los unimos con la superficie (teclas [Shift]+[F]). Resultado: nuestro marco tiene la pared trasera. En este momento nuestra pantalla debe tener un aspecto parecido al presentado en la Figura 5.
Elaboración de superficies
Nos queda sólo cambiar los tamaños del marco, porque en este momento es mucho más grande que la mesa. Podemos dejar el modo de edición (con la tecla [Tab]). Luego, eliminamos todas las selecciones (tecla [A])
Ya disponemos de un marco de la foto, pero hay que construir la superficie, sobre la que colocaremos la foto. Eliminamos la selección de vértices y en la vista desde
Ajuste de tamaños
www.lpmagazine.org
57
primeros pasos
Figura 8. De esta manera se ve mejor
e indicamos sólo nuestro marco con el botón derecho del ratón. Es importante que lo transformemos en óvalo, por eso pasamos a la vista desde arriba (esquina superior a la izquierda). La tecla [S] (Scale – Escalamiento) nos servirá para cambiar el tamaño. De modo igual como en el caso de cambio de ubicación, con ayuda del botón medio del ratón, podemos limitar las transformaciones a sólo un eje. Movemos el ratón a la izquierda y pulsamos el botón medio del ratón. Ahora retenemos la tecla [Ctrl] y hacemos nuestro marco más estrecho hasta que el valor del campo Sizex equivalga a 0.8 (los demás deben quedar en 1.0). Confirmamos el cambio con el botón izquierdo del ratón. Volvemos a pulsar la tecla [S] y reteniendo [Ctrl], reducimos el marco hasta que en todos los campos Size (Sizex, Sizey y Sizez) aparezca el valor 0.1. Confirmamos el cambio con el botón izquierdo del ratón.
Ubicación de objetos
Ahora, hay que poner nuestro marco en la mesa. Podemos usar el botón [G] para hacerlo, lo mejor en la vista desde arriba. Cuando el marco ya se encuentre en el centro de la mesa, pasamos a la vista de lado (ventana inferior a la derecha). Presionamos la tecla [R] (Rotate – rotación), y a continuación, con la tecla [Ctrl] retenida, rotamos el marco 65 grados en el sentido de las agujas del reloj. Tenemos que levantarlo arriba un poco (con la tecla [G]). Podemos colocar el escenario como nos guste por medio de los comandos de rotación, movimiento y escalamiento. Cuando ya estemos satisfechos con la disposición del escenario, podemos unir el marco con la mesa. Con este propósito, primero seleccionamos el marco, luego (reteniendo la tecla [Shift]) seleccionamos la mesa y presionamos las teclas [Ctrl]+[P]. En la ventana confirmamos la posición Make Parent (Pon como madre). A partir de este momento, la mesa se tratará como
58
Linux+ 2/2004
la "madre" del marco de la foto. Por eso, cuando intentemos mover la mesa, a la vez moveremos el marco. Podemos mover el marco nosotros mismos y ponerlo en la posición que nos guste. El ajuste adecuado de las relaciones entre objetos permite administrar con más facilidad los escenarios más complejos. La relación entre madre e hijo en la vista general del escenario se representa con la línea discontinua que les une. Después de finalizar el trabajo con el marco, recordemos que hay que guardar los resultados en el disco.
Añadimos materiales
Nuestra obra empieza a tomar forma real. No obstante, faltan colores, como lo vemos en la Figura 6. Intentemos, pues, adornar un poco nuestro escenario.
Mesilla
Al principio seleccionamos la mesita. A continuación, con la tecla [F5] relacionamos la ventana con la sección Shading. Aquí, en la sección Material pulsamos el botón Add New con el que se atribuye un material nuevo a nuestra mesa. No deberíamos asustarnos por el gran número de botones que aparecerán en este momento. Por ahora, nos interesan ante todo los botones de despliegue que sirven para ajustar el color (asignados con las letras R, G y B). Ajustamos respectivamente los valores 0.79, 0.45 y 0.33, con que obtenemos un marrón bonito. Para ajustar los valores, podemos servirnos de botones de despliegue o escribir los valores concretos con el teclado. Además, crearemos el efecto de que nuestro marco se reflejará en la superficie de la mesa. Para realizarlo, pasamos a la pestaña Mirror Transp y presionamos el botón Ray Mirror. Ahora podemos experimentar con el valor en el botón del despliegue RayMir. Del valor indicado con este botón depende el aspecto del reflejo: si indicamos un valor máximo podemos incluso elaborar un espejito. No necesitamos más que un reflejo pequeño del marco, pues indicamos el valor 0.18 en el botón de despliegue. En este instante y después de pulsar la tecla [F12] todavía no vamos a notar ningún efecto (con excepción del color ajustado). Primero, hay que obligar a Blenderow que durante el renderizado del escenario emplee raytracing (rastreo de rayos). Con este objetivo pasamos a la sección Scene
(con la tecla [F10]) en la ventana con botones y pulsamos el botón Ray. Ahora, ya después de renderizado de la imagen (tras presionar la tecla [F12]), debe visualizarse un reflejo casi imperceptible en el tablero de la mesita.
Marco
Vamos a pasar más tiempo construyendo el marco por el uso de dos materiales. El primer elemento es el marco de madera. El segundo material nos servirá para visualizar la foto. No olvidemos que en el capítulo Elaboración de superficies ya hemos añadido los materiales en sí mismos. Podemos verificar a qué superficies están atribuidos. Al principio, seleccionamos nuestro marco y pasamos al modo de edición (con la tecla [Tab]). Luego, en la ventana de botones pasamos a la sección Editing (con la tecla [F9]). Nos interesa el botón grande de la sección Link and Materials, debajo de la inscripción Material. En el botón se encuentra la inscripción 2 Mat: 1 o 2 Mat: 2. El primer número define la cantidad de materiales atribuidos a un objeto determinado. El segundo indica el índice del material seleccionado en el momento presente. Podemos cambiar el índice, si presionamos el botón izquierdo del ratón en la parte izquierda o en la parte derecha del botón. Indicamos 1 como valor del índice. Con ayuda de la tecla [A] prestamos atención a que ningún vértice esté seleccionado. Ahora, presionamos el botón Select que se encuentra debajo del botón grande con la inscripción 2 Mat: 1. Todos los vértices deberían iluminarse. Empleamos este índice para construir material de marco de madera. Ya podemos eliminar la selección (con la tecla [A] o Deselect). Ahora pasamos al índice en 2 y volvemos a pulsar el botón Select. Esta vez, deben iluminarse sólo los vértices que forman un círculo interior. Si ha salido algo mal cuando atribuimos los vértices a los índices respectivos, ahora podemos corregirlo. Para hacerlo, hay que seleccionar los vértices que deben pertenecer a un índice seleccionado en el momento presente y pulsar el botón Assign. A lo mejor vamos a usar un número mayor de índices en el caso de objetos más complejos. Los agregamos de modo parecido al de los que ya tenemos (con el uso del botón New), y luego les atribuimos los vértices respectivos. Cuando ya estemos seguros de que los vértices adecuados se han atribuido
blender
Figura 9. Las escenas adecuadamente iluminadas son el primer paso hacia el éxito
a sus respectivos índices, podemos dejar el modo de edición (la tecla [Tab]) y pasar a la sección Shading (la tecla [F5]). De nuevo, nos interesa ante todo la sección Material. La inscripción MA:Material define el nombre del material corriente. Si queremos, podemos sustituir el texto Material con este nombre por uno nuestro. Al lado del nombre hay un campo con la cifra 2, que determina el número de usuarios que emplean un material dado. En nuestro caso hay dos, porque este mismo material se atribuye a ambos índices que hemos definido en nuestro objeto. Es importante que cada índice emplee otro material, por tanto, presionamos el botón izquierdo del ratón en esta cifra. Confirmamos, cuando aparece la ventana con la pregunta Single user. El nombre cambió en MA:Material.002 y podemos comprobar si al otro índice sigue atribuido el material con el nombre MA:Material (el material con el nombre MA:Material.001 hemos atribuido a la mesa). Podemos cambiar los índices con el uso del campo con el valor 2 Mat 1 (o 2 Mat 2), que se encuentra al lado del botón ME. Primero, tenemos que comprobar si todo funciona y si no hemos cometido un error durante la atribución de vértices a los índices. Elegimos el índice 1 (el valor del campo debe ser de 2 Mat 1). A continuación, ajustamos el color marrón del marco (los botones de despliegue de los respectivos colores en las posiciones: R: 0.85, G: 0.35, B:0.30). Podemos quitar un poco de brillo del material: para este fin sirven los botones de despliegue Ref (Reflection), Spec (Specularity) y Hard (Hardness of specularity), accesibles en la pestaña Shaders. Según el resultado que deseamos obtener, podemos experimentar con los ajustes. En nuestro caso, dejamos aparte el botón de despliegue Ref, en cambio, Spec ponemos en 0.30,
y Hard en 70, de manera que nuestro cuadro no brille tanto. Ahora podemos elegir el índice 2 y poner cualquier color del campo en el que se situará la foto. Por ejemplo, podemos escoger un verde intenso (botón de despliegue G en la posición 1.0, y botones de despliegue R y B en la posición 0.0). Luego, este color será tapado por la foto, pero vale la pena ver cuántos materiales podemos tener en un objeto. En la Figura 7 podemos observar el resultado de nuestro trabajo. No olvidemos guardar los resultados de nuestro trabajo en el disco.
primeros pasos
Ahora el aspecto del escenario es mejor, pero sigue siendo muy poco realista. Por eso, procuraremos hacer que la mesilla y el cuadro parezcan de verdad objetos construidos de madera. Para hacerlo, podemos poner texturas que cambiarán el aspecto del objeto.
Pasamos a la pestaña Map Input. Aquí nos importan sobre todo los botones Flat, Cube, Tube y Sphe. Son responsables del modo en que se pone la textura en cada objeto. En relación con el objeto que texturicemos, se utilizará otro método: Flat para superficies, Cube para paralepípedo, Tube para cilindros y para conos rectos y Sphe para esferas. En el caso de la mesilla, elegimos Tube. Son interesantes los grupos de campos ofs (ofsX, ofsY y ofsZ) y size (sizeX, sizeY y sizeZ). Con ellos se puede cambiar con más precisión la posición de la textura en el objeto. Los campos ofs sirven para modificar la posición (desplazamiento) de textura, mientras que los campos size permiten escalar la textura en relación con los ejes respectivos. Los campos size ahora serán útiles, ya que con ellos podremos reducir los tamaños de la línea en el material de la madera. Con este objetivo, indicamos los siguientes valores de los campos: sizeX: 4.50, sizeY: 2.0 y sizeZ: 1.0.
Mesilla de madera
Marco
Ponemos texturas
Empezamos, como siempre, con la mesilla. La seleccionamos y luego presionamos el botón [F6]. Resultado: en la ventana con botones se abrirá la sección Texture buttons. Aquí, en la sección Texture está el botón Add New (Añade una nueva) y ocho canales libres para las texturas. Cada objeto puede usar de cero a ocho canales. ¿Por qué tantos? Las texturas pueden servir no sólo para visualizar un modelo en el objeto, sino también como mapa de convexidades, de reflejos o de transparencias. Por ahora, creamos sólo una textura para la mesilla. Presionamos el botón Add New. En el listado de despliegue que ha aparecido debajo de la inscripción Texture Type (Tipo de textura), seleccionamos Wood (Madera). Ahora, marcamos BandNoise en la sección Wood. En la sección Preview podremos observar todas las modificaciones. Os recomiendo disminuir un poco el valor del campo Turbulence, p.e. hasta 3.0. Luego, pasamos a la sección Material buttons (seleccionando con el ratón el icono con una bola roja) y elegimos la pestaña Map To. Aquí podemos librarnos del molesto color violeta. En vez de violeta, elegimos un tono un poco distinto al marrón que ya hemos atribuido al material (R: 0.6, G: 0.4, B: 0.3).
Ahora podemos ocuparnos del marco. Lo seleccionamos con el botón derecho del ratón y cambiamos el índice del material en 1 (como recordamos, el índice 1 corresponde al marco de madera, y el índice 2 corresponde al sitio para la foto). Realizamos los mismos pasos que en el caso del tablero de la mesa. Pasamos a la sección Texture buttons (con la tecla [F6]) y pulsamos Add New. Luego indicamos Wood (Madera) como el tipo de la textura. Esta vez marcamos Bands. Pasamos a la sección Material buttons y en la pestaña Map To cambiamos el color a un color más adecuado (p.e. R: 0.87, G: 0.46 y B: 0.45). Podríamos terminar con esto, pero podemos perfeccionar un poco el marco. Volvemos a la sección Texture buttons (con la tecla [F6]) e indicamos el campo del segundo canal de la textura (campo segundo de los ocho campos, entre los cuales el primero actualmente tiene el valor Tex). Luego, con la tecla del lado izquierdo de Add New, en el listado de despliegue, seleccionamos la textura con el nombre Tex.001. Es la misma textura que tenemos en el primer canal. Esta vez nos va a servir como mapa de convexidades. Volvemos a pasar a la sección Material buttons, y en la pestaña Map To eliminamos la selección del botón Col, y presionamos el botón Nor. El primero
www.lpmagazine.org
59
primeros pasos
de ellos define si la textura influye en el color del material. En cambio, el segundo define si la textura ejerce influencia sobre la longitud de las superficies normales renderizadas. Cuando lo marcamos, cuanto más oscura sea la superficie de la textura, más aumentará la textura normal de la superficie, o lo que es lo mismo, aparecerán las convexidades. Si queremos, podemos escalar las dos texturas, por ejemplo introduciendo (en la pestaña Map Input) en los campos sizeX y sizeY el valor 3.0, y no modificando el campo sizeZ. De todas formas, es importante que se escalen ambas texturas, porque si no, aparecerán unas diferencias raras entre la textura real y el mapa de convexidades. Podemos pasar entre canales de texturas por medio de la pestaña Texture.
Foto
Nos queda colocar la foto en el marco. Utilicé la foto de mi gatito, pero podemos emplear un dibujo o una foto cualquiera. Seleccionamos el cuadro con el botón derecho del ratón, y cambiamos el índice del material en 2 (en la sección Material buttons). Pasamos a la sección Texture buttons (con la tecla [F6]) y agregamos una nueva textura (con la tecla Add New). Esta vez elegimos Image como tipo de textura. Presionamos la tecla Load Image (Carga imagen) y elegimos el fichero con gráficos que nos interese (Blender soporta los formatos más populares, inclusive JPG y PNG). Si después de pulsar la tecla [F12] en el dibujo renderizado en el sitio donde debe estar la foto, vemos unas líneas paralelas de varios colores, probablemente hayamos indicado incorrectamente el modo de mapeamiento. En este caso, pasaremos a la sección Material buttons y en la pestaña Map input presionaremos el botón Cube. Así, nos quedará solamente mover y escalar del modo adecuado las fotos; con este objetivo podemos emplear el grupo de botones ya descrito, ofs y size.
Ponemos la cámara
Durante los renderizados de prueba que hemos realizado hasta ahora, nos ha podido molestar que la cámara se hallara tan lejos de la mesita y de la foto. Ahora es el momento de cambiarlo y ver nuestra obra desde cerca. Después de seleccionar
60
Linux+ 2/2004
Figura 10. Ya todo va bien
la cámara con el botón derecho, podemos moverla análogamente (es suficiente presionar la tecla [G]) y elegir el lugar final con ayuda del ratón. Observaremos que después de cada movimiento de cámara, hay que dirigirla de nuevo hacia la mesita (haciendo rotaciones en los ejes respectivos). Podemos facilitarnos el trabajo de modo significante indicando en qué objeto debe enfocarse la cámara. Para eso, al principio, seleccionaremos la cámara y luego el objeto elegido (en nuestro caso, el cuadro de la foto). Para seleccionar el cuadro, hay que retener la tecla [Shift] para seleccionar los dos objetos (el cuadro se debe seleccionar como el último, puesto que ha de ser un objeto activo). Presionamos las teclas [Ctrl]+[T] (Make Track) y elegimos Constraint (Circundación) en la ventana visualizada. Ahora podemos seleccionar únicamente la cámara y moverla libremente; Blender cuidará de que el marco con la foto siempre se vea en el fotograma. Ubicamos la cámara de modo que la mesilla con la foto ocupe casi todo el cuadro, luego verificaremos el aspecto del escenario renderizado (la tecla [F12]). El aspecto de la pantalla debe parecerse al de la Figura 8.
Iluminamos la oscuridad
La iluminación correcta del escenario es muy importante. Hay que ver que en nuestro escenario usamos sólo una fuente de luz. Además, nuestro marco ni siquiera
proyecta sombra sobre la mesilla. En el mundo real, en la mayoría de los casos, cada objeto está iluminado desde varios lados. Es así porque la luz se refleja y dispersa. Entonces, ¿qué hay que hacer para que nuestro escenario adquiera un aspecto más realista? Pasemos a la ventana con la vista de frente (ventana izquierda inferior): seleccionamos la lámpara existente con el botón derecho del ratón (si la lámpara no es visible, tendremos que reducir la ampliación por medio de la rueda del ratón). En la ventana con botones aparecerá automáticamente la sección relativa a las propiedades de las lámparas. Aquí podemos elegir entre varias fuentes de luz (botones entre Lamp hasta Hemi). Presionamos el botón Hemi, con el que obtenemos una luz más suave, y a la vez iluminamos mejor el escenario. La ubicación de la luz tipo Hemi no tiene importancia: cuenta sólo la dirección y el giro representado como una línea discontinua desde un punto que indica la fuente de luz. Ahora agregamos la segunda fuente de luz, esta vez la luz que da sombra. Al principio, tenemos que determinar su ubicación: cerca del lado izquierdo de la cámara. En la ventana de la vista desde arriba contamos 1 campo cuadrado a la izquierda y 6 campos cuadrados abajo en relación con la mesita; luego presionamos el botón izquierdo del ratón (con esto se moverá el cursor).
blender
Tenemos que prestar atención a que el cursor se halle 3 campos cuadrados por encima de la mesa en la ventana de la vista de frente (sin cambiar la posición en el eje X). Para ser más precisos, podemos arrastrar el cursor a la malla ([Shift]+[S], Cursor–>Grid). Presionamos la tecla de espacio blanco y elegimos Add–>Lamp. Escogemos el tipo Spot, que corresponde más o menos a la luz de la linterna eléctrica o de la lámpara con pantalla. Ahora podemos experimentar y lanzar la luz de la lámpara (representada como un cono con el vértice en la fuente de luz) hacia la mesa. No obstante, si no queremos fatigarnos rotando (la tecla [R]) la lámpara en unas vistas particulares, podemos hacer lo mismo que hicimos con la cámara. Elegimos la lámpara con el botón derecho del ratón, y a continuación (reteniendo la tecla [Shift]), seleccionamos también el marco de la foto. A continuación, pulsamos las teclas [Ctrl]+[T] y marcamos Constraint. Para nosotros lo importante es que sólo se proyecte la sombra, por eso en la sección Shadow and Spot marcamos OnlyShadow (Sólo la sombra). El resultado debe ser más o menos como el presentado en la Figura 9.
Renderizamos la imagen
Cuando terminemos el trabajo, a lo mejor querremos jactarnos con nuestro escenario. Cuando adquiramos práctica, podremos enviar nuestros trabajos a una galería en Internet. Necesitaremos un dibujo de mejor calidad que el que tenemos después de pulsar la tecla [F12]. Pasamos a la sección Scene (la tecla [F10]). Al principio, nos interesa la sección Format. Aquí disponemos de los campos SizeX y SizeY, que definen la resolución del dibujo final. Además, abajo podemos elegir el formato del almacenamiento de datos. Está predefinido como JPEG, no obstante, asimismo se puede guardar en el formato PNG y en un par de otros formatos. Si guardáramos la animación, podríamos usar el formato AVI. A la derecha tenemos una serie de botones, que permiten emplear unos ajustes predefinidos. Yo, personalmente, elijo SizeX: 800, SizeY: 600 y el formato de fichero PNG. Al usuario de Blender le puede sorprender una cosa. Si el tamaño del dibujo está predefinido como 640x480
primeros pasos
píxeles, ¿por qué el dibujo obtenido después de pulsar [F12] es tan pequeño? La respuesta se halla bajo el botón 50% en la sección Render. Gracias a este grupo de botones, podemos con facilidad reducir la calidad del dibujo renderizado (es decir, acelerar el proceso de renderizado), sin cambiar los valores en la sección Format. Ahora presionamos el botón 100% para obtener el resultado final. Además, vale la pena presionar el botón OSA, con el que la imagen durante el renderizado se alisará.
Almacenamiento de la imagen en el disco
Las últimas modificaciones
Con esto terminamos esta corta descripción de las funcionalidades básicas de Blender. Ya somos capaces de crear objetos sencillos, moverlos y cambiar sus tamaños. Sabemos cómo disponer la iluminación del escenario, de ahí que podamos observar el aspecto de los materiales y de las texturas puestas a los objetos. Hemos conocido los atajos básicos del teclado y las funciones soportadas por el ratón. Os recomiendo que aprovechéis otras posibilidades de Blender, experimentando por vuestra propia cuenta y creando escenarios cada vez más desarrollados. Podemos agregar una lamparilla ubicada en la mesa al escenario descrito en el artículo, y luego colocar todos los objetos con otro par de fotos en la pared. El paso siguiente es la realización de una animación en la que la cámara pueda moverse entre las fotos. Podemos incluso servirnos de la función de dirección con el movimiento de la cámara ayudándonos con el teclado.
Ahora, ya podemos pulsar el botón [F12] para obtener un dibujo bonito y grande. Al mismo tiempo, es una buena oportunidad de captar todos los defectos. Por ejemplo, en el borde del tablero de nuestra mesa se notan unas extrañas manchas más oscuras. Han aparecido porque los vértices de algunas superficies se dirigen hacia un lado incorrecto. Para resolver este problema, seleccionamos la mesa con el botón derecho del ratón y pasamos al modo de edición (la tecla [Tab]). A continuación, seleccionamos todos los vértices (la tecla [A]). Si queremos observar la posición de los normales, podemos pasar a la sección Editing (la tecla [F9]), y en la sección Mesh Tools 1 marcar Draw Normals (Dibuja los normales). Después de acercar la mesilla en la vista desde arriba, veremos que algunos se dirigen hacia el interior, y los otros hacia el exterior. Los ponemos en orden, presionando las teclas [Ctrl]+[N] (podemos también elegir en el menú Mesh–>Normals–>Recalculate Outside). Después de dejar el modo de edición ([Tab]) y pulsar [F12], nos damos cuenta de que el borde del tablero tiene por fin un aspecto ordenado (como en la Figura 10). Así podríamos acabar, pero en la Figura 10 se nota un malo encuadre: los objetos se hallan abajo, y encima de ellos hay un espacio demasiado grande y azul. ¿Podemos hacer algo, si hemos obligado a que la cámara se enfoque en el marco de la foto? Sí. Podemos obligarla quew se enfoque a la vez en el marco y en la mesita. Es suficiente agregar la siguiente limitación. Por eso, seleccionamos la cámara y luego la mesilla, presionamos las teclas [Ctrl]+[T] y elegimos Constraint. Ahora, el resultado debería dejarnos completamente satisfechos.
Cuando ya hayamos conseguido contentarnos con la imagen renderizada, por fin podremos guardarla en el disco. Para hacerlo, pulsmos la tecla [F3] (o seleccionamos en el menú File–>Save Image). En la ventana abierta escribimos el nombre del fichero y presionamos dos veces la tecla [Enter]. Hay que recordar que Blender no añade automáticamente la extensión del nombre, por eso, tenemos que ponerla nosotros mismos.
Fin
En Internet: • •
•
•
•
•
Página principal de Blender: http://www.blender.org/ Sitio web con una galería de obras de usuarios de Blender y muchos tutoriales: http://www.blender3d.org/ Sitio web con tutoriales útiles relativos a Blender: http://www.elysiun.com/ Texturas de mapas de planetas: http://gw.marketingden.com/planets/ planets.html Librería con materiales preparados para Blender: http://www.geocities.com/ pollythesheep/matlib_index.html Sitio web del programa Yafray: http://www.coala.uniovi.es/~jandro/ noname/
www.lpmagazine.org
61
equipo
ACPI – gestión de energía en Linux Piotr Wolny
L
DVD
Después de arrancar la distribución Linux+ Live DVD, podremos comprobar cómo funcionan en el programa los elementos descritos.
En el DVD
En el DVD se encuentran los ficheros fuente de núcleos más recientes de Linux, así como también parches para el núcleo que permiten ahorrar la energía.
62
Linux+ 2/2004
inux casi desde sus primeras versiones ha apoyado las tecnologías de gestión de energía (ing. power management). El término "gestión de energía" nos puede confundir un poco, porque la tecnología ACPI, desarrollada hoy en día, tiene un significado mucho más amplio que sólo el ahorro de energía eléctrica: permite acceder desde el nivel del sistema operativo a la configuración y permite verificar el estado de algunos dispositivos del ordenador. En particular, hace posible verificar el estado de la alimentación (baterías o red), el nivel de carga de las baterías o la temperatura del procesador. Asimismo, se puede disminuir la cantidad de la energía gastada por medio del estado de "suspensión" e incluso de hibernación, es decir, apagarlo mediante la grabación de la memoría entera en el disco para poder volver a arrancarlo en el mismo estado. La suspención del ordenador es útil no sólo en las máquinas alimentadas con baterías. En el PC de escritorio es un buen método para acelerar el arranque del sistema, por ejemplo, cargando la imagen de memoria desde el disco, que dura mucho menos tiempo que el proceso entero del arranque. El modo S4 se puede emplear incluso en los servidores o en los enrutadores (routers). Gracias a este modo, podemos enseguida apagar el ordenador desde la red, por ejemplo, para introducir un nuevo disco y arrancarlo exactamente en el mismo estado en el que estaba antes de cerrarlo. Si lo hacemos rápido, podemos incluso no desconectar la conexión TCP/IP. En los ordenadores portátiles es muy útil la posibilidad de modificar la frecuen-
cia de trabajo del procesador y controlar el estado de las baterías y el modo de alimentación. Desde el punto de vista de control, se pueden configurar varios modos de proceder, p.e. en el caso de pasar al modo de alimentación con baterías o de bajo nivel de carga de baterías. En este artículo voy a tratar varios aspectos del modo de trabajo del procesador (su estado de suspensión y el cambio de frecuencia del reloj), así como de nuevo mecanismo: laptop mode.
La suspensión del ordenador en la práctica
Si disponemos de Linux con el nuevo núcleo de la versión 2.6.x, podemos elegir entre tres implementaciones de la suspensión del ordenador. En la sección Power management options–>Software Suspend (Experimental) se halla una solución más antigua de configuración del núcleo, llamada Swsusp. Tenemos que marcarla junto con las opciones ACPI, que se encuentran más abajo. Además, no debemos marcar APM, pero en cambio, es imprescindible el soporte en el núcleo de la partición de sustitución. Asimismo, en la sección Power management options, con el nombre Suspend-to-disk support vamos a encontrar
Figura 1. Página web del proyecto ACPI para Linux
acpi
Hibernación y suspensión
En teoría, en la especificación de ACP hay hasta cinco modos de suspender el ordenador: •
•
•
•
•
S1 – equivalente de standby de MS Windows. En este modo el procesador sigue estando alimentado, pero no realiza ninguna instrucción. S2 – actualmente no se emplea (en teoría se parece a S3, pero algunos equipos están alimentados). S3 – Suspend to RAM: la alimentación de la memoria se limita sólo a autoreconstrucción, con lo que se mantiene su contenido. Técnicamente es el modo más difícil de realizar, porque requiere que colaboren: el procesador, el chipset, dispositivos y sus drivers y el sistema operativo. S4 – Suspend to Disk: el más interesante entre estos modos, que a la vez funciona de manera más estable. En este modo, el contenido de la memoria se guarda en el disco (normalmente en la partición swap) y se puede apagar completamente el ordenador o emplear para otros objetivos (p.e. podemos arrancar otro sistema operativo con la condición de que no emplee la misma partición swap). S5 – Soft Off: se apaga el sistema, pero se mantiene la alimentación de algunos dispositivos del sistema que puedan ocasionar que el sistema "se despierte", p.e. tarjeta de sistema o controlador USB.
una versión más nueva, denominada Pmdisk. Difiere de la versión antigua en que, entre otros, no hay que marcar las opciones ACPI: funciona independientemente del sistema. Lo más probable es que se mantenga sólo una de estas soluciones que en las versiones siguientes del núcleo: la mejor según la opinión de developers y de usuarios. No vendrá mal marcar las dos y verificar la solución que funcione mejor en nuestro equipo. En la dirección http://swsusp.sf.net/ podemos encontrar una solución más desarrollada, pero elaborada independientemente del núcleo, denominada Swsusp2. Permite usar sólo el modo de Suspend to disk, y su instalación es mucho más difícil, por eso, a continuación vamos a analizarla.
Swsusp y Pmdisk
Para realizar tests iniciales con el modo de suspensión del ordenador, tenemos que disponer del nuevo núcleo de la serie 2.6.x, que compilamos con el soporte para Software Suspend, Suspend-to-disk support y con ACPI. Todas las opciones relativas a ACPI las compilamos como fijas, no como módulos. No está mal marcarlas todas, aunque en el caso de PCs de escritorio no vamos a necesitar la mayoría de ellas. Siempre merece la pena marcar por lo menos Button. Cuando configuramos el núcleo, no marcamos las opciones relativas a APM, puesto que estas dos soluciones no funcionan a la vez. Junto a un núcleo compilado e instalado, necesitamos también una partición de intercambio (swap) tan grande que quepa en ella toda la memoría empleada por el sistema operativo y las aplicaciones. Por lo general, se supone que para este objetivo es suficiente una partición de intercambio con un tamaño del 130% de la memoría física. No obstante, si arrancamos muchas aplicaciones a la vez, este valor puede resultar insuficiente. Después de arrancar el núcleo nuevo, verificamos si todo funciona bien: en nuestro sistema debe hallarse el directorio /proc/ acpi/ y el fichero /sys/power/state. Si no tenemos /proc/acpi/, verificamos si se ha activado la ACPI en la BIOS del ordenador. Si, durante el arranque, el núcleo no muestra ninguna información sobre ACPI (dmesg | grep -i acpi no muestra ninguna línea), se supone que nuestro núcleo no ha sido compilado con el soporte de ACPI. Podemos verificar también si en lilo.conf o en grub.conf se encuentra la línea acpi=off o acpi=ht; si está allí, la eliminamos. En vez de ella, podemos escribir append="acpi=on apm =off" (no es necesario, si hemos configurado correctamente el núcleo) .
equipo
que hacerlo añadiendo una línea adecuada en la configuración de LILO ( /etc/lilo.conf ), p.e. append="resume =/ dev/hda9" debajo de la línea que indica la ubicación del núcleo de nuestro Linux. Si en la sección lilo.conf, que describe el núcleo de Linux, ya se ha encontrado la línea append, agregamos entre paréntesis resume =... las opciones ya existentes. Si empleamos GRUB ( /etc/grub.conf ), las opciones que pasan al núcleo, se encuentran en la misma línea donde se halla el nombre del fichero con el núcleo. Entonces, también tenemos que añadir una opción adecuada, p.e. resume =/dev/hda9. Naturalmente, tenemos que acordarnos de sustituir el hda9 de ejemplo e indicar correctamente la partición swap. Después de agregar la opción y ejecutar el comando lilo, tenemos que reiniciar Linux. Ya es hora de realizar la prueba decisiva (está bien guardar todos los datos importantes): realizamos un comando mágico echo 4 >/proc/acpi/sleep. De este modo hemos puesto el ordenador al estado de suspensión, y concretamente al cuarto modo de hibernación. Al principio, aún durante entre diez y varias docenas de segundos se nos muestran los mensajes de que se apagan los dispositivos adecuados. Si hay problemas con un dispositivo, ahora podemos leer la información sobre ese problema. Al final de este proceso el ordenador se apaga. Si volvemos a arrancarlo, hay que esperar unos segundos a que se arranque normalmente la BIOS, y también LILO/GRUB, donde después de elegir Linux antes hibernado, aún tenemos que esperar un par de segundos para arancar el núcleo del sistema. No obstante, el núcleo, en vez de arrancar como siempre, ejecuta Inita, empieza a recuperar el modo antes cargado
Swsusp
Al principio, vamos a testear el método tradicional de suspención, es decir, Swsusp. Está bien empezar las pruebas con un modo que funcione más estable, o sea, con Suspend to disk. Al principio, tenemos que comunicar al núcleo dónde se halla la partición del intercambio (swap), en la que se cargará y guardará la memoria en el estado de suspensión. Hay
Figura 2. Página web del proyecto Swsusp2, que suministra los parches para núcleos de Linux con la funcionalidad de hibernación del ordenador
www.lpmagazine.org
63
equipo
Fuentes del núcleo
El sitio más importante de distribución de fuentes de Linux es www.kernel.org. Antes de decidirnos a bajar cualquier cosa desde este sitio, hay que encontrar un servidor espejo (ing. mirror) situado lo más cerca posible de nosotros. De este modo nos facilitamos el trabajo (reducimos el tiempo de descarga de un fichero de varias decenas de bytes) y ayudamos a los administradores del servidor principal para no sobrecargarlo. En la página www.kernel.org hay información sobre la última versión disponible del núcleo. Eso es precisamente: ¿qué núcleo elegir? En www.kernel.org se encuentran los siguientes: los núcleos de la serie 2.6.x: designados como los últimos núcleos
Además, en la página www.kernel.org los usuarios más avanzados pueden encontrar varios parches (ing. patches) para las fuentes del núcleo. Esto incluye las versiones del núcleo pre, que después de un periodo de pruebas y de correcciones se convierten en las versiones sucesivas estables, las versiones snapshot, con registro del trabajo de developers del núcleo actualizado cada día, y los parches -mm, esto es, los parches de Andrew Morton, con un código más reciente y menos testeado. A lo mejor dentro de poco en www.kernel. org encontraremos también los núcleos de la siguiente serie "experimental", es decir, la 2.7.x.
estables, pero los seleccionamos sólo cuando nuestra distribución originalmente se ha suministrado con el núcleo 2.6.x (p.e. Mandrake 10 y los más nuevos, Fedora Core 2) o al menos se ha adaptado al trabajo con los núcleos de esta serie, como p.e. Mandrake 9. Si realmente es imprescindible descargar el núcleo desde la página www.kernel.org, tenemos que hacer click en el enclace con la letra "F". los núcleos de la serie 2.4.x: son los núcleos más estables con posibilidades un poco reducidas que sirven para construir la mayoría de distribuciones actuales, p.e. Aurox Linux 9.4. De igual forma, para descargar las fuentes, tenemos que presionar en “F”. los núcleos de la serie 2.2.x y de la serie 2.0.x: las versiones más antiguas de núcleos, demasiado anticuados para emplearlos en el equipo de hoy; pueden resultar útiles sólo para usos "especiales", tales como
Si nos decidimos a compilar el núcleo por primera vez, es mejor no entrar en www.kernel.org, sino usar las fuentes de nuestra distribución. Normalmente, las fuentes se modifican un poco respecto a las fuentes originales, con más frecuencia con unos parches nuevos, que todavía "oficialmente" no se han aceptado. Contienen también el fichero de configuración listo, adaptado a nuestra distribución. Es una selección óptima para un usuario principiante. Las fuentes de núcleo se hallan entre los paquetes binarios (!) de nuestra distribución. Es un paquete con el nombre kernel source, p.e. kernel-source-2.4.2020.9.i386.rpm. Si en nuestra distribución hay varias versiones de fuentes del núcleo, seleccionamos la versión que usamos actualmente: podemos verificarlo con el comando cat /proc/version. Instalamos el paquete seleccionado como cualquier otro paquete, p.e. con el comando rpm -i [nombre fichero]. Hay ventajas e inconvenientes en la selección de fuentes suministrados por
y al cabo de 15 minutos el sistema ya se restablece a su estado anterior. De hecho, no hay que guardar los datos en el editor del texto: todo vuelve al estado exactamente igual que antes de hibernar el ordenador. De este modo, el arranque de Linux, junto con KDE, OpenOffice.org y varios programas más tarda cosa de 30 segundos. A veces ocurre que el ordenador no va al estado de suspensión (entonces podemos intentar emplear otras solu-
ciones, que describiré a continuación) o no quiere “despertarse”. En el segundo caso, tenemos que arrancar el núcleo con el parámetro noresume. Podemos hacerlo, por ejemplo escribiendo linux noresume tras la sugerencia por parte de LILO (si LILO arranca junto con el menú gráfico, primero tenemos que presionar la tecla [Tab]). Podemos testear de la misma forma los demás estados de hibernación. El
•
•
•
64
la construcción de un enrutador simple.
Linux+ 2/2004
nuestra distribución. El primer inconveniente consiste en el hecho de que, por lo común, en www.kernel.org hay una versión de fuentes más nueva que la de nuestra distribución. Es importante sólo en el caso de que en la nueva versión haya modificaciones esenciales para nosotros. El segundo inconveniente puede manifestarse cuando un software requiere que se apliquen los parches a las fuentes de núcleos y se compilen de nuevo (p.e. lm_sensors). Por desgracia, los autores de varios programas que requieren aplicación de parches en el núcleo, por lo común, proyectan que empleemos núcleos "originales" de www.kernel.org y sus parches no se van a aplicar o no van a funcionar en los núcleos modificados por autores de varias distribuciones. No obstante, si no planeamos en el futuro aplicar parches en nuestro núcleo, esto no nos va a molestar. Después de instalar los paquetes con las fuentes del núcleo, en el sistema se encontrará el directorio /usr/src/linux, con varias docenas (en el caso de núcleos 2.4.x) e incluso hasta casi doscientos (núcleos 2.6.x) megabytes del código. Si bajamos el fichero con el núcleo por separado, debemos colocarlo en el directorio /usr/src/, descomprimirlo, p.e. con el comando tar jxfvp linux-2.4.26.tar.bz2, y luego cerrar el enlace simbólico de un directorio recién construido a /usr/src/linux, p.e. ln -s linux-2.4.26 linux. Podemos colocar las fuentes del núcleo en otro directorio, pero esto puede provocar problemas en un futuro, cuando compilemos algunos programas, cuyas fuentes predefinidas se hallen precisamente en /usr/src/ linux.
comando cat /proc/acpi/sleep visualizará los modos soportados por nuestro sistema, p.e. S0 S1 S4 S5. Podemos ejecutar el comando echo 1 >/proc/acpi/sleep para pasar al modo S1, etc.
Pmdisk
Sin tomar en cuenta si las pruebas con Swsusp han tenido éxito o no, vamos a probar un método más nuevo de suspensión, es decir, Pmdisk. Funciona del
acpi
Listado 1: Script de ejemplo que suspende el ordenador #!/bin/sh rmmod usblp usb-storage hid; rmmod ohci-hcd; rmmod usbcore; # Suspend to RAM echo -n "mem" > /sys/power/state; modprobe usbcore; modprobe ohci-hcd; modprobe usblp usb-storage hid; exit 0;
mismo modo, pero los comandos ejecutados son distintos. En vez de resume = /dev/hda9, durante la configuración de LILO/GRUB tenemos que escribir pmdisk=/dev/hda9. No olvidemos reiniciar el ordenador. Después de realizar el comando cat /sys/power/state, se nos mostrará un listado con los modos de hibernación soportados: son, p.e. standby mem disk, que equivalen respectivamente a S1, S3 y S4 (si los ajustes de la BIOS del ordenador no modifican esta norma). El comando mágico, con el que se suspende nuestro ordenador, puede ser el siguiente, p.e.: echo -n disk > /sys/power/state. Hay que fijarse en la opción -n del comando echo: sin esta opción seguramente no funcionará. De modo parecido realizamos las pruebas con los modos restantes. En caso de problemas con el arranque del ordenador, en vez de linux noresume, después de la sugerencia por parte de LILO, empleamos linux pmdisk= off. Desgraciadamente, algunos modos no funcionan bien en cada equipo. En mi ordenador, en el que ya faltan los slots libres PCI, puertos USB o puertos en serie, ha funcionado completamente bien con el comando echo -n disk > /sys/power/ state, o sea, el comando que suspende el disco. Después de ejecutar un comando adecuado, el sistema necesita unos 15 segundos para grabar su modo (con 512 MB de memoria). Después de realizar el comando echo 4 >/proc/acpi/sleep, el sistema ha tardado en suspenderse más tiempo y a veces se han producido problemas con el manejo del ratón después de despertarse.
Posibles problemas
Después de restablecer el sistema desde el disco, siempre hay que ajustar la hora
del sistema y la fecha, porque el sistema "se despierta" con la fecha y la hora memorizadas antes de suspenderse. Para sincronizar la hora del sistema con la hora del reloj en la placa madre, ejecutamos el comando hwclock --hctosys. En cambio, en mi ordenador no funciona el modo S3 – Suspend to RAM. Así ocurre porque tengo el controlador SATA SiI3112, cuyo driver de Linux no soporta el modo de suspensión. Asimismo, otros usuarios a menudo informan sobre los problemas relacionados con este modo en otros tipos diferentes de equipo, que incluye los ordenadores portátiles. No obstante, en los ordenadores de la mayoría de los usuarios debiera funcionar correctamente. En mi ordenador también hay problemas con el modo S1. Aunque después de realizar el comando echo -n mem > /sys/power/state al principio el ordenador pasaba a este modo, de repente se despertaba. Después de cambiar los ajustes en la BIOS (para apagar eventos que "despiertan" el ordenador), he conseguido suspenderlo, pero después de despertarse no han funcionado correctamente el teclado y el ratón PS/2. El comando echo 3 >/proc/acpi/sleep funciona bien con una excepción: no
equipo
apaga el monitor. Sin embargo, todos estos problemas se producen en una máquina con varias tarjetas distintas PCI, no todas fabricadas por empresas de renombre.
Swsusp2
Los mecanismos antes descritos de suspensión del ordenador, están colocados en el núcleo estándar. El tercer mecanismo, Swsusp2, requiere que se pongan los parches en las fuentes del núcleo, pero ofrece muchas más posibilidades. Hay que citar las más importantes de ellas: •
• •
•
un fichero de configuración cómodo y un script avanzado listo para suspender el sistema, gracias a los que podemos eliminar los problemas con el equipo poco compatible y con programas; posibilidad de compresión "al vuelo" de la imagen guardada de la memoria; posibilidad teórica de guardar la imagen de la memoria no sólo en la partición de intercambio, sino también en el fichero de intercambio (swap file): en el momento de escribir este artículo, no funciona el soporte de swap file; Swsusp2 también se desarrolla en la versión para núcleos de la serie 2.4.x.
Figura 3. En los núcleos de la serie 2.6.x de forma predefinida hay dos métodos de suspender los ordenadores, pero después de aplicar los parches, podemos elegir entre tres
www.lpmagazine.org
65
equipo
Configuración de las fuentes del núcleo Muchos usuarios piensan que esta etapa es complicada, aunque no debe ser así. En la práctica, realizamos la configuración pasando al directorio /usr/src/linux y ejecutando uno de los comandos siguientes: •
•
•
make menuconfig – se nos mostrará
el menú de texto que para funcionar requiere librerías Ncurses (también los paquetes -dev(el)). Si después de realizar este comando se nos muestra un error, tenemos que añadir e instalar estas librerías desde el disco con nuestra distribución. En este método no necesitamos X Window y podemos realizarlo también de modo remoto, p.e. por medio de ssh. make xconfig – se nos mostrará el menú en ventanas X Window. Este método requiere que las librerías Tcl/Tk estén instaladas (en el caso de núcleos 2.4.x) o QT (en el caso de núcleos 2.6.x). En algunas distribuciones, para visualizar las ventanas, hace falta ejecutar antes el comando xhost + en la cuenta del usuario que trabaja en X Window. make bconfig – funciona sólo en los núcleos de la serie 2.6.x y requiere las librerías GNOME.
Sin tomar en cuenta qué interfaz hemos arrancado, cuando empieza su trabajo, lee los ajustes determinados en el fichero con el nombre /usr/src/linux/.config. Está bien si el fichero .config proviene del paquete de nuestra distribución, puesto que sabemos a ciencia cierta que contiene ajustes correctos. En este caso podemos, después de arrancar p.e. make xconfig, centrarnos únicamente en la realización de las modificaciones de la configuración del núcleo que necesitamos
en un momento dado, p.e. para iniciar el soporte de ACPI. Sin embargo, si nuestro núcleo procede de otra fuente que no sea nuestra distribución, podemos de modo correcto iniciar/finalizar el soporte de dispositivos determinados, sirviéndose del conocimiento que tenemos sobre nuestro ordenador, que cuando compilamos el núcleo indudablemente se ampliará y profundizará. Cuando no estamos seguros qué elegir, siempre podemos emplear la configuración realizada antes por los autores de nuestra distribución. Con este objetivo tenemos que "sacar" desde las fuentes del núcleo en el paquete rpm o deb el fichero .config y copiarlo a /usr/src/linux. Recordemos que no es suficiente realizar una copia. Después de copiar este fichero, hay que ejecutar make menuconfig o uno de los comandos de configuración mencionados arriba. Cuando configuramos el núcleo, ante todo si lo hacemos sin ninguna ayuda, sin usar el fichero .config de la distribución, podemos cometer varios errores. Incluso es posible que a consecuencia de algunos de estos errores el sistema no pueda arrancar. Sin duda, no podemos olvidar que está bien tener en nuestro núcleo: •
•
•
•
No es difícil instalar Swsusp2 cuando sabemos compilar el núcleo de Linux. La compilación se puede realizar de manera siguiente: •
66
Descargamos desde la página http:// swsusp.sourceforge.net/ los últimos parches para núcleos 2.6.x. Cuando escribo este artículo, son los ficheros softwaresuspend-linux-2.6.2-rev1-whole.bz2 y software-suspend-core-2.0-whole.bz2. El primero de estos ficheros contiene unos cambios específicos para la versión determinada del núcleo, por eso, sus últimas versiones aparecen con más frecuencia (aunque con retraso respecto a los núcleos mismos), el segundo
Linux+ 2/2004
•
VGA text console – por defecto sólo podremos trabajar en el ordenador por medio de la red o en X Window; soporte del dispositivo al que está unido el disco con el sistema principal de ficheros (IDE/SCSI); soporte del sistema de ficheros en el que se formateó nuestra partición principal (ext2/ext3); si compilamos el núcleo por la red, no olvidemos de la tarjeta de la red, por medio de la cual estamos unidos a este ordenador.
fichero se actualiza con menos frecuencia. Descargamos también el núcleo en la misma versión que el primer parche: en este caso 2.6.2. Del mismo modo se instalan los núcleos de la serie 2.4.x. Descomprimimos los parches (bunzip2 [nombre del fichero]) y el núcleo (tar jxfvp linux-2.6.2.tar.bz2) y aplicamos allí los parches. Es importante aplicar primero el parche propio de la versión de núcleo: cd linux-2.6.2; patch -p1 <../software-suspend-linux-2.6.2rev1-whole; patch -p1 <../ software-
•
suspend-core-2.0-whole. Durante la configuración del núcleo, en la sección Power management options seleccionamos Software Suspend 2,
•
•
•
y luego swap writer. Es lo mínimo imprescindible. Asimismo, podemos marcar uno de los Page transformers: yo empleo LZF. Es un algoritmo de compresión muy rápido. En el fichero /etc/lilo.conf, como en los ejemplos descritos arriba, agregamos la opción transmitida al núcleo, que define la ubicación de nuestra partición de intercambio. Debe tener un aspecto append "resume2=swap: /dev/hda9" . Naturalmente, cambiamos hda9 por un dispositivo propio de nuestro sistema. Ahora podemos reiniciar el sistema y arrancarlo en el núcleo recién compilado. Descargamos un fichero más, suspend.sh, desde la página http:// swsusp.sourceforge.net/ y le otorgamos los derechos para ejecutar (chmod a+x suspend.sh) y realizamos el comando ./uspend.sh --install. Entonces se crea el fichero de configuración /etc/suspend.conf y el script que ayuda suspender el sistema: /usr/local/sbin/hibernate. El comando mágico que suspende nuestro sistema es /usr/local/sbin/hibernate. Después de su ejecución, el sistema al cabo de unos segundos se debe suspender. Sin embargo, en caso de problemas, existen muchas posibilidades de modificar el proceso de suspender por medio de la edición del fichero /etc/suspend.conf. Si hay un problema para despertar el sistema después de cerrarlo, tras el estímulo de parte de LILO, escribimos Linux noresume2.
Despertar a tiempo
Antes de suspender el ordenador, podemos determinar la hora a la que se despierte por sí solo. Con este objetivo, ejecutamos el comando en el formato echo yyyy-mm-dd hh:mm:ss > /proc/acpi/alarm. Por ejemplo,
Compilación del núcleo
Es más bien una tarea que hace nuestro ordenador y no nosotros. En el caso de los núcleos de la serie 2.4.x basta con el comando make bzImage (¡el tamaño de las letras tiene importancia!), y después de finalizar su trabajo con el comando make modules. En los núcleos de la serie 2.6.x sólo necesitamos el comando make, desde luego, realizado en el directorio /usr/src/linux.
equipo
acpi
Tabla 1. Comparación de métodos de suspensión de Linux swsusp
pmdisk
swsusp2
Disponibilidad
en el núcleo 2.6.x
en el núcleo 2.6.x
parches de los núcleos 2.4.x y 2.6.x
Activación
echo 4 > /proc/acpi/sleep
echo -n disk > /sys/power/ state
/usr/local/sbin/hibernate o echo > /proc/swsusp/activate
Desactivación
noresume
pmdisk=off
noresume2
Argumento necesario para arrancar el núcleo
resume=/dev/hda#
pmdisk=/dev/hda#
resume2=swap:/dev/hda#
Requisitos de configuración del núcleo
swap ACPI
swap
swap
Ventajas
+ solución estándar, bien testeada + disponible en el núcleo estándar
+ nueva implementación, parece mejor + disponible en el núcleo estándar + funcionamiento rápido
+ muchas más posibilidades de configuración + mejor documentación + soporte de compresión + proyectos ambiciosos de desarrollo + funcionamiento más rápido
Inconvenientes
- requiere ACPI - funcionamiento relativamente lento
- solución nueva, poco testeada
- sirve exclusivamente para suspend to disk - requiere aplicación de parches en los núcleos, retrasados respecto a las versiones nuevas
escribimos echo 2004-05-01 13:01:00 > /proc/acpi/alarm para despertar el ordenador el 1 mayo de este año a las trece y un minuto. El ordenador debería despertarse en los modos S1, S2 y S3.
Problemas con la suspensión
El modo más difícil de suspensión del ordenador es S3, o sea, Suspend to RAM. Al mismo tiempo, es el modo más deseado, sobre todo en el caso de ordenadores portátiles. Es el modo que suspende y restablece el sistema con más rapidez. Además, en el caso de Suspend
to RAM, el ordenador para “dormir” no necesita energía adicional, imprescindible en el caso de Suspend to disk para guardar la memoria en el disco duro. La cantidad de corriente necesaria cuando el ordenador está en S3 de verdad es escasa: la batería cargada debe ser suficiente para una suspensión de un par de días. No existe ninguna regla general que garantice el éxito cuando se pasa de y al modo S3 en cada ordenador. Si realmente queremos que este modo funcione, podemos intentar hacerlo de manera siguiente:
•
•
•
Figura 4. En los núcleos de la serie 2.4.x se encuentra también el soporte de APM y de ACPI
Desconectamos todos los servicios (demonios), por ejemplo, pasando al single mode con el comando init 1. Luego, desconectamos los dispositivos externos y eliminamos el máximo de módulos del núcleo posible. El listado de los módulos se visualiza con el comando lsmod. Como primeros, hay que eliminar los que en la tercera columna del informe lsmod tengan el valor "0", es decir, que no se usen por otros módulos. Con la orden modprobe -r [nombre del módulo] podemos eliminar los módulos particulares. Intentamos suspender el sistema con el comando echo -n mem > /sys/power/ state o echo 3 >/proc/acpi/sleep. Si ninguno de los métodos funciona, intentamos cambiar los ajustes de la BIOS del ordenador. Muy a menudo las placas madres incluyen unas opciones relativas a la gestión de energía extrañas, que pueden ser la causa de problema. Si no ayuda nada, nos queda sólo esperar las versiones nuevas del núcleo de Linux: a lo mejor habrá algunas modificaciones que faciliten el funcionamiento de Suspend to RAM en nuestro equipo. Si alguno de los métodos arriba indicados suspendió y despertó de modo correcto nuestro ordenador, cargamos los siguientes módulos del núcleo, arrancamos los demonios sucesivos, cada vez intentando suspender y despertar de nuevo nuestro ordenador, hasta que encontremos el programa o dispositivo que provoca los problemas. Al final, intentamos realizar la operación de suspención con nuestro sistema X Window.
www.lpmagazine.org
67
equipo
Instalación del núcleo
Al principio, instalamos los módulos de núcleo con el comando make modules_install. Aparecerá el directorio /lib/modules/[versión_núcleo], p.e. /lib/ modules/2.4.26, en el que en un par de subdirectorios se colocarán todos los módulos. Si compilamos la misma versión del núcleo que la versión actualmente empleada por el sistema, el directorio ya existe en el sistema, y eso no está bien: en este caso debemos primero eliminarlo, o mejor, cambiar su nombre, p.e. en 2.4.26bak, y más tarde ejecutar make modules install. El núcleo, después de la compilación, se halla en el fichero /usr/src/linux/arch/ i386/boot/bzImage. Este fichero se debe copiar al directorio /boot/. Podemos aprovechar la ocasión para cambiar su nombre, sobre todo si en el directorio /boot/ ya se encuentra el fichero bzImage. Es hora de realizar una operación más difícil, es decir, configurar LILO o GRUB. Si nuestra distribución emplea LILO, enconraremos en ella el fichero /etc/lilo.conf. En este fichero tenemos que buscar una sección responsable del arranque de nuestro Linux. Las secciones adecuadas empiezan con la línea image = [fichero de núcleo]. Para hacerlo, copiamos en este fichero toda la sección (así es más difícil cometer un error) y realizamos las siguientes modificaciones en el fragmento copiado:
Cuando detectemos el problema o el módulo del núcleo, podemos escribir el script que lo elimine/desconecte antes de suspender el sistema. El Listado 1 presenta un ejemplo muy sencillo. Este script eliminará los módulos responsables de USB, pero después de restablecer el sistema, los cargará de nuevo. En caso de problemas con el modo Suspend to disk, tanto si utilizamos el primer método, (Swsusp), como el segundo, (Pmdisk), podemos proceder de modo parecido como en caso de problemas con Suspend to RAM. Os recomiendo probar la solución Swsusp2, porque es más rápido y ofrece más posibilidades. Asimismo, debe funcionar bien con otros tipos de equipos. Esto no significa que siempre funcione sin problemas. Entre los problemas más frecuentes hay que citar estos: •
68
Si disponemos de la tarjeta gráfica de la empresa NVidia, en el fichero /etc/suspend.conf debemos tener
Linux+ 2/2004
•
cambiamos el argumento en la línea por un argumento propio del fichero con nuestro núcleo, p.e. image=/boot/bzImage; eliminamos la línea initrd =...; cambiamos el argumento de la línea label= en otro argumento, p.e. mi_ obra. image=
• •
Después de guardar estas modificaciones, ejecutamos el comando lilo desde la cuenta de root. Si el programa detecta algunos errores en /etc/lilo.conf, lo comunicará con detalles y terminará el funcionamiento, sin perjudicar el sector de arranque. Si todo va bien, intentaremos reiniciar el ordenador, seleccionando en el menú LILO el nuevo núcleo, p.e. mi obra. Si se produce algún problema con el núcleo nuevo, siempre podemos volver a arrancar el ordenador, seleccionando en el menú LILO el núcleo antes empleado. Podemos realizar la configuración de GRUB de modo parecido como en el caso de LILO. La composición del fichero /etc/grub.conf en realidad es distinta, pero las secciones que empiezan con la línea title... también se pueden copiar y realizar las modificaciones analógas como en el caso de lilo.conf. Simplemente, en vez de label aquí tenemos title, y en vez de image – kernel.
la
línea
SWSUSP_LEAVE_X_BEFORE_
(de modo predeterminado, en vez de "nvidia" hay "no"). De este modo evitaremos el problema con la aceleración 3D que "desaparece", después de despertar el ordenador. En el caso de Debian, a veces tenemos que modificar /etc/suspend.conf eliminando umountnfs.sh desde el listado de servicios antes y después de la suspensión del sistema. Swsup2 no desconectará completamente el ordenador si en el núcleo no tiene ACPI o APM compilado. Cuando el proceso de suspensión termina, hay que usar el botón de la caja. SUSPEND ="nvidia"
•
•
¿El viejo pero bueno APM?
Las soluciones antes descritas se basan, en mayor o menor grado, en el código que soporta ACPI. Aunque funcionan en varios tipos de equipos y se los reconoce como bastante estables, a lo mejor en varios ordenadores tendrá más éxito el estándar más antiguo, o sea, APM.
Los núcleos de Linux, en todas sus distribuciones tienen el soporte APM predefinido. No obstante, si configuramos y compilamos el núcleo solos, en la serie 2.4.x encontraremos APM en la sección General setup con el nombre Advanced Power Management BIOS support, mientras en la serie 2.6.x, en la sección Power Management support. Todas las opciones adicionales de la sección APM sirven sólo para evitar problemas con otros tipos de equipamiento menos compatible y no tenemos que marcarlas. Además, lo mejor es compilar APM en el núcleo "para siempre". Es incluso más fácil suspender el ordenador por medio de APM, ya que en nuestra distribución debemos encontrar el paquete con el nombre Apmd, y en él, los programas apm y apmd. Con ayuda del primero de ellos, en cualquier momento podemos poner el ordenador en espera (standby) o suspender (suspend). El segundo de ellos es un demonio conectado durante el arranque del sistema, que de modo automático realiza algunas acciones cuando ocurren eventos relacionados con la gestión de energía (p.e. orden de pasar al modo de suspend o el cambio de alimentación de una alimentación desde la red, en una alimentación con baterías). Para suspender nuestro ordenador con ayuda de APM, podemos ejecutar el
APM y ACPI
Una tecnología mayor es la gestión avanzada de energía: Advanced Power Management (APM), que en la actualidad se sustituye gradualmente por Advanced Configuration and Power Interface (ACPI). APM sirve para ahorrar energía eléctrica con ayuda de varias técnicas empleadas a nivel del equipo, sin participación del sistema operativo. ACPI funciona sobre todo a nivel del sistema operativo, por eso, no sólo le conciernen los límites de la memoria de la BIOS, sino que también es posible gestionar la energía de modo más inteligente y más universal, p.e. la aplicación que muestra la presentación puede pasar al equipo una información de que el monitor es necesario y no se puede apagar, o el sistema operativo decide que en un momento dado el procesador funcione con más lentitud. Tanto en los núcleos de la serie 2.4.x, como de la serie 2.6.x, hay soporte para APM y para ACPI. No obstante, hay que recordar que los dos sistemas se excluyen mutuamente: en un momento determinado sólo podremos emplear uno de ellos.
equipo
acpi
Figura 5. Cuando gestionamos la energía de manera consecuente, podemos ahorrar incluso hasta unos cientos kilovatio–horas de energía eléctrica por año
comando apm –standby o apm –suspend. En este momento demon apmd escribirá una información adecuada para registros del sistema, sincronizará los discos duros, realizará comandos definidos en los scripts en el directorio /etc/apm/ y, después de hacerlo, ejecutará una operación adecuada de suspención. Cuanto más antiguo es nuestro equipo, más oportunidades de éxito de esta operación hay. El sistema X Window ocasiona con APM varios problemas, por eso, vale la pena antes de suspenderlo al menos pasar al terminal de texto.
Baterías y botones
Cuando configuramos el núcleo de la serie 2.6.x, en la sección ACPI, entre otras, se hallan las opciones AC Adapter, Battery, Button, Fan, Processor y suplementos para notebooks de las empresas Asus y Toshiba, que marcamos, obviamente, sólo si disponemos de un equipo de estas empresas. Si hemos marcado las opciones adecuadas y nuestro núcleo se ha compilado y se ha instalado correctamente, en el directorio /proc/acpi/ vamos a encontrar los subdirectorios responsables de dispositivos respectivos, soportados por ACPI. Entre otros, serán: ac_adapter, battery, fan, button, processor y thermal_zone. Los directorios ac_adapter y battery en mi PC de escritorio están vacíos. Esto significa que el núcleo de Linux no ha detectado en mi ordenador ni la batería, ni el indicador que informa si el sistema está alimentado con batería o desde la red. Desde luego, es normal en el caso de PCs de escritorio. Sin embargo, en los ordenadores alimentados con baterías, se encuentran otras informaciones que pueden tener el aspecto siguiente:
charging state:
discharging
present rate:
28277 mW
remaining capacity:
50100 mWh
present voltage:
16320 mV
Si estos datos faltan, el sistema ACPI de nuestro ordenador portátil no está soportado por el núcleo de Linux. Claro, esta manera de mirar el estado de baterías con el comando cat no es muy cómoda, por eso, se han creado varias aplicaciones que funcionan en modo gráfico y que facilitan esta tarea. La más popular de ellas es probablemente Klaptopdaemon, que forma parte del entorno KDE. Gracias a esta aplicación, podemos hacer click en el icono con visualización del estado de baterías con ayuda del Centro de Control KDE. Desde luego, las posibilidades de Linux no se limitan a la verificación del estado de baterías. El núcleo de nuestro sistema puede detectar varios eventos (ing. events), comunicados por ACPI. Los empleados más frecuentemente son: • • • •
el pulsar los botones Power o Sleep, cierre del ordenador portátil comunicado como el pulsar el botón Lid, conexión y desconexión de alimentación desde la red, soporte de teclas adicionales y de reguladores en algunos ordenadores portátiles.
Si se produce uno de estos eventos, el núcleo envía la información sobre él al fichero /proc/apci/event. Precisamos de un programa que, funcionando en segundo plano, todo el tiempo monitorice /proc/ apci/event, y cuando se produzca uno de los eventos, realice las tareas determinadas por nosotros, o sea, en otras palabras, arrancará un programa o un script. Acpid es un programa de estas características. Debemos encontrarlo en nuestra distribución o en la página http:// acpid.sf.net/. La configuración del demonio Acpid es sencilla. Por ejemplo, si queremos que nuestro sistema se cierre después de presionar el botón Power, necesitamos el fichero /etc/acpi/events/power con el contenido siguiente:
present:
yes
capacity state:
ok
event=.* action=logger "evento: [%e]"
toda descripción de evento que llegue a /proc/acpi/event en seguida se guardará en los registros del sistema. La descripción del evento que hemos obtenido de esta forma se puede escribir en la primera línea (event=) de nuestro propio fichero. Se puede configurar el demonio Acpid con varios métodos, pero parece que lo más sencillo es seguir la regla: un evento es un fichero en el directorio /etc/acpi/events/.
Velocidad del procesador
La reducción de la frecuencia del procesador, cuando el ordenador no realiza ningunas operaciones que exijan mucho poder de cálculo, es uno de los métodos más eficientes de prolongar su trabajo con baterías. Los nuevos núcleos de Linux permiten cambiar con facilidad la frecuencia de timing en todos los procesadores con esta funcionalidad. Si en nuestro núcleo se ha compilado el soporte para CPUFreq, en el sistema
event=button/power (PWR.|PBTN) action=/sbin/poweroff
$ cat /proc/acpi/battery/BAT0/state
podemos hibernarlo o arrancar MPlayer, si se nos antoja. La primera línea de este fichero es una expresión regular que tiene que coincidir con la descripción del evento comunicado por el núcleo. Pese a una estandarización bastante amplia, desgraciadamente, no existe un listado general de todos los eventos en ACPI. Podemos leer con facilidad que tipo de eventos ACPI tienen lugar en nuestro sistema. Si creamos el fichero /etc/ acpi/events/logger con el contenido:
Por supuesto, action puede tener cualquier argumento. En vez de cerrar el sistema,
Figura 6. GTK-Cpuspeedy: una aplicación muy sencilla que hace posible cambiar con comodidad la rapidez del procesador
www.lpmagazine.org
69
equipo
•
Figura 7. La página www.tuxmobile.org es la mejor fuente de información sobre el funcionamiento de Linux en ordenadores portátiles
se encontrará o el fichero /proc/cpufreq, o /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors. El primero indica la existencia de una interfaz mayor que ya no se desarrolla, con unas posibilidades mucho más reducidas. Debemos disponer de un núcleo de la serie 2.6.x, con una interfaz nueva accesible por medio de /sys/. Durante la configuración de los nuevos núcleos de la serie 2.6.x, en la sección Power management options marcamos CPU Frequency scaling y todos los reguladores disponibles (ing. Governors), es decir, powersave, userspace y performance. Mejor si marcamos este último como Default CPUFreq governor. No tenemos que indicar las opciones marcadas como deprecated, relativas a la interfaz /proc. Nos queda aún seleccionar el driver de nuestro procesador del listado que se encuentra más abajo. En el caso de procesadores Intel SpeedStep la selección también puede depender de chipset que tenemos: marcamos respectivamente el driver para ICH-M o 440BX/ZX/MX, pero nunca los dos a la vez. Todos los drivers de esta sección los podemos compilar en el núcleo para siempre. Así no tendremos que cargar los módulos adecuados antes de empezar a cambiar la velocidad del procesador. En un núcleo correctamente compilado e instalado, la ejecución del comando cat
/sys/devices/system/cpu/cpu0/
cpufreq/scaling_available
governors
provoca la visualización del listado de reguladores disponibles (ing. governors) para la velocidad del procesador. En este listado debemos encontrar, por lo menos, los tres siguientes: •
•
70
powersave – destinado al uso con alimentación de baterías (el procesador simplemente trabaja con la frecuencia más baja posible), userspace – si seleccionamos este regulador, podemos indicar nosotros
Linux+ 2/2004
mismos cualquier frecuencia de funcionamiento (obviamente dentro de los límites del procesador), performance – destinado al uso con la alimentación de red (el procesador funciona con la frecuencia más alta posible).
Podemos modificar “manualmente” la frecuencia de trabajo del procesador por medio del sistema de pseudo-ficheros /sys/. Para modificar el regulador actual de la frecuencia de su trabajo, tenemos que guardar el nombre de nuevo regulador al fichero /sys/devices/system/cpu/cpu0/cpufreq/ scaling_governor, p.e. con el comando echo userspace
>/sys/devices/system/cpu/
cpu0/cpufreq/scaling_governor. Si hemos
seleccionado userspace, a continuación podremos indicar la frecuencia de trabajo del procesador, p.e para 1 GHz, con el comando echo 1000000 > /sys/devices/ system/cpu/cpu0/cpufreq/scaling_setspeed.
Hay que recordar que las frecuencias se indican en kHz. En el directorio /sys/devices/system/cpu/ cpu0/cpufreq/, junto con los ficheros antes mencionados, vamos a encontrar otros ficheros interesantes: •
•
cpuinfo_min_freq, cpuinfo_max_freq – podemos leer estos ficheros para verificar cuáles son los valores máximos que soporta nuestro procesador, scaling_min_freq, scaling_max_freq – en estos ficheros podemos escribir nuestros propios límites de frecuencia.
Cpuspeedy
En vez de ejecutar un comando muy largo cat..., podemos emplear un programilla sencillo cpuspeedy, disponible en la dirección http://cpuspeedy.sourceforge. net/. Después de descargar el fichero cpuspeedy-0.3.0.tar.gz, lo descomprimimos y pasamos al directorio construido de este modo; en la cuenta de root ejecutamos el comando make install. Podemos cambiar la frecuencia con el comando /usr/sbin/cpuspeedy [velocidad], donde la [velocidad] se determina con uno de los valores siguientes: min, low, med, high, max, p.e. /usr/sbin/cpuspeedy min. Si desde la misma página bajamos el fichero gtk-cpuspeedy-0.3.0.tar.gz, lo descomprimimos y realizamos unos comandos tradicionales: ./configure, make, make install, en el sistema encontraremos el programilla gtk-cpuspeedy, con el que podremos ejecutar
los mismos comandos de forma rápida, facil y sólo con el uso del ratón.
Demonios de gestión
Las soluciones descritas arriba nos permiten reducir "manualmente" la velocidad del procesador, p.e. cuando pasamos al modo de alimentación con baterías. Sin embargo, el objetivo verdadero de los creadores de CPUFreq es la reducción automática, cuando el procesador está menos sobrecargado. Obviamente, en esta tarea es necesario, junto al soporte en el núcleo para CPUFreq, un demonio adicional que controlará la carga del sistema y ajustará adecuadamente la frecuencia de la CPU, sin intervención del usuario. Hay muchísimos programas de este tipo. Probablemente el más sencillo, pero que funciona de modo más seguro, es Powernowd (http://www.deater.net/john/ powernowd.html). A pesar de su nombre, funciona con todos los procesadores soportados por el núcleo del sistema. Una de sus ventajas es su simplicidad: no requiere ficheros de configuración y sólo se ocupa del procesador. Después de descargar y descomprimir el fichero powernowd-0.90.tar.gz, ejecutamos sólo los comandos make y make install. El arranque del programa es aún más sencillo: basta con ejecutar el comando /usr/sbin/powernowd desde la cuenta de root y el programa empezará a funcionar con los ajustes predeterminados. Esto significa que cuando la carga del procesador sea del 80%, el programa enseguida acelerará su velocidad al máximo, y cuando la carga se reduzca por debajo del 20%, powernowd gradualmente disminuirá la frecuencia de su trabajo. Cuando el ordenador atraviesa el umbral máximo y mínimo de la carga, el programa interviene. Con la opción -u podemos cambiar el valor máximo de la carga del procesador, y con la opción -l el mínimo. En
Figura 8. Página web de Acpid – un demonio sencillo que permite aprovechar plenamente las posibilidades de ACPI
acpi
cambio, con la opción -m podemos cambiar el modo de funcionamiento del programa del predeterminado -m 1, o sea, "agresivo" en el modo "sinusoidal" (-m 0): la elevación y la reducción de frecuencias siempre procede gradualmente, "pasivo" (-m 2): la reducción rápida de velocidad junto con el crecimiento lento, "de saltos" (-m 3): sólo los saltos desde el mínimo hasta el máximo. El comando de ejemplo, que debe dar fruto en forma de un funcionamiento más "económico" del procesador, puede tener el siguiente aspecto: /usr/sbin/powernowd -m 2 -u 90 -m 10. En el archivo, junto con el código fuente del programa, encontraremos también el script de ejemplo de arranque, que podemos copiar al directorio /etc/init.d/ y con cualquier editor de texto SysV hacer que arranque powernowd cada vez que se ponga en marcha el sistema. Un demonio más avanzado que controla la frecuencia de timing del procesador es Cpufreqd (http://sourceforge.net/projects/ cpufreqd). Sabe ajustar la velocidad del procesador no sólo a su carga actual, sino que también toma en cuenta el modo de alimentación, el nivel de la carga de baterías, e incluso las aplicaciones arrancadas actualmente. La instalación de este programa no es difícil: basta con cargar el fichero cpufreqd-1.1.2.tar.gz y ejecutar los comandos tradicionales ./configure; make; make install. En la distribución fuente se encuentra también el fichero de configuración de ejemplo para núcleos de la serie 2.6.x, que hay que copiar a /etc/cpufreqd.conf. En este fichero en las secciones Profile describimos varios modos de trabajo de nuestro ordenador, es decir: la frecuencia mínima y máxima del trabajo del procesador y el regulador (ing. governor) del funcionamiento del procesador. En las secciones Rule describimos cuando cambian los modos de funcionamiento. Tanto en la sección Profile, como en Rule podemos definir un valor grande. Probablemente, los ajustes predefinidos funcionen bien en varias máquinas, pero la descripción detallada de todas las posibilidades del fichero de configuración la podemos encontrar en man cpufreqd.conf.
Laptop mode
Este nombre supone un código nuevo introducido en el núcleo oficial de Linux a partir de la versión 2.4.23 y 2.6.6. Su objetivo es ahorrar baterías en los ordenadores portátiles con otra organización de memoria y de lectura del disco. Simplificando el asunto, después de marcar laptop mode,
el ordenador durante las operaciones de lectura y de grabación de datos en el disco duro, a la vez guarda en él todos los datos buffereados que normalmente requieren una operación aparte, relacionada con volver a “activar” el disco. La ventaja de esta solución: la reducción significativa del número de operaciones que requieren "activación" del disco. En la práctica, se alarga el tiempo de funcionamiento de baterías por lo mínimo en un 2%. Además, nuestros datos se guardan físicamente en el disco con retraso (incluso hasta 10 minutos, con una configuración estándar). Naturalmente, existe peligro de pérdida de estos datos, que p.e. a pesar de ejecutar la operación "guardar" en el editor de texto, en realidad físicamente no se guardan, sino que esperan hasta que los datos se lean o hasta que pasen 10 minutos. El empleo de laptop mode es muy sencillo. Si nuestro núcleo incluye el soporte de este modo, en el sistema encontraremos el fichero /proc/sys/vm/laptop_mode. De lo contrario, tenemos que hacernos con un núcleo en las versiones 2.4.23 o 2.6.6 como mínimo. Para emplear este modo, lo mejor es usar un script especial, que en los núcleos 2.6.x se encuentra en el fichero /usr/src/linux/ Documentation/laptop-mode.txt. Tenemos que copiar la parte final de este fichero que contiene el script Bash, y guardarlo con el nombre /usr/sbin/laptopm-mode.sh. No olvidemos los derechos de ejecución del fichero (chmod a+x /usr/sbin/laptop-mode.sh). Cuando ya dispongamos de un script listo /usr/sbin/laptopm-mode.sh, basta con dos comandos:
modo adecuado el demonio Acpid. Los scripts de ejemplo /etc/acpi/events/ac_adapter y /etc/acpi/actions/battery.sh se hallan también en el fichero /usr/src/linux/ Documentation/laptop-mode.txt. Además, en la página web de laptop mode para los núcleos 2.6.x (http:// www.xs4all.nl/~bsamwel/laptop_mode/ ) se hallan los parches que mejoran el funcionamiento de esta solución, que todavía no se han incluido oficialmente en el núcleo. Una modificación importante que hay que hacer si nos servimos del sistema de ficheros XFS, es la modificación en el fichero /usr/sbin/ laptopm-mode.sh del parámetro XFS_HZ del parámetro predefinido 1000 a 100.
Fin
Probablemente dentro de unos meses todas las funcionalidades descritas en este artículo se introduzcan en las distribuciones más populares. Entonces, seguramente será más fácil configurar el ordenador con Linux. No obstante, ya en la actualidad, después de configurar correctamente el ordenador, si usamos Linux podemos trabajar con baterías más tiempo que con MS Windows.
En Internet: • •
• •
/usr/sbin/laptopm-mode.sh start hdparm -S 4 /dev/hda
Por medio del último comando, el disco terminará de girar si no lo usamos durante 20 segundos. Gracias a laptop mode el disco vuelve a arrancar: o en el momento que deseemos leer los datos escritos en él, o cuando algunos datos esperan más de 10 minutos para estar guardados. Si 10 minutos es demasiado o poco, podemos cambiar este valor: en el fichero /usr/sbin/ laptopm-mode.sh encontramos la línea MAX_AGE=600 e indicamos otro parámetro en segundos. Obviamente, una solución lógica es desconectar automáticamente laptop mode, cuando nuestro ordenador empieza a alimentarse con baterías. Podemos conseguirlo fácilmente configurando de
equipo
•
•
•
•
•
Página principal ACPI en Linux: http://acpi.sourceforge.net/ Battery Powered Linux Mini-HOWTO: http://www.faqs.org/docs/Linux-mini/ Battery-Powered.html Software Suspend (2) para Linux: http://swsusp.sourceforge.net/ Información sobre el funcionamiento de Linux en ordenadores portátiles de todas las empresas: http://www.tuxmobile.org/ Página principal de Acpid, un demonio sencillo que permite aprovechar todas las funcionalidades de ACPI: http://acpid.sf.net/ Acpid mini-howto: http://www.capaman.8m.com/ acpid.html Información adicional sobre laptop_ mode en el núcleo de Linux: http://www.xs4all.nl/~bsamwel/laptop_ mode/ Página principal del programa powernowd: http://www.deater.net/john/ powernowd.html Métodos alternativos de ahorro de energía en los ordenadores portátiles: http://www.xs4all.nl/~bsamwel/smart_ spindown/index.html http://noflushd.sourceforge.net/
www.lpmagazine.org
71
para programadores
El visualizador de consola de archivos gráficos Marek Sawerwain
E
DVD
Linux+ Live DVD hay que arrancarlo con el soporte del framebuffer (fb 1024). Escribimos: cd /home/aurox/ Pic_View ; ./picview nombre del archivo.png.
En el DVD
En el DVD se encuentran los archivos fuente y binarios de las librerías, el código completo de los programas que hemos mencionado, además del listado del artículo.
72
Linux+ 2/2004
n Linux, cuando queremos trabajar en el modo gráfico, por lo general aplicamos el sistema X Window. Además, el núcleo de Linux nos permite de una forma fácil iniciar la consola estándar de texto en cualquier modo gráfico escogido por nosotros. Muy frecuentemente se le llama a esto framebuffer, debido a que tenemos acceso directo a la memoria de la tarjeta gráfica. Hablando directamente, hacemos uso del modo gráfico, pero sin hacer uso del sistema X Window. Actualmente la más popular aplicación de dicha consola es mostrar el logotipo gráfico durante el inicio del sistema, pero algunos de los Lectores seguramente aplicaron el navegador Links precisamente en el modo gráfico; (es suficiente agregar el parámetro -g – links -g al comando de inicio). Los programas que hacen uso del modo gráfico son naturalmente muchos más. Existen también librerías preparadas widget, como por ejemplo QT o GTK+, que pueden hacer uso del framebuffer. En este artículo quisiera enseñar cómo escribir un programa fácil pero útil, que trabaje a nivel de la consola gráfica. Será un visualizador de imágenes de muchos formatos, como png, jpeg, tiff, etc. Contrario a las apariencias, la programación al nivel del framebuffer no es difícil. La librería de las funciones fundamentales no es grande: son solamente 5 kB del código fuente.
a hacer uso del modo de 32 bits de colores (esto es muy importante porque no funciona en otro modo). El uso de estas funciones es muy fácil. El acceso a la memoria intermedia es una tarea de la función open_fb, así que una de las primeras actividades que se deben hacer es la llamada de esta función. int h; h=open_fb();
En la variable h se encuentra el filehandle que representa al framebuffer. Gracias al valor que lleva, podemos fácilmente comprobar si hemos logrado tener acceso a la tarjeta gráfica. En caso de que no pudiéramos abrir el framebuffer, hay que aplicar el comando if: if(!h) { printf("Error al abrir el
Listado 1. Fragmento del programa “Hello World!” for(i=0;i<9999999;i++){
x=rand() % vinfo.xres; y=rand() % vinfo.yres; r=rand() % 255; g=rand() % 255; b=rand() % 255;
setpixel32(x,y, r,b,g, 0);
Principio
Para el uso fundamental del framebuffer son suficientes ocho funciones. Su lista se encuentra en la Tabla 1. En nuestro programa suponemos que siempre vamos
S
framebuffer !!!\n");
if( (i % 1000000)==0)
draw_msg(vinfo.xres + 50,
}
(vinfo.yres / 2)-25 );
S
visualizador de archivos gráficos
Tabla 1. Lista de las funciones mencionadas en el artículo El soporte del framebuffer (fb_lib.c) Nombre de la función
Corta descripción
open_fb
Abre el framebuffer
get_basic_info
Toma la información básica
map_fb
Crea la proyección de la memoria gráfica
unmap_fb
Elimina la proyección de la memoria gráfica
setpixel32
Coloca los píxeles en determinadas coordenadas
whiteblock
Dibuja un cuadrado blanco en las coordenadas dadas
clear32
Limpia la pantalla
close_fb
Cierra el framebuffer
get_buffer_ptr
Lee el actual índice al área de la memoria gráfica
Listado 2. Función que dibuja el comunicado void draw_msg(int xx, int yy){ int x,y,i=0;
line,size_line=sizeof(msg)/5; x=xx; y=yy;
for(i=1;i<=sizeof(msg);i++){ if(msg[i-1]==1)
whiteblock(x,y,block_size); x=x+block_size;
if((i % size_line)==0)
El soporte de archivos gráficos ilInit
Inicia las funciones básicas de la librería DevIL
iluInit
Inicia las funciones adicionales de la librería DevIL
ilEnable
Añade las funciones adicionales
ilOriginFunc
Establece el comienzo de la imagen
iluImageParameter
Establece los parámetros adicionales, por ejemplo, el filtro usado durante la escala
ilGenImages
Genera identificadores
ilBindImage
Establece el identificador actual
ilDeleteImages
Elimina el identificador
ilGetInteger
Toma los parámetros de la imagen
ilConvertPal
Se ocupa de la conversión de la paleta
iluScal
Escala la imagen
ilGetData
Toma el índice para los datos de la imagen
ilGetPalette
Toma el índice para la paleta de colores
return -1; }
Si no tuvimos problemas, entonces podemos hacer uso de la función setpixel32. La colocación de un pixel blanco en las coordenadas 100, 100 se hace de la siguiente forma: setpixel32(100, 100, 255, 255, 255, 0);
Después de terminar el trabajo con el modo gráfico, lo podemos cerrar. Esto lo hacemos con la función close_fb, dando como argumento la variable del filehandle. En nuestra aplicación no necesitamos más funciones; es suficiente agregar puntos, pero tenemos todavía la función clear32, que borra el contenido de la pantalla, y la función whiteblock, que sabe cómo dibujar un cuadrado blanco de una longitud dada de lado. Armados de tal conocimiento podemos escribir un pequeño programa que visualiza ”Hello World!” para el modo de framebuffer. El código fuente completo contiene el archivo hw.c. El programa funciona de
la siguiente forma: visualiza en la pantalla los puntos de diferentes colores y, además, de vez en cuando visualiza en la pantalla el comunicado textual, pero construido de cuadrados blancos (y por eso en nuestra “micro” librería se encuentra la función whiteblock). El Listado 1 presenta el más importante bucle de nuestro primer programa. Este bucle dibuja 10 millones de píxeles, pero después de cada millón de puntos dibuja también el escrito “Hello World!” (esta tarea la realiza la función draw_msg)
¿Cómo funciona draw_msg?
El siguiente fragmento importante para nuestro primer programa es la función draw_msg. Su código completo lo contiene el Listado 2. Como se puede notar, la función es bastante corta y no contiene ninguna serie de caracteres que podrían constituir el contenido de nuestro comunicado. Usamos el array msg: precisamente en él fue codificado el texto a visualizar. Un fragmento de este array es el siguiente: char msg[]={1001... 1001...
para programadores
}
}
{ x=xx; y=y+block_size; }
1111... 1001... 1001... };
El uno significa que será visualizado el cuadrado blanco, y cero – lo contrario, es decir, no se visualizará nada. Hay
Instalación de la librería DevIL
La instalación de esta librería en el sistema es una tarea sencilla por la presencia del script configure. Damos sólo tres comandos: ./configure –prefix=/directorio/para/ la_instalación make make install
Si fue aplicada la última versión 1.6.7, durante la compilación de nuestro programa picview, y exactamente en el momento de la conexión, podemos recibir un error por la falta de la función _ vsnprintf. La solución de este problema exige una pequeña modificación del código de la librería DevIL, y más exactamente del archivo in_tiff.c en el directorio src-IL/src del archivo descomprimido. Buscamos en él la función _vsnprintf y cambiamos su nombre a uno sin el subrayado, es decir, vsnprintf. Después de una nueva compilación de toda la librería es suficiente volver a instalar la librería y el problema se resuelve. Las versiones DevIL anteriores a la versión 1.6.6 no poseen este error, pero no pueden utilizar el formato GIF. Por eso, si queremos que nuestro visualizador lea este tipo de archivos, debemos hacer uso de la versión 1.6.7 DevIL.
www.lpmagazine.org
73
para programadores
¿Cómo iniciar el soporte de framebuffer en el núcleo del sistema?
Cuando el núcleo tiene soporte del modo VESA, es suficiente, durante el inicio del sistema, dar el número del modo gráfico que queremos iniciar. Desde el nivel de LILO escribimos por ejemplo linux vga=789. El sistema se inicia en el modo 800x600-32bits. La Tabla 2 presenta la lista de los modos más importantes y su significado. Si ocurriera que el kernel que usamos no da soporte del estándar VESA, podemos todavía intentar montar el módulo del driver para la tarjeta gráfica. Sin embargo, hay que recordar que se soportan sólo unos cuantos tipos de tarjetas gráficas. Para las populares tarjetas NVIDIA es suficiente dar el comando modprobe rivafb y si tenemos un modelo antiguo de este fabricante, deberíamos ya poder usar el modo del framebuffer. Los felices poseedores de las más nuevas tarjetas, por ejemplo GeForceFX 5900, no podrán utilizarlo, porque el módulo rivafb no reconoce este tipo de tarjetas. Por eso, es mejor utilizar el modo VESA. En caso de que haga falta el soporte de los modos de VESA, nos espera la compilación del núcleo. En primer lugar se debe señalar la opción Prompt for development and/or incomplete code/drivers en la sección Code maturity level options. Después, según el tipo del núcleo, hay que pasar al Console Drivers/Frame-buffer-options para el núcleo de la versión 2.4.x o Device drivers/Graphics support en el caso de los nuevos núcleos 2.6.x. Ahí se debe marcar la utilización del framebuffer en el modo VESA, pero no el modo del módulo, ya que no podremos dar el número del modo durante el inicio del sistema. En el artículo se encuentran dos figuras que muestran que opciones hay que señalar en el caso de estas dos series del núcleo de Linux.
que recordar el siguiente hecho: todo el comunicado, aunque fue adecuadamente formateado en el código fuente, sigue siendo un array de una dimensión. Después de la visualización de la primera línea del comunicado, debemos pasar a la siguiente línea. En el bucle leemos los siguientes signos del array msg, así que, para saber si ya hemos pasado la línea, debemos conocer el número de
74
Linux+ 2/2004
Figura 1. Configuración del soporte del framebuffer VESA para el núcleo 2.4.x
signos en una línea. En el array msg no sé cuantos caracteres escribí, pero cada uno que mire el código fuente fácilmente puede verificar que tenemos escritas cinco líneas; además el cálculo de cuántos signos hay en una línea es muy fácil: size_line = sizeof(msg)/5. Cuando ya tenemos esta información, el dibujo del contenido del array msg ya es muy fácil. Leyendo el contenido msg revisamos si actualmente el elemento i del array es uno; si es así, visualizamos el cuadrado blanco. En cada iteración del bucle aumentamos el valor de la coordenada x al tamaño del bloque: x=x+block_size;. Por supuesto, en caso de que obtengamos el fin de la línea del comunicado, efectuamos dos acciones: regresamos al inicio del lugar donde comenzamos a dibujar nuestro comunicado (x=xx;), y pasamos a la siguiente línea (y=y+block_size;).
La programación del framebuffer
Antes de que comencemos a escribir nuestro visualizador, quisiera todavía acercar la forma en que se implementan las funciones relacionadas con el manejo del
modo gráfico. En Linux, y en general en los sistemas UNIX, el hardware es representado como archivos. De la misma manera es en el caso del framebuffer. Antes de que comencemos a usarlo, debemos abrir un archivo que lo represente. fb_handle=open("/dev/fb0", O_RDWR);
Después podemos adquirir las informaciones básicas (por ejemplo, la resolución de pantalla, la forma de codificación de los colores, etc.). Este tipo de datos contienen las estructuras de tipo: fb_var_screeninfo y fb_fix_screeninfo. Para completar la primera estructura con la información necesaria, aplicamos la función ioctl de la siguiente forma: ioctl(fb_handle, FBIOGET_VSCREENINFO,
S
&vinfo)
Será bastante difícil actuar en el framebuffer desde el nivel del archivo. Por eso, para operar normalmente con la memoria gráfica, la debemos proyectar con la ayuda de un índice corriente. En nuestro caso será de tipo char. Esto nos ayudará en la implementación de la función setpixel32.
Tabla 2. Lista de los principales modos VESA Bit por color
640x480
800x600
1024x768
1280x1024
8
769
771
773
775
15
784
787
790
793
16
785
788
791
794
24/32
786
789
792
795
visualizador de archivos gráficos
Listado 3. Función setpixel32
red_idx32 = vinfo.red.offset / 8; green_idx32 = vinfo.green.offset / 8;
void setpixel32(int x, int y, int r,
blue_idx32 = vinfo.blue.offset / 8;
int g, int b, int a){ int pos;
transp_idx32 = vinfo.transp.offset / 8;
pos = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
S
(y+vinfo.yoffset) * finfo.line_length;
*(fb_map + pos + red_idx32
) = r;
*(fb_map + pos + blue_idx32
) = b;
*(fb_map + pos + green_idx32
}
) = g;
*(fb_map + pos + transp_idx32 ) = a;
La proyección del archivo en la memoria la realizamos con la ayuda de la función mmap: char *fb_map=(char*)mmap
S
(0, sc, PROT_READ | PROT_WRITE,
para programadores
S
del color. Nosotros necesitamos bytes. Es suficiente dividir los valores de desplazamiento por ocho. Podemos hacerlo de esta forma, ya que actuamos con el modo de 32 bits, donde a cada color le corresponden ocho bits:
Colocamos los píxeles
Durante la visualización de la imagen en la pantalla usaremos solamente una función de ayuda, es decir, setpixel32. El código de esta función lo presenta el Listado 3. El más complicado elemento que encontraremos allí es el señalamiento del lugar en la memoria, tomando en cuenta las coordenadas destinatarias x e y. La coordenada y es el número de la línea, en la que queremos ubicar el punto. El señalamiento a qué línea nos referimos lo realiza este fragmento del código: (y+vinfo.yoffset) * finfo.line_ length. En la primera parte señalamos el
MAP_SHARED, fb_handle, 0);
En la llamada de la mmap se encuentra una serie de parámetros. En el primero se puede dar la dirección inicial, de la cual se proyectará la memoria. En el ejemplo dimos cero, de manera que el sistema sólo genera la dirección adecuada. Después hay que dar la dimensión del área: es esta la variable sc. Más adelante definimos el modo de acceso: nos interesa la lectura y el guardar. El siguiente parámetro es el modo de la división de la memoria. El valor MAP_SHARED significa que la memoria será dividida con otros procesos. El siguiente parámetro es el filehandle, lo que significa que con la ayuda de mmap podemos también proyectar en la memoria otros archivos comunes. El último parámetro es el llamado desplazamiento: cero significa que no vamos a rechazar ninguno de los datos del principio del archivo proyectado. Como se puede notar, las acciones preparativas para hacer uso del framebuffer no son tan complicadas, pero hay que tomar en cuenta el orden de la proyección de los colores en el framebuffer. No siempre los colores están colocados en RGB o, como en el caso de nuestro modo de 32 bits, en los cuatro RGBA (A significa el canal alfa, llamado el canal de la transparencia). Muy frecuente es el modo BGRA. El consejo para las diferentes ubicaciones de los colores es muy fácil. La mencionada anteriormente estructura vinfo contiene el número del bit, sobre el cual se inicia el adecuado componente
Figura 2. Diagrama de la acción del visualizador de archivos gráficos.
www.lpmagazine.org
75
para programadores
El test, si fue dado un argumento extra en el momento de iniciar nuestro programa, revisa solamente si el parámetro argc de la función main es menor o mayor que dos. Después de este test, realizamos el inicio de la librería DevIL ilInit(); iluInit();
Figura 3. Configuración del soporte del framebuffer VESA para el núcleo 2.6.x
adecuado desplazamiento en la memoria y+vinfo.yoffset, y después multiplicamos este valor por la longitud total de la línea en bytes finfo.line_length. De esta forma sabemos en que lugar comienza la línea, en la cual queremos ubicar nuestro punto. Es suficiente agregar a este valor la expresión (x+vinfo.xoffset)
*
(vinfo.bits_per_
para buscar correctamente la dirección adecuada en la memoria del framebuffer. Como se puede ver, en esta parte de los cálculos nuevamente designamos el valor del dezplazamiento x+vinfo.xoffset, pero lo multiplicamos por el número de bytes vinfo.bits_per_pixel/8 (dividimos el número entero de bits en un pixel por ocho) que le corresponden a cada pixel. Nos queda solamente hacer uso del valor designado anteriormente de los números de los componentes de los colores, para poner el punto correctamente en el color necesario. Por ejemplo, para el componente verde del color se representa esto de la siguiente forma:
llama DevIL. Antes de que comencemos a crear el código, vale la pena pensar qué acciones realizará nuestro programa. El diagrama general del funcionamiento del visualizador lo representa la Figura 1. Al principio verificamos si ha sido dado el argumento (nombre del archivo) que será visualizado.
pixel/8)
picview imagen.jpg
Después obtenemos acceso al framebuffer y leemos el archivo i: es un momento muy importante; procuramos realizar tales conversiones con ayuda de API de la librería DevIL para que el formato de la imagen sea idéntico al formato del color de 32 bits, lo que nos facilita el proceso de visualizar la imagen. Además, si la imagen que hemos leído es mayor que la resolución disponible, realizamos su transformación. Cuando la imagen se encuentra en la pantalla, esperamos a pulsar la tecla [Enter] (es suficiente aplicar la función getchar).
La primera línea responde por el conjunto fundamental de los comandos, la segunda da marcha a un conjunto de funciones, en el que se encuentra una función muy cómoda para transformar la imagen. No nos preocuparemos por la terminación, puesto que las dos funciones se conectan a la cadena de las funciones de salida con ayuda de atexit. El siguiente elemento es establecer el principio de la imagen de tal forma que se encuentre en el extremo superior izquierdo. Debemos actuar de esta forma, porque algunos formatos, por ejemplo, bmp y tga registran la imagen patas arriba. Por esa razón, con ayuda de las funciones ilEnable y ilOriginFunc le ordenamos a la librería DevIL que la imagen tenga su principio en el extremo izquierdo (lo que concuerda con las tareas de la función setpixel32; cuando damos las coordenadas 0, 0, ponemos un punto en el extremo izquierdo). Una operación muy importante es establecer el tipo de filtro de la imagen durante el cambio de sus dimensiones. El filtro que deja una imagen de alta calidad es LANCZOS. Por esa razón, en nuestra aplicación aplicamos este tipo de filtro. Recordemos que, aunque da una imagen muy buena y clara, funciona bastante lento, así que durante la trasformación de imágenes mayores este proceso puede durar unos cuantos segundos. Como resultado tenemos: ilEnable(IL_ORIGIN_SET); ilOriginFunc(IL_ORIGIN_UPPER_LEFT); iluImageParameter(ILU_FILTER, ILU_SCALE_LANCZOS3);
*(fb_map + pos + green_idx32) = g;
La tarea principal – el visualizador de archivos gráficos
Nuestro programa tiene que soportar muchos formatos gráficos diferentes, y como ya he mencionado, el código fuente es pequeño. Esto resulta del hecho de que hacemos uso de otra librería para dar soporte a los archivos gráficos que se
76
Linux+ 2/2004
Listado 4. La conversión del formato de la paleta de colores if(ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_BGR24){ ilConvertPal(IL_PAL_RGB24); } if(ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_BGRA32 || ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_RGB32 || ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_BGR32 || ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_BGRA32){ ilConvertPal(IL_PAL_RGBA32); }
S
visualizador de archivos gráficos
Listado 5. Traslado de los datos de la imagen al framebuffer data=ilGetData(); if(ilGetInteger(IL_PALETTE_TYPE)==IL_PAL_NONE){ for(y=0;y<h;y++){ for(x=0;x<w;x++){ pos=(y * bytes_per_line) + ( x * bytes_per_pixel ); r=*(data + pos + off_r); g=*(data + pos + off_g); b=*(data + pos + off_b); setpixel32(fromx + x, fromy +y, r, g, b, 0); } } }
Después de establecer estos parámetros, podemos generar el identificador de la imagen. Todo el que haya escrito, aunque sea el mas pequeño, programa en OpenGL notará que esta parte de la interfaz de DevIL se parece mucho a API OpenGL. En primer lugar generamos el identificador: ilGenImages(1, &ImgId). Por supuesto, cuando queremos generar una mayor cantidad de identificadores es suficiente que el segundo argumento sea un array tipo ILuint. Cuando el identificador ha sido generado, lo debemos actualizar. Esto se hace de la siguiente forma: ilBindImage(ImgId). Si en el programa procesamos más imágenes diferentes, se debe recordar escoger la imagen adecuada con la ayuda de ilBindImage. Después de haber realizado estas actividades introductorias en nuestra aplicación con la ayuda de open_fb, obtenemos accesso al framebuffer y leemos la información básica. El ser de nuestro visualizador es la función DevILLoad: es precisamente ella la que realiza las tareas más importantes, es decir, lee la imagen, la somete a una
conversión indispensable y la visualiza en la pantalla.
La carga de la imagen, la conversión de la imagen y de la paleta
La primer actividad de la función DevILLoad es leer el archivo. No debemos incluso decir de qué tipo es este archivo, debido a que la librería sola lo reconoce. La lectura del archivo la realizamos con la ayuda de la función ilLoadImage, por ejemplo de la siguiente forma: if (!ilLoadImage(fname)){ printf(“No se puede abrir el
S
archivo”); return -1; }
Si no ha habido problemas realizamos la conversión de los colores guardados en la paleta (con tal de que dado archivo posea paleta). El Listado 4 contiene el código que realiza estas funciones. En el primer comando, si el tipo de paleta es BGR24 (sin el canal alfa), convertimos los colores al formato RGB24. En el segundo
para programadores
caso, si tenemos que ver con los colores ubicados en tres BGR, pero guardados en todos los 32 bits, ordenamos su ubicación en el formato RGBA32. La unificación de la descripción facilita la implementación del bucle que transporta los datos de la imagen al framebuffer. Después de haber realizado la conversión, verificamos si la imagen leída no es, por casualidad, mayor que la resolución disponible para el framebuffer. Hacemos uso de la función ilGetInteger, que, dependiendo de los parámetros que han sido dados, devuelve diferentes informaciones importantes sobre la imagen. Si ponemos en el argumento el valor IL_IMAGE_WIDTH, obtenemos el ancho de la imagen. Los dos primeros argumentos de la función que escala, iluScale, seguramente a nadie le extrañan (son las dimensiones del framebuffer), pero en el tercero se ha puesto la variable depth, lo que, sin duda, es sorprendente. No es el número de bits destinados a la descripción del color, sino la dimensión de la imagen, por lo general igual a uno. DevIL puede soportar las imágenes 3D, llamadas volume images: entonces este valor de la imagen puede cambiar. Como resultado tenemos:
S S vinfo.xres && ilGetInteger
if(ilGetInteger(IL_IMAGE_WIDTH) > (IL_IMAGE_HEIGHT) > vinfo.yres))
iluScale(vinfo.xres, vinfo.yres, depth);
Después de realizar la escala necesaria, hay que actualizar los datos básicos sobre la imagen, como las dimensiones, el número de bytes en un pixel y el número total de bytes en una línea de la imagen: w=ilGetInteger(IL_IMAGE_WIDTH); h=ilGetInteger(IL_IMAGE_HEIGHT); bytes_per_pixel=ilGetInteger
S
(IL_IMAGE_BYTES_PER_PIXEL); bytes_per_line=w * bytes_per_pixel;
Figura 4. Logo DevIL (u OpenIL) visualizado en el modo de consola
Si nuestro programa lee la imagen menor que la resolución disponible, pone la imagen en el centro de la pantalla. Para transportar la imagen al centro, a las variables fromx y fromy se les debe poner los valores adecuados. Para el valor x (y analógamente para y) se debe dividir entre dos el ancho del framebuffer (valor vinfo.xres) y restar la mitad del ancho de la imagen. De esta forma obtenemos el valor, con el que se debe horizontalmente desplazar la imagen para que la visualice
www.lpmagazine.org
77
para programadores
buffer en caso de que no tenemos paleta lo presenta el Listado 5. Antes de que comencemos a trasladar cualquier cosa, debemos leer el índice de los datos de la imagen. Lo devuelve la función llamada ilGetData:
Listado 6. Traslado de los datos de la imagen al framebuffer – versión de la imagen con la paleta de colores if(ilGetInteger(IL_PALETTE_TYPE)== IL_PAL_RGBA32){ pal=ilGetPalette(); for(y=0;y<h;y++){ for(x=0;x<w;x++){ pos=*(data + ((y * bytes_per_line) + ( x * bytes_per_pixel ))); r=*(pal + (pos * 4) + 0 ); g=*(pal + (pos * 4) + 1 ); b=*(pal + (pos * 4) + 2 ); setpixel32(fromx + x, fromy + y, r, g, b, 0); } } }
data=ilGetData();
S S
S
en el centro. El código que determina este valor es el siguiente:
Hagámonos ahora una pregunta: ¿qué significa que no tenemos una paleta de colores? Esto significa que cada color está escrito con la ayuda de RGB (o con los cuatro con el canal alfa) en la imagen (el caso con la paleta lo presentaré en el siguiente punto). Nuestro conocimiento adquirido durante la implementación de la función setpixel32 puede ser de nuevo utilizado, por lo que sabemos en que forma se debe calcular la posición en la imagen teniendo como fundamento dos coordenadas. En este caso concreto la posición la determinamos de la siguiente forma:
fromx=0; fromy=0; if(w < vinfo.xres && h < vinfo.yres) { fromx=(int) ( ((float)vinfo.xres / 2.0) ((float)w / 2.0) ); fromy=(int) ( ((float)vinfo.yres / 2.0) -
S
S
S
S
((float)h / 2.0) ); }
Nos queda todavía un elemento importante, esto es, la descripción de los colores en la misma imagen. La librería DevIL supone que los colores pueden ser descritos con la ayuda de dos sistemas: RGB o BGR, igual que con la paleta. Por esta razón, con la ayuda de ilGetInteger con el parámetro IL_ IMAGE_FORMAT comprobamos con qué tipo de ubicación de los colores tenemos que ver, y adecuadamente determinamos los índices; por ejemplo, para los colores BGR es así: if(ilGetInteger(IL_IMAGE_FORMAT)== IL_BGR || ilGetInteger
S
S
(IL_IMAGE_FORMAT)==IL_BGRA) { off_r=2; off_g=1; off_b=0; }
En el caso de la ubicación RGB, los índices de los colores en un pixel individual reciben respectivamente los valores: 0, 1, 2.
Visualización de la imagen
Nos queda por hacer la última pero muy importante función, que es el traslado de los datos de la imagen al framebuffer. El bucle que traslada los datos de la imagen al frame-
78
Linux+ 2/2004
pos=(y * bytes_per_line) + ( x *
S
y es la principal diferencia entre la imagen con paleta y sin paleta. En el primer caso, cada pixel tiene su propia descripción de los colores. En el caso de la paleta, el pixel en la imagen es sólo el número del color en la paleta. Para leer cuáles son los valores de RGB, debemos hacer uso de la paleta. Realizamos esta operación de la siguiente forma: el valor pos (hablando de otra forma, el número del color) lo multiplicamos por cuatro, ya que tantos bytes describe el pixel – RGBA32. Después de esta operación, aprovechando la aritmética de los índices, nos trasladamos al lugar adecuado de la paleta. Al final de esta operación agregamos adecuadamente 0, 1 y 2 para leer el valor para el color rojo, verde y azul. En el código esta operación se presenta de la siguiente forma: r=*(pal + (pos * 4) + 0 ); g=*(pal + (pos * 4) + 1 ); b=*(pal + (pos * 4) + 2 );
El único problema es la lectura de los colores. Al final del punto anterior hemos determinado los índices de los colores, así que aprovecharemos estos valores agregándolos a la determinada posición en la imagen:
Ya sólo nos queda poner el punto en el framebuffer con la ayuda de la función setpixel32. Y ¿cuál es la diferencia en el caso de la paleta RGB24? Tenemos aquí tres bytes en vez de cuatro, por tanto, la posición no la multiplicamos por cuatro, sino por tres. El resto del código se queda, por supuesto, sin cambios.
r=*(data + pos + off_r);
Resumen
bytes_per_pixel );
g=*(data + pos + off_g); b=*(data + pos + off_b);
Como puede verse, el proceso de la lectura es casi idéntico a la colocación de puntos.
Visualización de la imagen con paleta
En nuestra aplicación se soportan dos casos de paletas: RGB24 y RGBA32. Nos encargaremos sólo de un caso (RGBA32), porque se difencian entre sí sólo por un detalle. El índice de los datos ya lo hemos leído, pero todavía es necesario el índice para la paleta:
En Internet:
pal=ilGetPalette();
La posición en la imagen la indicamos igual que antes, pero esta vez a la variable pos le damos el valor, que está contenido en la siguiente dirección: pos=*(data + ((y * bytes_per_line) + ( x * bytes_per_pixel )));
Vemos que escribir un visualizador sencillo de archivos gráficos resultó ser bastante fácil. El único problema que debía ser resuelto son los colores. Por supuesto, si aplicamos otro modelo de colores, por ejemplo el modo de 16 bits, las operaciones en los bits serán más complicadas. El programa lo podemos enriquecer con más opciones, por ejemplo, guardar la imagen en otro formato. Es una tarea fácil, puesto que las posibilidades potenciales nos las da la librería DevIL. Animo a modificar nuestro visualizador y agregar nuevos elementos.
S
• •
Página principal de la librería DevIL: http://openil.sourceforge.net/ Información sobre el tema del comando mmap: http://www.opengroup.org/ onlinepubs/009695399/functions/ mmap.html
buena lectura tualności
piotrt@lpmagazine.org
sección llevada por Piotr Truszkowski
The Art of Unix Programming Autor: Eric Steven Raymond Editorial: Prentice Hall ISBN: 0-13-142901-9 Páginas: 888 Fecha de edición: 09/2003 Precio: 40,90 euros Cuando hace algunos meses apareció la primera información sobre la próxima edición de este libro, había voces que decían que quizá el autor escogió su título sin modestia. Sin embargo, cuando tomamos el libro en la mano, no podemos evitar la impresión de que fue escrita precisamente con este fin y de tal modo que se le pueda poner sin menor duda el título The Art of Unix Programming. Es una edición pensada desde el principio como un libro de culto: Eric Raymond, siendo una personalidad destacada del movimiento del Software Libre y programador experimentado, aprovecha los conocimientos y la autoridad de los trece iconos de Unix, incluyendo en su texto sus observaciones y comentarios. Entre estos iconos figuran, entre otros, Ken Thompson (creador de Unix) y Doug McIlroy (creador de la pipe Unix). La cuestión fundamental para el autor es la historia, tradición y cultura que se creó alrededor de Unix durante docenas de años de su existencia, y que convierte este sistema en algo único en el mundo de la informática, el dinámico mundo de la tecnología y del principio de no mirar atrás. El autor dividió el libro en cuatro partes. En la primera, Context, presenta los principios básicos de la programación de los sistemas Unix, es decir, la simplicidad, la modularidad y la claridad que contribuyeron al éxito de esta familia de sistemas operativos. Nos suministra también una breve e ingeniosa historia de Unix, desde sus orígenes a finales de los años 60 y a principios de los años 70, hasta la creación de Linux y explosión del movimiento Open Source en los años 90 del siglo XX. La segunda parte, la más amplia, Design, está dedicada, como se puede adivinar fácilmente, al diseño adecuado del proyecto; el autor de manera sistematizada aconseja en las cuestiones fundamentales, tales como el diseño adecuado de la interfaz de usuario y en las cuestiones aparentemente insignificantes: porqué nuestro programa no se debe dirigir hacia la salida estándar otra información que los errores reales del funcionamiento. Todo esto, enriquecido con casos de estudio, es decir, ejemplos concretos de los programas conocidos por todos y de las soluciones aplicadas. La tercera parte, Implementation, está dedicada, entre otros, a la selección del editor, sistema de control de la versión y debugging. Otra cuestión importante tratada allí es la selección del lenguaje de programación apropiado; Raymond formula una tesis bastante controvertida que en la mayoría de los casos C y C++ no son la mejor elección. En cambio, propone varios tipos de lenguajes de scripts y soluciones mixtas. La cuarta parte está dedicada a la Communidad (Community), sin la cual es difícil imaginarse cualquier proyecto Unix, sobre todo en estos tiempos en los que en este entrono triunfa el modelo de Software Libre. Los problemas allí tratados se refieren, entre otros, al traslado de los programas hacia otras arquitecturas, documentación y elección de licencias. Entre los suplementos encontramos Rootless Root: The Unix Koans of Master Foo, collección de narraciones divertidas escritas al estilo de los koan budhistas, cuyo protagonista es Maestro Foo y su discípulo Nubi que dan en su camino, entre otros, con el Usuario Común, Metodología y Script Kiddie. ¿Para quién es este libro? Para todos los que buscan su camino en el mundo del sistema Unix: tanto para los programadores experimentados como para los usuarios principiantes del sistema. No se trata de un libro que debe ser leído de cabo a rabo, no es su objetivo; tampoco quiere decir que no puede ser una lectura apasionante. Los novicios pueden leerlo como libro de cabecera y como remedio de los primeros fallos, mientras que los más avanzados seguramente desearán incluirlo en su biblioteca. Pero absolutamente todos con la satisfacción sentirán la fuerza del fenómeno que es Unix. Reseña: Witold Kieraś (witekk@lpmagazine.org)
Red Hat Linux and Fedora Unleashed Autores: Bill Ball, Hoyt Duff Editorial: Sams Publishing ISBN: 0-672-32629-9 Páginas: 1048 Fecha de edición: 01/2004 Precio: 94 euros Cada usuario de Linux debe disponer, al menos, de un buen libro sobre este sistema operativo que incluirá tanto la información básica sobre el manejo de Linux (aproximación a los asuntos típicos para cada sistema Unix) como los temas más avanzados, orientados hacia la distribución concreta de Linux. Un libro así para todos los usuarios de Red Hat, Fedora o Aurox es precisamente “Red Hat Linux and Fedora Unleashed”. ¿Por qué? Porque hay allí todo lo que se te antoje, incluso la programación en Perl o el uso de herramientas que permiten la ejecución de las aplicaciones desde Windows. En la primera parte descubrimos cómo instalar Fedora (Red Hat, Aurox) y cómo configurarla según nuestras necesidades. En la segunda parte nos enteramos de cómo administrar el sistema (adición de nuevos usuarios, ejecución de los servicios suplementarios, etc.). La tercera parte está dedicada a los servidores de servicios (DNS, web, FTP, correo electrónico). A la cuarta parte deben echar un vistazo todos los que están interesados en la programación y la aplicación práctica del sistema en oficina y en los multimedia. Al libro está adjunta Fedora Core 1 en dos versiones: en dos CD y un DVD. Es interesante un suplemento para recortar con los básicos comandos de Linux. Aunque el precio es alto, el libro es digno de recomendación: un libro así constituye una ayuda de mucho valor durante el trabajo con el sistema, no solamente en la versión adjunta, sino también en sus próximas ediciones (no envejece tan de prisa). Reseña: Krzysztof Krawczyk (krzysiek@lpmagazine.org) Agradecimientos para la empresa A.B.E. Marketing (http://www.abe.pl/html/english/) por habernos facilitado el acceso a los libros.
80
Linux+ 2/2004