www.shop.software.com.pl ¡Suscríbete a tus revistas favoritas y pide los números atrasados!
Ahora te puedes suscribir a tus revistas preferidas en tan sólo un momento y de manera segura. Te garantizamos: • precios preferibles, • pago en línea, • rapidez en atender tu pedido. ¡Suscripción segura a todas las revistas de Software-Wydawnictwo!
Pedido de suscripción
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. ..............................................................................................................
Población ....................................................................................................
Teléfono .................................................................................
Fax ........................................................................................
e-mail ..........................................................................................................
Suscripción a partir del No ............................................................
Título Software 2.0 Extra! (1 CD) Bimestral para programadores profesionales
número de ejemplares al año
número de suscripciones
a partir del número
Precio
6
38 €
Linux+DVD (2 DVDs) Mensual con dos DVDs dedicado a Linux
12
86 €
PHP Solutions (1 CD) Bimestral sobre la programación en PHP
6
38 €
PHP Solutions .PRO La suscripción a PHP Solutions que autoriza a anunciarse a lo largo de un año en todas las versiones lingüísticas (tamaño del anuncio: 5,4 x 2,7 cm, 300 caracteres)
6
95 €
Hakin9 – ¿cómo defenderse? Bimestral para las personas que se interesan por la seguridad de sistemas informáticos
6
38 €
Linux+ExtraPack (7 CDs) Las distribuciones de Linux más populares
4
50 €
Precio en total (número de suscripciones x precio)
Realizo el pago con: ¨ tarjeta de crédito no ¨ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN:ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM Deseo recibir la factura antes de realizar el pago ¨
Válida hasta
Fecha y firma obligatorias:
índice
¡La alegría de programar! rato la creación de programas como una afición, puesto que no me dedico a ella en plan profesional. Mi primera pasión fue desarrollar MUD (Multi User Dungeon) Arkadia, es decir, un juego textual de red. Consistía en elaborar el mundo y a sus habitantes, preparar las cofradías y los clubes, así como cuidar después del código ya listo (corrigiendo errores y ampliando la funcionalidad). Fue una tarea asombrosa que me mostró la alegría que es capaz de provocar la programación. Actualmente, me veo en una situación similar componiendo herramientas para mi Zaurus. Es fascinante lo satisfecho que se puede sentir uno al generar una aplicación simple para un PDA: frecuentemente contemplo su diminuto tamaño. Estoy seguro de que es un placer parecido al que siente el creador de un módulo del núcleo, así como un desarrollador que esté construyendo mecanismos para importar documentos a OpenOffice.org. Vale la pe-
La Redacción usa el sistema de composición automática
12
¡Advertencia! Venta del presente número sin el consentimiento del editor es ilícita e ilegal. Linux ® es una marca comercial registrada de Linus Torvalds.
Linux+ 2/2005
Krzysztof Krawczyk Redactor Jefe de Linux+
6
:
Descripción del contenido de los DVDs
mandrakelinux
10
Los DVDs incluidos en la revista han sido comprobados con el programa AntiVirenKit, producto de la empresa G Data Software Sp. z o.o.
na intentar programar de manera independiente, aunque sólo sea una aplicación muy sencilla del tipo programa para cambiar la resolución de pantalla. En este número de Linux+ nos centramos precisamente en el fascinante tema de producir programación propia, que algunos creen difícil y sólo abordable por profesionales. Resulta que basta adquirir unos conocimientos básicos y tener buenas ideas para comenzar el proyecto propio de una herramienta interesante. Os animamos a que publiquéis vuestras obras, desde luego, bajo una licencia tipo Open Source. En el DVD publicamos Gentoo 2004.3, una distribución de Linux estrechamente vinculada al tema. Por si alguien todavía no lo sabía, tradicionalmente se compila desde sus bases, esto es, desde los paquetes fuente. Nosotros hemos echado una mano a los usuarios más impacientes, permitiéndolos instalar el sistema también desde los paquetes binarios.
En este número de
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.
Piotr Truszkowski, Michał Niwicki
Actualidades: Novedades Witold Kieraś
Kernel
gentoo
Imprenta: Stella Maris
2
T
Tomasz Torcz
14
Debian
Bartosz Feński, Tomasz Napierała
15
Mandrakelinux Daniel Koć
16
Aurox
Karol Kozimor
17
Gentoo
Witold Kieraś
novedades
Mensual 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 Redactor de la edición: Michał Niwicki, mniwicki@lpmagazine.org Redactores adjuntos: Piotr Truszkowski, piotrt@lpmagazine.org Marek Bettman, marekb@lpmagazine.org Asistente de Redacción: Katarzyna Gajewska, kasiag@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: Małgorzata Janerka, Hanna Grafik-Krzymińska, Roberto Buchting Soza, Emil Oczepowski Correctoras: Rosario Ortega Serrano, Silvia López de Pariza Distribución: SGEL Avda Valdelaparra, No29, Polígono Industrial, 28108 Alcobendas (Madrid), España Dirección: Software–Wydawnictwo Sp. z o.o., ul. Lewartowskiego 6, 00-190 Varsovia, Polonia
índice
Tema del número
Herramientas de programación
Herramientas de programación
18
KDevelop, herramienta para crear aplicaciones con interfaz gráfica Marek Sawerwain
Software
32
Nicotine, cliente de la red SoulSeek Witold Kieraś
Nicotine es un cliente Linux de P2P SoulSeek que cuenta con capacidades similares a las de Kazaa o Emule. Gracias a ella, podemos buscar y descargar ficheros, así como hacerlos disponibles para otros usuarios de esta red.
34
Krusader, administrador de ficheros Witold Kieraś
No es difícil crear aplicaciones con una interfaz gráfica. Marek os demostrará cómo utilizar la librería QT y la herramienta Kdevelop con esta meta.
24
Scratchbox, herramienta para la compilación cruzada Veli Mankinen
La idea de la compilación cruzada consiste en emplear una máquina rápida para compilar programación dirigida a un procesador más lento y de arquitectura distinta. Veli Mankinen, uno de los autores de Scratchbox, un entorno que da soporte a la compilación cruzada, presenta las maneras de uso de esta programación.
Entrevista
28
Entrevista a Carlos Vélez Báez, jefe del proyecto Vidalinux Krzysztof Krawczyk
Este mes hablamos con Carlos Vélez Báez, jefe del grupo de desarrolladores de Vidalinux, una distribución camino de un desarrollo dinámico basada en Gentoo Linux.del sistema.
Soluciones móviles
30
MultiSync: sincronización del dispositivo móvil con el ordenador de oficina Krzysztof Wolski
Multisync es una aplicación que nos ayudará a sincronizar los datos de una aplicación tipo PIM que se guardan en un ordenador, con los datos de los respectivos programas en nuestros teléfonos móviles o PDA.
Krusader, un administrador de ficheros gráfico a lo Total Commander de Windows, es uno de los programas para KDE que más se valoran. Además de sus funciones típicas, también ayuda a montar discos, localizar ficheros concretos y conectarse con servidores ftp.
36
SoX, convertidor de formatos de sonido Piotr Machej
SoX (Sound eXchange) es un programa destinado a convertir formatos de sonido, a reproducir y a grabar música. Utilizándolo también se pueden añadir varios efectos a la banda sonora.
38
GFSGL, gestor de arranque de juegos Piotr Machej
Gracias a GFSGL podemos instalar en nuestro sistema no sólo los juegos dedicados a Linux, sino también los de Windows, que funcionan bajo Cedega, WineX o Wine. Asimismo, podemos indicar qué programa debe utilizarse para emular Windows, y cuál para hacerlo con Commodore C64 o DOS.
40
Munin, generador de listas y estadísticas Piotr Machej
Munin es un programa escrito en lenguaje Perl que va recogiendo varias informaciones sobre el uso de los recursos del sistema y los visualiza de una forma inteligible (a través de una página web), empleando RRDTool.
42
Dominions II, un juego de estrategia y fantasía Michał Niwicki
Dominions II es un juego de estrategia y fantasía que cuenta con una excelente presentación gráfica y una música atractiva, así como, una alta jugabilidad.
Primeros pasos
44
GRUB, gestor de arranque Piotr Machej
Hoy en día gran parte de los programas de arranque permite elegir uno de los sistemas instalados en el disco. GRUB (GRand Unified Bootloader) es uno de los más populares.
52
Trucos y truquillos Grzegorz Niewęgłowski
Equipo
54
Webcams bajo Linux Piotr Wolny
Las webcams pueden utilizarse para organizar encuentros en línea, grabar películas cortas o sacar fotos. También pueden aprovecharse para monitorizar locales.
62
Software RAID y LVM Piotr Wolny
Linux ofrece el soporte de dos mecanismos avanzados de almacenamiento de datos: Software RAID y Logical Volume Manager. Utilizándolos, podemos aumentar el rendimiento de la memoria masiva, así como mejorar la seguridad de las informaciones guardadas.
Para programadores
72
Cómo escribir un programa para cambiar la resolución de pantalla mediante la extensión RandR Marek Sawerwain
Este mes crearemos una aplicación que sirve para cambiar la resolución y los valores de refresco de la pantalla. Escribiremos el programa utilizando la librería GTK+. Para diseñar la interfaz gráfica de usuario aplicaremos el programa Glade.
Tests
78
IBM Thinkpad T41
79
Novell Linux Desktop 9
Michał Niwicki
Michał Niwicki 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.
¡Pide suscripción!
REGAL
O
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
En nuestra tienda virtual podrás adquirir todos los productos de la editorial Software-Wydawnictwo: shop.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. ...................................................................................................
Población, provincia ........................................................................
Teléfono ............................................................................................
Fax ....................................................................................................
E-mail ................................................................................................ Suscripción a partir del N° ..............................................................
Precio de suscripción anual Absender-Daten de Linux+: 86 € Realizo el pago con:
□ tarjeta de crédito n Válida hasta □ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO O
Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN: ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM
□ cheque a la dirección de la editorial Software-Wydawnictwo Deseo recibir la factura antes de realizar el pago □
Fecha y firma obligatorias:
descripción de DVDs
disco A
Gentoo Linux 2004.3 DVD
G
entoo Linux es una distribución de Linux bastante joven que va conquistando más y más aficionados. Su posibilidad de optimización se traduce en el uso de los paquetes fuente. En eso nos van a ayudar las herramientas destinadas para alcanzarlo. La versión de Gentoo Linux preparada por nuestra redacción no requiere ninguna conexión a Internet. El árbol de los puertos, con la programación cuidadosamente seleccionada, nos permite realizar una instalación muy simple y rápida, guardando todas las dependencias imprescindibles. Ya que el número actual de Linux+ viene dedicado a la programación y a las herramientas de programación comprendidas en un contexto muy amplio, en Gentoo Linux 2004.3 Linux+DVD Edition vais a descubrir un sinfín de programas para programadores (¡más de 1000 paquetes!): • • • • • • • • • • • • •
Anjuta; KDevelop; QtDesigner; Intel C++ Compiler; GCC; Eclipse; Mono; Perl; Python; Tcl/Tk; CrystalSpace; Irrlicht; Ogre.
Todas estas herramientas están disponibles con varios complementos. Ya que uno no sólo vive programando y a veces le tienta la idea de entregarse al ocio, no nos hemos olvidado de los juegos. Entre otros, jugaréis a los siguientes títulos:
Gentoo Linux 2004.3 Linux+DVD Edition permite emplear el núcleo 2.6.9 (queda también disponible el 2.4.26) y los entornos gráficos populares: KDE 3.3.1 y GNOME 2.8. Si no disponéis de un equipo que sea capaz de cumplir con los requisitos de esos entornos gráficos, en el sistema Portage descubriréis también otros entornos ligeros, como XFCE4 o Fluxbox.
Instalación de Gentoo en 13 pasos
Damos por hecho que utilizaremos los paquetes fuente y destinaremos todo el disco duro para instalar Gentoo allí: – – –
–
–
gentoo, tar -xvjpf stage1-x86-
–
6
Tuxracer; Frozen-Bubble; Cube; Pingus; Neverball; Falconseye; Planeshift; GL-117; Simutrans; Foobilard; Torcs; Boson; Scorched3D.
Linux+ 2/2005
2004.3.tar.bz2); copiamos el árbol Portage (cp -vg /mnt/cdrom/portage/portage-
genkernel –install all), el programa
–
–
–
descomprimimos (cd /mnt/gentoo/ usr, tar -xvjf portage-L+.tar.bz2); creamos el directorio distfiles (mkdir
Los paquetes binarios constituyen una alternativa a los paquetes fuente, ya que también podemos instalar desde ellos el sistema (de forma más rápida y más simple, pero menos eficaz); –
–
/mnt/gentoo/usr/portage/distfiles)
– –
– –
y copiamos allí los paquetes del DVD (cp -vg /mnt/cdrom/distfiles/full/* /mnt/gentoo/usr/portage/distfiles/); montamos el sistema de ficheros proc (mount -t proc none /mnt/gentoo/ proc) y realizamos chroot al entorno (chroot /mnt/gentoo /bin/bash); modificamos el fichero /etc/ make.conf (nano -w /etc/make.conf); empezamos la instalación de los elementos básicos del sistema (sh /usr/portage/scripts/bootstrap.sh) y, tras realizarla, construimos el sistema como tal (emerge system); fijamos el huso horario; instalamos el núcleo (emerge gentoodev-sources, emerge genkernel,
de arranque (emerge grub), la bitácora del sistema (emerge syslog-ng, rcupdate add syslog-ng default) y crond (emerge vixie-cron, rc-update add vixie-cron default), y añadimos coldplug al inicio del sistema; configuramos fstab (nano -w /etc/ fstab) y el programa de arranque (grub, nano -w /boot/grub/ grub.conf); reiniciamos el sistema.
Instalación del sistema desde los paquetes binarios en tres pasos
L+.tar.bz2 /mnt/gentoo/usr) y lo
– • • • • • • • • • • • • •
iniciamos el ordenador desde el DVD; arrancamos el programa cfdisk y creamos la tabla de particiones; mediante los comandos mkswap (mkswap /dev/hda1) y mkfs.ext3 (mkfs.ext3 /dev/hda2) formamos respectivamente: el espacio de intercambio y el sistema de ficheros en la partición root (10 GB como mínimo); la partición que acaba de generarse la montamos al directorio /mnt/gentoo (mount /dev/hda2 /mnt/gentoo); copiamos stage en el disco montado (cp -vg /mnt/cdrom/stages/stage1x86-2004.3.tar.bz2 /mnt/gentoo) y lo descomprimimos (cd /mnt/
Así puede presentarse nuestro Gentoo
–
en vez del fichero stage1-x862004.3.tar.bz2, copiamos y descomprimimos el fichero stage3L+.tar.bz2; después de haber copiado los paquetes de /mnt/cdrom/distfiles/full, también copiamos el fichero /mnt/ cdrom/distfiles/binary/packages-binL+.tar.bz2 al /mnt/gentoo/usr/portage y lo descomprimimos de la misma manera que los hemos hecho con Portage; los demás paquetes, especificados en la instalación de los paquetes fuente, p. ej. grub o syslog-ng, los instalamos utilizando el comando emerge -k nombre_paquete.
Cada una de las etapas de toda la instalación se explica en detalle en los documentos que quedan disponibles en el DVD en el directorio docs/handbook y docs/Linux+. ¡Qué lo paséis bien!
disco B
descripción de DVDs
¡
Games Knoppix 3.7 Games Knoppix es un verdadero chollo para los aficionados a los juegos de ordenador! Los estratégicos, los de aventuras, juegos de tabla y de destreza: son más de cien los programas de entretenimiento que han aparecido en la versión especial del sistema que se ha ideado en exclusiva para los jugadores.
¿Cómo instalarlo?
¡No hay que instalarlo! Games Knoppix es una distribución de Linux que se arranca directamente desde el CD. El sistema no graba nada en nuestro disco, de modo que no hay que tener miedo de que sevayan a estropear los datos allí guardados. Así que basta con insertar el medio en la unidad CD-ROM y reiniciar el ordenador. Después de un rato (el tiempo dependerá de la rapidez de nuestro ordenador) contaremos con una máquina de jugar completamente lista y manejable. Muchos juegos incluidos en el Games Knoppix 3.7 requieren una tarjeta con acelerador 3D, por eso al arrancar del sistema nos preguntará de si tenemos que conectar el soporte de ésta. Para iniciar GamesKnoppix, al arrancar el ordenador desde el DVD B, escribe knoppix y pulsa [Enter].
¿Qué hay en el disco?
Juegos, sobre todo. Además, se ha adjuntado a la distribución una decena de programas de utilidad que nos facilitan el trabajo en la red, así como la configuración del ordenador. Todos los que posean juegos viejos, que todavía operan bajo control del sistema DOS, encontrarán en la distribución el emulador DosBox, que permite arrancarlos. Games Knoppix se inician de forma estándar con el núcleo 2.4.27, pero de forma opcional es posible utilizar la versión 2.6.7, nueva y menos estable. El entorno gráfico por defecto es el KDE en la versión 3.2.3.
¿En qué vale la pena jugar?
En la distribución descubriremos muchos juegos atractivos y muy desarrollados que necesitan una parte mucho mayor de la memoria volátil, un procesador rápido y una tarjeta gráfica potente. Entre éstos conviene destacar:
Games Knoppix – a todos nos gusta jugar un poco
•
•
•
•
Boson – un juego de guerra estratégico, que consiste en aumentar el propio ejército y destruir las tropas del enemigo; FooBillard – simulador de billar tridimensional; es posible seleccionar uno de los tipos de billar más populares, así como organizar torneos a través de Internet; TuxRacer – una competición deportiva de invierno que consiste en conseguir la llegada más rápida a la meta; el protagonista del juego es un pingüino que resbala sobre su vientre; Globulation2 – un atractivo juego de estrategia en tiempo real; se trata de desarrollar una civilización asignando a unos bichos extraños sus microtareas.
Hipnotizadores y matadores del tiempo
Los juegos son como la comida: podemos salir a celebrar una cena de gala en un restaurante, pero también podemos picar cualquier cosa de paso. En Games Knoppix detectaremos también los juegos pequeños de ese tipo: •
•
•
•
•
contra todo bicho viviente y no exige nada del jugador, salvo que confirme su buen reflejo; Papá Patata – un juego educativo para los más jóvenes que consiste en vestir a una patata; Frozen Bubble – uno del los juegos más populares para Linux; consiste en dar golpes a unas bolas de color, también es posible competir con otro jugador; LBreakout2 – un clon del juego Arkanoid, donde hay que destrozar un muro rebotando una bola; es posible jugar varios partidos a través de Internet; Air Traffic Controller – un programa que permite que nos identifiquemos con un controlador de tráfico aéreo; conducimos los aviones y les asignamos los trayectos adecuados para que no choquen entre ellos.
Resumiendo
A todos nos gusta jugar de vez en cuando. Games Konoppix se convertirá, sin duda, en una de las principales fuentes del ocio durante las largas tardes del invierno.
Rafkill – un juego de destreza que nos recuerda los viejos juegos de tragaperras; consiste en disparar
www.lpmagazine.org
7
descripción de DVDs aktualności
Noticias Amarok 1.2 – beta Un programa popular y multifuncional para reproducir ficheros multimedia. Dispone de la función de catalogar sus recursos y está provisto de numerosos efectos de sonido, como: la mezcla de bandas sonoras en tiempo real, la resonancia, o la simulación del sonido espacial. Krusader 1.50 Un administrador gráfico de ficheros para el entorno KDE a lo Norton Commander. Es capaz de asignar los tipos de extensiones de ficheros a los programas adecuados; contiene también la opción de montaje dinámico de los dispositivos guardados en el fichero /etc/fstab. Dominions II Una estrategia fenomenal, un poco distinta de los demás juegos de este tipo. Pueden participar hasta diecisiete jugadores. Impresiona con sus gráficos y con su música medieval. El disco contiene la versión demo del juego, junto con sus manuales, en inglés. GParted 0.0.7 Programa avanzado para editar las particiones del disco duro. Si lo comparamos con su versión anterior se ha mejorado el soporte de sistemas de ficheros: ext2, ext3 y ReiserFS, además de agregarse la edición de particiones NTFS. GRUB 0.94 La nueva versión de uno de los programas de arranque más populares. Carga el sistema operativo indicado por el usuario en la memoria. Además, contiene una serie de extensiones, como la configuración del aspecto gráfico de la interfaz, la protección de las opciones de arranque con contraseña, y muchas más. Skype 0.92.12 Popular comunicador de Internet que permite conducir llamadas de voz en tiempo real. También hace posible (tras realizar un pago) llamar a teléfonos fijos y móviles.
disco B
Damn Small Linux 0.9.0.1
A
los minimalistas sin duda los alegrará el Damn Small Linux que publicamos en este disco: es una de las distribuciones de Linux más pequeñas, y al mismo tiempo, más rápidas. A pesar de su modesto tamaño, el sistema incorpora muchas aplicaciones prácticas: el paquete de oficina Siag Office está formado por un sencillo editor de texto y una hoja de cálculo, un visor de ficheros pdf, el programa de correo Sylpheed y el navegador web Firefox. En Damn Small Linux, el administrador de ventanas por defecto es Fluxbox, mientras que el sistema como tal funciona bajo control del núcleo 2.2.41. Damn Small Linux es una distribución tipo Live: para arrancarla basta con insertar el CD en el lector y reiniciar el ordenador; tras unos segundos, podre-
L
a navegación por las páginas web y el correo electrónico son los servicios más populares disponibles en la red. Últimamente han aparecido dos versiones nuevas de programas que hacen posible aprovechar estos servicios: Mozilla Firefox 1.0 y Mozilla Thunderbird 1.0. Firefox es un navegador popular, que contiene las soluciones que facilitan moverse entre las páginas web. Permite ver las páginas web en paneles, bloquea las emergentes no deseadas y contiene un sistema desarrollado de marcadores (ing. bookmarks). Una ventaja adicional de Firefox es la instalación automática de plugins: el navegador es capaz de localizar e instalar el soporte de aplicaciones escritas en Java y de las presentaciones preparadas en Flash.
Thunderbird, un avanzado cliente de correo
Thunderbird es un programa de correo que da soporte de todos los protocolos populares: SMTP, POP3, IMAP y NNTP. Permite buscar y filtrar con facilidad los mensajes que llegan. Contiene un filtro antispam que es fácil de usar y un libreta de direcciones; también es capaz de dar soporte de varias identidades dentro del marco de un solo perfil. La ventaja adicional de Thunderbird consiste en su capacidad de corrección ortográfica a la hora de escribir mensajes. http://www.firefox.com/ http://www.mozilla.org/ http://www.mozilla.org/products/ thunderbird/
Firefox 1.0
Linux+ 2/2005
mos disfrutar de un sistema totalmente eficaz. Podemos añadir, como nota curiosa, que es posible arrancar el Damn Small Linux desde el llamado flashdisk. Todo el sistema, junto con su entorno gráfico, ocupa menos de 50 megabytes. http://www.damnsmalllinux.org/
Firefox 1.0 y Thunderbird 1.0
Monkey-Bubble 0.3.2 Una combinación de juego lógico y de destreza basada en FrozenBubble. Consiste en ganar puntos acertando en unas bolas de color.
8
Un Linux realmente pequeño
disco B
Linux+ Live DVD
Noticias
L
inux+ Live es una distribución de Linux que se inicia desde el DVD. Para iniciar Linux+ Live, es suficiente fijar la unidad de CD como el dispositivo fundamental de arranque en la BIOS del ordenador, introducir el disco con nuestra distribución en la unidad y volver a arrancar el ordenador. Después de un momento, aparecerá el panel de bienvenida. Después de pulsar la tecla [Enter], comenzará el inicio de Linux+ Live. El sistema de manera automática detectará el equipo y configurará el entorno gráfico; durante el arranque hay que escoger el idioma que se utilizará en el sistema. Linux+ Live contiene, entre otros: • • •
el núcleo Linux 2.6 con muchos parches que aumentan su funcionalidad; el entorno gráfico de trabajo KDE 3.2.1; el software de programación Anjuta, Eclipse, Glade, KDevelop, Gambas, el compilador GCC, el entorno Sun Java SDK y las librerías de programación;
Mandrakelinux 10.1 – actualización Nuestra redacción ha incluido en el DVD más de doscientos cincuenta paquetes rpm, que son actualizaciones de la distribución Mandrakelinux 10.1 Official. http://www.mandrakesoft.com/
En primer plano Eclipse, y como fondo KDevelop
•
los navegadores web Konqueror y Mozilla.
Linux+ Live tiene como objetivo presentar los más importantes programas descritos en el número, pero sobre todo ha de aseguraros a vosotros, queridos Lectores, una gran porción de diversión: un entorno completo tanto para principiantes como para los programadores avanzados.
FreeSBIE 1.1
A
principios de diciembre de 2004 apareció una nueva versión del sistema: FreeSBIE. Es una distribución iniciada directamente desde el CD, que se basa en FreeBSD en la versión 5.3. Está pensada para los que necesitan aplicaciones indispensables para trabajar en la red, así como una serie de programas multimedia y juegos. La distribución contiene el popular navegador web Firefox, el comunicador GAIM, analizadores del movimiento y de la seguridad en la red, re-
descripción de DVDs
productores de películas, archivos de sonido y mucho más. Tenemos también a nuestra disposición dos populares gestores de ventanas: XFCE y Fluxbox. FreeSBIE, gracias al fácil instalador DragonFlyBSD, se puede instalar en el disco duro sin problemas. Desgraciadamente, para contentarse con un trabajo confortable en la versión Live, es necesario un equipo fuerte, de al menos 256 megabytes de memoria RAM.
Scratchbox La versión más nueva del conjunto de herramientas para los programadores que utilizan la compilación para varias plataformas. En el DVD se encuentran los paquetes tipo rpm, deb, los archivos fuentes destinados para diferentes plataformas de equipos (ARM, x86, PowerPC) y herramientas, junto a su completa documentación. http://www.scratchbox.org/ Eclipse La versión más nueva de la plataforma de desarrolladores Eclipse, destinada a la creación de aplicaciones. En el DVD se ha incluido la versión SDK, que contiene la plataforma Java, el entorno integrado de plugins y una documentación completa. http://www.eclipse.org/ Abiword 2.2 Editor de texto para varias plataformas, que forma parte del proyecto GNOME Office. Está destinado principalmente para las personas acostumbradas a utilizar el programa MS Word. En el DVD se encuentran los paquetes de instalación de la versión española del programa. http://www.abisource.com/ Documentación HOWTO Más de 2.500 documentos que describen la manera de resolver algunos de los problemas relacionados con Linux. Firestarter 1.0 Herramienta para filtrar, monitorear y acceder a la conexión a Internet. http://www.fs-security.com/ Essays1743 Conjunto de tradicionales fuentes inglesas. Python 2.4 Un popular lenguaje de programación que en los últimos tiempos está ganando cada vez mayor reconocimiento de los programadores. http://www.python.org/
FreeSBIE 1.1 durante el trabajo
www.lpmagazine.org
9
actualidades aktualności
Noticias Fin de The Linux Show The Linux Show, una audición de radio por Internet, termina su actividad después de siete años. Las causas se deben a problemas económicos de sus fabricantes. Como dice Jeff Gerhardt, Sun Microsystems, el patrocinador actual de la audición, de repente se ha resignado de apoyarlos económicamente. Desaparecieron, también, los fabricantes de los equipos de computación, que reforzaban la caja de la audición con anuncios pagados. The Linux Show no está en condiciones de sobrevivir, manteniéndose solamente de los donativos de los oyentes. La última audición tuvo lugar el 21 de diciembre. http://www.newsforge.com/ article.pl?sid=04/12/01/035210 Firefox cada vez más popular... Durante las primeras semanas desde el momento de aparecer en el mercado la versión 1.0 del navegador Firefox varios millones de usuarios lo han descargado de Internet. Esta tendencia se mantiene todo el tiempo. Las empresas que se dedican a la estadíastica del movimiento en Internet confirman, también, un número aumentado de usuarios que utilizan los navegadores basados en el motor Gecko – la mayoría de ellos es por supuesto el nuevo Firefox. Por primera vez desde hace muchos años, la participación de Internet Explorer en el mercado ha caído por debajo del 90%. Y todo parece indicar que seguirá cayendo... ...por lo tanto, ¡es tiempo de Thunderbird! El proyecto hermano del navegador Firefox, el cliente del correo electrónico Thunderbird, le sigue los pasos a Firefox. En el momento de publicar este número de Linux+, debería ser accesible la versión 1.0 de este programa. ¿Repetirá Thunderbird el éxito de Firefox? En cuanto a esto, tiene predisposiciones, porque el nivel de seguridad del jugador principal en este mercado, de los programas Outlook y Outlook Express, pertenecientes a MS, dejan todo el tiempo mucho que desear. Puede ser que dentro de poco, la comunidad concentrada alrededor de Thunderbird comience una campaña tan efectiva y lograda a como hemos visto hace poco en el caso de Firefox... http://forums.mozillazine.org/ viewtopic.php?p=1020843
10
Linux+ 2/2005
novedades
¿Están condenados los pingüinos a la extinción?
F
rank Ottink, en su artículo Sun will shine again and leave Linux in its shade, mencionó varias causas por las cuales, en su opinión, el Solaris abierto le quitará clase a Linux y lo condenará a la marginación. En primer lugar, adujo que Solaris es una marca conocida y su sistema es, al menos, tan bueno como Linux, por lo que Sun tiene la intención de emitirlo bajo licencia libre, siendo esto así una garantía de que Solaris sobrevivirá incluso a una eventual caída de la empresa que lo ha creado. En segundo lugar, Solaris será compatible con la arquitectura x86 (reconocida como una de las más baratas), con lo que esta rebaja de costos ya no será un argumento que hable en favor de la migración a Linux. En tercer lugar, Solaris ya tiene un número grande de clientes, lo que le convertirá en un sistema opensource, un argumento que tampoco hablará a favor de Linux. En cuarto lugar, Sun tiene una buena opinión como proveedor del soporte técnico para su sistema – puede ser que incluso sea mejor que los de los fabricantes de las distribuciones comerciales de Linux, tales como Red Hat o Novell. Y en quinto lugar, Sun garantiza la unidad del proyecto y elimina el peligro de que Solaris se divida en varias versiones que no sean compatibles entre sí. El artículo de Frank Ottink creó una pequeña tormenta en el mundo Linux. Aparecieron muchas polémicas en otros servicios de Internet al igual que en el texto original. No hay que ser un experto para darse cuenta de que Ottink no comprende exactamente cuál es el fenómeno del software libre – y precisamente a esto le llamaron la atención sus adversarios. En primer lugar, la declaración de Ottink de que la etiqueta Open Source atrae inmediatamente, de alguna forma mágica, a una gran cantidad de programadores que quieran dedicar su tiempo y esfuerzo al desarrollo del proyecto, es totalmente errónea. Como certeramente observó uno de los lectores del artículo de Ottink, la experiencia demuestra que a Sun no le será del todo fácil reunir, alrededor de Solaris, una mayor cantidad de la comunidad de desarrolladores. El único ejemplo conocido de un sistema operativo opensource desarrollado con el apoyo de una empresa es Open Darwin, cuya influencia en el entorno del software libre es, delicadamente hablando, insignificante. Linux trabajó fuertemente para alcanzar su posición y confianza – no es tan fácil repetir el mismo éxito. Además,
Solaris no amenaza a Linux
despierta dudas la declaración misma sobre la apertura del código de Solaris – aún no se sabe bajo qué licencia será editado, y éste puede ser un ingrediente extraordinariamente importante que decida si este sistema logra concentrar un adecuado grupo grande de desarrolladores alrededor de sí mismo. Las últimas decisiones de Sun relacionadas con la liberación de la licencia de Java desilusionaron al entorno Open Source, puesto que dicha licencia aún es muy restrictiva y no cumple de ninguna forma aunque sean las líneas Open Source Initiative. Desde el punto de vista del desarrollo de la comunidad, la licencia más favorable para Solaris sería la licencia compatible con GPL, pero Sun aún no ha tomado una decisión en este asunto. Así que existen las dudas justificadas de que la apertura del código de Solaris declarada con pompa desde hace mucho puede ser una gran desilusión. En lo que se refiere a asustar a los potenciales clientes con la división de Linux en varios proyectos incompatibles, se puede igualar únicamente a la propaganda de una gran empresa informática – hasta este momento no ha sucedido nada parecido y no se ven razones, por las cuales habría de suceder así. Una semana después de haberse publicado el artículo, Frank Ottink declaró públicamente, que se había equivocado. Agradeció a sus oponentes el haberle llamado la atención sobre los problemas que anteriormente no había tenido en cuenta. Reconoció que tenían razón y aceptó sus argumentos. Lo más curioso es que, en el transcurso de una corta semana, la discusión pasó un largo camino – desde la declaración con pompa del triunfo de Solaris sobre Linux, hasta el asunto de que si Solaris estaría en condiciones de sobrevivir sin apoyo financiero y de propaganda por parte de Sun Microsystems. Muchos afirman que sus oportunidades serían pocas... http://www.yeald.com/Yeald/a/32111/sun_ will_shine_again_and_leave_linux_in_its_ shade.html http://www.newsforge.com/article.pl?sid=04/ 11/22/2247248
news@lpmagazine.org
El estandár de XML para la UE cada vez más cercano
N
o hace mucho, informamos sobre una unidad especializada de la Comisión Europea que estimula a la creación de un estándar de intercambio de documentos uniforme y abierto, basado en el formato XML. A esta llamada respondió muy rápidamente Sun Microsystems, fabricante de StarOffice y el principal patrocinador del proyecto OpenOffice.org. Sun promueve el estandár XML OASIS e igualmente procura su aceptación por el International Standard Organisation (ISO), por lo que recibió la iniciativa de la Comisión Europea con mucho entusiasmo. La idea fue apoyada también por Microsoft, señalando que la especificación de su formato, basado en XML, y que es utilizado por MS Office, WordXML, es ya de libre acceso. A la iniciativa se ha agregado también IBM, informando que ya había notificado a OASIS su interés de participar en los trabajos del especial comité técnico sobre el estandár. IBM ha señalado también que ya ofrece productos que cumplen las suposiciones de trabajo del proyecto del estandár OASIS, que ha surgido hasta este momento. Open Forum Europe (OFE) en su análisis ha señalado la necesidad de preparar
el estandár abierto de intercambio de documentos. Ha hecho una llamativa a las administraciones estatales de los países miembros de la UE para que pongan atención al formato XML, aprovechado por el paquete de oficina gratuito y abierto OpenOffice.org. Los representantes de Forum invitan también a los fabricantes de software a señalar el estandár abierto como utilizado por defecto por sus programas. En el documento publicado por OFE How Open Can Europe Get? se puede encontrar un pequeño análisis de las cualidades de los formatos PDF, OpenOffice XML y WordXML. OFE señala, sin embargo, que este último no está abierto totalmente, por lo que se encuentran en el tag de tipo <bindata>, que contienen informaciones específicas para la plataforma, es decir, que pueden provocar problemas en otros entornos con su utilización. Todas las iniciativas positivas alrededor de la idea del estandár uniforme y abierto del intercambio de documentos permiten tener la esperanza de que en un futuro cercano se convertirá en una realidad. http://europa.eu.int/ida/en/document/3463
Open Source en la pantalla pequeña
H
a surgido el primer programa de televisión en el mundo dedicado al software Open Source – desgraciadamente, lejos de nosotros, porque lo ha hecho en la República Sudafricana. El programa se llama Go_Open y está dividido en trece partes. El programa se ha realizado con la ayuda de Shuttleworth Foundation, organización que promueve el software libre en las escuelas sudafricanas. Go_Open presenta las historias de las implementaciones y migraciones terminadas con éxito, y además presenta la silueta de los personajes más En la primera parte, se ha incluido una conferencia con Richard Stallman, y los invitados de las otras partes serán, entre otros, Eric Raymond y a lo mejor Linus Torvalds. De acuerdo a lo que dicen los mismos, productores, el programa está destinado a los usuarios comunes de ordenadores, que pudieron no haberse encontrado nunca con la idea del software libre. Tiene como objetivo animarlos a escoger precisamente tales soluciones, y, en un futuro, es posible que también a un mayor implicación en la vida de la comunidad. Ya al principio de su existencia, el programa ha contado con un gran interés: en el concurso telefónico anun-
Página web del programa de televisión Go_Open
ciado durante la primera parte, en una hora participaron unos mil telespectadores. La producción del programa no fue barata – el proyecto se ha cerrado con una suma de alrededor de 450 mil libras británicas, junto al pago del tiempo en antena. Todo lo pagaron los patrocinadores – la mencionada anteriormente Shuttleworth Foundation, y también las sucursales sudafricanas de la empresa Hewlett-Packard, CSIR – instituto africano de investigaciones, y la empresa Canonical – patrocinador de la distribución Ubuntu. Dentro de poco la audición será accesible también para descargarse desde Internet. http://www.go-opensource.org/go_open/
sección llevada por Witold Kieraś
Noticias Problemas de salud de Patrick Volkerding Patrick Volkerding, creador y fuerza impulsora de la distribución Slackware, tiene problemas serios de salud. Se sabe que sufre de pleuropericarditis, aunque este no es su único problema; lo peor es que los médicos no saben decir qué es lo que en verdad padece Patrick. Hasta que Patrick no se ponga mejor, la actualización de los paquetes Slackware la harán Piter Punk y Bruno Henrique Collovini. Todos tienen la esperanza del pronto regreso del padre de la distribución. ftp://ftp.slackware.com/pub/slackware/ slackware-current/PAT-NEEDSYOUR-HELP.txt “Mejor no utilicéis IE” La oficina finlandesa para la Regulación de la Comunicación ha hecho un llamamiento a los usuarios de Internet para que, hasta el momento de parchear las lagunas encontradas hace poco en la seguridad de Internet Explorer, cambien el navegador a otro. Se refiere a un error peligroso de la utilización inadecuada del tag IFRAME (llamado marco flotante). ¿Será ésta otra oportunidad para Firefox? Open Source Consortium Más de 60 empresas en Gran Bretaña han convocado hace poco la existencia del Open Source Consortium: una organización sin ánimo de lucro, que tiene como fin la promoción del software Open Source en el sector público. OSC quiere apoyar la implementación de Open Source en Gran Bretaña y garantizar su calidad. http://www.opensourceconsortium.org/ Más servidores Linux La venta trimestral de servidores Linux, por primera vez ha traspasado la suma de un mil millones de dólares, lo que representa más del 9% del mercado. En comparación al período analógico del año 2003, esto significa un aumento de hasta el 42,6%. En comparación al año anterior, el valor del mercado de los servidores aumentó en un 5,5%. Los sistemas de la familia Windows aumentaron sus valores en un 13,3%. http://www.techworld.com/opsys/ news/index.cfm?NewsID=2676&Page =3&pagePos=20
www.lpmagazine.org
11
actualidades aktualności
Noticias Principios del script hotplug acortado De vez en cuando aparecen voces de descontento del script estándar arrancado como /sbin/hotplug. El principal reproche es el script de shell, lo que, sumado al creciente número de eventos que lo llaman, provoca un aumento considerable de carga del sistema. En respuesta, Greg Kroah-Hartman, el autor del script original, ha creado un equivalente funcional en lenguaje C. El archivo binario construido estáticamente de klibc ocupa alrededor de 4 kB y se arranca enseguida. Greg ha anunciado sus planes de rescribir otros scripts auxiliares del mecanismo hotplug también en C. Se aprovecha, así, de la experiencia ganada durante los cuatro últimos años de presencia de hotplug en el núcleo, dejando, al mismo tiempo, su soporte para núcleos antiguos (2.4.x). http://lkml.org/lkml/2004/11/18/297 Rendimiento de los sistemas de ficheros con atributos extensos Todos los sistemas de ficheros de Linux más importantes (ext2/3, XFS, Reiserfs3/4, JFS, tmpfs) soportan también, además de a los típicos de Linux, los atributos extensos – xattrs. Hasta ahora han estado en uso esporádicamente. Los beneficiarios principales son SELinux, que guarda en ellos los atributos de seguridad, y Beagle, un programa para indexar los datos de usuario, que añade a los atributos la información de la última indexación realizada. La situación puede cambiar radicalmente con la publicación del servicio popular Samba en su cuarta versión, que guarda en xattr muchas informaciones necesarias para la completa emulación de los sistemas que provienen de la empresa Microsoft. Andrew Tridgell dirigía las pruebas de rendimiento del nuevo demonio. Al principio los resultados fueron aplastantes, ya que la incorporación de los atributos extensos causó la enorme disminución de la velocidad. Los resultados se mejoraron con el tamaño ampliado de i-node. Esta operación puede realizar gracias a XFS o a los parches experimentales para ext3. Las pruebas pueden impulsar el que se incluyan los parches para ext3 en la línea principal del núcleo. En la discusión sobre el rendimiento también ha tomado parte Hans Reiser, analizando minuciosamente qué tipo de optimización habría que aplicar a Reiser4fs.
12
Linux+ 2/2005
kernel
Archivos de cabecera del núcleo
A
finales del año pasado hubo un periodo de intensa discusión sobre la muy importante cuestión de los archivos de cabecera en relación a la compilación de los programas en el espacio de usuario. No fue la primera discusión de este tipo, pero esta vez tomó la palabra nada más y nada menos que Linus Torvalds. Sus declaraciones harán posibles actuaciones concretas. ¿Qué son las cabeceras mencionadas? Son archivos en los que está definida la interfaz entre el núcleo del sistema y los programas de espacio de usuario. Su usuario principal es, por lo general, la librería del lenguaje C; en GNU/Linux es generalmente glibc, pero a veces puede ser uClibc, dietlibc o klibc. Los autores de programas que tienen una relación más profunda con el núcleo también están interesados en estas cabeceras. Las cabeceras del núcleo 2.6 no se adaptan al uso directo, lo que a menudo causa problemas a los programadores. Hace un tiempo que se ha quejado de esto Joerg Schilling, el autor del programa cdrecord. Las cabeceras del núcleo están llenas de construcciones que en el entorno estándar causan errores de compilación. Es más, la presencia de las cabeceras en el directorio /usr/include provocaba que algunos programadores usaran las estructuras (p. ej. bloqueos de bucle) sin darse cuenta de que no funcionaban en el espacio de usuario, creando de este modo un software defectuoso. Incluso en algunos casos las informaciones exportadas por el núcleo no están en un formato fácil de tratar. En muchas ocasiones, la estructura adaptada a una antigua librería libc en la versión 4 ó 5 se entrega al espacio de usuario. Hace unos años esto significó una simplificación, pero el tiempo corre y el núcleo cambia. Y el núcleo tiene ahora que traducir los datos al formato antiguo para exportarlos. El receptor glibc los recibe de este modo y luego… los traduce a otra representación, en muchos casos a la misma que la original disponible en el núcleo. El problema surge cuando glibc no puede seguir el paso a los cambios en el núcleo. El programador tiene que copiar las novedades que le interesan o usar el archivo de cabecera del núcleo. La segunda solución muchas veces causa el conflicto con el archivo suministrado por glibc,
que incluye una parte de las definiciones. La situación es incluso peor cuando un núcleo nuevo aparece cada mes o dos meces, mientras glibc se publica menos de una vez al año. Además glibc no utiliza las cabeceras del núcleo, menos cuatro o cinco casos, sino su propia copia. Antes de usar las cabeceras hay que limpiarlas. Por ejemplo, las que usa la distribución Fedora Core tienen que pasar por unos cambios radicales. Se quitan todos los fragmentos accesibles al definir la constante _ _KERNEL_ _. Todas las funciones marcadas por inline también deben desaparecer. Esta notación indica claramente que la función es un fragmento del núcleo. La existencia de la “trampa de licencia” también tiene importancia. Si en el código fuente incluimos, aun inconscientemente, un fragmento bajo la licencia del núcleo, o sea, GPL, tendremos que licenciar del mismo modo el programa entero. De las cabeceras desaparecen también todas las estructuras que contienen los primitivos de sincronización como semáforos o bloqueos de bucle. No tienen ningún uso fuera del núcleo entonces sin riesgo podemos asumir que estos fragmentos no se dedican al espacio de usuario. Como podemos ver, la adaptación de las cabeceras desde el núcleo para la compilación de programas es una tarea enorme. Además, falta de un repositorio centralizado de las cabeceras corregidas significaría la necesidad de realizar la tarea por casi todos creadores de las distribuciones de Linux. En esta situación Mariusz Mazur, autor de la distribución PLD Linux, en diciembre de 2003 empezó la limpieza de las cabeceras y la adaptación para la compilación de software en la distribución. La mayor prueba de su trabajo fue la construcción de la librería glibc y, luego, del resto de PLD a base de su obra. Para la persona que se ocupa de las cabeceras cada edición de una versión nueva del núcleo significa hojear una colección considerable (hasta 1.5 MB) de diferencias entre las versiones, encontrar los cambios importantes e introducir correcciones. Gran parte de las tareas (p. ej. comprobar cuáles archivos ya no se compilan) se puede realizar con el script, pero hay momentos en los que la intervención del hombre es imprescindible. En el caso
kernel@lpmagazine.org
sección llevada por Tomasz Torcz
Noticias de los nuevos archivos de cabecera hay que adivinar un poco si representan la API o constituyen una descripción de las estructuras internas del núcleo. Los primeros hay que limpiarlos y los segundos tienen que rechazarse. Este trabajo fatigoso es recompensado por la distribución de la versión de las cabeceras limpiada por Mariusz. Estas cabeceras se tratan como casi oficiales y su dirección frecuentemente aparece en LKML. Es interesante que Mariusz Mazur admita que no sabe mucho sobre el núcleo de Linux. En el trabajo con las cabeceras le basta el conocimiento del lenguaje C y la habilidad de programar. Como podemos ver, el conocimiento profundo de las estructuras del núcleo de Linux no es necesario para dirigir durante más de un año un proyecto aprovechado por toda la comunidad de usuarios de Linux. Probablemente dentro de poco el trabajo de Mariusz no va a ser necesario. Ha empezado el proceso de ordenar los ar-
La página principal del kernel de Linux
chivos de cabecera. La idea no es complicada y Al Viro ha mostrado en el ejemplo de las cabeceras AmigaFS, que la división y limpieza de los archivos ocupa diez minutos de trabajo de un programador familiarizado con el subsistema. Hasta ahora el obstáculo ha sido la falta de acuerdo acerca de la posición y jerarquía de los directorios de las cabeceras para espacio de usuario. Afortunadamente, Linus por fin determinó los directorios en los que van a encontrarse las cabeceras. También expresó la apertura a todos los parches que ordenen los archivos de cabecera en el núcleo.
Sistemas de ficheros de espacio de usuario
L
inux es un núcleo monolítico. A grandes rasgos, esto quiere decir que todos los subsistemas importantes están incluidos directamente en el núcleo de sistema. Se trata también de los sistemas de ficheros que en las soluciones alternativas – micronúcleos – funcionan como los procesos en el espacio de usuario. Por supuesto, también en el caso de los núcleos monolíticos no existe ningún obstáculo para crear una interfaz que facilite la implementación de los sistemas de ficheros como un proceso de usuario. Uno de estos proyectos es FUSE. Desarrollado desde hace mucho tiempo, últimamente ha sido nominado para incluirse a la línea principal de núcleo. Para sorpresa de muchos, Linus Torvalds, que generalmente está en contra de este tipo de soluciones, lo aceptó bajo la condición de introducir unos cambios. La causa de una parte de su reclamación fue un malentendido: su conocimiento de FUSE se basaba en la versión antigua del código que, mientras tanto, había evolucionado mucho. La creación de sistema de ficheros en el espacio de usuario garantiza mucho más libertad que en el núcleo. El programador puede utilizar varias librerías y
programar en cualquier lenguaje. Existen los pseudosistemas de ficheros que facilitan el montaje de webmail (!), escritos en Python. Desgraciadamente, nada es gratis. Es suficiente imaginar una situación en que la gran parte de memoria está llena de los búfers destinados para escribirse a través de FUSE. En cierto momento el sistema necesita la memoria y, para preparar un poco de espacio libre, exige el registro de los búfers. Los ordenes que se ejecutan a través de FUSE llegan a un demonio que implementa un determinado sistema de ficheros. Ahora, basta con que el demonio necesitara un poco de memoria para el registro: le pedirá esta memoria al núcleo. Y puesto que el registro se ha iniciado por la falta anterior de memoria, la situación se empeora y el sistema puede colgarse. Desgraciadamente, no es un problema fácil de solucionar. Como una consolación puede servir el hecho de que los sistemas de ficheros en red (NFS, Samba, CIFS) también padecen los mismos problemas. Éstos normalmente no cuelgan los servidores, por tanto, a lo mejor FUSE puede resultar seguro. http://fuse.sourceforge.net/
Sistema de ficheros sueltos Bernard Hatt ya ha dejado atrás su etapa de indecisión. Ha creado un sistema de ficheros dedicado a guardar solamente un archivo. La idea parece no tener sentido, pero SFFS (Single File File System) es una alternativa para usar la partición cruda que se dedica a una base de datos, una imagen de DVD o a un repositorio de servidor NNTP. Es una alternativa que trae los beneficios del tipo: la información sobre la longitud del archivo, los derechos, identificación del propietario, etc. La versión original de SFFS no es más lenta que el sistema de ficheros ext2; al contrario, puede alcanzar mejores resultados en un 40%. No es de extrañar si tenemos en cuenta la sencillez de guardar un archivo particular en el disco. Vale la pena mencionar los intentos anteriores de crear sistemas de ficheros con esta misma funcionalidad: rawfs y smugfs. http://www.arkady.demon.co.uk/sffs Mudanza de Linux Device Drivers El libro Linux Device Drivers es una publicación imprescindible para todos que quieren empezar a programar el núcleo de Linux. Además está publicada con licencia, lo que permite compartir su contenido entero en Internet sin efectuar ningún pago. La segunda edición de este libro ha desaparecido del directorio del editor al mismo tiempo que de su página. El sitio nuevo donde se puede conseguir es el Linux Weekly News. El autor ha anunciado la tercera edición inglesa para febrero. http://lwn.net/Kernel/LDD2/ Diversión con EFI La abreviatura EFI quiere decir Extensible Firmware Interface. Es una manera de comunicación con BIOS o su equivalente, promocionada por Intel y otras grandes empresas. EFI es común en la plataforma Itanium, pero no está provisto que aparecezca en los ordenadores de sobremesa en un futuro cercano. A pesar de esto podemos conocer su funcionamiento: EFI exige una partición tipo VFAT, en la que se encuentran el programa cargador y el núcleo. El disco puede dividirse en particiones de manera tradicional o como GUID Partition Type, un tipo específico de EFI. GPT es servido por el programa Parted. El paso siguiente es la grabación de la versión binaria de EFI en un disquete con el que se arrancara el equipo. De este modo eludimos la falta de esta solución en BIOS. Solamente nos queda utilizar el programa cargador ELILO y podremos usar el núcleo con el servicio Extensible Firmware Interface. http://lkml.org/lkml/2004/12/1/83
www.lpmagazine.org
13
actualidades aktualności
Noticias Otros miles y miles de ordenadores con Debian... Europcar transformó sus 1.500 ordenadores en las oficinas de las sucursales locales de los clientes delegados, que se basan en Debian, y está en proceso trasladar los 3.500 siguientes al sistema GNU/Linux en su sede central. http://news.zdnet.co.uk/software/ linuxunix/0,39020390,39175484,00.htm Listas de paquetes a través de LDAP Sean Finney anunció que estaba trabajando en la implementación de una estructura alternativa de listas de paquetes que utilizaba Lightweight Directory Access Protocol (LDAP). El uso de los filtros de búsqueda para los marcadores del tiempo aceleraría las actualizaciones de las listas de paquetes, pero apt, de momento, está diseñado con la condición de que puede descargar la lista de paquetes de una forma exactamente igual a como se descargan los paquetes como tales. http://lists.debian.org/debian-devel/ 2004/12/msg00290.html En busca del proceso más eficaz de publicar una distribución Lex Hider inició el debate acerca de las alternativas para el proceso actual de publicar distribuciones que derivó en comentarios sobre qué quiere decir realmente una edición estable, sobre el tamaño de Debian, así como sobre el grado de complicación del árbol de las dependencias que se iba aumentando. Con todo, Joey Hess ha construido una página Wiki para las propuestas que se refieren a la edición y para la discusión sobre sus puntos débiles existentes. http://lists.debian.org/debian-devel/ 2004/11/msg00887.html http://wiki.debian.net/index.cgi?Releas eProposals Las actualidades sobre Debian a través de RSS Greg Stark ha estado meditando si las Debian Weekly News estaban disponibles a través de RSS. Romain Francoise observó que GMANE suministraba RSS a varias listas que se referían al Software Libre, incluyendo las actualidades sobre Debian (formato RSS y blog). Sin embargo, por ahora el proyecto Debian no suministra ninguna fuente RSS oficial – se buscan voluntarios que escriban el código adecuado. http://lists.debian.org/debian-devel/ 2004/11/msg00772.html
14
Linux+ 2/2005
debian
debian@lpmagazine.org
sección llevada por B. Feński, T. Napierała
Debian y AMD64
L
os nuevos procesadores de 64 bits de AMD han llegado a ser cada vez más populares y, lo que es más importante, cada vez más baratos. Para aprovechar plenamente sus capacidades, el sistema operativo tiene que ofrecer el soporte adecuado. La mayoría de las distribuciones de Linux que dominan en el mercado (Gentoo, Fedora Core, Mandrakelinux, SUSE, así como PLD) ya están propiamente preparadas. Y, respecto a esta cuestión, ¿cómo marcha la siguiente edición de Debian que se está aproximando? Desafortunadamente, debido a que el soporte de la arquitectura en cuestión ha entrado en su fase estable demasiado tarde, Sarge no la incorporará oficialmente. De hacerse así, esto demandaría excesivos cambios, lo que retrasaría esta edición que por sí sola ya se va retrasando horriblemente. Por otro lado, este hecho no quiere decir, de ninguna forma, que haya que olvidarse del dúo: Debian y AMD64. Tenemos que conformarnos con la versión estable no oficial, aunque desarrollada por los desarrolladores oficiales. A los puristas les queda el uso de la arquitectura estándar i386, a la que esta generación de procesadores AMD también da soporte. El soporte de 64 bits puede realizarse de dos modos. O bien se trata de un sistema puro de 64 bits que carece de la posibilidad de arrancar las aplicaciones compiladas para los 32 bits, o bien es el llamado multiarch, que permite arrancar tanto las aplicaciones compiladas en un entorno de 64 bits, como las más populares y difundidas, esto es, las de 32 bits. Actualmente, los desarrolladores de Debian se concentran en crear el primero de los dos tipos mencionados, y eso se debe a que la mezcla de ambos tipos de aplicaciones, y en consecuencia, de sus librerías, todavía no está estandarizada y prácticamente cada una de las distribuciones la hace a su propia manera. El proyecto Debian quiere sistematizar estas soluciones y establecer algunos estándares que podrían emplearse no sólo en el caso que acaba de discutirse, sino también para todas las demás arquitecturas, así como para las soluciones que permitan arrancar las aplicaciones compiladas para la arquitectura sparc sobre la arquitectura powerpc.
Durante la conferencia DebConf4 Matt Taggart y Tollef Fog Heen presentaron sus propuestas para dar soluciones a una serie de problemas que puedan surgir acompañando a este tipo de soluciones. ¿Qué puede esperar alguien que, de todas formas, se decida a utilizar el puerto de Debian preparado especialmente para los últimos procesadores de AMD? La gran mayoría de los paquetes (97%) se crean correctamente, usando las capacidades de la nueva arquitectura. El 3% restante es, sobre todo, programación de fuentes cerrados, así que los problemas no deben de extrañar a nadie. No obstante, el grupo de programas problemáticos incorpora también, entre otros, OpenOffice.org, cuya preparación, a pesar de que sus fuentes son abiertos, no es ninguna tarea trivial. Por suerte, la falta de la versión de 64 bits de este popular entorno de oficina no significa nada que haya que renunciarlo por completo. Los problemas de este tipo también se ven solucionados, al menos temporalmente, ya que es posible arrancar los programas de 32 bits en el entorno especialmente preparado chroot, lo cual, en la actualidad, se lleva a cabo con éxito por los desarrolladores. Ésta resulta una solución poco molesta, en particular debido a que el número de los programas problemáticos es de verdad limitado. Las guías adecuadas que hablan de cómo preparar un sistema mezclado de este tipo rápida y eficazmente están colocadas en la documentación de la versión AMD64 de Debian. Las soluciones de este tipo se refieren, sobre todo, a los sistemas instalados en ordenadores de uso diario (los llamados ordenadores de escritorio). En el caso de los servidores o enrutadores, es decir, las máquinas sobre las que rara vez se puede ver siquiera un servidor X Window, sin hablar de un paquete de oficina, pueden emplear la versión de Debian de 64 bits sin ningún problema. Tan sólo hay que acostumbrarse a que es una versión no oficial. http://debian-amd64.alioth.debian.org/ http://people.debian.org/~taggart/talks/ debconf4-multiarch/multiarch.html https://alioth.debian.org/docman/view.php/ 30192/21/debian-amd64-howto.html
actualidades aktualności
mandrakelinux
mandrakelinux@lpmagazine.org
Un creativo gestor de paquetes
E
l problema de los sistemas de paquetes diferentes y no compatibles entre sí para Linux vuelve de vez en cuando. Además de los tipos más importantes tales como RPM, DEB o TGZ, existen todavía varios formatos diferentes, incluso entre los paquetes principales de esta misma familia, que han sido preparados para una misma distribución; aunque no siempre se pueden aplicar sin problemas en otra. Por lo general, esto resulta de la terminología y de las dependencias distintas entre los paquetes. La solución para resolver estos problemas es Smart Package Manager. Smart es realmente un meta-gestor, esto significa que utiliza los tres géneros de paquetes más populares mencionados anteriormente con ayuda de los programas adecuados (rpm, dpkg o pkgtool). Por la falta de reglas apropiadas no es posible mezclar las dependencias entre paquetes de diferentes tipos, pero sí se puede utilizar todo su repositorio; actualmente existen los siguientes formatos: APT (para .deb y .rpm), RPM-MetaData, usados por yum, los canales de Novell Red Carpet, RPM Header List, los ya conocidos de los discos de instalación Red Hat y Conectiva, los directorios de RPM sin index, URPMI de Mandrakelinux, repositorios Slackware y, además, descripciones de los repositorios de espejo en formatos up2date y Conectivy. Smart Package Manager se ha probado hasta este momento en las distribuciones Conectiva, Debian y Fedora Core. Con su ayuda, las mejores soluciones accesibles en distintas versiones de los paquetes son escogidas automáticamente, con los que no siempre pueden
El Interface Smart Package Manager no por casualidad se parece al de Synaptica – ambos han sido creados por el mismo autor
trabajar apt-get/apt-rpm o yum. La lógica del gestor permite escoger los paquetes para instalar de un número menor al de los más nuevos; esto tan sólo permite cumplir todas las dependencias (el archivo README describe exactamente cuatro ejemplos de este tipo) teniendo en cuenta las prioridades dadas. Smart se las arregla con el escenario con un sistema de paquetes incoherente, y también sabe repararlo. El programa es modular, así que ofrece para escoger una interfaz textual al estilo aptget, un interface gráfico basado en la librería GTK+ (con la intermediación de pygtk, ya que está escrito generalmente en Python) y la capa interactiva. El autor de SmartPM es Gustavo Niemeyer, de la brasileña Conectiva, tutor del puerto APT-RPM y del gestor gráfico de los paquetes Synaptic. Smart está en este momento en la fase de prueba beta. http://smartpm.org/ http://autopackage.org/
Monkey Bubble
¿
Quién no conoce el excelente juego Frozen Bubble? Creo que tan sólo unos pocos hasta este momento no han tenido la ocasión de convencerse de cómo puede atraer la atención durante largo tiempo. Monkey Bubble es su primo cercano, copia del juego Bust'a'move. En lugar de un simpático pingüino, aquí tenemos un mono, y de fondo aparecen motivos selváticos. Sin embargo, desde la versión 0.3.2, la mayor atracción del juego reside en la posibilidad de jugar a través de la Red, incluso entre cuatro personas. Los últimos cambios en el paquete para Mandrakelinux son el parche para Gstreamer y el icono de la aplicación. La instalación del juego consiste en dar el comando del administrador urpmi monkey-bubble en el modo textual o en escogerla en el insta-
En el torneo de red pueden tomar parte hasta cuatro participantes
lador gráfico, pero, para esto último, hay que tener registrado Contrib en el sistema el repositorio.
sección llevada por Daniel Koć
Noticias Skype 0.92.0.12 Skype es un comunicador de Internet, cuyos creadores se concentraron, sobre todo, en las conversaciones de voz a través de la Red (VoIP), aunque también es posible la conversación tradicional de forma escrita y el envío de archivos. El programa puede funcionar incluso fuera del cortafuegos de la red. El protocolo de Skype utiliza las conexiones tipo p2p, gracias a lo cual garantiza una buena calidad del sonido en su clase. El programa tiene traducciones a varios idiomas y es accesible en forma de paquetes RPM para la distribución Mandrakelinux 9 y más nuevas. La edición beta para Linux más nueva no tiene todavía todas las funciones que están accesibles en la versión para MS Windows, pero funciona de manera estable y ya se puede usar normalmente. http://www.skype.com/products/skype/ linux/ http://dot.kde.org/1095235415/ Gran deshielo Después de la publicación de Mandrakelinux Official 10.1 en noviembre, se terminó el estado de suspensión del desarrollo intensivo de la distribución y en la rama Cooker de nuevo ha aparecido una gran cantidad de nuevos paquetes. A los más importantes pertenecen la reciente edición de los entornos gráficos KDE (3.3.1) y GNOME (2.8.1), el paquete de oficina KOffice 1.3.5, el programa para dibujo técnico QCad 2.0.4.0, el procesador gráfico de la composición LyX 1.3.5 y el juego de estrategia FreeCiv 1.14.2. Como preparación para la siguiente edición de Mandrakelinux, se ha cambiado también el número de la versión de 10.1 a 10.2. http://www.mandrakelinux.com/en/ cookerdevel.php3 Mandrakelinux 10.1 PPC Con cierto retraso en relación a la versión más popular para los procesadores de la familia x86, apareció también la edición Mandrakelinux 10.1 para los procesadores PowerPC. Como parte de la distribución, se ha incluido el núcleo más nuevo 2.6.8.1, el subsistema gráfico X11R6.7, OpenOffice.org 1.1.3, Mozilla 1.7.2, GNOME 2.6 y KDE 3.2. Una novedad muy útil en esta versión es la posibilidad de instalar y cargar el sistema desde herramientas exteriores conectadas a través de los puertos USB y FireWire. La edición PPC oficialmente no es distribuida por Mandrakesoft, por lo que su desarrollo se lleva a cabo con la fuerza de la comunidad, y su creador principal es Christiaan Welvaart. http://qa.mandrakesoft.com/twiki/bin/view/ Main/Mandrakelinux101PpcReleaseNotes
http://home.gna.org/monkeybubble/
www.lpmagazine.org
15
actualidades aktualności
Noticias Aurox en E.E.U.U. Existe la posibilidad de que dentro de poco Aurox llegue a los Estados Unidos. Se han terminado precisamente los trabajos en la versión 10.1 US y, en este momento, perduran las conversaciones con las redes americanas y con los distribuidores. Si las negociaciones se terminan con éxito, entonces, en el primer trimestre del año 2005, la primera parte de la distribución polaca más grande de Aurox navegará hacia los Estados Unidos. No será este el primer viaje de Aurox más allá del océano, ya que desde hace varios meses la versión española de Aurox es accesible en México. Aurox en los ordenadores Maxdata Maxdata, el fabricante alemán de equipos de ordenador, continúa agregando el sistema Aurox a los notebooks y a los modelos desktop. A partir de enero del año 2005, Aurox 10.1 se ha agregado a los modelos m-book, eco, vision y a la serie Pro, así como a todos los PCs. Como dice Anna Gidyńska, directora del departamento Software y Hardware de la empresa Aurox, en este momento duran las conversaciones con otros distribudores de ordenadores de mesa y notebooks. Puede ser que dentro de poco, cada vez más empresas ofrezcan Aurox como una alternativa para otros sistemas operativos, adjuntos a los nuevos ordenadores. http://maxdata.de/
aurox
aurox@lpmagazine.org
Actualizado PHP
I
nmediatamente después de la edición de Aurox 10.1, se encontró un error en el paquete adjunto a él, php-4.3.910.1.aur.1. El error aparece durante la prueba de utilización de los paquetes que utlizan las funciones construidas en PHP para el uso de las expresiones regulares (perl compatible regular expressions). En lugar del resultado del script se visualiza un comunicado parecido a éste: Warning:
PHP con la librería del sistema para la utilización de las expresiones regulares, con la cual por lo que parece no puede servirla. La solución es cargar el paquete actualizado de los repositorios de Aurox o recompilar el paquete con la utilización de la librería interna pcre (hay que cambiar la opción --with-pcre-regex=/usr a la --with-pcre-regex).
preg_match: internal pcre_fullinfo()
http://aurox.org/ http://php.net/
error -3.
La causa es la compilación de
Cambios en Aurox 10.2
L
os trabajos en Aurox 10.2 ya se acercan a su final. A diferencia de los cambios en las dos últimas versiones, las correcciones tienen aquí un carácter remarcablemente evolutivo. Estos son unos cambios relacionados, sobre todo, con, por ejemplo, la actualización de Security Enhanced Linux, un sistema avanzado para la administración de acceso, desarrollado por National Security Agency. Además de esto, Postfix, tenido en cuenta por muchos expertos como el más seguro, ha reemplazado a Sendmail en el papel de servidor de correo por defecto. Además, el lugar de MySQL 4.0 lo ha ocupado la serie 4.1, reconocida como lista para los entornos de producción. A los programadores, seguramente, les
alegrará Python 2.3.4 y Perl 5.8.5. Los usuarios de seguro se alegrarán del nuevoYuma, que funciona ahora más rápido y trabaja mejor con las dependencias. KDE 3.3.2 alegra a la vista, ya que se han corregido los errores de la versión anterior. Además, han aparecido nuevos drivers para las tarjetas de redes inalámbricas y se ha mejorado también el trabajo con algunos laptops. Tenemos la esperanza de que la versión 10.2 le dará a los usuarios más satisfacción que la versión anterior. http://aurox.org/
Nuevos servicios en el Año Nuevo A partir de enero arranca un servicio de prueba: Internet Update. Gracias a él, se podrán descargar los paquetes de Aurox (desde la versión 10.1) desde la Red y efectuar actualizaciones de la versión que ya se poseía de Aurox. Ésto se realizará utilizando las herramientas ya existentes (yum) junto con los certificados de seguridad. Además, los paquetes rpm existentes se firmarán con el objetivo de confirmar su originalidad. También en enero ha arrancado el servicio de soporte técnico para los usuarios de Aurox. Gracias a ello, cada problema que aparezca al utilizar el sistema Aurox, será rápidamente solucionado por su departamento técnico. A partir de la versión 10.2, Aurox ofrecerá un soporte técnico de 7 días gratuito, muy útil durante la instalación del sistema y durante la configuración primaria del ordenador. Los trabajos en el nuevo Aurox aún continúan...
16
Linux+ 2/2005
sección llevada por Karol Kozimor
actualidades aktualności
gentoo
gentoo@lpmagazine.org
Es el momento de los núcleos 2.6.x
G
entoo es una de las distribuciones de Linux que con mayor aceleridad ofrece a sus usuarios el acceso a las versiones recientes de software gracias al sistema Portage. Por otro lado, leyendo la documentación actualizada de Gentoo, podemos tener la impresión de que sus autores tienen una actitud muy conservadora con respecto a las versiones recién publicadas de varios programas. El caso más radical es el del núcleo del sistema. Mientras la mayoría de las distribuciones pasaron hace mucho ya a los núcleos de la rama 2.6.x, los autores de la documentación de Gentoo siguen recomendando el núcleo 2.4.x predefinido. Parece que es una política completamente consciente de los desarrolladores, pero estea situación no puede durar mucho, porque la práctica de los usuarios verificará aun las suposiciones teoréticas más fuertes. La inmensa cantidad de novedades que trae la versión 2.6.x, desde los servicios de varios dispositivos nuevos hasta el subsistema de sonido ALSA, es la razón por la cual pocos usuarios deciden instalar ya la versión vieja del núcleo. Por suerte, dentro de poco desde la versión 2005.0, el núcleo de Gentoo será por defecto uno de la rama 2.6.x. Ya en la versión 2004.3 LiveCD funcionaba bajo el control del dicho núcleo, lo que se encontró con
una acogida buena por parte de los usuarios y los probadores. Además, se ha cumplido ya la migración parcial, en la versión 2004.3 para las arquitecturas menos populares como ppc, ppc64, amd64 o ia64, fue recomendada la versión 2.6.x del núcleo. En el caso de la arquitectura x86, la más popular pues la que exige la mayor precaución, han decidido aplazar la fecha de la migración definitiva. A partir de la versión Gentoo 2005.0 los paquetes gentoo-dev-sources cambiaran el nombre por gentoo-sources, como otros paquetes con los núcleos (p.ej. development-sources se va a llamar vanilla-sources). Por supuesto los que querrán usar el núcleo viejo no serán abandonados, la distribución seguirá con el soporte para el núcleo 2.4.x. Los desarrolladores han hecho de Gentoo una distribución del software más reciente (bleeding edge) y al mismo tiempo muy conservadora, como Debian, que es un rasgo muy valorado, sobre todo en el entorno de producción. Para los que han esperado la bendición oficial, los desarrolladores han preparado la documentación detallada de la migración al núcleo nuevo. Vale la pena conocerla. http://www.gentoo.org/doc/en/migration-to2.6.xml/
Emerge gráficamente
S
i hubiéramos medido la demanda de software con el número de los proyectos que surgen para realizar las funciones dadas, la interfaz gráfica para Portage y el comando emerge con certeza habrían sido en la cabeza. Al principio era el proyecto Kpportage, es fácil de adivinar que iba a ser un programa vinculado con KDE. Desgraciadamente, a los autores les faltó entusiasmo para llevarlo a la versión 1.0 y actualmente ni siquiera aparece en el árbol de Portage. Gentoo no tolera el vacío y actualmente tenemos por lo menos tres proyectos desarrollados paralelamente para realizar funciones parecidas. Dos de ellos son proyectos para KDE. El primero, Guitoo, aspira ser una aplicación separada y el segundo, Kentoo, se integra con el Centro de Control de KDE. El tercero de los proyectos mencionados es Porthole, basado en GTK (entonces dedicado a GNOME). De los tres el más interesante parece ser el Guitoo, porque a pesar de las funciones estándar como búsqueda en el árbol y actualización del sistema ofrece también
Guitoo gana a sus rivales ofreciendo Gentoo Watcher
la herramienta Gentoo Watcher. Es una aplicación pequeña escondida en la bandeja del sistema que sigue los recursos RSS de la página en búsqueda de los nuevos paquetes y comprueba los informes recientes de seguridad GLSA (Gentoo Linux Security Advisories). Gracias a Gentoo Watcher podemos con un solo clic mandar a Guitoo la demanda de actualización del paquete elegido. http://guitoo.sourceforge.net/ http://www.ralfhoelzer.com/kentoo.html
sección llevada por Witold Kieraś
Noticias Gentoo en DVD Gentoo Store ofrece a la venta la versión 2004.3 completa de Gentoo Linux para la arquitectura x86 que incluye los paquetes binarios para todas las subarquitecturas soportadas, es decir, x86, i686, Pentium 3, Pentium 4 y Athlon XP. Todo esto en un DVD bootable. En la tienda se puede encontrar un juego de dos DVDs que contienen un archivo completo de distfiles de la versión 2004.3 Gentoo, incluyendo los códigos fuente de los programas, excepto de la sección de juegos por falta de espacio en los discos. Una parte de la ganancia de la venta se transferirá a la cuenta de Gentoo Foundation. http://store.gentoo.org/ Repositorio de scripts La idea de la creación de un repositorio central de los scripts para Gentoo que sirva de ayuda en la administración del sistema, surgió hace más de un año. Por aquel entonces el proyecto no salió fuera de la fase inicial, por falta de manos de obra. Patrick Laue, uno de los desarrolladores de Gentoo, decidió tomar la iniciativa y creó un repositorio de script provisorio que con el tiempo puede convertirse en una parte oficial de la distribución. Los usuarios pueden mandar sus scripts a Patrick. Suponemos que estarán disponibles como public domain (dominio público), pero si el autor tuviera una visión distinta, debería adjuntar al script la información acerca de la licencia. http://gentooexperimental.org/scripts/ http://www.gentoo.org/proj/en/glep/glep0015.html Gentoo preinstalado La empresa Genesi S.à.r.l. de Luxemburgo ha comenzado la venta de sus ordenadores Open Desktop Workstations, basados en el procesador PegasosPPC, con el sistema Gentoo Linux 2004.3 preinstalado. Es la primera vez que se ofrece un equipo con Gentoo a bordo. Esperamos que no sea el último. http://www.genesi.lu/ Larry the Cow Superstar Con motivo de Gentoo-Day (llamado también G-Day), organizado recientemente en Italia, Peach, un usuario italiano de Gentoo y frecuentador del foro, creó un par de gráficos y carteles. En la mayoría de ellos aparece Larry de Cow, mascota no oficial de la distribución. Peach facilitó sus trabajos en la licencia GPL. http://forums.gentoo.org/ viewtopic.php?t=257123
www.lpmagazine.org
17
herramientas de programación
vrvfeavda adfvawsvd ghwhrt nf hgg mgfvc xvbd rbwbbb
KDevelop,
herramienta para crear aplicaciones con interfaz gráfica Marek Sawerwain
C
uando queremos conocer una herramienta y verificar su utilidad en el trabajo, es aconsejable hacerlo realizando un trabajo concreto. Supongamos que queremos escribir un pequeño programa que será superposición gráfica para el programa Wget. KDE nos ofrece un software para los programadores muy útil llamado KDevelop. En este artículo demostraremos cómo conseguir el objetivo definido arriba con su ayuda, y, al mismo tiempo, probaremos que esta aplicación merece ser recomendada.
Algunos principios para empezar
En DVD
En el DVD se encuentra el código fuente del programa y todos los listados del artículo.
18
Linux+ 2/2005
La interfaz de nuestro programa parece muy modesta. Con dos botones, uno de ellos para cerrar la ventana y el otro para empezar el proceso de descarga del fichero, nos debe bastar. Necesitamos también el componente de tipo QLineEdit que llamaremos AddressText. En él ponemos la dirección del fichero que deseamos descargar. Puesto que realizamos la descarga del fichero con ayuda de otra aplicación (es más, se trata del modo de consola), interceptaremos la salida estándar hacia la que Wget envía todo tipo de mensajes durante su actividad. Utilizamos para ello widget QtextEdit, ya que es una herramienta perfecta para esto. Como siempre, se aconseja preparar un pequeño esquema en el que presentaremos los eventos más importantes que sucedan en nuestro programa. El
esquema está presentado en la Figura 1. Como vemos, el proceso de descarga del fichero está compuesto de algunas
Instalación del programa KDevelop
Puesto que ha pasado mucho tiempo desde el lanzamiento de la versión 3.0 del programa, que la mayoría de las distribuciones de Linux ofrece, basta tan sólo instalar el paquete que incluye KDevelop. Después de la instalación puede ocurrir que no podamos establecer la opción Ejecutar automake y compañía. Resulta que KDevelop requiere la versión Automake superior de 1.6, y Autoconf superior de 2.5 para su correcto funcionamiento. Este problema aparece, por ejemplo, en la versión Mandrakelinux 10.1, sin embargo, la solución es muy sencilla: basta instalar los paquetes adecuados. A la utilización de Kdevelop se vincula también otro problema: después de crear el proyecto y realizar algunos trabajos con él, puede suceder que KDevelop no quiera releer nuestro trabajo, generando la señal 11. La solución es suprimir dos ficheros en el directorio del proyecto: el primero posee la extensión kdevses, y el otro pcs. Durante la instalación de Kdevelop es aconsejable asegurarnos de si también se instalará la documentación, ya que la herramienta estudiada tiene un módulo de documentación excelente que es muy al escribir cualquier aplicación, incluso tan sencilla como nuestro proyecto.
kdevelop
herramientas de programación
visualizarán en la ventana inferior del programa. Una vez finalizado el trabajo del script configure, procederemos a la compilación del proyecto presionando la tecla [F8] o escogiendo del menú Construir la opción Construir proyecto. Ejecutamos el programa creado pulsando las teclas [Shift]+[F9] del menú Construir, la opción Ejecutar programa.
Diseñamos el formulario
Figura 1. Principales eventos del programa
tareas menores. La primera es conocer la dirección del fichero – supongamos que la dirección la da el usuario. Luego, cuando ya disponemos de la dirección, estamos preparados para la llamada del programa Wget. KDE ofrece una clase lista llamada KProcess que soporta esta tarea. Su función más importante es permitir interceptar los datos dirigidos hacia la salida estándar (ing. stdout) y la salida de error estándar (ing. stderr) de una manera fácil, lo cual, a veces, resulta muy útil.
Creamos el proyecto
El primer paso es la creación de un proyecto nuevo en KDevelop. No olvidemos escribir nuestro programa para el entorno KDE. Después de ejecutar el programa, pasamos al menú Proyecto. En él seleccionamos Nuevo proyecto.... Entonces, se abre una ventana parecida a la de la Figura 2. En la lista buscamos la rama C++, y luego KDE, donde encontramos la posición Simple KDE Application. En Propiedades debemos determinar el Nombre de aplicación. Vamos a suponer que el proyecto se llama wget_gui. Los
demás campos no nos interesan para nuestro proyecto. A continuación, presionamos el botón Siguiente para pasar a la ventana consecutiva donde escogeremos el sistema de control de la versión. A nosotros no nos hace falta esta elección, puesto que la aplicación que hemos creado no requiere el trabajo en grupo. Después, pulsamos otra vez el botón Siguiente, y nos aparece la ventana donde está el texto de la licencia. Este texto viene adjunto con cada fichero de cabecera. Si deseamos que para cada fichero de este tipo esté adjunto otro tipo de información, lo definiremos en este lugar. Cuando volvemos a presionar Siguiente, esta vez el botón cambia a la etiqueta Finalizar y al pulsarlo se genera el esqueleto básico del proyecto. Antes de compilar debemos realizar dos acciones más. En la ventana Construir, seleccionamos la opción Ejecutar automake y compañía. Transcurridos algunos segundos, tiempo en el que el programa habrá creado todos los scripts, seleccionaremos del mismo menú Construir la opción Ejecutar configure. Todos los mensajes se
Después de crear el proyecto, lo siguiente es preparar la ventana del formulario. En la ventana de arriba Gestor de automake (a la derecha de la ventana principal con el código) escogemos la rama con nuestro proyecto, es decir, wget_gui, y luego el directorio src. Cuando hacemos doble clic con el botón derecho del ratón en cualquier fichero en la ventana de abajo Gestor de automake, aparece un pequeño menú con algunas opciones. De entre todas, escogemos la opción Crear nuevo archivo.... Vemos entonces la ventana presentada en la Figura 3. En el campo Nombre de archivo escribimos wget_gui_ widget.ui, y luego escogemos el tipo del fichero Widget. En este momento, creamos un widget que se conectará con la ventana principal de nuestra aplicación. Accedemos a la ventana de creación de este fichero escogiendo del menú Archivo la opción Nuevo. Después de ejecutar esta operación procederemos a crear la interfaz con ayuda de QtDesigner. Desgraciadamente, si utilizamos la nueva versión de KDevelop, después de hacer doble clic en el fichero wget_gui_widget.ui, solamente se ejecutará el navegador KUIViewer y, sin embargo, a nosotros nos hace falta QtDesigner. Para esto, basta seleccionar el submenú Abrir con con el botón derecho del ratón y dentro de las opciones visualizadas elegir Qt3 Designer. Colocar dos botones (PushButton de la sección Buttons, la ventana Toolbox)
Figura 2. Creación del nuevo proyecto
www.lpmagazine.org
19
herramientas de programación
y dos componentes (LineEdit y TextEdit de la sección Input) no debería ocasionar problemas, pero hay que explicar correctamente las señales correspondientes. Desde el menú Edit escogemos la posición Slots... y declaramos dos funciones: DownloadBTN_Slot() y CloseAppBTN_Slot(). Luego, pulsamos el botón [F3] y hacemos clic con el ratón sobre el formulario. Llamamos a la ventana View and Edit Connections, en la que, como lo vemos en la Figura 4, conectamos las señales clicked con dos funciones responsables de los botones de descarga y de fin del trabajo de la misma (el emisor es el botón correspondiente, y el destinatario, el formulario – ventana). Después de crear el fichero en el formato ui generamos el llamado fichero de subclase. Esta acción también es una acción plenamente automatizada. Escogemos el fichero ui, de la ventana Gestor de automake y con el botón derecho del ratón señalamos el menú en el cual seleccionaremos la opción Lista de subclases.... Aparece, entonces, la ventana presentada en la Figura 5. Lo único que debemos hacer es escribir el nombre de la clase: wgetGuiWidget, puesto que el nombre del fichero se completará de manera automática. Fijémonos también en la lista de métodos: aquí están las funciones (slots) que definimos en el programa QtDesigner. Si en la lista no aparecen estos slots, es necesario interrumpir la generación de la subclase y volver a QtDesigner para corregir este error.
Primeras correcciones
El proyecto que creamos contiene solamente un widget, y es la etiqueta Hello
Figura 3. Creación del fichero de formulario
20
Linux+ 2/2005
Listado 1. Implementación del constructor wget_gui en el que creamos el formulario del programa #include "wget_gui.h" #include <qlabel.h> #include <kmainwindow.h> #include <klocale.h> #include "wgetguiwidget.h" wget_gui::wget_gui() : KMainWindow( 0, "wget_gui" ){ // set the shell's ui resource file setXMLFile("wget_guiui.rc"); // new QLabel( "Hello World", this, "hello label" ); new wgetGuiWidget(this, "wget gui", 0);
}
wget_gui::~wget_gui() { }
#include "wget_gui.moc"
World. Hay que sustituir este widget con el formulario que habíamos preparado antes en el programa QtDesigner. Para ello, primero abrimos el fichero llamado wget_gui.cpp. Vemos, entonces, el fichero con un contenido parecido al del Listado 1. Al principio, adjuntamos el fichero de cabecera del formulario diseñado por nosotros: #include "wgetguiwidget.h"
Luego, en el mismo constructor, en lugar de la línea creadora de la etiqueta: new QLabel( "Hello World", this, "hello label" );
S
basta escribir una expresión bastante parecida que creará nuestro formulario: new wgetGuiWidget(this, "wget gui", 0);
De este modo, después de la compilación del programa, en lugar de la etiqueta veremos el formulario diseñado por nosotros. Como vemos, estos cambios solamente tienen carácter estético. La ventaja de este método es que no modificaremos de ningún modo la función main. El código que se generó allí, lo dejamos sin cambio alguno.
Botón que termina el trabajo del programa
A partir de este momento, nos ocupamos del soporte de dos botones que están en nuestro programa. Su implementación también está contenida en el fichero wgetguiwidget.cpp. Es el mismo fichero de subclase (ing. subclass) que generamos a partir del formulario del fichero wget_gui_widget.ui. Empezamos por el botón cuya función consiste en cerrar la aplicación. Como podemos adivinar, es muy fácil de realizar. Al principio del fichero añadimos los ficheros de cabecera adicionales: #include <qapplication.h> #include <kapplication.h>
kdevelop
Listado 2. Implementación del método DownloadBTN_Slot, responsable de la descarga del fichero void wgetGuiWidget::DownloadBTN_Slot(){ KProcess *task; Reader reader; MessageBoxText->append(">>> process begin <<<"); task=new KProcess; *task << "wget –progress=dot"; *task << AddressText->text(); task->setUseShell(true, "/bin/sh"); reader.edt=MessageBoxText; QApplication::connect(task, SIGNAL(receivedStdout(KProcess *, char *, int)), &reader, SLOT(read_stdout(KProcess *, char *, int ))); QApplication::connect(task, SIGNAL(receivedStderr(KProcess *, char *, int)), &reader, SLOT(read_stderr(KProcess *, char *, int )));
}
if(task->start(KProcess::Block, Kprocess::AllOutput)) { MessageBoxText->append(">>> process end <<<"); } else { MessageBoxText->append(">>> process failed <<<"); }
En ellos están las clases que representan toda la aplicación. En cada aplicación KDE acceder al objeto kapp que representa el objeto de la aplicación. La llamada del método quit hará cerrar el programa. En nuestra aplicación la función que sirve para cerrar el programa se llama CloseAppBTN_Slot. La implementación de este método se limita a la llamada del método quit del objeto kapp:
Como he mencionado antes, empleamos también la clase KProcess, así que necesitaremos el fichero de cabecera kprocess.h. Después de las actividades preliminares, procedemos a la implementación
herramientas de programación
de la función DownloadBTN_Slot. El Listado 2 contiene su código fuente completo. El primer paso es declarar dos variables. La primera de ellas, task, representa el proceso externo que debemos crear para ejecutar la función wget. La segunda variable, reader, es también muy importante. Se trata de una clase definida por nosotros, necesaria para interceptar los datos de la salida estándar. En la siguiente línea escribimos un mensaje de texto donde se haga saber que el proceso de llamada wget empieza ese mismo momento. Ahora podemos proceder a la tarea en cuestión. Creamos el objeto task: task=new KProcess;
Después de su creación determinamos la forma de la llamada del comando wget. Supongamos que el comando se va a llamar de la siguiente manera: wget --progress=dot
S
http://www.dirección.es/directorio/ fichero.zip
Un gran ventaja de la clase KProcess es la posibilidad de componer el comando de los fragmentos con ayuda del operador sobrecargado <<. El primer fragmento, como resulta evidente, debe contener el nombre del comando. El código en el que creamos la forma del comando, conforme a lo que he dicho arriba, es el siguiente:
void wgetGuiWidget::CloseAppBTN_Slot(){ kapp->quit(); }
Descarga del fichero
La programación del segundo botón es nuestro objetivo principal. Recurriremos con este fin a otros componentes, así que es necesario adjuntar los ficheros de cabecera correspondientes. Puesto que vamos a emplear los campos de edición de tipo QLineEdit y QTextEdit, adjuntamos los siguientes ficheros de cabecera: #include <qlineedit.h> #include <qtextedit.h>
Figura 4. Diseño de la interfaz, y conexión de las señales y funciones
www.lpmagazine.org
21
herramientas de programación
Figura 5. Creación del fichero de subclase *task << "wget –progress=dot"; *task << AddressText->text();
La dirección del fichero se lee del widget AddressText. Es recomendable determinar qué tipo de shell utilizaremos para llamar el comando wget. Lo hacemos con el método setUseShell. El código que realiza esta función es el siguiente: task->setUseShell(true, "/bin/sh");
En este momento, podríamos ejecutar nuestro proceso con el método start, pero todos los mensajes del programa wget se dirigen hacia la consola desde la que ejecutamos el programa. Y, por otro lado, si lo hacemos desde el nivel del entorno gráfico, no veremos ningún tipo de mensaje. Por tanto, es necesario interceptar todos los datos dirigidos hacia los flujos (stream) stdout y stderr. Para ello, utilizamos el
objeto reader. Para que éste pueda realizar correctamente sus actividades, hay que copiar en el campo edt el indicador hacia el componente QRextEdit llamado Message BoxText: reader.edt=MessageBoxText;
La siguiente tarea es la conexión de la señal destinada a la recepción de los datos que van dirigidos hacia los flujos estándar por el objeto del tipo KProcess. Lo hacemos con el método connect de la clase QApplication. El código del Listado 2 intercepta los datos de la salida estándar y de la salida de error estándar aprovechando el objeto reader. La conexión de la señal en el primer caso es la siguiente:
S
QApplication::connect
S (KProcess *, char *, int)),S
Clase Reader
(task,SIGNAL(receivedStdout
S
&reader,SLOT(read_stdout(KProcess *, char *, int )));
Figura 6. Creación de la clase Reader
22
Linux+ 2/2005
caso del flujo (stream) stderr el nombre de la función en la definición de la señal es el siguiente: receivedStderr. En ambos casos la función responsable de la señal adopta los mismos parámetros. En el tercer argumento del método connect indicamos el objeto que recibirá la señal reader. En el último parámetro indicaremos el método que será llamado desde el objeto reader en respuesta a la señal. En la nomenclatura Qt/KDE el método que responde a la señal se llama slot, así que en el último parámetro empleamos la macro SLOT. Después de conectar ambas señales ejecutamos el programa wget, llamando el método start desde el objeto task. En caso de intercepción de los datos enviados a stdout y stderr en el método start es necesario introducir los parámetros: KProcess::Block y KProcess::AllOutput. El primer valor significa que nuestra aplicación se detendrá mientras esté ejecutado el comando wget. El segundo valor significa que interceptaremos toda información dirigida a los flujos de salida estándar. Cuando resulte necesario gestionar la entrada estándar, daremos el valor Process::Stdin. Si hace falta controlar los tres flujos estándar, en el método start facilitaremos la constante KProcess::All. Como vemos en el Listado 2, a la llamada le corresponde la instrucción condicional. Si el método devuelve la verdad lógica, esto significa que el proceso externo terminó adecuadamente y el fichero se descargó correctamente. A pesar de las apariencias, de este manera obtenemos un programa ya listo que es una superposición no complicada para el comando wget. Para la implementación nos queda todavía la clase Reader.
El comando para el flujo (stream) stderr es muy parecido. Empleando QApplication::connect recurrimos a los mecanismos internos, y por esta razón son importantes los parámetros que definimos en el caso de este método. El primer es el objeto que generará la señal, es decir, nuestro objeto task. En el segundo definimos el tipo de señal. Fijémonos en el nombre de la función receivedStdout. En el
El Listado 3 representa el fichero de cabecera de la clase Reader. Como vemos, es la clase hereditaria de la clase QObject, necesaria para que el mecanismo de las señales y slots funcione adecuadamente. No hace falta añadirla al proyecto de manera independiente, basta escoger del menú Proyecto la opción Nueva clase.... Aparecerá, entonces, la ventana presentada en la Figura 6. Aquí nos limitamos únicamente a indicar el nombre de la clase y a marcar la opción que determina que la clase básica debe ser la clase Qobject Crear el descendiente QObject.
herramientas de programación
kdevelop
Listado 3. Fichero de cabecera de la clase Reader #include <kapplication.h> #include <kprocess.h> #include <qtextedit.h> #include <qobject.h> class Reader : public QObject { Q_OBJECT
Figura 7. Programa KDevelop y ventana
public:
Reader(QObject *parent = 0, const char *name = 0);
~Reader(); QTextEdit *edt;
public slots:
void read_stdout(KProcess *p, char *b, int l);
};
void read_stderr(KProcess *p, char *b, int l);
Listado 4. Implementación de la clase Reader #include "reader.h" #include <kprocess.h> Reader::Reader(QObject *parent, const char *name) : QObject(parent, name) { } void Reader::read_stdout(KProcess *p, char *b, int l) { edt->append(QString::fromLatin1(b, l)); } void Reader::read_stderr(KProcess *p, char *b, int l) { edt->append(QString::fromLatin1(b, l)); } Reader::~Reader() { } #include "reader.moc"
Para el fichero de cabecera de la clase generada, añadimos un nuevo campo público edt, y éste, precisamente, es el indicador del tipo QTextEdit. Además, completamos la clase con dos métodos. El primer va a ser read_stdout, cuyo objetivo, como su propio nombre lo indica, es la recepción de los datos del flujo stdout. El segundo método se llama read_stderr y nos ayuda a recibir los datos dirigidos hacia el flujo de error estándar. Los métodos los definimos en la sección public slots: para que el mecanismo de los slots funcione correctamente.
El Listado 4 contiene la implementación de la clase Reader. Nos interesan los slots definidos anteriormente, por tanto, es necesario escribir la definición de los métodos read_stdout y read_stderr. En ambos casos, el código comprendido en ellos es muy breve:
de la documentación tiene sus defectos, resulta suficiente para nuestras necesidades. De este modo, terminamos el trabajo sobre nuestro programa que ya podemos compilar y ejecutar.
Resumen
El uso del programa KDevelop soluciona muchos problemas que se producen durante la creación de la aplicación en el entorno KDE. El mejor ejemplo es la creación de la interfaz, tan sencilla incluso como nuestro programa. La utilidad de KDevelop la confirma la posibilidad de generar el código fuente a raíz de los ficheros en el formato ui, preparados por el programa QtDesigner. El programa KDevelop también ayuda generando las versiones preliminares de las clases y un buen ejemplo de ello es la clase Reader. Os animo a modificar el programa. Una buena idea parece la posibilidad de indiciar el directorio donde debe guardarse el fichero descargado por el programa Wget. A pesar de las apariencias no es muy difícil. Para finalizar quisiera subrayar un elemento más. Nuestro programa se basó en los sistemas Automake y Autoconf, lo que significa que podemos compilarlo fuera del entrono KDevelop. Esta función hemos obtenido, como se puede ver, sin ningún esfuerzo, ya que el programa Kdevelop cuida todos los detalles.
En Internet: •
edt->append(QString::fromLatin1(b, l));
Para el controlador edt añadimos la nueva cadena de caracteres la transmite en el parámetro b, mientras que su longitud es transmitida por el parámetro l. Este método es bastante sencillo y, aunque
•
•
Página del proyecto KDE: http://www.kde.org/ Página del fabricante de la librería Qt: http://www.trolltech.com/ Página dedicada al programa KDevelop: http://www.kdevelop.org/
www.lpmagazine.org
23
herramientas de programación
Scratchbox, herramienta para la compilación cruzada Veli Mankinen
S
i miramos de cerca la historia de los ordenadores y la programación, nos damos cuenta de que la compilación cruzada es un invento bastante nuevo. En los primeros años de desarrollo de la informática no era nada necesaria, ya que los programas se escribían para equipos concretos y con fines rigurosamente determinados. Por este motivo, el reuso del mismo código no era nada por lo que pudieran interesarse los programadores. Puesto que los procesadores de hoy se caracterizan por un poder computativo muy diverso, en muchos casos una compilación llevada a cabo en un ordenador muy eficaz tarda mucho menos que una que se realiza en el equipo que es el destinatario directo de una programación determinada. De este modo nació la idea de la compilación cruzada (ingl. cross-compiling).
¿Qué es la compilación cruzada?
En el DVD El DVD contiene las herramientas descritas en este artículo.
El autor El autor es uno de los creadores del paquete Scratchbox. Si quieres contactar con él, éste es su correo electrónico: veli.mankinen@movial.fi
24
Linux+ 2/2005
La idea principal de la compilación cruzada se basa en utilizar un cierto procesador (HOST) a fin de compilar un programa destinado a los ordenadores de arquitectura distinta (TARGET). Esto quiere decir que el ordenador que compila el programa no puede arrancar la programación nativa que acaba de compilar. Este es el primer reto al que se enfrenta la compilación cruzada, ya que muchos entornos de programación exigen que, ya a la hora de compilar el programa, se inicien unas herramientas de programación complementarias, específicas para la arquitectura de destino. Para evitar dificultades de este tipo, algunos prefieren compilar los programas en la plataforma de destino. Veamos como veamos esta situación, en muchos casos es un proceso muy lento, y debido a esto, no puede admitirse que sea correcto. En la Figura 1
se encuentra un gráfico que presenta las diferencias de tiempo de compilación entre la compilación nativa y la cruzada. El ordenador de destino, con procesador ARM, disponía de una configuración así: procesador Intel SA110 233 MHz, disco duro 40 GB, 256 MB de memoria volátil, y Debian Sarge con el núcleo Linux 2.4.25. La plataforma empleada para la compilación cruzada contaba con los siguientes parámetros: procesador Intel Xeon CPU 2.80 GHz, disco duro 80 GB, 2 GB de memoria volátil, así como Debian Sarge con el núcleo Linux 2.6.8-1-686 y Scratchbox 0.9.8.2.
Movilidad de programación
Los programas actuales suelen escribirse de manera que puedan arrancar en procesadores de distinta arquitectura. La portabilidad (ing. porting) es un modo de escribir programas, desde cero o como parche para un código existente, que hace posible usarlos en una arquitectura de programación nueva. La portabilidad se aprovecha, por ejemplo, si alguien opta por aplicar las soluciones Linux en una plataforma Windows instalada en el momento. Existe un amplio conjunto de herramientas que facilitan la construcción de programas que cumplen con los requisitos de la portabilidad. La mayoría opera sobre el entorno de programación, y las informaciones del entorno de sistema se guardan en las variables del entorno. Gracias a esto, en un entorno concreto es posible compilar con más facilidad este tipo de programas. Una actitud así es razonable en general, pero no a la hora de emplear la compilación cruzada, ya que la herramienta aplicará las informaciones del sistema en el que se esté compilando, y no sobre el que reciba el programa compilado. Debido a esto hay que buscar otras soluciones.
scratchbox
herramientas de programación
el disco, Scratchbox puede instalarse en cualquier otro lugar, aunque entonces se tenga que crear una referencia desde /scratchbox al lugar de destino. La preparamos mediante el comando: # ln -s /home/scratchbox /scratchbox
Después de descomprimir los paquetes, todavía tenemos que compilar Scratchbox introduciendo el comando: # /scratchbox/run_me_first.sh
Tendremos que dar respuestas a un par de preguntas, pero basta con aceptar las de por defecto.
Pasamos a hechos concretos
Figura 1. Comparación de tiempos de compilación en casos de la compilación nativa y cruzada
Dispositivos y herramientas
Un uso típico de la compilación cruzada tiene lugar cuando alguien quiere compilar un programa utilizado en un PDA, u otro ordenador diminuto de poder computativo del procesador relativamente bajo. Este artículo se enfocará sobre la elaboración de programación para IPAQ, y la compilación se realizará sobre un ordenador rápido de la clase X86. Mayor ventaja sacarán de él los que tengan IPAQ, u otro ordenador con el procesador ARM, en el que se haya instalado alguna distribución de Linux. Los propietarios de IPAQ interesados en iniciar un Linux ahí o, alternativamente, en compilar programas para este ordenador, deben conocer la distribución llamada Familiar Linux, que está disponible en la dirección web www.handshelds.org. En dicha página se han publicado también unos manuales de instalación muy prácticos. Este artículo se servirá de una herramienta para la compilación cruzada que viene del proyecto llamado Scratchbox.; se trata de un entorno de programación para escribir programas Linux para todas las distribuciones de Linux. La idea principal de Scratchbox es ofrecer a los desarrolladores un entorno que funcione y se presente como el entorno de destino antes de que ese entorno esté físicamente disponible.
En entorno Scratchbox proporciona un mecanismo de autentificación de datos del usuario idéntico al que se usa en el dispositivo de destino. Las herramientas de Scratchbox pueden emplearse tanto dentro de este entorno como fuera de él. El uso de las herramientas fuera del entorno Scratchbox es igual que el uso de cualquier otra herramienta que esté disponible en nuestro ordenador, aunque esto pueda parecer una actitud anticuada hacia la compilación cruzada. La versión actual estable de Scratchbox lleva el número 0.9.8.2. Todos los paquetes pueden descargarse desde la página www.scratchbox.org. Entre éstos, son imprescindibles los siguientes: scratchboxcore, scratchbox-libs, scratchbox-devicetools y scratchbox-toolchain-arm-glibc. Cada uno está disponible en forma de paquetes tar.gz, deb y rpm. Es posible escoger cualquier tipo de paquete. Si se trata de los archivos tar.gz debemos descomprimirlos al directorio / (cada uno de los paquetes):
Para empezar, presentaremos un actitud tradicional hacia la compilación cruzada y emplearemos las herramientas de Scratchbox en el sistema principal, de igual forma que el resto de herramientas. Necesitaremos un pequeño fragmento del código del programa para compilar. “Hello World” será perfecto para esta tarea: #include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; }
Primero, compilamos "Hello World" en el X86 de forma nativa, para verificar el funcionamiento de la compilación y conseguir ciertas informaciones sobre los binarios que se crean. Supongamos que "Hello World" se ha guardado en un fichero llamado hello.c. Ahora, en el mismo directorio en el que está situado el hello.c, iniciaremos el comando: gcc -Wall -o hello hello.c
# tar zxf <nombre_paquete> -C /
La configuración que estamos utilizando requiere alrededor de 428 MB de espacio libre, y de todas formas es necesario un poco más para operaciones propias. Si el directorio / no dispone de espacio en
Figura 2. El trabajo con Scratchbox corre sobre todo en modo de texto
www.lpmagazine.org
25
herramientas de programación
arm-hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0,dynamically linked (uses shared libs),2.0.1,not stripped
Figura 3. Los programas para Zaurus también pueden crearse a través de Scratchbox
Como resultado no debemos tener ningún mensaje, sino que debe generarse un fichero binario hello, que podemos iniciar escribiendo el comando ./hello. Realizadas estas operaciones, el ordenador debe visualizar el mensaje Hello World!. Ahora arrancaremos el comando file, que nos dará acceso a algunos datos sobre el fichero binario: file hello. Deben tener un aspecto similar a éste: hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), not stripped
Por cierto, ninguna de las informaciones visualizadas no se refiere, por el momento, a Scratchbox, ni a la compilación cruzada. Para cambiarlo, debemos emplear un compilador que forma parte del paquete Scratchbox. Arranquemos el comando:
S S -3.3_3.3.4-glibc-2.3.2.ds1/bin/
/scratchbox/compilers/arm-linux-gcc
arm-linux-gcc -Wall -o arm-hello hello.c
Usarlo no debe provocar ninguna generación de notificaciones, aunque ahora tengamos un fichero binario denominado arm-hello. No es posible arrancar este fichero directamente, puesto que viene destinado a la arquitectura ARM y se encuentra en un ordenador X86. Lo único que podemos hacer es volver a aplicar el comando file para convencernos de que realmente es un fichero binario ARM. Entonces, escribamos: file arm-hello, de lo que debe resultar en la visualización un mensaje tipo:
26
Linux+ 2/2005
¡De este modo hemos conseguido compilar de forma cruzada nuestro primer programa! Si disponemos de IPAQ, u otro dispositivo equivalente, con Linux arrancado, por supuesto, podemos comprobar cómo funciona este programa. Basta con trasladar el fichero arm-hello a IPAQ, sirviéndonos del comando scp, y luego arrancarlo de manera regular. Si los fragmentos del código que se compilan no son grandes (de forma parecida a nuestro programa), para realizar la totalidad de nuestro trabajo no necesitamos nada más que un compilador que dé soporte a la compilación cruzada. Muchos programas Open Source utilizan numerosas librerías y se caracterizan por sus complicados sistemas de construcción de aplicaciones. Esto quiere decir que en tal situación también tendremos que compilar las librerías, y eso no puede llevarse a cabo simultáneamente con la compilación del programa como tal. Por este motivo el uso de la compilación cruzada exige que todo el entorno que genera la aplicación sea escrupulosamente configurado. Y configurarlo a veces es muy difícil y requiere mucho tiempo. El entorno Scratchbox hace la mayoría de este trabajo por nosotros.
Compilación cruzada en Scratchbox
Scratchbox es un entorno chrooteable de compilación cruzada. Esto significa también que cualquier persona puede autorizarse como usuario de Scratchbox igual como si entrara como usuario en el dispositivo real. En cada caso, los usuarios tienen que ańadirse a Scratchbox antes de que intenten entrar (tiene que ser un usuario existente en el sistema, pero no puede ser el root). Lo realizamos a través del comando: # /scratchbox/sbin/sbox_adduser
S
nombre_usuario
Para autorizarse con el sistema Scratchbox tenemos que emplear el comando: /scratchbox/login. Después de que se inicie este comando debe aparecer un par de mensajes de bienvenida, y el llamado prompt del sistema cambiará p. ej. por: [sbox-HOST: ~] >. Nos informa de que estamos bajo la administración de Scratchbox, así como de que
se está utilizando un entorno de destino llamado HOST. En Scratchbox es posible emplear varios entornos de destino, lo que quiere decir que podemos compilar programas para varias arquitecturas y configuraciones. Conviene notar que el directorio / no es el mismo directorio que el de fuera de Scratchbox, y hay que fijarse en que tendremos directorios de inicio distintos. Además, es importante que el usuario que se ha autorizado con el sistema antes de agregarse como usuario Scratchbox se reautorice para adquirir los privilegios de ser miembro del grupo sbox que son indispensables para arrancar la herramienta de desarrollo en cuestión. La pertenencia al grupo sbox se la puede verificar mediante el comando: $ groups
Después de entrar en Scratchbox como sus usuarios, debemos configurar el entorno conforme las necesidades de la compilación cruzada:
S
sbox-config -ct MYTARGET -cn arm-linux
-gcc-3.3_3.3.4-glibc-2.3.2.ds1 -cm qemu-arm
A continuación, debemos activarlo. Lo conseguimos escribiendo el comando: sbox-config -select-target=MYTARGET
Ahora el prompt debe alternarse por: [sbox-MYTARGET: ~] >. En el entorno Scratchbox en el nuevo árbol / se localiza el conjunto de directorios estándar ( /bin, /sbin, /usr, /var etc.), pero son completamente vacíos. Gracias a esto es posible instalar en el lugar de destino cualquier otra programación, sin tener que preocuparnos por la posibilidad de sobreescribir los programas del ordenador principal. Puesto que los directorios están vacíos, carecemos también de la librería C, aunque ésta suele ser requerida por los componentes de la programación. Por este motivo debemos instalar, o compilar, todo lo que vamos a necesitar en el entorno de destino. Por suerte el llamado. toolchain de Scratchbox está suministrado junto con la librería C y podemos copiarla de manera ordinaria, escribiendo el comando: sbox-config --copy-clibrary
Ahora contamos con el entorno ya preparado para compilar programación para ARM. Scratchbox se suministra junto con
herramientas de programación
scratchbox
elsimulador QEMU, que se empleará en los ejemplos que siguen. La herramienta de desarrollo de la que estamos hablando necesita un dispositivo o emulador que disponga de la posibilidad del arranque de programas para la arquitectura del destino. Gracias a una funcionalidad así podemos contar con un entorno de programación cruzada sin poseer conocimientos completos tanto sobre el sistema, como de cómo aplicar estos conocimientos en el entorno. Las herramientas buscarán la información necesaria por su cuenta, igual que sucede a la hora de producirse la compilación nativa. Si volvemos a escribir el programa "Hello World" y lo compilamos mediante el comando: gcc -Wall -o sb-arm-hello hello.c
la compilación debe efectuarse sin errores, y nosotros obtendremos como resultado el fichero binario sb-arm-hello. Después de arrancar el comando: file sb-arm-hello
leeremos un mensaje, que demuestra que volvemos a tratar con el fichero binario ARM real:
Como podemos observar éste es un ejemplo mucho más complicado. Hemos empleado el script configure, que compila y arranca muchos programas distintos para sacar varios datos sobre el entorno. Si empleáramos la compilación cruzada fuera de Scratchbox, el script configure no terminaría su funcionamiento correctamente, por motivo de no poder arrancar los programas para la compilación. Un vistazo al programa /tmp/cputransp_$USER.log permite que consigamos información sobre los comandos que se iniciaban con el emulador. Claro, glib puede compilarse también mediante la configuración del entorno, pero esto es un poco más complejo que el ejemplo que se acaba de presentar arriba. La documentación de la compilación cruzada de glib está disponible en la dirección: http:// developer.gnome.org/doc/API/2.0/glib/glibcross-compiling.html. Ahora, cuando ya tengamos las librerías C y glib instaladas en nuestro entorno, podemos compilar un "Hello World" nuevo que haga uso de la función print de la librería glib. Aquí está el fichero glib-hello.c:
Parameter and Signal Library gthread-2.0 GThread Thread support for GLib
Para compilar un "Hello World" nuevo será preciso el siguiente comando: gcc -Wall `pkg-config --cflags --libs
S
glib-2.0` -o sb-arm-glib-hello glib-hello.c
La compilación debe concluirse sin dar error, y como consecuencia de su operación, se producirá el fichero binario sb-arm-glib-hello. Puesto que disponemos del emulador QEMU, podemos iniciarlo ahora. Si damos ahora el comando file, su resultado debe ser idéntico al de la versión anterior del programa “Hello World!". Si llamamos, además, al comando ldd, que presenta el uso de las librerías, podremos comprobar si la librería glib, que acaba de instalarse, está realmente en el uso (ldd sbarm-glib-hello): libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x00000000)
#include <glib.h>
libc.so.6 => /lib/libc.so.6
#include <glib/gprintf.h>
(0x00000000)
int main(void)
libgcc_s.so.1 => /lib/libgcc_s.so.1
{
(0x00000000)
sb-arm-hello: ELF 32-bit LSB executable,
g_printf("Hello World!\n");
/lib/ld-linux.so.2 => /lib/ld-linux.so.2
ARM, version 1 (ARM), for GNU/Linux 2.0.0,
return 0;
(0x00000000)
dynamically linked (uses shared libs),
}
not stripped
Debido a que estamos dentro del entorno Scratchbox, podemos arrancar el programa que acaba de crearse en el emulador escribiendo: ./sb-arm-hello. Nuestro resultado será el mensaje Hello World!.
Un ejemplo más complicado
Un ejemplo más complicado va a requerir la librería glib de la familia GTK+. Primero, tenemos que descargar el paquete glib y compilarlo para el entorno de destino, sirviéndonos de los siguientes comandos:
S
> wget ftp://ftp.gtk.org/pub/gtk/v2.2/ glib-2.2.3.tar.bz2 > tar -xjvf glib-2.2.3.tar.bz2
Scratchbox se suministra junto con la herramienta pkg-config, utilizada para obtener de forma cómoda todas las rutas de acceso relacionadas con la librería glib. Por defecto, glib se instala en /usr/local/, directorio en el que se instalan también los ficheros de configuración pkg-config. En el ejemplo que viene utilizaremos pkg-config , así como configuraremos la variable del entorno PKG_CONFIG_PATH para que detecte los ficheros glib adecuados: export PKG_CONFIG_PATH=/usr/
S
local/lib/pkgconfig/
Ahora podemos arrancar pkg-config -list -all, lo que nos permitirá ver las librerías instaladas en el sistema. En este momento debe visualizarse:
> cd glib-2.2.3 > ./configure
gmodule-2.0 GModule -
> make
Dynamic module loader for GLib
> make install
glib-2.0
GLib - C Utility Library
gobject-2.0 GObject - GLib Type, Object,
En este momento ya podemos crear ficheros ejecutables de nuestros programas y librerías, y luego trasladarlos a varios dispositivos móviles basados en el procesador ARM. Scratchbox incorpora muchas extensiones y herramientas más, que facilitan la creación de programas como, p. ej. para Debian ARM.
Resumiendo
Existen muchos dispositivos interesantes en los que se puede instalar e iniciar Linux. Arrancar o compilar nuestros programas preferidos en estos dispositivos puede resultar realmente una tarea muy difícil.
En Internet: -
-
Página de inicio del proyecto Scratchbox: http://www.scratchbox.org/ Página de inicio del proyecto QEMU: http://fabrice.bellard.free.fr/qemu/
www.lpmagazine.org
27
entrevista
Entrevista a Carlos Vélez Báez, jefe del proyecto Vidalinux
En el DVD
El DVD A incluye la distribución Gentoo Linux 2004.3
28
Linux+ 2/2005
Krzysztof Krawczyk: Para empezar, querría que te presentases a nuestros Lectores... Carlos Vélez Báez: Soy jefe del proyecto Vidalinux. Actualmente trabajo como consultor de sistemas de red y como constructor de Vidalinux Desktop OS. KK: ¿Cómo te has relacionado con Linux? CVB: En 1997 uno de mis vecinos me regaló su Red Hat 5.0. No conseguía instalar Linux en su ordenador. Para mí fue la primera oportunidad que tuve de conocer este sistema. Desde aquel día utilizo solamente Linux. KK: ¿Cuántos sois los desarrolladores de Vidalinux? CVB: En este momento somos tres en Vidalinux: dos desarrolladores y un gráfico. KK: ¿A qué os dedicáis ahora en Vidalinux? CVB: Todos mis esfuerzos están enfocados en la mejor integración de Vidalinux Desktop OS con el sistema de gestión de paquetes. Además, me dedico a programar en GNOME, a los mecanismos de autodetección de dispositivos y a otras aplicaciones del sistema. KK: ¿Por qué habéis elegido Gentoo como base de vuestra distribución de Linux? Hay otras distribuciones populares de Linux como Mandrakelinux, Fedora Core o SUSE. CVB: El sistema de gestión de paquetes (Portage) disponible en Gentoo
tiene más funciones avanzadas que RPM o APT. Si instalas algunas aplicaciones utilizando Portage, resuelves todas las relaciones que tiene la aplicación. Eso es algo que solamente otras distribuciones pueden soñar. Gentoo es una distribución construida a partir de los fuentes y, gracias a esto, es más fácil crear una distribución de propia Linux. KK: Y ¿por qué habéis utilizado Anaconda, el instalador del sistema Red Hat? CVB: En vez de crear un instalador nuevo hemos elegido Anaconda porque ya existía un proyecto desarrollado por Victor Prada, que fue el primero en hacer cambios en Anaconda para que funcionara correctamente con Gentoo. Me puse en contacto con él para ayudarle con este proyecto y él me entregó todos los fuentes. Gracias a esto empecé a trabajar con Anaconda. KK: ¿Los mecanismos de detección y configuración de dispositivos también son vuestros? CVB: No, son una combinación de la base de datos de dispositivos de Knoppix y de las herramientas de Gentoo LiveCD. KK: ¿Habéis creado herramientas propias, p. ej. para la configuración o para la gestión de paquetes? CVB: Sí, hemos introducido muchos cambios en el código de Anaconda, incluyendo la interfaz para añadir usuarios y una nueva manera de elegir
entrevista a Carlos Vélez Báez
Carlos Vélez Báez presenta Vidalinux Desktop OS, su distribución de Linux
los paquetes que estará disponible en VLOS 1.1. Además, planeamos preparar un programa aproximado a Red Carpet Ximian, que servirá para instalar los paquetes binarios en VLOS. KK: Y ¿qué tipo de paquetes utiliza Vidalinux actualmente? ¿Los fuente o los binarios? CVB: Utilizamos los dos. KK: ¿Por qué vuestro sistema se dedica a cuatro arquitecturas: p4, i686, athlonxp y amd64? ¿No es demasiado, o quizá, demasiado poco? CVB: Las distribuciones de Linux, como Fedora Core, Mandrakelinux o SUSE, utilizan una arquitectura por defecto para compilar todos sus paquetes. Nosotros continuamos la tradición de Gentoo de optimizar todos paquetes para poder utilizar todas las arquitecturas de preprocesador disponibles, lo que nos permite conseguir una diferencia enorme de rendimiento de los sistemas. KK: ¿Qué tipo de problemas habéis encontrado durante la preparación de esta distribución? CVB: Hemos tenido dificultades con el formato RPM, utilizado por Anaconda, y con los errores de Anaconda. KK: ¿Qué opinas de otras distribuciones de Linux, sobre todo de Gentoo? CVB: Mi aventura con Linux empezó con Red Hat, pero cuando descubrí Gentoo, ya no hubo remedio. El problema principal, típico en las dis-
tribuciones populares y comerciales, es el sistema de gestión de paquetes. Cuando quieres instalar una aplicación tienes que buscar toda la red para asegurar sus dependencias, sobre todo las de las librerías que exigen una aplicación para instalarse correctamente. Gentoo es una de las distribuciones de Linux más avanzadas en la que, gracias a su sistema Portage, obtenemos el control completo del sistema operativo. KK: ¿Cómo cooperáis con los desarrolladores de Gentoo? CVB: Creamos los ebuilds y anunciamos los errores. Pienso que a partir de la creación de VLOS, que se basa en Gentoo, pero es más fácil de instalar, ofrecemos a Gentoo una solución adecuada para los usuarios típicos. KK: Existen dos versiones de Vidalinux Desktop OS: pública (download) y comercial. ¿Cuál es la diferencia entre ellas y por qué habéis decidido prepararlas? ¿Es posible instalar en la versión pública OpenOffice.org, Evolution, Firefox u otras utilizando el comando emerge? CVB: La diferencia principal consiste en las aplicaciones incluidas y en el applet GDesklets, que añade un acceso directo a la aplicación igual que en el sistema Mac OS X. Sólo dos personas trabajan en este proyecto. Tenemos que pagar las cuentas, por
entrevista
ejemplo, el hosting de nuestras páginas, el acceso a Internet, la presentación gráfica y otras cosas que cubrimos con las ganancias de la venta de la versión comercial. Si decides utilizar la versión pública y necesitas las aplicaciones incluidas en la versión comercial puedes instalarlas sin ningún problema. Pero ten en cuenta que si utilizas la versión comercial nos ayudas a mantener vivo este proyecto. KK: ¿Necesitáis algún tipo de ayuda por parte de la comunidad de usuarios de Linux? CVB: Sí, todos los que quieren apoyar el proyecto a través del código, documentación u otra cosa serán bien recibidos. KK: ¿Qué tipo de cambios esperan a los usuarios de vuestra distribución en Vidalinux OS Desktop 1.1? CVB: VLOS 1.1 tendrá muchos cambios y correcciones, entre otros, el sistema udev, NPTL, GNOME 2.8, KDE 3.3.1, el núcleo 2.6.9, el soporte para discos duros SATA y SCSI, la detección de los dispositivos USB conectados al sistema, el instalador basado en Fedora Core 3 y la selección de paquetes a instalar. KK: Y ¿cuáles son vuestros planes de futuro? CVB: Tenemos muchos planes, como la edición del servidor de VLOS, la versión tipo LiveCD, la aplicación para la gestión de la instalación de paquetes y el soporte para varios sistemas de ficheros, incluyendo Reiser4fs, en Anaconda. KK: Para terminar, ¿has estado en España?, ¿tienes ganas de visitarla? CVB: No, nunca he estado en Europa, pero seguramente voy a visitarla en el futuro. KK: Muchas gracias por la conversación. El próximo mes nuestros Lectores tendrán la oportunidad de conocer VLOS 1.1, así que preparaos para recibir una respuesta considerable.
En Internet: –
Página principal del sistema Vidalinux Desktop OS: http://desktop.vidalinux.com/
www.lpmagazine.org
29
soluciones móviles
MultiSync: sincronización del dispositivo móvil con el ordenador de oficina Krzysztof Wolski
A
En el DVD
Las herramientas de las que habla este artículo están disponibles en el DVD
30
Linux+ 2/2005
ctualmente las posibilidades de los telefonos móviles traspasan en gran manera las tareas fundamentales, que habían de realizar anteriormente los teléfonos comunes. Cada nuevo modelo está equipado con un organizador sencillo, con la ayuda del cual podemos tomar nota sobre reuniones u otros eventos. Los teléfonos móviles más avanzados permiten también controlar las tareas, que ha de realizar el dueño del teléfono. Además de esto, en cada teléfono es accesible una guía de teléfonos, que permite escribir los números de nuestros conocidos. Frecuentemente, apuntar nuevas reuniones al teléfono es, a veces, muy incómodo, sobre todo por el pequeño tamaño de las teclas y de la pantalla. En ese caso está bien tener ordenador y con su ayuda escribir las informaciones al organizador, y después sincronizar los datos del móvil y del ordenador con ayuda de un software adecuado. Precisamente MultiSync es un programa de este tipo designado para el sistema Linux MultiSync permite sincronizar los datos no solamente entre el ordenador y el móvil, sino también entre el ordenador de casa (o laptop) y el ordenador de bolsillo (tanto PocketPC, como también Palm y Zaurus). Permite, además, realizar copia de los datos escritos en el organizador. Las herramientas mencionadas se han escrito para el entorno GNOME. Su
arquitectura está basada en el mecanismo de los plugins. Ellos permiten la cooperación del programa con el organizador y con el cliente del correo Ximian Evolution. La comunicación con los dispositivos exteriores (con los teléfonos móviles y con los ordenadores de bolsillo) se realiza a través de los puertos USB, IrD o Bluetooth.
Instalación
Las pruebas del programa se realizaron en el sistema Aurox Linux. En la página principal del proyecto se pueden descargar los paquetes adecuados RPM. Debido a que el programa está construido sobre la base de los plugins, no debemos descargar todos los paquetes, sino solamente los que utilizaremos. Por supuesto, el más importante es el paquete con el programa (multisync). Si quisiéramos sincronizar los datos con el programa Evolution, sería también indispensable el plugin multisyndocevolution. Para sincronizar los datos con los teléfonos móviles necesitaremos
Figura 1. Ajustes del teléfono móvil
multisync
también el paquete multisync-irmc. En el caso del palmtop Zaurus el plugin adecuado se llama multisync-opie. Si quisiéramos hacer una copia del organizador, sería indispensable el plugin multisync-backup. Después de descargar los paquetes, la instalación se lleva a cabo de forma estándar – teniendo los derechos de root en la consola damos el comando: rpm -ivh nombre del paquete de instalación.
En el momento de escribir este artículo la versión más nueva del paquete MultiSync era 0.82. Si nuestro Linux se basa en otros paquetes diferentes de rpm, entonces podemos descargar de la página el paquete fuente en forma de paquetes tgz e individualmente compilarlos. Para un funcionamiento adecuado de la sincronización entre el ordenador y el teléfono móvil a través del puerto IrD es indispensable la instalación del paquete OpenObex, sin embargo, si utilizamos Bluetooth, entonces hay que instalar el paquete BlueZ. Para comprobar si en el sistema está instalado un paquete dado (si hacemos uso de un sistema basado en RPM), podemos, desde la consola, escribir (en el caso de OpenObex): rpm -qa | grep openobex. Si como resultado obtenemos el nombre del paquete junto con su versión esto significa que nuestro sistema contiene el software indispensable para el funcionamiento del programa.
(escribiendo mutlisync) o escogerlo del menú. En el caso de KDE, en la barra de acople debería aparecer el icono que informa sobre si el programa ha sido arrancado. Hacemos clic en el icono, para visualizar la ventana principal del programa, y después en la barra de herramientas escogemos el icono descrito como New. De tal forma preparamos un nuevo par para la sincronización. En la ventana obtenida (Figura 1) tenemos cuatro páginas: –
–
Sincronización con el teléfono móvil
Las primeras pruebas del programa las realizamos utilizando el programa Ximian Evolution y el teléfono móvil (en mi caso será el teléfono Sony Ericsson T68i). Después de instalar el programa podemos arrancarlo desde la consola
–
– Figura 2. Creación de la copia de seguridad de los datos
Plugins – escogemos en ella el plugin que será utilizado para la sincronización de datos. Para actualizar los datos correctamente entre Evolution y el móvil hay que escoger Ximian Evolution, y luego, IrMC Mobile Device. Para cada plugin tenemos opciones de configuración accesibles bajo el botón Options. En el caso de Evolution están sincronizados con el tipo de información, mientras, en el caso del teléfono móvil, con el tipo de la conexión entre el ordenador y el móvil (si utilizamos el puerto IrD, acordémonos de arrancarlo: en la consola como usuario root damos el comando: /etc/init.d/ irda start). También tenemos aquí opciones relacionadas con los datos, que han de sincronizarse. Synchronize options – en esta página se han agrupado las opciones referentes a la frecuencia de sincronización de los datos (Automatically synchronize every): si la barra se traslada hasta el fin de la derecha, entonces la sincronización se realizará después de cada cambio. Podemos también decidir lo que tiene que durar la pausa, si la conexión no se ha realizado con éxito (Retry interval after connect failed), y también podemos decidir qué acciones realizará el programa en caso de encontrar algún problema durante la sincronización de los datos (Conflicts and near duplicates). Filters – aquí podemos definir los filtros de los datos de diferentes tipos y decidir qué acciones ha de tomar el programa. Sounds – esta es la última página, en la que se pueden establecer los sonidos que el programa reproducirá; el primero lo hará si se han actualizado los
soluciones móviles
datos, mientras el segundo cuando se restablezca la conexión en caso de que se hubiera perdido. Después de la configuración el programa está listo para funcionar. Ponemos el móvil cerca del puerto IrD, arrancamos el cliente Evolution (si hasta este momento no lo hemos hecho todavía), y después hacemos clic en el icono Sync. Después de la sincronización de los datos del teléfono móvil y Evolution (la primera operación de sincronización puede tardar un poco), las siguientes se harán automáticamente durante el funcionamiento del programa (p. ej. cada vez determinada o durante cada cambio). Y esto es todo – toda la configuración se realiza en el programa MultiSync; y en Evolution no debemos cambiar nada. Las pruebas realizadas han demostrado que el programa cumple perfectamente sus tareas. La sincronización se lleva a cabo sin los menores problemas. El programa permite mantener el orden entre los contactos (guía telefónica), así como entre la agenda y las tareas.
La creación de las copias de seguridad de los datos
Si hemos instalado el plugin backup, tendremos la posibilidad de crear una copia de seguridad de los contactos. Creamos un nuevo par de plugins para la sincronización de los datos (el primer plugin es Evolution, y el segundo es Backup). Entre las opciones accesibles para la copia de seguridad de los datos tenemos la posibilidad de ajustar el directorio al que subirán los archivos, además de las funciones de administración de estos archivos.
Conclusión
El programa MultiSync es, sin duda, una interesante solución para todos los que utilizan el organizador electrónico. Permite mantener el orden entre las reuniones y tareas, así como entre los contactos. Tampoco debe olvidarse la opción de hacer copias de seguridad de los datos: es útil y permite asegurarse ante su pérdida accidental.
En Internet: •
Página de inicio de Multisync: http://multisync.sourceforge.net/
www.lpmagazine.org
31
software aktualności
gnome
Nicotine,
cliente de la red SoulSeek Witold Kieraś
N
icotine es un cliente Linux de la red de intercambio de ficheros SoulSeek. Se desarrolló a partir del programa PySlsk y se escribió en Python usando el módulo PyGTK.
Instalación
Para ejecutar Nicotine, primero debemos cumplir algunos requisitos, es decir, instalar Python y las librerías correspondientes. Las aplicaciones gráficas en Python son, desde hace algún tiempo, cada vez más populares, así que es posible que todo lo que necesitamos lo tengamos ya instalado en el sistema. Precistamos, sobre todo, el intérprete de Python en la versión, por lo menos, 2.2.0, aunque el autor recomienda la versión 2.3.0 o posterior. El intérprete se halla en los discos de instalación prácticamente de cada distribución (paquete python). Necesitamos también la librería GTK+-2.0 (el autor recomienda la versión 2.2), sin embargo, hay que tenerla instalada, más aún cuando utilizamos GNOME. Lo último que nos hace falta es el módulo que permite el uso de la librería GTK+ desde el nivel Python, es decir, PyGTK por lo menos en la versión 1.99.16. Si queremos compilar de manera independiente este módulo, recordemos activar threading, utilizando la opción –enable-thread a la hora de llamar el script ./configure. Los módulos PyOgg y PyVorbis pueden ser de mucha utilidad: no son imprescindibles para el funcionamiento del módulo Nicotine, pero podemos utilizarlos para verificar el valor bitrate de los ficheros OGG. También es conveniente instalar la librería GeoIP gracias a la cual el programa podrá reconocer el país de origen de los usuarios de la red SoulSeek a través de los números IP, y en caso de necesidad, bloquear a los que provienen de ciertos países. Esta función será útil para aquellas personas que temen las consecuencias de compartir los ficheros susceptibles de derechos del autor
32
Linux+ 2/2005
con los ciudadanos de los países donde es ilegal, por ejemplo, en los Estados Unidos. Una vez que hemos cumplido todos los requisitos del programa, procederemos a su instalación. Primero, descomprimimos el archivo con el programa dando el comando: tar xzvf nicotine-<versión>.tar.gz y pasamos al directorio recién creado (cd nicotine-<versión>). Los impacientes podrán pasar inmediatamente al comando python ./nicotine. Este modo de arrancar el programa es una buena solución en el caso de que Nicotine esté siendo utilizado solamente por una persona. Si queremos instalar el programa de manera global (para que sea accesible a todos los usuarios), como root pasamos el comando python setup.py install --prefix=<ruta> , donde el argumento de la opción --prefix es la ruta al directorio donde debe instalarse Nicotine, que suele ser el directorio /usr. Ahora, para arrancarlo basta el comando nicotine. Al arrancar el programa por primera vez, se abre la ventana de configuración. Debemos registrarnos en la red SoulSeek e informar, entre otras cosas, las rutas a los directorios que contienen los archivos en nuestro disco. En la primera pestaña, Servidor, el valor del campo Servidor lo dejamos como estás (es decir, server.slsknet.org:2240), mientras que en los campos Usuario y Contraseña informamos del nombre único del usuario y de su contraseña, y lo hacemos tanto en el caso de tener la cuenta en la red SoulSeek como en el caso de abrirla primera vez. Los demás campos de esta pestaña también los podemos dejar sin cambios. Si estamos en una red local, preguntaremos al administrar si están abiertos los puertos con los números del 2234 al 2239, porque si administramos un firewall por nuestra cuenta, debemos abrir estos puertos. Pasamos a la pestaña Compartidos. Aquí, informamos, respectivamente, sobre las rutas al directorio que irá destinado
a los ficheros temporales (no descargados completamente), al directorio de destino para los ficheros descargados (estarán en él al finalizar la descarga) y al directorio con los ficheros compartidos, en este último caso podemos definir más de uno. Sin embargo, hay que recordar que la mayoría de los usuarios de la red SoulSeek (y de otras redes p2p) bloquea a los usuarios que no comparten ningún recurso. Según nuestra voluntad, podemos compartir lo que ya habíamos descargado antes de SoulSeek (la opción Compartir el directorio de descargas). También se recomienda marcar la opción Reeler compartidos al arranque, para que, durante cada arranque, el programa verifique si hemos puesto o no hemos puesto a disposición nuevas posiciones. Del mismo modo, tendremos en cuenta que si añadimos al directorio compartido nuevos archivos durante el funcionamiento del programa, estos archivos no serán visibles para otros usuarios de la red hasta que se realice un rearranque del programa. Ahora nos conectamos con la red: desde el menú escogemos la opción Archivo–>Conectar. Si todo va bien, iniciamos la sesión. En caso de que dé problemas hay que seguir los mensajes que aparecen en la parte inferior de la ventana. Puede ocurrir que el nombre del usuario (login) escogido por nosotros esté ya ocupado, en este caso, es necesario inventar algún otro (volvemos
Figura 1. Nicotine tiene una interfaz muy intuitiva
GNOME
Figura 2. Ventana de configuración aparece tras primer arranque del programa
a la ventana de configuración escogiendo Fichero–>Parámetros). La apertura de la sesión fracasará también si ya tenemos abierta una sesión en otro ordenador (o incluso en el mismo ordenador, pero mediante otro cliente, por ejemplo, PySlsk). La señal que advierte de que la apertura de la sesión se ha realizado con éxito es la aparición en su ventana principal en la pestaña Habitaciones (la primera y predefinida pestaña del programa), que indica la cantidad de canales de discusión y la información sobre las personas que han iniciado o terminado la sesión. Además, en un barra estrecha en la parte inferior de la ventana, hay información sobre nuestro estado: Conectado (la segunda casilla a la izquierda). No vamos a utilizar los canales de discusión (por lo menos al principio), así que podemos cerrar la ventana que informa sobre los usuarios (basta hacer clic en la crucecita junto a la pestaña nicotine). A nosotros nos interesarán las pestañas siguientes: quinta pestaña a la izquierda, Busca ficheros. Aquí introducimos el título o ejecutante (por ejemplo, Sonic Youth) y pulsamos el botón Buscar. Después de varios segundos, aparecerán los ficheros solicitados con la información del depositario del fichero, su tamaño, la duración de la descarga, la cantidad de ficheros puestos en espera por el usuario para enviar, si es posible descargar el fichero de manera inmediata (es decir, si el usuario tiene libre el slot), qué fichero tiene el valor bitrate y cuál es su tiempo de reproducción. Haciendo clic con el botón derecho del ratón en la posición elegida obtenemos el acceso al menú contextual. Con este menú ordenamos a Nicotine a descargar el fichero seleccionado (Bajada de ficheros) o todo el directorio de este fichero en el disco del usuario (Bajada de directorio(s)). El estado de descarga de los ficheros lo verificamos en la pestaña Subidas. Desde el menú contextual podemos empezar la charla con otro usuario
(posición Envia el mensaje, la charla será inicializada en la pestaña Privados), consultar sus detalles (posición Obtén info de usuario que será visualizada en la pestaña Info de usuario), así como consultar los ficheros compartidos (posición Ficheros de usuario, ficheros serán visualizados en la pestaña Búsqueda de ficheros). En la pestaña Subidas visualizaremos la lista de nuestros ficheros descargados actualmente o aquellos para descargar por otros usuarios que están en espera. Aquí está también disponible el menú contextual.
Opciones adicionales
Pasamos ahora a refinar la configuración del programa. Escogemos en el menú Fichero–>Parámetros, con lo que aparecerá la ya conocida ventana de configuración. En la pestaña Transferencias definimos, con detalle, la velocidad de transmisión de entrada, así como los principios de la puesta en espera de los ficheros destinados a envío. En la pestaña Interfaz definimos los colores de los mensajes escritos durante la charla de soulseek. En cambio, en la pestaña Captura de URL concretamos qué programas externos deben interceptar los protocolos correspondientes (por ejemplo, cuando alguien, durante la charla, nos suministra alguna URL). Por defecto, para el protocolo http está definida solamente Mozilla, pero no hay ningún inconveniente para asociar otros protocolos con los programas que les corresponden, por ejemplo, FTP con el protocolo ftp, y Evolution – mailto. En la pestaña Info de usuario escribimos las informaciones disponibles al público, por ejemplo, que no nos gusta la gente que no comparte ningún recurso, o qué pensamos sobre el presidente de nuestro país. En la pestaña Prohibidos/Ignorados podemos administrar a las personas bloqueadas o ignoradas por nosotros.
Resumen
Nicotine es un cliente completo de red para Linux cuyas funcionalidades igualan las de su prototipo Windows. El usuario no tendrá problemas con su configuración, aunque pueden producirse incidentes inesperados, por ejemplo, es imposible consultar los ficheros puestos entre dos usuarios que están detrás de NAT. Son, sin embargo, los problemas propios de todas las redes P2P y sería difícil evitarlos, independientemente del programa o plataforma utilizada. http://nicotine.thegraveyard.org/
Noticias
GParted 0.0.7 Apareció por fin la nueva versión de GParted, es decir, Gnome Partition Editor que es complemento gráfico para la librería libparted de servicio de las particiones. Ha pasado mucho tiempo desde la última versión, lo que se debe al hecho de que una gran parte del código exigía su reescritura total. En la nueva versión, se ha mejorado el soporte de los sistemas de ficheros ext2, ext3, así como ReiserFS, se ha añadido el pleno soporte para NTFS y se ha enriquecido el programa de muchos complementos que resultan menos importantes. http://gparted.sourceforge.net/ GUADEC 2005 En los días que van del 29 al 31 de mayo de este año se celebrará en Stuttgart, por sexta vez, GUADEC, GNOME Users and Developers European Conference, es decir, la conferencia de los usuarios y desarrolladores del entorno GNOME. Los organizadores prevén la participación de alrededor de treinta países. El comité de la conferencia repartió las exposiciones en varios grupos: integración del escritorio y del sistema, soporte multimedia, estándares de escritorio, software de oficina, GNOME para todos, comunidad GNOME, GNOME en la educación, GNOME en la administración gubernamental y GNOME en pequeñas máquinas (ing. small devices). http://2005.guadec.org/ AbiWord 2.2 Ha aparecido la nueva versión del editor de texto multiplataforma AbiWord, que es una parte del proyecto no oficial GNOME Office. El proyecto está orientado, en gran parte, a facilitar la mudanza de los usuarios actuales de MS Word y hay que reconocer que esto va cada vez mejor. En la nueva versión se ha permitido, entre otras cosas, la creación automática de los índices en los documentos. A partir de esta versión, está también disponible el puerto para el programa MacOS X. http://www.abisource.com/ Firestarter 1.0 Ha pasado ya bastante tiempo desde la fundación del proyecto Firestarter, la aplicación gráfica dedicada a construir los cortafuegos para GNOME. Ahora, el programa ha consiguido su madurez. En su nueva versión, se ha reescrito casi por completo la interfaz del programa. http://www.fs-security.com/
www.lpmagazine.org
33
software aktualności
kde
Krusader,
administrador de ficheros Witold Kieraś
L
os usuarios de ordenadores de sobremesa que todavía se acuerdan de la época anterior a las interfaces gráficas de color conocen, sin duda, el programa Norton Commander, un administrador de ficheros para el sistema DOS. En Linux, su papel lo había desempeñado (y sigue haciéndolo) el Midnight Commander, que es su clon casi exacto. En el momento en que el sistema Windows cortó a su usuario regular de la interfaz de texto se acabó también el éxito de Norton Commander. Se creó entonces el Windows Commander (el Total Commander de hoy), su homólogo gráfico. Por supuesto, un programa de este tipo tampoco podía faltar en el entorno Linux, y así se ha desarrollado Krusader, un administrador de ficheros a lo Norton Commander para el entorno KDE.
Instalación
Puesto que Krusader es uno de los programas para KDE que alcanzan una mayor valoración en el servicio KDE-apps.org, los paquetes que lo contienen están disponibles en casi todas las distribuciones de Linux: los discos de instalación deberían ser el primer lugar donde buscar este administrador de ficheros. La página del proyecto tiene disponibles ya los paquetes para muchas distribuciones populares de Linux. Si queremos instalar Krusader desde los fuentes (p. ej. desde el repositorio CVS, es decir, la versión de desarrollo), tampoco debemos encontrar muchas dificultades. Hay que acordarse de instalar previamente las librerías adecuadas, así como los paquetes con ficheros de cabecera (o sea, los paquetes devel). Sobre todo hacen falta los paquetes: libqt3 y libqt-devel, así como los: kdelibs y kdelibs-devel. Además, a la hora de compilarlos se necesitarán paquetes de los que una gran mayoría probablemente ya la tendremos instalada en el sistema (sobre todo si utilizamos KDE): libjpeg62, libjpegdevel, libpng3, libmng, fam y famlibs, zlib1, arts, libart_lgpl2, libstdc++5, así como libpcre0.
34
Linux+ 2/2005
También serán indispensables los fuentes del mismo programa. Los descomprimimos con el comando tar xzvf krusader-<versión>.tar.gz y pasamos al directorio (cd krusader-<versión>) que acaba de generarse. Si utilizamos los fuentes desde CVS, lo que tenemos que hacer primero es preparar el script configure, ejecutando el comando: make -f Makefile.cvs. Si utilizamos la versión estable del programa, podemos ejecutar, sin más, los comandos ./configure y make, y después, ya como root, make install. La compilación e instalación deben hacerse sin problemas, pero en el caso de que surgiera alguna dificultad inesperada, es aconsejable mirar primero en el fichero INSTALL, en el directorio de los fuentes, donde todo el proceso se explica detalladamente. Arrancamos el programa con el comando krusader.
Funciones básicas
Se nos aparecerá la ventana principal de Krusader, y a muchos usuarios les parecerá familiar. Dos pistas verticales gemelas vi-
sualizan por defecto el contenido del directorio de inicio del usuario. De forma similar que en Midnight Commander, debajo de los paneles tenemos acceso a una raya vertical en la que podemos introducir los comandos de la capa del sistema. Justo debajo de ésa se sitúan los botones marcados de [F2] a [F10]: podemos servirnos de ellos tanto a través del ratón, como del teclado. También la mayoría de las funciones son las mismas que las de Midnight Commander. Así: [F2] inicia el terminal virtual (por defecto es Konsole, pero a continuación mostraremos cómo cambiarlo p. ej. por XTerm), [F3] abre fichero de texto para leerlo, [F4] abre fichero de texto para editarlo, [F5] copia ficheros o directorios entre los paneles, [F6] los mueve entre los paneles, [F7] forma un directorio nuevo, [F8] elimina un fichero o directorio, [F9] cambia el nombre de fichero o directorio, y [F10] sale del programa. Aunque la tecla [F1] no está especificada, igual que en Midnight Commander, tras pulsarla logramos acceder a la documentación del programa.
Figura 1. La pantalla principal de Krusader tiene un aspecto familiar
KDE
Podemos movernos por los paneles mediante las flechas del teclado, o mediante el ratón, empleando las flechas del rincón izquierdo superior de la ventana principal del programa. El botón [Tab] nos transporta desde un panel al otro.
Configuración de programas externos
La verdadera fuerza de Krusader se esconde en enganchar al trabajo los programas externos. Al seleccionar Preferencias–>Configure Krusader en el menú del programa obtendremos acceso a varias configuraciones del programa que se refieren tanto a su forma de comportarse, como a su aspecto externo. Aquí nos interesa especialmente la pestaña Dependencias. Es allí, en la pestaña General, donde podemos determinar qué programas externos desempeñarán tal y tal tarea. Si Krusader ha encontrado los programas apropiados ya instalados en el sistema, la mayoría de esos campos suele ser ya completada. Por orden: df es un programa texto que produce informes sobre el espacio libre y ocupado en las particiones (cuenta con un homólogo gráfico para KDE, denominado kdf ); eject hace salir la bandeja CD-ROM (es casi seguro que lo tenemos instalado en el sistema y no hace falta cambiarlo); kdesu es una ventana gráfica que solicita la contraseña del administrador en caso de que haga falta presentar tal autorización (es un componente estándar de KDE); kget es un gestor de descarga de ficheros, un homólogo gráfico del programa de texto wget; kmail es un conocido cliente de correo; diff utility: aquí podemos elegir entre la instalación de dos frontends distintos para el programa de texto diff que sirve para comparar el contenido de ficheros texto xxdiff o kdiff3; krename, un frontend gráfico para el programa rename realizado para cambiar los nombres de ficheros por grupos y según un modelo establecido; krusader es, por supuesto, la ruta al propio Krusader. Las cuatro últimas posiciones ya son unas herramientas de sistema estándar, sin duda presentes en nuestro Linux: locate, un programa para localizar ficheros en una base de datos que se actualiza periódicamente; mount y umount, herramientas para montar y desmontar dispositivos; updatedb, un programa que actualiza la base de datos según los nombres de ficheros. En la pestaña Compresores tenemos la oportunidad de definir casi todas las posibles herramientas de compresión de datos (a condición de que las tengamos instaladas en el sistema).
Figura 2. MountMan facilita el montaje de dispositivos y recursos remotos
En el configurador de Krusader podemos indicar también el programa que será el terminal virtual estándar. En la sección General se ha fijado por defecto el programa Konsole, pero nada impide que se utilice en esta función, p. ej. XTerm.
MountMan
MountMan es una función interesante que ofrece Krusader y que seguramente llamará la atención de los usuarios que no tengan confianza en los montadores profesionales de los medios, como el supermount. En el menú, tras seleccionar Herramientas–>MountMan, abriremos una ventana donde se enumeran todas las posiciones guardadas en el fichero /etc/fstab: las unidades CD-ROM y de disquetes, las particiones, los recursos de red, dispositivos portátiles USB, etc. Ahora, haciendo clic en cualquiera de ellos podemos saber si está montado, o no. Al hacer clic con el botón derecho del ratón en la posición seleccionada podemos montar o desmontar un recurso concreto, a condición, por supuesto, de tener autorización permitente. Para evitar que se desmonte por error, p. ej., una partición esencial para el sistema, conviene prohibirle a MountMan operar sobre este recurso. Con este fin escogemos en el menú Preferencias–>Configure Krusader–>Avanzado y, junto a la posición MountMan won't (un)mount the following mount points:, coma y aparte enumeramos todos los recursos (según sus puntos de montaje) que MountMan no puede tocar (por defecto se indica sólo la partición /).
Resumen
Krusader es un programa particularmente práctico para los que se han acostumbrado a un cierto modelo de trabajo con ficheros. Incluso si hasta ahora no hemos tenido nada que ver con él, vale la pena dedicarle un poco de tiempo, porque nos veremos ampliamente recompensados. Os animo a que experimentéis con este administrador de ficheros tan flexible. http://krusader.sourceforge.net/
Noticias
Entrevista a Scott Wheeler El servicio Open for Business entrevistó a Scott Wheeler, desarrollador de KDE, miembro del grupo KDE Multimedia y creador del reproductor JuK, entre otros. Allí Scott habla, en particular, sobre sus problemas con el servidor aRts, que se produjeron después de que Stefan Westerfeld, su creador, había dejado de desarrollarlo, así como sobre las posibilidades de suplantarlo con otras soluciones ya existentes. Un cambio así, en la opinión de Scott, no tendrá lugar antes de que se publique la versión 4.0 del entorno KDE. http://www.ofb.biz/modules.php?name =News&file=article&sid=338 Improving KDE 1.0 El popularísimo conjunto de parches que hacen el KDE más bonito ha alcanzado su versión 1.0. Todas las mejoras se han probado sobre la versión 3.3.1 del entorno, y según dice su autor, se portan como debido, aunque no se puede garantizar su funcionamiento correcto en otras versiones. Os recomiendo ver las capturas de la pantalla, de verdad son impresionantes. http://www.kde-apps.org/content/ show.php?content=16962 AmaroK 1.2 beta1 Ha aparecido la primera versión beta del nuevo AmaroK, un reproductor de música para KDE que va ganando cada vez mayor popularidad. En la versión nueva se ha mejorado, entre otros, el soporte de OSD y aRts, asimismo se ha agregado el soporte para la base de datos MySQL. http://www.kde-apps.org/content/ show.php?content=9939 KDE 3.4 – más detalles La versión 3.4 del entorno KDE paso a paso va tomando color. Se han elaborado los detalles del plan que precisa qué debe mejorarse en cada una de las aplicaciones que componen el proyecto, qué funciones deben agregarse en breve, y claro, quién es responsable de todos esos cambios. Todo el documento está dividido en tres secciones: TODO (cambios todavía no implementados), In Progress (funciones y mejoras que de momento se están elaborando) y Finished (cambios concluidos). Además, se ha fijado la agenda de publicación de la nueva versión de KDE, y si todo sale bien, el cinco de febrero podemos esperar la segunda versión beta y el 26 de febrero el primer candidato a publicación (release candidate). La versión final se planea para el 16 de marzo. http://developer.kde.org/developmentversions/kde-3.4-features.html http://developer.kde.org/developmentversions/kde-3.4-release-plan.html
www.lpmagazine.org
35
software aktualności
linuxfresh
SoX,
convertidor de formatos de sonido Piotr Machej
E
ntre las herramientas que suelen adjuntarse a la mayoría de las distribuciones populares de Linux parece que SoX (Sound eXchange) se aprecia demasiado poco. Antes se le utilizaba en el proceso de grabación de discos audio, pero desde que CDRecord se enriqueció con nuevas opciones, SoX ha dejado de ser insustituible. De todas formas, esto no cambia el hecho de que este programa, destinado para convertir formatos de sonido, siga con su desarrollo y pueda resultar útil todavía. Muchos usuarios pueden sentirse desalentados por el modo de arrancar de SoX (desde la línea de comandos), sin embargo, éste, precisamente, es uno de sus puntos fuertes. Gracias a esto, puede utilizarse fácilmente con los scripts más o menos desarrollados. Además, aparte de esto, su sintaxis no es demasiado complicada. Salvo las capacidades de conversión, SoX ofrece también herramientas para grabar y reproducir el sonido, así como para añadir efectos variopintos, lo que hace de él un programa muy versátil y práctico. Lo más probable es que ya tengamos el programa instalado en el sistema, o que esté incluido en los discos de la distribución. Sin embargo, si no se trata de su versión más reciente, conviene actualizarla, ya que han aparecido funciones nuevas muy interesantes (p. ej. la posibilidad de indicar varios ficheros de entrada a la vez). Su instalación desde los fuentes o desde los paquetes disponibles para las respectivas distribuciones no debe provocar dificultades. Después de haber instalado SoX, disponemos de los tres comandos principales: sox, play y rec. El primero sirve para convertirse ficheros de música a un formato distinto, pero también puede utilizarse para sobreponer los efectos o modificar las opciones (p. ej. la amplitud o frecuencia del muestreo). El segundo comando, como es fácil de adivinar, permite reproducir ficheros de sonido. Es más, podemos indicar los efectos que van a sobreponerse durante la reproducción. Se trata sólo de un frontend del comando sox
36
Linux+ 2/2005
ideado para facilitar su uso. El tercer comando (en verdad es sólo un enlace simbólico que nos dirige al programa play) permite grabar muestras de sonido desde el dispositivo por defecto ( /dev/dsp, en el caso de Linux). No hay que ocultar el número de formatos de sonido que cuentan con el soporte de SoX. Éste se las arregla muy bien tanto con los formatos crudos (RAW) como con el formato Ogg Vorbis (muy popular en Linux), y también con formatos como 8svx (Amiga), AIFF, .au, AVR, HCOM (Macintosh), WAV, .cdr y otros. Sabe reproducir y grabar el sonido aprovechando, bien los dispositivos /dev/dsp (OSS, ALSA), o bien los /dev/audio. Sobre las muestras pueden sobreponerse decenas de efectos diferentes, incluido el eco, los coros (chorus), incremento gradual y la atenuación gradual de sonido (fade in/ out), la reproducción marcha atrás, el intercambio de canales, el cambio de velocidad o el volumen de reproducción. La especificación detallada de formatos y efectos de los que nuestra versión de SoX da soporte la podemos adquirir dando el comando sox -h.
Si queremos sobreponer los efectos en nuestras muestras de sonido, lo mejor será comprobar primero el posible efecto que vamos a obtener. Para hacer esto damos el comando play con los parámetros apropiados, por ejemplo: play file.wav echo 0.8 0.9 1000.0 0.3
En este ejemplo, reproducimos el fichero file.wav y sobreponemos el efecto de eco en él. Empleando el comando man sox vemos que el efecto eco tiene como parámetros: gain-in, gain-out, delay y decay. Podemos introducir más parejas de números delay y decay para lograr que se produzcan más ecos. Una ampliación interesante de este efecto es echos. En el cálculo del primer eco se tiene en cuenta sólo el fichero de entrada. En el del segundo, el fichero de entrada y el primer eco. En el tercero, el fichero de entrada y los dos ecos. Y así sucesivamente. Si se trata del efecto echo normal, se tendrá en cuenta sólo el fichero de entrada. De modo análogo, podemos probar otros efectos,
Figura 1. Gracias a SoX podemos convertir hasta la música de Amiga en el formato Ogg Vorbis
FRESH
Noticias
Quick3dApplet 1_5 Quick3dApplet permite presentar la gráfica interactiva 3D en una página web. Si sólo tenemos Java, al menos en la versión 1.1, instalado en nuestro navegador, podremos disfrutar de un motor 3D bastante rápido. Antes de emplear el applet podemos conocer sus capacidades en la página de inicio del proyecto. Allí se hallan ejemplos de uso de este programa, como el ajedrez o el juego de tres en raya tridimensional. En la nueva versión, se ha añadido la posibilidad de leer los ficheros 3ds, gracias a lo cual podemos presentar también los modelos realizados en el programa 3DStudio. Aparte de esto, se han mejorado un par de errores. http://freshmeat.net/projects/ quick3dapplet/
Figura 2. En la documentación podemos encontrar una descripción detallada de los parámetros de cada uno de los efectos
experimentando con parámetros hasta obtener resultados satisfactorios. Ahora, ya podemos sobreponer el efecto que mejor nos parezca. Si nos gusta el eco conseguido a través del comando anterior, lo podemos guardar de forma fija: sox file.wav file2.wav echo 0.8 0.9
S
1000.0 0.3
De este modo, el fichero file2.wav contendrá el sonido del fichero file.wav con el efecto de eco sobrepuesto. Como hemos dicho al principio, SoX permite realizar la conversión entre varios tipos de ficheros. La llevaremos a cabo fácilmente: sox file.au file.wav
En caso de trabajar con ficheros que contengan las cabeceras apropiadas, la sintaxis de la llamada de SoX es muy sencilla. Ahora bien, si trabajamos con datos en el formato crudo RAW, hay que abastecer el programa con un poco más de información sobre el flujo de sonido. Se trata de informaciones tales como la frecuencia de muestreo (sample rate), la exactitud de guardar los datos (p. ej. los bytes de 8 bits y las palabras de 16 bits), la codificación de datos (p. ej. u-law, ADPCM) y el número de canales. Así, si por ejemplo queremos grabar sonido del micrófono, podemos ayudarnos del comando:
S
sox -t ossdsp -c 1 -r 44100 /dev/dsp file.wav
Con la opción -t indicamos el tipo del fichero de entrada (su ruta es /dev/dsp). El número de los canales lo introducimos en la opción -c (sonido monofónico), y la frecuencia de muestreo en la opción -r. En consecuencia, en el fichero file.wav obtendremos el sonido grabado con el micrófono. Por supuesto, antes hay que configurar correctamente el dispositivo de grabación, utilizando para ello el comando aumix, así como fijar los niveles de volumen convenientes. En lugar de utilizar el comando de arriba podemos emplear su alternativa: rec -c 1 -r 44100 file.wav
Como podemos ver, esto hace el comando más simple, permitiéndonos omitir un par de opciones. Aparte de los comandos ya mencionados, SoX nos da el acceso a uno más: soxmix. Prácticamente desempeña la misma función que sox, pero con una excepción: en la entrada, como mínimo, espera dos ficheros que, a continuación, se mezclarán y guardarán en el fichero de salida. Aquí tenemos que recordar que todos los ficheros de entrada tienen que ser del mismo tipo y caracterizarse de la misma frecuencia de muestreo. En fin, es aconsejable no olvidarse de la opción -V, que es muy útil y que impulsará a SoX a visualizar más informaciones sobre las acciones en proceso. http://freshmeat.net/projects/sox/
Swfdec 0.3.2 En Internet es posible encontrar muchos juegos y animaciones grabadas en ficheros SWF. Swfdec es una librería que sirve para renderizar tales animaciones. Aunque ha sido diseñada para emplearse en la creación de plugins Flash para el programa GStreamer, en la actualidad prácticamente es ya una librería independiente (únicamente requiere la librería libart para hacer dibujos). Junto con la Swfdec, uno recibe un reproductor y un plugin para Mozilla. El programa todavía está en una fase temprana de desarrollo, por lo que puede ocasionar algunos problemas, pero parece bastante prometedor. En su última versión se han incluido las mejoras del plugin para Mozilla. http://freshmeat.net/projects/swfdec/ Mutt Folder List 20041122 Los usuarios de Mutt seguro que ganarán mucho con este parche. Añade a este excelente programa de correo una función útil, o sea, una barra lateral con la lista de las carpetas de correo. Esta barra puede esconderse o mostrarse con el clic de una sola tecla. Además de esto, se ofrecen otras capacidades disponibles, como el resaltado de los nombres de carpetas que contengan listas nuevas, o la configuración de la anchura y los colores de la barra, así como los atajos de teclado. http://freshmeat.net/projects/muttfolderlist/ KDocker 1.0 RC2 KDocker es un proyecto interesante ideado para permitir el anclaje de aplicaciones en la bandeja de sistema. Su punto fuerte está en que funciona tanto en KDE como en GNOME, así que aunque una aplicación se las arregle bien con el anclaje en uno de los entornos, KDocker le ayudará a hacerlo en el otro. La nueva versión se ha ampliado con, entre otros, el soporte para arrastrar y soltar. http://freshmeat.net/projects/kdocker/
www.lpmagazine.org
37
software aktualności
linuxfresh
GFSGL,
gestor de arranque de juegos Piotr Machej
P
odría parecer que respecto a los juegos de ordenador, Windows le lleva a Linux una ventaja enorme. Muchas personas incluso conservan una partición con el sistema de Redmond sólo para poder jugar de vez en cuando a sus juegos preferidos. En realidad, hay bastantes juegos que funcionan bajo Linux y, desde hace poco, incluso se lanzan las versiones de los grandes éxitos del mercado dedicados especialmente a él. A esto, sumemos los juegos que se pueden arrancar utilizando Wine, las distintas versiones de WineX, o la de Cedega más nueva (ya que este es el nombre bajo el que WineX sigue con su desarrollo por ahora), así como los juegos que funcionan bajo el control de varios emuladores (p. ej. de Amiga o de Commodore 64). No es poco, ¿verdad? Ahora, ¿cómo poner todo esto en orden? El programa GFSGL (Golden Files Software Game Launcher) viene en nuestro rescate. Gracias a él, podemos instalar en nuestro sistema, no sólo los juegos destina-
dos a Linux, sino también los de Windows que funcionan bajo Cedega, WineX o Wine. El programa detecta automáticamente los ficheros de instalación ubicados en los CDs, así como también aprovecha la información incluida en los ficheros autorun.inf/ autorun.ini. Del mismo modo, podemos indicar qué programa se va a emplear para emular Windows, y, lo que es más curioso, también podemos indicar otro emulador, p. ej. del ordenador Commodore C64 (siempre que disfrutemos de uno instalado en nuestro sistema) o incluso el DOSBox popular. Todos los juegos instalados están disponibles desde un menú, al que podemos agregar los juegos que se hayan instalado antes. Podemos utilizar GFSGL, tanto a través de una interfaz gráfica, como desde la línea de comandos. Antes de que instalemos el programa, conviene asegurarnos si nuestro sistema cumple con sus requisitos, que no son muchos. Para que GFSGL funcione, basta la capa GNU Bash y el programa XDia-
log (a descargarse desde la página http:// freshmeat.net/projects/xdialog/ ). Los demás requisitos (Wine, Cedega, GNU Wget, Curl y LibCurl) son opcionales. La instalación del programa es muy sencilla. Es curioso que para llevarla a cabo no necesitemos los derechos de administrador. Arrancamos el fichero con la extensión .run, que hemos descargado desde la página de inicio del programa. Para lograr esto, damos los comandos (se refieren a la versión de desarrollo más reciente en el momento en el que se escribía este artículo): chmod u+x gfsgl-0.91.0-Beta3.run ./gfsgl-0.91.0-Beta3.run
Si hemos realizado estos comandos con los derechos de usuario, el programa se instalará en el directorio ~/gfsgl/, y los enlaces simbólicos a los ficheros de arranque se crearán en el directorio ~/bin/. En tal caso, conviene añadir este directorio a la variable PATH, p. ej. mejorando el fichero ~/.bash_profile para que contenga la línea: PATH=$PATH:$HOME/bin
Figura 1. El autor de GFSGL tiene planes para añadirle más funciones interesantes en el futuro
38
Linux+ 2/2005
Desde ahora, disponemos de dos comandos: gfsgl y gfsgl-gui. Como es fácil de adivinar, el primero permite trabajar desde la línea de comandos, mientras que el otro arranca la interfaz gráfica. La configuración del programa está situada en el directorio ~/.gfsgl/, pero si vamos a utilizar GUI, en general, no habrá necesidad de editar los ficheros manualmente. Después de arrancar el comando gfsgl-gui deberíamos, primero, verificar la configuración. Para hacer esto, seleccionamos Additional features–>Configure GFSGL. Las dos primeras opciones nos permiten señalar el programa que dé soporte a la emulación de Windows (p. ej. CVSCedega) así como el emulador de los demás juegos (DOSBox, por ejemplo). Aparte de esto, podemos, entre otras cosas, indicar el punto
FRESH
de montaje de la unidad CD-ROM, así como modificar manualmente los ficheros de configuración. Si no queremos que se guarden los cambios en los ficheros, pulsamos Discard. Para abandonar la configuración de GFSGL pulsamos Done, y luego Back. Seleccionando Add game podemos añadir un juego que ya esté instalado en el sistema. En general puede ser cualquier programa al que nos gustaría tener acceso desde el menú GFSGL. Ahora bien, debemos tomar la decisión de si añadimos un juego que funciona bajo Linux (Native), o uno que se inicia mediante un emulador de Windows (Windows game) u otro (Other emulated game). Cualquiera que sea la opción que escojamos, tenemos que introducir el nombre del juego (Game name), así como su nombre abreviado (Mini name). Aprovecharemos este último para el arranque rápido del juego en la consola. Por ejemplo, seleccionando la opción Native introducimos el nombre del juego Fortune y su abreviatura fe. La ventana siguiente nos preguntará por el comando con el que se va a arrancar el juego. Entonces, escribimos /usr/games/fortune. Luego, nos pedirá que confirmemos que los datos introducidos son correctos y, como consecuencia, recibimos la noticia de que podemos arrancar nuestro juego de tres maneras diferentes. La primera consiste en utilizar la línea de comandos (escogemos entre: fe, gfsgl fe y gfsglgui fe). La segunda se reduce a arrancar gfsgl-gui y seleccionar el juego en el
menú. Y el tercer método es seleccionar el juego del menú desde el entorno gráfico (p. ej. KDE o GNOME), si es que ha sido colocado allí. Si al añadir el juego hemos marcado el campo Use Advanced Wizard, dispondremos de un poco más de sus capacidades. Para hablar con más detalle, en cuanto a los juegos Native, indicaremos el directorio de trabajo actual y el fichero ejecutable, mientras que si se trata de los juegos para Windows, podremos señalar el emulador característico de un juego concreto. También podemos instalar los juegos sirviéndonos de la opción Install a new game, así como de la Detect and run Win AutoRun programs. En el segundo caso, GFSGL utiliza la información que se conserva en los ficheros autorun.inf/autorun.ini con el fin de iniciar el instalador correcto. Si hace falta, arrancaremos también un programa concreto con el uso del emulador de Windows seleccionando la opción Additional features–>Run target file with. La opción Remove game está destinada a eliminar los juegos del menú. El programa GFSGL promete muchas cosas interesantes. A pesar de algunos retrasos sigue con su desarrollo constante. Entre las capacidades que se prometen, merecen una mención aparte: el bloqueo de los juegos con contraseña (p. ej. para proteger a los niños de juegos brutales), y el sistema de módulos. http://freshmeat.net/projects/gfsgl/
Noticias
Chess Training Tools 1.2.11 Los buenos jugadores de ajedrez pueden interesarse por el conjunto de programas con el nombre común de Chess Training Tools. Éste sirve para practicar la capacidad de visualización, gracias a lo cual es posible jugar incluso sin mirar la tabla. El primero de los programas ayuda a recordar los colores de todos los respectivos campos, si están puestos en una raya o si es posible juntarlas con uno o dos saltos del caballo. Además, disponemos de un programa para enseñar las aperturas, así como un programa de ajedrez flojo (llamado Vince). En este programa es posible jugar contra piezas o campos individuales invisibles. Chess Training Tools también está disponible para Palm OS y Pocket PC, aunque estas versiones carecen del entrenador de aperturas y del programa Vince. http://freshmeat.net/projects/ chesstraining/ GoGrinder 1.07 Existen un par de métodos para perfeccionar nuestro talento para jugar en Go. Uno de ellos es solucionar problemas. Y en este sentido puede resultar útil el programa GoGrinder, al que vienen adjuntos cientos de problemas distintos por resolver. Puesto que el programa utiliza el formato popular SGF, es posible aprovechar los miles de problemas disponibles en Internet. http://freshmeat.net/projects/gogrinder/ Linice 2.0 Uno de los depuradores más conocidos que se utilizan bajo Windows es el SoftIce. El programa Linice es un depurador escrito desde cero para Linux que cuenta con la mayoría de los comandos conocidos de SoftIce. Puede servir para despiojar tanto los propios programas, como los módulos del núcleo y el núcleo mismo. Para instalarlo no requiere que se recompile el sistema. En la nueva versión su autor se ha centrado en hacer limpieza en el código. http://freshmeat.net/projects/linice/ Gv4l 2.2.4 Si poseemos una tarjeta de televisión, podemos emplear Gv4l para grabar una película, u otro espectáculo interesante. Este programa permite grabar los flujos de imagen y de sonido desde los dispositivos V4L (Video For Linux, los tuners de televisión y cámaras de Internet, entre otros) en varios formators, p. ej. XviD, DivX o el crudo. La nueva versión da soporte al programa Transcode (utilizado para codificar imágenes) en la versión 0.6.13 o superiores. Aparte de eso, se ha mejorado el método de leer los datos de canales desde los ficheros de configuración Xawtv. http://freshmeat.net/projects/gv4l/
Figura 2. Gracias a GFSGL podemos acceder a todos los juegos desde un solo menú
www.lpmagazine.org
39
software aktualności
linuxfresh
Munin,
generador de listas y estadísticas Piotr Machej
M
ientras estamos utilizando Linux, nos gustaría tener la oportunidad de comprobar cómo se presenta el uso de nuestra conexión, bajo qué carga trabaja el procesador o con cuánta memoria se hacen nuestros programas. Esto se puede verificar mirando los ficheros adecuados (p. ej. en el directorio /proc/ ) o arrancando programas como Top. Podemos inculcarnos la regla de que una imagen vale más que mil palabras (y más que palabras, números) y generar unas estadísticas bonitas e inteligibles. Munin es uno de los programas que nos va a ayudar en esto. Munin es un programa escrito en lenguaje Perl que colecciona varias informaciones desde varios servidores y las visualiza de forma inteligible (por medio de una página web). Para generar los gráficos emplea la fenomenal herramienta RRDTool. El programa funciona con la arquitectura master/node. El gestor (master) se conecta con los nodos (node) cada cierto periodo de tiempo definido y descarga una serie de datos de ellos. Luego, los almacena en ficheros RRD (Round Robin Database) y, si hace falta, actualiza los gráficos. Los mismos gráficos se pueden ver a través del navegador web. Para descargar datos en los nodos, Munin utiliza los plugins que el propio usuario puede confeccionar por su cuenta, e incluso escribir unos propios. El nodo lo puede ser cualquier ordenador, tanto en la red local como en Internet, sin excluir, por supuesto, al mismo gestor. Gracias a esto, podemos monitorear con facilidad muchos sistemas distintos, e incluso crear listas (Munin permite que se escojan los gráficos para visualizar). Antes de instalar Munin hay que cuidar que se cumplan un par de condiciones. Por un lado, tenemos que tener instalado Perl en su versión 5 o en una más nueva. Aparte de esto, en el ordenador que ejerza el papel de gestor hay que instalar el RRDTool (desde la página http://people.ee.ethz.ch/~oetiker/ webtools/rrdtool//index.html) junto con los
40
Linux+ 2/2005
Figura 1. De las FAQ también aprenderemos cómo arrancar los plugins con el derecho de otros usuarios
siguientes módulos Perl: Getopt::Long y HTML::Template. En los ordenadores que desempeñen el papel de nodos tenemos que instalar el módulo Perl denominado Net::Server::Fork. Todos estos módulos están disponibles en el archivo CPAN, así que podemos instalarlos con el comando perl -MCPAN -e 'install Net::Server::Fork'
y los análogos, dados con la autorización del usuario root. El archivo descargado desde la página de inicio del proyecto Munin tiene que descomprimirse en cada uno de los ordenadores en los que tenemos intención de instalar el gestor y los nodos. Lo más importante es habilitar el fichero Makefile.config a nuestras necesidades. Éste, contiene todas las rutas utilizadas por el programa, así como el nombre de usuario y los grupos, según los cuales se irán formando los derechos al arrancarse Munin. Merece la pena comprobarlos, puesto que, por defecto, se fijan las rutas al directorio /opt/munin/, lo que no necesariamente tiene que convencernos.
Los siguientes pasos difieren entre sí, dependiendo de si queremos obtener el gestor o un nodo. Si se trata de instalar el gestor, generamos el usuario munin (u otro, definido en el fichero Makefile.config), y después, damos el comando make install-main. Además, mediante el comando make install-doc install-man podemos instalar toda la documentación. Durante la instalación del nodo, creamos el grupo munin (u otro, definido en el fichero Makefile.config) y, a continuación, damos el comando make install-node install-node-plugins. Sólo queda decidirnos por qué plugins van a funcionar en un nodo determinado: de esto dependerán las informaciones que éste proporcione al gestor. La mejor forma de hacerlo es ejecutar el comando munin-node-configure --shell | sh, que automáticamente conectará el soporte de los plugins ofrecidos por Munin a nuestro sistema. Podemos habilitar independientemente los plugins empleados: basta crear en el directorio /etc/opt/munin/plugins/ los enlaces
FRESH
Noticias
Snortalog 2.3.0c A los usuarios del sistema de detección de intrusos Snort seguro que de vez en cuando les gustaría comprobar cuántos ataques ha sufrido su sistema y qué peligro conllevaban éstos. Uno de los programas que permite hacerlo es el script Snortalog escrito en Perl. Analiza los logs de Snort y genera informes inteligibles en el formato deseado (HTML, PDF o texto puro). Aparte de los tres formatos de los logs de Snort, sabe analizar de manera similar los logs del: Fw-1, Netfilter y de IPFilter. http://freshmeat.net/projects/snortalog/
Figura 2. Los datos sobre las interfaces de red son sólo una parte de la información que se visualiza
simbólicos a los ficheros de plugins ubicados en el directorio /opt/munin/lib/plugins/. En el fichero Makefile.config esos directorios están definidos en las variables CONFDIR y LIBDIR respectivamente. Con esto no termina la configuración. Tenemos que prestar atención a los ficheros de configuración de los nodos y del gestor. En lo que a los nodos se refiere, hay que examinar el fichero /etc/opt/munin/ munin-node.conf (otra vez en el directorio CONFDIR). Lo que de allí nos interesa en particular es la opción allow, que determina qué ordenadores están autorizados a conectarse con el nodo. Por defecto, sólo se permiten conexiones desde una máquina local. Por debajo podemos agregar las sucesivas líneas de allow con valores adecuados, p. ej. allow ^192\.168\.0\.1$ (es indispensable el uso de expresiones regulares). Normalmente no hace falta que se cambien las demás opciones incluidas en el fichero. La situación del fichero de configuración del gestor – /etc/opt/munin/ munin.conf – es distinta. Aquí, aparte de los nombres de los directorios que guardan los ficheros RRD, las páginas web generadas, los logs del sistema y los ficheros de bloqueo, podemos determinar los datos de todos los nodos. La descripción más simple de un nodo tiene la forma de: [ordenador.dominio.es] address ordenador.dominio.es
También podemos servirnos de las cifras: address 192.168.0.1.
Ahora ya podemos arrancar los nodos y el gestor. Los nodos deben seguir en actividad, recogiendo datos y esperando las consultas del gestor. Lo más sencillo es situar el acto de nombrarlos en los ficheros de arranque: /opt/munin/sbin/munin-node (directorio indicado por la variable SBINDIR). El gestor debe arrancarse en intervalos de tiempo regulares, así que vale la pena emplear el servicio Cron. Generamos el fichero crontab.munin con el contenido: SHELL=/bin/sh MAILTO=gerard */5 * * * * /opt/munin/bin/munin-cron
Después, basta dar el comando crontab u munin crontab.munin desde el nivel de usuario root. A partir de este momento, el programa /opt/munin/bin/munin-cron (la ruta definida en la variable BINDIR) se arrancará cada cinco minutos con los derechos de usuario munin. Los resultados eventuales se enviarán a la cuenta gerard (aquí debemos introducir el nombre de nuestra cuenta). No hay que temer una avalancha de correo: sólo recibiremos cartas si se produce algún problema (p. ej. si no hemos instalado los módulos Perl exigidos). Ahora nos queda abrir el fichero /opt/ munin/var/www/index.html en el navegador y disfrutar de las estadísticas que se estén generando. Además, conviene familiarizarse con la documentación del programa, para adecuar mejor las estadísticas a nuestras propias exigencias. http://freshmeat.net/projects/munin/
Vobcopy 0.5.14 Una de las etapas en la conversión de una película DVD al formato XviD o similar (la realizamos, por ejemplo, cuando queremos ver nuestra película en un ordenador que carece de la unidad DVD) es meter el contenido del disco en el disco duro. El programa Vobcopy puede ayudarnos a realizar esta tarea, empleando la librería Libdvdread, y copiando ficheros .vob en el disco, decodificándolos, si hace falta (si sólo contamos con la librería Libdvdcss). El programa se asegura de que hay espacio suficiente en el disco, y además compara los tamaños de los ficheros que se acaben de copiar, para detectar si se ha producido algún error. También es capaz de copiar todo el contenido vídeo de un disco DVD, o sólo los ficheros seleccionados. http://freshmeat.net/projects/vobcopy/ FAQtor 0.5 Los autores de las páginas web más crecidas a veces colocan allí una sección que contiene las respuestas a las preguntas más frecuentes (FAQ). Si la lista es larga, actualizarla puede exigir un poco de esfuerzo. Podemos facilitar esta tarea empleando un generador, el programa FAQtor. Basta construir un sencillo fichero XML con las preguntas y respuestas, así como un fichero de configuración, igual de simple, y FAQtor generará una página con FAQ pulcramente formateada. http://freshmeat.net/projects/faqtor/ AFD 1.2.21 Si regularmente enviamos ficheros a varias personas, o a muchos ordenadores, nos vendrá bien fijarnos en el programa AFD (Automatic File Distributor). El programa es capaz de enviar ficheros tanto a través del protocolo FTP, como con el SMTP. Aparte de esto, puede distribuirlos localmente, copiándolos tan sólo. AFD no se pierde al reiniciar el envío de ficheros si se ha cortado la conexión. La interfaz gráfica manejable permite supervisar la transmisión. La nueva versión contiene mejoras de algunos errores pesados. http://freshmeat.net/projects/afd/
www.lpmagazine.org
41
software aktualności
juegos
Dominions II
– juego de estrategia y fantasía Michał Niwicki
E
n el año 2004 la empresa SharpnelGames lanzó al mercado la segunda parte del juego de estrategia Dominions. El producto nos impresiona por su sonido y, lo que es lo más importante, con su jugabilidad.
¿Qué es este juego?
Dominions II es un juego de estrategia y fantasía que se parece a otros juegos estratégicos; sin embargo, como aseguran sus autores, en realidad, es muy diferente. Al igual que en otros juegos de este tipo podemos ampliar nuestras tropas, conquistar los territorios vecinos, controlar las fuerzas mágicas y cuidar del desarrollo de nuestro imperio. Dominions II dispone de una profundidad adicional que debe satisfacer a los aficionados a los juegos estratégicos más exigentes; el juego no se limita a batallas regulares con los principados vecinos, sino que exige también al jugador familiarizarse con el mundo donde se desarrolla la acción.
Primera impresión
Los autores de Dominions II se esforzaron por presentar un ambiente especial desde el principio. Al arrancar el juego nos da la bienvenida una música medieval suave y unos efectos gráficos muy refinados. Las opciones vinculadas con los parámetros iniciales del juego se hallan sobre el fondo de un escenario nebuloso y ascético de un paisaje pardo verde. Cada clic con el ratón en alguno de los elementos del menú nos hace oír un sonido parecido a la música oida en el fondo. La complejidad del juego es visible ya desde el principio, cuando necesitamos elegir al protagonista (dios), definir los parámetros del imperio y quién será nuestro enemigo. Gracias a todo esto, cuando ya estamos bien metidos en el juego, hasta nos sorprende como vuela el tiempo; es que es imposible resistirse a Dominions II.
Requisitos del hardware: – – – –
Memoria RAM: 64 MB Disco duro: 250 MB Procesador: Pentium II 300 MHz Aceleradora 3D
Empezamos a jugar
Antes de pasar a ampliar nuestro ejército, extender las fronteras de nuestro imperio y adquirir algunos conocimientos mágicos secretos, debemos destinar un poquito de tiempo para definir varios parámetros que influyen en el transcurso del juego. Creamos al dios (será nuestro protagonista durante el juego), definimos en qué medida y cómo ejerceremos el control (fuego, viento, agua, tierra, estrellas, muerte, naturaleza y sangre), seleccionaremos la localización de nuestras tierras y definiremos su carácter. Luego crearemos un juego nuevo: escogemos a otros jugadores (pilotados por el jugador o el ordenador) y uno de los guiones disponibles. Al final, podremos definir algunas opciones adicionales comunes para todos los participantes del juego. Al finalizar esta etapa podemos empezar a jugar.
Juego en la red
En Dominions II pueden participar simultáneamente 17 jugadores. Ya que los movimientos de cada uno se dividen por turnos y un turno puede tardar incluso docenas de minutos, el fabricante permite jugar a través del correo electrónico. Sin embargo, normalmente las personas que desean apuntarse a una sesión, pueden conectarse con el servidor que controla el desarrollo del juego.
Después de algunas horas de juego... Figura 1. El protagonista encarna a uno de los personajes que hemos indicado
42
Linux+ 2/2005
...pasadas en la ampliación del imperio, del ejército, en la búsqueda de la magia,
JUEGOS
Noticias
Scorched 3D Ha aparecido la versión más nueva de Scorched 3D, un clon espectacular del ya clásico juego Scorched Earth para DOS. Scorched 3D es un juego plenamente tridimensional, con el soporte para el modo OpenGL. Los autores intentaron conservar el clima y la extraordinaria jugabilidad del prototipo, añadiendo a la vez una gráfica excelente y muchas opciones nuevas. Por el momento es posible también jugar con otras personas en la red LAN o Internet. http://www.scorched3d.co.uk/
Figura 2. El juego sólo aparentemente se parece a un juego de estrategia típico
el estudio de los mapas y el análisis del porqué durante una de las batallas de repente desaparece para siempre en la niebla una de nuestras tropas, nos damos cuenta de que esta estrategia no tiene nada que ver con la estrategia del tipo Command and Conquer, Warcraft, o Settlers. En Dominions II, elementos como la ampliación del imperio, las escenas de batalla (también buenas) o el entrenamiento de los soldados constituyen solamente un elemento de la totalidad. El acento especial se ha puesto en la estrategia, esto es, en la planificación de qué, dónde y cómo hacer para, después de algunos turnos, poder beneficiarse del aumento de la cantidad del oro en el tesoro o de una escaramuza ganada.
¿Qué hay en la versión completa de Dominions II?
La versión demo de Dominions II, después de algunos turnos (varias horas del juego), se interrumpe con la información de cómo adquirir la versión completa del juego. Después de pagar 50 dólares, recibiremos una guía de casi cien páginas, la posibilidad de jugar con personajes nuevos (dos naciones submarinas) y muchas opciones que pueden influir en el desarrollo del juego. Además, tenemos
Nota
– Gráficos: 4/5 – Música: 5/5 – Jugabilidad: 5/5
la posibilidad de resucitar a los líderes muertos y conducirlos por los territorios en forma de momias. Están también disponibles varios monstruos y elementos complementarios de magia.
Resumen
Dominions II es un juego de estrategia en cada uno de sus aspectos, desde la definición de los parámetros de juego, el desarrollo, modernización y planificación del futuro del imperio, hasta en los complementos como las escaramuzas de los destacamentos, o la recaudación de las contribuciones de las colectividades locales. Los efectos gráficos y la música, ajustada perfectamente a los escenarios medievales, merecen un reconocimiento especial. A pesar de su complejidad, el dominio de los conocimientos básicos no debe suponer ningún problema para cualquier jugador. El juego gustará, casi con total seguridad, a todos los aficionados a la estrategia y debe hallarse, obligatoriamente, en sus colecciones. Un defecto indudable de Dominions II es su precio, pero a pesar de todo, merece la pena regalárnoslo para disfrutarlo en las largas noches de invierno.
En Internet: - Página de inicio del fabricante del juego Dominions II:
Xmame 0.89 Xmame es un emulador de las máquinas automáticas de juego más populares. Está desarrollado desde el año 1999 y actualmente más de 100 programadores trabajan en su desarrollo. En su nueva versión, Xmame sirve a más de 2.000 juegos diferentes. Se integraron muchas mejoras en el código de la aplicación, se mejoró el soporte para OpenGL y se añadió la opción experimental del juego en la red. Sin embargo, teniendo en cuenta el estado confuso de su licencia, habrá que pasar mucho tiempo en la búsqueda de ROM (archivos con juegos) en Internet. http://x.mame.net/ Battle for Wesnoth 0.8.8 Battle for Wesnoth es un juego estratégico por turnos en plan Fantasy. Los personajes que controlamos durante el juego van adqiriendo experiencia y pasando, así, a los sucesivos niveles. Es también posible jugar en la red. En la versión más reciente se corrigieron muchos errores, se añadieron nuevos mapas y unidades. Se reemplazó una parte de los gráficos del juego, se mejoró la localización y se “limpió” el código de juego de los elementos superfluos y problemáticos. http://www.wesnoth.org/ Apricots 0.2.6 Ha aparecido una nueva versión (todavía inicial, aunque jugable) del juego Apricots en la que pilotamos un pequeño avión intentando eliminar los objetos enemigos, con disparos o bombas. Conforme a las intenciones de los autores el juego debe ser rápido e irresistible. En la tabla puede haber hasta 6 aviones a la vez, entre ellos 2 pueden estar controlados por los jugadores. El juego es todavía en una versión muy inicial: no posee ningún menú, al arrancar la aplicación pasamos inmediatamente al juego, no dispone de la posibilidad de guardar el estado del juego, y la opción del juego de red todavía está en la lista de las tareas por hacer. http://www.fishies.org.uk/apricots.html
http://www.shrapnelgames.com/
www.lpmagazine.org
43
primeros pasos
GRUB, gestor de arranque Piotr Machej
¿
Qué es un programa de arranque (ing. bootloader) y si de verdad me será útil? Es un programa situado en los primeros sectores del disco duro (p. ej. en MBR – Master Boot Record). BIOS, después de arrancar el ordenador y concluir los tests, traslada el mando justamente al programa incorporado en el MBR del disco indicado como estándar, o sea, a nuestro programa de arranque. Su tarea consiste en cargar el sistema operativo en la memoria y cederle el control. Actualmente, la mayoría de los programas de arranque populares permite escoger uno de los sistemas instalados en el disco. LILO y GRUB (GRand Unified Bootloader) son los programas más populares de este tipo que se suministran junto con las distribuciones de Linux. En este artículo trataré de acercaros la segunda de estas herramientas.
Ejemplos de uso
En el DVD
Las herramientas de las que habla este artículo están disponibles en el DVD
44
Linux+ 2/2005
Soy tradicionalista, no voy a callarlo. Por este motivo, durante un tiempo muy largo (especialmente cuando era estudiante) solía arrancar Linux desde un disquete. Mis compañeros del piso tardaron muchísimo en comprender por qué se me arrancaba otro sistema que no era éste. Y, en general, ¿para qué arrancar un sistema en el que no se puede jugar en Doom? Luego empecé a utilizar LILO. Gracias a este programa de arranque ya no tenía que recordar en qué bolsillo había dejado mi disquete. Además, mi ordenador entonces ya estaba a salvo de los intentos de mi compañía estudiantil, así que pude permitirme aquel lujo. Y aunque en las sucesivas distribuciones tuve la oportunidad de cambiarlo por GRUB, durante un par de años me obstinaba en seguir con LILO. El cambio lo impulsó mi propia
pereza... Simplemente, cuando una y otra vez se me olvidaba arrancar el comando lilo después de haber realizado cambios en el fichero de configuración y tenía que buscar el disquete de rescate, me dije: ya está bien. Instalé GRUB y desde aquel momento ya no tengo de qué quejarme. E incluso, si viene a verme algún familiar, no hay manera de que arranque lo que no debe, al menos hasta que adivina la contraseña.
Instalación
Prácticamente en todas distribuciones podemos hallar los paquetes con el programa GRUB. Es más, a la hora de instalar la distribución podemos escoger el programa de arranque que queramos utilizar. Si nos decidimos por GRUB, al instante el sistema tratará de habilitar por sí solo la configuración de éste. Desde luego, si no hemos optado por instalar GRUB, ahora tenemos que hacerlo por nuestra cuenta. Sobre todo, asegurémonos de que está aún sin instalar. En el caso de Aurox aprovecharemos el comando rpm -q grub para conseguirlo. Si aparece el mensaje el paquete grub no está instalado, tendremos que cambiar esta situación. El paquete con GRUB lo podemos instalar desde un
Figura 1. La versión de GRUB utilizada en las distribuciones ya no se sigue desarrollando
grub
Configuración básica
Figura 2. El menú principal de GRUB no tiene un aspecto demasiado atractivo
par de fuentes distintos. La primera son los discos de los que hemos instalado nuestra distribución. Si se trata de Aurox, el paquete se halla en el primer disco, así que después de insertarlo en la unidad podemos dar los comandos: # mount /mnt/cdrom/ # rpm -Uvh /mnt/cdrom/Aurox/RPMS/
S
grub-0.94-5.i386.rpm
La segunda fuente son los repositorios de paquetes. Si utilizamos algún sistema de gestión de paquetes, podemos servirnos de algún comando apropiado para su caso, por ejemplo: # yum install grub # apt-get grub install # emerge grub
Eso sí, realizamos sólo uno de dichos comandos. De forma análoga, podemos aprovechar el sistema de gestión de paquetes para actualizar la versión de GRUB (p. ej. a través del comando yum update grub). Contamos también con una tercera posibilidad. Si insistimos en tener la última versión, podemos descargarla desde la página de inicio del proyecto (htt p: // www.gnu.org /sof t ware /grub / ). Debido a que ya han comenzado los trabajos sobre GRUB 2, su versión más antigua (la línea 0.9.x, que sigue empleándose en las distribuciones) se ha denominado GRUB Legacy. Aquí sólo disponemos de las fuentes, cuya instalación sigue el camino de siempre: tras descargar y descomprimir el fichero (tar xzvf grub-0.95.tar.gz), entramos en el directorio que acaba de crearse y damos los comandos: ./configure y make. A continuación, tras haber adquirido los derechos del administrador (mediante el comando su -), procedemos al último comando: make install. Por supuesto, aprovechar los paquetes disponibles para nuestra distribución es la mejor solución. Ahora tenemos que configurar nuestro GRUB, y después, situarlo en el disco.
primeros pasos
Primero, intentemos utilizar GRUB para arrancar nuestro Linux. Para ello, nuestro fichero /boot/grub/grub.conf debe contener al menos estas cuatro líneas:
puede leer más sobre la denominación de particiones aplicada por GRUB en el recuadro Denominación de discos y particiones. En la línea siguiente determinamos qué núcleo queremos cargar. Detrás de la palabra kernel indicamos la ruta al fichero con el núcleo (en nuestro ejemplo vmlinuz-2.4.22-1), que se mide respecto a la partición descrita en la línea anterior. Dado que en nuestro ejemplo disponemos de una partición separada para el directorio /boot/, indicamos la ruta /vmlinuz-2.4.22-1. Tras escribir el nombre del fichero del núcleo, introduciremos los parámetros del núcleo. En nuestro caso definimos la partición con el sistema principal de ficheros (root). La explicación respecto al valor LABEL=/ está situada en el recuadro Denominación de discos y particiones. Hay que fijarse en que la palabra root en esta línea tiene otro significado que en la línea anterior. Aquí es un parámetro del núcleo que indica el sistema principal de ficheros, mientras que la palabra root que aparece en la segunda línea es un comando de GRUB que permite indicar el dispositivo respecto al cual se definirán las siguientes rutas de acceso. La última línea no es imprescindible, pero si sólo tenemos construido el fichero initrd adecuado para nuestro núcleo, deberíamos aprovecharlo. El comando initrd incluido en esta línea carga el disco RAM. Si lo vamos a emplear, o no, depende de la configuración del núcleo.
title Aurox Linux (2.4.22-1)
Opciones generales
El fichero principal de configuración de GRUB es el /boot/grub/grub.conf. Normalmente, existen dos enlaces simbólicos más a este fichero: /boot/grub/menu.lst y /etc/grub.conf (así es en Aurox, en otras distribuciones el fichero de configuración principal lo puede ser alguno de los tres enumerados aquí). Aunque no sea imprescindible, ya que podemos emplear la línea de comandos de GRUB, una configuración adecuada de este fichero nos facilitará el trabajo en gran medida. Gracias a ella, no tendremos que escribir la serie de comandos cada vez que se inicie el ordenador, y en el caso de instalar varios sistemas, nos serviremos de un cómodo menú.
Disquete de rescate
Cuidaremos, sobre todo, de estar equipados con un disquete o un disco de rescate. El disquete lo hemos podido generar mientras se instalaba la distribución. Si no lo hemos hecho, podemos ayudarnos normalmente del primer disco de la distribución. En general, no hace falta usar el disquete de rescate, pero a la hora de cambiar el programa de inicio sí pueden surgir problemas que nos impidan arrancar cualquier sistema de los instalados en el disco.
Arrancando Linux
root (hd0,7) kernel /vmlinuz-2.4.22-1 ro
S
root=LABEL=/ initrd /initrd-2.4.22-1.img
La primera contiene, tras la palabra title, el texto que aparecerá en el menú. Lo mejor es colocar allí el nombre del sistema (distribución) y el número de la versión del núcleo entre paréntesis. Evidentemente, también podemos proporcionar otra información complementaria (como, p. ej. si se utiliza FrameBuffer) que permitirá identificar los elementos del menú. La segunda línea indica en qué partición está colocado el directorio /boot/. En nuestro ejemplo, el directorio /boot/ se encuentra en una partición separada /dev/ hda8, mientras que el directorio principal del sistema / está ubicado en la partición /dev/hda9 (marcada con la etiqueta / ). Se
Aparte de las cuatro líneas especificadas arriba conviene no dejar de añadir un par de líneas más, que definirán el modo de comportarse de nuestro menú. Son las siguientes: default=0 timeout=30
Figura 3. La documentación de GRUB la podemos descubrir también a través de una página web
www.lpmagazine.org
45
primeros pasos
Las colocamos delante (muy importante: delante) de todas las líneas que se acaban de mencionar, justamente al inicio del fichero /boot/grub/grub.conf. La primera de ellas determina el elemento del menú que se seleccionará por defecto. Como ya sabemos, GRUB empieza desde cero, de modo que en nuestro ejemplo hemos escogido el primero (y por ahora, único) elemento del menú. La segunda opción significa que GRUB tardará 30 segundos en esperar nuestra decisión. Si no pulsamos ninguna tecla, arrancará el elemento del menú indicado en la opción default. Si hemos empleado la opción timeout sin haber utilizado default, se arrancará el primer elemento definido en el menú.
Grabando GRUB en el disco
Ahora ya podemos grabar GRUB en nuestro disco (si es que no lo hemos hecho todavía). En general, optaremos por colocarlo en el primero de los discos. El comando grub-install /dev/hda sirve para esto. A continuación, si cambiamos el contenido del fichero /boot/grub/grub.conf, no tendremos que volver a ejecutar este comando. GRUB reconocerá los cambios en el fichero de manera automática y al siguiente arranque del ordenador visualizará el menú apropiado. De hecho, para el único caso en el que tengamos que volver a dar este comando es a la hora de actualizar GRUB a su versión más nueva. Es aconsejable reiniciar el ordenador para comprobar cómo funciona nuestro GRUB. Debemos ver un menú sencillo con un elemento por seleccionar. Después de que lo confirmemos mediante la tecla [Enter] (o tras esperar 30 segundos) debe cargarse nuestro Linux.
Arrancando varios sistemas
Aprovecharíamos mejor las capacidades de GRUB si tuviéramos instalados también otros sistemas operativos: muchísimos usuarios del sistema simbolizado por el pingüino emplean también Windows (tal vez sólo para jugar de vez en cuando) o el FreeBSD (por motivos profesionales o de estudios, por ejemplo).
Otras distribuciones de Linux
Si tenemos intención de arrancar otras distribuciones de Linux también instaladas en nuestro ordenador a través de GRUB, procedemos según lo que se explica en la
46
Linux+ 2/2005
Denominación de discos y particiones En el fichero de configuración de GRUB (/boot/grub/grub.conf) no utilizamos, en general, las marcas de discos y particiones conocidos de Linux, como hda, hdb2 y otros por el estilo. En lugar de esto, vemos los distintivos tipo (fd0) o (hd1,2). Esto al principio resulta un poco confuso, pero uno se acostumbra fácilmente. La descripción (fd0) representa la primera unidad de disquetes (hay que acordarse del paréntesis y la ausencia de espacios entre los caracteres). Si se trata de discos duros, el nombre (hd0) corresponde al disco hda, el (hd1) es el disco hdb, etc. Esto es, en vez de las letras, como es evidente, empleamos las cifras empezando desde cero. Para señalar una partición concreta, tras la coma insertamos su número (otra vez, empezando desde cero). De modo que para hda1 tenemos (hd0,0), para hda7 – (hd0,6), y para hdc3 – (hd2,2). En general basta recordar que estamos dando números desde 0, y no desde 1. Si nos surge alguna duda, en el fichero /boot/grub/device.map podemos comprobar la asignación de los nombres a los discos. Para un ordenador que posea sólo una unidad de disquetes y un disco duro, este fichero debe contener lo siguiente: (fd0)
/dev/fd0
(hd0)
/dev/hda
En algunas distribuciones (p. ej. en Red Hat y las derivadas: Fedora y Aurox) es muy
común designar la partición mediante una etiqueta. Si en nuestro fichero de configuración aparece una línea en forma de: kernel /vmlinuz-2.4.22-1 ro root=LABEL=/, prestemos atención al texto root=LABEL=/. Con esto, se suplanta el texto regular, que está en forma de root=/dev/hda1 (si nuestro directorio / está situado en la partición hda1). Posiblemente nos dé por preguntarnos para qué sirve y por qué se emplea todo esto. Bien, pues, esta forma de anotación nos permite mudar el disco de forma libre dentro de nuestro ordenador, p. ej. en caso de añadir una unidad o grabadora nueva. Si aplicamos las etiquetas, entonces no estamos obligados a corregir los ficheros de configuración (grub.conf y /etc/fstab entre otros). La pregunta que se va formando es: ¿cómo leer y cómo crear las etiquetas para las particiones? Para esto sirve el comando e2label /dev/hda1 donde, en lugar de /dev/ hda1, introducimos el nombre de la partición ext2 o ext3. Este comando dará como resultado la visualización de la etiqueta asignada a la partición. Si queremos obsequiar a la partición con una etiqueta nueva, lo anotamos así: e2label /dev/hda1 etiqueta. En este sentido, conviene subrayar que también podemos utilizar de las etiquetas sólo cuando estemos cargando el disco RAM correspondiente a nuestro núcleo. Para esto sirve el comando initrd /initrd-2.4.22-1.img, ubicado debajo de la línea del fichero de configuración que se acaba de mencionar.
sección Arrancando Linux de este mismo artículo. Para ponerlo en práctica, basta agregar una sección más que empiece con la línea title y contenga las opciones adecuadas. Desde luego, este modo de proceder también puede resultarnos útil a la hora de probar un núcleo nuevo en nuestra distribución. Supongamos que hemos compilado el núcleo por nuestra propia cuenta y que lo hemos denominado vmlinuz-2.4.22-1a. Entonces, al final del fichero /boot/grub/grub.conf, escribiremos las siguientes líneas:
olvidamos de esto, nuestro sistema dejará de cargarse en la fase de montar el sistema principal.
title Aurox Linux (2.4.22-1a)
El comando title ya nos suena familiar. En la línea rootnoverify indicamos la partición en la que está situado el sistema que queremos cargar. Este comando se distingue del comando root por el hecho único de que la partición indicada no se monta. El comando chainloader remite el control al siguiente programa de arranque. ¿Cómo funciona eso? Si en la partición /dev/hda1 tenemos instalado sólo un sistema único
root (hd0,7) kernel /vmlinuz-2.4.22-1a ro root=LABEL=/ initrd /initrd-2.4.22-1a.img
Si no hemos generado ningún disco RAM, no agregamos la última línea, y en vez de root=LABEL=/ tenemos que indicar el nombre adecuado de la partición (en nuestro ejemplo root=/dev/hda9). Si nos
Windows, DOS
El modo más fácil de arrancar los sistemas de la familia Windows es poner al final del fichero /boot/grub/grub.conf las líneas siguientes: title DOS lub Windows rootnoverify (hd0,0) chainloader +1
grub
(p. ej. DOS o Windows 98), éste se iniciará. Si, por el contrario, tenemos instalados en nuestro disco los sistemas Windows 98 y Windows XP, el programa de arranque instalado por Windows XP es capaz de dar soporte a estos sistemas. De este modo, en el comando rootnoverify basta indicar la partición en la que está instalado el programa de arranque de Windows XP. Gracias a esto, tras seleccionar en el menú de GRUB el elemento DOS o Windows veremos un siguiente menú que nos permitirá elegir entre Windows 98 y Windows XP.
FreeBSD
Los sistemas de la familia FreeBSD los arrancaremos de forma analógica a Windows y DOS, es decir, aplicando los comandos rootnoverify y chainloader. También podemos indicar, precisamente, el programa /boot/loader mediante las siguientes líneas del fichero /boot/grub/grub.conf:
fin son: Memtest86 y Memtest86+. GRUB nos puede ayudar a configurarlos. Basta escoger sólo uno de los programas que acaban de mencionarse, ya que ambos se nutren de sus respectivos códigos fuentes. Personalmente, recomiendo Memtest86+. Primero, descargar emosel fichero adecuado desde la página de inicio del programa (http://www.memtest.org/ ). Localizamos la sección Download (Pre-built & ISOs), en la que se hallan las versiones ya compiladas. Luego, desde la sección que corresponde a la última versión (en el momento de escribir este artículo era la 1.40), descargamos el fichero que se encuentra bajo el enlace Download – PreCompiled Bootable Binary (.gz). El fichero tiene apenas alrededor de 40 kB, por lo que su descarga no debe de durar demasiado. Para sentirnos seguros podemos verificar si el fichero está correcto entrando en el directorio en el que nuestro fichero se sitúa y aplicando el comando:
title FreeBSD root (hd1,a) kernel /boot/loader
Aquí se puede observar el uso de una denominación distinta. Esto se debe a que FreeBSD nombra sus particiones con las letras del alfabeto, y además introduce el concepto de slice (la llamada loncha – la partición nativa de FreeBSD). Entonces, si tenemos FreeBSD instalado en la primera partición del segundo disco, la anotación (hd1,a) debe ser correcta. Así pues, localizará el primer slice en el que se encuentre la partición a. Si queremos especificar con detalle el slice que va a montarse, podemos hacerlo en forma de (hd1,0,a).
Arrancando Memtest86+
De vez en cuando, es aconsejable hacer tests de la memoria de nuestro ordenador para detectar todos los problemas a tiempo. Los dos mejores programas dedicados a este
md5sum memtest86+-1.40.bin.gz
Por supuesto, si acabamos de descargar la última versión, tenemos que ajustar el nombre del fichero. Como resultado de ello obtendremos una serie de caracteres (la llamada abreviatura MD5) que comparamos con la serie de caracteres colocada junto al enlace del fichero en la página de inicio del programa. Si ambas series resultan iguales, podemos continuar. Ya es hora de que descarguemos el fichero. Lo conseguimos mediante el comando gzip -d memtest86+-1.40.bin. A continuación, adquirimos los derechos del superusuario (damos el comando su – y la contraseña del usuario root), después de que copiemos el fichero memtest86+1.40.bin al directorio /boot/. Ahora nos queda modificar correctamente el fichero de configuración de GRUB. Lo abrimos en nuestro editor preferido (p. ej. Vim) y al final le añadimos dos líneas: title MEMTEST root (hd0,7) kernel /memtest86+-1.40.bin
Figura 4. Memtest86+ ocupa poco espacio y resulta muy útil
Por otra parte, en lugar de MEMTEST, también podemos insertar cualquier título que nos parezca. Recordemos que estas líneas siguen refiriéndose a nuestro ejemplo. Si guardamos el directorio /boot/ en una partición distinta, tenemos que ajustar los valores de los comandos root y kernel.
primeros pasos
Una vez guardados los cambios, ya podemos reiniciar el sistema, y ahora en el menú debe aparecer una opción nueva: MEMTEST. Si la seleccionamos, se arrancará el programa Memtest86+ y enseguida comenzará a hacer un test de memoria. Las opciones del programa están disponibles tras pulsar la tecla [c], mientras que mediante la tecla [ESC] podemos reiniciar el ordenador, en caso de que no nos quedara tiempo para realizar el test completo.
Embelleciendo GRUB
Si no estamos satisfechos con el aspecto de GRUB por defecto, podemos tratar de darle más vida. Una de las posibilidades es fijar un dibujo visible en el fondo, o modificarlo. Además, podemos ajustar los colores del tipo de letra según nos guste. La mayoría de las distribuciones suministra su propio fondo para GRUB, de ahí que lo más probable es que ya contemos con alguna opción oportuna en el fichero de configuración. Es una línea con un contenido similar a éste: splashimage=(hd0,7)/grub/splash.xpm.gz
Esta línea asigna a la opción splashimage el fichero splash.xpm.gz que figura en el directorio /grub/ en la partición /dev/hda8 (en nuestro ejemplo, este fichero se encuentra en el directorio /boot/grub/ ). Si nuestro fichero carece de una línea así, hay que añadirla, ajustando los valores de manera adecuada. La línea debe situarse delante de la primera línea del title. La insertaremos, justamente, por debajo de la opción timeout. La pregunta que aparece es de dónde sacar los dibujos. Como vemos, en la opción splashimage no indicamos ficheros en formatos populares, como PNG o JPG. En cambio, allí disponemos de un fichero en formato XPM, comprimido con el programa Gzip. No es la única limitación. Nuestro dibujo puede presentarse sólo en 14 colores y en una resolución de 640x480 píxeles. Esto quizás no suene demasiado alentador, pero os aseguro que es posible preparar dibujos interesantes que cumplan con estos requisitos. Empecemos mirando un par de dibujos de ejemplo.
Escogiendo el fondo
En la página http://vision.featia.net/linux/ grubsplash/ encontramos varios ejemplos que pueden servirnos de fondo para GRUB. Aquí disponemos tanto de los ficheros en
www.lpmagazine.org
47
primeros pasos
formato GIF (gracias a ellos podemos examinar el dibujo en el momento), como de sus ficheros correspondientes en formato XPM.GZ. Los descargamos todos en nuestro disco. Los dibujos suministrados junto con la distribución se hallan en el directorio /boot/grub/, pero si colocamos allí también los nuestros podemos provocar un gran desorden. Para que esto no ocurra, formemos el directorio splashes/ a través del comando mkdir /boot/grub/splashes/ (necesitamos los derechos del usuario root para esto). Luego, copiemos a este directorio todos los ficheros descargados que terminen en .xpm.gz. Podría parecer que en este momento debemos modificar el fichero /boot/grub/ grub.conf e indicar la nueva ruta a éste en la línea que contiene la opción splashimage. Sí que se puede hacer insertando por ejemplo una línea así: splashimage=(hd0,7)/grub/splashes/
S
seachair.xpm.gz
Si nos apetece experimentar un poco por nuestra cuenta y comprobar qué fondo nos gusta más, el reinicio constante del sistema y la modificación de una sola línea puede llegar a cansarnos. Por suerte, es posible hacerlo de otra manera. Cuando ya reiniciemos el sistema y nos dé la bienvenida el menú de GRUB, pulsamos la tecla [c]. De este modo, pasamos a la línea de comandos de GRUB que se describe más en detalle en la sección Manejo. En esta línea, primero escribimos root (hd0,7) y luego pulsamos [Enter]. No olvidemos que este comando fija la partición que se utiliza en los comandos siguientes. A continuación, escribimos splashimage /grub/splashes/ seachair.xpm.gz y volvemos a confirmarlo con la tecla [Enter]. Y ya tenemos visualizado nuestro fondo. También, podemos ayudarnos de la tecla [Esc] para volver al menú y averiguar cómo parece. Si tenemos
Figura 5. Debemos acertar con un fondo que haga que el menú sea inteligible
48
Linux+ 2/2005
ganas de probar otros fondos, volvemos a pulsar la tecla [c] y procedemos como antes (no es necesario volver a utilizar el comando root, sólo basta el splashimage). Bien, pero, llegados a este punto, seguro que ya se nos ha olvidado cómo se llamaba cada uno de los ficheros. No nos preocupemos. La línea de comandos de GRUB da soporte de complemento a los nombres, así que podemos escribir las palabras splashimage / (acordémonos del carácter / ), y luego pulsar la tecla [Tab]. Aparecerá una lista de nombres disponibles de ficheros y directorios. De este modo, escribimos la continuación de la ruta ( /grub/splashes/ o /boot/grub/splashes/ – depende de nuestra configuración) y volvemos a pulsar la tecla [Tab] para visualizar los nombres de los ficheros con fondos. Si optamos por un fondo concreto, arrancamos el sistema (salimos con la tecla [Esc] hasta llegar al menú y seleccionamos nuestro Linux) y, acto seguido, añadimos una línea adecuada al fichero /boot/grub/ grub.conf.
Creando un fondo propio
Aparte de los ficheros con fondos ya listos, que se pueden descubrir en Internet, sin duda a todos nos gustaría tener la oportunidad de crear alguna cosa totalmente personal. Por supuesto, nada nos lo impide. Si, simplemente, tenemos ganas de convertir el dibujo que guardamos al formato comprimido XPM, aplicamos los comandos: convert -resize 640x480 -colors 14
S
picture.jpg picture.xpm gzip picture.xpm
El comando convert pertenece al paquete ImageMagick. Si éste no está instalado en nuestro sistema, lo podemos instalar desde los discos de la distribución, o desde el repositorio (de de la misma manera que se instala el paquete GRUB). La opción -resize 640x480 provoca el cambio de resolución del dibujo al tamaño deseado, y la -colors 14 reduce la paleta de colores a catorce. Los nombres picture.jpg y picture.xpm son del fichero de entrada (con el dibujo que se está convirtiendo) y de salida (con un fondo para GRUB), respectivamente. Con el segundo comando comprimimos el dibujo sirviéndonos del programa Gzip. El método mencionado arriba es rápido, pero los resultados obtenidos a veces piden que se les haga justicia. Una
Figura 6. Incluso usando catorce colores se pueden preparar bonitos dibujos
mejor solución resulta ser arrancar el programa Gimp, cargar el fichero que queremos convertir y luego cambiar el tamaño de la imagen (Imagen–>Escalar la imagen) y el número de colores (Imagen–>Modo–> Indexado). Gracias a esto, experimentaremos un poco con varias opciones de la imagen. Además, puede resultar imprescindible darle retoques a mano a todo el dibujo antes de que consigamos el efecto que nos satisfaga. Otra solución consiste en crear un dibujo vacío, de dimensión 640x480 y de una paleta de 14 colores, y después dibujar allí lo que nos apetezca. Sin embargo, no todos poseemos una vena artística. De nosotros depende qué método elijamos. El fichero que se acaba de obtener lo tratamos según se ha explicado en la sección Escogiendo el fondo. A algunos Lectores les puede interesar el porqué de comprimir los fondos antes de utilizarlos en GRUB. Podemos utilizar también los ficheros XPM no comprimidos con el programa Gzip. En general, la diferencia para nosotros será imperceptible, pero es mejor comprimirlos para guardar los principios. Con todos los ordenadores que hay, cargar un fichero comprimido (así más pequeño) desde el disco, descomprimiéndolo después en la memoria, lleva menos tiempo que cargar desde el disco un fichero más grande que no haya sufrido ninguna compresión.
Selección de colores
Además de definir un fondo propio, podemos dejarnos llevar por la tentación de cambiar los colores del tipo de letra empleado en el menú. Para eso sirven las opciones: foreground y background que se fijan en la parte inicial del fichero /boot/grub/grub.conf (las podemos colocar incluso delante de la opción splashimage). Estas opciones toman los colores guardados en el dieciseisavo RGB (Red, Green, Blue) por sus parámetros. Si queremos
grub
Figura 7. El script Grubconfig puede facilitarnos la configuración de GRUB
conseguir una letra blanca sobre un fondo negro, aplicaremos la opción: foreground ffffff
Para conseguirlo, creamos nuevas secciones title en el fichero de configuración. Una solución mejor es modificar los parámetros del núcleo al arrancar el sistema. ¿Cómo lograrlo? Basta mover la marca en el menú a la posición de nuestra distribución de Linux. En nuestro ejemplo es la línea Aurox Linux (2.4.22-1). En lugar de pulsar [Enter], pulsemos la tecla [e]. De este modo, se hará visible el contenido de esta sección title. Podemos movernos entre las líneas de manera parecida a como lo hacíamos en el menú. Si queremos modificar una línea concreta, pulsamos [Enter]. Intentemos ahora añadir en la línea, con el comando kernel, la opción del núcleo vga=791. Así se presentaría esta línea en nuestro ejemplo:
background 000000
De la misma manera, también podemos utilizar otros colores, como el rojo (ff0000), verde (00ff00), azul (0000ff ) y otros. Si queremos ajustar fácilmente los colores a nuestro fondo y a nuestro gusto, usaremos el mismo método que acabamos de aplicar en el caso de elegir el fondo. Esta vez, después de haber entrado en la línea de comandos de GRUB, damos los respectivos comandos: foreground ffff00 y background ff00ff (experimentando con los colores). Aparte de esto, existe la posibilidad de cambiar el color de resaltado y el del fondo del menú. Para ello, utilizamos el comando color, que podemos situar en el fichero de configuración delante de los comandos foreground y background. La lista de los colores disponibles en este comando la adquirimos utilizando el comando help color en la línea de comandos de GRUB (así como en la documentación de GRUB, info grub). Una llamada de ejemplo de este comando (que trae un color bastante agradable) adopta la forma de: color cyan/blue white/blue.
Manejo
Si hemos instalado GRUB en nuestro disco y hemos creado para él un fichero de configuración, el menú de GRUB nos dará la bienvenida al arrancarse el ordenador. Podemos movernos por este menú a través de las flechas del cursor, eligiendo el elemento que queramos activar mediante la tecla [Enter]. Además, aparte de esta opción, contamos con otras funciones útiles.
Modificando elementos del menú
Supongamos que nos apetece experimentar un poco con otros parámetros del núcleo.
kernel /vmlinuz-2.4.22-1 ro
S
root=LABEL=/ vga=791
Los cambios los confirmamos con la tecla [Enter]. La opción que acabamos de introducir dará como resultado que el sistema, en vez de arrancarse en su modo de texto estándar, se iniciará utilizando el búfer del marco, fijando la resolución de pantalla en 1024x768 píxeles con más de 16 mil colores. Si quisiéramos añadir una línea nueva, empleamos las teclas [o] y [O]. La primera provoca la suma de una línea nueva detrás de la línea actualmente marcada, y la segunda, delante de ésta. Las líneas inútiles las podemos borrar empleando la tecla [d]. Cuando ya estemos contentos con los cambios que acabamos de realizar, pulsamos la tecla [b], lo que impulsa el arranque del elemento editado junto con los cambios efectuados. Si preferimos renunciar a los cambios, volvemos al menú principal a través de la tecla [Esc].
Línea de comandos
La línea de comandos disponibles en GRUB nos ofrece unas capacidades incluso más grandes. Ya la hemos aprovechado en la sección Escogiendo el fondo, pero ahora vamos a hablar de ella con más detalle. Para conseguirla, pulsamos la tecla [c] en el menú de GRUB. Aquí disponemos de toda una serie de comandos más o menos necesarios. Obtenemos la lista de éstos simplemente pulsando la tecla [Tab]. Sin duda nos daremos cuenta que la lista incorpora muchos comandos que nos son familiares y que hemos empleado a la hora de crear el menú: chainloader, kernel,
primeros pasos
initrd, root y otros más. Entonces, como se demuestra, también podemos utilizar la línea de comandos para arrancar sistemas instalados en nuestro ordenador. De todas formas, si no hubiéramos creado el fichero de configuración /boot/grub/grub.conf, al arrancar el ordenador podríamos servirnos sólo de la línea de comandos de GRUB. En tal caso, si quisiéramos iniciar el Memtest86+ (instalado según las indicaciones explicadas antes), tendríamos que dar los comandos siguientes: root (hd0,7) kernel /memtest86+-1.40.bin boot
La única diferencia entre el contenido de grub.conf y los comandos que se dan en el arranque manual del sistema consiste en el comando adicional boot que hace que se cargue el núcleo señalado. Es aconsejable recordar que a la hora de introducir los comandos y los nombres de ficheros podemos completarlos automáticamente. Basta pulsar la tecla [Tab], para que se visualicen todos los valores admisibles. ¿Para qué más nos sirve la línea de comandos? A través del comando cat, inspeccionamos el contenido de cualquier fichero, p. ej. cat /etc/fstab. Esto implica que alguien que tenga acceso a la línea de comandos de GRUB puede leer prácticamente cualquier fichero (p. ej. el /etc/shadow, que contiene las contraseñas codificadas). No obstante, de eso nos ocuparemos dentro de un rato, en la sección Protección. Sean los que sean los peligros, el comando cat puede resultarnos útil si queremos verificar alguna configuración a la hora de llevar a cabo nuestros experimentos. Otro comando útil es find, que nos permite determinar en qué partición se encuentra el fichero indicado. Debemos escribir la ruta de acceso incondicional al fichero, p. ej. find /boot/grub/stage1 o find /grub/stage1 . Este comando nos devolverá el nombre de la partición que debemos escribir en la línea root en el fichero de configuración de GRUB. Merece la pena conocer los demás comandos. Es muy práctica la ayuda que podemos adquirir escribiendo help nombre_comando. También podemos arrancar la línea de comandos de GRUB desde la cuenta del usuario root al escribir el comando grub. Disfrutamos entonces de unas capacidades
www.lpmagazine.org
49
primeros pasos
similares a las que se hacen patentes en la línea de comandos que acaba de describirse, pero es obvio que no podemos emplear algunos de los comandos (lo que se refiere, por ejemplo, al comando splashimage).
Protección
El menú ofrecido por GRUB es muy cómodo, pero a veces concede demasiadas oportunidades. Como hemos observado en la sección anterior, un usuario que tenga acceso a GRUB puede cambiar los parámetros para llamar al sistema, sólo según le parezca, e incluso obtener acceso a los ficheros protegidos. Por suerte, GRUB permite bloquear tal acceso. Para esto, sirve una contraseña que prohíbe el acceso a la edición de elementos del menú, así como a la línea de comandos. Si ésta es nuestra intención, incluso el arranque de cada uno de los sistemas puede requerir que se dé la contraseña. Si queremos proteger nuestro sistema con estas medidas, claro, necesitamos los derechos del usuario root para lograrlo. Primero, generemos nuestra contraseña. Arrancamos la línea de comandos de GRUB: grub. Esta vez utilizaremos el comando md5crypt. Tras aplicarlo, se nos solicitará la contraseña. La proporcionamos (ojalá no sea demasiado fácil de acertar) y pulsamos [Enter]. Como respuesta veremos una línea con la contraseña codificada. Ahora editamos nuestro fichero de configuración (p. ej. vim /boot/grub/ grub.conf) y en su inicio colocamos una línea, que incorpora el contenido siguiente: password --md5
S
$1$ikVvf0$naEIsTUTM5yM1MYrx3Ms7.
En lugar del valor que aquí se indica hay que pegar el resultado de la operación del comando md5crypt. No es buena idea ayudarnos del valor que acaba de darse arriba, ya que éste es la palabra password codificada. Guardando la contraseña en el fichero, debemos asegurarnos de que no sea fácil de descubrir. Para conseguir esto fijamos propiamente los derechos de acceso al fichero: chmod 600 /boot/grub/grub.conf
Este cambio es suficiente para que al arrancar el ordenador, el menú de GRUB deje disponibles sólo dos opciones: iniciar
50
Linux+ 2/2005
uno de los sistemas o pulsar la tecla [p]. Si tras pulsar la tecla [p] damos la contraseña correcta (la que hemos señalado en el comando md5crypt), sólo entonces conseguiremos acceso a las capacidades discutidas en la sección Manejo. El usuario sigue pudiendo arrancar cualquier elemento del menú, y esto no siempre tiene que ser a nuestro gusto. Debido a que ya tenemos determinada la contraseña, basta establecer el comando lock en la sección title, que queremos bloquear. Éste debe colocarse justamente debajo de la línea title, puesto que el usuario está autorizado a ejecutar todos los comandos hasta que encuentre lock. En este momento, se le solicitará la contraseña y hasta que dé la correcta, no podrá seguir realizando sus comandos. Así pues, como vemos, situar el comando lock al final de la sección title por lo común falla su objetivo, de manera que es mejor fijarlo al inicio. Hay que hacer constar que tal protección no es perfecta. No podemos esperar que al imponerle una contraseña a GRUB nos proteja de los necios intentos de los que tengan acceso a nuestro ordenador. De todas formas, siempre puede aumentar la comodidad de su uso, así como resguardarnos de los usuarios menos expertos.
Qué facilita la configuración
Si no nos apetece cambiar el fichero de configuración de GRUB manualmente, podemos servirnos de uno de sus configuradores. El módulo Webmin disponible en la sección Hardware–>Iniciador del sistema GRUB parece ser la solución más oportuna. Además de éste, disponemos del script Grubconfig, que funciona en modo texto, así como el programa GrubConf, destinado a un entorno gráfico. El primero es poco intuitivo, pero cuenta con un par de opciones interesantes, y además no requiere ninguna instalación: basta descomprimir el archivo, y ya es capaz de arrancarse. Los que compilan el núcleo por su cuenta seguramente se van a interesar por el programa Install Kernel, que no sólo nos libra de la obligación de ejecutar una serie de comandos, sino también actualiza automáticamente la configuración de los programas de arranque (además de GRUB, también ofrece el soporte de LILO). Si queremos que la forma de fijar el fondo del menú de GRUB se haga más
sencilla, podemos aprovecharnos del programa GrubTk. Allí lo único que hay que hacer es suministrar el nombre del fichero con el dibujo y el programa se ocupará del resto. Mientras tanto, si queremos ver para qué más se puede emplear GRUB, instalemos el juego GRUB Invaders. Se arranca a través de GRUB y para poder funcionar no exige ningún sistema operativo.
Fin
Podría parecer que el programa de arranque es una herramienta simple que sólo permite indicar el sistema que debe iniciarse. Mientras tanto, resulta que es un programa que somos capaces de habilitar a nuestras necesidades con bastante facilidad. Apoyándonos en él arrancaremos no sólo los sistemas, sino también programas como Memtest86. GRUB puede constituir una barrera que impida a otros usuarios el acceso a nuestro sistema, sin reducir al mismo tiempo la comodidad de su uso. Además, puede darnos las bienvenida con nuestro dibujo preferido. Así pues, es necesario estudiar su documentación y conocer sus otras funciones.
En Internet: • •
•
• • •
•
•
• •
Página de inicio de GRUB: http://www.gnu.org/software/grub/ GNU GRUB splashimage howto: http://ruslug.rutgers.edu/~mcgrof/ grub-images/ Varios fondos para el menú de GRUB: http://vision.featia.net/linux/ grubsplash/ Página de inicio de Memtest86: http://www.memtest86.com/ Página de inicio de Memtest86+: http://www.memtest.org/ Página de inicio del script Grubconfig: http://www.tux.org/pub/people/kentrobotti/looplinux/index.html Página de inicio del programa GrubConf: http://grubconf.sourceforge.net/ Página de inicio del programa Install Kernel: http://installkernel.tripod.com/ik/ index.html Página de inicio del programa GrubTk: http://freshmeat.net/projects/grubtk/ Página de inicio del juego GRUB Invaders: http://www.erikyyy.de/invaders/
primeros pasos
Trucos y truquillos Grzegorz Niewęgłowski
¿Cuelgues inesperados de los terminales?
¿Has notado alguna vez que tu terminal de texto (p. ej. XTerm o el terminal regular Linux VGA) deja de reaccionar? Que se quedo como si estuviera totalmente congelado, que no responde a las teclas pulsadas, que no actualiza el texto visualizado y que apagarlo resulta la única solución. Si es así, puede ser que hayas pulsado [Ctrl]+[s] por despiste. Para desbloquear el terminal hay que pulsar [Ctrl]+[q]. Los errores de este tipo solían ocurrirme con bastante frecuencia, así que quité por completo la posibilidad de reaccionar en [Ctrl]+[s] a todos mis terminales. Esto se puede hacerse accionando el comando stty -ixon y, si además lo añades a los ficheros de configuración de tu capa, p. ej. a ~/.bashrc o a ~/.bash_profile, lo evitarás de forma duradera. ■
Convertir las codificaciones de ficheros de texto
Existen muchas herramientas especializadas para convertir el texto entre diferentes maneras de codificarlo. En vez de instalar un nuevo paquete que se dedica a esto, podemos utilizar el comando iconv. Forma parte estándar del paquete Glibc, así que debe hallarse en cada sistema Linux contemporáneo. Para convertir el texto en iso8859-15 al utf-8i de unicode, aplicamos el comando siguiente:
S
iconv -f iso8859-15 -t utf-8
<fichero_en_iso.txt >fichero_en_utf.txt
El cp1250 de Windows se convierte en iso8859-15 de modo análogo:
S
iconv -f cp1250 -t iso8859-15
<fichero_windows.txt >fichero _iso.txt
A través de iconv –list se puede ver la lista de codificaciones a las que se da soporte. Sólo nos queda la cuestión de las marcas de fin de línea. Los sistemas DOS/ Windows exigen que las líneas de texto
52
Linux+ 2/2005
estén separadas con una secuencia de dos bytes <CR><LF>, mientras que Linux se conforma con el modesto <LF>. Los ficheros de Linux sin conversión son muy fáciles de distinguir en Windows: generalmente, todas las líneas se acoplan en una larga serie única, lo que resulta muy eficaz para poner trabas en la lectura del texto. Muchos editores, a petición del usuario, saben convertir los textos entre estos estándares (p. ej. en VIM se puede hacerlo a través de :set fileformat= unix o :set fileformat= dos antes de que se grabe el fichero), no obstante, también existen (como en el caso de las codificaciones) programas dedicados a este fin. Si hace falta (por ejemplo en el procesamiento de inserción, cuando hay que convertir muchos ficheros, y resulta que no hay ninguna herramienta lista al alcance), es posible emplear SED: sed 's:$:\r:' -i fichero_unix.txt sed -e 's:\r::' -i fichero_unix.txt
El primer comando transforma las terminaciones de los caracteres en el fichero unix.txt en algo que se pueda leer en Windows; y el segundo, vuelve a transformar las terminaciones de líneas en un formato Unix (o sea, vuelve al punto de partida). ■
Convertir las codificaciones de nombres de ficheros
La conversión sólo de los nombres de los ficheros es una función que se precisa con menor frecuencia, pero debido a esto puede producir muchas más dificultades. El problema nace al mudar el sistema de iso8859-15 a utf-8, o si se utiliza globalmente iso8859-15 y, también, cuando una aplicación de última moda (p. ej. ROXFiler) se obstina en construir ficheros con nombres codificados en utf-8..., o tal vez en otras situaciones, p. ej. si los ficheros se copian de forma desorganizada entre los sistemas de ficheros que aplican estándares de codificación distintos. Es fácil cambiar el nombre de un solo fichero. Incluso podemos volver
a denominar manualmente diez ficheros. Pero, ¿si hay cientos, y además dispersados por todo el árbol de directorios? Para estos casos, intentaremos concebir algún autómata que funcione de modo recurrente y se base en los bucles: for..do..done. También podemos intentar reunir find, iconv y mv, pero una solución así se alejará del ideal de rendimiento y soporte de errores. El script convmv puede resolver el caso. De manera estándar no forma parte de las distribuciones Linux, pero se puede descargar fácilmente de http:// j3e.de/linux/convmv/. El comando convmv -r -i -f utf-8 -t iso8859-15 –notest ~/ directorio provocará un paseo recurrente
por ~/directorio, rebuscando los nombres de ficheros en utf-8 y convirtiéndolos en iso8859-15. La opción -i activa, además, el modo interactivo, donde el usuario ve con exactitud qué ficheros tratará de convertir convmv. El script está bien preparado para cada situación que surja, lo que se puede deducir de las opciones a las que da soporte. Gracias a él, la conversión de los nombres de todo un árbol de ficheros ya no supone ningún problema y, sin duda, es mucho más segura que el uso de bucles trazados rápidamente con iconv y mv. ■
Arranque cíclico del comando en modo de texto
Un comando útil (aunque muchas veces desconocido) es watch del paquete ProcPS. Permite arrancar cualquier comando en intervalos regulares (p. ej. cada segundo). Gracias a esto se puede, por ejemplo, observar el contenido de algún fichero que se está actualizando constantemente con /proc o la salida del comando ifconfig. Su uso más fácil es: watch ifconfig eth0
Pero sus capacidades no terminan ahí. También es posible, p. ej. prolongar el tiempo de actualización hasta un minuto: watch -n 60 ifconfig eth0
trucos y truquillos
borrar el “título” visualizado por watch: watch -n 60 -t ifconfig eth0
E incluso encender un modo muy cómodo de marcar los cambios (watch marcará los fragmentos del texto que se hayan modificado desde el último arranque): watch -n 60 -t -d ifconfig eth0
La mayoría de esto (tal vez salvo marcar cambios) se dejaría de realizar con facilidad a través de un bucle while y de los comandos clear y sleep, pero watch, probablemente, ya esté instalado en el sistema, así que ¿por qué no aprovecharlo? Observar el resultado de algún comando refrescado de manera cíclica nos será de utilidad en los momentos más inesperados. ■
¿Qué librerías utiliza este programa?
Puede parecer una cosa simple, pero a veces es imprescindible. ¿Cómo verificar qué librerías compartidas se requieren para un programa determinado? En ocaciones, basta iniciar el comando ldd y con él aparecerá la especificación de las librerías que se cargarán al inicio del programa. Desafortunadamente, éste no incluye las librerías o los plugins complementarios que el programa puede descargar después por su cuenta (es imposible prever esto), pero, en el 99% de los casos, el resultado ldd será idéntico a los resultados reales. Es útil saber cosas de este tipo al diagnosticar problemas con la carga de librerías dinámicas: ldd, junto a la lista de las librerías como tales, visualiza las rutas de acceso a ellas (queda bien visible, dónde las está buscando), y si alguna librería no se puede localizar, ldd también pasará esta información al usuario de un modo más claro que lo habría hecho el conector (ing. linker) al intentar arrancar el programa. Gracias a ldd, además, es posible distinguir los programas de construcción estática de los que se han construido dinámicamente. ■
¿Cómo leer la temperatura del procesador bajo Linux?
El problema es más complejo: ¿cómo leer, en general, los sensores de la placa madre? La mayoría de las placas tiene incrustados los sensores adecuados que permiten monitorear los parámetros de trabajo, lo que es infinitamente útil si tene-
mos la intención de hacer un overclock o sospechamos que el trabajo inestable de nuestro ordenador es culpa de la debilidad del ventilador o de un alimentador sobrecargado. Las nuevas placas madre con frecuencia hacen que estén disponibles estos datos como una parte de la implementación ACPI, y Linux (en las versiones 2.6.x) es capaz de leerlos y ofrecer acceso a ellos a través de los ficheros en /proc o /sys. Entonces, hay que mostrarlos al usuario de alguna manera. Para ello, GKrellM puede resultar un frontend bueno, ya que, aparte de los gráficos integrados que presentan la carga del procesador y de la red, sabe conectarse al flujo de informaciones desde los sensores de temperatura. Si una placa madre no da soporte para ACPI, o sólo lo ofrece de una forma mínima, el paquete lm_sensors puede ser una buena solución. Es un conjunto desarrollado de los módulos del núcleo que permite leer varias informaciones desde la placa madre, como la tensión, las revoluciones del ventilador, o la temperatura. Por desgracia, este paquete puede provocar problemas a la hora de instalarlo, y esto, con la abundancia de los chipsets que leen la temperatura, complica mucho su uso. Si lm_sensors forma parte de la distribución que estás usando, está muy bien. Los módulos ya están compilados, así que basta descargar un conjunto apropiado de ellos (será muy práctico utilizar el comando sensors-detect, que nos sugiere qué piezas electrónicas se han detectado en el ordenador), y luego leer los datos mediante el comando sensors (o a través del GkrellM, ya que también colabora con lm_sensors). El paquete lm_sensors paso a paso se va integrando en los fuentes del núcleo 2.6.x, pero por lo que se adivina de su progreso actual, su inclusión completa todavía va a tardar mucho. Si no disponemos de ningún acceso a los paquetes listos con lm_sensors, y no nos apetece entrar en el lío de compilarlo e instalarlo por nuestra cuenta, podemos emplear el programa xmbmon: es una herramienta sencilla, sin ninguna dependencia no estándar, y que no exige la instalación de los módulos del núcleo, ni la creación de ficheros de configuración. Además, sabe detectar automáticamente un grupo bastante amplio de las placas madre y de los chipsets, así como darles
primeros pasos
soporte. El paquete está integrado por dos comandos: mbmon y xmbmon. Tras arrancar el mbmon veremos algo así: Temp.= 35.0, 48.0,
0.0; Rot.= 0, 3214, 0
Vcore = 1.66, 0.10; Volt. = 3.55, 5.05, 12.59, -12.06, -5.14
Esta lectura de sensores condensada muestra la temperatura del procesador, el ritmo de revoluciones del ventilador y los valores de cada una de las tensiones en la placa madre. Utilizando la opción mbmon cambiamos el formato de los datos que se presentan, pero ésta es una cuestión de gusto, de modo que me voy a limitar a mostrar el formato que aparece por defecto. Al observar el crecimiento de la temperatura, la caída de velocidad de las revoluciones del ventilador o cómo bajan peligrosamente las tensiones, es posible diagnosticar muchas averías de la máquina e incluso prever las que puedan venir. Y el alimentador, así como el ventilador, es mejor cambiarlos antes de que alcancen una fase crítica y se los lleve el fuego. Desafortunadamente, xmbmon no colabora con GkrellM, pero para los aficionados a interfaces gráficas existe el comando xmbmon que presenta sus resultados en forma de ventana de gráficos simples. El tema en cuestión está vinculado también a la lectura de la temperatura del disco duro: de todas formas, los discos se calientan por sí mismos y sobrecalentarlos puede resultar nefasto. Por desgracia, aquí la cosa se pone peor que en el caso de la temperatura del procesador, sin embargo, no es a culpa de Linux, sino de los propios fabricantes de equipo. Relativamente pocos discos tienen ya integrados los sensores de temperatura, así que pocos usuarios podrán ver cómo está su disco. Por supuesto, es posible intentarlo: aquí la palabra clave es SMART, es decir, un sistema diagnóstico del disco. La temperatura está disponible como parte de los datos de SMART, de forma que es posible leerla a través de Smartmontools (arrancando primero smartd, y luego leyendo los datos del disco mediante smartcl -a /dev/hda o smartctl -a /dev/hda|grep -i temp, para no tener que abrirse paso entre datos de poca relevancia). ■
www.lpmagazine.org
53
equipo
Webcams bajo Linux Piotr Wolny
L
as webcams son cada vez más populares. Se pueden usar para los encuentros en Internet, la grabación de películas cortas o para sacar fotos. También pueden utilizarse para el seguimiento de los sitios. Linux soporta gran parte de las cámaras que están en venta actualmente. La mayoría de las webcams baratas tienen un conector USB. Este artículo trata de la instalación de este tipo de cámaras. Bajo Linux también podemos utilizar una cámara normal conectada a la entrada Composite de la tarjeta de televisión. Una cámara analógica se puede comprar por un precio no muy elevado en una tienda de electrónica. En este caso la instalación de la cámara es obviamente innecesaria, ya que basta con instalar la tarjeta de televisión.
Instalación de una cámara USB
En el DVD
Las herramientas de las que habla este artículo están disponibles en el DVD
54
Linux+ 2/2005
El acceso a la imagen vídeo en Linux se realiza a través de los archivos de dispositivos /dev/video*. Si hemos instalado p. ej una tarjeta de televisión, en el núcleo tendremos el módulo videodev y un módulo responsable de nuestra tarjeta de televisión, p. ej. bt848. La cámara conectada por USB funciona de manera parecida. También necesitamos el módulo videodev y un módulo responsable de nuestra cámara; en la mayoría de los casos será uno de estos: vicam, ibmcam, konicawc, ov511, se401, sn9c102 o stv680. Después de instalar el módulo adecuado podemos obtener la imagen de la cámara en el dispositivo /dev/video o /dev/video1, en caso de que la webcam no es nuestro
Figura 1. La gran competencia en el mercado de webcams causa no sólo el uso de chasis sofisticados sino también la frecuente introducción de nuevos modelos en el mercado
único dispositivo video. La respuesta a la pregunta “¿qué módulo será necesario para que la cámara funcione?” es la tarea más difícil durante la instalación. Podemos encontrar en el recuadro Cámaras que funcionan algunas instrucciones, pero muchas veces la única solución es buscar la información en las páginas de drivers particulares o en la página http:// www.linux-usb.org/. Cuando ya sabemos cuál módulo del núcleo es necesario, estamos ante tres posibilidades: • •
•
la cámara tiene el soporte en nuestra distribución de Linux; éste se encuentra en las versiones de núcleo más recientes que la que tenemos; solamente los drivers que se puedan encontrar en las páginas web soportan la cámara.
equipo
webcams
Listado 1. Ejemplo de archivo de configuración del programa webcam [grab] device = /dev/video0 text = "comentario %Y-%m-%d %H:%M:%S" infofile = nombre_de_archivo width = 320 height = 240 delay = 10 input = composite1 norm = pal trigger = 0 [ftp] host = www.ejemplo.org user = camara pass = contrasena dir
= directorio-webcam
file = webcam.jpeg tmp
= uploading.jpeg
passive = 1 debug = 1 local = 0
Soporte en las distribuciones de Linux
Si nuestra distribución contiene un módulo para la cámara es muy probable que éste se encuentre en el directorio /lib/ modules/[versión del núcleo/kernel/drivers/ usb/media. En este caso, es suficiente descargar el módulo p. ej. con el comando modprobe ov511, que nos informa de que se ha encontrado el dispositivo adecuado. Las líneas que aparecerán en /var/log/ messagess o /var/log/syslog, después de ejecutar el comando dmesg, pueden parecerse a éstas: Linux video capture interface: v1.00 ov51x.c: USB OV519 video device ov51x.c: Sensor is an OV7648 ov51x.c: Device at usb-0000:00:1 usbcore: registered new driver ov51x
En este ejemplo he cortado los principios de las líneas que contienen la fecha y el nombre del sistema. La información que nos importa es la de la detección del Sensor y del dispositivo (Device at...). Después de la descarga del módulo, nuestro dispositivo /dev/video o /dev/video1 debería mostrar la imagen de la cámara. Podemos comprobarlo rápidamente si tenemos instalado en el sistema el programa Xawtv. Después de ejecutar el comando xawtv -hwscan, recibiremos el listado de todos los dispositivos disponi-
Figura 2. Centro de información de KDE facilita comprobar los identificadores de dispositivos USB de manera cómoda
bles. Por ejemplo, en mi sistema el listado muestra, entre otros:
dejemos que nos engañe el contenido de los logs de sistema:
/dev/video1: OK
Linux video capture interface: v1.00
[ -device /dev/video0 ]
usbcore: registered new driver stv680
type : v4l
stv680.c: [usb_stv680_init:1512] STV(i):
name : OV519 USB Camera
usb camera driver version v0.25 reg
flags :
stv680.c: STV0680 USB Camera Driver v0.25
capture
Por supuesto, si tenemos la tarjeta de televisión instalada en nuestro equipo, también aparecerá en este listado; entonces podremos ver cuál de los dispositivos /dev/video* se ha asignado a este equipo. A decir verdad, con este comando podemos empezar nuestro trabajo porque es probable que el módulo de nuestra cámara se haya descargado al arrancar el sistema. Ahora, para ver la imagen de la cámara podemos usar cualquier programa que coopere con los dispositivos Video4Linux, p.ej. Xawtv, Tvtime, Kdetv. Si nuestra cámara no se ha instalado como /dev/video tendremos que poner el dispositivo adecuado. En el caso de Xawtv es suficiente la opción -c, p. ej. xawtv -c /dev/video1. En otros programas podemos encontrar opciones similares o indicar otro dispositivo a través de la interfaz gráfica. Si después de descargar el módulo el comando xawtv -hwscan no presenta ningún dispositivo nuevo, y al intentar acceder al dispositivo video, p.ej. con el comando cat /dev/video0, nos da la información de que no existe este dispositivo, esto quiere decir que el módulo descargado no sirve para nuestra cámara. No
En este caso se ha descargado el módulo stv680, mientras el módulo videode se ha descargado automáticamente. A pesar de que no tenemos ninguna información sobre el error o el equipo no encontrado, este módulo no va a funcionar con nuestra cámara porque tampoco tenemos la información de que el dispositivo se ha encontrado.
Nuevo núcleo del sistema
Puede ocurrir que no encontramos un módulo adecuado en la distribución o su versión es demasiado antigua y el driver
Figura 3. Una pequeña cámara analógica conectada a la tarjeta de televisión es una alternativa buena a las cámaras USB
www.lpmagazine.org
55
equipo
que funciona se encuentra en la versión del núcleo más reciente. Entonces la mejor solución es compilar el núcleo por uno mismo. En su configuración tenemos que marcar: •
•
•
en la sección Character devices la posición I2C support y I2C bit-banging interfaces, en la sección Multimedia devices la posición Video For Linux. Si tenemos una tarjeta de televisión también intentamos marcar: BT848 Video For Linux, Philips SAA7134 support o Conexant 2388x (bt878 successor) support y un módulo adecuado para el tuner de televisión de nuestra tarjeta. No vamos a encontrar los drivers para las cámaras USB en esta sección porque se han insertado en USB support. Excepto la posición OmniVision Camera Chip support, que será necesaria para los poseedores de las cámaras basadas en circuitos ov511 o w9968cf, que es un módulo adicional para estas cámaras (además del principal que se encuentra en la sección ya mencionada USB support). en la sección USB support, bastante extensa, tenemos que encontrar la parte titulada USB Multimedia devices. Allí estarán los drivers de cámaras particulares. Marcamos según el equipo que tenemos, aunque podemos marcar todos para comprobar cuál funcionará. Además necesitamos el modulo del driver USB (UHCI, OHCI o EHCI) y USB device filesystem. Listado 2. La configuracion simple del programa motion daemon off videodevice /dev/video0 input 1 norm 0 frequency 0 width 352 height 288 framerate 4 target_dir /var/www/kamera1 snapshot_filename %v-%Y%m%d%H%M%Ssnapshot snapshot_interval 0 #czułość threshold 2000 noise_level 32
56
Linux+ 2/2005
S
Figura 4. El núcleo de Linux incluye drivers para varios tipos de webcams
Después de la construcción del núcleo nuevo y su instalación en el sistema realizamos todas las actividades descritas antes en el párrafo Soporte en las distribuciones de Linux.
Compilación del módulo
A veces ocurre que una determinada cámara no tiene soporte ni siquiera en la versión más reciente del núcleo, aunque ya exista driver para ella. Algunos drivers están esperando que los introduzcan en el núcleo, otros por varias razones (sobre todo, problemas con la licencia) simplemente no pueden encontrarse allí. En el caso de mi cámara – Trust Spacecam 320 – me he enterado rápidamente de que se basa en el circuito OV519, entonces no la soporta ningún driver del núcleo de Linux. En la página http://alpha.dyndns.org/ ov511/ he encontrado un driver que posibilita la lectura de imagen de la cámara. No es un driver “verdadero”, la cámara no va a funcionar con las aplicaciones compatibles con Video4Linux, pero de todas formas he decidido intentar. Para compilar un módulo particular de núcleo hay que instalar en el sistema los fuentes del núcleo actualmente usado, es decir, el paquete kernel-source. En los discos con la distribución de Linux normalmente tenemos unos cuantos paquetes kernelsource. Para elegir el adecuado ejecutamos el comando cat /proc/version. Los fuentes con el driver para mi cámara con el circuito OV519 los he bajado como el archivo ov51x-1.65-1.11mark.tar.bz2. Después de descomprimir el archivo he encontrado el archivo README que contiene sencillas instrucciones cómo construir un módulo de núcleo: basta
darlos comandos: make clean; make y make install. El último comando debería ejecutarse desde la cuenta root. Luego podemos ejecutar el comando depmod -a – no debería presentar ningún error. Si podemos ver unos comunicados sobre unresolved symbols, es probable que nuestros fuentes de núcleo no se hayan instalado correctamente. Después de ejecutar los comandos ya mencionados, en mi sistema se encontró el módulo ov51x, aunque instalado en un lugar no típico, porque en el directorio /lib/ modules/[versión_del_nucleo]/extra. Ahora basta el comando modprobe ov51x para que el dispositivo nuevo /dev/video aparezca en el sistema. De manera similar podemos compilar e instalar las versiones recientes de los drivers de otras cámaras que hayamos bajado de Internet. La condición básica es la instalación correcta de los fuentes del núcleo en el sistema. Este procedimiento será muy útil para los que tengan cámaras basadas en subgrupos de Philips, ya que el driver de estas cámaras ha sido últimamente retirado del núcleo de Linux. En realidad, algunas distribuciones de Linux
Figura 5. Las listas de las cámaras que funcionan bajo Linux tienen centenares de posiciones
equipo
webcams
Cámaras que funcionan Los fabricantes de este tipo de dispositivos cambian a menudo los circuitos usados en las cámaras sin hacer lo propio con el nombre del producto. Además, las costumbres del mercado exigen introducir un nuevo modelo cada pocos meses, muchas veces sin cambiar los parámetros técnicos. Resultado de esta situación es que no vamos a encontrar la información sobre el funcionamiento bajo Linux de gran número de webcams USB que están actualmente en venta. Me gustaría aconsejaros una cosa en cuanto a las compras: es conveniente buscar información en Internet y visitar las páginas de los drivers para Linux enumeradas en el recuadro En Internet. Allí encontraremos información sobre centenares de cámaras que funcionan en nuestro sistema. Después, compararemos estos datos con la oferta y de este modo es muy probable que el producto comprado funcione. Actualmente las marcas más populares de webcams parecen ser Logitech, Creative Labs y Trust. Aquí presento una lista aún incompleta, de las cámaras de estos fabricantes que deberían funcionar bajo Linux: •
•
Logitech: Quickcam Express (versión anterior), Quickcam Web – podemos encontrar el driver para Linux en http:// qce-ga.sourceforge.net/;Quickcam 3000Pro,QuickCam4000Pro,QuickCam Notebook Pro y QuickCam Notebook utilizan los circuitos de Philips; driver en http://www.saillard.org/ y en algunas distribuciones; QuickCam Express – podemos encontrar el driver para Linux en http://home.tiscali.dk/tomasgc/labtec/; Quickcam Messenger, Home y Traveller – en el momento de escribir este articulo no había drivers para ellas. Creative Labs – dispositivos PC Cam 600, PC Cam 300 los drivers para Linux en http://mxhaard.free.fr/; Creative WebCam III, WebCam Pro (modelo PD1030) basadas en el circuito ov511
siguen conteniéndolo, pero, en general, es una versión limitada del driver que no permite trabajar en la máxima resolución, ya que incluye solamente el código GPL. Por suerte, podemos encontrar las nuevas versiones del driver de estas cámaras en la página: http://www.saillard.org/. Tenemos que bajar el archivo pwc-10.0.5.tar.bz2, descomprimirlo, pasarlo al directorio recién creado y ejecutar los comandos make y make install. A partir de ese momento, en el sistema aparecerá el nuevo módulo pwc.
•
el driver en las nuevas distribuciones; WebCam Go Mini basada en stv0680 – el driver está en las nuevas versiones del núcleo y en las distribuciones nuevas; Webcamn NX, Webcam NX Pro – podemos encontrar sólo el driver experimental en http://zc0302.sourceforge.net/. Trust: en la venta se pueden encontrar los modelos basados en OV511(+) – SpaceC@m 150, SpaceC@m USB, SpaceC@m 200, SpaceC@m 300 – estos dispositivos funcionan bien; el driver se encuentra en las distribuciones nuevas y en la página http:// alpha.dyndns.org/ov511/; SpaceC@m320 – esta cámara aparece en dos versiones: con el circuito OV511+ funciona bien, pero de la versión con OV519 se puede recibir la imagen sólo si usamos algunos programas especiales – podemos encontrar el driver en la página http:// alpha.dyndns.org/ov511/ no garantiza la compatibilidad con Video4Linux; Spycam 300, Spycam 300 Voice están basadas en el circuito stv0680 y funcionan. Desgraciadamente, no puedo decir si el modelo 300NX también funciona; Trust SpaceC@m Lite funciona con el driver de http://webcam.sourceforge. net/ (CpiA); Trust SpaceCam 120, SpaceCam 100 PORTABLE – funcionan con el driver de http://nw802.sourceforge.net/.
Si ya hemos comprado la cámara USB y la hemos conectado al ordenador, pero no tenemos ni idea con qué driver puede funcionar deberíamos fijarnos en los identificadores de USB: de proveedor (vendor) y de producto (product). Pueden aparecer en los logs de sistema después de conectar la cámara. Los hará visibles el comando cat /proc/ bus/usb/devices o el programa Centro de información de KDE. Si ya conocemos los dos identificadores podemos introducirlos en el buscador de la página www.linux-usb.org para obtener la información si existe un driver para un dispositivo determinado.
Después de todos estos pasos, independientemente de qué módulo hayamos compilado, podremos volver a las actividades descritas en el párrafo Soporte en las distribuciones de Linux.
Terminamos la configuración
Los módulos que soportan las webcams tienen, en general, muchas opciones que se pueden ajustar en el archivo /etc/modprobe.conf. Algunos, incluso, hasta
Figura 6. El programa GnomeMeeting facilita un test muy cómodo de los dispositivos de sonido durante su configuración
varias docenas. Pero esto no quiere decir que haya que ajustarlas todas para que la cámara funcione. En mi ordenador, después de ejecutar el comando modinfo ov51x, han aparecido, entre otras, las siguientes informaciones: parm:
autobright:
Sensor automatically changes brightness parm:
autogain:
Sensor automatically changes gain parm:
autoexp:
Sensor automatically changes exposure [...]
Entonces, para ajustar el brillo automático, los umbrales y la exposición, he añadido la siguiente línea al archivo /etc/ modprobe.conf: options ov51x autobright=1 autogain=1
S
autoexp=1
En la mayoría de los drivers las opciones del módulo permiten ajustar este tipo de parámetros. Existen cámaras que exigen la configuración de ciertas opciones para funcionar con algunos programas. Por ejemplo, para usar el programa GnomeMeeting con la cámara basada en los circuitos de Phillips, es necesario ajustar el tamaño y la frecuencia de escaneado a partir de la inserción de la siguiente línea en el archivo /etc/modprobe.conf: options pwc size=SIF fps=10
Podemos obtener la lista de todas las opciones posibles del módulo, no sólo a través del programa modinfo, sino que es mejor leer la documentación correspondiente, p.ej. en los fuentes de núcleo, en el directorio Documentation/usb encontraremos los archivos, donde la descripción para los chipsets particulares de las
www.lpmagazine.org
57
equipo
cámaras: w9968cf.txt, stv680.txt, se401.txt, ov511.txt e ibmcam.txt. Si hemos bajado nuestro driver desde Internet debería estar acompañado por el archivo README, o algún otrpoparecido con la descripción de todas las opciones posibles. En fin, no nos olvidemos de los derechos de acceso a los dispositivos /dev/video*. Para que todos los usuarios tengan acceso a la imagen de la cámara es suficiente dar el comando: chmod 666 /dev/video0.
GnomeMeeting
Webcam, como indica su nombre, sirve sobre todo para las vídeo conferencias. Así podemos no solamente hablar, sino también ver a nuestro interlocutor y ser visto por él. Existen por lo menos unos cuantos estándares que facilitan este tipo de
Equipo adicional
Algunas cámaras, como p. ej. Trust Spacecam 320, están equipadas con micrófonos. En mi caso el micrófono de la cámara funcionó enseguida después de conectarla: se cargó automáticamente el módulo del núcleo snd_usb_audio, que es un driver ALSA para los dispositivos USB. El comando arecord -l mostró un dispositivo nuevo [USB Camera]. De él se puede capturar el sonido con una calidad sorprendentemente buena. Funciona bien en p. ej. GnomeMeeting. Pero el dispositivo en la cámara no permite ajustar el volumen, por lo menos no con los drivers ALSA. El programa alsamixer informa de que no encuentra el mezclador. A veces las cámaras tienen un botón adicional (snapshot button). Si queremos utilizarlo deberíamos leer la documentación del driver que usamos. Probablemente será necesario dar algún parámetro al descargar el módulo de la cámara. Los dispositivos bifuncionales, o sea, la combinación de una simple cámara digital y una webcam también pueden tener soporte en Linux, al menos si se basan en el circuito STV0680B (p. ej. Trust Spycam 300, Aiptek Pencam, Nisis Quickpix 2). En la página http://stv0680usb.sourceforge.net/ encontraremos, no sólo un driver que permita que la cámara funcione como un dispositivo Video4Linux, sino también el programa Pencam, que sirve para bajar las fotos hechas por este dispositivo mientras ha estado conectado al ordenador.
58
Linux+ 2/2005
comunicación en Internet. Uno de los más populares, y probablemente el mejor soportado en Linux, es H.323. Lo usa el programa Microsoft NetMeeting. Para nuestro sistema operativo se ha creado un equivalente que se llama GnomeMeeting, diseñado para GNOME, pero también funciona en KDE o en cualquier otro entorno. El programa tiene posibilidades aún mejores que su prototipo de Microsoft, p. ej. es posible chatear. Para que el programa funcione correctamente vamos a necesitar una tarjeta de sonido que trabaje en el modo full-duplex, y mucho mejor, con los drivers ALSA. Tenemos que enviar sonido por el micrófono y oír a nuestro interlocutor simultáneamente. Antes de arrancar el programa, comprobaremos el funcionamiento del micrófono y el arreglo del mezclador. A decir verdad, en el GnomeMeeting también se puede ajustar el volumen, pero no siempre funciona bien. Además del sonido, vamos a necesitar una webcam o cualquier dispositivo que emita la imagen a través de uno de los dispositivos /dev/video*, o una cámara conectada por el plugin Firewire. Primero deberíamos comprobar la cámara ejecutando p.ej. Xawtv o Kino. Probablemente encontraremos el programa GnomeMeeting en nuestra distribución. Allí deberían estar también los plugins para el soporte de sonido OSS o ALSA y la imagen V4L (Video4Linux), o para el plugin Firewire (DC o AVC). Podemos encontrar la versión más reciente del programa en la página http://www.gnomemeeting.org/, donde se encuentran no sólo los fuentes, sino también los paquetes binarios listos para las distribuciones más populares. A veces será imprescindible proveerse de la versión arriba 1.0: ha existido un problema en las versiones anteriores con las tarjetas de televisión y las webcams, que no soportaban la paleta de color YUV420p. Si queremos instalar el programa desde los fuentes, primero tenemos que compilar e instalar las librerías incluidas openh323 y pwlib. Además en el sistema deberían estar instalados los paquetes -dev de las librerías de GNOME, OpenLDAP y SDL. Las librerías y el programa son comandos estándares: ./configure; make; make install.
Figura 7. Programa GnomeMeeting en acción
La configuración del programa propio es simplificada hasta el mínimo y tiene lugar en el entorno gráfico. Cuando arranca la primera vez, aparecerá el Druid de configuración, que nos preguntará por: • •
• •
•
nuestro nombre y apellido, mostrado en la red; dirección email, necesario para registrarse en el directorio de los usuarios en GnomeMeeting; velocidad de conexión; sistema de sonido (mejor ALSA) y dispositivos de Entrada/Salida; pueden estar conectados a una tarjeta de sonido o provenir de otros dispositivos. Después de elegir tenemos la oportunidad de probar la configuración de sonido; sistema de imagen, normalmente V4L, a menos que utilicemos Firewire, y el dispositivo, si tenemos más de un /dev/ video* activo.
Después de terminar la configuración en la ventana del programa deberíamos ver la imagen de nuestra cámara. Ahora podemos abrir nuestro libro de contactos, bajar desde el servidor ils.seconix.com la lista de
Figura 8. Programa Motion puede no sólo ”vigilar” la imagen sino también compartirla en la red
webcams
equipo
todos los usuarios y elegir uno que acepte recibir las conexiones de prueba. Para llamarle basta con hacer doble clic. En caso de conocer la dirección del usuario podemos escribirla directamente en la ventana principal de GnomeMeeting. El programa acepta las URLs en los formatos: h323: [user@][host:[port]] y callto:[user@][host: [port]]. La segunda forma se utiliza solamente para el servidor ils.seconix.com. A través de GnomeMeeting podemos chatear con los usuarios de NetMeeting, pero aunque el sonido funcione bien en las dos direcciones, sólo nosotros vamos a ver a nuestro interlocutor. Este programa comercial contiene un procedimiento para comprobar si un cliente remoto también está usando el software del mismo fabricante. Si no, la imagen no aparecerá. Si decidimos que la comunica-
Cámaras con OV519
Los dispositivos equipados del circuito OV519, como p. ej. Trust SpaceC@m 320 o Sony EyeToy, constituyen un pequeño grupo de modelos que hasta ahora no son compatibles con Video4Linux. He encontrado sólo dos programas que sirvan para obtener la imagen de estas cámaras. El primero, Getjpeg podemos encontrarlo en el archivo con los drivers (archivo ov51x-1.65-1.11-mark.tar.bz2), dentro del subdirectorio test. Para compilarlo es suficiente pasar a este subdirectorio y ejecutar el comando make. La única tarea que podemos realizar con este programa es guardar la imagen actual de la cámara en el archivo jpeg. Si arrancamos ./getjpeg -d /dev/video1, la imagen de la cámara estará en el archivo image-00.jpg, suponiendo que nuestra cámara esté vinculada con /dev/video1. Podemos arrancar este programa de otra manera más interesante p. ej. ./getjpeg -d /dev/video1 -o `date +%s`.jpg -n 100, que realizará 100 imágenes de la cámara que luego podemos convertir p. ej en una película avi utilizando Mencoder. El siguiente programa que coopera con estas cámaras es Showvideo, que podemos encontrar en la página http:// www.wlug.org.nz/OV519WebCam. Para compilarlo también usamos el comando make. El programa presenta la imagen de la cámara en directo en una ventana del entorno X Window, siendo éste su único papel. Bueno, por lo menos así sabremos si el dispositivo funciona. Y ¿la calidad de la imagen? Desgraciadamente poca, por lo menos en el caso de mi Trust SpaceC@m 320.
Figura 9. El programa Vlc también coopera con webcams
ción sonora o la transmisión unidireccional de imagen es suficiente, pediremos a los amigos usuarios de NetMeeting que se registren en el servidor ils.seconix.com para encontrarnos con ellos fácilmente. Las nuevas versiones de GnomeMeeting permiten también registrarse en otros servidores normalmente utilizados por usuarios de NetMeeting.
Imagen de cámara en página web
Algunos asocian las webcams con el adorno de las páginas web en forma de imagen en directo de un lugar interesante p.ej. centro de ciudad, la playa, etc. Este tipo del uso de la webcam hace la página más atractiva y aumenta el numero de visitas. En Linux podemos encontrar programas que harán por sí mismos gran parte de la configuración de la cámara. El más antiguo de ellos, pero todavía uno de los más populares es Webcam: está incluido en el archivo junto con los fuentes de Xawtv, y se puede bajar directamente del autor de la página http://linux.bytesex.org/ xawtv/. El programa es capaz de leer los datos de dispositivo /dev/video*, grabarlos como un archivo jpeg, cubrir la imagen con cualquier subtítulo (más frecuentemente la fecha y la hora) y enviar el archivo listo al servidor remoto utilizando el proto-
colo ftp. La última posibilidad es muy útil si hemos decidido conectar la cámara a un ordenador que se encuentra fuera de la sala de los servidores. El programa va a repetir todas las operaciones cada cierto número de segundos sin ninguna acción por parte del usuario. El uso del programa es muy sencillo, es suficiente ejecutar el comando webcam archivo_de_configuración. El contenido del archivo de configuración modelo está presentado en el Listado 1. El archivo de configuración se divide en dos secciones. La primera sección ([grab]) contiene los parámetros de imagen de la cámara; deberían comprenderse incluso sin leer el man webcam. Con la opción text definimos nuestra descripción de la imagen de la cámara, delay es el intervalo de tiempo expresado en segundos desde que la imagen es capturada y enviada al servidor hasta una nueva captura y envío. La opción trigger también puede ser útil. Si ajustamos su valor a mayor de cero la imagen se enviará siempre cuando haya un cambio (algo se ha movido). Para la detección de movimiento profesional ante la webcam es mejor utilizar un programa mucho más avanzado, Motion, que describiré más adelante. La sección siguiente ([ftp]) contiene la dirección del servidor, el nombre del
www.lpmagazine.org
59
equipo
Figura 10. Versiones nuevas de Vlc hacen la transmisión de imagen en la red muy fácil
usuario, la contraseña, el directorio y el nombre del archivo en el que guardaremos la imagen de nuestra cámara. Si ponemos local=1, las imágenes no van a enviarse a ningún servidor remoto sino que se guardarán en las localizaciones definidas por los parámetros file, dir y tmp. Entonces después de configurar el programa Webcam, al administrador le queda solamente crear una página web, normalmente con el encabezamiento META HTTP-EQUIV="Refresh", para asegurar la rescarga automática de la página en el navegador.
Imagen por la red
Podemos mandar la imagen de nuestra cámara por la red no sólo en forma de archivos jpeg, actualizados cada pocos segundos. Gracias a programa VideoLAN (http://www.videolan.org/ ) es posible comprimir la imagen y enviarla en forma de flujo de datos mpeg o asf. VideoLAN funciona en varios sistemas operativos, por lo que es posible transmitirla desde Linux y recibirla en MS Windows. Algunas distribuciones incluyen este programa porque se distribuye bajo licencia GPL. Es bueno instalar todos los paquetes cuyos nombres contengan VLC. Si no tenemos paquetes preparados en la distribución podemos utilizar los de la página www.videolan.org. Por ejemplo, para Aurox 10.0 se pueden bajar los archivos dedicados a Fedora Core (vlcbinary.tar.gz y fedora1-updates.tar.gz). Después de descomprimirlos en el directorio creado vlc, vamos a encontrar un juego de paquetes rpm. El comando rpm -U vlc/* --force --nodeps -h los instalará todos (allí estarán también las versiones nuevas de varias librerías).
60
Linux+ 2/2005
VideoLAN tiene posibilidades avanzadas, pero voy a mencionar solamente un método sencillo de transmitir la imagen de la webcam entre dos ordenadores en la red. De igual manera podemos transmitir la imagen de un DVD, un archivo avi o incluso de una tarjeta DVB. Estoy utilizando una versión bastante nueva de vlc (0.8.1) y el entorno wxvlc, que están disponibles en la distribución Debian Sid. Empezamos con arrancar el programa Wxvlc, deberíamos entonces ver una de las mejores interfaces gráficas para Vlc. Luego, en el menú File, elegimos Wizard... –> Stream to network. Ahora hacemos un clic sobre Choose para determinar qué queremos emitir. La webcam que nos interesa se encuentra en la pestaña Video4Linux, donde ponemos el dispositivo si éste no fuera /dev/video. En el paso siguiente debemos definir la forma de transmitir datos. El método más sencillo es elegir HTTP. En este caso no deberíamos introducir ninguna dirección en la ventana situada debajo. O podemos elegir UDP Unicast, pero entonces tenemos que introducir la dirección del ordenador que va a recibir la imagen. UDP funciona más rápido, no carga tanto la red, aunque también podemos esperar algunos problemas con este protocolo. La gran ventaja de VideoLAN es su soporte para UDP Multicast, es decir, la transmisión de flujo a varios ordenadores simultáneamente, pero esto exige que nuestra infraestructura de red entera permita este tipo de dirección: es posible en una red local, pero no en Internet. Además para que funcione Multicast necesitamos una configuración adecuada del núcleo de sistema. Ahora volvamos a nuestra cámara. La siguiente pregunta está relacionada
con el modo de compresión de los datos transmitidos. Podemos elegir entre MPEG PS, MPEG TS o ASF. MPEG TS debería funcionar con todas las webcams. Si da problemas vale la pena intentarlo con ASF. La última pregunta se refiere al valor TTL (Time To Live) de los paquetes transmitidos por la red. En otras palabras, decidimos por cuántos enrutadores podrán pasar los paquetes. En una red local el número 1 ó 2 en general es suficiente. ¡Es todo! Ahora nuestra imagen debería emitirse, lo que vemos en las posiciones en el menú Audio y Video. Si no se han activado, miraremos la consola desde la cual hemos arrancado Vlc. Allí debería aparecer un mensaje de error, p.ej. falta de acceso al dispositivo o imposibilidad de abrir el puerto. Si nuestro entorno no nos permite elegir V4L como la fuente de imagen podemos utilizar la línea de comandos. P. ej. vlc v4l:/dev/video:channel=1 arrancará el programa con la imagen de la entrada composite1. El ejemplo más complicado puede presentarse así:
S S
v4l:/dev/video:norm=pal:frequency= 543250:size=640x480:channel= 0:adev=/dev/dsp:audio=0
Si todo funciona bien pasamos al otro ordenador donde arrancamos el mismo programa Vlc. Esta vez del menú File elegimos Open Network Stream, marcamos HTTP/FTP/MMS y en la ventana al lado introducimos la dirección del ordenador desde la cual transmitimos y el puerto 8080 por defecto p. ej. 192.168.0.55:8080. Deberíamos ver la imagen y oír el sonido desde la primera tarjeta de sonido del ordenador que tiene la cámara conectada a menos que hayamos apagado el sonido durante la configuración anterior.
Motion
Uno de los programas más interesantes que cooperan con webcam y que quería presentar a los Lectores es Motion (http:// motion.sf.net/ ). Como he mencionado antes el programa está observando la webcam u otro dispositivo compatible con V4L y graba la imagen de este en los archivos jpeg, mpeg o avi, pero sólo cuando cambia la imagen en la cámara. Es una herramienta perfecta para el seguimiento en interiores y en campo abierto. Por ejemplo, si dejamos la
equipo
webcams
cámara para vigilar el jardín durante el fin de semana, gracias a este programa al volver, tendremos solamente un par de fotos o películas, grabadas cuando algo ha pasado delante de la cámara, en vez de docenas de material grabado. Con el uso de Motion podemos también crear las películas muy impresionantes, p. ej. observación del comportamiento de una planta durante el día: podemos ver cómo reacciona a la luz, cómo se abre la corona de la flor, etc. El programa incluye un pequeño servidor http que permite compartir la imagen de la cámara por Internet o por una red local. Es poco probable que encontremos el programa Motion en nuestra distribución de Linux. Pero si está allí normalmente es una versión con limitaciones que no permiten crear las películas codificadas a través de ffmpeg. La mejor solución es bajar los fuentes desde la página http:// sourceforge.net/projects/motion/. Primero, en nuestro sistema deberían instalarse los paquetes glibc-devel, libjpeg-devel, zlibdevel, curl-devel, openssl-devel y krb5-libs. Si queremos utilizar Motion para grabar las películas deberíamos también bajar desde la página ffmpeg.sourceforge.net el archivo ffmpeg-0.4.8.tar.gz y compilarlo e instalarlo ejecutando los comandos siguientes: # tar zxfvp ffmpeg-0.4.8.tar.gz # mv ffmpeg-0.4.8 /usr/local/ffmpeg # cd /usr/local/ffmpeg/ # ./configure # make # make install
Al terminar la instalación de ffmpeg abrimos el archivo /etc/ld.so.conf con cualquier programa de procesado de textos y añadimos la línea siguiente: /usr/local/lib
Luego ejecutamos el comando ldconfig. Ahora podemos descomprimir el archivo que contiene el programa (yo utilizo la versión motion-3.1.17.tar.gz) para compilarlo e instalarlo con los comandos: ./configure, make, make install. Podemos empezar la aventura con el programa con el archivo de configuración presentado en el Listado 2. Deberíamos copiarlo a /usr/local/etc/motion.conf. En este ejemplo el programa va a leer
del dispositivo /dev/video0 y grabar las imágenes con una frecuencia máxima de cuatro fotogramas por segundo en el directorio /var/www/camara1 (tenemos que crearlo antes). La opción threshold define cuántos píxeles de la imagen tiene que cambiar para considerarlo un movimiento delante de la cámara. Con la opción noise_level podemos ignorar cierto nivel de ruido que hay que ajustar de acuerdo a las características de la cámara y a las condiciones de iluminación. Para poder ver la imagen en directo por el navegador hay que añadir las siguientes líneas al archivo de configuración: # Live Webcam Server webcam_port 8080 webcam_quality 50 webcam_motion on webcam_maxrate 1 webcam_localhost off webcam_limit 0
Luego introducimos en el navegador la dirección del ordenador con la cámara conectada y el puerto 8080 (p. ej. 192.168.200.2:8080). Obtenemos la imagen que recarga automáticamente si cambia la imagen en la cámara. Podemos añadir la línea: output_normal off al archivo de configuración, entonces las imágenes jpeg no se grabarán en el disco, sino que solamente se transmitirán por la red. Podemos aplicar la opción snapshot_interval 10, el programa Motion, entonces, se comportará como un servidor de una webcam normal, cada 10 segundos enviará la imagen nueva independientemente de la detección de movimiento. De todas formas, los archivos en formato jpeg ocupan mucho espacio en el disco comparados con los mpeg o avi, y además son menos cómodos para buscar lo que queremos ver. Por eso hay que aprovechar la oportunidad de grabar las películas. Las líneas que deberíamos insertar en el archivo de configuración pueden presentarse así: output_normal off
ffmpeg_variable_bitrate 0 ffmpeg_video_codec mpeg4
En la última línea definimos el modo de codificar de la película. En vez de divix podemos utilizar mpeg1 o msmpeg4 para poder ver los archivos en MS Windows sin necesidad de instalar los codecs adicionales. El programa Motion puede trabajar simultáneamente en el modo de servidor de webcam y guardar los archivos avi o mpg. Además entre sus posibilidades avanzadas encontramos incluso la cooperación con las bases de datos (MySQL y PostgreSQL), el control remoto y los mecanismos avanzados de detección de movimiento.
Fin
Linux todavía no goza de estima de los fabricantes de webcams; gran parte de este tipo de dispositivos funciona solamente en MS Windows. En muchas ocaciones, los programas ideados para el sistema dominante, con funciones parecidas a sus equivalentes gratuitos para Linux, cuestan mucho dinero.
En Internet: •
•
•
•
•
•
•
•
ffmpeg_cap_new on ffmpeg_cap_motion on ffmpeg_timelapse 0 ffmpeg_timelapse_mode hourly ffmpeg_bps 500000
•
Página principal del programa GnomeMeeting: http://www.gnomemeeting.org/ Página principal del programa Motion: http://motion.sourceforge.net/ El programa Webcam es una parte del paquete Xawtv: http://linux.bytesex.org/xawtv/ Drivers para cámaras con circuitos de Philips: http://www.saillard.org/ Drivers para cámaras con circuito CpiA: http://webcam.sourceforge.net/ Drivers para cámaras con circuitos SE401, SE402 y EP800: http://members.chello.nl/~j.vreeken/ se401/ Drivers para cámaras con circuitos OV511(+), OV518, OV519: http://alpha.dyndns.org/ov511/ The Webcam HOWTO: http://www.tldp.org/HOWTO/ Webcam-HOWTO/ Driver experimental para algunas cámaras de Creative i Logitech: http://mxhaard.free.fr/spca5xx.html
www.lpmagazine.org
61
equipo
Software RAID y LVM Piotr Wolny
E
l número de ordenadores equipados con más de un disco duro va incrementándose. De manera tradicional, establecemos un par de particiones en ellos, puesto que Linux nos permite montar las distintas partes del sistema de ficheros (p. ej. /usr, o /home) desde los dispositivos independientes. Pero las capacidades de empleo de los discos duros en Linux no terminan aquí. Desde hace mucho tiempo, nuestro sistema da soporte a los dos mecanismos de almacenamiento de datos más avanzados: el Software RAID y el Logical Volume Manager. Utilizándolos, podemos expandir el rendimiento de la memoria masiva, así como mejorar la seguridad de los datos almacenados. Aunque, tanto el Software RAID, como el Logical Volume Manager (LVM), suelen asociarse con los grandes servidores, equipados con decenas de discos, podemos lograr aprovecharlos también en los ordenadores de casa que estén equipados con dos o tres discos duros. Además, LVM también es útil en el caso de un solo disco.
discos en matrices a través de la programación; discos que pueden ser tanto los dispositivos SCSI, IDE, como los SATA. Aún es posible leer más sobre los tipos de RAID populares en el recuadro Niveles de RAID. En general, RAID permite: •
•
•
aumentar la seguridad de los datos, si utilizamos los discos repetidos (sin éstos nuestro RAID está más expuesto a sufrir una avería que los discos individuales); incrementar la velocidad de lectura y grabación de datos, si empleamos el fraccionamiento (ing. striping) de datos en dos o más dispositivos físicos independientes; combinar un par de dispositivos independientes en un sistema de ficheros único, lo que en algunas configuraciones aumenta la comodidad en la administración del sistema.
Y por otro lado, recordemos que RAID tiene algunas limitaciones:
RAID y LVM
DVD
Las soluciones aquí discutidas pueden probarse al iniciar Linux+ Live DVD.
En el DVD
El DVD contiene la programación de la que hablamos en el artículo.
62
Linux+ 2/2005
Desde el punto de vista histórico, la solución más vieja es el Software RAID. La idea de Redundant Arrays of Inexpensive Disks no es tan antigua, ya que proviene del año 1987. Fue entonces cuando se elaboró el concepto de reunir muchos discos baratos en un solo dispositivo grande y rápido. Para que una avería en uno de ellos no produjera la pérdida de datos en toda la matriz, el concepto incluía discos repetidos (ing. redundant); imprescindibles para recuperar los datos en el caso de su deterioro. Tradicionalmente, RAID se elabora a partir del hardware, agrupando con mayor frecuencia, los discos SCSI que se ven como un solo dispositivo una vez conectados al ordenador. Linux nos permite construir un RAID reuniendo los
Figura 1. En Linux podemos reunir los discos de varios tipos en un dispositivo RAID o LVM
software raid y logical volume manager
El inconveniente del LVM en Linux reside en que carece de la capacidad de utilizar los discos redundantes, pero para asegurarnos una protección complementaria podemos combinarlo con el software RAID-1.
Creamos un Software RAID Figura 2. Los drivers para RAID y LVM los descubriremos en el núcleo Linux
•
•
el dispositivo RAID, una vez creado, no puede dividirse en particiones, lo que a veces hace necesaria la configuración de un par de RAID simultáneamente; una vez creado el RAID, no puede extinguirse en más discos.
Gracias a RAID lo que el ordenador percibe como un dispositivo bloque, en realidad, puede ser la combinación de varias particiones de discos duros distintos. Logical Volume Manager va todavía más allá. Con esta herramienta, los dispositivos bloque a los cuales facilita el acceso, no sólo pueden estar físicamente colocados en cualquier número de discos o particiones, sino que también es posible aumentarlos, reducirlos, o incluso moverlos. Es como si una tabla de particiones no sólo abarcara un par de discos más, sino que también permitiera añadir/ eliminar y aumentar/reducir la partición, sin provocar ninguna interrupción en el trabajo del sistema: a veces, incluso sin desmontar la partición. Asimismo, con igual facilidad, es posible agregar los discos que siguen. En suma, gracias a LVM conseguimos: •
•
•
•
completa libertad para designar cada uno de los discos físicos o particiones como dispositivos bloque en el sistema (p. ej. un dispositivo montado como /home puede consistir en un disco IDE y una mitad del disco SCSI); la capacidad de expandir y reducir con facilidad (si el sistema de ficheros admite la segunda opción) cada uno de los dispositivos vistos por el sistema operativo, así como la capacidad de trasladarlos entre los discos (lo que también incluye poder agregar y eliminar de una manera fácil los discos en el sistema); el fraccionamiento (ing. striping) de los datos en dos o más dispositivos físicos, con el objetivo de incrementar el rendimiento; una función que facilita la creación de la copia de seguridad (snapshot).
El Software RAID lo podemos establecer en dos particiones cualesquiera, como mínimo. Para que nos sirva de algo, esas particiones deben hallarse en discos separados. No hay que olvidar que desarrollar el RAID en dos particiones de un solo disco no aumentará la seguridad de los datos ni acelerará las operaciones del disco. Podemos reunir en RAID las particiones de discos totalmente distintos, como por ejemplo IDE, SCSI o SATA, pero tal híbrido normalmente funcionará a la velocidad del más lento de ellos. Si queremos juntar dos discos IDE, éstos tendrán que estar situados en canales IDE distintos: cuando se unan con una banda, observaremos una disminución del rendimiento bien visible. El Software RAID se genera a nivel del núcleo del sistema. Tenemos que contar con el soporte de RAID en el núcleo. Al configurar éste, en la sección Multi-device support (RAID and LVM), debemos marcar RAID support junto con los modos RAID necesarios (podemos marcarlos todos). Lo más cómodo será compilar el soporte de RAID en el núcleo de forma fija. Aún así, también podemos no compilar el núcleo por nuestra propia cuenta y apoyarnos en el de la distribución: en todas las distribuciones nuevas encontraremos los módulos: linear, raid0, raid5, etc., que son necesarios para que nuestra matriz funcione. Basta con dar el comando cat /proc/mdstat para que sepamos si nuestro núcleo ofrece el soporte para Software RAID. Si veremos la notificación que nos alerta de la falta del fichero, tenemos que configurar y compilar el nuevo núcleo manera manual. El Software RAID está disponible en el núcleo Linux desde hace muchísimo: está presente de forma estándar en los núcleos de las series: 2.4.x y 2.6.x, pero existen parches que permiten su empleo con lo núcleos 2.2.x, e incluso 2.0.x. Todas las operaciones de las que hablo aquí, las he realizado sobre el núcleo 2.6.9; si bien, deben de resultar iguales con las versiones del núcleo más antiguas, incluida la serie 2.4.x. Además del soporte proporcionado en el núcleo del sistema, también nos harán
equipo
RAID y LVM en el momento de instalar la distribución
Los instaladores de la gran parte de las distribuciones modernas permiten crear los dispositivos RAID y LVM ya en el momento de instalarse Linux. Por ejemplo, en Aurox Linux basta seleccionar Partición manual con Disk Druid para poder establecer RAID, LVM, e incluso un LVM sobre el RAID. En las nuevas versiones de Mandrakelinux, también estamos obligados a escoger la selección manual de particiones, y después, conmutarnos además al modo avanzado. El instalador de esta distribución tiene unas capacidades similares, pero parece que no permite crear ningún LVM sobre RAID. Si sabemos cómo funcionan los dispositivos RAID y LVM, generarlos con el apoyo de cualquier de los instaladores, no debe ocasionar ninguna dificultad. Por ejemplo, para crear RAID en Aurox Linux hacemos clic en RAID, seleccionamos el primero de los discos y marcamos Crear una partición de software RAID. A continuación, repetimos la misma acción para cada uno de los discos que siguen. Para terminar, volvemos a hacer clic en RAID y seleccionamos Crear un dispositivo RAID. Entonces, podremos indicar su tipo, su punto de montaje, así como el sistema de ficheros que se establecerá sobre él. Generamos LVM de forma similar: primero, implantamos una o más particiones tipo physical volume LVM, y después hacemos clic en LVM y construimos cada uno de los volúmenes lógicos. Mi experiencia al crear RAID y LVM a través de los instaladores de distribuciones no es precisamente alentadora. Os recomiendo la instalación sobre dispositivos tradicionales y, terminada ésta, la formación de RAID o LVM y un traslado posterior de los directorios adecuados.
falta dos paquetes con programación: el mdadm y el raidtools (en Debian, raidtools2). El primero contiene una herramienta para activar y parar los dispositivos RAID, y el segundo proporciona las herramientas básicas para crear matrices. Detectaremos estos paquetes en todas las distribuciones de Linux más populares. Supongamos que nuestro sistema operativo está instalado en un disco sda, y los discos que queremos dedicar para RAID son los IDE: hda y hdd. Para ello, hemos creado particiones en ambos, pero serán las hda2 y hdd2 las que se destinan a RAID. Previo a comenzar el trabajo como tal, podemos probar la rapidez de operación de estos
www.lpmagazine.org
63
equipo
discos antes de que a partir de ellos se haya construido una matriz. Y cómo abordar en serio el tema de probar el rendimiento de los discos, sirviéndonos del programa Bonnie++, lo explico en el recuadro ¿Cómo hacer tests de los discos?. En el proceso de diseñar el sistema, donde el rendimiento de la memoria masiva despempeña un papel relevante, siempre hay que guiarse por las indicaciones del programa Bonnie++, o uno similar. En este artículo aprovecharé el programa dd para demostrar de forma rápida e imaginativa las diferencias entre las configuraciones RAID. Por ejemplo, después de haber creado el sistema de ficheros ext2 en la partición hda2, y tras haberla montado en /mnt/test/, realicé los comandos: cd /mnt/test; dd if=/dev/zero of=borrame count=2000000.
Con ello, obtuve como resultado la siguiente velocidad de grabación lineal de un fichero grande: 1024000000 bytes transferred in 28,490542 seconds (35941752 bytes/sec)
Si hubiera empleado el sistema de ficheros ext3, el tiempo necesario para efectuar esta operación habría crecido hasta los 32,8 segundos.
RAID-0
Primero, probaremos el RAID-0. Con el fin de construirlo, tenemos que escribir el fichero /etc/raidtab. Para empezar, he situado allí las siguientes líneas: raiddev /dev/md0 raid-level
0
nr-raid-disks
2
Como podemos ver, el fichero no es complicado. La primera línea determina el dispositivo al que se refiere esta configuración. Salvo md0, el número de otros dispositivos lo podemos concretar a nuestro gusto (por supuesto, deben situarse en otras particiones). Determinamos el tipo de matriz con la opción raid-level (en este caso es RAID0, o sea, stripe). En nr-raid-disk indicamos cuántas particiones van a trabajar en este dispositivo; el efecto del persistent-superblock será la grabación en el superblock de las particiones que se irán indicando a raíz de las informaciones necesarias para que esta matriz se detecte automáticamente al iniciar el núcleo del sistema; chunk-size precisa, en kilobytes, cuáles serán las unidades mínimas en la grabación en matriz (no es posible averiguar de forma unívoca cuál será el valor para el mejor rendimiento, pero podemos aceptar de manera provisonal que será igual al block size de nuestro sistema de ficheros). Luego, vamos especificando y numerando todas las particiones empleadas. El paso siguiente consiste en cambiar, mediante el programa fdisk, los identificadores de la partición en la que funcione la matriz. Deben recibir su tipo fd, es decir, Linux raid auto. Sin que lo hayamos hecho la matriz sí que funcionará, pero no será detectada por el núcleo del sistema. Cuando todo ya esté listo, ejecutamos el comando mkraid /dev/md0. Por supuesto, ése provocará la pérdida de todos los datos que hemos almacenado en las particiones especificadas en /etc/raidtab. En consecuencia, debemos obtener algo así:
persistent-superblock 1 chunk-size
4
handling MD device /dev/md0
device
/dev/hda2
analyzing super-block
raid-disk
0
disk 0: /dev/hda2, 14659312kB, raid
device
/dev/hdd2
superblock at 14659200kB
raid-disk
1
disk 1: /dev/hdd2, 18922680kB, raid superblock at 18922560kB
Observamos así la matriz ha conseguido formarse, aunque esas particiones difieren respecto a su tamaño. Ahora podemos probarla con el comando cat /proc/mdstat. Nos tiene que aparecer, por ejemplo, algo por el estilo: Figura 3. Todas las informaciones necesarias para construir RAID y LVM las podemos encontrar en los respectivos HOWTO en inglés
64
Linux+ 2/2005
Personalities : [linear] [raid0] [raid1] [raid5] [raid6] [raid10] md0 : active raid0 hdd2[1] hda2[0] 33581760 blocks 4k chunks unused devices: <none>
Desde ahora tratamos el dispositivo /dev/ md0 como una partición del disco duro. Por ejemplo, podemos realizar los comandos: mkfs.ext3 /dev/md0 mount /dev/md0 /mnt/test/ cd /mnt/test/ dd if=/dev/zero of=borrame count=2000000
En mi sistema, este test rápido mostró: 1024000000 bytes transferred in 18,410448 seconds (55620591 bytes/sec)
Observamos un aumento casi doble de la velocidad de grabación de este fichero (desde los 32,8 segundos a los 18,4 segundos). Una matriz parecida, creada en mi ordenador en los discos SATA, se las arregló con esa grabación en 14 segundos. De este modo, hemos conseguido un dispositivo que debe funcionar con mucha más rapidez que un disco individual, tanto en las operaciones de lectura, como en las de grabación. Lo podemos montar donde nos apetezca dentro de un sistema de ficheros en el que el disco se utiliza con intensidad, p. ej. en /var/www. Solamente basta escribir lo apropiado en /etc/fstab y mudar los datos viejos al dispositivo nuevo. Si queremos utilizar la matriz en un par de sitios distintos del sistema de ficheros, tenemos que agregar más discos, o dividir en más particiones los que poseemos, y en /etc/raidtab definir luego los sucesivos dispositivos /dev/md1, md2 ,etc., iniciarlos todos (mkraid), formatearlos y montarlos. Si hemos instalado los paquetes mdadmin y raidtools correctamente, los scripts responsables del funcionamiento del sistema deben parar la matriz (ejecutar el comando raidstop con el parámetro adecuado) antes de que nuestros discos se desconecten de la alimentación. En varias distribuciones funcionará también la notificación para el administrador acerca de una avería de cualquier disco. Los paquetes en cuestión cuentan con muchas capacidades más: es aconsejable explorar sus ficheros de configuración en los directorios: /etc/default/ y /etc/mdadm/.
RAID-1
Supongamos que nos dio por cambiar nuestra configuración y establecer RAID-1 en el lugar de RAID-0: de hecho, sólo el RAID-1 es un RAID de verdad, puesto que RAID-0 carece de los discos repetidos. Antes de que comencemos a construir el
equipo
software raid y logical volume manager
nuevo dispositivo, es imprescindible que desactivemos el antiguo. El primer paso consiste en descomponer el sistema de ficheros montado sobre la matriz (p. ej. umount /var/www). Después, ejecutamos el comando raidstop /dev/md0. Únicamente ahora es cuando podemos cambiar la estructura de las particiones en los discos y crear matrices nuevas. Si nos saltamos estos pasos, ni la configuración de la matriz, ni los cambios en la estructura de las particiones acabarán con éxito: lo más lejos adonde pueden llevarnos es la irreparable pérdida de datos. EL fichero de configuración /etc/raidtab para RAID-1 es casi idéntico que para RAID-0:
old superblock mkraid: aborted.
Como vemos, el sistema se negó a crear una matriz nueva en los dispositivos en los que previamente hemos creado RAID-0. Sin embargo, tenemos la seguridad total de que queremos destruir por completo la matriz anterior; así que damos el comando: mkraid -R /dev/md0 y recibimos, p. ej.: DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB
raiddev /dev/md0
disk 1: /dev/hdd2, 18922680kB, raid
raid-level
1
nr-raid-disks
2
persistent-superblock 1 chunk-size
4
device
/dev/hda2
raid-disk
0
device
/dev/hdd2
raid-disk
1
Luego, realizamos el comando mkraid / dev/md0, cuyo efecto es el mensaje: handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB /dev/hda2 appears to be already part of a raid array -- use -f to force the destruction of the
superblock at 18922560kB
Desde ahora el dispositivo /dev/md0 está listo para el uso. Su capacidad es de 14 GB, es decir, es igual a la más pequeña de las particiones utilizadas. Creamos en él un sistema de ficheros y comprobamos cómo funciona. El comando dd, empleado de forma idéntica a los ejemplos previos, esta vez tardó hasta más de 35 segundos en realizar su tarea. Podemos notar que, en la grabación, RAID-1 funciona un poco más lentamente que un disco duro individual. A costa del rendimiento reducido obtenemos más seguridad para nuestros datos. Si uno de los discos sufre avería, la matriz seguirá operando, y en los logs del sistema aparecerá la información que nos avisa que hace falta cambiarlo.
La integración de RAID/ LVM en el sistema
El lugar donde montar los dispositivos recién creados depende de la meta que queramos alcanzar al configurar LVM o RAID, así como de los rasgos específicos de nuestro sistema. Así como pueden acelerar nuestro acceso a los datos (si utilizamos del fraccionamiento el acceso en varios dispositivos físicos), pueden perfeccionar la administración del espacio en el disco y aumentar la seguridad de los datos. Así que, ambos deben emplearse allí donde haga falta alguna de esas cualidades. Las primeras localizaciones que me vienen a la cabeza son: /home y /var: es allí donde solemos prever un espacio para el disco que es demasiado grande o pequeño, también es el sitio donde guardamos los datos más importantes. Si nuestro nuevo dispositivo funciona más rápido que los discos regulares (gracias al uso de strip), podemos optar por trasladar allí el directorio /tmp – pues existen aplicaciones que lo utilizan con intensidad – o incluso el /usr, lo que puede acelerar, mínimamente, el arranque de los programas en un ordenador de sobremesa. Con fin de trasladar datos desde el dispositivo base a uno nuevo, la manera más fácil de hacerlo es montarlo en su localización temporal (p. ej. /mnt/tmp) y servirse, p. ej. del comando cp -ax /var/* /mnt/tmp/, vaciando después el directorio de ejemplo /var y actualizando /etc/fstab, para que el dispositivo adecuado se monte ahí.
RAID-5
Crear RAID-5 no es, de ninguna forma, más difícil que hacerlo con el RAID-0 y RAID-1. El /etc/raidtab de ejemplo que preparé en mi ordenador, puede adoptar la forma siguiente: raiddev /dev/md0 raid-level
5
nr-raid-disks
4
persistent-superblock 1 chunk-size
Figura 4. Un ejemplo de construcción de LVM
4
device
/dev/hda2
raid-disk
0
device
/dev/hdd2
raid-disk
1
device
/dev/sda3
raid-disk
2
device
/dev/sdb9
raid-disk
3
El comando mkraid -R /dev/md0 que acaba de darse resultó en:
www.lpmagazine.org
65
equipo
Listado 1. Un ejemplo de informe que genera el vgdisplay --- Volume group --VG Name System ID Format Metadata Areas Metadata Sequence No VG Access VG Status MAX LV Cur LV Open LV Max PV Cur PV Act PV VG Size PE Size Total PE Alloc PE / Size Free PE / Size
GB
VG UUID
discos_IDE lvm2 1 1 read/write resizable 0 0 0 0 1 1 37,27 GB 4,00 MB 9540 0 / 0 9540 / 37,27 OEEclx-9gIPOqyl-R1cH-9tkKMlm7-rWW4xi
DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB disk 1: /dev/hdd2, 18922680kB, raid superblock at 18922560kB disk 2: /dev/sda3, 39070080kB, raid superblock at 39070016kB
mente su contenido en el primer spare disk disponible. Gracias a esto, la desconexión del sistema, con el fin de cambiar los discos deteriorados, podrá aplazarse para una fecha mucho más lejana: incluso es posible esperar hasta que tenga lugar la avería de otro disco y, de este modo, no perderemos ningún dato. Para añadir un disco de repuesto a la matriz, basta suplementar el /etc/raidtab con, p. ej., esas líneas: device
/dev/sdd1
spare-disk
0
Creamos el LVM
Logical Volume Manager, como tal, no es difícil de configurar. Sin embargo, lo que desanima a muchos usuarios a la hora de aprovecharlo es la terminología que allí se emplea. Antes de que nos pongamos a trabajar, tenemos que familiarizarnos, de modo indispensable, con un par de términos básicos que se manejan en LVM; ya que sin esto, nos perderemos bastante pronto. LVM establece una capa adicional de abstracción entre los dispositivos de memoria masiva y el sistema de ficheros en el sistema. Como resultado, entre la partición en el disco y el sistema de ficheros en el ordenador aparecen términos adicionales: •
disk 3: /dev/sdb9, 9775521kB, raid superblock at 9775424kB
El dispositivo creado de este modo tiene un tamaño de alrededor de 27 GB. ¿Por qué? Tenemos que multiplicar el tamaño de la más pequeña de las particiones empleadas (9775521kB ~= 9GB) por el número de los discos, y deducir de esto, el tamaño de una partición que es necesaria para los datos sobre la paridad; de ahí que 9*4-9=27. Un test rápido, con el comando dd y el dispositivo /dev/zero, en mi sistema tardó 20 segundos, pues RAID-5 funciona de forma más rápida que un disco sencillo, pero evidentemente con más lentitud que RAID-0.
Discos de repuesto
Para aumentar la seguridad de las matrices tipo RAID-1 y RAID-5 (así como RAID-6 y RAID-10, de las que aquí no hablaremos) podemos aprovechar los discos de repuesto (spare disk). Un disco de este tipo no se usa normalmente, no se guarda ni lee en él ningún dato. A la hora de estropearse uno de los discos, la matriz abrirá automática-
66
Linux+ 2/2005
•
•
•
physical volume (PV) – el volumen físico es simplemente un disco duro, o más frecuentemente, una partición en el disco duro, pero lo puede ser también un dispositivo del Software RAID; volume group (VG) – el grupo de volúmenes son uno o más volúmenes físicos (aparece siempre, incluso si contamos con un solo PV) ; logical volume (LV) – el volumen lógico (el sistema percibe el LV como un dispositivo bloque, entonces, si utilizamos el LVM, establecemos el sistema de ficheros (p. ej. ext3) no en la partición, sino en el LV; de forma similar, en el sistema montamos el LV, y no la partición; en un grupo de volúmenes creamos un LV, o más); physical extent (PE) y logical extent (LE) – las extensiones: física y lógica (los datos en los volúmenes físicos y lógicos se dividen en unidades más pequeñas, p. ej. de 4 MB; los tamaños de PE y de LE son los mismos).
Para que LVM funcione necesitamos el soporte de Device mapper en el núcleo. Lo
Figura 5. La configuración de nuestros dispositivos requiere que se empleen comandos ejecutables desde la línea de comandos
encontraremos en la sección Multiple devices driver support al configurarlo. Entre las opciones complementarias allí disponibles, debemos marcar las: Snapshot target y Mirror target como mínimo. Aunque estén marcadas como experimentales, ya son de uso común (primero, tenemos que seleccionar Prompt for development and/or incomplete code/drivers en la sección Code maturity level options). Lo más útil es compilar el LVM en el núcleo de forma fija, pero en algunas distribuciones daremos con él en la forma del módulo denominado dm-mod. Si confiamos en el núcleo de la distribución, sólo tenemos que cargar este módulo. Utilizaremos los núcleos de la serie 2.6.x, ya que los más antiguos, los de la serie 2.4.x, contienen la generación anterior de LVM, que dispone de unas capacidades un poco limitadas. Aparte del soporte ofrecido por el núcleo necesitamos también un conjunto de programas para crear y administrar el LVM. Éstos suelen situarse en el paquete llamado lvm2, en lugar de estar en el lvm o lvm01, que está dedicado a colaborar con las versiones anteriores del núcleo. El uso de las versiones incorrectas de los programas de herramientas puede acarrearnos apuros inesperados, así que fijémonos bien si tenemos instalado el paquete adecuado, y sólo el adecuado. Además, hay que instalar todas las librerías de las que éste depende (especialmente libdevmapper).
Elegir dispositivos
Al diseñar la matriz del disco tenemos que elegir en qué particiones de qué discos va a formarse. LVM puede aprovechar cada una sola de las particiones de igual forma que RAID, pero también podemos instalarlo directamente en un disco no dividido en particiones (si tenemos la intención de dedicarlo enteramente a este fin). Asimismo, podemos configurar LVM en el dispositivo
software raid y logical volume manager
/dev/md0, o sea, en cualquier de los tipos del Software RAID. Como he dicho antes, LVM, a pesar de sus considerables capacidades no ofrece soporte a los discos redundantes, por eso, si compilamos LVM en RAID-1, conseguiremos un dispositivo que combine las ventajas de ambos: la ampliada seguridad de los datos junto con más flexibilidad al configurar el sistema. En el transcurso del artículo voy a explicar cómo crear fácilmente un LVM sobre la matriz de RAID-1. Si queremos fundar el LVM en un disco, o en una partición individual, realizaremos todas las operaciones de la misma manera, indicando sólo los nombres distintos de los dispositivos. Doy por hecho que ya hemos creado la matriz de RAID-1, según la explicación anterior.
Niveles de RAID: –
–
Pasos siguientes
La primera acción consiste en marcar todos los dispositivos que van a formar parte de algún grupo de volúmenes (VG). En nuestro caso, damos el comando pvcreate /dev/md0. Si queremos instalar LVM en una partición sencilla, p. ej. /dev/hdb3, escribiremos pvcreate /dev/hdb3, mientras que si dedicamos un disco hdb entero para LVM, pvcreate /dev/hdb. En este último caso primero debemos borrar la tabla de particiones de este disco, p. ej. con el comando dd if=/dev/zero of=/dev/hdb bs=1k count=1. Tras iniciar el comando pvcreate veremos, p. ej. Physical volume "/dev/md0" successfully created. Repetimos este comando para todos los dispositivos que se utilizarán en cualquiera de los VG: esto provocará la grabación en los sectores iniciales del dispositivo de unos datos específicos que identifican el dispositivo determinado, gracias a lo cual, si, por ejemplo, cambiásemos los discos sda y sdb uno por el otro, LVM seguiría funcionando sin dificultad (esto no se refiere a mi sistema, donde LVM se levanta sobre RAID-1). La segunda acción es organizar un grupo de volúmenes. Cada grupo lleva su nombre, que nos lo inventamos según nos parezca. En mi ejemplo, generé el VG con el comando vgcreate discos_IDE /dev/md0, que me respondió mediante su mensaje Volume group "discos_IDE" successfully created. A mi grupo le puse el nombre de “discos_IDE”. Si nuestro volumen va a extenderse en más dispositivos, en este comando los enumeramos todos, p. ej. vgcreate discos_IDE /dev/hda3 /dev/ hdc4 /dev/sda5. Podemos crear más VG en un sistema (99, como máximo), sin embargo, ningún dispositivo físico podrá formar parte
equipo
–
Lineal (linear mode). En este modo una o más particiones se añaden una a la otra de forma lineal para formar un dispositivo RAID grande. Durante la grabación, los datos en este dispositivo llenarán, primero, toda la primera partición (primer disco), y después, la segunda, etc. La capacidad del dispositivo adquirido es igual a la suma de las capacidades de todas las particiones empleadas. Las particiones no tienen que ser todas del mismo tamaño. En este nivel, no conseguimos incrementar la velocidad y la avería de un disco da como consecuencia la pérdida de datos de toda la matriz. RAID-0 (stripe). Las capacidades de un dispositivo, o más, se agregan, mientras que los datos se guardan en varios dispositivos a la vez y, de igual forma, se leen. Si tenemos tres discos reunidos de este modo, y hemos fijado el tamaño de la banda de datos (ing. stripe size) en 16 kB, al grabar un fichero de 48 kB se arrancarán todos los discos a la vez y en cada uno de ellos se guardarán sólo 16 kB. Como es fácil de adivinar, una configuración así aumenta, incluso muchas veces, la rapidez de la transmisión de datos. La suma de las capacidades de los discos se añade, pero éstos deben tener el mismo tamaño. Si difieren entre sí, en todos ellos se utiliza sólo la capacidad del más pequeño. La avería de un disco provoca la pérdida de datos de toda la matriz. RAID-1 (mirror). Los datos idénticos se graban simultáneamente en dos discos, o más. La lectura se efectúa desde cualquiera de ellos. La capacidad de una matriz así es igual a la capacidad de la más pequeña de las particiones utilizadas. La velocidad de grabación disminuye un poco respecto a la de un disco individual. En el caso de averiarse un disco, el sistema puede
de dos grupos. Preparando el VG, podemos fijar el tamaño de PE; según el HOWTO el valor por defecto es de 32 MB, aunque, en mi sistema, vgcreate empleó el valor de 4 MB. También podemos indicar nuestro propio valor, sirviéndonos de la opción -s, p. ej. vgcreate -s 32 /dev/md0. El número indicado (por defecto, en megabytes) tiene que ser una potencia de dos. El paso siguiente es la activación del volumen. La efectuamos a través del comando vgchange --available y discos_IDE.
–
seguir operando, sin que se produzca ninguna pérdida de datos. RAID-5. Requiere tres particiones, o más. El tamaño del dispositivo creado es igual a la suma de los tamaños de todas las particiones empleadas menos el tamaño de una. Si disponemos de cuatro particiones, de 15 GB cada una, conseguimos 45 GB de espacio. Si los tamaños de las particiones no se igualan, nos servimos del tamaño de la más pequeña en nuestros cálculos. El sitio deducido se aprovecha para guardar el control de la paridad de dispositivos, gracias a lo cual, en el caso de averiarse uno de los discos, es posible recuperar todos los datos. En el caso de que se averíen dos discos de forma simultánea, los datos se perderán irrevocablemente. La velocidad de operación es similar a la de RAID-0, pero es mínimamente más baja en la grabación, porque se calcula la paridad de los datos (y con más precisión: se efectúa la operación lógica Exclusive OR en cada uno de los bits de todos los discos).
Por otro lado, raras veces se utilizan: •
•
•
•
RAID-4 – parecido a RAID-5, pero la información sobre la paridad se guarda únicamente en un dispositivo, por lo que éste se convierte en un cuello de botella. Debe ser mucho más rápido que el resto. RAID-6 – parecido a RAID-5, con un disco más destinado a los datos sobre la paridad, gracias a lo cual puede resistir una avería simultánea de dos discos. RAID-2, RAID-3 son similares que RAID-4, pero éstos no alcanzaron popularidad y no tenía ningún sentido dar soporte de ellos en Linux. RAID-10 – Es el RAID-0, pero sus respectivos elementos no son las particiones de discos físicos, sino las matrices de RAID-1. Por eso exige cuatro discos, o más.
Éste debe responder: 0 logical volume(s) in volume group "discos_IDE" now active. Es importante saber que desde ahora los scripts responsables de arrancar y cerrar el sistema que acabamos de instalar junto con el paquete lvm2, cuidarán de nuestro volumen, es decir, lo activarán al inicio, y lo desactivarán al cerrar el sistema. Una vez terminada la activación de VG, accionando el comando vgdisplay discos_ IDE podemos adquirir unas informaciones interesantes sobre él. En el Listado 1 publico
www.lpmagazine.org
67
equipo
vgdisplay,
que me presentó, entre otros, el tamaño de las PE libres: Free
Figura 6. LVM nos ayuda a organizar el espacio en los discos de la mejor manera
el resultado de esta operación en mi sistema. Notamos que nuestro tamaño de PE es de 4 MB (PE Size), y disponemos de 9.540 de las PE. Fijémonos que en este ejemplo, LVM sólo ve un dispositivo físico (es el /dev/md0), aunque en realidad tenemos dos discos. Ya vamos terminando. Ahora crearemos los volúmenes lógicos. Como ya he mencionado, en un VG podemos implantar muchos volúmenes lógicos (en un sistema puede haber 256 cómo máximo). Los volúmenes lógicos (LV), de forma parecida a los grupos de volúmenes (VG), pueden tener nombres arbitrarios, inventados por nosotros. Analicemos un comando de ejemplo que genere LV: lvcreate -l3000 -ndirectorios_inicio discos_IDE. Este comando ha generado un LV denominado “directorios_inicio” de tamaño 3.000 PE, es decir, 12.000 MB en mi sistema. El nuevo volumen lógico se ha formado a partir del grupo de volúmenes denominado “discos_IDE”. Por defecto, los datos guardados en este volumen ocuparán sucesivamente el sitio disponible en los respectivos dispositivos físicos. Accedemos a este volumen a través del fichero de dispositivo /dev/discos_IDE/directorios_ inicio. Si estamos construyendo un LVM basándonos en dos o más dispositivos independientes, podemos utilizar la opción -i para aprovechar la capacidad de fraccionar las operaciones de disco (stripe) en un par de dispositivos. El comando lvcreate -i2 -l3000 -nnombre_LV nombre_VG causará el fraccionamiento de los datos en dos dispositivos. Si tenemos más dispositivos, bien podemos ampliar este parámetro. En general, cuando utilizamos LVM no nos interesa en qué dispositivo físico acabarán los datos de un volumen lógico concreto, ya que disponemos de un par de dispositivos reunidos en un VG. De todas formas, podemos ampliar el comando lvcreate con una opción más, que va a determinar cuál será
68
Linux+ 2/2005
el dispositivo físico utilizado por el sistema cuando nuestro volumen empiece a llenarse. Por ejemplo, lvcreate -l3000 -nnombre_LV nombre_VG /dev/sdh1 determinará el primer dispositivo que se haya empleado como /dev/sdh1. Por supuesto, cuando éste carezca de espacio libre, LVM empezará a emplear otros dispositivos. Para eliminar un volumen lógico damos el comando lvremove /dev/ discos_IDE/directorios_inicio. Primero, hay que desmontar el sistema de ficheros, si es que ya hemos logrado crear y montar uno cualquiera. Lo hacemos aprovechando el /dev/discos_IDE/directorios_inicio. Para cambiar el nombre de LV podemos servirnos del comando lvrename. Además, resulta muy útil el programa lvscan, que nos mostrará informaciones sobre todos los volúmenes lógicos que sigan en funcionamiento. Yo, en mi ordenador, desde el principio había establecido un volumen más: el lvcreate -l3000 IDE,
-nlogs_sistema discos_
y después introduje el comando
PE / Size
3540 / 13,83 GB
Para llenar mi VG por completo, formando el último volumen lógico, habría debido indicar en el parámetro -l3540, puesto que este es el número de las unidades de asignación que quedan. Sin embargo, al saber que conviene dejar un poco más espacio para los snapshots, de los que voy a hablar más adelante, ejecuté el comando lvcreate -l3490 -nbases_datos discos_IDE. En este momento, ya estamos listos para formatear todos los dispositivos que acaban de crearse. En mi sistema, los comandos de ejemplo pueden tener la forma siguiente: mkfs.ext3 /dev/discos_IDE/bases_datos mkfs.ext3 /dev/discos_IDE/
S
directorios_inicio mkfs.ext3 /dev/discos_IDE/logs_sistema
LVM en acción
A estas alturas, seguramente muchos Lectores se estén preguntando para qué se ha inventado LVM. De momento, una explicación bastante larga nos ha llevado a la situación de poseer un sistema bastante regular. Hay que admitir que está protegido contra una avería en el disco duro, pero esto es gracias a RAID-1, y no a LVM. Además, tenemos el acceso retrasado al disco (realizar un test sencillo con el comando dd en mi ordenador en LVM dura tres segundos más que en RAID-1 solo). Desde luego, LVM no se ha creado para facilitar la tarea de poner nom-
Figura 7. El resultado de la operación del programa Bonnie++ tras convertirse en html
software raid y logical volume manager
bres fantásticos a los dispositivos. Veamos ahora cómo utilizarlo en la administración del espacio en el disco y cómo producir las copias de seguridad de los datos fácilmente.
Agregamos un disco
Supongamos que se ha acabado el espacio en el dispositivo /dev/discos_IDE/bases_ datos. Hemos agregado un disco al sistema y podemos aprovechar una de sus particiones: /dev/sda3. Ésta no es la mejor idea, puesto que nuestros dispositivos anteriores se encuentran en RAID-1, por lo que están protegidos de la avería de uno de los discos. Si a todo el grupo de volúmenes le agregamos un dispositivo físico sin esta protección, en caso de que se averíe perderíamos todos los datos. En realidad, debemos añadir al menos dos particiones desde dos dispositivos diferentes, creando primero el RAID-1. Sin embargo, para realizar una demostración en este artículo, nos serviremos del ejemplo simple de una partición. Empezamos iniciando la partición: pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
A continuación, ampliamos el grupo de volúmenes con un dispositivo nuevo: vgextend discos_IDE /dev/sda3 Volume group "discos_IDE" successfully extended
Verificamos el resultado de nuestras operaciones mediante el comando vgdisplay. En mi ordenador se presentaba un fragmento de su informe de la siguiente forma: VG Size
74,52 GB
PE Size
4,00 MB
Total PE
19078
¿Cómo hacer tests de los discos? Seguro que muchos usuarios de Linux conocen la herramienta hdparm. Apoyándonos en ella, podemos examinar la velocidad de transmisión lineal de los datos del disco, entre otras cosas. Se trata de un test muy sencillo que permite comparar varios discos, de hecho, no nos dice mucho sobre qué rendimiento tendrá nuestra memoria masiva, y es completamente inútil para hacer tests de RAID o LVM. No existe ningún medidor universal de la velocidad del disco, puesto que cada sistema de ordenadores es distinto: algunos continuamente leen los ficheros de tamaño de unos gigabytes, y otros, decenas de miles de ficheros del tamaño de un par de kilobytes. En algunos, la velocidad de lectura es igual de importante que la de grabación, y en otros no tiene tanto significado. Algunos programas leen datos de modo lineal, y otros rebuscan el disco continuamente. Por este motivo, al medir el rendimiento de la memoria masiva siempre tenemos que tener en cuenta el sistema concreto. El programa más popular, y que más información nos dará sobre el funcionamiento de nuestro disco es Bonnie++ (http:// www.coker.com.au/bonnie++/). Si no damos con él en nuestra distribución, podemos descargar sus fuentes desde su página de inicio, para compilarlas e instalarlas con los comandos tradicionales: ./configure; make; make install. El programa prueba la rapidez de operación, no tanto del disco duro como tal, como del sistema de ficheros. Tenemos que establecer alguna partición en el disco probado, instalar allí un sistema de ficheros y montarlo en el sistema. A continuación, pasamos al directorio donde acaba de montarse el disco que se está probando
Alloc PE / Size
9540 / 37,27 GB
Free
9538 / 37,26 GB
PE / Size
En este momento podemos instaurar un volumen lógico completamente nuevo en las 9.538 PE libres, pero no se trata de esto, porque actualmente nos falta espacio en el volumen montado en /bases. Tras ejecutar el comando df -h tenemos de momento: /dev/mapper/discos_IDE-bases_ datos 14G
Figura 8. Podemos establecer los dispositivos RAID y LVM ya en el momento de instalar la distribución
equipo
13G
397M
98% /bases
Para agregar a este volumen las 9.538 PE libres, damos el comando: lvextend -l +9538
S
/dev/discos_IDE/ bases_datos
(p. ej. cd /mnt/test) e iniciamos el programa bonnie++ -s 1000k -n 128 -b. Mediante la opción -s 1000k determinamos el tamaño del fichero que va a producir Bonnie++ para verificar la velocidad de la grabación y la lectura lineal. La opción -n 128 precisa cuántos miles de ficheros diminutos (del tamaño cero) van a formarse para medir el tiempo de su creación, la lectura y la eliminación. La última opción, -b, desconecta el buffering de las grabaciones, sincronizando el disco después de cada uno de ellos (fsync()), por lo que el programa se comporta como las bases SQL populares, o como los servidores SMTP, que actúan de forma similar. Después de unos minutos, o unas decenas de minutos de pruebas, el programa imprimirá un par de líneas: al principio se presentarán dos tablas de resultados poco inteligibles, y será la última línea la que contenga todos los resultados, separados por comas. Para conseguir una tabla de resultados bonita e inteligible en el formato html, podemos aprovechar el programa bon_csv2html. Ése carga, a través de una entrada estándar, la última línea impresa por Bonnie++ e imprime el fichero html en la salida estándar. Entonces, podemos emplearlo así: echo <última línea de bonnie++> |
bon_csv2html >/tmp/
disco1.html. Por cierto, lo más práctico
será marcar la larga línea de los resultados de la operación de Bonnie++ que nos interesa y pegarla en este comando mediante el ratón. Los valores indicados por Bonnie++ dependerán no sólo del disco duro, sino también del sistema de ficheros que se utilice (ext2/ext3), de la velocidad del procesador, lo cargado que esté el sistema, etc.
De este modo, hemos aumentado el propio volumen lógico, lo cual podemos comprobar con el comando lvscan. Ahora tendríamos que extender el sistema de ficheros para que abarque todo el espacio del LV. Existen parches especiales para el núcleo que permiten llevar a cabo esta operación sin desmontar el sistema de ficheros, pero pasemos un rato con el umount /bases/ y demos el comando resize2fs -p /dev/ discos_IDE/bases_datos. Es posible que el programa nos pida que verifiquemos el sistema de ficheros antes de modificar su tamaño, entonces en este caso escribiremos: e2fsck -f /dev/discos_IDE/bases_ datos y volveremos a dar el comando resize2fs. Ahora, sólo nos queda volver
www.lpmagazine.org
69
equipo
a montar el LV y comprobar lo que muestre df -h. En mi ordenador obtuve: /dev/mapper/discos_IDE-bases_ datos 51G
13G
36G
S
27% /bases
La operación duró poco y acabó con éxito. Sin el LVM seguramente hubiera sido imprescindible, por lo menos en un disco, la modificación de la tabla de particiones, y por consiguiente, una ardua transmisión de datos. Todo esto hubiera provocado una interrupción en el funcionamiento del sistema mucho más larga. Es posible extender el sistema de ficheros no solamente en ext2/ext3. Si empleamos reiserfs, utilizamos el comando resize_reiserfs -f de modo análogo. Si se trata de xfs, tenemos el programa xfs_growfs, pero en este caso la diferencia esencial consiste en que deberíamos dejar el sistema de ficheros montado e indicar su punto de montaje (p. ej. xfs_growfs /bases) como parámetro de ese programa.
Otras manipulaciones con discos
En caso de que queramos eliminar un disco del sistema (p. ej. el hdb) y tengamos espacio suficiente en los demás para ubicar allí todos los datos, dictaremos el comando pvmove /dev/hdb. Con esta operación, todos los datos de hdb mudarán a los demás discos dentro del mismo grupo de volúmenes (VG). A continuación, vgreduce nombre_VG /dev/hdb provocará que el disco ya no sea miembro del VG denominado nombre_VG. Si ya hemos añadido al sistema un nuevo disco (p. ej. el sdf ), en el que queremos mover los datos desde un disco viejo (p. ej. hdb), escribimos los comandos: pvcreate /dev/sdf vgextend dev /dev/sdf pvmove /dev/hdb /dev/sdf vgreduce dev /dev/hdb
Antes, hemos ido aumentando el volumen lógico. Evidentemente, también es posible reducirlo de una forma igualmente fácil. A la hora de disminuir el sistema de ficheros surge un problema, ya que sólo los ext2/ext3 y reiserfs permiten una operación de este tipo. Los comandos de ejemplo pueden aparecer de la siguiente forma:
lvreduce -L-1G
/dev/discos_IDE/
S
-n solo_backup /dev/discos_IDE/
mount /home
directorios_inicio
En este caso, tenemos que indicar el nuevo tamaño del sistema de ficheros como parámetro del programa resize2fs. Además, LVM contiene herramientas para mover grupos de volúmenes (VG) en otros ordenadores, puesto que no basta con un simple traslado de discos. Tras haber desmontado el sistema de ficheros, y habiendo desactivado el VG (vgchange --activate n nombre_VG) realizaremos el comando vgexport nombre_VG, y acto seguido, después de insertar el disco en un ordenador nuevo, vgimport nombre_VG.
Snapshot
La generación de una copia de seguridad dura bastante, y no todos pueden permitirse detener el sistema totalmente mientras se realiza. Así que los ficheros que se han modificado cuando se producía la copia resultarán un plomo. LVM dispone de un mecanismo especial que permite deshacerse de este problema. Podemos crear un snapshot del estado presente de alguno de nuestros volúmenes lógicos. Para el administrador, snapshot es otro volumen lógico que contiene la copia de algún LV. Esa copia no cambia, ni siquiera si se están realizando las operaciones de grabación sobre su original. Por supuesto, al establecerse el snapshot los datos que contiene no se copian de forma física en el volumen lógico. Necesitamos un poco de espacio en el VG concreto para tener dónde guardar las informaciones sobre los ficheros que se hayan modificado desde el momento de mantener el estado del volumen lógico. Si disponemos del directorio /home, donde se encuentran los 20 GB de datos, somos conscientes de que generar la copia de seguridad nos ocupará diez minutos. Damos por hecho que durante estos diez minutos los usuarios crearán o modificarán 200 MB de datos como máximo en la partición con /home. Ese es el espacio que hay que guardar en un grupo de volúmenes concreto. Así pues, creamos el snapshot con el comando: lvcreate -L200M -s -n solo_backup/
resize2fs /dev/discos_IDE/
S
directorios_inicio 524288
70
Linux+ 2/2005
En este punto podemos montar (sólo para la lectura) el volumen lógico llamado “solo_backup”, que contiene una copia del volumen “directorios_ inicio”: mount /dev/discos_IDE/solo_backup
Si utilizamos el sistema de ficheros xfs, el comando tiene que ser un poco más largo:
S
/mnt/backup/
Cuando acabe de confeccionarse la copia de seguridad, realizamos el comando lvremove -f /dev/discos_IDE/solo_backup. Tenemos que estar atentos a que los cambios que se hayan efectuado en el volumen hasta este momento no sobrepasen el tamaño del snapshot, en este ejemplo concreto, los 200 MB. Si éste se colma, no será de utilidad, así como tampoco los datos copiados de él.
Final
El uso de RAID y LVM puede facilitar el trabajo de administrador en gran medida, así como aumentar la seguridad y el rendimiento del sistema. No obstante, esas soluciones hacen que las acciones que solían ser fáciles (p. ej. el traslado del disco al otro ordenador) se conviertan ahora en mucho más complicadas, y en el caso de que se produzca la avería de alguna de ellas, es mucho más difícil recuperar los datos. Resulta imprescindible, por tanto, equiparse de herramientas adecuadas para rescatar el sistema, unas que sepan arreglárselas con los sistemas de ficheros en los dispositivos de este tipo, como p. ej. la minidistribución (R)ecovery (I)s (P)ossible Linux. En pocas palabras, al solucionar una parte de nuestros problemas conseguimos una serie de problemas nuevos.
En Internet: •
•
S
dev/discos_IDE/directorios_inicio umount /home
S S
xfs_freeze -f /home; lvcreate -L200M -s
directorios_inicio
•
LVM HOWTO: http://www.tldp.org/HOWTO/LVMHOWTO/ Software RAID HOWTO: http://www.tldp.org/HOWTO/ Software-RAID-HOWTO.html Distribución de rescate para RAID y LVM, entre otros: http://www.tux.org/pub/people/kentrobotti/looplinux/rip/
para programadores
Cómo escribir un programa para cambiar la resolución de pantalla mediante la extensión RandR Marek Sawerwain
U
En el DVD
En el DVD se encuentran las librerías utilizadas en el artículo, el código fuente del programa, así como todos los listados.
72
Linux+ 2/2005
no de los puntos débiles del entorno X Window, objeto de reproche, sobre todo por sus usuarios principiantes, era su configuración bastante difícil. Todos los parámetros del servidor de los X se grababan en un fichero de texto, así que lo mejor era configurarlo editando este fichero. La falta de la posibilidad de cambiar los parámetros de la imagen visualizada sin que se reinicie el entorno suponía otra desventaja grave. Por supuesto, era posible cambiar la resolución de pantalla mediante la combinación de las teclas [Ctrl]+[Alt]+[+], o [Ctrl]+[Alt]+[-] (aunque de este modo cambiábamos también la resolución como tal), y la imagen visualizada por los X seguía del mismo tamaño. En efecto, al cambiar la resolución, de una más alta a una más baja, se encendía el modo de pantalla virtual. Además, no era nada fácil gestionar el refresco de la pantalla. Estos problemas ya se los ha llevado el pasado cuando se introdujo una extensión denominada RandR. Ésta permite aprovechar también otras capacidades de las tarjetas gráficas, porque además de ser posible cambiar de resolución de pantalla sin que sea necesario reiniciar el entorno X Window, también ha aparecido la posibilidad de rotarla, si la tarjeta gráfica proporciona tal funcionalidad. Resulta que el uso de esas capacidades es bastante fácil de programar, así que en este artículo voy a explicar cómo escribir un programa de este tipo. En los entornos
tipo GNOME o KDE, e incluso en el propio X Window, existen programas correspondientes que hacen uso de la extensión RandR; sin embargo, escribir un programa así por nuestra propia cuenta de uno es, cuando menos, un óptimo ejercicio. Curiosamente, nuestro programa suministrará acceso a todas las resoluciones posibles. Por ejemplo, la aplicación disponible por defecto en el entorno GNOME sólo ofrece las principales, como 640x480, 800x600, 1024x768, etc. De forma que podemos decir, guiñando un poco el ojo, que mejoraremos las insuficiencias del GNOME.
Diseñamos el programa
Escribiremos el programa sirviéndonos de la librería GTK+. Para diseñar la interfaz gráfica del usuario nos aprovecharemos del programa Glade. Esta vez no nos limitaremos a generar un fichero con la descripción de la interfaz (fichero con extensión glade), sino que también prepararemos el código fuente que genere esta interfaz: el programa que produciremos será de tamaño modesto, así que lo mejor será que nuestra aplicación no requiera ficheros adicionales para poder funcionar correctamente. Podemos resumir las capacidades de nuestro programa en una frase corta: la meta del programa es cambiar de resolución y de valor de refresco de la pantalla. De todas formas, como siempre, vale la pena diseñar un esquema de funciona-
randr y gnome 2.8
para programadores START
Figura 1. El esquema del flujo de eventos más importantes en nuestro programa
miento del programa. Lo demuestra la Figura 1. El evento más importante es el cambio de resolución de pantalla, pero como se puede ver, el mismo proceso de selección de la resolución deseada trae como consecuencia la selección del conjunto de los valores de refresco admisibles. Este es el único fragmento de nuestro programa algo difícil de elaborar.
Construimos la interfaz
Al elaborar programación en GTK+/ GNOME, lo mejor que podemos utilizar en la preparación de la interfaz gráfica de usuario es el programa Glade. La Figura 2 presenta la interfaz de nuestra aplicación. No es demasiado complicada, ya que empleamos sólo dos widgets de GtkComboBox y dos botones estándar: uno para cambiar la resolución de pantalla y uno que termina la operación del programa. Además, colocaremos allí un par de etiquetas. En una de ellas se hallará la resolución actualmente seleccionada. El propio proceso de creación de la interfaz es típico hasta tal punto que no le dedicaré mucho tiempo, pero con los widgets de GtkComboBox se pone en manifiesto un descuido del programa Glade que merece ser mencionado. Si colocamos en el formulario los dos
controles, generalmente no añadimos ningún elemento a escoger, ya que lo hacemos después independientemente en el programa. Resulta que una actitud así esta vez no va a funcionar, porque una vez cargado el fichero glade con la descripción de la interfaz, cualquier intento de agregar elementos a GtkComboBox generará una información sobre errores. El truco para evitar este problema es muy sencillo. Tras situar un componente de GtkComboBox en la ventana que estamos creando basta con añadir un par de valores a la lista de componentes, y después guardar el fichero, luego borrar los elementos añadidos y volver a guardar el proyecto. Esto provocará que se desmarque lo adecuado en la descripción de XML para que los componentes de GtkComboBox no se creen mediante el
constructor gtk_combo_box_new, sino a través del gtk_combo_box_new_text. El uso del segundo constructor nos proporzaadowanie/budowanie ciona acceso a la lista de los componentes interfejsu que se creará automáticamente por el sistema GTK+. De este modo estaremos dispensados de la obligación de realizar uzyskanie el objeto de lista, aunque seguiremos con spisu rozdzielczoci tener que rellenarla. La lista la formarán las resoluciones de pantalla disponibles, así como los valores de refresco. Tampoco olvidemos de denominar cada uno de los ptla GUI widgets de manera adecuada. En nuestro programa el widget GtkComboBox que contiene los nombres admisibles de zakoczenie resoluciones es el ResolutionWidget. El dziaania programu otro widget de este tipo, en el que seleccionamos el valor de refresco, lleva el nombre de RefreshWidget. Como ya he mencionado antes,STOP escribiremos nuestro programa mediante dos métodos. En el primero utilizaremos un fichero complementario con la descripción de la interfaz, y en el segundo, apoyándonos en Glade y en la opción Build del menú File generaremos el código fuente en el que se elaborará la interfaz. El empleo de este código nos permitirá producir un programa que no requiera ningún fichero complementario. Como va a resultar, las diferencias entre estas dos tecnologías que nos suministra el programa Glade, en el código final de la aplicación serán diminutas.
Leyendo informaciones básicas
Dejando de lado, por ahora, el cómo vamos a escribir el programa, las informaciones esenciales para nosotros son las que se refieren a las resoluciones disponibles. Conseguimos una lista de ellas sólo una vez en el programa, aprovechando la API del sistema X Window. Por este motivo en el principio hay que agregar los ficheros de cabecera adecuados:
Listado 1. El bucle que escribe las resoluciones disponibles en la lista de selección del widget ResolutionWidget int i;
gchar tmp_buf[128]; ...
for (i = 0; i < nsize; i++) {
g_snprintf(tmp_buf, 128, "%5d x %-5d", sizes[i].width, sizes[i].height );
}
gtk_combo_box_append_text(GTK_COMBO_BOX(ResolutionWidget), &tmp_buf[0]);
www.lpmagazine.org
73
para programadores
gchar tmp_buf[128];
ción de la variable en la que se grabará la información sobre la rotación de la pantalla. Leemos la tabla que contiene las resoluciones de pantalla disponibles a través de la función XRRConfigSizes:
i=gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
sizes = XRRConfigSizes(screen_config,
Listado 2. Soporte de la señal changed para el widget de selección de resolución void on_ResolutionWidget_changed( GtkWidget *widget, gpointer data ) {
int i=0;
selected_resolution=i;
&nsize);
La variable nsize desempeña un papel importante. Allí está ubicado el número de resoluciones de pantalla disponibles. Aunque nuestro programa sirva sólo para cambiar la resolución, también podemos leer los modos disponibles de rotar la pantalla:
for(i = 0; i < old_nrate;i++)
gtk_combo_box_remove_text(GTK_COMBO_BOX(RefreshWidget), 0);
rates = XRRConfigRates (screen_config, selected_resolution, &nrate); old_nrate=nrate;
for (i = 0; i < nrate; i++) {
}
}
g_snprintf(tmp_buf, 128, "%3d", rates[i] );
gtk_combo_box_append_text(GTK_COMBO_BOX(RefreshWidget), &tmp_buf[0]);
rotations = XRRConfigRotations(screen _config, &current_rotation);
sel_res=TRUE;
el índice de la resolución de pantalla que actualmente se aplica:
#include <X11/Xproto.h> #include <X11/Xlib.h> #include <X11/extensions/Xrandr.h> #include <X11/extensions/Xrender.h>
El penúltimo fichero es el que más nos importa, pues allí están situadas las funciones relacionadas con la extensión RandR. La información que acaba de obtenerse hay que depositarla en algún sitio, y para eso definiremos un par de variables. La primera representa la configuración actual:
§
current_size = XRRConfigCurrentConfiguration (screen_config, &current_rotation);
Las capacidades de RandR no se limitan únicamente a los cambios de resolución de pantalla. Podemos rotar la imagen 90 grados, por lo que en la línea de código arriba publicada hay que indicar la direc-
La siguiente, de hecho, es una tabla en la que se colocará la información sobre todas las resoluciones disponibles: XRRScreenSize *sizes;
Empezamos adquiriendo un handle para leer la lista de resoluciones:
§
screen_config = XRRGetScreenInfo (GDK_
Como vemos, nos servimos de las funciones predefinidas del subsistema GDK que representan la ventana principal: GDK_ROOT_WINDOW, así como el dispositivo GDK_DISPLAY, del que hace uso el sistema GTK+. En el paso siguiente descargamos
74
Linux+ 2/2005
§
El código que acaba de presentarse nos suministra la lista de resoluciones disponibles. En nuestro programa está acción se realiza mediante la función get_basic_ information. A estas alturas tenemos que trasmitir las informaciones conseguidas al widget llamado ResolutionWidget. Con este fin reescribimos el contenido de la tabla sizes. El proceso del que estamos hablando puede resultar algo complicado, pero se reduce a un bucle corto tipo for, cuyo código se encuentra en el Listado 1. En la reescritura es importante el número total de los elementos de la tabla
XRRScreenConfiguration *screen_config;
DISPLAY(), GDK_ROOT_WINDOW());
§
Figura 2. El programa para realizar cambios de resolución de pantalla
randr y gnome 2.8
sizes.
Conoceremos este valor llamando a la función XRRConfigSizes, valor que se ha guardado en la variable nsize. En el bucle como tal llevamos a cabo sólo dos operaciones. Establecemos, con la instrucción g_snprintf, una serie de caracteres adecuadamente formateada, p. ej. 1024 x 768, y luego, llamando a gtk_combo_box_append_text agregamos esta serie a la lista de selección del widget ResolutionWidget. Como podemos notar, las operaciones que hay que realizar para conseguir la lista de resoluciones de pantalla disponibles son triviales. En el código de nuestra aplicación la función denominada fill_resolution_list se ocupa de esta tarea. También lleva a cabo otra acción importante: escribe los parámetros actuales de la imagen en la etiqueta. El código que ejecuta estas operaciones es el siguiente: g_snprintf(tmp_buf, 128, "%5d x %-5d@%3d Hz", sizes[current_size].width, sizes[current_size].height,
§
§
Listado 3. Cambio del refresco la pantalla y de resolución void on_ChangeResBtn_clicked( GtkWidget *widget, gpointer data ) {
gchar tmp_buf[128]; if(sel_res==FALSE && sel_ref==FALSE) {
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Please choose screen resolution and refresh rate!",NULL); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); }
return ;
Status status = RRSetConfigFailed; status=XRRSetScreenConfigAndRate (GDK_DISPLAY(),
§
screen_config, GDK_ROOT_WINDOW(),
selected_resolution, current_rotation, selected_rate, CurrentTime);
§
current_size = XRRConfigCurrentConfiguration (screen_config, &current_rotation); g_snprintf(tmp_buf, 128, "%5d x %-5d@%3d Hz",
LABEL(ActualResLabel), tmp_buf);
sizes[current_size].width,
Acabamos
de emplear la variable current_size. Su valor es el índice bajo el que en la tabla sizes se ocupa de la descripción de la resolución actualmente aplicada. El valor de refresco lo leemos mediante la función XRRConfigCurrentRate, que trae como resultado el valor exacto de refresco.
sizes[current_size].height , selected_rate); gtk_label_set_text(GTK_LABEL(ActualResLabel), tmp_buf); sel_res=FALSE; sel_ref=FALSE; get_basic_information();
}
Escogemos la resolución y el refresco
Al diseñar la interfaz, sin duda, hay que implementar el soporte de la señal changed en los widgets de GtkComboBox, porque, después de escoger la resolución de la pantalla o el valor de refresco una lista desplegable, esta selección tiene que recordarse de alguna manera. En el caso del componente RefreshWidget todo es muy simple, ya que basta con recordar el índice del elemento, lo que permitirá leer de la tabla adecuada, de igual forma que en las resoluciones pequeñas. Además, levantamos un flag especial que informa de que la selección del refresco ya se ha concluido. El código de la función, que responde a la señal de indicación de valor para el widget de refresco, es muy breve:
GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW(MainWin), GTK_DIALOG_MODAL,
XRRConfigCurrentRate(screen_config)); gtk_label_set_text(GTK_
para programadores
void on_RefreshWidget_changed
§
sizes,
( GtkWidget *widget, gpointer data ) { selected_refresh=gtk_combo_box_get_ active(GTK_COMBO_BOX(widget));
§
selected_rate=rates[selected_refresh]; sel_ref=TRUE; }
Si se trata de refresco de la pantalla, el código es ya mucho más complicado. El Listado 2 demuestra todo el contenido de la función a la que se está llamando en el momento de aparecer el evento changed. Las dos primeras líneas que siguen la declaración de variables son imprescindibles para que conozcamos la resolución que ha indicado el usuario. La variable
que contiene las resoluciones, como ya sabemos, es una tabla, así que es suficiente conocer el índice de la resolución indicada por el usuario. Podemos proceder de esta forma, ya que, al transmitir datos desde la tabla sizes a la lista de elementos del widget ResolutionWidget hemos conservado el mismo orden y los mismos valores de los índices. La tarea del bucle que sigue consiste en eliminar los valores de refresco anteriormente indicados. Con este objetivo empleamos gtk_combo_box_remove_text, llamada precisamente una decena de veces, dependiendo de cuántos valores de refresco admisibles hubiera. Este número se guarda en la variable old_nrate. Vale la pena preguntarse qué
www.lpmagazine.org
75
para programadores
para cargar los parámetros de la imagen y actualizamos la etiqueta en la que se presentan esas informaciones. A continuación introducimos los valores FALSE en nuestros flags.
La versión del programa con el fichero glade
Las funciones que se han descrito hasta este momento son suficientes para cambiar la resolución y el refresco de la pantalla, pero tenemos que decidir cómo construiremos la interfaz. La forma más simple de hacerlo consiste en elaborar la interfaz a través del programa Glade y guardarla en un fichero con la extensión glade. Cargamos este fichero en nuestro programa sirviéndonos de la librería libglade. Antes de que hagamos cualquier cosa hay que iniciar GTK+. Esta operación exige una sola línea:
Figura 3. Diseño de la interfaz del programa en Glade
pasaría cuando la lista de los valores de refresco disponibles se vacíe. La función que elimina el elemento de la lista del widget debe avisarnos de un error. Esto no tendrá lugar, puesto que la variable old_nrate al iniciarse la aplicación contiene cero y el bucle for no ejercerá ni una sola iteración. El último fragmento rellena la lista del componente RefreshWidget. El primer paso es realizar la llamada de la función XRRConfigRates. Como resultado de su operación obtenemos una tabla con los valores de refresco para la resolución seleccionada, que se guarda en la variable selected_resolution. Asimismo, es importante el número de valores de refresco disponibles y este valor lo guardamos en la variable nrate. A continuación, transmitimos el número de refrescos disponibles a la variable old_nrate. Después, tenemos que transmitir en el bucle el contenido de la tabla rates al componente RefreshWidget, de una forma similar que en el caso de la tabla sizes. Para terminar, realizamos una acción más, es decir, fijamos el flag sel_res en TRUE. De esta forma marcamos que el usuario ha escogido la resolución.
Cambiamos la resolución
El Listado 3 contiene el código responsable de cambiar la resolución y el refresco de la pantalla. Se llama a la función que allí se encuentra pulsando el botón Change resolution. Lo más importante es llamar a la
76
Linux+ 2/2005
función XRRSetScreenConfigAndRate, que determina la resolución de pantalla, así como el valor de refresco: status=XRRSetScreenConfigAndRate (GDK_DISPLAY(),
S
S
screen_config, GDK_ROOT_WINDOW(),
S
S S
selected_resolution, current_ rotation, selected_rate, CurrentTime);
Los tres primeros argumentos señalan el dispositivo y el handle que representan la configuración actual. Fijamos la resolución con el cuarto argumento, pero éste es, como se puede ver, apenas un índice que apunta un elemento de la tabla sizes. La siguiente variable indica la rotación de la pantalla. No nos vamos a ocupar de este problema en este artículo, así que sólo copiamos el valor dado. En el parámetro que sigue determinamos el valor de refresco. Esta vez no es un índice que se refiera a la tabla, sino el valor real de refresco. En el último parámetro fijamos la hora actual. Llamar a la función XRRSetScreenConfigAndRate es la acción más importante que nos espera. En el código del Listado 3, antes de que se cambie la resolución, nos aseguramos, verificando el valor de los flags: sel_res y sel_ref, si el usuario realmente ha seleccionado el refresco y la resolución. Determinada la resolución, llamamos XRRConfigCurrentConfiguration
gtk_init(&argc, &argv);
La carga del fichero glade también apenas representa una línea de código: xml = glade_xml_new
S
("main_app_win.glade", NULL, NULL);
La siguiente acción, que con bastante frecuencia es obligatoria en los programas GTK/GNOME (que utilizan los ficheros glade), consiste en adquirir referencias a los widgets necesarios. Logramos hacerlo por medio de la función glade_xml_get_widget, lo que, por ejemplo, se presenta para la ventana principal como sigue: MainWin=glade_xml_get_widget
S
(xml, "MainWin");
La conexión de las señales se efectúa de modo automático. Basta llamar a la función: glade_xml_signal_autoconnect
El código de este tipo solemos colocarlo en la función main. Antes de que el programa se arranque definitivamente realizamos una operación más, también importante: rellenamos la lista del widget ResolutionWidget del modo que ya he explicado. Terminada esta acción, podemos arrancar el programa llamando a la función gtk_main.
randr y gnome 2.8
Versión independiente
La versión que incluye el fichero glade tiene la ventaja de que, con ella, es realmente fácil escribir el código que carga el fichero con la descripción de la interfaz. Además, conectaremos los eventos con las funciones a través de un solo comando. La desventaja de una solución así se basa en que el fichero glade tiene que distribuirse junto con la aplicación. Aunque esto no supone ningún inconveniente grave cuando se trata de un programa grande, para nuestra aplicación no es la mejor solución; lo mejor sería que nuestro programa no exigiera ningún fichero complementario que no sea del entorno X Window y GNOME.
Extensión RandR Si tenemos dudas acerca de si la extensión RandR está disponible en nuestra versión del entorno X Window, basta con intentar dar el comando xrandr desde el nivel de la consola antes de comenzar a elaborar el programa. Si el comando está disponible y el entorno X Window da soporte a la extensión RandR, veremos la lista de las resoluciones disponibles. La mayoría de las nuevas distribuciones de Linux, como Aurox, Mandrakelinux o Fedora Core, utiliza las nuevas, o incluso las más nuevas versiones de la implementación del entorno X Window (entre ellas, la cada vez más popular X.org), así que la extensión RandR suele estar disponible. Puesto que la extensión RandR está, de todas formas, en uso desde hace poco, vale la pena introducir en nuestro programa una función que compruebe si está disponible. Una función de este tipo podría tener un aspecto así: int check_randr(int *major_version, *minor_version)
§
{ int event_basep, error_basep, major_version, minor_version; if (XRRQueryExtension (GDK_
§
§
DISPLAY(), &event_basep, &error_ basep)) { XRRQueryVersion (GDK_DISPLAY(),
§
*major_version, *minor_version); return TRUE; } return FALSE; }
§
La exclusión del fichero glade requerirá la construcción independiente de la interfaz. No obstante, el programa Glade resulta útil también en este caso. Como ya he dicho antes, después de seleccionar la opción Build del menú File, ésta va a crear independientemente el esqueleto de la aplicación basándose en la ventana que hemos preparado. Se instaurará toda una estructura de directorios en la que lo que más nos interesa son los ficheros del directorio src. Necesitamos cinco ficheros para nuestro programa. Los dos primeros son: interface.c y interface.h. Contienen una implementación de la función create_MainWin, que genera la ventana que hemos diseñado. Además, harán falta los ficheros support.c y support.h, en los que descubriremos un par de funciones y macros complementarios. También utilizaremos un fichero denominado callbacks.h, donde están colocadas las cabeceras de las funciones que responden a los eventos. Nuestro programa ya contiene una implementación de esas funciones. Agregamos el fichero callbacks.h a nuestro programa porque lo requiere el fichero interface.c, y es obvio que no vamos a modificar los ficheros que se generan automáticamente sin razón aparente. Hablando de esto, hay que volver a mencionar a los constructores de los componentes GtkComboBox. Glade es capaz de generar el fichero interface.c, en el que se empleará el constructor gtk_combo_box_new, en vez del gtk_ combo_box_new_text que nos es preciso. Entonces hay que verificar cómo se presenta el fichero interface.c respecto a estas funciones concretas. El código que hace falta añadir a nuestro programa no es demasiado grande. Para empezar, podemos eliminar de él un par de líneas relacionadas con el soporte de libglade. No son necesarios los ficheros de cabecera, ni la declaración del objeto xml. Tras llamar a gtk_init preparamos la ventana de nuestra aplicación así: MainWin=create_MainWin();
A continuación, de forma similar que en la versión anterior del programa, adquirimos referencias de los widgets. Aprovechamos la función lookup_widget ya lista, que está situada en el fichero support.c. Obtenemos
para programadores
las referencias de los otros tres widgets necesarios del modo siguiente: ResolutionWidget=lookup_widget(MainWin, "ResolutionWidget"); RefreshWidget=lookup_widget(MainWin, "RefreshWidget");
§
ActualResLabel=lookup_widget(MainWin, "ActualResLabel");
§ §
La función lookup_widget exige dos argumentos. El primero es la ventana (en otras palabras, el superior) que contiene todos los demás widgets, mientras que en el segundo, igual que ya lo hemos hecho, indicaremos el nombre simbólico de los widgets. El paso siguiente es igual al de la versión con el fichero glade y que consiste en llamar a la función fill_ resolution_list. Al contrario qu en la versión anterior, ya que la ventana no se visualizará independientemente, es absolutamente obligatorio que se emplee la función que hace aparecer los widgets de la siguiente manera: gtk_show_widget_all(MainWin)
Y estos son los únicos cambios que nos quedaban por realizar. El programa obtenido ya no necesita más ficheros complementarios para poder funcionar correctamente.
Resumen
Para terminar, podemos decir que, con poco esfuerzo, hemos obtenido un programa muy práctico para cambiar la resolución. Es más, nuestro programa amplía el rango de resoluciones de pantalla, más, desde luego, que la programación correspondiente disponible en GNOME. Os animo a que introduzcáis en el programa vuestras propias mejoras. Como ya sabíamos, para escribir un programa útil a veces basta con una buena idea y una tarde libre.
En Internet: •
• •
Página que presenta la extensión RandR: http://keithp.com/~keithp/talks/randr/ Página de inicio de la librería GTK+: http://www.gtk.org/ Implementación del sistema X11, que va ganando cada vez mayor popularidad: http://www.x.org/
www.lpmagazine.org
77
tests
ibm thinkpad t41
tests
IBM ThinkPad T41 Michał Niwicki
L
o primero que decidí hacer cuando me trajeron a la redacción el nuevo ThinkPad T41 fue la instalación en él del sistema Linux. Me sentí un poquito incómodo cuando vi la información pegada en la caja del ordenador de que el equipo trabaja mejor con el sistema operativo Windows XP. Teniendo en cuenta las numerosas cartas enviadas a la redacción en las que leemos los problemas que algunos de vosotros tenéis con la instalación de Linux en los portátiles, me sentí inquieto.
Aurox
Primero, intenté instalar la nueva versión de Aurox (10.1). Después de insertar en el lector DVD los discos de instalación de la distribución, el instalador Anaconda se ejecutó sin el menor problema. Tampoco hubo problemas al detectar la configuración adecuada de hardware. El sistema se instaló rápidamente, sin problemas, sin ningún mensaje de error.
Novell Linux Desktop 9
Al igual que con Aurox, procedí también con la nueva distribución basada en SUSE. A pesar de que la instalación se llevó a cabo con éxito, surgieron problemas ligeros con la configuración de la pantalla. Con ayuda del programa de configuración definí los parámetros de pantalla. Me llamó la atención también el hecho de que, al contrario de Aurox, al utilizar el touchpad no funcionaba el doble clic (atención, culpa de la distribución, no del equipo).
Distribución del tipo Live
Puesto que la verdadera prueba para el ordenador son los sistemas ejecutados directamente a partir del disco CD/DVD, ejecuté en ThinkPad algunos de ellos. Escogí FreeSBIE, basado en FreeBSD, pequeña distribución de Damn Small Linux y Games Knoppix 3.7. A pesar de mis dudas, todos se ejecutaron con rapidez y sin problemas.
Ventajas y defectos
No voy a centrarme en los gadgets y altos parámetros del equipo probado, en cambio, elijo algunos elementos en los que vale la pena fijarnos antes de elegir ThinkPad T41. El portátil es un equipo ligero de caja resistente a los golpes. Saltan a la vista unas bisagras sólidas de acero que unen el panel de la pantalla con el ordenador. Como en todos los ThinkPads, el dispositivo que sustituye el ratón es un trackpoint rojo situado en el centro del teclado. Como complemento, abajo está también el touchpad que, si utilizamos esta primera herramienta, nos molesta un poquito. Se nota también la buena calidad de sonido de los altavoces integrados. Nos impresionó el trabajo silencioso del ordenador: el ventilador se activa solamente en caso de necesidad y no interrumpe el trabajo.
Especificación técnica: l l l l
l
78
Procesador: Intel Pentium M 1,7 GHz Memoria RAM: 512 MB Pantalla: 14'' Lector: 16x-10x-24x-8x max CDRW/DVD Tarjeta gráfica: 32MB ATI Mobility Radeon 9000
Linux+ 2/2005
Figura 1. IBM ThinkPad T41
Ventajas • • •
Construcción sólida Cooperación con Linux sin problemas Teclado luminoso
Defectos •
No se han detectado
Desafortunadamente, la desventaja del equipo en cuestión en su precio bastante alto. Al comparar otros ordenadores portátiles de la misma clase (Dell de la serie Lattitude, HP, Compaq), IBM Thinkpad T41 es un dispositivo caro. Así que vale la pena pensar la compra de un ordenador portátil de una marca de menos renombre que no difiera mucho del T41 en cuanto a sus parámetros, y deje mejor impresión respecto al precio.
Resumen
En breve, un ordenador excelente. Como en el caso de los productos de IBM, obtenemos el equipo de mejor calidad. Nota
tests
novell linux desktop
Novell Linux Desktop 9 Michał Niwicki
A
principios de noviembre del año 2004, la empresa Novell informó acerca de la introducción del sistema operativo Linux destinado a las empresas. Novell Linux Desktop 9 se basa en la distribución SUSE. Además de los paquetes estándar que lo forman, contiene una serie de aplicaciones designadas para los trabajos de oficina. Es importante mencionar, aunque sea el paquete OpenOffice.org, el navegador de Internet Mozilla Firefox, el cliente del correo electrónico Novell Evolution y Adobe Acrobat Reader, programa que permite visualizar los archivos pdf. Se instalan por defecto los drivers para las tarjetas de Nvidia y los plugins, gracias a los cuales se pueden reproducir las presentaciones preparadas en Flash y arrancar las aplicaciones escritas en Java. Novell Linux Desktop se caracteriza por su sencillez de instalación y por su facilidad en el uso, por lo tanto, se podrá usar, probablemente, como plataforma universal en los ordenadores de oficina.
Instalación dle sistema
La instalación de Novell Linux Desktop 9 es muy sencilla. Lo único que debe hacerse es arrancar el programa de instalación desde el DVD y afirmar unas cuantas opciones propuestas por los fabricantes del sistema. Por supuesto, son accesibles los parámetros más avanzados de la instalación, pero, por defecto, al usuario no se le pregunta sobre esto. El instalador es capaz de descubrir y configurar sólo el equipo instalado.
Novell, es decir, SUSE LINUX
¿En qué se diferencia Novell Linux Desktop de la típica distribución SUSE LINUX? Lo primero que se ofrece a la vista al iniciar la mayoría de los programas populares es el instalador agradable para el ojo y el logo de la empresa Novell. Se ha modificado el paquete OpenOffice.org y se ha agregado un mecanismo de integración con ZENworks, software que facilita la administración central de las aplicaciones
de la empresa. La movilidad por el sistema se lleva a cabo de la misma manera que en SUSE.
Defectos y ventajas
El sistema parece estar muy bien hecho en todos los sentidos, pero aún así se pueden hallar defectos en él. Aunque la distribución utiliza el idioma español (ya desde el nivel de instalación), existen aplicaciones que son accesibles únicamente en inglés. Tal situación tiene lugar en el Centro de Ayuda, que está incluido en la barra de tareas. También nos da que pensar el hecho de que se utilice el núcleo antiguo en la versión 2.6.5 – tal vez se ha haya tenido en cuenta la estabilidad del sistema. Sin embargo, la distribución tiene más puntos fuertes que desventajas. Un reconocimiento que debe tener es el hecho de que el sistema está completamente listo para trabajar inmediatamente después de su instalación: NLD contiene herramientas fundamentales de oficina que ya están configuradas, accediendo a todas las funciones a las que están acostumbrados los usuarios. A primera vista podemos notar los gráficos heredados de SUSE, principalmente el entorno KDE. El sistema no tiene ningún problema con la detección de los dispositivos adjuntos a través de USB. El sistema es bueno, pero no hay nada gratis – el precio propuesto del producto es de 50 euros. Novell asegura también el acceso anual a las actualizaciones y correcciones.
Novell contraataca
Hace algunos años se terminó la dominación de Novell en el mercado de los sistemás operativos de red. A partir de este momento los productos de esta empresa, que se pensaba que eran indispensables, fueron accediendo de manera paulatina al omnipresente Microsoft. Actualmente, Novell recupera las pérdidas contando con la conquista de al menos una parte de los clientes que utilizan a diario la plataforma Windows. Tiene la esperanza de que las primeras implementaciones de la distribu-
Figura 1. Novell Linux Desktop durante el trabajo ción tengan lugar en las instituciones estatales y en los centros educativos. ¿El interés de Novell en Linux será el punto de partida para el desarrollo de los sistemas de oficina de este tipo?
¿Realmente vale la pena?
¿Por qué merece la pena fijarse en los productos de Novell? Entre los sistemas de instalación fácil, el NLD no sólo no se deja adelantar por sus rivales más dominantes (p. ej. Mandrakelinux, Fedora Core, Windows), sino en cuanto a algunos aspectos incluso les lleva ventaja (el contacto con el usuario reducido a lo más mínimo posible). Novell Linux Desktop se basa en el SUSE alemán, considerado una distribución estable y bastante segura. Aunque su actitud hacia la política de seguridad no es tan rigurosa como la aplicada por Debian, sus creadores han conseguido combinar la estabilidad del sistema con la facilidad de su manejo. Vale la pena reflexionar un poco sobre si el precio que Novell propone es realmente tan alto como parece.
Resumiendo...
... Novell Linux Desktop es una distribución de Linux muy bien preparada para las aplicaciones de oficina. Sin lugar a dudas, llamará la atención de los clientes de corporaciones que buscan soluciones más baratas que la plataforma de sistema propuesta por Microsoft.
www.lpmagazine.org
79