Issuu on Google+

SoundJuicer

SUSE 9.2

Ripea CDs desde el escritorio Gnome

PROFESIONAL

Kooldock Edición en Un panel de

LINUX MAGAZINE

control vistoso

Castellano

NÚMERO 07

Versión profesional completa DVD de 7.5 GB

NÚMERO 7 • P.V.P 5,95 €

Sistemas Virtuales

Emulación de Windows, Mac y Linux

SISTEMAS VIRTUALES

Wine Mac-on-Linux

Programas Windows con Wine p12 Linux en Linux con UML p21 Active Directory bajo Samba sobre Linux p25 Corre MacOS X en PPC y en PC p31

Active Directory

Debianiza tu SuSE

Cochecitos

Uso de APT para la descarga e instalación de paquetes p41

apt4rpm

Juguetes

Linux en Sparc

Controlamos un coche teledirigido de un “Todo a 100” a través del puerto paralelo p52

Email anónimo Zope X3.0

BlueFish

p35

Un completo IDE para el desarrollo web WWW.LINUX- MAGAZINE.ES


¡Hazte con tus ejemplares atrasados! #1

• Número 1: Especial Redes - Servidores de correo TLS MediaWiki - Konversation - DVD Fedora Core 3 ... • Número 2: Hardware Linux - PCs Silenciosos - Gestor de ventanas Twin - Backups con Konserve ... • Número 3: Seguridad para todos - Configuración iptables con Shorewall - Ruby Rails - Domótica ...

#2

• Número 4: Redes Wireless - Scribus - Radio USB Hackeando con Zaurus - DVD Mandrake 10.1 ... • Número 5: Email seguro - Seguridad Wireless - Gimp con Python - Bluetooth - QEMU - QTCanvas - Scribus (II) • Número 6: Multimedia - MLDonkey - OpenOffice Juegos DOS con SCUMMVM y DOSBox - Scribus (III)

#3

¡No esperes a que se agoten!

¡pídelos ya! #4

#5

#6

W W W. L I N U X - M A G A Z I N E . E S


EDITORIAL

LA IGNORANCIA ES FUERZA Estimado Lector de Linux Magazine e imagino que serían hasta buena gente en el fondo, que amarán a sus familias y respetarán al prójimo y todo eso. Tenían cara de buena gente. Pero estaban ahí para defender las patentes de software. Los dos ponentes lo eran en una sesión sobre patentes en el ámbito de la TI, celebradas en el Parque Tecnológico de Andalucía, donde tenemos la redacción de la revista. “Jopé,” me dije cuando apareció el tríptico anunciando el evento en mi bandeja “el enemigo a las puertas”. Me apresuré para allá, con una carpeta repleta de argumentos contundentes con los cuales atizarles. Mr. X, era el responsable de Investigación y Tecnología de una empresa de desarrollo de software. El otro, Mr. Y, era profesor de un departamento de la Universidad de Málaga. La postura de Mr. X aún lo puedo medio entender: pertenece a una empresa y está metido de lleno en esa carrera de ratas en el que se ha convertido el mundo del desarrollo comercial de software. Pero la de Mr. Y… si el tema de patentes de software ya es un terreno harto resbaladizo, el promocionar las patentes desde la universidad, institución diseñada para la diseminación del conocimiento, me parece un gran error. La cuestión es que ambos tenían a su nombre un par o tres de patentes, descaradamente de software, descaradamente infringiendo la directiva en vigor aprobada en el 2003. No habían acabado sus ponencias, cuando yo ya tenía la mano levantada, dispuesto a no dejar pasar la oportunidad de hacerles ver lo erróneo de sus posturas. Mr. X, al principio de su ponencia, estaba bastante orgulloso de sus logros. Normal: estaba sacando una empresa adelante y tenía en cartera tres o cuatro patentes de software para su compañía.

M

Nos sentimos orgullosos de nuestros orígenes como publicación, que se remonta a los primero días de la revolución Linux. Nuestra revista hermana, la publicación alemana Linux Magazin, fundada en 1994, fue la primera revista dedicada a Linux en Europa. Desde aquellas tempranas fechas hasta hoy, nuestra red y experiencia han crecido y se han expandido a la par que la comunidad Linux a lo ancho y largo del mundo. Como lector de Linux Magazine, te unes a una red de información dedicada a la distribución del conocimiento y experiencia técnica. No nos limitamos a informar sobre el movimiento Linux y de Software Libre, sino que somos parte integral de él.

Todo un logro. Mas, cuando le hice notar que sus patentes probablemente eran ilegales según la actual directiva, se puso muy serio e hizo una nota mental de llamar a su abogado por la mañana. Por su lado, Mr. Y me preguntó si no estaría citando una ley antigua, de 1929, o así. “Directiva sobre las patentes de software del 2003” le respondí, levantando el fardo de folios del que se compone la actual directiva. Pero eso es irrelevante. Como si la ley es del Siglo de la Luces: es la ley vigente y hay que acatarla. Después vino la absurda pregunta, queriendo saber por qué los desarrolladores del software libre no patentan y quedó en evidencia la ignorancia imperante relativa tanto a la naturaleza de los patentes como a las bases del software libre. Muy peligroso todo esto. Por supuesto que hay muchas razones. Una, y la que esgrimí en aquella ocasión, es que entra en conflicto con el espíritu - y la letra - de la mayor parte de las licencias del software libre, incluyendo la GPL. Otra es que muchos proyectos de SL no vienen auspiciado por grandes empresas como Sun con OpenOffice o IBM con Eclipse, sino que son el producto de pequeñas empresas o simples grupos de usuarios que ni tienen los recursos, ni el tiempo, ni las ganas de ponerse a investigar si están infringiendo la patente de alguien. Bastante tienen con escribir programas. Si en esa batalla se metieran, nunca escribirían ni una línea de código. Básicamente toda la argumentación en favor de las patentes se reduce a que hay que patentar por que otros patentan y, si no patentas, te patentarán. Lo malo es que casi nadie se ha parado a pensar en las consecuencias de esta loca carrera suicida. ¿A qué me suena todo esto? Desde la fría lógica y el sentido común, parece un sistema intrínsecamente perverso, perverso en el sentido en que trastoca los mismo principios que alega defender, es decir, los del libre mercado.

WWW.LINUX- MAGAZINE.ES

Todo el mundo estuvo de acuerdo que debía existir el software privativo y el libre, pero de nuevo, el desconocimiento (¿he dicho que la ignorancia es peligrosa?) le hizo soltar a uno de los ponentes: “Bueno, entonces para que los dos convivan, los del Software Libre han de permitirnos patentar a los del Software Privativo”. Brillante. O sea que hemos de darle la libertad a las megacorporaciones (o minicorporaciones, me da igual) acaparadoras de patentes a registrar cada una de las ideas que se les ocurra y ellos nos darán la libertad de defendernos en el juicio cada vez que infrinjamos una de sus chaladuras, como el doble clic, los interfaces con pestañas o el XOR aplicado a gráficos. Me parece que no. Sin embargo, la más peligrosa de todas las cosas peligrosas que se malinterpretaron ese día por el desconocimiento general reinante, al menos para Mr. X y Mr. Y, es que, estaban tan metidos en su fabuloso mundo donde las restricciones artificiales al mercado promueven la innovación y permiten a PYMEs codearse con las grandes megacorporaciones, que no se daban cuenta de que con la aprobación de la nueva directiva, serían los primeros en sucumbir a la presión legal que ejercerían sobre ellos esa liga a la cual tanto ansiaban pertenecer. Que miedo.

Paul C. Brown Director

Número 07

3


CONTENIDOS • Linux Magazine nº 7

PORTADA 12 Wine

PORTADA 31 Mac en Linux

Hemos investigado las versiones libre y comercial de Wine para ver como se comportan ante situaciones reales de uso.

Gracias a los emuladores los usuarios ya pueden ejecutar su querido Mac OS X bajo Linux, permitiendo un reencuentro entre hermanos.

17 PCs en PCs

PRÁCTICO 48 Cochecitos Primera parte de una serie que nos muestra como controlar dispositivos (en este caso un cochecito teledirigido de un “Todo a Cien”) a través del puerto paralelo.

52 Correos anónimos

En este artículo os contaremos las novedades de VMware Workstation 4.5.2 y enseñaremos como inicializar y hacer funcionar Linux en VMware.

El protocolo Mixmaster ofrece a los usuarios una tecnología para el envío anónimo y el cliente Mixmaster de una aplicación libre para el envío anónimo.

PRÁCTICO 35 BlueFish El editor de HTML Bluefish es útil en los grandes proyectos web y también para los proyectos de programación más pequeños.

DESARROLLO 56 Perl En nuestra entrega mensual de Perl, echamos un vistazo al depurador integrado en Perl.

37 Zope 21 Linux dentro de Linux Encontraremos cientos de usos para UML, el rápido y práctico sistema virtual de Linux

Vemos las novedades que aporta la nueva versión X3.0 al universo de los servidores de aplicaciones web.

25 Samba Descubrimos como integrar Windows con Linux (y viceversa) con Samba.

61 Jython Este mes utilizamos librerías Java y analizamos la reproducción de sonidos desde Java para crear un mini reproductor de MP3.

LINUX MAGAZINE 3 6 8 10 95 97 97 98

4

Editorial Inseguridades DVD Linux Magazine Noticias Suscripciones Eventos Información de Contacto Próximo Número

Número 07

41 Apt En este artículo explicamos como podemos usar Apt con distribuciones Linux basadas en RPM.

45 Sparc Vemos la manera de empezar con la configuración de Linux en una máquina Sun.

WWW.LINUX- MAGAZINE.ES

ADMINISTRACIÓN 65 La Columna de Charly 66 BackUp Con una estrategia de copias de seguridad adecuada no tendremos problemas para restablecer archivos perdidos.


ADMINISTRACIÓN 68 VPNs Mostramos una solución que proporciona backups transparentes para las conexiones IPSec.

LINUX USER 78 SoundJuicer En este artículo presentamos una de las herramientas dedicadas al ripeado de múscia bajo Gnome: Sound Juicer.

SUSE LINUX 9.2

pROFESSIONAL

LINUX USER ■

Versión Completa y Comercial

DVD de arranque, capa dual, 7.5 GB de software

KDE 3.3, GNOME 2.6, OpenOffice.org 1.1.3

Conexión WLAN, Bluetooth e IR Mejorada

Firewall Automático

Herramientas y Compiladores para el Desarrollo

Incluye versión de 32 y 64 bits

72 Ktools Basket es un cómodo contenedor de documentos, notas, imágenes, sonidos, gráficos, hojas de cálculo, y otros archivos que puede que queramos encontrar en otro momento.

80 Kim Con Kim, se puede modificar y manipular ficheros de imágenes desde un menú contextual.

82 Educación

74 Desktopía WMI es un gestor de ventanas elegante y rápido con un buen soporte para el control por teclado.

76 KoolDock

En esta segunda parte sobre accesibilidad bajo Linux, abordamos uno de las áreas más interesantes de esta ciencia: la tiflotecnología.

87 Línea de Comandos Vemos navegadores en modo texto para el acceso a la web desde la consola.

Si el panel de KDE no te parece suficientemente espectacular, puedes mejorarlo con KoolDock o KXDocker.

COMUNIDAD 92 Trucos Alberto Planas y Paul C. Brown, después de instalar Linux, se enfrentan a un recalcitrante partición Windows que se niega a arrancar.

WWW.LINUX- MAGAZINE.ES

Número 07

5


LINUX USER NOTICIAS

Schlagwort sollte hier stehen

INSEGURIDADES ■ KRB5 Kerberos es un sistema de autenticación en red que utiliza un tercero de confianza (un KDC) para autenticar clientes y servidores entre sí. El paquete krb5-workstation incluye un cliente telnet compatible con Kerberos. Se descubrieron dos desbordamientos de búfer en la manera en que el cliente telnet maneja mensajes del servidor. Un atacante podría ser capaz de ejecutar código arbitrario en la máquina del cliente si se consigue engañar a un usuario para que se conecte a un servidor telnet malicioso. El proyecto de Vulnerabilidades y Exposiciones Comunes (Common

Vulnerabilities and Exposures o CVE – http://cve.mitre.org) ha asignado los nombres CAN-2005-0468 y CAN-2004■ 0469 a este problema. -Referencia Debian: DSA-703-1 krb5 -Referencia Gentoo: GLSA 200504-04 /telnet -Referencia Mandriva: MDKSA-2005:061 -Referencia Red Hat: RHSA-2005:330-06

■ MYSQL MySQL es un servidor de bases de datos multi-usuario y multi-hilo. Stefano Di Paola descubrió dos errores en la manera en que MySQL maneja fun-

POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS Distribuidor

Fuente Seguridad

Debian

Info:http://www.debian.org/security/ Lista:http://www.debian.org/debian-security-announce/ Referencia:DSA-…1)

Gentoo

Mandrake

Red Hat

Slackware

Suse

Comentario

Los avisos de seguridad actuales se incluyen en la página de inicio. Los avisos se proveen como páginas HTML con enlaces a los parches. Los avisos también incluyen una referencia a la lista de correo. Info:http://www.gentoo.org/security/en/index.xml Los avisos de seguridad actuales para Foro:http://forums.gentoo.org/ la lista Gentoo en el sitio web de Lista:http://www.gentoo.org/main/en/lists.xml seguridad de Gentoo enlazan desde la Referencia:GLSA:… 1) página principal. Los avisos se presentan en HTML con códigos para fusionar las versiones corregidas. Info:http://www.mandrakesecure.net Mandrakesoft posee su propios sitio web Lista:http://www.mandrakesecure.net/en/mlist.php que versa sobre temas relacionados con Referencia:MDKSA:… 1) la seguridad. Entre otras cosas,incluye avisos seguridad y referencias a las listas de correo. Los avisos son páginas HTML,pero no contienen enlaces a los parches. Info:http://www.redhat.com/errata/ Red Hat archiva los fallos de seguridad Lista:http://www.redhat.com/mailman/listinfo/ bajo lo que denominan erratas. A Referencia:RHSA-… 1) continuación los problemas para cada versión de Red Hat se agrupan. Los avisos de seguridad se proveen como una página HTML con enlaces a los parches. Info:http://www.slackware.com/security La página de inicio contiene enlaces al Lista:http://www.slackware.com/lists/(slackware-security) archivo de seguridad de la lista de correo. Referencia:[slackware-security]… 1) No existe información adicional sobre seguridad en Slackware. Info:http://www.suse.de/en/private/support/ Ya no existe un enlace a la página de security/index.html seguridad tras un remodelado en el sitio Parches:http://www.suse.de/en/private/ web de SuSE. Existe información en la download/updates Lista:suse-security-announce lista de correos y los avisos. Los parches de Referencia:SUSE-SA… 1) seguridad para versiones individuales de SuSE Linux se muestran de color rojo en el sitio de actualizaciones generales. Contiene una corta descripción de la vulnerabilidad que soluciona el parche.

1) Todos los distribuidores muestran correos de seguridad en el campo Subject.

6

Número 07

WWW.LINUX- MAGAZINE.ES

ciones definidas por el usuario. Un usuario con la capacidad de ejecutar funciones definidos por el usuario, podría, potencialmente, ejecutar código arbitrario en el servidor MysQL. El proyecto CVE ha asignado los nombres CAN-2005-0709 y CAN2005-0710 a estos problemas. Stefano Di Paola también descubrió un error en la manera en que MySQL crea tablas temporales. Un usuario local podría crear un enlace simbólico manipulado que podría dar como resultado que MySQL sobreescribiera el fichero. El proyecto CVE ha asignado el nombre ■ CAN-2005-0711a este problema. -Referencia Gentoo: GLSA 200503-19 / mysq -Referencia Mandriva: MDKSA-2005:060 -Referencia Red Hat: RHSA-2005:334-07 -Referencia Suse: SUSE-SA:2005:019

■ TELNET El paquete Telnet aporta un cliente telnet desde la línea de comandos. El paquete servidor telnet incluye un demonio telnet, telnetd, que soporta un login remoto a un máquina host. El proyecto de Vulnerabilidades y Exposiciones Comunes (Common Vulnerabilities and Exposures o CVE – http://cve.mitre.org) ha asignado los nombre los nombres CAN-2005-0468 y ■ CAN-2004-0469 a este problema. -Referencia Debian: DSA-703-1krb5 -Referencia Gentoo: GLSA 200504-04 / telnet -Referencia Red Hat: RHSA-2005:327-10

■ MOZILLA Mozilla es un navegador web, cliente de correo y de grupos de noticias, cliente IRC y editor HTML de código abierto. Se ha descubierto un desbordamiento de búfer en la manera en que Mozilla procesa imágenes GIF. Sería posible para un atacante crear una imagen GIF manipulada que ejecutase código arbitrario cuando fuese visualizado por la víctima. El proyecto CVE ha asignado el nombre CAN-20050399 a este problema.


NOTICIAS

Se descubrió un error en la manera en que Mozilla muestra ventanas de de diálogo. Es posible que una página web maliciosa en una pestaña en el fondo presente un diálogo que parezca provenir de la pestaña activa. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN2004-1380 a este problema. Se descubrió un bug en la manera en que Mozilla permitía a plug-ins a cargar contenidos privilegiados en un marco. Es posible que una página web maliciosa pudiera engañar a un usuario para que hiciera clic en ciertos sitios para modificar parámetros de configuración o ejecutar código arbitrario. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN2005-0232 a este problema. Se encontró un error en la manera en que Mozilla Mail maneja cookies cuando se carga correo a través de HTTP, indistintamente de las preferencias del usuario. Es posible que se pudiera trazar a un usuario específico utilizando un mensaje malicioso que cargara contenido a través de HTTP. El proyecto de

Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN2005-0149 a este problema. Se descubrió un error en la manera en que Mozilla responde a peticiones de autenticaciones de proxy. Es posible que un servidor malicioso robe credenciales desde el navegador de una víctima emitiendo una petición 407 de autenticación de proxy. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN2005-0147 a este problema. Otro error se encontró en la manera en que Mozilla maneja ciertas etiquetas de inicio seguidos por un carácter nulo. Una página maliciosa podría hacer que Mozilla se colgara cuando fuese visualizada por la víctima. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN2004-1613 a este problema. Se encontró un error en la manera en la que Mozilla establece permisos al instalar paquetes XPI. Es posible que un XPI instale ficheros con permiso de lectura y escritura globales, permitiendo a un usuario local malicioso robar información o ejecu-

WWW.LINUX- MAGAZINE.ES

tar código malicioso. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN-2004-0906 a este problema. Se descubrió un error en la manera en que Mozilla carga enlaces en las cuales se pulsan con el botón central del ratón en una nueva pestaña. Una página web maliciosa podría leer ficheros locales o modificar parámetros chrom privilegiados. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN-2005-0141 a este problema. Se encontró un error en la manera en que Mozilla muestra el icono de sitio seguro. Una página web maliciosa puede utilizar una URL de visualización de código para página segura dirigida a la página segura mientras se carga otra página insegura, mostrándose el icono del estado previo de seguridad. El proyecto de Vulnerabilidades y Exposiciones Comunes ha asignado el nombre CAN■ 2005-0144 a este problema. -Referencia Gentoo: GLSA 200503-30 / Mozilla -Referencia Red Hat: RHSA-2005:323-10

Número 07

7


DVD LINUX MAGAZINE

DVD DE LINUX MAGAZINE insignia de la línea de productos Suse orientadas al escritorio. En el DVD encontrará un sistema Linux estable y fiable que viene con centenares de útiles aplicaciones.

Instalación Sencilla La versión 9.2 de Suse Linux de Linux Magazine es muy sencilla de utilizar. No hay más que insertar el DVD en la unidad y rearrancar el ordenador. El instalador de Suse localiza el hardware y recomienda las opciones de instalación pertinentes. La mayoría de los detalles se manejan automáticamente y se acceden a las opciones de instalación a través de un interfaz claro y simple.

N

os sentimos orgullosos de poder incluir como DVD de portada la versión comercial y completa de Suse Linux 9.2. Ha leído bien: este no es la versión de descarga de escasamente más de un gigabyte. El DVD de portada de Linux Magazine te trae la versión íntegra y de pago que precisa de un DVD de capa dual, puesto que trae más de 7.5 gigas de software. Suse Linux es una de las distribuciones Linux más populares del mundo y Suse Linux Professional es el buque

YaST Suse viene con YaST, el asistente gráfico universal que le ayuda a administrar importantes tareas de configuración en su sistema. Suse ha estado desarrollando y perfeccionando YaST desde 1994 y el resultado es uno de las herramientas de configuración más respetadas en el mundo Linux.

Escritorio Suse Linux 9.2 Profesional viene con los escritorios KDE 3.3.4 y Gnome 2.6.

Figura 1: El escritorio predeterminado de Suse Linux 9.2 es KDE 3.3.

8

Número 07

También se incluye el paquete ofimático OpenOffice 1.1.3, así como TextMaker y PlanMaker, dos alternativas compatibles con Microsoft Word y Excel respectivamente. Suse 9.2 viene con herramientas gráficas como el programa de retoque de bitmaps The GIMP versión 2, el programa de diseño vectorial Inkscape y la herramienta de dibujo para niños TuxPaint. En el apartado de navegadores, Suse anda muy sobrado, con versiones de Opera, Konqueror, Epiphany, Mozilla y Firefox, al igual que en el área de clientes de correo, pudiéndose escoger entre Kmail, Thunderbird, así como clientes en modo texto como Mutt y Pine. El DVD también proporciona una gran variedad de herramientas multimedia, tales como RealPlayer, amaroK y el reproductor de música XMMS, así como el administrador de colecciones de música, juK.

Computación Móvil Suse Linux 9.2 viene con muchas características que soportan ordenadores móviles y dispositivos de bolsillo. La versión 9.2 viene con soporte WLAN mejorado. También se incluye características de administración energética avanzada y herramientas de sincronización tales como KitchenSync y Kpilot. Suse Linux también ofrece soporte inalámbrico Bluetooth y administración

Figura 2: Administra tu correo, contactos y calendario con Kontact.

WWW.LINUX- MAGAZINE.ES


DVD LINUX MAGAZINE

energética ACPI con suspensión a disco avanzado.

Servidores y Herramientas de Administración Suse suministra un amplio abanico de servicios de red y herramientas de administración. Estos servicios incluyen FTP,

Más allá del DVD Como es habitual, es casi imposible meter todo lo que Suse tiene que ofrecer en un sólo DVD, aunque sea de las características que este mes presentamos con Linux Magazine. Por ello, las empresas o grupoes de usuarios responsables de las distribuciones ponen al servicio de sus usuarios repositorios de software para que se puedan bajar aplicaciones, programas y juegos, que no vienen en la distro por defecto. Desde España, podemos acceder a la red Iris que contiene un mirror del repositorio de Suse. También podemos instalar paquetes desde repositorios no oficiales que suelen incluir paquetes no disponibles en la versión oficial. Uno de dichos repositorios es Packman, información sobre la cual se encuentra disponible en http://www.links2linux.de/. Para configurar a Yast con estas direcciones, abrimos Yast desde el menú de Inicio > Sistema > Yast y seleccionamos Cambiar Fuente de Instalación. Una vez se abra el diálogo, pulsamos en Añadir y escogemos, por ejemplo, FTP. En el diálogo de configuración, en el campo Nombre de Servidor, introducimos el nombre del servidor, sin el protocolo. Por ejemplo, si deseamos utilizar el repositorio en la red Iris, escribiríamos ftp.rediris.es en este cuadro. A continuación, hemos de decirle a Yast donde en el servidor debe encontrar el repositorio propiamente dicho. En la red Iris está bajo /sites2/ftp.suse.com/pub/suse/i38 6/9.2/ Para el repositorio de paquetes no oficiales de Packman, el servidor es ftp.links2linux.de y el directorio es /pub/packman/suse/9.2/ Una vez configurado todas las direcciones de repositorios, Yast actualiza la base de datos y podremos instalar paquetes indistintamente desde cualquiera de las fuentes.

DNS, Samba, NFS y NIS. También podemos encontrar entre los paquetes el servidor web Apache, servidores de correo, servidores de bases de datos SQL y utilidades para configuración remota. El Suse Linux Firewall 2 aporta protección contra la intrusión de terceros y es fácil de configurar a través de YaST.

Instálelo Ya Suse Linux es una de las más prestigiosas distribuciones del mundo y esperamos que satisfaga todas las necesidades de los lectores de Linux Magazine. El formato de DVD escogido aporta un conveniente medio que agrupa todas las aplicaciones y sus librerías dependientes en un mismo disco. Suse Linux le trae una de las mejores y mejor integradas distribuciones Linux para su escritorio y si nunca ha utilizado Suse Linux, ésta es una excelente ocasión para probarlo. Si ya tiene una instalación de Suse anterior, utilice el DVD para actualizarse. Tanto si es un principiante, recién llegado al mundo Linux como si es un experto de años, sabemos que encontrará en Suse 9.2 Profesional el Linux que ■ estaba esperando.

Suse Linux 9.2 Componentes Base • Linux kernel 2.6.8 • X.Org 6.8.1 • KDE 3.3 • GNOME 2.6 • GCC 3.3.4 Gráficos • GIMP 2 • Digikam • Inkscape • Tux Paint Ofimática • OpenOffice.org 1.1.3 • Kontact • TextMaker • PlanMaker • Scribus 1.2 • Adobe Reader • Quanta • ReKall 2.2.1 Internet • Firefox • Thunderbird 0.8 • Mozilla 1.7.2 • Opera 7.5.4 • Kmail • Evolution 2.0.1 Móvil e Inalámbrico

Requisitos del Sistema Suse Linux soporta los componente de PC más comunes. Para una lista de dispositivos soportados, recomendamos visitar http://www.novell.com/. El hardware mínimo es: • Procesador: Pentium 1-4, AMDx, Duron, Athlon XP, Athlon MP o Athlon 64. • RAM: Al menos 128 MB, 256 MB recomendado. • Disco duro: al menos 500 MB; 2.5 GB para sistema estándar recomendado. Se ha de disponer de un lector de DVDs para poder instalar Suse Linux utilizando el DVD Suse Linux 9.2 de Linux Magazine. Si su sistema dispone de un lector de CDs que no es un lector de DVDs, no podrá instalar el software de este DVD. Si el sistema no arranca al DVD automáticamente cuando el sistema se inicia, acceda al menú de arranque y modifíquelo o introduzca los comandos necesarios para arrancar desde DVD. Vigile los mensajes de inicio cuando acceda al menú de arranque o consulte la documentación de su hardware.

WWW.LINUX- MAGAZINE.ES

• Soporte para WLAN • Bluetooth • ACPI • KitchenSync • KPilot Multimedia • RealPlayer • amaroK • XMMS • Kaffeine • Xine • Totem • K3b • vdr • MainActor 5 demo Administración de Sistemas • Apache 2.2.0.50 • Bind 9.2.4 • Servidores LDAP • NIS • Samba 3.0.7 • NFS • SSH • Kerberos • Suse Linux Firewall 2 • Servidor de terminal VNC

Número 07

9


LINUX USER NOTICIAS

Schlagwort sollte hier stehen

NOTICIAS LINUX ACTIVE DIRECTORY PORTADO A LINUX La empresa malagueña Animatika acabar de lanzar un sistema de código abierto que permite que una máquina Linux se comporte exactamente igual que un servidor Active Directory en una red tanto sólo Windows, como híbrida. El producto, denominado ArcherNAS se encuentra en fase de producción, habiendo llegado a su versión 1.0 y todo el código desarrollado en su creación ha sido volcado al proyecto SAMBA bajo licencia GPL. Active Directory, una tecnología propietaria, cerrada e indocumentada de Microsoft, sintetiza en un mismo paquete la funcionalidad de Kerberos, LDAP y DNS. La futura versión 4 de SAMBA (planeado para mediados del 2006), replicará completamente la funcionalidad de Active Directory. “Lo realmente novedoso de nuestro producto es que permite la inyección

automatizada de DNSs en la máquina Active Directory” explica Jose María Ruíz, líder del proyecto en Animatika. La administración de un servidor ArcherNAS es mínima. “Hemos tomado un enfoque de electrodoméstico” declara Ruíz. “Configurar nuestro NAS es bastante más sencillo que configurar un router de Telefónica”. David Santo Orcero, CTO de Animatika comenta: “Una vez se ha dado de alta en Active Directory,se puede administrar nativamente desde Windows o Linux, al utilizar un panel de control accesible por web”. Según sus creadores, se han obtenido con ArcherNAS rendimientos superiores con SAMBA y NAS que con Windows. Además, ArcherNAS funciona en máquinas de alta gama, donde Windows no llega. Animatika planea aplicar su tecnología de integración con Active Directory en toda una gama de productos Linux,

como pueden ser firewalls, puertas de enlace y servidores de correo.

ArcherNAS se añade a la línea de productos de Animatika. como pueden ser sus clusters de alto rendimiento y de alta disponibilidad. Animatika cuenta con un largo historial de desarrollo de aplicaciones de software libre. Más información en: http://us1.samba.org/samba/ftp/ tsig-gss/ http://www.animatika.net

EL SOL Y LA LUNA Sun ha estado contribuyendo al clima general de esquizofrenia y paranoia que se respira últimamente en el mundo del software libre, al desvelar casi simultáneamente que es la empresa que más software ha contribuido al código abierto a la vez que piensa oficialmente que la GPL es una licencia depredadora. Con la liberación de su propio sistema operativo, Open Solaris, junto con NFS y OpenOffice, entre otros, Sun

10

Número 07

ha superado oficialmente a la Universidad de Berkeley de California en lo que se refiere a a cantidad de código liberado… mas, eso sí, Sun ha liberado su propio sistema bajo su propia licencia, la CDDL, una licencia que permite desarrollar software propietario a partir del código base libre (¿no estaba la licencia BSD para eso? En fin, que por variedad de licencias que no quede). PERO el presidente de Sun, Jonathan Schwartz, reciente-

mente realizó declaraciones destinadas a levantar ampollas en la comunidad a la cual tanto dona. Y es que tildó a la GPL de “depredadora” y a sus apóstoles de “perros imperialistas estadounidenses”. El razonamiento va más o menos como sigue: si tomamos un ejemplo como Brasil

(escogido por el mismo Schwartz), país donde se están desarrollando tantas herramientas GPL, como que no se dan cuenta de que están contribuyendo a que

WWW.LINUX- MAGAZINE.ES

Estados Unidos (el resto del mundo no existe) sea más fuerte debido a que la GPL obliga a devolver a la comunidad toda modificación y mejora, y que, por tanto, Brasil siempre estará en inferioridad de condiciones. Recuérdese que este es el mismo señor que se refirió a Linux en general como “el Linux de Red Hat”, obviando a Mandriva, Debian, Knoppix, Suse, Slackware, Ubuntu… ¿Cómo llegarán semejantes elementos a presidente? Por que mira tu GWB… Más información en: http://blogs.sun.com/ jonathan http://www.technewsworld. com/story/news/42027.html


Multimedia • PORTADA

Herramientas para la computación virtual en Linux

ANFITRIONES E INVITADOS ntes había que elegir un solo sistema operativo. Después se podían elegir más, pero habia que reiniciar. En la actualidad, los usuarios prefieren tener toda la variedad pero en un solo paquete. ¿Por qué no ejecutar aplicaciones Windows en Linux? ¿Por qué no implementar una versión completa de Windows, o Mac OS X, o Linux dentro de un anfitrión Linux? A los desarrolladores les gustan los sistemas virtuales porque una aplicación sin probar puede romper el PC virtual sin colgar el anfitrión. Los administradores de sistema utilizan sistemas virtuales para probar versiones del núcleo o para experimentar con configuraciones de red. Los usuarios solamente quieren hacer funcionar sus aplicaciones preferidas en su sistema operativo preferido. Este mes los sistemas virtuales son la historia de portada, le ayudaremos a iniciarse en la computación virtual en Linux.

A

Nuestros artículos de este mes cubren temas tales como: Aplicaciones Windows con Wine: Wine y las aplicaciones derivadas de él le permiten ejecutar aplicaciones Windows bajo Linux. Le mostraremos como dar soporte a programa Windows con Wine e introduciremos un par de variantes de Wine: CrossOver Office y Cedega. VMWare 4.5.2: Si está buscando una herramienta estable y bien probada que le ayude a ejecutar una versión completa de Windows dentro de un sistema Linux, intente la respetable VMware. User-Mode Linux: El popular UserMode Linux (UML) es una herra-

mienta rápida, equilibrada y barata para ejecutar Linux como un sistema virtual en Linux. Describiremos como configurar su propio sistema virtual con UML y le mostraremos por que los usuarios, los desarrolladores y los administradores han encontrado miles de aplicaciones para UML. Active Directory: El “killer application” de los servidores de ficheros llega a Linux. Vemos como empotrar Active Directory en una máquina Linux de manera transparente para su red Windows, Linux o lo que sea. Mac-on-Linux: Mac-on-Linux es una herramienta libre para ejecutar Mac-OS sobre un sistema Linux basado en Power-PC. Le enseñaremos como obtener lo mejor de ambos mundos sin ■ arranque dual.

EN PORTADA Aplicaciones Windows con Wine .12 VMWare 4.5.2

. . . . . . . . . . . . . . . . . . .17

User-Mode Linux

. . . . . . . . . . . . . . .21

Active Directory . . . . . . . . . . . . . . . . .25 Mac-on-Linux

. . . . . . . . . . . . . . . . . . .31

WWW.LINUX- MAGAZINE.ES

Número 07

11


PORTADA • Wine

Wine, Crossover Office y Cedega

¿AGUA O VINO?

Si se necesita que una aplicación Windows se ejecute en Linux, no hay otra alternativa que usar Wine. Hemos investigado las versiones libre y comercial de Wine para ver como se comportan ante situaciones reales de uso. POR BERND VILLIGER, OLIVER FROMMEL Y JÖRG LUTHER

E

n 1993, Sun Microsystems desarrolló una herramienta que permitía a los usuarios ejecutar las aplicaciones Windows en Solaris, sin necesidad de tener que portar la aplicación. Unos cuantos meses después, se hizo un intento para hacer que la herramienta se ejecutara en BSD y Linux y estos pasos marcaron el nacimiento de lo que ha llegado a conocerse con el nombre de Proyecto Wine. El nombre Wine (vino en inglés), es un acrónimo al estílo típico de GNU, y corresponde a “Wine is not an Emulator” (Wine no es un Emulador). Y, es cierto, Wine [1] no es realmente un emulador en el sentido tradicional. La herramienta ni emula un CPU diferente, ni, estrictamente hablando, emula un sistema operativo. En realidad, Wine es una capa de abstracción entre Linux y la aplicación Windows que el usuario desea ejecutar. Intercepta cualquier llamada a la API de Windows realizada por la aplicación e intenta convertirlas en lla-

12

Número 07

madas equivalentes en el sistema Unix y las X11. Desde un punto de vista técnico, Wine es un cargador, que carga y ejecuta programas Windows, y un conjunto de bibliotecas que traducen o emulan las llamadas a la API de Windows. La mayoría de los problemas de Wine reflejan el rol de traductor entre la aplicación Windows y Linux. Una traducción nunca puede ser tan buena como el conocimiento de la lengua y la cultura que posea el traductor. Es bien conocido que a Microsoft no le gusta que los extraños conozcan el funcionamiento interno de su sistema operativo y sus aplicaciones. Pero MS no es la única compañía de software que le gusta tener secretos; muchas otras compañías son reacias a portar sus aplicaciones a Linux. Acrobat Professional de Adobe es un ejemplo de ello y es por este motivo por el que hemos optado por usar Acrobat Pro como conejillo de indias en nuestras pruebas. La máquina que hemos usado en la prueba es un portátil HP con un

WWW.LINUX-MAGAZINE.ES

Pentium 4 a 1,7GHz y 256 Mbytes de RAM. Como sistema operativo hemos escogido Suse Linux 9.0 Professional.

Instalación de Wine La mayoría de las distribuciones incluyen Wine como componente estándar, aunque el paquete no se suele instalar por defecto. Para averiguar si Wine está ya instalado en el sistema, se puede introducir el siguiente comando para una distribución basada en paquetes RPM: rpm -qa | grep -i wine

Si Wine está instalado, se debería ver el mensaje wine-20040505-1 (Suse 9.0) o wine-20040813-7 (Suse 9.2). Como se puede ver, la fecha de lanzamiento es al mismo tiempo el número de versión. Si se desea reemplazar cualquier versión antigua de la herramienta por una más reciente (2005) es bastante fácil de hacer y proporcionará la ventaja de tener una configuración básica por defecto en


Wine • PORTADA

intentar instalar cualquier versión de NetObjects Fusion (otro programa que no está oficialmente soportado) demuestra los fallos típicos. La aplicación no se puede instalar sin tener instalado previamente Internet Explorer.

Alternativa: Crossover Office

Figura 1: Una imagen muy extraña: arranque del instalador de Windows de Acrobat en el escritorio de Linux con un emulador Wine…

la mayoría de los casos. Sin embargo habrá que desinstalar primero la versión previa con el objeto de evitar problemas (véase el Cuadro 1: “Eliminación de Wine”). La instalación no tiene nada de espectacular. Primero, se descarga el paquete (que ocupa unos 12Mb) desde WineHQ [2]. Luego hay que conectarse como root e instalarlo. En Suse 9.0, por ejemplo: #rpm -ivh wine-20050111-U SuSELinux90.i586.rpm Preparing...U ######################## [100%] 1:wine...U ######################## [100%]

Este proceso completa la configuración del tirón, ya que la versión actual viene preconfigurada. Si se desea ver o modificar la configuración, tan sólo hay que ejecutar la herramienta winecfg, que permite ver o cambiar las asignaciones de las letras de los discos virtuales para los dispositivos (Figura 4).

Instalación de Aplicaciones Windows Ahora ya se puede instalar la primera aplicación Windows. En nuestro caso, hemos optado por una aplicación popu-

lar que oficialmente no está soportada por Wine: Adobe Acrobat 5.0. La fuente de instalación es el CD de la aplicación y la letra del CD-ROM, en nuestro laboratorio es la “Z:”; así que podemos ejecutarla tecleando: wine 'Z:\media\cdrom\AcrobatU 5\Setup.exe'

Hay que asegurarse de usar las rutas al estilo Windows. También hay que usar las comillas simples (‘) o las comillas dobles (“) para la ruta de los programas. Si no se hace, provocará que la shell de Linux manipule el comando, los espacios y el texto que le sigue. La instalación de Adobe Acrobat (Figura 1) tardó 15 minutos en nuestro laboratorio y eso que tan sólo fue una única aplicación. Pero valió la pena la espera: después de terminar la configuración, el siguiente comando wine 'C:\Program Files\AdobeU \Acrobat.exe'

nos proporcionó una instancia operativa de Adobe Acrobat, como se puede ver en la Figura 2. No todas las instalaciones de programas son tan sencillas como esta. El

WWW.LINUX-MAGAZINE.ES

Si realmente se está interesado en usar Wine en un entorno de producción, sería interesante que se le echara un vistazo al paquete Crossover Office de CodeWeavers [3], una versión comercial de Wine que cuesta entre 39.95 US$ (versión estándar) y 69 US$ (versión profesional multiusuario). Crossover Office proporciona una GUI y un manejo más amigable para el usuario. Sin embargo, Crossover Office no elimina los problemas habituales a los que se enfrenta Wine (véase el Cuadro 2: “Wine no es un emulador”). Además, Crossover Office Standard es básicamente un envoltorio que hace que sea más fácil el uso de Wine. Primero, veamos como Crossover maneja una instalación de Acrobat. Esto debería permitirnos probar las cualidades del producto en un escenario real. Hemos usado el paquete de demostración de Crossover, que funciona durante un mes tras instalarse, aunque hace falta

Cuadro 1: Eliminando Wine Independientemente de lo que haga, no intente controlar instalaciones de Wine múltiples o paralelas. Antes de instalar una nueva versión, vale la pena eliminar la versión anterior. Antes de nada, necesita encontrar la versión que tiene instalada: # rpm -qa | grep -i wine wine-20040505-1 Su sistema debería contestar con la etiqueta de la versión, que debe indicar al programa que la va a eliminar. En nuestro ejemplo sería rpm -e wine-20040505-1. Luego eliminamos los directorios que Wine crea para cada cuenta: # rm -rf /root/.wine # rm -rf /home/user/.wine [...] Este paso debería limpiar los ficheros basura, dejando el camino libre para la actualización de Wine. Puede utilizar este mismo método para quitar una instalación de Wine que ha ido mal.

Número 07

13


PORTADA • Wine

registrarse para poder acceder a la descarga del programa. El proceso de instalación está basado en un script de la shell: install-crossover-standardU -demo-4.1.sh

La instalación no tiene nada de especial y los resultados son autoexplicativos

(Figura 3). En la mayoría de los casos, tan sólo hay que aceptar la configuración por defecto. Cuando se haya acabado, se debería ver la ventana principal tal como se muestra en la Figura 6. Tan solo hemos encontrado un punto criticable: para evitar conflictos en una etapa posterior, hay que instalar las fuentes que Windows instala habitualmente. La solapa Fonts en la ventana principal

realiza el trabajo por nosotros, de modo que tan solo hay que descargarse las fuentes requeridas para eliminar el problema. De nuevo, probamos la instalación de Adobe Acrobat Professional 5.0. Para ello simplemente se hace clic en Install en la solapa Add/Remove. En la ventana que aparece, se selecciona Unsupported Software y luego se apunta a la fuente de instalación.

Jugando con Cedega Si queremos ejecutar juegos de Windows en Linux, necesitamos Cedega de Transgaming [4]. Cedega es una versión del emulador Wine API para el cual los desarrolladores han añadido las funciones de las librerias multimedia DirectX. Cedega hasta soporta juegos actuales de Windows con gráficos complejos tal como Half Life 2 o Far Cry. Sin embargo, este tipo de funcionamiento no es gratis: Transgaming cobra 5 USD/EUR por mes con una suscripción mínima de tres meses. Si estamos interesado en echarle un vistazo a Cedega, podemos descargarlo y compilar la mayoría del software. Sin embargo, la descarga carece de unos cuantos componentes críticos, lo que significa que muchos juegos protegidos no se cargarán.

Cedega desde el CVS Sin una suscripción el código está sólo disponible vía sistema de control de versiones CVS y necesitaremos el programa cvs para descargarlos. Suponiendo que tenemos cvs en el equipo, primero necesitaremos identificarnos en el servidor:

normales, aunque Fedora Core 3 requiere algunas opciones adicionales: ./configure --enable-openglU --enable-pthreads El comando make arranca el compilador y su -c 'make install' coloca al programa en el directorio correcto en el disco. A continuación podemos copiar el fichero de configuración de ejemplo al lugar correcto: cp documentation/samples/U config ~/.wine/config Antes de empezar, necesitaremos crear unos cuantos ficheros y directorios. Cedega espera encontrarse con parte de la estructura de directorios de Windows. El fichero de ejemplo supone que se tiene un directorio llamado ~/.transgaming. Hay que crear un directorio con este nombre o cambiar este a ~/.wine/config; si hacemos esto, utilizaremos este directorio para los siguientes pasos. Añadamos el subdirectorio siguiente como sigue: mkdir -p ~/.transgaming/c_driveU /windows/system32 mkdir ~/.transgaming/c_drive/U windows/fonts Necesitaremos añadir una entrada para

cvs -d:pserver:cvs@U cvs.transgaming.U org:/cvsroot login Si se nos pregunta por una clave, simplemente teclearemos cvs. Si esto funciona, el programa no nos dará ninguna respuesta, pero se quejará si las cosas van mal. Luego descargaremos los ficheros de la máquina: cvs -z3U -d:pserver:cvs@cvs.transgaming.U org:/cvsroot co winex Tras un rato, tendremos el código completo en el directorio winex. La compilación sigue los pasos

14

Número 07

Figura 5: El juego Moorhuhn ejecutándose en Cedega.

WWW.LINUX-MAGAZINE.ES

una unidad de CDROM en el fichero de configuración. La entrada para el primer disco duro IDE es como sigue: [Drive H] "Path" = "/media/cdrom" "Type" = "cdrom" "Label" = "CD-ROM" "Filesystem" = "win95" "Device" = "/dev/hdc" Ahora podemos instalar el juego de Windows. Utilizamos la edición de invierno del juego Moorhuhn que es muy popular en Europa. Con Cedega, necesitamos lanzar wine para instalar el juego: wine moorhuhn_we.exe Completamos los pasos requeridos para poner el programa Moorhuhn en su “disco” Cedega, o sea, su directorio .transgaming/c_drive, que es el equivalente al C: de Windows. Para asegurarnos de que el juego encontrará los ficheros, cambiaremos el directorio de instalación y lo arrancaremos desde ahí: cd .transgaming/c_drive/Program\ U Files/Phenomedia\ AG/Moorhuhn\ U Winter-Edition wine MoorhuhnWinter.exe El juego se ejecutará sin ningún tirón y a una velocidad normal (ver Figura 5). Los otros juegos que hemos probado bajo Cedega, nos dieron mensajes de error y se colgaron cuando intentamos arrancarlos ya que sospecharon que Cedega atentaba contra el sistema de protección de copia. La versión comercial de Cedega tiene código que evita estos acontecimientos. Si quiere ejecutar juegos actuales, de copia protegida, no hay más remedio que optar por las versiones comerciales.


Wine • PORTADA

Figura 2: Aunque oficialmente no está soportado por Wine, Adobe Acrobat se muestra cooperativo.

Después de instalar una aplicación, se puede usar la solapa Menus en la ventana principal de Crossover o usar la línea de comandos para ejecutar la aplicación Windows:

Figura 3: Los pasos de instalación y configuración tienen lugar en la ventana principal de Crossover Office.

~/cxoffice/bin/acrobat

No tiene mucho sentido especificar la versión de Windows como entorno. Los programas Windows tenderán a ejecu-

tarse mejor si se mantiene las configuraciones por defecto. Las aplicaciones Windows que explícitamente necesiten NT 4 o NT 5 (Windows 2000), normalmente no se ejecutarán (o por lo menos


PORTADA • Wine

Figura 7: ¿Quién sabe si el icono de reiniciar significa una inicialización de Crossover o algo más drástico?

Cuadro 2: Wine no es un Emulador

Figura 4: El programa winecfg nos ayuda a configurar la instalación de Wine.

A diferencia de Wine, un emulador real crea un área aislada en la que simula un ordenador. Hay incluso que instalar un sistema operativo de forma separada para poder usar “esta máquina dentro de otra”. Se puede instalar y usar cualquier aplicación escrita para el sistema operativo de la máquina virtual. La pérdida de rendimiento debido a la sobrecarga de la simulación y el coste de la licencia (la máquina virtual necesita un sistema operativo completo) son las principales reticencias a esta solución. Wine implementa una alternativa lógica: en vez de simular el sistema operativo completo, se limita a simular un entorno que haga que las aplicaciones Windows se sientan en casa. Y esto nos lleva al nombre que se usa internamente en Wine, “Fake Windows”:

Figura 6: Tras completar la instalación simple, podemos configurar directamente Crossover Office.

no funcionarán bien) en Wine, como nos sucedió con nuestra prueba de Adobe Acrobat 6: El instalador inmediatamente falló. Por el contrario, Crossover Office tiene una solución simple para reiniciar Windows. Para ello, se teclea el siguiente comando: ./cxoffice/bin/cxreboot

La Figura 7 muestra una captura de pantalla del mensaje que aparece luego. Desde luego, el mensaje puede ser fácilmente incomprendido.

Conclusión Wine es un intento ambicioso para ejecutar aplicaciones nativas Windows en sistemas Unix. Como aplicación minimalista, Wine se restringe a sí misma a proporcionar un servicio de traducción entre el sistema operativo y la aplicación. La simplicidad del soporte tanto del hardware como del software es una de sus mayores ventajas. Crossover Office ayuda a los usuarios no técnicos de Linux a acceder a la potencia de Wine. Pero

# ls -a /home/user/.wine dosdevices fake_windows [...] Las aplicaciones que acceden a elemento específicos de Windows a menudo se estrellan contra un muro (virtual).

antes de comprarlo, se debería probar la versión de demostración de Crossover para asegurarse de que la aplicación Windows que se necesita realmente funciona. Si una aplicación no se ejecuta ni en Wine ni en Crossover, la única alternativa que resta es probarla en una máquina virtual, como la aplicación comercial ■ VMware o la gratuita Qemu.

RECURSOS [1] WineHQ: http://www.winehq.org/ [2] Paquetes de Wine: http://www. winehq.org/site/download

16

Número 07

WWW.LINUX-MAGAZINE.ES

[3] Codeweavers: codeweavers.com/

http://www.

[4] Transgaming: transgaming.com/

http://www.


WMware • PORTADA

El emulador de PC VMware Workstation 4.5.2 para Linux

PCS EN PCS

Acaba de publicarse la versión 4.5.2 del emulador comercial de PC VMware. Para muchos usuarios VMware es el PC virtual más destacado. En este artículo os contaremos las novedades de VMware Workstation 4.5.2 y enseñaremos como inicializar y hacer funcionar Linux en VMware. POR HAGEN HÖPFNER

A

pesar del éxito de la compatibilidad de aplicaciones basadas en WINE, es posible que tengamos la necesidad de emular todo el PC. Por ejemplo, puede ser que deseemos probar un programa Windows que no funciona en WINE, configurar un número de máquinas de prueba sin estar limitado por las tablas de partición, o simplemente probar su nuevo website usando unos cuantos sistemas operativos y navegadores. Si es así, una máquina virtual es la forma de conseguirlo.

Engaños A diferencia de los emuladores de API como WINE, VMware workstation emula un ordenador completo como un programa de software. El denominado sistema operativo invitado funciona dentro de la emulación VMware sin que pueda distin-

guir este entorno de un PC de verdad. VMware [1], la empresa del mismo nombre que está tras este producto (convertida en filial de EMC corporation en 2004), tiene versiones Linux y Windows del emulador. La versión en caja cuesta 199$ en la tienda VMware [2]. La versión para descarga cuesta solamente 10$ menos [3]. Para que la emulación ejecute cualquier cosa, con una velocidad aceptable, es necesario que el PC anfitrión sea bastante rápido. VMware recomienda un Pentium II o una CPU AMD equivalente, 256 MBytes de RAM, un adaptador gráfico de 16 bit y por lo menos 20 Mbytes de espacio libre en el disco duro para el software VMware. Por supuesto que habrá que añadir espacio en disco en el anfitrión para que esté disponible para el sistema invitado y una tarjeta de red;

WWW.LINUX-MAGAZINE.ES

suponiendo que el PC emulado necesite acceder a la red. Estas especificaciones deben considerarse como la configuración mínima necesaria para que VMware pueda hacer funcionar mínimamente como sistema invitado a cualquier producto de Microsoft, desde MS-DOS hasta Windows 2003 Server, la mayoría de las distribuciones principales de Linux, Novell Netware 5/6, Solaris 9/10 para x86 y FreeBSd. Pero extraoficialmente, VMware dará soporte a un amplio rango de otros sistemas operativos. El sistema engaña al SO invitado detectando el hardware listado en “Cuadro 1: Hardware emulado.” Nuestro laboratorio de sistemas utilizó para este artículo VMware para Linux 4.5.2 y un PC anfitrión con Suse Linux 9.1, una CPU AMD Athlon XP 1900+,

Número 07

17


PORTADA • WMware

Adquisición de VMware Como acabamos de mencionar, una licencia de VMware, no es exactamente barata. Si prefiere probar el emulador antes de invertir 199$, hay disponible una licencia de prueba durante 30 días. VMware solamente le pedirá que se registre Figura 1: VMWare nos permite ejecutar un sistema Windows compleantes de descarto dentro de su ordenador Linux. garla [3] y le enviara una clave de prueba por email. Los usuarios regis512 Mbytes de RAM, un adaptador gráfitrados pueden descargar un paquete rpm co basado en el chipset de NVIDIA y un fichero tar. en nuestro laboratorio GeForce MX4000 (con el controlador de usamos el paquete RPM, que se instala dispositivo comercial de NVIDIA) y un fácilmente tecleando su -c "rpm -Uhv adaptador WLAN.

Cuadro 1: Hardware emulado. VMware emula un PC completo con una plataforma hardware determinada. El hardware emulado no tiene nada que ver con el equipo que hace de anfitrión, ya que el sistema invitado solo ve los componentes virtuales.

• Anfitrión compatible con el adaptador de bus Mylex (BusLogic) BT958 (solamente sobre Windows XP con controladores de dispositivo adicionales) Medios extraíbles

Procesador:

• Unidades CD-ROM/CD-R/CD-RW (físicas o imágenes ISO)

• Intel Pentium o posterior

• Unidades DVD-ROM

• AMD Athlon o posterior (Dependiendo de la CPU original)

• Un máximo de 2 unidades de 1.44 Mbytes (físicas o como imágenes) Hardware gráfico

• Soporte experimental para las procesadores AMD64 y IA 32e RAM: • Hasta 3.6 GBytes dependiendo de la memoria física • Un máximo de 4 GBytes para todas las máquinas virtuales

• VGA y SVGA con BIOS VESA Puertos: • Hasta un máximo de 4 puertos serie (COM)

Unidades IDE:

• Hasta 2 puertos paralelos bidireccionales (LPT)

• Hasta 4 unidades IDE

• Dos controladores USB 1.1 UHCI

• Discos físicos y virtuales (máx. 128 GBytes)

• Teclado Windows de 104 teclas

• Unidades CD/DVD-ROM

Dispositivos de red:

Unidades SCSI: • Hasta 7 Unidades

• Un máximo de tres adaptadores de red virtuales (Ethernet)

• Discos físicos y virtuales (máx. 256 GBytes)

• Tarjeta de sonido compatible con AMD Pcnet PCI II

• Soporte de SCSI genérico

• Compatible con Sound Blaster Audio PCI (sin soporte para MIDI ni para joystick) BIOS:

• Soporte para escáneres, CD/DVDROM, unidades de cinta, etc. • Controlador de entrada salida LSI LOGIC LSI53C1030 Ultra320

18

Número 07

• Ratón PS/2

• Soporte para la versión 6 VESA BIOS de PhoenixBIOS 4.0 con DMI-v2.2/ SMBIOS

WWW.LINUX-MAGAZINE.ES

VMware-workstation-4.5.2-8848.i386.rp m". Si intenta lanzar el programa tecleando directamente vmware tras la instalación, recibirá el saludo de error mostrado en la Figura 2. VMware precisa que se lance el guión de configuración vmware-config.pl antes de utilizar el programa. El guión inserta el anfitrión y el emulador. El PC virtual accede en parte al hardware físico y necesita sus propios módulos del núcleo en el sistema anfitrión para hacerlo. VMware no tiene un módulo del núcleo precompilado para Suse Linux 9.1; en vez de eso el guión de configuración genera el módulo. Para hacerlo, necesita un compilador de C, que en Linux suele ser gcc. En Suse 9.1 el compilador está localizado en /usr/bin/gcc tal como nos indica whereis gcc.

Usa la fuerza… digoooo, la fuente El modulo VMware no se compilará a menos que se tengan las fuentes del núcleo actual. Suse tiene las fuentes en el paquete kernel-source, el cuál probablemente necesitaremos instalar y modificar para que se corresponda con el núcleo. Esto es fácil de hacer con la ayuda de YaST y así podremos pasar a preparar las fuentes: cd /usr/src/linux su -c "make cloneconfig && makeU prepare-all"

Tras completar estos pasos, tecleamos su -c vmware-config.pl para arrancar el guión de configuración. El guión le invita a leer y aceptar el acuerdo de licencia. Cuando el guión de configuración nos pregunta donde se almacenan los archivos de las cabeceras del núcleo simplemente pulsamos la tecla [ENTER] para aceptar la configuración predeterminada

Figura 2: Si se intenta ejecutar VMware, después de completar la instalación, sin haberlo configurado, se mostrará este mensaje de error.


del guión. Tras un breve instante, durante el cual el guión de configuración construye el binario, se nos preguntará si necesitamos la versión con capacidades de red de VMware. Si deseamos la versión con capacidades de red, además deberemos optar por el soporte de NAT y permitir que el guión asigne una subred privada.

Compartición de Disco y Red Contestamos “sí” cuando cuando nos pregunte Do you want to be able to use host-only networking in your virtual machines? (¿Desea habilitar la conexión del Anfitrión solamente a través de la red?), si queremos que esta variante de la red esté disponible más adelante. “Anfitrión sólo por red” significa que el PC emulado sólo puede tener acceso al sistema anfitrión a través de la red. El PC emulado puede utilizar la conexión a Internet del anfitrión con NAT o en modo bridge. En modo puente (bridge), el PC emulado se comporta como si estuviera conectado directamente a la LAN. Esto necesita una dirección IP propia que debe ser valida en la red local. Si quiere que VMware monte el sistema de archivos del anfitrión, el guión creara un dispositivo de red solo para el anfitrión (host-only). El guión solo necesita un nombre de usuario y contraseña para configurar Samba; sin embargo el usuario Samba debe ser un usuario normal en el anfitrión. Para añadir usuarios posteriormente, hay que ser root y teclear /usr/bin/vmware-smbpasswd vmnet1 -a username; donde vmnet1 es el dispositivo de red Samba.

Comienzo Tras completar la configuración, arranca vmware tal como se ve en la Figura 3. Ahora puede hacer clic en New Virtual Machine para lanzar el asistente. El asistente le pide que seleccione el sistema operativo invitado que se instalará, especificar el archivo que emulará el sistema de archivos y ajustar el tamaño del mismo. El resultado se puede apreciar en la Figura 4. Haciendo click sobre Start this virtual machine se iniciara el PC virtual. La máquina emulada aún no tiene un sistema operativo, hay que instalar el sistema operativo como si fuera un ordenador de verdad. Para instalar el sistema operativo invitado se debe insertar el CD de instalación en la unidad del anfitrión. Antes de iniciar el sistema, la versión no registrada de VMware le recordará que necesita un número de serie. Si se adquiere una licencia, ésta incluye un número de serie. El número de serie para la versión de prueba se envía por email. Introduzca el número de serie en la ventana, como muestra la Figura 5; la entrada del menú Help|Enter Serial Number le llevará al sitio correcto. @ZT Instalación del invitado En la versión de prueba, tuvimos que habilitar el soporte legacy de nuestro CD ROM para instalar directamente desde el CD. El elemento DVD/CD-ROM, que permite configurar esta opción, está situado en el menú Devices de la ventana del PC virtual. Si el programa de instalación le invita a entrar datos, primero debe estar seguro de que el PC emulado está usando su teclado y su ratón. Para verificar el teclado y el


PORTADA • WMware

Figura 3: La primera vez que arranca, VMware está desconfigurado. Se puede crear una nueva máquina virtual o cargar una configuración ya existente.

ratón, haga click en la ventana del emulador. En ese momento VMware secuestrará el teclado y el ratón; pero puede pulsar [Ctrl] y [Alt] simultáneamente para salir de esta jaula. Si está instalando Windows o Linux como sistema operativo invitado, es preferible que instale las herramientas de instalación [4]. Estas herramientas aceleran la salida gráfica, dan soporte de alta resolución y le dice a VMware que deje el ratón si lo arrastra fuera del borde de la ventana. Esto le ahorrará tener que estar pulsando continuamente [Ctrl] y [Alt]. El elemento del menú VM|Install VMware Tools... le indica a VMware que

Figura 4: El usuario ha decidido instalar Windows XP en la máquina virtual.

cargue un Cd simulado en la unidad de CD emulada. El controlador de dispositivo necesario está en el CD.

Cuidado con las Nuevas Distros En nuestro laboratorio, hemos sido incapaces de hacer funcionar VMware sobre Suse Linux 9.2. A pesar de haber completado las distintas fases de instalación y configuración tal como se ha descrito, VMware no ha colaborado mucho que digamos. El sistema anfitrión fue incapaz de configurar su adaptador USB WLAN y arrancar desde el CD dentro del PC virtual fue una cuestión de suerte.

Cuadro 2: Distribuciones Anfitrión La versión Linux de VMware funciona sobre un cierto numero de las principales distribuciones. Como VMware viene con sus propios módulos del núcleo, usar VMware en cualquier otra variante de Linux es complicado. Los fabricantes dan soporte a las siguientes distribuciones: • Mandrake Linux 9.0 (Núcleo 2.4.19)

• Red Hat Linux 8.0 (Núcleo 2.4.18) • Red Hat Linux 7.3 (Núcleo 2.4.18) • Red Hat Linux 7.2 (Núcleo 2.4.7-10, 2.4.9-7, 2.4.9-13, 2.4.9-21 o 2.4.9-31) • Red Hat Linux 7.1 (Núcleo 2.4.2-2 o 2.4.3-12) • Red Hat Linux 7.0 (Núcleo 2.2.16-22 o 2.2.17-14)

• Mandrake Linux 8.2 (Núcleo 2.4.186mdk)

• Suse Linux 9.1 (Núcleo 2.6.4-52)

• Red Hat Enterprise Linux 3.0 (Núcleo 2.4.21 or 2.4.21-15.EL)

• Suse Linux Enterprise (Núcleo 2.4.19)

• Red Hat Enterprise Linux 2.1 (Núcleo 2.4.9-e3)

• Suse Linux 8.2 (Núcleo 2.4.20)

• Red Hat Linux Advanced Server 2.1 (Núcleo 2.4.9-e3)

• Suse Linux 8.0 (Núcleo 2.4.18)

• Red Hat Linux 9.0 (Núcleo 2.4.20-8 o 2.4.20-20.9)

20

Número 07

8

Server

• Suse Linux 7.3 (Núcleo 2.4.10)

WWW.LINUX-MAGAZINE.ES

[1] Página de VMware: vmware.com/

http://www.

[2] Tienda VMware: http://www.vmware. com/vmwarestore/newstore/ [3] Página de descarga: http://www. vmware.com/download/workstation. html

• Suse Linux 8.1 (Núcleo 2.4.19)

• Suse Linux Enterprise (Núcleo 2.4.7 y parche 2)

VMware le hará saber si el sistema que se está intentando utilizar es demasiado nuevo. Antes de comenzar, debe echar una ojeada a la lista de las distribuciones Linux a las que se da soporte oficial (véase el “Cuadro 2: Distribuciones Anfitrión”) y hay que tomarse esta lista en serio. Si se decide intentar con un Linux que no está en el listado, descargaremos primero la licencia de prueba durante 30 días para cerciorarse de que VMware funciona de ■ correctamente con la distro elegida.

RECURSOS

• Suse Linux 9.0 (Núcleo 2.4.21-99) Server

Figura 5: VMware no funcionará hasta que se introduzca un número de serie correcto. Recibiremos un número de serie cuando compremos una licencia o al descargar la versión de prueba de 30 días.

7

[4] Herramientas VMware: http://www. vmware.com/support/ws4/doc/ new_guest_tools_ws.html


UML • PORTADA

Primeros pasos con User-Mode Linux

LINUX DENTRO DE LINUX

User-Mode Linux parece Linux porque es Linux. Encontraremos cientos de usos para este rápido y práctico sistema virtual de Linux. POR FABRIZIO CIACHI

E

l versatil y popular UserMode Linux (UML) [1] crea un sistema Linux completamente funcional en un host Linux. UML tiene numerosas aplicaciones en el mundo de Linux. Muchos desarrolladores confían en UML para probar sus aplicaciones sin poner todo el sistema en peligro. Los usuarios de Linux pueden ejecutar UML para experimentar con versiones del kernel sin tener que preocuparse de parches nuevos o experimentales. Los administradores de sistemas usan UML para probar configuraciones. Es posible incluso ejecutar varias ver-

siones de UML en el mismo equipo para simular una red.

¿Qué es User-Mode Linux? User-Mode Linux no es realmente un emulador, ni una API. La mejor manera de explicarlo es comenzar con un vistazo al papel del kernel de Linux. El kernel ejecuta procesos y se comunica con el hardware. Cuando un proce-

WWW.LINUX-MAGAZINE.ES

SeLinux dentro de UML Encontraremos un documento muy interesante que explica cómo configurar un sistema UML con SELinux en [15]. Un sistema UML con SELinux habilitado puede ser muy útil para crear servidores más seguros y probar los principios de SELinux sin poner el sistema en peligro.

Número 07

21


PORTADA • UML

Figura 1: Estructura habitual de procesos en Linux .

Esta orden instala el kernel UML y también otras utilidades. Con otros administradores de paquetes el proceso es igualmente simple, pero si aparecen problemas con estos, o tenemos problemas de memoria durante el arranque [2], podemos descargar un kernel Linux normal (recomendamos la versión 2.4.27 [3]) y el parche UML [4]. Podemos encontrar otros paquetes UML en [5]. Cuando

QEMU: Una buena alternativa

Figura 2: UML se ejecuta como un proceso. En esta figura, Proc1 se ejecuta en el sistema host Linux, mientras que Proc2 lo hace en un sistema virtual User-Mode Linux.

so quiere comunicarse con un dispositivo (por ejemplo para mostrar algo por pantalla, imprimir un documento o copiar un archivo a un disco), el proceso le pide al kernel de Linux controlar la comunicación con el hardware (ver Figura 1). User-Mode Linux es un kernel de Linux que se ejecuta como un proceso. La diferencia entre un kernel UML y un kernel ordinario es que el kernel UML no se comunica directamente con el hardware. En su lugar, los comandos pasan al kernel real del sistema que lo alberga, el cual controla la comunicación con el hardware. Debido a que el sistema virtual y el sistema host son ambos Linux con estructuras prácticamente idénticas, la comunicación pasa muy eficientemente del sistema virtual al host, requiriendo muy pocas cabeceras de abstracción o traducción.

Configurar UML Podemos instalar User-Mode Linux con el administrador de paquetes. Por ejemplo, con Debian necesitamos teclear las siguientes líneas como root: #apt-get installU user-mode-linuxU uml-utilitiesU kernel-patch-uml

22

Número 07

Si nuestro interés en UML es probar distribuciones Linux, podemos optar asimismo por el programa de emulación de sistemas QEMU [12]. QEMU (que está basado en Bochs [13]) es muy fácil de instalar, configurar y usar. Puede encontrar más información sobre QEMU en el artículo “Mundos Virtuales: Emulación de Sistemas con QEMU” en Linux Magazine #5, de abril de 2005 [14].

hayamos descargado los archivos del parche y el kernel (en el mismo directorio), abrimos un terminal y ejecutamos las siguientes órdenes: $ $ $ $ < $ $ $ $

bunzip2 linux-2.4.27.tar.bz2 tar -xvf linux-2.4.27.tar bunzip2 uml-patch-2.4.27-1.bz2 patch -p1 -d linux-2.4.27U uml-patch-2.4.27-1 cd linux-2.4.27 make menuconfig ARCH=um make linux ARCH=um strip linux

Después de completar con éxito estas órdenes,tendremos un arhivo llamado “linux” en nuestro directorio original. Este archivo es el kernel de User-Mode Linux que usaremos para arrancar el sistema virtual Linux. Para conseguir que UML funcione adecuadamente, necesitamos incluir

Tabla 1: Tipos de transporte Etherap, TUN/TAP Transportes usados para intercambio de paquetes entre el sistema virtual y el host real. Switch daemon Un transporte diseñado para la interconexión de redes virtuales con otros sistemas UML. Multicast Otro transporte diseñado para interconexión de redes virtuales Slip, slirp Transporte usado principalmente cuando Etherap o TUN/TAP no están dis ponibles o si no tenemos acceso como root a la configuración de redes del host. Pcap Un transporte que facilita una interfaz de red de sólo-lectura y es, por tanto, una buena opción para monitorización de redes.

Elegir emulación Quizás la mejor manera de entender las ventajas de UML es considerar que existen tres posibilidades en este tipo de software: *Emulación del software *Emulación del hardware *Sin emulación Bochs es uno de los sistemas de emulación del software más famosos. Su principal característica es emular la arquitectura hardware IA-32, llamada también x86 por encima del sistema operativo, ya sea Windows, MacOS o Linux. Dado que es el hardware lo que se emula, se puede instalar cualquier sistema operativo x86 sobre él (Linux, Windows, Dos y demás), pero la ejecución es muy lenta, ya que se necesita traducir cada instrucción del sistema operativo invitado al sistema operativo que lo alberga. La emulación del hardware consiste en

WWW.LINUX-MAGAZINE.ES

código compilado en la arquitectura hardware nativa. Un emulador hardware es más eficiente que el emulador software, pero necesita interceptar todas las llamadas al hardware. Esta solución tiene como gran desventaja que el código debe particularizarse para una arquitectura hardware que debe ser la misma tanto para el entorno del host como del alojado. Un ejemplo de este tipo de emulador es VMware [5], un sistema de emulación comercial. User-Mode Linux pertenece a esta última categoría. No necesita emular un hardware específico, sino que se comunica casi directamente con el hardware real. Las instrucciones pasan eficientemente desde el kernel de UML hasta el kernel del host. UML puede ejecutar código nativo, y alcanza un retardo de un 20% como máximo respecto de la ejecución del mismo código en el host.


UML • PORTADA

root_fs_toms1.7.205 [xterm 2]$ linuxU ubd0=uml_vm2.cow,U root_fs_toms1.7.205

Todas las modificaciones de los dos hosts virtuales se escribirán con sus respectivos archivos COW. En realidad, el sistema de archivos no se comparte, dado que ambas ejecuciones son independientes una de la otra. Al crear dos archivos COW es importante evitar el arranque del sistema de ficheros directamente (con ubd0=root_fs_XXX), por que cada archivo COW registra el tamaño y la marca de tiempo del sistema de archivos raíz, y cualquier modificación hará que los ficheros COW queden inutilizados. La sintaxis correcta para el siguiente reinicio, cuando tengamos un archivo COW es la siguiente: [xterm 1]$ linuxU ubd0=uml_vm1.cow [xterm 2]$ linuxU ubd0=uml_vm2.cow

Redes Virtuales y rReales

Figura 3: Arranque del sistema virtual UML.

otros dos elementos mas en el puzzle: un sistema de ficheros (una imagen comprimida de una partición de Linux que contenga todos los programas) y las utilidades UML. Para el sistema de ficheros raíz, podemos encontrar todas las imágenes disponibles en [6]. Necesitaremos descargar las utilidades UML desde [7] y teclear las siguientes órdenes: $ bunzip2 uml_utilitiesU _XXXXXXXX.tar.gz $ tar -xvf uml_utilitiesU _XXXXXXXX.tar $ cd tools $ make all $ make install DESTDIR=/

Ahora tenemos un directorio que contiene un sistema de archivos raíz. No olvidemos colocar el programa linux en un lugar donde podamos usarlo (si no lo hemos movido, estará aún en el directorio del linux-2.4.27). Tecleamos las siguientes órdenes para leer el sistema de archivos raíz: $ bunzip2 U root_fs_toms1.7.205.bz2

$ linux U ubd0=root_fs_toms1.7.205

El parámetro ubd0= le indica al sistema virtual que use el archivo especificado como el sistema de archivos raiz. Si todo ha ido bien, veremos el sistema virtual arrancando (véase Figura 3), y podemos entonces entrar en el sistema virtual con el nombre de usuario root y contraseña root.

Compartir el sistema de archivos raíz Podemos arrancar dos o más máquinas virtuales usando el mismo sistema de ficheros raíz. El driver udb0 usa un mecanismo llamado Copy-On-Write (COW), que lee el sistema de archivos raíz como un dispositivo compartido de sólo-lectura y guarda los cambios en un archivo privado de lectura/escritura (el archivo COW). Por ejemplo, si queremos arrancar dos máquinas virtuales (VM1 y VM2) con el mismo sistema de ficheros, necesitamos abrir dos sesiones de terminal y teclear las siguientes órdenes:

UML nos ofrece unas cuantas opciones interesantes para redes virtuales en sistemas Linux. Una vez tengamos nuestro sistema virtual UML listo y ejecutándose, puede que queramos experimentar la conexión entre el sistema virtual con su sistema host o con otros sistemas virtuales. Encontraremos una descripción exhaustiva de interconexión de redes con UML en [8]. La idea principal en la interconexión de redes con UML es que

[xterm 1]$ linuxU ubd0=uml_vm1.cow,U

WWW.LINUX-MAGAZINE.ES

Número 07

23


PORTADA • UML

Figura 4: Arranque del segundo sistema virtual UML.servicios de red disponibles.

eth<n>=U <transport>,<transport args>

Donde <n> representa la interfaz del host real (p.ej.: eth0) al que se conectará la máquina virtual. La explicación teórica de esto es que en Figura 5: Ficheros COW de dos máquinas virtuales UML. la máquina virtual UML hay un dispositivo eth0 que corresponde al dispositivo tap0 en el host real. Esta interfaz tap0 se conecta directamente a la interfaz eth0 del host real. Por lo tanto podemos teclear: linux ubd0=root_fs_slack8.1U eth0=ethertap,tap0,U fe:fd:0:0:0:1,192.168.0.254

Figura 6: Una máquina virtual UML con los servicios de red disponibles.

para permitir a UML configurar eth0 en la máquina virtual con su propia dirección IP. La dirección IP del tap0 real y el eth0 virtual puede ser la misma para simplificar la configuración. (Véase [8] para configuraciones de red más complejas). Necesitaremos configurar la interfaz en la máquina virtual (/etc/hosts, /etc/resolv.conf, /etc/network, etc.) para tener un acceso a Internet plenamente operativo en el entorno UML.

Conclusión User-Mode Linux nos permite una manera rápida y conveniente de crear sistemas virtuales Linux dentro de Linux. Podemos utilizar UML como herramienta para planificar, modelar, probar y buscar fallos en sistemas Linux. UML es también la base de muchos otros proyectos de código abierto y experimentos, así como de aplicaciones para negocios y servicios personalizados de hospedaje. Puede que User-Mode Linux no sea fácil de instalar y configurar, pero si somos capaces

24

Número 07

WWW.LINUX-MAGAZINE.ES

de ponerlo en marcha, le encontraremos ■ multitud de usos.

RECURSOS [1] Página de User-Mode Linux: http:// user-mode-linux.sourceforge.net [2] UML en hosts 2G/2G: http:// user-mode-linux.sourceforge.net/ UserModeLinux-HOWTO-4. html#2G-2G [3] Kernel Oficial de Linux 2.4.27: http:// ftp.ca.kernel.org/linux/kernel/v2.4/ linux-2.4.27.tar.bz2 [4] Parche UML para el kernel 2.4.27: http://prdownloads.sourceforge.net/ user-mode-linux/uml-patch-2.4.27-1. bz2 [5] Descargas UML: http:// user-mode-linux.sourceforge.net/ dl-sf.html [6] Lista de sistemas de archivos: http:// user-mode-linux.sourceforge.net/ dl-jails-sf.html [7] Utilidades UML: http://prdownloads. sourceforge.net/user-mode-linux/ uml_utilities_20040406.tar.bz2 [8] Configuración de redes en UML: http://user-mode-linux.sourceforge. net/networking.html [9] Compilación del kernel: http:// user-mode-linux.sourceforge.net/ compile.html [10] Depurado del Kernel: http:// user-mode-linux.sourceforge.net/ debugging.html [11] Sesión de depurado UML: http:// user-mode-linux.sourceforge.net/ debug-session.html [12] Página de QEMU: bellard.free.fr/qemu/

http://fabrice.

[13] Página de Bochs: sourceforge.net

http://bochs.

[14] Artículos obre QEMU: http://www. linux-magazine.es/issue/05 [15] SELinux y UML: http://www. golden-gryphon.com/software/ security/selinux-uml.xhtml

EL AUTOR

nos facilitan distintas opciones en la capa de transporte para la administración de paquetes entre el sistema virtual y su host. La tabla 1 muestra algunos de los tipos de transporte disponibles en UML. Para habilitar un dispositivo de red en la máquina virtual, le pasamos una cadena como la siguiente en la línea de comandos del kernel:

Fabrizio Ciacchi (http://fabrizio. ciacchi.it – fabrizio@ciacchi.it) es un estudiante italiano de Ciencias de la Computación en la Universidad de Pisa. Sus actividades principales son estudiar Linux, desarrollar páginas Web con PHP y programar en Java. Trabaja también como consultor para distintas compañías y escribe artículos sobre Linux.


Active Directory • PORTADA

Active Directory en Linux

DIRECTORIOS INTELIGENTES Hace mucho, mucho tiempo, en una galaxia muy, muy lejana, el mundo del software libre y el de Microsoft se encontraban aislados. Pertenecías a una red o a la otra, pero no a ambos. Entonces a un pequeño grupo de valientes pensaron que esto podía arreglarse. Así nació Samba.. POR JOSE MARÍA RUÍZ

A

comienzos de 1992 Andrew Tridgell, un ingeniero informático australiano que se encontraba realizando sus estudios de doctorado, se encontró con un problema. Trabajaba en una máquina UNIX (Linux estaba aún en la mente de Linus Torvalds) y necesitaba montar en una máquina MSDOS un directorio de su UNIX a través de la red. Lo había hecho hasta entonces usando NFS, pero ahora necesitaba que funcionase sobre NetBIOS.

Se armó de paciencia, programó un filtrador de paquetes y comenzó a realizar pruebas para poder replicar el comportamiento del protocolo de Microsoft. NetBIOS es la base de la tecnología de Microsoft para compartir ficheros a través de red. Cuando consiguió un programa que le permitió realizar esta hazaña lo liberó. Eran los primeros 90 y lo que sería Samba daba sus primeros pasos. Ese pequeño programa pasó inadvertido, incluso para el propio Andrew, hasta

WWW.LINUX-MAGAZINE.ES

1994. En ese entonces quiso conectar el equipo con Windows de su mujer al suyo, que ejecutaba Linux. Se acordó del pequeño servidor que programó dos años antes y lo probó. Para su sorpresa ¡funcionaba! Investigó un poco y descubrió que los protocolos NetBIOS y SMB, que usan las máquinas de Microsoft, estaban documentados aunque se dejaban muchos parámetros sin especificar. Decidió realizar una programa serio, ahora que tenía

Número 07

25


PORTADA • Active Directory

la experiencia necesaria. Y, como uno de sus primeros pasos, Andrew buscó nombre para el proyecto. Escogió smb, pero entonces se percató de que estaba registrado. Así que ni corto ni perezoso introdujo smb en un editor de textos y esperó que el corrector ortográfico decidiese por él. La primera palabra que apareció fue Samba y así fue llamado desde entonces. Samba ha crecido sin parar desde entonces, añadiendo más funcionalidades y batiendo en numerosas ocasiones al propio software de Microsoft en cuanto a seguridad y rendimiento. El nombre del proyecto Samba apareció en los famosos documentos de Halloween donde Microsoft se quejaba del daño provocado por los proyectos libres. Samba cuenta ahora con gran cantidad de programadores voluntarios, tiene una conferencia anual (Samba eXPerience) y el apoyo de grandes empresas como Silicon Graphics, Novell o IBM.

La Situación Actual Samba ha ido amoldándose a la situación a medida que Microsoft añadía funcionalidades o modificaba sus protocolos. En un principio Samba permitía a una máquina Linux compartir directorios con una máquina Windows. Era el famoso compartir carpeta. Posteriormente fue posible montar carpetas compartidas por máquinas

Cuadro 1: smb.conf para configuración local 01 [global] 02 workgroup = MIGRUPO 03 netbios name = MILINUX 04 server string = Pruebas con Samba 05 security = user 06 wins support = yes 07 os level = 33 08 local master = yes 09 10 winbind use default domain = yes 11 winbind separator = / 12 13 [datos] 14 path = /usr/local/datos 15 comment = Mis datos 16 writable = yes

26

Número 07

Figura 1: Esquema típico de una red Linux.

Windows como directorios en equipos Linux. De esta manera el acceso a su contenido era como el acceso a un directorio local. También se añadió la posibilidad de usar impresoras remotas o compartir las propias. Microsoft, ya por aquel entonces, comenzó a explotar el filón empresarial con la versión NT de su sistema operativo. Windows NT incorporaba la posibilidad de gestionar el acceso a las máquinas Windows NT o 95 a través de los dominios. La gente de Samba decidió pasar a la acción y trabajó intensamente en la replicación de este servicio. Sus esfuerzos fueron recompensados y fue posible registrar a una máquina Samba en una máquina NT en esta tarea. Al poco tiempo, entre 1999 y el año 2000, hubo un fork (una escisión) y se creó un proyecto paralelo denominado Samba TNG. La misión de este otro proyecto, que comparte gran parte del código de Samba, es realizar un reemplazo total de las características de Windows NT como controlador de dominio. Samba TNG ha ido apagándose poco a poco, y aunque persisten algunos de sus colaboradores muchos lo dan por abandonado. La gente de Samba avanzó por su cuenta, siguiendo otros criterios. En septiembre del 2003 se pudo registrar una

WWW.LINUX-MAGAZINE.ES

máquina Samba en una máquina Active Directory. Y a finales de 2003, en diciembre, se consiguió replicar completamente un dominio Windows NT, incluyendo la migración de usuarios y claves. Samba estaba entonces en la versión 3.0.x. Samba podía sustituir a un Windows NT Server completamente. Esto supuso un boom, puesto que muchas empresas se interesaron por la tecnología ya que así se ahorraban licencias, bastante caras, de Windows NT Server. Pero la gran desventaja de Samba es que siempre va unos pasos por detrás de Microsoft. Este seguimiento continuo ha llevado a un código fuente difícil de mantener y de cambiar. Por eso Andrew Tridgell y otros se han lanzado al desarrollo de Samba4: una reescritura parcial de Samba3 buscando la modularidad y el reemplazo total de una máquina Active Directory.

Primeros pasos con Samba Lo primero que haremos será instalar Samba. La manera de hacerlo dependerá de la distribución que usemos. Puede que tengamos que descargar el paquete o que exista una herramienta que lo instale por nosotros. Hay que asegurarse de instalar tanto el servidor de Samba como las herramientas cliente. Existen


algunas distribuciones que los separan en dos paquetes. Una vez instalado Samba tenemos que localizar el archivo de configuración. Generalmente está en \texttt{/ etc/smb.conf}. El fichero de configuración de Samba es muy complejo debido a la cantidad de opciones que ha ido acumulando con el tiempo. Solo veremos un conjunto de esas opciones, pero nos permitirán compartir una serie de directorios con máquinas Windows.

smb.conf La sintaxis del fichero de configuración de Samba, el fichero smb.conf, no es muy complicada. Se divide en secciones, y cada una de ellas tiene un nombre. Algunas secciones son obligatorias y tienen nombres específicos mientras que otras son opcionales. El aspecto general será así: [sección 1] clave1 = valor1 clave2 = valor2 [sección 2] clave3 = valor3

Dentro de cada sección, como podemos observar, hay una serie de lineas en las que se relaciona una entrada o clave con un valor. De esta manera establecemos los parámetros en Samba. Estos ficheros pueden volverse muy grandes, por eso es posible incluir comentarios. Los comentarios comienzan con ; y se extienden hasta el fin de la línea. [global] ; Esta sección es muyU importante ; ...

Configuración Global La primera sección que debe aparecer es [global]. En ella, como podemos ver por el nombre, configuramos el comportamiento global de Samba. Las redes Windows, antes de la llegada de los sistemas Windows NT, se separan en grupos de trabajo y cada máquina pertenece a uno y sólo uno. Las máquinas también tienen nombres que podemos ver cuando exploramos los grupos de trabajo. Es lo primero que configuraremos:

[global] workgroup = MIGRUPO netbios name = MILINUX

Bueno, ya tenemos nombre y pertenecemos a un grupo. Ahora toca establecer la seguridad. Existen varias maneras de controlar el acceso a un directorio compartido: • Control por usuario • Control por máquina • Control delegado en dominio • Control delegado en Active Directory En los dos primeros es nuestra máquina que controla el acceso y en los dos últimos otra máquina. Como buscamos algo sencillo usaremos autentificación basada en usuario. Cuando hacemos esto, la persona que intente acceder a uno de nuestros directorios compartidos verá aparecer una ventana que le preguntará su nombre de usuario y su clave. Este usuario y esta clave son gestionados por Samba, como veremos luego, pero deben relacionarse con un usuario local de la máquina donde se ejecuta Samba. Éste es el gran problema resuelto por Samba. Cuando un usuario de Windows crea un directorio en uno de nuestros directorios compartidos con Samba… ¿qué permisos y a quién pertenecerá ese directorio? En Windows el control de permisos y propietarios en los ficheros es mínimo. De hecho ni siquiera es excluyente. Si digo que un fichero pertenece a Pepe el usuario Juan puede hacer lo que quiera con él. Este sistema tan inseguro fue eliminado por Microsoft al introducir NTFS y el control estricto de permisos en sus sistemas NT y 2000. Lo que Samba hace es establecer una relación entre el usuario de red Windows y un usuario local. Por ejemplo, podemos relacionar todos los usuarios que accedan al directorio compartido Finanzas con el usuario finanzas que hemos creado en Linux. Cada fichero en ese directorio tendrá como propietario a finanzas, a pesar de que el usuario que lo está haciendo se ha registrado al acceder al directorio como JoseManuel. Por tanto, pondremos: security = user

Configuraciones Locales Con sólo 3 parámetros ya hemos definido unas cuantas opciones básicas, ahora

WWW.LINUX-MAGAZINE.ES


PORTADA • Active Directory

vamos a compartir algo. Digamos que hemos creado el directorio \texttt{/usr/ local/datos} y queremos que otros puedan acceder a él desde sus máquinas Windows. Tenemos que crear una sección para este directorio, la llamaremos [datos]. Todo directorio compartido en una red Windows, share en argot Microsoft, debe tener un comentario que lo defina. Así que pondremos uno:

Cuadro 2: Creación del usuario de prueba 01 [josemaria@localhost josemaria]# pdbedit -a prueba 02 new password: 03 retype new password: 04 Unix username: prueba 05 NT username: 06 Account Flags: [U ] 07 User SID: S-1-5-21-2193370309-2470947842 -1102485009-2004 08 Primary Group SID: S-1-5-21-2193370309-2470947842 -1102485009-2005 09 Full Name: 10 Home Directory: \\milinux\prueba 11 HomeDir Drive: 12 Logon Script: 13 Profile Path: \\milinux\prueba\profile 14 Domain: MILINUX 15 Account desc: 16 Workstations: 17 Munged dial: 18 Logon time: 0 19 Logoff time: Fri, 13 Dec 1901 21:45:51 GMT 20 Kickoff time: Fri, 13 Dec 1901 21:45:51 GMT 21 Password last set: Thu, 28 Apr 2005 09:35:12 GMT 22 Password can change: Thu, 28 Apr 2005 09:35:12 GMT 23 Password must change: Fri, 13 Dec 1901 21:45:51 GMT 24 Last bad password : 0 25 Bad password count : 0 26 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF 27 [josemaria@localhost josemaria]#

28

Número 07

[datos] comment = MisU datos compartidos

Si ejecutásemos el servidor de Samba ahora aparecería una máquina llamada MILINUX en el grupo de trabajo MIGRUPO. Podríamos entrar en ella, y veríamos una carpeta datos pero no podríamos entrar en ella. ¿Qué nos falta? Pues el sitio en el que realmente existe esa carpeta. El famoso “What you see is what you get” (Lo que ves es lo que tienes) no se aplica al mundo de Samba ;). A pesar de ver una carpeta compartida datos, esa carpeta no existe. Al menos hasta que nosotros lo configuremos correctamente. Esto se hace mediante el parámetro path: path = /usr/local/datos

Ahora sí será posible acceder, pero antes tenemos que configurar el usuario o usuarios que podrán acceder a ella. Cuando realizamos la configuración global establecimos criterios que afectan a todos los recursos compartidos, a menos que se especifique algo más concreto en los mismo. El resto de parámetros, que podemos observar en el Cuadro 1, son para permitir el uso de WINS (una especie de DNS que usa Microsoft) y para indicar el “tipo de Windows” que somos (en este caso un Windows NT Server). Samba nos da la posibilidad de usar gran cantidad de mecanismos para guardar a los usuarios. Tenemos desde simples ficheros de texto donde listamos qué usuario local corresponde con qué usuarios de Samba hasta bases de datos como Postgres o incluso LDAP. También podemos usar un mecanismo que el propio Samba nos proporciona usando una especie de base de datos de usuarios. En Samba4 habrá un enfoque unificado para este tema. Como buscamos simplicidad, no especificaremos el backend para almacenar los usuarios, lo que significa que dejaremos que sea Samba quien lo elija.

Primer Arranque Y ahora, después de tanta ceremonia, vamos a arrancar el servidor de Samba y a realizar unos cuantos experimentos. Para ello ejecutaremos el servidor de Samba, que de nuevo depende de la distribución de Linux que usemos. Generalmente requerirá ejecutar el dae-

WWW.LINUX-MAGAZINE.ES

mon smbd, en el caso de Mandrake consigue ejecutando como root: # /etc/init.d/smb start

Con esto ya deberíamos tener el servidor de Samba funcionando, pero no hemos creado usuarios Samba. Este proceso es muy simple, se realiza empleando el comando pdbedit que viene con Samba (ver cuadro “Creación del usuario prueba”): He puesto toda la salida para que no os asustéis al verla. Solo es información de configuración para ese usuario, en nuestro caso la configuración por definición. El usuario prueba debe existir previamente en Linux, en caso contrario tendremos que indicarlo al ejecutar pdbedit de manera que pueda relacionar el usuario Samba con algún usuario de Linux. Es necesario darle permisos al directorio [datos] para que el usuario correspondiente en Linux a “prueba” (en nuestro caso también se llamará “prueba”) pueda escribir sobre él. Con esto ya tenemos la configuración básica. Ahora vamos a comprobar que todo está bien. Vamos a listar los servicios que ofrecemos (ver cuadro “Consulta a nuestro propios servidor”). Podemos ver como aparece el directorio datos que compartimos, pero también otros recursos como IPC$ o ADMIN$. No nos debemos preocupar por ellos, entrar en los detalles de su utilidad ¡nos llevaría casi un libro! Ahora vamos a realizar una prueba accediendo por red al directorio compartido datos y copiando algo en su interior. Como se puede ver en las Figuras 2 y 3, nuestro ordenador con Samba y el directorio aparecen dentro de la red de Windows como el resto. Cuando intentamos acceder nos saldrá una pantalla de Login donde tendremos que registrarnos como usuario prueba. Y ya podemos crear, modificar, borrar y copiar ficheros en nuestro directorio compartido desde una máquina Windows. Si queremos tener un control más exhaustivo, por ejemplo permitir que algunos usuarios solo puedan leer mientras otros tengan control total, deberemos especificarlo en smb.conf. La manera más sencilla es hacer que el directorio compartido solo pueda ser leído:


Active Directory • PORTADA

Figura 2: Vemos a nuestro equipo, Milinux, dentro de la red de Windows.

read only = yes ; o writable = no

La opción writable = no es equivalente a read only = yes. Pero si ponemos writable = yes o read only = no entonces permitimos tanto la lectura como la escritura. Es un poco lioso por lo que recomiendo que se use writable o read only y no mezclar. Podemos ser más restrictivos solo permitir que puedan leer el directorio algunos usuarios. valid users = prueba

De esta manera sólo el usuario prueba puede acceder al directorio que hemos compartido. Podríamos entrar en más detalles, pero requeriría muchas más páginas. Con esta configuración mínima podemos ya compartir con los ordenadores de una red Windows uno o varios directorios y controlar el acceso desde nuestra máquina.

Active Directory Microsoft ha realizado una gran campaña de publicidad alrededor de su tecnología Active Directory y, la verdad, es que no conozco mucha gente que sepa lo que es realmente esa cosa llamada “Active Directory”. Active Directory es un sistema que permite gestionar el acceso a los objetos de una red de manera centralizada. Estos objetos pueden ser muchas cosas: usuarios, máquinas, impresoras o ficheros. Ahora imaginemos una red de cierto tamaño, digamos 100 máquinas. Tenemos que administrarlas y entre nuestras funciones estaría el gestionar el acceso a los ficheros de todas las máquinas. Ya puestos no estaría mal

que me pudiese sentar en cualquiera de las 100 máquinas, introducir mis datos y que allí apareciese mi escritorio. Esto puede ser una pesadilla para cualquier administrador de sistemas. Pero esto también es lo que Active Directory promete realizar. Para ello Active Directory necesita realizar varias funciones: • Tiene que proporcionar un mecanismo para mantener seguras las comunicaciones. • Debe llevar un control de los usuarios del sistema. • Debe llevar un control de las máquinas de la red. • Debe llevar un control de los ficheros en cada máquina. Estas funciones las realizan varias máquinas en las redes UNIX. Por ejemplo, la identificación distribuida se realiza con NIS/NIS+ y el control de las máquinas de la red con una mezcla de DHCP y DNS. Las máquinas Active Directory hacen todo estoy y también gestionan otros recursos como la sincronización horaria (NTP).

Configuración de Samba para Active Directory El uso de Active Directory y Samba es un tema candente en muchos foros. La idea de poder delegar la autenticación en una máquina Active Directory hace que Samba entre en la nueva era de las redes Microsoft. Antes dimos una descripción un poco simplista sobre lo que es y hace Active

Figura 3: Cuando nos pida la clave tenemos que darle la que introducimos al crear al usuario “prueba”.

Directory, la realidad es mucho más complicada. Active Directory se basa en un diseño enorme con el que Microsoft pretende atacar el problema de la administración de redes cada vez más grandes. El equipo de Samba siempre ha tenido en la mira a Active Directory, pero una serie de problemas tecnológicos les han apartado de la simulación total. El primer problema es el propio Samba. Con un código fuente que adolece de más de 10 años de desarrollo continuo no se pueden hacer demasiados experimentos. Por ello el equipo se ha centrado en Samba4 que incorpora la reescritura desde cero, con un diseño más lógico, de la mayoría de código. Aún así han ido introduciendo poco a poco en versión 3 algunas de las tecnologías que permiten al sistema interactuar con Active Directory. Active Directory deja absolutamente anticuado al anterior diseño de Microsoft.

Cuadro 3: Consulta a nuestro propio servidor [josemaria@localhost lib]# smbclient -L //localhost -U prueba Password: Domain=[MILINUX] OS=[Unix] Server=[Samba 3.0.15pre2-SVN-build-] Sharename Type Comment -----------------datos Disk Mis datos IPC$ IPC IPC Service (Samba 3.0.15pre2-SVN-build-) ADMIN$ IPC IPC Service (Samba 3.0.15pre2-SVN-build-) Domain=[MILINUX] OS=[Unix] Server=[Samba 3.0.15pre2-SVN-build-] Server Comment --------------Workgroup Master --------------[josemaria@localhost lib]#

WWW.LINUX-MAGAZINE.ES

Número 07

29


PORTADA • Active Directory

Cuadro 4: Configuracion para Active Directory 01 [global] 02 workgroup = MiDominio 03 netbios name = Pruebas-AD 04 security = ads 05 wins support = yes 06 winbind use default domain = no 07 realm = midominio.com 08 password server = srv.midominio.com 09 10 [datos] 11 path = /usr/local/datos 12 comment = Directorio de prueba 13 writable = yes

30

Número 07

Figura 4: Tipos de interacción con Active Directory.

buen tiempo, y se debe a que Samba aún no es capaz de auto-detectar la presencia de una servidor Active Directory. El realm es el mismo que establezcamos en la configuración de Kerberos y se suele corresponder con el dominio que establezca Active Directory, mientras que password**server tiene que ser la IP o nombre de la máquina que se encarga de las autentificaciones en nuestra red Active Directory. Con esta simple configuración conseguimos que nuestro Samba esté preparado para funcionar con Active Directory, así que volvemos a arrancar Samba. Existe un paso intermedio aún. Aunque estemos configurados para funcionar con Active Directory tenemos que unirnos al dominio. Para ello ejecutamos: [josemaria@localhost ~]# net adsU join -U Administrador@MIDOMINIO.COM password: [josemaria@localhost ~]#

Cuando realizamos esta acción nuestra máquina se registra en el servidor Active Directory y debería aparecer, puede tardar unos segundos debido al cacheo que realiza Active Directory, en el dominio

WWW.LINUX-MAGAZINE.ES

configurado. Si todo ha ido bien, al ejecutar net ads user -U Administrador@MIDOMINIO.COM deberíamos obtener un listado con todos los usuarios de Active Directory. Con net ads info -U Administrador@MIDOMINIO.COM podremos obtener información genérica sobre el servidor Active Directory.

Conclusión Aunque el soporte de Samba3 es muy reciente, y por tanto posee fallos, el proyecto Samba se mueve a pasos agigantados hacia la emulación total de un servidor Active Directory. A Samba4 aún le queda tiempo, dicen que un año y medio, pero puede que esté ahí cuando Microsoft lance una versión para servidor de su famoso Longhorn. Entre la gente que querrá obtener la primera copia seguro que habrá unos cuantos ■ colaboradores de Samba.

EL AUTOR

El sistema de autentificación y listado de recursos es nuevo. Esto ha supuesto un reto, puesto que el equipo de Samba localiza los cambios filtrando los paquetes de la red cuando las máquinas Windows están realizando operaciones. La primera sorpresa, aunque fue ampliamente publicitado por Microsoft, fue el uso de Kerberos como protocolo de autentificación. Por ello es muy importante que tengamos alguna de las implementaciones de Kerberos instaladas. La configuración de cada una de ellas es distinta, pero el fin es el mismo: hacer que la máquina Active Directory sea la entidad emisora de certificados. Una vez que Kerberos esté correctamente configurado pasaremos a configurar nuestro servidor Samba. Es importante tener las versión más moderna posible de Samba. Los cambios en el código fuente se están sucediendo con rapidez durante los últimos meses. El fichero de configuración tendrá la forma que se ve en el cuadro “Configuración para Active Directory”: Como podemos ver la configuración de [datos] no ha cambiado. Son los parámetros globales, y los de autentificación en particular, los que tenemos que cambiar. El modo de autentificación, el parámetro security, pasa a ser ads. Este modo es temporal, aunque probablemente esté en Samba3 durante un

José María Ruiz es programador de sistemas y director de proyectos en Animatika, una empresa dedicada al software libre, mientras intenta acabar su proyecto fin de carrera en Ingeniería Técnica Informática de Sistemas.


Mac en Linux • PORTADA

Mac Os X en Linux

PEDIR MANZANAS AL OLMO

emerge mol. Yellow Dog incluye el programa por defecto. Hemos usado la distribución Ubuntu para el procesador PowerPC, puesto que nos resultó imposible arrancar una interfaz gráfica ni con Gentoo ni con la distribución comercial Yellow Dog en nuestro iBook G4/800 con el chip gráfico Radeon Mobility 9200. El instalador de Ubuntu trabaja con el gestor de paquetes de Debian apt-get, que descarga los archivos de Internet. Macon-Linux necesita algunos módulos del kernel para PPC Linux, y tendremos que compilarlos nosotros mismos. Compilar estos módulos significa instalar algunas herramientas, si es que no están ya instaladas. Con las siguientes órdenes descargamos los paquetes y los instalamos: sudo apt-get install build-U essential linux-headers-2.6-U powerpc

Gracias a los emuladores los usuarios ya pueden ejecutar su querido Mac OS X bajo Linux, permitiendo un reencuentro entre hermanos. POR OLIVER FROMMEL

L

a manera más fácil de ejecutar programas para Mac en Linux es el software libre Mac-on-Linux [1]. Mac-on-Linux no ofrece emulación hardware, por lo que requiere un ordenador Apple. Mac-on Linux soporta teóricamente otras aquitecturas PowerPC [2], como Pegasos [3], pero instalar el sistema operativo de Apple, Mac Os, en estas arquitecturas supone incumplimiento de la licencia.

Linux para Apple Podemos usar Mac-on-Linux en cualquier ordenador Apple. Obviamente, nuestra distribución tendrá que soportar el procesador PowerPC [4], cosa que permiten Fedora Core 3 [4], Gentoo [6], Debian [7], Ubuntu [8] y Yellow Dog [9]. Mac-on-Linux no emula hardware, sólo pasa comandos a la CPU. También ofrece

drivers de dispositivos que se han optimizado para esta aplicación, de manera similar a Vmware, lo cual explica que Mac-on-Linux vaya más rápido que un emulador.

Mac Os como Programa Linux

Si nos pide un password, tecleamos el password de usuario normal, dado que Ubuntu no tiene por defecto una cuenta de administrador (véase [8]). Por tanto, los usuarios pueden ejecutar órdenes que necesitan normalmente privilegios de root cuando usamos sudo. Desafortunadamente, el repositorio estándar de Ubuntu no incluye los archivos, por lo que necesitaremos añadir el repositorio Multiverse previamente, que incluye paquetes que no forman parte de la distribución estándar. Para ello debemos añadir las líneas especificadas en el cuadro 1 a /etc/apt/sources.list. A continuación actualizamos la caché local con el nuevo repositorio tecleando sudo apt-get update. Seguidamente instalamos el código fuente de los módulos del kernel para Mac-on-Linux:

Mac-on-Linux arranca un sistema operativo Apple como un programa en Linux. En nuestro ejemplo usaremos Mac OS X, pero Mac-on-Linux también ejecuta versiones anteriores, como System 9, que aún estén bastante extendidas. Los usuarios de Gentoo pueden descargar y compilar Mac-onFigura 1: Si arrancamos Mac-on-Linux con la opción --loadonly se Linux de la manera típimuestran los módulos requeridos. ca en Gentoo: usando

WWW.LINUX-MAGAZINE.ES

Número 07

31


PORTADA • Mac en Linux

Cuadro 1: Líneas a añadir a /etc/apt/sources.list 01 deb http://archive.ubuntu.com/ubuntu warty multiverse 02 deb-src http://archive.ubuntu.com/ubuntu warty multiverse

sudo apt-get install mol modules- source

Lanzamos un editor para abrir una cabecera de un fichero en C de este paquete, y poder así borrar un error que de otra manera impide la compilación de los módulos. Podemos usar alternativamente otro editor de texto, reemplazando vi con el nombre del otro editor que prefiramos. sudo vi /usr/src/linux- U headers-2.6.8.1-4-powerpc/ U include/asm/setup.h

Borramos la línea que contiene #include <asm-m68/setup.h> y guardamos el archivo de nuevo. Nos vamos al directorio con el código fuente de Linux y descomprimimos el archivo que apt-get ha guardado allí. cd /usr/src sudo tar xzvf mol-modules.tar.gz

Necesitamos configurar algunas variables de entorno para asegurarnos que los módulos concuerdan con nuestra versión del kernel: export KVERS="$(uname -r)" export KSRC="/usr/src/linux headers-$(uname -r)" export KDREV="ubuntu0"

Desde el subdirectorio Mac-on-Linux ejecutamos el script de compilación: cd modules/mol sudo debian/rules build

Tras unos instantes, debe concluir la compilación. Ahora podemos crear un paquete Debian con los archivos que hemos generado: sudo debian/rules binary-U mol-modules

El resultado final debe aparecer en /usr/src. Nos vamos a ese directorio y hacemos la instalación del sistema desde allí:

32

Número 07

sudo dpkg -i mol-modules-U 2.6.8.1-3-powerpc_0.9.70+U ubuntu0_powerpc.deb

Con esto terminamos la preparación previa, y podemos continuar con la instalación del resto de paquetes de Mac-onLinux: sudo apt-get install mol mol- U drivers-macosx

El gestor de paquetes resuelve las dependencias e instala mol y mol-drivers-linux, y también mol-drivers-linux, el cual usaremos sólo si queremos ejecutar una versión PPC de Linux con Mac-on-Linux. Si especificamos -loadonly al lanzar el programa, nos indica si el módulo del kernel está cargado (véase Figura 1). El error más frecuente es tener versiones de kernel y módulo que no concuerden. Aunque el parámetro -a permite diferentes números de versiones, no debemos esperar que la configuración funcione si los números no concuerdan. Tras cargar el módulo, podemos pasar a la configuración gráfica. Con sudo molvconfig lanzamos el programa necesario, que trata de encontrar los modos por sí sólo, o bien permite configurarlos manualmente. En nuestras pruebas ambos modos funcionaron bien con las configuraciones por defecto. El comando starmol nos ayuda a organizar las asignaciones de teclado. El parámetro -keyconfig lanza un programa interactivo que muestra el nombre de la tecla (por ejemplo Return o Apple-Key) y nos pide que la tecleemos. Una vez terminemos la configuración, podemos arrancar Mac Os X en una ven-

tana tecleando sudo startmol -X. Automáticamente aloja la instalación en el disco duro y arranca el sistema. Macon-Linux usa una ventana de terminal para mostrar los mensajes que se produzcan durante en arranque. Estos mensajes se almacenan permanente en un archivo en /var/log, y deberemos mirarlos si algo va mal.

Túnel de Red Configurar la red es algo más complicado y, desafortunadamente, no tenemos un asistente que nos indique el camino. Podemos empezar habilitando la interfaz del túnel en /etc/mol/molrc.net. Esta interfaz carga automáticamente en módulo del kernel adecuado y le asigna una dirección IP. Para habilitar la interfaz del túnel tenemos que borrar el # de la línea netdev:tun0 -tun. La línea de mensajes debe mostrar algo como Ethernet Interface 'tun-<tun0>' @ 00:00:0D:EA:DB:EE. Aparece un nuevo disco en Mac OS X. Podemos abrirlo haciendo doble clic. Contiene unos drivers especiales que Mac OS X necesita para acceder a la red desde el modo emulación. Para instalar los drivers, pulsamos sobre el paquete Pkg y seguimos las instrucciones. Probablemente querremos usar Macon-Linux para acceder tanto a la red local como a Internet. Para derivar tráfico a Mac-on-Linux, necesitamos editar el script /etc/mol/tunconfig, que lanzamos desde startmol. La versión por defecto de tunconfig lanza un servidor DHCP y usa iptables para mapear direcciones IP. En nuestro laboratorio usamos un tunconfig alternativo con una dirección IP estática (véase Cuadro 2). En Mac OS X, asignamos la dirección IP 192.168.40.2 a la interfaz de red en3 y la dirección 192.168.40.1 al router. Una vez hayamos terminado esta compleja configuración, Mac-on-Linux tendrá acceso a Internet.

Cuadro 2: /etc/mol/tunconfig 01 #!/bin/bash 02 /sbin/ifconfig tun0 192.168.40.1 03 /sbin/iptables -D POSTROUTING -t nat -s 192.168.40.0/24 -d ! 192.168.40.0/24 -j MASQUERADE 04 /sbin/iptables -t nat -s 192.168.40.0/24 -d ! 192.168.40.0/24 -A 05 POSTROUTING -j MASQUERADE 06 /sbin/iptables -t filter -P FORWARD ACCEPT 07 echo 1 > /proc/sys/net/ipv4/ip_forward

WWW.LINUX-MAGAZINE.ES


Mac en Linux • PORTADA

Figura 2: Navegación con Mac OS X en una ventana de Linux.

El acelerador Para lanzar Mac-on-Linux a pantalla completa en las X, necesitamos modificar un archivo llamado /etc/mol/molrc.video. En la línea enable_xvideo:..., cambiamos el valor de yes a no. Este valor hace que Mac OS X vaya mucho más deprisa, al eliminar un gran número de operaciones gráficas. Se puede conseguir el mismo efecto lanzando Mac-on-Linux directamente desde una consola de texto. Véanse más detalles en [10]. Para habilitar la carga de CD ROMs, necesitamos añadir una línea al archivo molrc.osx como la siguiente:

Figura 3: La ventana inicial de PearPC nos permite seleccionar la partición de arranque.

./configure --enable-ui=sdl U --enable-cpu=jitc_x86 make su -c 'make install'

En este ejemplo, PearPC está usando la librería SDL para dibujar un escritorio gráfico, aunque también podemos usar -enable-ui=x11 como alternativa. Tras la compilación, creamos un archivo vacío que PearPC usará como disco virtual. El siguiente comando crea un archivo de 3Gbyte llamado macosx.img: dd if=/dev/zero of=macosx.U img bs=516096 seek=6241 count=0

blkdev: /dev/sg0 -cd

Esta línea da por hecho que estamos usando el módulo IDE-SCSI para habilitar la emulación SCSI en nuestro CD ROM IDE.

Mac OS sin hardware Apple Si no disponemos un ordenador Apple pero aún así queremos echarle un vistazo a este sistema operativo lleno de color, necesitamos otra alternativa. Es decir, necesitamos un emulador que haga creer a Mac OS X que está ejecutándose en un ordenador Apple. Nuestro espíritu de experimentación será de gran ayuda, y por supuesto necesitaremos los CDs de instalación de Mac OS X. PearPC[11] implementa una CPU PowerPC y un conjunto de periféricos. La instalación es tan simple como: tar xfj pearpc-0.3.1.tar.bz2 cd pearpc-0.3.1

Por contra a lo expuesto en la documentación de PearPC, podemos particionar el disco duro virtual sin necesidad de Darwin OS. Darwin OS es la versión libre de Mac OS X. Sin embargo, sólo incluye los componentes basados en texto. No incluye por tanto la interfaz gráfica de usuario ni otros componentes del núcleo. Para llevar la cuenta de los archivos que necesita PearPC, sería recomendable crear un nuevo directorio para el emulador, al que llamaremos ppc por ejemplo. A continuación copiamos los archivos de configuración de muestra a ese directorio: cp pearpc-0.3.1/ppccfg.exampleU ppc/ppccfg

Para imitar el adaptador gráfico, PearPC necesita también el archivo video.x, que tendremos que copiar asimismo al directorio de usuario. También vamos a mover la imagen del disco duro, macosx.img, al mismo direc-

WWW.LINUX-MAGAZINE.ES

torio para tener todos los archivos que necesitamos en el lugar adecuado. Podemos editar la configuración ppccfg con un editor de texto. Por el momento, las entradas existentes funcionarán, pero necesitaremos modificar el nombre de nuestra imagen de disco duro. Para ello, cambiamos la línea como se indica a continuación: pci_ide0_master_image =U "macosx.img"

La entrada prom_bootmethod, especifica cómo arranca PearPC. El valor auto, usa la primera partición arrancable. Si cambiamos el valor a select, el emulador nos requerirá que seleccionemos una partición (véase Figura 2). Introducimos el primer CD de Mac OS X para comenzar la instalación. Si aún no estamos en el directorio ppc, nos vamos a él y lanzamos el emulador, especificando el archivo de configuración como parámetro: ppc ppccfg

Si seleccionamos ahora arrancar desde CD aparecerá la pantalla de comienzo de Mac OS X, como muestra la Figura 3. Si presionamos [Alt-Enter] podemos conmutar entre pantalla completa y modo ventana. Después de unos instantes, aparece el programa de instalación. Si vamos siguiendo los pasos, se nos pide una unidad como objetivo, pero desafortunadamente aún no la tenemos. Tenemos que hacer una partición en nuestro disco duro

Número 07

33


PORTADA • Mac en Linux

Figura 4: El instalador de Mac OS X en ejecución en el emulador PearPC.

virtual. Lanzamos la herramienta de particiones con Installer | Hard disk tool. En esta herramienta pulsamos en la pestaña Partitioning y seleccionamos la opción 1 Partition para Volume Schema. Pulsamos en Partition y confirmamos en el cuadro de diálogo que aparece a continuación. El programa hará la partición en el disco virtual y la formateará. Después de salir de la herramienta, la partición debe ser visible en el instalador. Si el instalador da problemas de espacio en disco, podemos deseleccionar algunos paquetes como Language packages y Additional voices. Tras completar la selección de paquetes, el instalador copiará los paquetes al disco duro virtual. Una vez hayamos terminado este paso, salimos de PearPC e insertamos el segundo CD de instalación. Cuando reiniciemos, seleccionamos como partición de arranque la creada anteriormente. El instalador copiará unos cuantos ficheros más y completará la instalación. Podemos saltarnos las preguntas relativas al registro de la cuenta de usuario.

Redes para Expertos Para permitir a Mac OS X usar la red en un entorno PearPC, necesitamos modificar la entrada para la tarjeta de red en el archivo de configuración: pci_rtl8139_installed = 1

Cuando reiniciemos, el emulador puede indicarnos problemas por la ausencia de una interfaz de tunel de red /dev/net/tun. En este caso, ejecutamos modprobe tun en modo root para cargar el módulo del kernel.

34

Número 07

Figura 5: Cuando termina la instalación funciona hasta el Dock.

Mac OS X detecta la tarjeta de red Ethernet virtual automáticamente. Para localizarla, comprobamos la configuración de red dentro de la configuración del sistema. Asignamos la dirección IP estática a 192.168.1.1, que es la que configuró PearPC en scripts/ifppc_up.La dirección del router es 192.168.1.80. /etc/resolv.conf dentro de Linux nos proporciona un servidor de nombres. Al igual que Mac-on-Linux, PearPC configurará la red virtual de manera prácticamente automática en segundo plano, e incluso hará lo propio con la NAT. Para ello, necesita algunos archivos del directorio de software. Simplemente copiamos el subdirectorio scripts al lugar adecuado: cp -R pearpc-0.3.1/scripts ppc

Como el programa hace cambios en la configuración de red de Linux, necesitamos privilegios de root para este paso. En otras palabras, necesitamos arrancar PearPC como administrador o asignar privilegios de root al SUID de los programas ifppc_up.setuid y ifppc_down.setuid (chmod +s). Por defecto, PearPC crea una interfaz de red llamada ppc con direccion 192.168.1.80 en el sistema Linux. Podemos verificarlo tecleando /sbin/ifconfig ppc.

Una Feliz Alianza Tanto Mac-on-Linux como PearPC impresionan por sus amplias características, facilidad de uso y velocidad. El hecho de que Mac-on-Linux supere en velocidad a su competidor no debe sorprender. Después de todo, hablando estrictamente, Mac-on-Linux no es un emulador, sino un

WWW.LINUX-MAGAZINE.ES

programa que ejecuta Mac OS X (y otros programas) bajo Linux. De hecho, es suficientemente rápido como para desarrollar trabajos serios en un ordenador moderno. Ambos programas tienen una configuración de red bastante complicada, pero esto es debido más bien a la complejidad de las funciones que necesita Linux para soportar la conexión de red virtual. El paquete QEMU, comparable a los programas comentados, nos muestra que es posible emular la red sin necesidad de NAT. Ambos proyectos podrían beneficiarse de los conceptos aportados por ■ QEMU.

RECURSOS [1] Mac-on-Linux: maconlinux.org

http://www.

[2] Procesador PowerPC: http://www.ibm. com/chips/products/powerpc [3] Pegasos Computer: pegasosppc.com

http://www.

[4] Página Linux-PPC: penguinppc.org

http://www.

[5] Fedora Core 3 PPC: http:// fedoraproject.org/fedorappc/FC-3 [6] Gentoo PPC: http://www.gentoo.org/ doc/en/handbook/handbook-ppc.xml [7] Debian PPC: http://www.debian.org/ ports/powerpc [8] Ubuntu: http://www.ubuntulinux.org [9] Yellow Dog: yellowdoglinux.com/

http://www.

[10] Modo pantalla completa en Mac-onLinux: http://www.maconlinux.org/ userguide/cvideo.html [11] PearPC: http://pearpc.sourceforge.net


Bluefish • PRÁCTICO

El editor del HTML e IDE integrado Bluefish

UN PEZ LLAMADO… El editor de HTML Bluefish es útil en los grandes proyectos web y también para los proyectos de programación más pequeños. El resaltado sintáctico y los bloques de código ayudan a los desarrolladores a construir proyectos de manera más eficiente. POR ANDREAS GRYTZ

C

onstruir complejos proyectos web que soporten CGIs se puede convertir rápidamente en algo confuso. Un editor HTML como Bluefish [1], con soporte para gestión de proyectos y los lenguajes de guiones más populares, nos puede ayudar a mantenernos en el camino correcto. La versión actual 1.01 ofrece a los usuarios un montón de características nuevas e interesantes. El programa no es oficialmente parte del proyecto Gnome, pero es utilizado a menudo en el entrono de Gnome. Bluefish se basa en el toolkit GTK y requiere la versión 2.0 o posterior de GTK. La versión 3.0 o posterior de libpcre proporciona un resaltado de sintaxis muy útil, aunque el corrector ortográfico, basado en Aspell, es opcional. Los usuarios también pueden acceder a los recursos en linea, tales como servidores FTP o directorios WebDAV, de forma transparente, a través de Gnome VFS, una capa de abstracción al sistema de archivos. Bluefish accede a los recursos, como si estuvieran en directorios locales.

Diseño de la interfaz La interfaz de Bluefish tiene tres paneles: Una barra de menú con las funciones estándar en la parte superior de la ventana, un panel principal y una barra lateral por debajo

de ella. El panel principal es donde los usuarios editan los archivos. La ventana de Bluefish utiliza pestañas para permitir a los usuarios intercambiar entre documentos rápidamente. Según los desarrolladores, el programa puede manejar hasta 3500 documentos abiertos, aunque sea casi imposible que esto ocurra en condiciones normales de producción. La barra lateral cumple tres tareas: Primero, es un pequeño navegador de archivos que facilita al usuario un rápido acceso a sus archivos. Segundo, los desarrolladores pueden añadir documentación sobre alguno de los guiones y lenguajes web a los que da soporte el programa y los usuarios pueden mostrar la documentación en la barra lateral si es necesario. Tercero, los usuario pueden añadir marcadores a los directorios a los que accedan con mayor regularidad en la barra lateral. En lo alto de la barra de edición está el menú multi-pestañas que ofrece al usuario acceso rápido a los bloques de construcción HTML. Las pestañas está organizadas por funciones, permitiendo a los usuarios que añadan tablas, formularios o elementos CSS con el mínimo esfuerzo. Para las estructuras más complejas, como los formularios, el programa indica al usuario que especifique los parámetros necesarios para mostrar los elementos correctamente.

WWW.LINUX- MAGAZINE.ES

Debajo de las pestañas, el software tiene algunas herramientas adicionales para la edición de guiones. En función del lenguaje, el menú ofrece bloques de construcción comunes para bucles, includes o sentencias SQL. Esto da a los usuarios la capacidad de agrupar pequeños proyectos con solo apuntar, pulsar y completar los diálogos. El editor también facilita las adaptaciones locales de las páginas Web. Los usuarios pueden utilizar el botón derecho del ratón sobre la ventana de edición para alternar entre diversas versiones del código. El programa utiliza Unicode para guardar los archivos de forma predeterminada.

Entorno de Desarrollo Ligero Los desarrolladores no enfocaron su proyecto como un simple editor de HTML. El hecho de que Bluefish de soporte a lenguajes de guiones y lenguajes tradicionales de programación tales como C significa que Bluefish está más cerca de un entorno integrado de gestión de desarrollo. Esto es siempre útil ya que un IDE hecho y derecho pude ser demasiado molesto para, por ejemplo, proyectos más pequeños; pues a menudo un IDE ofrece a los programadores características no deseadas que probablemente confunden más que ayudan. Otra característica útil es que los usuarios pueden buscar en la documentación integrada de Python y PHP directamente en la barra lateral. Aquí es donde se pueden buscar descripciones cortas de las funciones estándares y sus valores de retorno. La identación automática, los números de línea, y el sofisticado realzado de sintaxis facilitan el trabajo con el código fuente. Bluefish da a los usuarios la capacidad de evaluar los makefiles y de

Número 07

35


PRÁCTICO • Bluefish

Figura 1: Bluefish ofrece un interfaz de tres paneles que se puede configurar para ajustarlo a nuestras necesidades.

Figura 2: Las advertencias y mensajes de error aparecen en el Output box, localizada debajo del panel principal.

mostrar las llamadas en una ventana extensible. Por ejemplo, los usuarios separada. Utiliza esta misma aproximapodrían aprovechar esta capacidad para ción para llamar a programas externos agregar sus herramientas de desarrollo tales como Tidy, un verificador de sintapreferidas. xis HTML [2]. Gestión de Proyecto Algunos programas externos son preconfigurados por la instalación estándar Bluefish realmente es brillante cuando de Bluefish, sin embargo, la rutina de es necesario manejar archivos múltiinstalación no comprueba si los prograples en un proyecto a gran escala. El mas están realprograma tiene mente instalados un diálogo para y se encuentran este propósito. en las rutas espeLos usuarios cificadas. Esto pueden especifipuede causar car un directorio confusión, ya objetivo para el que si no se tiene proyecto y asigcuidado, el softnar un nombre ware puede mosinterno en Figura 4: Creación de un proyecto Bluefish. trar entradas en Bluefish; un clic el menú a programas que no existen. con el botón derecho le permitirá agreA pesar de todo, los programas extergar carpetas y archivos a la barra latenos integrados hacen que el software sea ral. El diálogo de proyecto también permite que los usuarios definan un directorio remoto para el proyecto local.

Impresiones

Figura 3: Bluefish nos permite añadir herramientas externas.

36

Número 07

Aunque los desarrolladores afirman que la versión actual 1.0 es estable, el software todavía tiene una o dos extravagancias. Por ejemplo, el programa se bloqueó en varias ocasiones mientras creábamos un proyecto, al intentar seleccionar una plantilla para el proyecto. Asegúrese de tener una copia de seguridad antes

WWW.LINUX- MAGAZINE.ES

de comenzar a trabajar con datos de producción. Según el sitio web de Bluefish, los desarrolladores están trabajando en incorporar, donde sea posible, las directrices del interfaz humano del proyecto Gnome (Gnome Project Human Interface Guidelines). A pesar de esta compromiso para mejorar, el interfaz del programa es confuso en algunos lugares y diálogos, tales como el diálogo de configuración de la barra lateral, al que cuesta adaptarse. En resumen: Bluefish es un editor robusto que nos puede echar una mano con la web y con el trabajo de programación, una vez que aprendamos como desenvolvernos. Los bloques de código eliminan la necesidad de repetir pulsaciones de teclado y así evitar los errores asociados a esto. Además de las dependencias ya mencionadas, que en un sistema de Gnome normalmente estarán resueltas por los valores predeterminados, el software necesita algunas bibliotecas de Gnome. Sin embargo, la mayoría de las distribuciones modernas deben tener estas bibliotecas. El programa no necesita mucho espacio en disco y hace un buen uso de los recursos de la memoria haciendo que sea útil para los programadores que trabajen con hardware ■ obsoleto.

RECURSOS [1] Página principal de Bluefish: http:// bluefish.openoffice.nl/ [2] HTML Tidy: http://tidy.sourceforge.net/


Zope X3.0 • PRÁCTICO

Desarrollo Aplicaciones Web con Zope X3

FÓRMULA X

Zope, un servidor de aplicaciones web escrito en Python, es una plataforma de administración de contenido de código abierto muy popular. Recientemente acaba de aparecer la nueva versión X3.0. En este artículo vamos a mostrar las novedades que aporta. POR PHILIPP VON WEITERSHAUSSEN

D

esde el lanzamiento del sistema de administración de contenido (CMS) Plone [1], ha sido difícil imaginar un mundo de servidores de aplicaciones web gratuito sin Zope [2]. Python, el lenguaje en el que fué escrito originariamente Zope, trae al mundo de Zope la tecnología de la orientación a objetos y la posibilidad de estructurar el código fuente en módulos, además de la facilidad y flexibilidad que habitualmente aportan los lenguajes de script de la web.

Desde CMF hasta Nuevos Desarrollos Zope es una plataforma popular para CMS. La mayoría de los sistemas CMS Zope gratuitos (como Plone [1], Silva [3]

y CPS [4]) usan un producto Zope conocido como infraestructura de administración de contenidos (CMF – Content Manager Framework). El marco CMF

Xs y Us Cuando empezó el desarrollo de Zope 3, pronto quedó claro que había que desechar la compatibilidad con la API de Zope 2. El prefijo “X” de la versión originariamente significaba la naturaleza “eXperimental” del proyecto. Por supuesto, la versión estable Zope X3.0 es cualquier cosa menos experimental, pero la “X” permanece en el nombre para recordar a los usuarios que Zope X3 no es compatible con la versión previa.

WWW.LINUX- MAGAZINE.ES

para Zope 2 no sólo tenía las herramientas necesarias para desarrollar un sistema de administración de contenido, sino que también proporcionaba una arquitectura basada en componentes que soportaba modificaciones flexibles de componentes individuales. La experiencia obtenida desarrollando el CMF se suponía que iba a ser incorporada en el proceso de desarrollo de Zope. En vez de rehacer el laberinto de código que constituye Zope, la Zope Corporation optó hace tres años por empezar de nuevo. Ya que uno de los principios de la empresa es el software libre, Zope siempre ha contado con el apoyo de una gran comunidad. Los programadores experimentados de Zope y

Número 07

37


PRÁCTICO • Zope X3.0

los recién incorporados al proyecto, organizaron sesiones principales y secundarias de desarrollo (llamadas “sprints”) por todo el mundo para mantener al proyecto en marcha. Métodos como Programación Extrema (XP) y pruebas de unidades proporcionaron calidad al proyecto. Además, el hecho de que Zope 2 es un producto estable y con éxito, permitió a los programadores el tiempo suficiente para optimizar las características claves en múltiples ciclos de pruebas. Y nadie se quejaba si el código tenía que ser desechado para dejar paso a una implementación mejor.

Características El núcleo de Zope X3 es su arquitectura basada en componentes. Se les asigna a los diferentes componentes responsabilidades para las tareas específicas. Por ejemplo, las tareas de administración de componentes

Listado 1: Interfaces (interfaces.py) 01 from zope.interface import Interface 02 from zope.schema import Text, TextLine 03 class IBuddy(Interface): 04 """Información sobre buddy""" 05 06 first = TextLine(title=u"Nombre") 07 last = TextLine(title=u"Apellidos") 08 address = Text(title=u"Dirección") 09 postal_code = TextLine(title=u"Código Postal")

38

Número 07

Figura 1: Este formulario de edición fue generado automáticamente por la referencia al esquema de datos del componente de contenido.

como almacenamiento de datos, proceso de datos y presentación. Muchos lectores estarán familiarizados con ZODB (Zope Object Database) ya presente en Zope 2. ZODB permite a los objetos ser fácilmente persistentes en la base de datos de forma transparente y al mismo tiempo proporciona niveles empresariales como transacciones, revisiones y servicios de almacenamiento. ZEO (Zope Enterprise Objects) incluso soporta clusters de múltiples instancias de Zope, proporcionando de esta forma una fácil escalabilidad. Un sistema de seguridad flexible permite al usuario asignar permisos para proteger componentes, propiedades y métodos. Los usuarios que deseen acceder a un componente protegido tienen que estar autorizados. Los componentes modulares autentican y autorizan a los usuarios, dando a los operadores la posibilidad de adaptar la seguridad a la situación presente sin tener que rehacer la aplicación subyacente. Zope no sólo proporciona las herramientas para la internacionalización de las aplicaciones que necesitan los programadores, sino que es por sí mismo completamente internacional. Un amplio abanico de características, tales como SMTP o servicios de correo basados en sendmail, y un sistema de notificaciones de eventos y soporte para XML RPC, surgen de la paleta de Zope.

WWW.LINUX- MAGAZINE.ES

Cambio de Paradigma Zope X3 elimina algunos de los fallos que afectaban a Zope 2. Por ejemplo, la versión anterior esperaba a que las instancias de clase proporcionaran los atributos y métodos que necesitaban para interaccionar con Zope. Esto permitía que los programadores sobrecargaran objetos con una variedad de métodos, limitando la portabilidad y haciendo que los siguientes cambios fueran difíciles de hacer.

Listado 2: Componentes de Contenido (buddy.py )01

from persistent import Persistent

02 from zope.interface import implements 03 from buddydemo.interfaces import IBuddy 04 05 class Buddy(Persistent): 06 implements(IBuddy) 07 08 def __init__(self, first='', last='', 09 address='', postal_code=''): 10 self.first = first 11 self.last = last 12 self.address = address 13 self.postal_code = postal_code


Zope X3.0 • PRÁCTICO

Por otro lado, Zope X3 mantiene los componentes individuales tan simples como sea posible y añade componentes si se necesita que se añada funcionalidad. La arquitectura de Zope define los siguientes tipos de componentes: • Contenido: Este tipo de componentes no tiene normalmente métodos, tan sólo propiedades que utilizan para publicar los datos almacenados. Los tipos de datos y valores se especifican normalmente usando esquemas de datos. • Adaptadores: Son probablemente los componentes más potentes. Los Adaptadores permiten a los desarrolladores añadir funcionalidad a los componentes existentes sin tener que modificar los propios componentes. Esta técnica es extremadamente útil si un marco requiere una API específica. Los desarrolladores pueden dejar los componentes originales tal cual e implementar un adaptador que haga de interfaz entre el componente y la API requerida. • Vistas: Visualizan los componentes para el usuario. Un ejemplo de esto es un navegador web, que usa Vistas para renderizar HTML. Una vista es realmente una clase especial de adaptador que proporciona a

otros objetos una característica que no poseen nativamente (presentación).

Contrato Abstracto Para permitir a los componentes permanecer independientes de la implementación, los componentes no se referencian por medio de las clases, sino que se usan interfaces para describir la funcionalidad que proporciona el componente. Los interfaces son una contracción formal de una clase que garantiza la disponibilidad de una función específica por medio de una API. Como el lenguaje Python no soporta interfaces, Zope ha tenido que implementarlas desde cero. El Listado 1 muestra un interfaz de una aplicación de ejemplo que administra direcciones privadas. El interfaz es un esquema de datos que describe un componente de contenido, en este caso, los datos de la dirección de una persona. El almacenamiento del código postal permite la búsqueda por ciudad y país posteriormente. En el Listado 1, la sentencia Python class se usa para definir un interfaz, ya que Python no soporta interfaces de

forma nativa. Adicionalmente, Zope no distingue entre un interfaz que usa métodos para describir funcionalidad y un interfaz que define un esquema de datos.

Componentes de Contenidos Simples La tarea de escribir una clase persistente en Zope 2 era bastante compleja. Como mínimo, se necesitaba un metatipo, declaraciones de seguridad y métodos de instanciación para generar las nuevas instancias requeridas por la interfaz web. En Zope 3 los requerisitos para

escribir una clase persistente son mucho más fáciles que en Zope 2. Los objetos persistentes tan sólo tienen que manipular los datos pasados a ellos. Cualquier otra cosa se maneja a través de otros componentes. El Listado 2 muestra una implementación del interfaz IBuddy que se muestra en el Listado 1. Nótese que la clase here-

Listado 3: Configuración (configure.zcm l)01

<configure xmlns="http://namespaces.zope. org/zope" xmlns:browser="http://namespaces.zope.org/browser">

02 03 <content class="buddydemo.buddy.Buddy"> 04 <require permission="zope.View" 05 interface="buddydemo.interfaces.IBuddy" /> 06 <require permission="zope.ManageContent " 07 set_schema="buddydemo.interfaces.IBuddy" /> 08 </content>

09 10 <browser:addform 11 schema="buddydemo.interfaces.IBuddy" 12 label="Add a new buddy address" 13 content_factory="buddydemo.bud dy.Buddy" 14 arguments="first last address zipcode" 15 name="AddBuddy.html" 16 permission="zope.ManageContent " /> 17 18 <browser:editform 19 schema="buddydemo.interfaces.IBuddy"

WWW.LINUX- MAGAZINE.ES

20 21 22 23 24

label="Edit buddy address" name="edit.html" menu="zmi_views" title="Edit" permission="zope.ManageContent " />

25 26 <browser:addMenuItem 27 class="buddydemo.buddy.Buddy" 28 title="Buddy" 29 permission="zope.ManageContent " 30 view="AddBuddy.html" /> 31 32 </configure>

Número 07

39


PRÁCTICO • Zope X3.0

dada de Persistent se asegura de que sus instancias sean automáticamente almacenadas en ZODB. Para asegurar la clase contra otros componentes, también se necesita especificar que la clase implementa el interfaz IBuddy.

Configuración XML Zope 2 esperaba importar las bibliotecas desde el directorio Products. El módulo de inicialización para cada paquete (__init__.py) solía contener el registro de componentes. Otros elementos tales como declaraciones de seguridad y configuraciones de vistas de navegadores web terminaban en el código de la aplicación. Zope X3 lo hace de manera distinta. Las extensiones de Zope son ahora sim-

plemente paquetes Python y se pueden instalar en cualquier sitio que se desee, indicándolo en PYTHONPATH. Cualquier otra cosa más que tenga que ver con la configuración de componentes, como el propio registro, declaraciones de seguridad o vistas de navegadores web, están ahora ligadas al fichero de configuración. Esta solución proporciona a los desarrolladores una ventaja importante: la posibilidad de desactivar componentes temporalmente o permanentemente sin necesidad de modificar el código. El Listado 3 muestra las directivas de configuración típicas para un componente de contenido basado en un esquema. El ejemplo tan sólo maneja las declaraciones de seguridad para lectura y escritura de datos para las instancias de buddy. El fichero sigue con la definición de dos formularios. Un formulario genera objetos buddy, el otro los edita. Zope tiene la capacidad de generar automáticamente un formulario de esquema de datos definido en el interfaz IBuddy. Además, tal y como se muestra en la Figura 1, un esquema, una implementación persistente simple, unas cuantas directivas de configuración y nada de HTML, proporcionan un componente que se ejecutará en un navegador web.

La última directiva en el Listado 3 añade entradas al menú de la interfaz web de Zope para que los usuarios puedan crear objetos buddies. El hecho por el que esta directiva existe es para servir de ejemplo de un principio importante pero básico de la filosofía de Zope 3: “Es mejor ser Explícito que Implícito”. Aunque desarrollar software Zope 3 pueda implicar escribir más, al menos se tendrá mayor facilidad de lectura del código dentro de unos cuantos meses.

El Futuro Zope ha tenido un seguimiento masivo gracias a sus características, su flexibilidad y por estar basado en Python, y por ahora parece que esta comunidad va a seguir creciendo. El uso del software para proyectos a gran escala y en grandes empresas ha ayudado a Zope a madurar. Zope X3 es un paso enorme para el proyecto. Sin embargo, puede que le lleve algo de tiempo a Zope X3 y al nuevo paradigma que presenta contar con una aceptación mayoritaria y, por ello, se espera que Zope 2 siga existiendo durante algún tiempo. Vale la pena echarle un vistazo al proyecto Five [6], que soporta una migración gradual y considerada a Zope X3, a pesar de sus incompatibilida■ des con la API de Zope 2.

Instalación y Configuración

Las bibliotecas de Zope se instalan normalmente en /usr/local/Zope-3.0.x. Sin embargo, se puede cambiar esta localización con el parámetro --prefix en el script configure. Para ejecutar una instancia del servidor, primero se necesita crear un árbol de directorios para la instancia. Este árbol de directorios no sólo se usa para almacenar la base de datos de objetos para la instancia de Zope (ZODB), sino que también se usa para almacenar bibliotecas específicas requeridas por la instancia. Una instalación de

40

Número 07

Zope puede usar múltiples instancias ejecutándose en paralelo. El script mkzopeinstance en el directorio bin crea un directorio de instancias. Después de especificar la ruta para la instancia y las credenciales para una cuenta temporal de administración, se puede ejecutar la instancia tecleando runzope (en el directorio bin de la instancia). La configuración del servidor, los puertos HTTP y FTP y varias opciones de registro se encuentran en etc/zope.conf. Los ficheros de configuración usan el mismo formato que los del servidor Apache. Por defecto, el servidor HTTP usará el puerto 8080 y el servidor FTP el puerto 8021. Después de ejecutar Zope tecleando runzope se puede pulsar Ctrl-C para salir. Como esto no es práctico para una aplicación de servidor, se puede ejecutar el script zopectl (también en el directorio bin de la instancia) para controlar el servidor; es similar a apachectl del servidor Apache.

WWW.LINUX- MAGAZINE.ES

[1] Plone: http://plone.org [2] Sitio web de la comunidad Zope: http://zope.org [3] Silva: http://infrae.com/products/silva [4] CPS: http://www.nuxeo.org/cps [5] Descarga de Zope X3: http://zope.org/ Products/ZopeX3 [6] Five: http://codespeak.net/z3/five

EL AUTOR

La instalación de Zope 3 en Linux es sencilla. Se necesita la versión actual de Python 2.3.4 con el soporte Zlib. Zope está escrito en su mayor parte en Python, pero algunos módulos están implementados en C por cuestiones de eficiencia. Antes de instalarlo, hay que compilar el código de la aplicación. El fichero tar.gz contiene un script de configuración (configure) que automáticamente genera el fichero Makefile para el proceso de compilación e instalación.

RECURSOS

Philipp Von Weitershausen estudia Física en Dresden, Alemania. Además es programador freelance y consultor. Philipp también participa en el equipo de desarrollo de Zope 3 y es autor del libro Desarrollo de componentes Web con Zope 3.


APT para RPMs • PRÁCTICO

Apt en Suse

REMIX DE PAQUETES

La herramienta Apt de Debian, está considerada generalmente como la mejor elección para administrar paquetes en Linux. Pero, ¿y si no usamos Debian? En este artículo explicamos como podemos usar Apt con distribuciones Linux basadas en RPM. POR MIRKO ALBRECH

A

pt (Advanced Packaging Tool), es un sistema simple pero poderoso para instalar software en sistemas Debian. Los paquetes específicos para Debian están disponibles tanto como binarios como código fuente, y los usuarios pueden acceder a un repositorio administrado centralizadamente para actualizar todo su software desde Internet. Las herramientas de administración de paquetes resuelven automáticamente las dependencias que puedan surgir durante la actualización. En la actualidad los usuarios de distribuciones basadas en RPM pueden asimismo beneficiarse de las bondades de la herramienta de Debian. Vamos a usar Suse, por ejemplo, para mostrar cómo administrar nuestro software convenien-

temente y con fiabilidad con Apt para RPM.

Instalación y Configuración Si vamos a usar Apt con Suse, será conveniente disponer de una conexión de banda ancha a Internet, ya que esta herramienta descarga los paquetes de la red para instalarlos. Antes de nada, los usuarios de Suse 9.2 deberán instalar previamente dos paquetes: apt-0.5.15cnc6-rb.suse092. 6.i586.rpm y apt-libs-0.5.15cnc6-rb.s use092.6.i586.rpm. Ambos paquetes están disponibles en [1]. Si preferimos usar la interfaz gráfica de Apt, debemos asegurarnos de i n s t a lar el paquete synaptic-0.55.3-0. suse092.rb1.i586.rpm de igual manera. Después de completar este paso, necesitamos configurar un archivo llamado

WWW.LINUX- MAGAZINE.ES

sources.list (véase el Cuadro 1: Repositorios). Este archivo especifica qué repositorios vamos a utilizar y cuales no. Apt entiende como repositorios colecciones de paquetes de software, usualmente ordenados por categoría. El archivo sources.list situado en /etc/apt nos permite especificar estos repositorios. Los usuarios más cautelosos evitarán añadir las ramas como kde-unstable o kernelof-the-day a la lista de fuentes. De igual manera, los paquetes del repositorio usr-local-bin han de manejarse con cuidado. Y si estamos contentos con nuestra interfaz gráfica tal como está, deberíamos también eliminar la rama X.org. Con privilegios de root, editamos el archivo /etc/apt/apt.conf.d/ gpg-checker.conf y reemplazamos el valor

Número 07

41


PRÁCTICO • Apt para RPMs

la interfaz gráfica Synaptic para modificar la lista de fuentes, seleccionando para ello Settings | Package sources.

línea de comandos es la manera más recomendable de hacerlo. Si preferimos investigar más detenidamente este tema, podemos usar la herramienta Synaptic.

Uso en Consola

Synaptic

Apt tiene unas poderosas características para modificar nuestra colección de software. Sin embargo no es tan sencillo entender cómo funciona. Nos vamos a concentrar en las opciones disponibles para usuarios con un conocimiento previo de las herramientas YaST y YOU. Los lectores más minuciosos deberán revisar las Figura 1: El comando “apt -s upgrade” nos permite veripáginas man para tener una ficar los resultados antes de actualizar. visión más profunda de Apt. Tras configurar sources.list en GPG::CHECK de true a false. Esto peren /etc/apt, tecleamos apt-get update en mite que Apt acepte paquetes sin firma. una terminal. Esta orden verifica la De lo contrario, un buen número de estructura de nuestro software, localiza paquetes no podrán cargarse debido a la los datos especificados en nuestra sourfalta de firma. ces.list y nos muestra las opciones de Los usuarios más precavidos preferiactualización. rán evitar las actualizaciones automátiPodemos teclear apt-get install nomcas del kernel. Para ello, abrimos el bredelpaquete o apt-get remove nombrearchivo /etc/apt/apt.conf.d/apt.conf y delpaquete en la consola para instalar o añadimos lo siguiente en la sección RPM eliminar el paquete respectivamente. Los para el kernel 2.6: usuarios más atrevidos estarán tentados de usar apt-get upgrade para actualizar el sistema por completo. No es aconsejable Hold {"kernel-default"; U este método a menos que sepamos las "kernel-source"; }; consecuencias. Decisiones faltas de cautela o sin la debida información pueden Si aún estamos usando el kernel 2.4, conducir a instalaciones desde repositonecesitaremos las siguientes líneas en su rios con paquetes inestables. Hemos de lugar: asegurarnos de ejecutar apt-get -s upgrade previamente para revisar que paqueHold {"k_deflt"; U tes vamos a actualizar con Apt. Por otro "kernel-source"; }; lado, si sólo necesitamos instalar paquetes de seguridad oficiales o software de Si preferimos evitar estas tareas de confila rama estable de KDE, el método de la guración en modo texto, podemos usar

Si aún no tenemos instalado el paquete synaptic-0.55.3-0.suse092.rb1.i586.rpm, lo instalamos tecleando como root apt-get install synaptic. Esto supone que el toolkit Gtk está instalado en nuestro equipo o bien que nuestra sources.list tiene una entrada al repositorio base. En este último caso, Apt nos preguntará si instalamos los otros paquetes necesarios. Después de terminar la instalación, encontraremos un enlace al programa en System | Configuration | Synaptic Package Manager, siempre que tengamos una versión reciente de KDE con la tecnología llamada vFolder. Tras introducir nuestro password de root, comprobaremos que la parte izquierda de la ventana del programa está dividida en secciones de manera parecida a YaST. Synaptic lista los paquetes en la derecha. Una marca verde significa que el programa está instalado. Una marca con un asterisco significa que está disponible una versión más reciente. Podemos revisar los signos usados en Help | Icon Legends. La instalación o actualización de paquetes sigue un patrón similar al de YaST. Seleccionamos el paquete requerido y elegimos Mark for installation o Mark for upgrade en el menú desplegable. Pulsamos en Apply en la barra de herramientas para pasar a la descarga e instalación. Si sólo queremos revisar las nuevas versiones (apt-get update), seleccionamos Reload en la barra de herramientas. El menú Settings tiene un buen número de opciones de configuración, que se

Cuadro 1: Repositorios El repositorio tiene siempre una ruta para los archivos binarios (RPMS.name) y una segunda ruta para el código fuente de los programas (SRPMS.name). Sólo la primera es importante para la ejecución del sistema, pero tendremos que especificar la ruta SRPMS si queremos instalar el código fuente. Un ejemplo de una lista de repositorios se encuentra disponible para descargar desde [2]. Copiamos el archivo a /etc/apt y lo renombramos como sources.list.

42

Número 07

Un fichero sources.list bastante más conservadora, que no actualiza cada programa que esté disponible a una versión más reciente, tiene una pinta como la siguiente: # # Repository created by: aptate (version 0.69.0) # At: Fri Jan 28 17:16:18 MET 2005 # Mor e info about aptate at: http://apt4rpm.sourceforge.net

WWW.LINUX- MAGAZINE.ES

# rpm ftp://ftp.gwdg.de/pub/linux/ U suse/apt suse/9.2-i386rpmkeys U base funktronics update misc U mozilla suser-rbossuser-guru U suser-gbv packman packman-i686 U wine suse-projects U kde3-stable security O si lo preferimos, podemos navegar por los numerosos repositorios y añadir aquellos que mejor nos parezcan.


APT para RPMs • PRÁCTICO

explican por sí mismas. Puede que queramos llevar la cuenta de qué paquetes proceden de qué repositorio. Para ello, seleccionamos adicionalmente la columna Components en la pestaña Columns and Fonts dentro de Settings | Configuration. Si hubiese múltiples versiones de un paquete disponibles de varios repositorios, podemos seleccionar Package | Force version para instalar el paquete requerido. La opción Package | Lock version nos ayuda a evitar la actualización no deseada de un paquete. Los paquetes están agrupados por categoría en el panel izquierdo de la ventana de Synaptic, para ofrecernos una mejor visión global. Bajo la lista tenemos algunos botones que podemos pulsar para cambiar la vista. La opción Status nos permite ordenar paquetes de programas instalados o disponibles en función del criterio seleccionado.

Pragmatismo Como se mencionó anteriormente, una actualización completa del sistema no está recomendada, a menos que sepa-

mos a ciencia cierta como funciona Apt. Es mejor concentrarse en las actualizaciones de seguridad mediante el repositorio correspondiente, y en actualizar paquetes muy específicos. Supongamos que estamos aún con Suse 9.0 o 9.1, y estamos un poco asustados de una gran actualización. En lugar de esto, lo que queremos es actualizarnos al último escritorio KDE, ya que hemos leído la gran cantidad de mejoras logradas. La instalación manual usando los paquetes de Suse es una pesadilla, ya que deja al sistema con un montón de dependencias no resueltas. En lugar de esto, buscamos “kde” en Synaptic. La búsqueda da como resultado una lista de paquetes que necesitamos instalar y actualizar. Todo lo que necesitamos hacer es seleccionar los paquetes que queremos actualizar. Cuando lancemos la actualización, Apt tratará cualquier paquete de KDE borrado o introducido recientemente y resolverá todas las dependencias. El método es parecido si disponemos de Suse 9.2, pero no aparecen algunos

Cuadro 2: Apt para versiones antiguas de Suse Apt no funciona únicamente para la ultima versión de Suse, la 9.2, sino también para cualquier Suse desde la 7.3 en adelante. La arquitectura AMD64 está soportada desde Suse 9.x o superior. Los paquetes para apt, apt-libs y synaptic están disponibles en [1]. Sólo tenemos que reemplazar el número de la versión 9.2 en la URL con nuestra versión de Suse. Para ejecutar Apt en versiones anteriores a Suse 8.2, también nos hará falta el paquete lua-5.0.2-rb1.i586.rpm. Puede que apreciemos algunas diferencias respecto a ejecutar Apt en Suse 9.x. Por ejemplo, desde Suse 7.3 al 8.1 se guarda el archivo apt.conf directamente en /etc/apt/.

importantes componentes multimedia dado que Novell/Suse no los incluye en sus medios de instalación, debido a problemas con las licencias. Hemos de descargarnos previamente estos paquetes de


PRÁCTICO • Apt para RPMs

tes existen para una palabra clave, como pueda ser “chess” (ajedrez, véase Figura 3). Cuando necesitemos borrar un paquete, tenemos que recordar que el típico apt-get remove nombredepaquete sólo borrará el programa. No borrará ningún paquete instalado para resolver dependencias. Sin embargo ,apt-get -D remove nombredelpaquete permite borrar también esos paquetes. Encontraremos un HOWTO para Apt en Suse en [5], junto con una buena cantidad de otros HOWTOs relativos a Apt en otras distribuciones RPM.

Conclusiones

Figura 2: Synaptic es un cómodo interfaz gráfico para Apt.

la Web [3] e instalarlos. Algunas veces esto requerirá investigar un poco por los foros para averiguar el orden correcto de instalación. De todas maneras no es muy complicado si añadimos packman y packman-i686 a nuestra sources.list e instalamos Xine o MPlayer.

Para localizar la página adecuada, hemos de añadir #suse92 o #suse73 a URL, dependiendo de nuestra versión. A veces puede ocurrir que un intento de instalación de un paquete abc falle dando un mensaje del tipo paket-xyz.so.2 requires abc. Podemos pedirle a Apt que busque el paquete perTrucos y Consejos dido con apt-get install abc paket-xyz.so.2. Apt nos facilita mucho la instalación de La herramienta apt-iselect combina la software, pero puede que aún queramos funcionalidad de apt-cache search y saber algunos consejos para el uso seguapt-get install ofreciendo una interfaz ro del sistema de administración de más amigable basada en consola. paquetes. Podemos instalar esta herramienta desde Antes de meternos en una actualizael repositorio suser-oc2pus tecleando apt ción masiva, es bueno comprobar los install apt-iselect. nuevos paquetes que hayan sido publicaSi ordenamos apt-iselect dos. La página Freshrpms [4] es un sitio libgnutls-extra.so.11, por ejemplo, nos ideal para revisar los nuevos paquetes. indica que el archivo requerido está en el paquete gnutls. Podemos ver los detalles del paquete actualizado (checksum, dependencias adicionales, descripción, nombre de los archivos, tamaño, etc.) e incluso instalarlo si así lo deseamos. Ésta puede ser también una buena manera de Figura 3: apt-iselect encuentra rápidamente todos los paquetes encontrar qué paqueque concuerden con una palabra clave.

44

Número 07

WWW.LINUX- MAGAZINE.ES

No es muy complicado configurar un sistema Apt en Suse y los pasos para conseguirlo no llevan demasiado tiempo. La excelente y poderosa interfaz gráfica Synaptic ofrece a los usuarios sin mucha experiencia la herramienta sencilla que buscaban para acostumbrarse a Apt. Las actualizaciones del sistema completo necesitan más experiencia debido al método descentralizado en el que se organizan los repositorios. En caso de duda, no es mejor no realizar grandes cambios en un sistema que funcione. Apt no está restringido a usuarios de Suse. Esta herramienta está disponible para las principales distribuciones basadas en RPM. La instalación y configuración son muy similares a las descritas en este artículo, aunque el número de repositorios pueda variar según la distribución. Véase [6] y [7] para más detalles. ■

RECURSOS [1] Apt para RPM: http://ftp.gwdg.de/pub/ linux/suse/apt/suse/9.2-i386/RPMS. suser-rbos [2] Ejemplo de archivo sources.list: http:// ftp.gwdg.de/pub/linux/suse/apt/suse/ 9.2-i386/examples/ [3] PackMan: http://packman.links2linux. org/ [4] Freshrpms: http://linux01.gwdg.de/ apt4rpm/freshrpms.html [5] Apt para Suse: http://linux01.gwdg.de/ apt4rpm/apt4suse.html [6] Apt para Red Hat: http://apt.42h.de/ index.en.shtml [7] Apt4rpm: http://apt4rpm.sourceforge. net/


SPARC • PRÁCTICO

Instalando Linux en una máquina Sun SPARC

SALTAN CHISPAS Como sabemos Linux trabaja como la seda en PCs, pero la arquitectura x86 es una más de las plataformas que Linux soporta. Este artículo nos proporciona la manera de empezar con la configuración de Linux en una máquina Sun SPARC. POR ARMIJN HEMEL

D

urante la era .com, cada compañía corría sus aplicaciones en sistemas Sun y la plataforma Sun SPARC tenía gran parte del mercado en áreas académicas. Esta abundancia de máquinas SPARC significa que puede acceder a una SPARC por poco dinero… ¡hasta podríamos tener un SPARC acumulando polvo en la oficina! Linux soporta la plataforma SPARC desde hace años y SPARC aún es una de las plataformas alternativas más populares para Linux. De todas formas, Linux sobre SPARC es muy parecido a Linux sobre PC, pero si quiere que su instalación SPARC vaya como la seda, hay varias diferencias que debería tener en cuenta. Este artículo describe algunos sistemas SPARC que trabajan con Linux y algunos

Cuadro 1: Endianness Todos los chips SPARC son big endian, sin embargo las CPUs x86 son little endian. En los sistemas big endian, el byte más significativo se almacena primero. En los sistemas little endian el byte menos significativo se almacena primero. En algunos casos, esto puede ser un problema; por ejemplo, con los programas que utilizan un formato binario especial para ficheros de datos. Algunos programas esperan que sus datos estén en un orden de byte específico. Estos casos son bastantes extraños, de hecho, sólo he visto unos pocos casos así, principalmente con programas antiguos MacOS, tal como MacWrite II, pero puede ocurrir.

detalles que necesitará conocer si quiere instalar Linux en una máquina Sun.

Linux y SPARC El hardware de Sun no es tan difícil de encontrar (ver “Cuadro 2: A la Búsqueda del Sol”). Las series Sun SPARCstation se vendieron realmente bien y encontrará muchos lotes SPARCstation de 10 y 20 estaciones de trabajo en eBay, por ejemplo. Hay también es probable para quien le interese que su LUG local o incluso en su universidad hayan máquinas Sun antiguas de las que se quieran deshacer. Las máquinas SPARC (32-bits) fueron unas de las primeras (sino la primera) plataformas donde Linux fue montado tras los x86. Hace unos 6 años, varios vendedores, como Red Hat, solían tener CDs para los sistemas SPARC, pero el mercado de Linux en SPARC nunca ha sido muy extenso. Las distribuciones comerciales cesaron rápidamente su desarrollo, debido a su simplicidad no era económicamente viable mantener una versión separada para las SPARC. Actualmente todas las distribuciones para SPARC están mantenidas por la comunidad.

Las distribuciones de SPARC Linux más extendidas incluyen: • Aurora Linux: La primera versión estaba basada en Red Hat 7.3, pero el trabajo se hizo para que las versiones actuales se sincronizaran con el desarrollo del último Fedora Core y ocasionalmente mezclarlo en el Fedora Core. • Debian GNU/Linux: La distribución SPARC que más tiempo lleva en el mercado • Gentoo • Splack: Slackware para SPARC Todas estas distribuciones vienen con herramientas de gestión que también están disponibles para x86 (RPM y yum para Aurora, apt para Debian, portage para Gentoo, pkgtools para Slack). Además de las distribuciones que he mencionado, existen otras distribuciones más pequeñas que también soportan SPARC. La veterana de las máquinas SPARC, sun4u, no está del todo soportada por Linux. Los SPARCs posteriores se han soportado con varios grados de éxito. Algunas máquinas sólo funcionan en

Listado 1: Configuración de Disco de SPARC Linux 01 02 03 04 05 06 07

Disk /dev/hda (Sun disk label): 16 heads, 63 sectors, 17660 cylinders Units = cylinders of 1008 * 512 bytes Device Flag Start End Blocks Id System /dev/hda1 0 102 51408 1 Boot /dev/hda2 102 16620 832507 2 83 Linux native /dev/hda3 0 17660 8900640 5 Whole disk /dev/hda4 16620 17660 524160 8 Linux swap

WWW.LINUX- MAGAZINE.ES

Número 07

45


PRÁCTICO • SPARC

La mayoría del desarrollo actual Tipo de Máquina Bits Bus Máquinas (incompleto) ya está realizado sun4 32 VMEbus Sun-4 para los nuevos sun4c 32 SBus SPARCstation SLC/ELC/ ordenadores IPC/IPX/1/2 UltraSPARC con sun4d 32 SBus SPARCcenter PCI. Debido a SPARCserver esto, los equipos sun4m 32 SBus SPARCstation 4/5/10/20; SPARC de 32-bit y SPARCstation X/ZX/ los UltraSPARC Voyager;SPARCclassic sun4u 64 SBus/PCI Ultra; Blade; Enterprise; basados en SBus Fire; Fujitsu SPARC64 a veces se retrasan un poco. Los modo uniprocesador y no en modo SMP. nuevos kernels no siempre quieren ejecuPara algunas máquinas, los diferentes tarse de forma correcta en estas máquinas subtipos no están soportados, por ejemy lleva unas cuantas versiones de kernel plo, la SPARCstation 5 con una CPU de el arreglar estos problemas. 170 MHz no está soportada, sin embargo Los servidores de altas prestaciones son otras SPARCstation 5 sí están soportadas. demasiado caros y normalmente no están La razón por la que esto sucede es que la disponibles para un usuario normal y CPU de 170 MHz es de otro fabricante. Linux probablemente no funcionará de

Tabla 1: Subtipos Sun4u

ninguna forma, aunque hay informes de que Linux arranca en algunos servidores de gama media, tal como el Enterprise 4500.

Instalación de Linux en SPARC Probamos Linux Aurora SPARC en una máquina Ultra 10. La Ultra 10 tiene discos IDE y un bus PCI, con una CPU UltraSPARC III y está bien soportada por Linux. La instalación de Aurora no es mucho más difícil que la de Red Hat en un PC “normal”, ya que el instalador hace la mayor parte del trabajo sucio por nosotros. Pero hay varias diferencias fundamentales entre las dos arquitecturas que debemos conocer cuando las cosas vayan mal. Una de las diferencias entre una máquina Sun y un PC normal es la forma en la que se particionan los discos duros. Un

Cuadro 2: A la Búsqueda del Sol No toda máquina Sun tiene un chip SPARC dentro. Las máquinas Sun hasta la versión 4 estaban basadas en el chip de Motorola 68000 y hay algunas pocas máquinas basadas también en el chip 386 de Intel. Si se desea ejecutar un sistema operativo gratuito en una máquina Motorola, NetBSD sería la mejor opción, con cualquier versión portado a sun2 o sun3. Estas máquinas datan de 1980 y son poco útiles con los estándares actuales. Sun también ha incorporado el chip x86 en las máquinas Cobalt y recientemente ha comenzado a usar los chips AMD Optaron para los servidores y las estaciones de trabajo. El chip SPARC se usa desde 1987, cuando Sun presentó la versión 4 de sus máquinas. La versión 4 llegó a ser conocida como “Sun4”. Algunos de los subtipos de Sun4 se pueden ver en la Tabla 1.

gama alta también se usa tecnología nueva como el FibreChannel y el PCI que se puede intercambiar en caliente, pero se pasó a tecnología PC en el mercado de las estaciones de trabajo. El Ultra 5 y el Ultra 10 fueron las primeras máquinas que comercialmente contaron con un bus PCI, discos IDE y conectores VGA (ya fueran en la placa o como tarjetas de expansión).

como Solair y Tadpole. Estas máquinas son idénticas a las máquinas normales de Sun en su interior.

Desde 1996, el chip UltraSPARC se usa en casi todas las máquinas, con la notable excepción de varios JavaStation. Las JavaStation usaban un chip SPARC en la placa con componentes PC (memoria PC, bus PCI).

• sparcv8: versión 8 de la arquitectura SPARC, 32 bits

La primera generación de las máquinas Sun4 utilizaron el VMEbus, que también se utilizó en ordenadores Sun basados en Motorola. Posteriormente, Sun cambió al bus SBus, que se usó en todas las máquinas SPARC. Unas cuantas máquinas también usan las ranuras de expansión MBus, que pueden utilizarse para añadir CPUs extra a la máquina.

Para hacer las cosas más interesantes, no todos los chips SPARC están hechos por Sun. Los estándares SPARC los lleva una empresa aparte, SPARC Internacional. Los estándares pueden descargarse gratuitamente y pueden implementarse sin tener que pagar royalties a SPARC Internacional o a Sun. Hay un chip certificado SPARCv8 diseñado por ESA que tiene un diseño desarrollado bajo licencia LGPL. Los diseños para este chip, llamado LEON SPARC, pueden descargarse desde http://www.gaisler. com/.

Los primeros ordenadores basados en UltraSPARC, como el Ultra1, el e1 y el Ultra 2, usaron SBus para conectar las tarjetas de expansión, memorias específicas de Sun y discos SCA. Sun mantuvo esta tecnología en la mayoría de los servidores, con los nuevos servidores de

En Japón, Fujitsu ha realizado sus propias versiones de SPARC y UltraSPARC. Recientemente, Sun y Fujitsu firmaron un acuerdo para colaborar en los diseños de futuras versiones de sus chips SPARC. Hay también unas cuantas compañías que han hecho clones UltraSPARC, tal

46

Número 07

WWW.LINUX- MAGAZINE.ES

A menudo veremos referencias a cosas como sparcv8 o sparc64. La primera describe la versión de la arquitectura SPARC. Hay 3 versiones que pueden encontrarse: • sparcv7: versión 7 de la arquitectura SPARC, 32 bits

• sparcv9: versión 9 de la arquitectura SPARC, 64 bits Las versiones más actuales tienen más posibilidades de que un programa aprovecharse durante el tiempo de ejecución. La mayoría de las distribuciones Linux compilan para sparcv7, pero para algunos paquetes, en particular openssl, es útil utilizar unas etiquetas especiales de optimización durante la compilación. Algunas distribuciones, como Aurora, contienen paquetes especiales precompilados para openssl de sparcv8 y sparcv9. Términos como sparc32 y sparc64 no describen un chip en particular, en cambio, describe entornos. • sparc32: un entorno SPARC de 32-bit • sparc64: un entorno SPARC de 64-bit Es bastante normal tener un entorno sparc32 ejecutándose en un chip SPARC de 64-bit. De hecho, esto está por defecto para la mayoría de las distribuciones Linux.


SPARC • PRÁCTICO

Cuadro 3: Arquitectura 64-bit Una de las partes más interesantes de la arquitectura UltraSPARC es la posibilidad de ejecutar binarios de 64-bit. Como la mayoría de las arquitecturas de 64-bit, no es completamente pura, ya que UltraSPARC puede ejecutar binarios SPARC de 32-bit. Esto se hizo a propósito, ya que los clientes de Sun todavía tenían la necesidad de ejecutar los binarios antiguos de 32-bits en los nuevos equipos de 64-bit. Hasta ahora, Linux en UltraSPARC ha sido un híbrido de 64-bit y 32-bit. El kernel es completamente de 64 bit pero las aplicaciones de usuario son normalmente de 32-bit. Esta mezcla también tiene algunas consecuencias para el sistema (por ejemplo, gcc más binutils) usado para compilar programas, como tiene que ser capaz de compilar ambos binarios de 32-bit y 64-bit. A no ser que uno

PC puede tener hasta 4 particiones primarias en un disco, una de las cuales puede ser una partición extendida con más particiones lógicas en ella. Un disco en un sistema SPARC es algo diferente. Puede haber 8 particiones en el disco. La tercera partición representa el disco completo. Hay también algunas restricciones con respecto a la disposición, tales como una partición que utiliza su primer sector (como la swap) no debería empezar en el cilindro 0 del disco porque borraría la etiqueta. A pesar de ello, si se quiere transplantar un disco duro desde un PC Linux y utilizarlo en una máquina SPARC con todos los datos intactos, deberemos asegurarnos de que el kernel puede manejar etiquetas de disco de PC porque estas etiquetas no funcionarán por defecto. El Listado 1 muestra un ejemplo de configuración de disco para un sistema Linux SPARC. Si se quiere arrancar Linux desde un CD en un sistema SCSI, como el Ultra 1, hay que asegurarse de que el reproductor de CDs puede manejar tamaños de bloque de 512 bytes. La mayoría de los reproductores de CD tienen por defecto un tamaño de bloque de 1k. En un buen reproductor de CD SCSI, el tamaño de bloque puede establecerse mediante un jumper. La instalación de Linux es completamente transparente para las máquinas como la Ultra 10. La situación puede ser diferente con las máquinas antiguas con

haga su propia distribución no tenemos por que preocuparnos demasiado por esto y sólo debemos utilizar las utilidades proporcionadas por el vendedor. En la mayoría de la documentación sobre Linux en UltraSPARC, vemos que se necesita el compilador especial “egcs64” para compilar el kernel. Actualmente esto no es del todo cierto; podemos usar GCC. Como usuario, no necesitamos especificar ningún cambio especial. El proceso de configuración del kernel se encarga de escoger el compilador correcto por nosotros. Algunas aplicaciones de usuarios no se beneficiarán de haberse compilado como binarios de 64 bit, de hecho pueden ralentizarse- pero hay otra razón por la que es interesante utilizar 64 bits bajo Linux: portabilidad, especialmente el tamaño de los punteros. En los sistemas

SBus o un chip de 32-bit. Antes de instalar Linux, hemos de comprobar que el hardware que va a utilizarse está realmente soportado. Un buen punto de partida es la lista de compatibilidad de hardware de Aurora.

El Arranque Una gran diferencia entre la plataforma PC y la SPARC es el procedimiento de arranque. El PC utiliza una simple BIOS para inicializar el hardware, encuentra el bootloader y lo lanza. En las máquinas SPARC se utiliza el OpenBoot PROM (OBP). OBP ofrece un conjunto muy completo de comandos para arrancar el kernel (disk, tape, cd, network), así como comandos de diagnóstico. Para arrancar Linux, se puede utilizar un bootloader especial denominado SPARC Improved boot LOader (SILO). SILO tiene soporte para arrancar Solaris, SunOS y Linux desde disco. Una variante de SILO denominada TILO es para el arranque en red. SILO es como GRUB con respecto a la disposición de algunos sistemas de ficheros, y, a diferencia de LILO, no necesita ser reinstalado después de un cambio en la configuración. La configuración de SILO puede ser un poco complejo, pero el manual es muy claro.

Alternativas Si no quiere ejecutar Linux en una máquina SPARC, hay varias alternativas. Por supuesto, puede utilizar Solaris. Sun desarrolla Solaris 10 bajo licencia (CDDL)

WWW.LINUX- MAGAZINE.ES

de 32 bits, tal como el PC, el tamaño de un puntero en C/C++ se define como 32 bits. El tamaño de un valor entero también es de 32 bits. Bastante a menudo, los números enteros se utilizan en lugar de punteros. Incluso aunque esto no sea correcto, el compilador de C sólo advierte sobre ello y no lo trata como un error. Sobre plataformas de 64 bit, es distinto. Los punteros son de 64 bits, mientras los números enteros todavía son de 32 bits. La asignación de un puntero de 64 bit a un número entero de 32 bits cortará los 32 bits más significativos, que pueden llevarnos a resultados “interesantes”. La mayor parte de las distribuciones sólo instalan el entorno de 32-bits para los programas de usuario por defecto, pero el entorno de 64 bit a menudo está disponible como un paquete adicional.

esto es, según con quien se hable, abierto. Si necesita una alternativa que sea realmente abierta, no estaría mal considerar la variante BSD. NetBSD ha tenido soporte para SPARC desde hace tiempo. OpenBSD tiene un excelente soporte para SPARC. La mayoría del desarrollo de OpenBSD se ha realizado en máquinas UltraSPARC. Los nuevos equipos UltraSPARC III no están soportados por OpenBSD debido a la desgana de Sun por hacer las especificaciones bajo unos términos aceptables. La versión FreeBSD para SPARC es bastante reciente. El único objetivo de los desarrolladores era sólo las máquinas UltraSPARC, no las SPARC de 32-bit. No todo el trabajo está hecho y el soporte de elementos como tarjetas gráficas está aún ■ incompleto.

RECURSOS [1] Sun systems overview: http:// sunsolve.sun.com/handbook_pub/ Systems/ [2] SPARC CPU names guide: http://www. sparcproductdirectory.com/sparccpu. html [3] Aurora Linux Hardware Compatibility: http://auroralinux.org/cgi-bin/wiki. pl?HardwareCompatibility [4] SILO bootloader: sparc-boot.org/

http://www.

[5] Páginas de la Wikipedia sobre byte endianness: http://en.wikipedia.org/ wiki/Endianness

Número 07

47


PRÁCTICO • Control Remoto

Controlando un Coche a Teledirigido desde Linux (I)

EL COCHECITO

Reconozcamos que si nos ven jugar con un coche teledirigido a nuestra edad pasaremos más de un apuro para explicarnos. ¿Quien nos va a creer si decimos que realmente lo estamos controlando desde scripts shell? POR ALBERTO PLANAS

N

o se si a vosotros os pasa, pero uno de los temas que más me ha despertado la imaginación desde siempre han sido los robots. Máquinas que incorporan programas que los hace inteligentes y autocontrolados, es apasionante. El proyecto que vamos a emprender, desde luego, no tiene esa complejidad pero es un comienzo: vamos a crear un programa que diseñado por nosotros sea capaz de dirigir un coche radiocontrolado. La inspiración vino tras ojear el libro Linux Toys[1] de la editorial ExtremeTech. El libro dedica un capítulo entero a explicar un proyecto similar a este, pero como interfaz hardware utiliza una placa comercial llamada LynX-Port conectada al puerto serie del ordenador. Por desgracia el precio del dispositivo excede en 150 Euros cualquier presupuesto. La solución que proponemos en este primer artículo además de ser

48

Número 07

mucho más barata es mucho más divertida y peligrosa (¡cuidado con el cutter y el soldador!).

Lo Duro del Hardware La mayoría de nosotros, por lo general, somos personas de software: pensamos en operaciones booleanas, instanciaciones de clases y cosas por el estilo. Por el contrario hay gente con una formación en electrónica que piensa en otros términos: diferencias de potencial e intensidades de corrientes. Ellos se quedan con la mitad de la diversión y nosotros necesitaremos cruzar al inhóspito mundo de los transistores y las soldaduras para tener la diversión completa. En una serie de dos artículos vamos a explicar los pasos que hemos llevado a cabo para diseñar y construir una pequeña plaquita que, mediante el puerto paralelo del ordenador, nos

WWW.LINUX- MAGAZINE.ES

permitirá controlar el movimiento de un coche teledirigido. Antes de empezar la tarea quiero hacer un disclaimer: Yo soy hasta la médula del mundo de las operaciones booleanas, así que he recurrido a mis coleguillas de la otra acera para que me ayuden con todo esto. Así que cualquier error o inexactitud se debe exclusivamente a su^H^H mi ignorancia. ¡Gracias chicos! : )

Presentamos a los Actores Lo primero es conseguir un coche a radiocontrol con un mando con botones. Hay que tener cuidado en este punto, todo el desarrollo descrito aquí supone que estamos ante un mando que funcione a base de pulsadores o interruptores y no por medio de las palancas que encontramos en modelos más caros y avanzados. En las tiendas esas de “Todo a pocos Euros” encontraremos modelos pre-tuneados (a juzgar por la estética) a bajo pre-


Control Remoto • PRÁCTICO

cio, ideales para desarmar sin sobresaltos. También necesitaremos ensamblar un cable paralelo, para ello usaremos un cable de red normal y corriente y un conector paralelo de 25 pines. En la misma tienda donde hemos adquirido el conector deberemos preguntar por cuatro optoacopladores 4N25 y ocho resistencias 4K7-0.25W. El precio de todo esto no debe exceder los 4 Euros. De todas maneras yo para practicar pedí un optoacoplador y un par de resistencias extras. Por último buscaremos alguna caja o recipiente para colocar los componentes electrónicos una vez ensamblados. Esto es opcional puesto que se puede usar la misma caja del mando a distancia del coche para esto. El esquema general es simple: crearemos un cable paralelo que conectará el ordenador a una placa con los optoacopladores y las resistencias, ésta, a su vez quedará conectada a la placa controladora del mando a distancia.

La idea es que cada vez que emita un pulso desde el ordenador, pueda conmutar el estado de los interruptores del mando por medio de la placa que construiremos.

Abrimos el Mando Vamos a empezar a trabajar. Tomaremos un destornillador y abriremos la tapa del mando a distancia (ver Figura 1). Lo normal es encontrar un lugar donde se coloca la antena, otro para colocar la pila de 9V y una placa de color verde con integrados, resistencias y pulsadores. Cada pulsador corresponde a cada operación que puede realizar el coche: giro a la derecha, izquierda, adelante y atrás. En mi caso hay cinco, ya que se incluye un botón para correr a mayor velocidad: Turbo total. Puesto que lo normal es encontrar solo cuatro, ignoraremos este

último pulsador. También nos daremos cuenta que hay tres cables que salen de la placa, uno va al polo positivo de la pila, otro al negativo y un tercero que va a la base de la antena. Con mucho cuidado desoldaremos los extremos del cable cercanos al contenedor de la pila. Naturalmente anotaremos en Figura 1: El mando a distancia desmontado. Se pueden ver los cinco un papel donde interruptores mencionados en el texto. estaban conectados los cables para poder luego recomposamos el interruptor cerramos el circuito nerlos a su lugar correcto. En mi caso el y se producirá el movimiento corresponcable rojo estaba soldado al polo positivo diente en el coche. Para comprobar esto de la pila, y el cable blanco al negativo. puentearemos de manera temporal los Ahora la placa queda suelta completados extremos del pulsado con un alammente y podremos retirarla del mando. bre o con una barrita de metal. Con un cutter cortaremos el Veremos que la corriente pasará y se plástico del mando para encenderán los leds (en caso de existir) y extraer el contenedor de se empezará a mover el coche en la la pila (ver Figura 2 y 3) dirección asignada a ese pulsador. y eliminaremos los troNuestra misión es, por tanto, construir zos sobrantes hasta algún tipo de mecanismo que sea capaz darle una forma adede hacer lo mismo que hemos hecho con cuada. Necesitamos el alambre: puentear el interruptor a ahora soldar otra vez los nuestra voluntad, o mejor dicho, a la conectores de la caja de voluntad del ordenador. ¿Cómo afrontar pilas a la placa para dejarlo este reto? Esa es la pregunta que le hice a tal y como se ve en la Figura 4. un amigo y su respuesta no pudo se más Si nos detenemos un momento a desconcertante: transistores polarizados. analizar la placa del mando a distancia, Corte y Saturación veremos que desde la parte posterior, las soldaduras de los cuatro o cinco pulsaVale, la respuesta era obvia para quien dores tienen una disposición similar a las supiera algo de electrónica. Pero no era mostradas en la Figura 5, dos extremos mi caso. Con un poco de paciencia y del pulsador pertenecen al circuito impreso y otros dos no. Si seguimos uno de los extremos veremos además que está directamente conectado al polo negativo de la pila, sin que medie ningún otro elemento. Esto es común a todos los pulsadores, de hecho si nos fijamos más veremos que el mismo circuito une todos los lados negativos de los Figura 2: Vamos a sacar la caja de la pila con ese cutter tan interruptores. Cuando pulamarillo.

WWW.LINUX- MAGAZINE.ES

Número 07

49


PRÁCTICO • Control Remoto

algo de lectura se puede entender el funcionamiento del transistor. De todas maneras solo nos interesa un comportamiento de estos transistores: el que se denomina paso de corte a saturación. Para explicar este modo de funcionamiento nos vamos a remitir a la Figura 6. Un transistor está compuesto por tres cristales semiconductores, dependiendo cómo se ordenen estos cristales tendremos un transistor NPN o PNP. Cada cristal es un terminal del transistor y

Listado 1: test.c 01 02 03 04 05 06 07 08 09

#include <stdio.h> #include <stdlib.h> #include <unistd.h>

50

Número 07

#include "parapin.h"

int main() { int pin_sequence[] = { 2, 3, 4, 5, 6, 7, 8, 9, -1}; 10 int i; 11 char buf[6]; 12 13 if (pin_init_user(LPT1) < 0) 14 exit(0); 15 16 pin_output_mode(LP_DATA_PINS | LP_SWITCHABLE_PINS); 17 18 /* Nos aseguramos de poner a 0 cada pin */ 19 for (i = 0; i < 8; i++) 20 clear_pin(LP_PIN[pin_sequence[i]]); 21 22 i = -1; 23 while (1) { 24 if (pin_sequence[++i] == -1) 25 i = 0; 26 printf("setting pin %d\n", pin_sequence[i]); 27 set_pin(LP_PIN[pin_sequence[i]]); 28 printf("Hit return...\n"); 29 fgets(buf, 5, stdin); 30 printf("clearing pin %d\n", pin_sequence[i]); 31 clear_pin(LP_PIN[pin_sequence[i]]); 32 } 33 }

recibe un nombre: colector, base y emisor. La corriente pasa generalmente entre el colector y el emisor siguiendo la dirección de la flecha del emisor. La corriente se controla a partir de una intensidad introducida en la base del transistor. Si esta intensidad de la base está dentro de unos rangos, el transistor amplificará la corriente colector-emisor. Si nos salimos de este rango por abajo, Figura 3: Dos horas después ya tenemos la cajita de la pila. el transistor estará en corte, y si nos salimos por el límite superior el transistor estará saturado. Cuando el transistor está en corte no hay corriente entre el colector y el emisor: es como un interruptor abierto. En este caso si miramos la Figura 6, la diferencia de potencial entre V1 (colector) y el emisor es de Vcc, puesto que no pasa Figura 4: Soldamos la caja a la placa respetando la polaridad corriente (y la diferencia de inicial. potencial entre Vcc y V1 es, naturalmente, cero). Si la intensidad de corriente es algo cosa. Vamos a usar un ordenador que más alta podremos llegar a saturar el tiene un puerto paralelo, y desde ese transistor. En este caso el puente colecpuerto voy a emitir pulsos. Tengo por tor-emisor se comporta como un hilo. otro lado una placa conectada a una pila Bueno, hay una caída muy pequeña de de 9V. Dos circuitos con dos fuentes de potencial, pero para este alimentación diferentes: ejemplo vamos a considerar ¡peligro! Corremos el riesgo que el transistor se comporta de, si nos equivocamos al como si existiera un cable trabajar con los transistoque une directamente el res, introducir 9V en el colector y el emisor. En ese puerto paralelo. Eso parece caso la diferencia de potenser que puede ser malo para cial entre V1 y tierra sería de nuestra controladora. La cero, mientras que la difesolución está entonces en rencia de potencial entre V1 desacoplar los dos circuitos y Vcc es… sí… ¡eso es!: por medio de un nuevo Figura 5: Las cuatro Vcc. Es, entonces, lo mismo invento: el optoacoplador. soldaduras traseras de que un interruptor cerrado. Aunque esto ya lo veremos un pulsador. Dos de Para poder controlar, por en profundidad en el ellas conectadas al cirtanto, la el tránsito de siguiente capítulo. cuito. corriente entre los extremos Echando un Cable de los pulsadores de nuestra placa de radiocontrol, necesitaremos poner la El puerto paralelo es, junto con el serie, patilla del emisor en la parte del inteuno de los puertos de comunicaciones rruptor que da al polo negativo de la más veteranos en la informática. En oripila, mientras que V1 tenemos que gen este puerto era unidireccional (los ponerla en la parte positiva. pines de salida eran solo de salida y los Vale, ya tenemos una parte de la teode entrada solo de entrada) y estaba desría. Mi amigo además me explicó otra tinado a conectar la impresora. Con el

WWW.LINUX- MAGAZINE.ES


Control Remoto • PRÁCTICO

soldarlo.

tar -xzvf par pin-1.0.0.tar.gz cd parapin-1.0.0 ./setup-2.6.sh make

Figura 9: Cable Ethernet soldado al conector paralelo.

A partir de una versión modificada de un fichero de ejemplo de la librería, vamos a construir un programa (Listado 1) que pondrá a cero los ocho pines de datos, para luego ir activando / desactivando cada uno de ellos en orden ascendente. Es el momento

WWW.LINUX- MAGAZINE.ES

de ir comprobando que cada uno de los cables va recibiendo potencial de manera ordenada por medio de multímetro. Es ahora la ocasión, si no lo hici-

mos en cuando soldamos el cable, de apuntar en un papel la correspondencia pin/color del cable para usarlo más adelante como referencia.

Y en el Siguiente Número… Muy bien, por este mes nos vamos a quedar aquí. Tenemos un cable preparado con ocho terminales, hemos extraído la placa del mando y la hemos soldado a la caja de la pila de 9V. Solo nos queda preparar los optoacopladores y disponerlo todo en una caja vacía. Hacer tests y un programa en C (una variación del listado de este número) que controle cada dirección del coche. Todo eso lo veremos ordenadamente en el siguiente número, aunque ya quedan pocos secretos que revelar falta cómo rematar el trabajo. ■

RECURSOS [1] Linux Toys: http://www.linuxtoys.net [2] Librería parapin: sourceforge.net/

EL AUTOR

Figura 7). La lógica de estos terminales es positiva: cada vez que envíe un “1” lógico desde el ordenador estaremos Figura 7: Esquema simplificado de los transmitiendo un potenpines de datos del puerto paralelo. cial alto y cada vez que enviemos un “0” no paso del tiempo tendremos potencial. La documentaeste conector ha ción técnica de este puerto dice que el ido evolucionanpotencial que emite debería estar do. En la actualicomprendido entre 2.5V y 5V. Para dad es bidirecciocomprobarlo he medido con un mulnal y tiene una tímetro los potenciales de estos ocho mayor velocidad Figura 6: Transistor pines y me sale 3.3V por cada uno de en la transferencia como interruptor. ellos. Es conveniente pedir uno de estos de datos. multímetros (o polímetros) prestados, El conector que hay en el ordenador es puesto que lo usaremos para testear la hembra y el que hemos comprado es corrección del cable que vamos a monmacho de 25 pines. Si nos fijamos en tar. Cómo solo vamos a usar estos ocho este veremos que en la parte donde se terminales de salida de datos podremos espera que soldemos los cables hay una tomar un cable Ethernet (Figura 8) de numeración del 1 al 25. Cada pin tiene esos que sobran para soldarlo al conecuna finalidad, aunque a nosotros sólo tor paralelo. Estos cables tienen cuatro nos interesa los 8 pines de datos. Estos pares de cobre, que dan un total de ocho son los situados entre el 2 y el 9 (ver cables. Son duros y poco maleables, pero es lo que teníamos más a mano. Una vez pasado el trance y el calor de la soldadura, deberíamos tener un cable similar al de la Figura 9. Para probar nuestro nuevo cable usaremos la librería de comunicaciones parapin que podremos descargar desde [2]. Con esta librería podremos activar y desactivar los pines que deseemos del puerto paralelo. La compilación de la librería es muy sencilla: Figura 8: El cable ethernet y el conector paralelo antes de

http://parapin.

Alberto Planas es desarrollador de aplicaciones bajo entornos libres desde hace varios años. Aficionado a la tecnología desde siempre, alterna sus horas de sueño con las horas dedicadas al estudios de las Redes Bayesianas, programación con las QT, perfeccionamiento de C++, desarrollo en Java y mil cosas más.

Número 07

51


PRÁCTICO • Email anonimo

Reenvío anónimo de correo con Mixmaster

MENSAJES DESDE NINGÚN SITIO

El correo anónimo protege la identidad de los remitentes de las posibles escuchas en la red. El protocolo Mixmaster ofrece a los usuarios una tecnología madura para el envío anónimo y el cliente Mixmaster basado en texto es un ejemplo de una aplicación libre para el envío anónimo. POR JENS KUBIEZIEL

C

uando Johan Helsingius comenzó un servicio para el envío anónimo de correo electrónico en 1993, no podía prever en que clase de problema se estaba metiendo. Johan es ahora famoso por su trabajo pionero, a pesar de las reacciones hostiles, o precisamente debido a ellas. Al comienzo de los 90, las listas de correo y los grupos de discusión de USENET habían dejado la fase en la cual principalmente se concentraban en temas científicos y relacionados con la informática. En USENET también se dieron numerosas discusiones políticas y religiosas muy polémicas. Como estas discusiones eran de interés para los servicios secretos y de los jefes, los usuarios buscaban una manera de expresarse anónimamente. Johan Helsingius desarrolló un software para despersonalizar mensajes de correo electrónico y lo instaló en su servidor.

52

Número 07

Pronto se conoció la dirección de este servidor (http://anon.penet.fi/) y todavía se habla de él con reverencia. Para utilizar el servicio, los usuarios tenían que enviar un mensaje de correo electrónico con una entrada especial en la cabecera para la dirección. El servidor sustituía la dirección del remitente por una dirección con el formato [anXXXX@anon. penet.fi] (donde XXXX era una combinación de números) y remitía el correo electrónico a la dirección especificada en la línea adicional de la cabecera. El servicio era fácil de utilizar y atrajo a muchos usuarios. Antes de 1996, el programa manejaba alrededor 10.000 mensajes al día. Éste era el año que el movimiento de la Cienciología demandó al operador, exigiendo la publicación de las direcciones de correo electrónico. Una corte finlandesa decidió que los mensajes de correo electrónico no estaban amparados por la ley de secretos del correo postal facilitando así la escucha

WWW.LINUX- MAGAZINE.ES

secreta y la identificación de los usuarios. Esto, a su vez, impulsó a Helsingius, a desconectar el servidor [1].

Cypherpunk y Mixmaster Para cuando Johan Helsingius apago su servidor de correo anónimo, el desarrollo progresaba a la velocidad del rayo. Los Cypherpunks, grupo que se centró en la protección de la privacidad y el uso del cifrado, desarrollaron un cierto número de modelos de servidores anónimos (remailers) que no dependían de un servidor central. Su trabajo estaba basado en un artículo publicado en 1981 por David Chaum [2], describiendo redes mezcladoras que habían sido implementadas con la idea de proteger el anonimato de las partes durante el intercambio del correo electrónico. El principio es comparable a enviar una carta en varios sobres. Si Ralf Penn quería enviar una carta anónima, inicial-


Email anonimo • PRÁCTICO

mente dirigía la carta al destinatario, pero en vez de enviar la carta directamente, agrega un número de estaciones intermedias. Pone la carta en otro sobre y escribe la dirección de una de estas estaciones en el sobre. La carta consigue un sobre nuevo para cada uno de estas estaciones. Entonces se envía la carta a la primera dirección intermedia, donde se abre el sobre externo. Se destruye el sobre y la carta se envía a la siguiente dirección del siguiente sobre hasta que, finalmente, la estación intermedia envía la carta al destinatario real. El destinatario solamente puede rastrear la carta hasta la ultima estación intermedia, ya que se han destruido el resto de los sobres. Con este proceso se garantiza el anonimato del remitente.

Primera Generación de Servidores Anónimos El primer modelo de servidor anónimo que se basó en este principio fue Cypherpunk Remailer, también conocido como remailer Tipo I. Al diferencia del modelo de Helsingius, se involucran un cierto número de servidores, que trabajan independientemente unos de otros. Si un servidor no es accesible, los usuario pueden recurrir a cualquier otro. Como los servidores están situados en países distintos, con diferentes sistemas legales, los agresores lo tendrán difícil para intentar lo que sea contra este tipo de servidores. Según se ha descrito anteriormente, se utilizan técnicas criptográficas para envolver el mensaje. Este proceso implica que el remitente cifre el mensaje con la llave pública de cada servidor anónimo de la cadena. Los usuarios pueden solicitar la llave vía correo electrónico (Listado 1) o vía el sitio web del servidor. Cada servidor anónimo en la cadena solamente puede descifrar la parte del mensaje previsto para su uso. La parte descifrada contiene la dirección a la cual el servidor tiene que remitir el mensaje. La organización del servidor anónimo elimina algunas de las debilidades del servicio de Helsingius, pero todavía quedan algunos problemas. Por ejemplo, cada servidor anónimo remite los correos electrónicos tan pronto como llegan. Esto permite que un atacante deduzca relaciones entre los mensajes

entrantes y salientes y de esta manera sacar conclusiones sobre la identidad del remitente y el destinatario. Un atacante también podía interceptar un mensaje y reinsertarlo reiteradamente en la cadena de servidores anónimos. Debido a que cada mensaje se maneja exactamente de la misma manera, toma exactamente la misma ruta. Esta debilidad fue identificada por Lance Cottrell en 1.995 en “Mixmaster & Remailer Attacks” [3]; también propuso algunos cambios, los cuales condujeron a remailer Tipo II, el Mixmaster.

Como Funciona Mixmaster Mixmaster no remite inmediatamente los mensajes entrantes. En vez de eso, espera hasta que se han agregado bastantes mensajes a la cola. Cuando el destinatario de mensajes está lleno, el servidor envía los mensajes a la siguiente estación en la cadena en un orden aleatorio. Para que sea imposible que un potencial investigador identifique los mensajes por

Figura 1: Pantalla de inicio del cliente Mixmaster.

su tamaño, el servidor anónimo también hace que todos los mensajes tengan un tamaño uniforme. Si un mensaje es demasiado pequeño, Mixmaster agrega caracteres de relleno al azar; si un mensaje es demasiado grande, Mixmaster divide el mensaje en bloques del mismo tamaño. Esta técnica hace imposible que los atacantes asocien los paquetes entrantes con los paquetes salientes. Además, a cada paquete del mensaje se le asigna un ID. Mixmaster comprueba si el ID del paquete ya se ha registra-

Cuadro 1: Correo en Servidores Anónimos Cypherpunk 1. Se compone un mensaje y se añade la cabecera. El mensaje se direcciona al primer destinatario. Se insertan dos lineas al comienzo del mensaje: :: Anon-To: john.smith@example.org Estas lineas proporcionan al ultimo servidor anónimo la información que necesita para enviar el mensaje a su destinatario final. 2. Se cifra el mensaje y se añade la cabecera cifrada. Ahora se cifra el mensaje con la clave pública del servidor anónimo. Se inserta otra linea delante del texto cifrado: Encrypted: PGP. Esta linea indica al servidor anónimo que debe descifrar las siguientes lineas. 01 02 03 04 05

:: Encypted: PGP 03 -----BEGIN PGP MESSAGE----Version: GnuPG v1.2.5 (GNU/Linux) 06 06 07 hQEOA1gu3H8UQS6IEAP/UgB5ZbyRS5 Kkmi/mD4Vi4PHBg6XOOoS8BL/t6HGa CkMc 08 BHAB4YCnQGz1IEzxhrMnYxeFl0Ca9B fsGTel1DjnHeLWypdW4XuPNnCiNA8f

WWW.LINUX- MAGAZINE.ES

wdnu 09 C58rmBo2B8XTjcc1eGjD+SayRn/F3e Gc3rdGw3EkwWpRxwgcXU/SvHwE6vnO nTwE 10 +9fWwweS+WUFRCBNPqaUZkXqZ6jBpV e5fRAUZDRhqOhUcEA0nvRHn9D7QMJu qV9R 11 7CPEAb/+Dd2+hxqqezeXpTHOqJKiUi E8SqGnBBAw5uOpMffuGG120bLPEDfu M7yF 12 xaXWu6TQ94GTV/+2Inw9LufUPNsaTf rWWRxFNphWvTh9a+MRIIKb7abSCee4 qcwP 13 vjJsDM2f 14 =7HnR 15 -----END PGP MESSAGE----3. Se repiten estos pasos por cada uno de los servidores anónimos. Si el usuario quiere añadir otro servidor anónimo, se añade una nueva linea Anon-To: en el comienzo del mensaje. Después se repite el paso número 2. Este paso se repetirá para cada uno de los servidores de la cadena. 4. Enviar el mensaje. El mensaje se envía al primer servidor anónimo de la cadena, el cual reenviará la información indicada más arriba.

Número 07

53


PRÁCTICO • Email anonimo

do y si es así, descarta el mensaje. Al descartar los mensajes con paquetes registrados se protege al servidor contra los ataques por reinserción. Estos pasos eliminan algunas de las debilidades del servidor anónimo de Cypherpunk.

Además, los servidores anónimos de Mixmaster utilizan el cifrado simétrico, que acelera los proceso con los mensajes. De hecho, Mixmaster tiene un montón de ventajas sobre el servidor anónimo de Cypherpunk.

Aunque una descripción detallada de cómo funciona todo esto está lejos del alcance de este artículo, los lectores que lo deseen pueden comprobar el borrador del RFC para conocer el protocolo de Mixmaster [4].

Listado 1: Recuperación de claves de un Servidor Anónimo 01 From: Jens Kubieziel <jens@example.org> 02 To: Dizum Remailer <remailer@dizum.com> 03 Subject: remailer-key Respuesta de Remailes: 01 From: Nomen Nescio <remailer@dizum.com> 02 To: "Jens Kubieziel" <jens@example.org> 03 Subject: Remailer key for dizum 04 05 $remailer{"dizum"} = "<remailer@dizum.com> cpunk mix pgp pgponly repgp remix latent hash cut test ek ekx esub inflt50 rhop20 reord post klen64"; 06 07 Here is the PGP key: 08 09 Type Bits/KeyID Date User ID 10 pub 1024R/31234B37 2000-04-24 Nomen Nescio 11 <remailer@dizum.com> 12 13 -----BEGIN PGP PUBLIC KEY BLOCK----14 Version: Mixmaster 2.9.0 (OpenPGP module) 15 16 mQCNAzkEMTMAAAEEAOa7vR4GZCRUuk aoBqlGZbru6c6UlAgLOs8Od2I+UF1K TY5Z 17 XKClKK5UblHDiFgzJk+0NxVR3ePgJ5 6MJeK2iGPVZ/i8thC1gR6btrrSONzf K7rr 18 bW2aKlDfihyjz6emPYkHqPj0hAwxGQ iTMkEPF5jmEdWeZN4kph8q6DIxI0s3 AAID 19 tCFOb21lbiBOZXNjaW8gPHJlbWFpbG VyQGRpenVtLmNvbT6JAJUDBRA5BDEz Hyro 20 MjEjSzcBAWqABAC+6voEDspSDQUn0R

54

Número 07

mLjy1zPsysx7Zdc7J/c40l6rGS9n1t ZQiw 21

3XLUuc8UzXNuL5VNAD40SfbxVpNwJJ PYM3 40

CTpILinXiCLP3I9Pu9T4kl1gHVYyIu 2pqeNOJL0Wz1w6HkwQjGsGdxtFDyFC mfxe 22

fA2RY0IbsMefKvotlXRkKZHzFbj0Kc nkvF0d0WhXzCgTEdwYwhaQQJzWznvu Vzqm 41

c0htDM5WQn1DqtIaG98mNcStkY2B5e 7VNP2aVd66oTeDPLYD4VCsrIT0Dw== 23 =RJCD 24 -----END PGP PUBLIC KEY BLOCK----25 26 Type Bits/KeyID Date User ID 27 pub 1024D/B1685FE7 2000-04-24 Nomen Nescio<remailer@dizum.com> 28 sub 1024g/B2547D80 2000-04-24 29 30 -----BEGIN PGP PUBLIC KEY BLOCK----31 Version: Mixmaster 2.9.0 (OpenPGP module) 32 33 mQGiBDkEMTMRBADqwatBmgC/yuOlyq rzFL1toAzDrSiH06eZlo8eCRj+Uqw6 lSu0 34 RxxhSZaBUIsuqogRHFiuxU+RqUia24 1vEjSN0x7ZV+LipTZc282Vb0PuDv7f L2Ll 35 Ez8QEJMz+zpMjICRFVNgHGRvhHUGu1 8i9BTmzigpyuMpMwwlB2HvTBO4CQCg wNPp 36 B/I45a4PZ2+zmZyVQUuAh+UD/je6Od uoTwwq6176bUfcvCtVH9DP4DwoCgrV wd3c 37 r9KoR9hO7TAGL5Ah7eJ1GvndRH7KPB fuE6h/kMCohNgKGluPn4je6vJ6N0J/ O3av 38 +jJ1mHN2TImOp0+VFXFPm1A7zqA/MW gOG7DWggfmguZ9E6TuAbfOIvy/Ksqn jt70 39 JyelA/9YyKH56juAGYHdHbPQR/NAED

WWW.LINUX- MAGAZINE.ES

18GZoomfsbsgfYHwfD0CCTSqVj3GlM TXHO6ol7QOw69HGlNZYrQhTm9tZW4g TmVz 42 Y2lvIDxyZW1haWxlckBkaXp1bS5jb2 0+iQBNBBARAgANBQI5BDEzAwsDAgIe AQAK 43 CRBos3tosWhf52NaAKCjS4nyqFvmq8 5a5HwGPHhTBhGPJwCdHrYGFeIVOh8O JJUR 44 vQiaIRNRG/W5AQ0EOQQxMxAEAL5wXB X5gxZE4MDaUDE9TWRwo6VnE6dUvu6I a45O 45 hyAVDp5AoquHpJv7PvhA/nLiDFJspm 2eDdLglaUGcDIt6MJEbXV/I9v/qQ7q njh/ 46 Cm84gsss+uKTWZjga2NRZ/Y4JGePIm LWBlmapwPoHBhJEXsdp1zl/0DiDGmH dV12 47 xPHfAAMFBACB12J/HSJznAwpGsIB03 NrBz2Iw7NqrhepSfcExGiWrGMJnAjA d98I 48 C84j5AYwMhGWMPmzcNqdcqWEI9Z2cW d0nXndt8GJAUCpfEb5T2snTnoqaiIB 4nYq 49 vyG1HwBM7OMXw9k13smo+5PgE3EHyQ 2pvIuAMoOZz6o/zq6d0xH6XokAPwMF GDkE 50 MTNos3tosWhf5xECVY0AoJcXnCHayC kFAE17SXU33cc3R1qnAKCpVZkKbuQS phYg 51 M4wRXciYWpAoyw== 52 =Vkzl 53 -----END PGP PUBLIC KEY BLOCK-----


Email anonimo •

Figura 2: El cliente Mixmaster muestra un resumen de servidores anónimos disponibles.

Operaciones Diarias Mixmaster también es el nombre de un paquete software que ha sido desarrollado por programadores voluntarios como un proyecto de fuente abierta. El desarrollo está hospedado en Sourceforge [5]. Los usuarios pueden descargar el código fuente desde Sourceforge y construir el programa desde las fuentes. Además Debian ha precompilado los binarios del cliente Mixmaster para sus usuarios [6]. Después de instalar el software, los usuarios deben descargar las claves públicas y las estadísticas de disponibilidad para los servidores anónimos. Muchos operadores de un servidor anónimo publican estos datos en sus sitios web [7]. El paquete Mixmaster de Debian incluye un guión de Perl llamado mixmaster-update. El guión descarga automáticamente los archivos necesarios y está diseñado para trabajar como una tarea cron o como parte de del guión IP-up. Después de descargar los archivos y de almacenarlos en /var/lib/mixmaster/stats/, ya puede teclear mixmaster y arrancar el programa (véase el Cuadro 1). Dentro del programa, los usuarios pueden componer, leer, y enviar mensajes. Por ejemplo, si se necesita enviar un mensaje de correo electrónico, se le pide al usuario que rellene los campos remitente y asunto del

mensaje cuando se pulsa la tecla [M]. Pulsar [E] en el menú de enviar permite componer el mensaje. Se vuelve al menú tras terminar el mensaje. Por omisión, el programa selecciona automáticamente una cadena de cuatro servidores anónimos, aunque los usuarios pueden teclear [C] para definir una cadena de servidores anónimos (Cuadro 2). El Cuadro 2 muestra servidores anónimos y sus valores de fiabilidad. Esta estadística es solamente una instantánea y se puede esperar una cierta desviación, así que estos valores se deben utilizar solamente como un indicador aproximado. Después de seleccionar una cadena, se puede enviar el mensaje o el conjunto de mensajes presionando [M] y después pasar a componer otro mensaje si fuese necesario. Cuando se han acumulado bastantes mensajes, o si un usuario emite un comando a tal efecto, el programa envía los mensajes a las otras estaciones en la cadena. En definitiva, Mixmaster es muy fácil de usar y tiene un interfaz de usuario auto-explicativo. Los recién llegados no deben tener ningún problema para conseguir acostumbrarse a usar el software y a enviar mensajes anónimos siempre que necesiten hacerlo.

Pros y Contras del Correo Anónimo En una sociedad plural, la comunicación anónima tiene connotaciones sórdidas. La gente tiende a pensar en acusaciones, amenazas de bombas, correo basura o documentos ilegales. Sin embargo, los servidores de correo anónimos solamente cumplen con un requisito para la seguridad de la infraestructura de TI, que es, la que oculta el hecho de que la comunicación está teniendo lugar. Hay muchas razones legitimas para querer ocultar la comunicación a la opinión pública. Por ejemplo, un repentino incremento del volumen de correo electrónico entre dos compañías puede dar pistas sobre que las compañías estén considerando una posible asociación, aunque el contenido de los mensajes esté cifrado. Miembros de grupos radicales, defensores de reformas en países autoritarios o personas con enfermedades graves estigmatiza-

WWW.LINUX- MAGAZINE.ES

das por la sociedad, también desearán proteger su anonimato. Por otra parte, no hay que negar el potencial que tiene el envío de correo anónimo para hacer cosas inadecuadas. Los grupos de presión y las autoridades de correo electrónico se apresuran a precisar el posible abuso y la controversia resultante ha provocado llamamientos para prohibir los servicios de anonimato. Johan Helsingius, el hombre detrás del remailer, afirma que nunca ha utilizado el servicio que inventó. Sin embargo, para él era importante desarrollar una tecnología que diera soporte al anonimato y que permitiera a los usuarios ejercitar su derecho a la libertad de opinión. Y este acceso al correo electrónico anónimo aun está disponible en los servidores ■ anónimos alrededor del mundo.

RECURSOS [1] Nota de prensa sobre el cierre de anon.penet.fi: http://www.fitug.de/ news/1997/penet.html [2] David L. Chaum, “Untraceable Electronic Mail, Return addresses and Digital Pseudonyms”: http://world.std. com/~franl/crypto/chaum-acm-1981. html [3] Lance Cottrell, “Mixmaster & Remailer Attacks”: http://riot.eu.org/ anon/doc/remailer-essay.html [4] Borrador del RFC para el protocolo de Mixmaster, Version 2: http://www.ietf. org/internet-drafts/ draft-sassaman-mixmaster-03.txt [5] Página principal del proyecto Mixmaster: http://mixmaster. sourceforge.net [6] Información en el paquete Debian Mixmaster: http://packages.qa.debian. org/m/mixmaster.html [7] Estadísticas para el servidor anónimo Noreply.org: http://www.noreply.org/ echolot/

Número 07

55


DESARROLLO • Perl

Trabajando con el depurador de Perl

DOCTOR BISHO

Algunos desarrolladores condenan el uso de depuradores, pero en muchos casos, un depurador es la ultima esperanza del programador. En nuestra entrega mensual de Perl, echamos un vistazo al depurador integrado en Perl. POR MICHAEL SCHILLI

A

Linus Torvalds no le gustan los depuradores. En su opinión, su uso equivale a mezclar a tontas y a locas un montón de código para después intentar dotarlo de algún tipo de sentido atizándolo con el depurador. Existen alternativas a los depuradores. Por ejemplo, la cuidadosa aplicación del registro de cambios (logging) elimina en muchos casos la necesidad de depurar. Como se puede ver en [2], Log::Log4perl le ayudará a integrar un nivel de depuración apropiado dentro de una aplicación y realizar actividades de depurado remoto. Sin embargo, hay ocasiones donde un programador no tiene ninguna alternati-

56

Número 07

va. Y perl tiene un depurador que localiza rápidamente los errores aplicando puntos de ruptura, acciones y puntos de vigilancia (watchpoints).

Ejecución de Pruebas El programa de ejemplo wsrv (descargable desde [1]), nos dice que tipo de servidor Web está oculto bajo una URL específica. Por ejemplo, llamando a wsrv http://sun.com veremos que Sun utiliza su propia tecnología: Sun Java System Web Server 6.1. Si queremos ejecutar el guión dentro del depurador, solamente debemos iniciar el modo de linea de ordenes con perl -d y después añadir la ruta al guión

WWW.LINUX- MAGAZINE.ES

y sus argumentos. En este caso, deberemos teclear: perl -d wsrv http://microsoft.com. El depurador arrancará y preguntará al usuario por las ordenes después de mostrar la primera “linea” de código (que en este ejemplo consiste en 2 lineas de texto): Loading DB routines from U perl5db.pl version 1.27 Editor support available. Enter h or `h h' for help, or U `man perldebug' for more help. main::(wsrv:8): my $url = shift main::(wsrv:9): U or die "usage $0 url"; DB<1>


Perl • DESARROLLO

Pulsando n (de next) en el prompt se ejecuta silenciosamente la primera sentencia, extrayendo la URL de la estructura del argumento @ARGV y dejándola en $url. Desde n solamente se ejecutara una única sentencia, luego el depurador se parará antes de ejecutar la siguiente linea:

1 16144 2 1107021419 3 1107031419 4 'Microsoft-U IIS/6.0

Se aplica lo mismo a los hashes que, a efectos de visualización, incluso los podemos definir directamente dentro del depurador:

DB<1> n main::(wsrv:10): U my (@fields) = head($url) main::(wsrv:11): U or die "Fetch failed"; DB<1>

La siguiente instrucción ejecutable Figura 1: El GUI DDD integra el depurador de Perl. se compone de las líneas 10 y 11 de wsrv. En vez de ejecutar la línea comdepurador que continúe ejecutando el pletamente con n, vamos utilizar s (por código hasta donde termina la función step) para echar una ojeada más de cerca actual y que vuelva al programa principal. a lo qué está ocurriendo dentro del códiEntonces se para automáticamente: go. Como podemos ver, el depurador prilist context return U mero se zambulle de cabeza en la función from principal dentro del módulo LWP::Simple LWP::Simple::head: 0 al que se ha llamado en la línea 10: ‘text/html’ LWP::Simple::headU (.../LWP/Simple.pm:70): 70: my($url)=@_; 70==>my($url) = @_;

La orden l (de list) muestra algunas de las siguientes lineas:

1 16144 2 1107018115 3 1107028115 4 ‘Microsoft-IIS/6.0’ main::(wsrv:9): print U “Server:$fieldsU [3 ] \n”;

71: _init_ua()unless$ua; 73: my$request= U HTTP::Request->U new(HEAD=>$url); 74: my$responseU =$ua->request($request); [...]

Para moverse hacia abajo, sin ejecutar realmente el código, simplemente pulsamos otra vez l. La alternativa podría ser especificar una ventana como l 70 + 20 (20 lineas comenzando en la 70) o l 70-100 (de la linea 70 hasta la 100). La siguiente linea ejecutable se indica mediante ==>.

Volviendo al comienzo Después de desplazarse hacia abajo con l, pulsando un punto, el listado regresa al punto donde el guión continuará. Tecleando r (de return) le decimos al

El depurador es tan atento que nos da inmediatamente los valores de retorno de la función head() antes de mostrar la siguiente linea ejecutable. Si estamos interesados en el valor del elemento de la estructura $field[4], podemos usar la orden p (de print) del depurador para mostrar el valor antes de la instrucción print() de que el programa principal lo haga. Tecleando p $field[4] en el prompt nos dará MicrosoftIIS/6.0, mostrando que al parecer Microsoft también está usando su propia tecnología. Para mostrar el contenido completo de la estructura @field, debemos usar p @field, pero esto puede que no formatee la salida de una manera fácil de utilizar. Afortunadamente, la función x del depurador maneja las estructuras más complejas sin esfuerzo: DB<2> x @fields 0 'text/html'

WWW.LINUX- MAGAZINE.ES

DB<3> %h U =(donald=> 'duck', mickey =>'mouse') DB<4> x %h 0 'donald' 1 'duck' 2 'mickey' 3 'mouse'

Si quiere que muestre las parejas valorclave en vez del estilo estructura, simplemente pase una referencia al hash en x: DB<5> x \%h 0 HASH(0x837a5f8) 'donald' => 'duck' 'mickey' => 'mouse'

Vemos que el número en el prompt se incrementa. También aparece en el historial, que podemos recuperar tecleando H: DB<6> H 5: x \%h 4: x %h 3: %h=(donald=>'duck',U mickey=>'mouse') 2: x @fields 1: p $fields[4]

Para volver a imprimir los elementos de $field, todo lo que tenemos que hacer es teclear un signo de admiración seguido del número en la entrada del historial !1. Esto es suficiente por ahora, pasemos a tareas más complicadas.

Un problema real Imaginemos que un programador acaba de terminar un módulo llamado Foo::Bar y quiere preparar el módulo para publicarlo en CPAN. El paquete incluye un archivo llamado Makefile.PL (ver [1]) y un archivo con el módulo lib/Foo/Bar.pm el cuál también puede incluir alguna documentación (Listado 2). Invocando perl Makefile.PL obtenemos este mensaje un tanto extraño:

Número 07

57


DESARROLLO • Perl

WARNING: Setting ABSTRACT U via file 'lib/Foo/Bar.pm' failed at ExtUtils/U MakeMaker.pmline 606

Algo confuso ¿Verdad? El programa Makefile.PL utiliza el módulo ExtUtils::MakeMaker, un venerable trozo de brujería programado en Perl, que no es precisamente fácil de entender. Otra vez, un depurador nos permite echar un vistazo si tecleamos perl -d Makefile.PL. Puesto que la advertencia señala a la linea 606 del módulo ExtUtils::MakeMaker como origen del error necesitamos echar un vistazo a esta ofensiva linea. La orden file, f ExtUtils/ MakeMaker.pm tomará el archivo. Después necesitamos establecer un punto de ruptura en la linea 606 (b 606) para que el depurador se detenga allí más adelante. La orden c (de continue) le dice al depurador que ejecute

el programa a partir del próximo punto de ruptura: DB<2> c 606: push U @{$self->{RESULT}}, $self->nicetextU ($self->$method(%a));

En vez de configurar el punto de ruptura con b 606 y teclear c para ir allí, c 606 hará que el programa se ejecute y lo parará en la linea 606. Pero teniendo un punto de ruptura permanente podremos volver más tarde fácilmente. La orden push mostrada en la siguiente línea del código de fuente anterior aparece para añadir el resultado de una llamada a una estructura desde un método. Puede ser que sea interesante descubrir a que método llama $method Para averiguar eso, usamos p $method, que imprime post_initialize; que realmente no nos da un Tabla 1: Ordenes del depurador conocimiento más profunOrden Significa do. Controlar el flujo del programa El depurador Perl ejecuta n Ejecuta la siguiente linea y para la linea actual cuando tecles Avanza a la siguiente linea, para en la amos n; pero no reacciona. subrutina n ejecuta la linea pero no r Finaliza la función actual, regresa y para obtenemos la advertencia R Vuelve al comienzo y vuelve a ejecutar que esperábamos. Parece Mostrando variables p Valor de la salida como si MakeMaker ejecux Volcado (x \%hash) tase la linea varias veces y Navegando por la fuente emitiera el error en la enésil Desplaza hacia adelante ma iteración. Desplaza hacia atrás Antes tecleamos c (contiv Muestra el código circundante a la linea nue) para movernos a la actual siguiente iteración, (parán. Vuelve a la linea actual donos otra vez en el punto f Cambia a otro archivo fuente de ruptura de la linea 606) Navegación dinámica c Linea Ejecuta el código de esta linea y des pués se para c Función Ejecuta el código de función y después se para en la función b Linea Establece un punto de ruptura en la linea b Función Establece un punto de ruptura en la fun ción b Linea/Func Punto de ruptura con condición condición a Linea/Func Punto de acción en linea/función Acción w Linea/Func Punto de vigilancia en la variable linea/ código función < Orden Establece el pre-prompt L Muestra los puntos de ruptura, los pun tos de vigilancia y acciones B/A/W Borra, los puntos de vigilancia y accio nes

58

Número 07

DB<3> a U 606 printU ("$method\n");)

Utilizando a, el número de la linea y algo de código Perl, el depurador nos sacara ahora el contenido de $method cada vez que se ejecute la linea 606, incluso si se está ejecutando a toda velocidad. Le hacemos seguir con la orden continue: DB<4> c 606:push @ {$self->{RESULT}},

WWW.LINUX- MAGAZINE.ES

Listado 2: Módulo de ejemplo 01 =head1 NAME 02 03 Foo::Bar - Blah blah blah 04 05 =head1 SYNOPSIS 06 07 useFoo::Bar;

$self->nicetextU ($self->$method( %a )); platform_constants

Como hemos fijado un punto de ruptura en la línea 606, el depurador para allí en la siguiente vuelta. Debido al punto de acción, imprime el valor actual de $method, una función llamada platform_constants, desconocida hasta ahora.

Búsqueda de Advertencias Pero todavía no hay rastro de la advertencia. Suprimamos el punto de ruptura en la línea 606 tecleando B 60, y pidiéndole al depurador que continúe el programa tecleando c: DB<4> B 606 DB<5> c […] staticmake test ppd WARNING: Setting ABSTRACT ßß via file ‘lib/somehowßß /anyway.pm’ failed Después de varias tandas de resultados, se demuestra que el método ppd provoca que al fin aparezca la advertencia. Desafortunadamente, la ultima acción fue más lejos de lo que queremos, pero tranquilos, tecleando R permitirá que recomencemos el programa desde el principio. Ahora podemos fijar un nuevo punto de ruptura para ExtUtils/MakeMaker.pm, línea 606, pero esta vez añadimos una condición: DB<5> f ExtUtils/MakeMaker.pm DB<6> b 606 $method eq "ppd" DB<7> c

El depurador no parará en el punto de ruptura en la línea 606 a menos que la variable $method se establezca en “ppd”. El programa se lanza, se para y el depurador nos muestra otra vez el código de la línea 606. La orden p $method confirma que realmente ha ocurrido la condición que acabamos de especificar. Ahora podemos utilizar la orden m para descubrir que métodos de los refe-


Perl • DESARROLLO

renciados en la línea 606 son capaces de llamar a $self: DB<8> m $self [...] via MM -> ExtUtils::MM -> U ExtUtils::MM_Unix: U post_initialize U via MM-> ExtUtils::MM U ->ExtUtils::MM_Unix: postamble viaMM -> ExtUtils::MM->U ExtUtils::MM_Unix:ppd

El método ppd se define en el módulo U t i l s : : M M _ U n i x . Pa ra d e s c u b r i r e s t e error, necesitamos que el programa continúe con la orden c, pero que se pare cuando se active ExtUtils::MM_Unix::ppd: DB<9> c ExtUtils::MM_Unix::ppd ExtUtils::MM_Unix::ppdßß (ExtUtils/ MM_Unix.pm:U3322): 3322: my($self) = @_; El depurador está ahora en la primera linea del método ppd, dentro del módulo ExtUtils::MM_Unix. Tras pulsar l para echar un vistazo alrededor, descubrimos que ppd llama al método parse_abstract: DB<10> l 3322==> my($self) = @_; 3323: if ($self->U {ABSTRACT_FROM}){ 3324: $self->{ABSTRACT}U = $self->parse_abstract($self->U {ABSTRACT_FROM})or

Con c parse_abstract indicamos que continúe y que se pare en la primera linea de parse_abstract: DB<11> c parse_abstract ExtUtils::MM_Unix::U parse_abstract(ExtUtilsU /MM_Unix.pm:3045): 3045: my($self,$pa sefile) = @_;

Con l + 20 mostramos las siguientes 20 lineas y la siguiente expresión regular que Makefile.PL se utiliza para coger el resumen del módulo en la distribución: 057:nextunless/^($packages\s-\s)(.*)/;. Pulsar w nos permite configurar un punto de vigilancia para la variable $package para parar el programa después de pulsar c en el momento que el valor de $packages cambie:

DB<2> w $package DB<3> c Watchpoint 0: pack ge changed: old value: '' newvalue: 'Foo-Bar'

El método parse_abstract busca la expresión regular /^Foo::Bar\s-\s)(.*)/. El nombre del módulo necesita estar en la línea seguido de un solo espaFigura 2: El depurador gráfico Ptkdb está basado en Perl/Tk cio y un guión. Puesto y es fácil de instalar desde CPAN. que la línea 3 en el listado 2 está identada, con el nombre siguiendo controla el trazado del depurador, con la identación, la extracción falla. solo agregarlo a la línea de ordenes antes de llamar al depurador:

Interfaz Gráfico de Usuario

Si se prefiere el estilo GUI de apuntar y pulsar, se puede enlazar el depurador Data Display Debugger ddd con el motor de Perl. Encontraramos ddd en las principales distribuciones de Linux. Lo siguiente llama a wsrv en ddd para examinar la página de inicio de Microsoft: ddd -perl wsrv U http://microsoft.com

La Figura 1 muestra la GUI en acción. Se facilita la fijación de puntos de ruptura y la vigilancia de expresiones (tales como la cadena $url en la Figura 1). Se puede realizar algo parecido a la orden de pre-prompt del depurador de Perl, Pero algunas personas prefieren que se muestren correctamente formateadas ajustándose al formato de la GUI. Como alternativas, existe un IDE comercial del tipo GUI, Komodo y uno libre Ptkdb, que están disponibles en CPAN. perl -MCPAN -e U 'install(Tk,Devel::ptkdb)' perl -d:ptkdb wsrv U http://microsoft.com

La Figura 2 muestra Ptkdb iterando con el método de la petición en el paquete LWP::UserAgent. La columna derecha muestra los atributos del objeto LWP::UserAgent, que se pasó al método.

Trazas Por ultimo, simplemente un pequeño truco para mostrar como se consigue ejecutar cada línea de código por un guión. La variable de entorno de PERLDB_OPTS

WWW.LINUX- MAGAZINE.ES

PERLDB_OPTS="NonStop=1U AutoTrace=1 frame=2 "U perl -d Sprogram

La opción AutoTrace cambia el depurador al modo de trazado, donde muestra cada línea del código fuente antes de ejecutarla. La opción NonStop le dice al depurador que no pare al principio o al final para la entrada del usuario. frame=2 añade mensajes de entrada y de salida o subrutinas de entrada y de salida. Si también necesita información sobre cualquier parámetro pasado y los valores devueltos por las subrutinas, necesita especificar frame=4. Por ultimo, la opción Perl -S busca la $PATH completa para el guión, no solamente el directorio actual. Cada nueva distribución de Perl viene con una corta introducción al arte de la eliminación de errores, con perldoc perldebtut se muestra la página del manual. En perldebug encontrará documentación más detallada y si realmente desea obtener los pormenores de la depuración, ■ examine perldebguts.

RECURSOS [1] Listados para este articulo: http:// www.linux-magazine.es/Magazine/ Downloads/07/Perl [2] Michael Schilli, “Retire your Debugger,log smartly with Log::Log4perl”: http://www.perl.com/ pub/a/2002/09/11/log4perl.html [3] Peter Scott y Ed Wright: “Perl Debugged”, Addison-Wesley 2001

Número 07

59


Python • DESARROLLO

Aprovecha y usa cualquier librerías de Java.

JUKEBOX CON JYTHON

Damos otro pequeño avance con Jython: Este mes utilizamos librerías Java y analizamos la reproducción de sonidos desde Java para crear un mini reproductor de MP3 donde reproducir nuestra música. POR JOSÉ PEDRO ORANTES Y JOSÉ MARÍA RUÍZ

E

l formato de sonido MP3 es uno de los mas consolidados dentro de la música. A diario miles de personas en todo el mundo comparten y crean millones de ficheros en MP3 y los reproductores de música, ya sea en el ordenador, en los equipos de música o para el coche, se han adaptado para reproducir este formato. Actualmente la mayoría de los reproductores de MP3 desarrollados para PC (como xmms, etc..) soportan este formato de música. Pero, ¿cómo podemos crear nuestro propio reproductor de MP3? Programar un reproductor de sonido en Java, exceptuando que reproduzca los formatos comunes que soporta, es bastante complicado. Se necesita mucho tiempo para realizar el descodificador del formato (MP3 en este caso) que procese los datos (conocidos como stream de audio) que contiene cada canción codificada en este formato. Por eso, lo mejor para poder crear nuestro reproductor, es utilizar librerías que ya estén preparadas para descodificar el stream y para que podamos reproducirlo. En este caso utilizaremos librerías bajo la licencia LGPL (Lesser General Public License).

En Java, en general, para reproducir un sonido es necesario definir varias partes: Obtener el stream de audio, descodificarlo, tratarlo y escribirlo en el dispositivo de nuestro PC.

Requisitos Como requisitos fundamentales, vamos a necesitar nuestro querido intérprete de Jython. Para obtenerlo nos dirigimos a su web [1] y descargamos la ultima versión (versión 2.1 en el momento de escribir esto). Necesitamos la nueva versión de Java (JRE 1.5 o JDK 1.5), disponible en [3], ya que incorpora algunas novedades y mejoras que necesitaremos para nuestro pequeño reproductor de MP3. Por ultimo necesitamos obtener las librerías que vamos a utilizar, MPSPI que podemos encontrar en la web de Javazoom (ver [2]) y más concretamente en http://www. Javazoom.net/mp3spi/mp3spi.html. Una vez instalados el interprete de Jython y el JDK 1.5 (o JRE 1.5) debemos proceder a instalar las librerías de Javazoom. Para ello, descomprimimos el fichero que contiene las librerías de Javazoom (ya sabéis, unzip -x fichero.zip o bien tar xvfz fichero.tar.gz ) y, como en

WWW.LINUX- MAGAZINE.ES

la mayoría de los casos, se nos creará un directorio nuevo con el contenido del fichero. El primer paso será copiar las librerías que necesitamos al directorio lib/ext/ de nuestro JRE (Maquina virtual de Java). En nuestro caso, después de instalar el JDK 1.5, este directorio se encuentra en /usr/Java/jdk1.5.0_02/jre/lib/ext/ y debemos copiar aquí (obviamente como root) los paquetes mp3spi1.9.2.jar, y dentro del directorio lib, jl1.0.jar y tritonus_share.jar. Una vez hecho esto, al arrancar el intérprete de Jython nos aparecerá un mensaje por cada archivo que hemos copiado, indicando que dicho paquete se está procesando para su uso (justo antes de arrancar nuestro intérprete). Para confirmar que todo es correcto, en el interprete introducimos import Javazoom y no debería salir ningún mensaje de error (en caso de que así fuera, comprobad que los archivos están copiados en el sitio correcto). Con estas librerías tenemos ahora un descodificador del stream de nuestros archivos MP3 además de algunas otras utilidades (librerías para conversión de formatos, lector de la información de las

Número 07

61


DESARROLLO â&#x20AC;˘ Python

Listado 1: jython-julebox.py 01 import org.tritonus.share.sampled.TAudioFormat as taf 02 import org.tritonus.share.sampled.file.TAudioFileFormat as ftaf 03 import javax.sound.sampled as sampled 04 import java.io as io 05 import jarray 06 import java.util as util 07 import javax.swing as swing 08 import java.lang as lang 09 import java.awt as awt 10 import java.util as util 11 12 class jyMusica(lang.Thread): 13 def __init__(self): 14 self.panelReproductor() 15 self.menu() 16 self.win = swing.JFrame("JyMusica", size=(150, 150),windowClosing=self.exit) 17 self.win.setJMenuBar(self.menu ) 18 self.win.contentPane.add(self. pnlBoton, awt.BorderLayout.NORTH) 19 self.win.contentPane.add(self. pnlBoton2, awt.BorderLayout.CENTER) 20 self.win.show() 21 self.win.setResizable(0) 22 self.win.pack() 23 24 def exit(self, event): 25 lang.System.exit(0) 26 27 def run(self): 28 archivo = io.File(self.nombre) 29 inp = sampled.AudioSystem.getAudioIn putStream(archivo) 30 baseFileFormat = sampled.AudioSystem.getAudioFileF ormat(archivo) 31 baseFormat = baseFileFormat.getFormat() 32 self.getTag(baseFileFormat) 33 self.player.play() 34

62

NĂşmero 07

35 36 37 38 39 40 41 42

def getTag(self, baseFileFormat): properties = ftaf.properties(baseFileFormat) key = "author" val = properties.get(key) key = "title" tag= properties.get(key) key = "album" alb = properties.get(key)

43 self.txtArea.setText("") 44 self.txtArea.append("\nAuthor: ") 45 self.txtArea.append(val + "\n") 46 self.txtArea.append("title: ") 47 self.txtArea.append(tag +"\n") 48 self.txtArea.append("Album: ") 49 self.txtArea.append(alb + "\n") 50 51 52 53 54 55 56

def panelReproductor(self): self.pnlBoton = swing.JPanel(awt.FlowLayout()) self.pnlBoton2 = swing.JPanel(awt.FlowLayout()) acciones = ["Play", "Stop"] self.txtArea = swing.JTextArea(6,18) self.areaSrl = swing.JScrollPane(self.txtArea )

57 self.pnlBoton.add(self.areaSrl ) 58 for cadaBoton in acciones: 59 self.pnlBoton2.add(swing.JButt on(cadaBoton, actionPerformed=self.accionMen u)) 60 61 def menu(self): 62 opciones = ["Play",

WWW.LINUX- MAGAZINE.ES

"Stop"] 63

self.menu = swing.JMenuBar() 64 archivo = swing.JMenu("Archivo") 65 for eachOpcion in opciones: 66 archivo.add(swing.JMenuItem(ea chOpcion, actionPerformed=self.accionMen u)) 67 archivo.addSeparator() 68 self.menu.add(archivo) 69 70 def accionMenu(self, event): 71 self.accion = event.getActionCommand() 72 if self.accion == 'Play': 73 selector = swing.JFileChooser() 74 rtn = selector.showOpenDialog(self.w in) 75 archivo = selector.getSelectedFile() 76 self.player = pad.AdvancedPlayer(io.FileInpu tStream(archivo)) 77 self.nombre=archivo.toString() 78 self.play() 79 80 elif self.accion=='Stop': 81 self.stop() 82 83 def play(self): 84 self.hilo = lang.Thread(self) 85 self.hilo.start() 86 87 def stop(self): 88 self.player.stop() 89 # self.line.drain() 90 # self.line.stop() 91 # self.line.close() 92 # self.din.close() 93 # self.hilo.interrupt() 94 # self.hilo.finalize() 95 # 96 97 if __name__=='__main__': 98 jyMusica()


Python • DESARROLLO

applets. Una de las limitaciones de CLIP, canciones -artista, álbum, etc.- y algunas un array de 4096 Bytes que crearemos es que necesita cargar el sonido entero en cosas más). usando jarray.zeros(4096,'b'). Si quisiéramemoria antes de reproducirlo lo cual Nos falta un último paso: Debemos elimos que nuestro array fuera de Strings, aumenta los recursos utilizados, además minar una de las limitaciones de Jython. haríamos un jarray.zeros(45,Java. de que sólo está preparada Java tiene distintos tipos de lang.String). En caso de que necesitárapara reproducir los formatos variables, métodos, consmos (que, de hecho, necesitamos) pasar típicos en Java (Wav, A-Law, tructores, etc., que pueden como argumento la longitud de nuestro U-Law, etc.). Nosotros utiliser privados (private) o array a un método, haríamos len(array) zaremos un SourceDataLine públicos (public). Es imporya que los arrays de Jython no tienen un y trabajaremos con un tante saber que en Jython no método como .length() de los arrays de pequeño Buffer que llenarese pueden declarar variables, Java. Figura 1: Aquí tenemos mos con el stream de sonido métodos, etc., como públicas Por ultimo, crearemos el a nuestro pequeño descodificado que luego ni como privadas y cuando SourceDataLine y desde su método reproductor de MP3. introduciremos en nuestro intentamos acceder, por write() escribiremos nuestro sonido en dispositivo de sonido. ejemplo, a una interfaz absnuestro dispositivo de audio (entonces ya Los pasos que seguiremos para tratar el tracta privada, nos saltará un mensaje de empezaremos a oír música) y luego bastasonido serán los siguientes. Primero, error diciendo que no es posible acceder a ra con rellenar el buffer (desde nuestro obtendremos el Stream y el formato de la interfaz abstracta con el denominador AudioInputStream) y volver a escribirlo sonido (utilizando AudioSystem y sus public. en nuestro dispositivo de sonido hasta métodos getAudioInputStream, y Solventar esta limitación es sencillo. que lleguemos al final de la canción o getAudioFileFormat). Además, del formaBasta con editar el fichero de registro de hasta que paremos la reproducción. to de audio (AudioFormat) leeremos los jython que se encuentra en el direcFinalmente, y dado que vamos a usar datos del MP3 (el título, el álbum, el torio d o n d e h a y a m o s i n s t a l a d o un pequeño interfaz para manejarnos autor, etc…). j y t h o n ( e n nuestro caso $HOME/ (hecho con swing), Una vez obtenido Desarrollo/jython-2.1/registry) y busnecesitaremos progratodo esto (el descodificamos la línea python. mar Java con hilos cador ya esta haciendo security.respectJavaAccessibility = true y (Thread), por lo que su trabajo), necesitarecambiamos true por false. Ya tenemos nuestro reproductor mos crear el buffer, nuestro sistema preparado. heredara de la clase que no es otra cosa Por último, es muy importante tener a Thread y en el que un array de Bytes. mano la API (documentación) de Java momento de reproduFigura 2: Este es el selector de Para crear dicho array. disponible también en su web y la de las cir, se lanzará un hilo ficheros (JFileChooser) que se lanJython nos provee de librerías que vamos a utilizar. De que será el encargado zará al ejecutar su método un modulo llamado Javazoom deberéis bajar la documentade reproducir la músishowOpenDialog(). jarray que tiene dos ción de JLayer (la de MPSPI viene en el ca mientras seguimos constructores: zeros y fichero que bajasteis al principio) y la API teniendo el control en array. El primero crea un array inicializade las librerías tritonus la podéis bajar de nuestro pequeño reproductor. Un Thread do a 0 del tamaño y del tipo que nosotros [4] (están al final de la página). es una secuencia de instrucciones que se necesitemos y el segundo crea un array ya ejecuta en paralelo con la aplicación que ¿Sonido en Java? inicializado (por nosotros) de un tipo de lo invoca, podríamos decir que mientras datos. El sonido de Java requiere que los progranosotros usamos nuestra aplicación, lanVeamos una ejemplo del uso de Jarray. madores conozcan como funcionan sus zamos otra pequeña aplicación que reproclases principales. Las que vamos a utiliducirá nuestro sonido sin interferir en la zar son AudioSystem, AudioFormat y >>> import jarray primera (ejecución en paralelo). SourceDataLine. AudioSystem está conec>>> a = jarray.zeros(4,'i') Métodos y Librerías tada a los dispositivos del sistema de >>> print a forma que podemos acceder a ellos adearray([0, 0, 0, 0], int) Vamos a implementar un total de once más de que dentro de ella tenemos méto>>> b = jarray.array([1,2,3,4],U métodos. Empezaremos describiendo el dos para tratar el stream de audio. 'i') motor del reproductor y terminaremos AudioFormat con el que manejaremos el >>> print b describiendo los de creación del interfaz. formato de audio que necesitaremos. Y array([1, 2, 3, 4], int) Son cuatro métodos. SourceDataLine que nos proporciona la • Run(). Desde este método es de entrada al dispositivo de sonido, es decir, Como podéis ver el funcionamiento es donde comienza el proceso del que podremos introducir nuestro sonido sencillo. Jarray.zeros recibe dos argumentratamiento de nuestro fichero en el dispositivo y de esta forma escutos que son el numero de elementos y el MP3. Desde aquí obtendremos charlo). tipo de datos, en este caso 'i' son enteros el InputStream y el AudioFormat Java proporciona una clase más directa (integer). Y jarray.array recibe la secueny una vez que los tengamos, que es CLIP. Suele utilizarse más para cia que forma el array y el tipo de datos pasaremos a llamar al siguiente sonidos pequeños en aplicaciones o en también. Para nuestro buffer necesitamos método (Reproducir() ha de lla-

WWW.LINUX- MAGAZINE.ES

Número 07

63


DESARROLLO • Python

64

Número 07

dos Play y Stop, el método Play() que iniciara el hilo que reproducirá la canción, además de lanzar el selector de ficheros y el método Stop() que detendrá la reproducción en curso. La interfaz es muy simple, una área de texto (donde se insertarán los datos del MP3) el botón Play que abrirá un selector de ficheros (fig2) desde el que seleccionaremos el fichero a reproducir y el botón Stop que detendrá la reproducción de la música. Cada vez que pulsemos en Play tendremos que seleccionar de nuevo la canción a reproducir. En vosotros queda la idea de mejorarlo añadiéndole una lista de reproducción, botón para pasar a la siguiente canción y a la anterior, etc. En el número 4 de Linux Magzine, vimos el uso de otros componentes como JList y almacenar datos en ficheros, con eso sabréis ponerle una lista de reproducción a nuestro player. Para reducir el tamaño de la aplicación hemos omitido algunos puntos como recoger las excepciones, esto lo podréis notar cuando se abra el selector de ficheros y pulséis el botón cancelar, abráis un fichero que no contiene MP3, etc. Deberéis depurarlo. Y por último, el método __init__() típico en las aplicaciones Python y Jython que inicializará los valores de la aplicación creando el panel contenedor de la interfaz gráfica, e inicializará la variable booleana desde la que se controlará la parada del reproductor (Stop) y el método exit() que permitirá a nuestra aplicación salir cuando hagamos clic en el botón de cerrar la ventana (la típica X arriba a la derecha). Otro punto que debemos comentar es el trato que le da Jython a las variables booleanas ya que no existen los valores true y false. Para solucionar este problema, en vez de true utilizamos el valor 1 y en vez de false utilizaremos el 0, que son los valores equivalentes para Java. Las librerías que vamos a utilizar son las siguientes: org.tritonus.share.sampled.TAudioFormat y org.tritonus .share.sampled.file.TAudioFileFormat que vamos a usar para obtener la información de nuestro MP3. Javax.sound.sampled aquí dentro están nuestras preciadas clases SourceDataLine, AudioSystem, etc. Java.io para el acceso a ficheros. jarray que nos permite crear arrays compatibles con Java, y por ultimo Java.util, Javax.swing, Java.lang, Java.awt,

WWW.LINUX- MAGAZINE.ES

Java.util que nos servirán para el resto de nuestras tareas. En caso de que quisiéramos reproducir canciones situadas en Internet abriríamos la ubicación creando una ocurrencia URL (deberemos añadir la librería Java.net, a la cual le pasamos el protocolo que vamos a usar, el host al que tiene que conectarse, el puerto de conexión y el nombre del fichero. Una vez que tenemos preparada la ubicación, el objeto URL con el método openStream() empieza a extraer el stream de ese fichero, ya solo tenemos que pasárselo a nuestro reproductor (desde el get.AudioInputStream()) y al poco rato (dependiendo de la velocidad de conexión y el tamaño) empezaremos a escuchar música. Todo el programa se puede ver en el Listado 1.

Otro Reproductor es Posible Sí, sí que tenemos una forma mas fácil de crear un reproductor. El cometido de este artículo era ver como podíamos crear, a partir de los elementos que tenemos de Java, un reproductor según nuestras necesidades (como el tamaño del buffer). En las librerías que hemos instalado de Javazoom, en JLayer concretamente, existe una clase que crea un reproductor de MP3 completo al que únicamente hemos de pasarle el InputStream (con FileInputStream) cuando lo creamos, y al ejecutar el método .play() (Fig3) de dicho reproductor y él se encargará del resto. Y El mes que viene volveremos con ■ más scripts en Python y Jython.

RECURSOS [1] http://www.jython.org [2] http://www.Javazoom.net [3] http://Java.sun.com [4] http://www.tritonus.org [5] Descargas de magazine.es

LOS AUTORES

marse run() ya que es una implementación del método run() que heredamos de la clase Thread. De esta forma al invocar el método start() del hilo nuevo, directamente ejecutara el método run(). • Reproducir(). Aquí es donde creamos el buffer de Bytes y el SourceDataLine. De esta forma, recibimos el AudioInputStream (el stream de audio) y crearemos el SourceDataLine (que recibimos desde el método getLine que definiremos un poco más adelante). Luego entraremos en un bucle en el que contaremos los bytes que leámos y los bytes que escribamos, y desde el que leeremos (llenando el buffer) desde el AudioInputStream y luego lo escribiremos en el dispositivo de sonido desde el SourceDataLine. Finalmente, cuando se termina la canción, cerraremos el SourceDataLine y el AudioInputSource. • GetLine(). Desde este método creamos el SourceDataLine (desde AudioSystem) a partir del stream ya descodificado y nos lo devolverá. Usaremos un método que implementa el JDK1.5 que es el getSourceDataLine(), de esta forma nos evitamos hacer downcasting desde el método getLine() de AudioSystem (que nos devuelve un DataLine.info). • Finalmente tenemos getTag(). Este método será el encargado de devolvernos la información de la canción (autor, titulo, etc…). Recibirá el formato del fichero sin descodificar, creara una ocurrencia de tipo Map desde la cual accederemos a los datos que mas nos interesan, en este caso, álbum, titulo y autor. Para los métodos de la interfaz (fig1), tendremos el creador del botón y del cuadro de texto (panelReproductor()) desde el que crearemos los botones (JButtons) y el área de texto (JTextArea()) que nos mostrará la información del MP3, el creador del menú (menu()) que creará un menú con dos opciones (play y stop) que realizarán las mismas funciones que los botones, el recogedor de los eventos del ratón (accionMenu()) que ejecutará los meto-

http://www.linux-

José Pedro Orantes Casado cursa 3º de Ingeniería Técnica en Informática de Sistemas y desde hace varios años utiliza linux como herramienta de trabajo y como sistema de escritorio. Jose María Ruíz está realizando el Proyecto Fín de Carrera de Ingeniería Técnica en Informática de Sistemas y lleva mas de 7 años usando y desarrollando Software Libre, y desde hace 2 en FreeBSD


La Columna de Charly • ADMINISTRACIÓN

El día a día del Administrador de Sistemas: Smokeping

MENOS HUMOS Si no recibe una respuesta de ping o si la respuesta tarda mucho, debe tomarlo como una advertencia. Pero, ¿quién realiza ping durante todo el día? Necesita una utilidad de monitorización basado en ping como Smokeping. POR CHARLY KÜHNAST

L

a herramienta de monitorización Smokeping está en la lista de paquetes de muchas distribuciones como Debian y Gentoo. Y si no puede encontrar el paquete, los 200 KByte del fichero tar en [1] son muy fáciles de instalar. Smokeping necesita unas cuantas herramientas del mismo autor, tal como RRDTool, Fping, SpeedyCGI y un servidor web donde puede mostrar los resultados [2]. Smokeping utiliza un fichero de configuración central que proporciona a los administradores ejemplos muy útiles. El fichero de configuración es el lugar donde configurar los paths de los binarios y del servidor web. Las cosas empiezan a ponerse interesante cuando se configura los resorte de alarmas, ya que Smokeping utiliza un formato extremadamente poco usual pero efectivo. Un resorte por defecto sería así: +bigloss type = loss pattern = ==0%,==0%,==0%,BB ==0%,>0%,>0%,>0%

+bigloss es la etiqueta del resorte. Debe ser única y alfanumérica. La entrada type=loss dispara al resorte cuando los paquetes se pierden. La entrada pattern le proporciona al resorte el modelo a comparar. Las entradas separadas por comas son para el porcentaje de paquetes perdidos. Por defecto, Smokeping realiza pings a la

SYSADMIN

tarjeta veinte veces cada cinco minutos. Si los paquetes se pierden en tres pings consecutivos, Smokeping dispara el resorte.

Feliz Ping-eado El segundo ejemplo se ha tomado también de la configuración por defecto: +rttdetect type = rtt pattern = <10,<10,<10,<10,U <10,<100,>100,>100,>100

type = rtt significa que Smokeping no reacciona ante paquetes perdidos; en cambio observa aumentos notables en el tiempo de viaje de ida y vuelta. Los valores del viaje de ida y vuelta separados por punto y coma (en milisegundos) en la línea pattern se define una secuencia. El ejemplo espera respuestas de ping en menos de 10 milisegundos. Si una secuencia de múltiples RTTs de más de 100 milisegundos ocurre (>100,>100,>100), Smokeping le avisa de ello. Bien hasta ahora, pero Smokeping no sabe a qué servidores se les quiere hacer el seguimiento. Otra sección más abajo en el fichero de configuración define los servidores. Por defecto utiliza ordenación geográfica: +World ++Europe +++UK +++Switzerland

He añadido mi servidor: menu = Germany title = Charlys Webserver host = kuehnast.com alerts = bigloss,rttdetect

Después de lanzar Smokeping, la herramienta smokeping.cgi, que forma parte del paquete, muestra las respuestas del servidor (ver Figura 1). Si una de estas entradas produce una notificación al resorte, se me avisa por email. Smokeping puede hacer mucho más que esto, como se muestra en la documentación [1]. Ahora todo lo que necesito es colgar mi servidor para poder ver a Smokeping en ■ acción.

RECURSOS [1] Smokeping: http://people.ee.ethz.ch/ ~oetiker/webtools/smokeping/ [2] Documentación: http://people.ee.ethz. ch/~oetiker/webtools/smokeping/ docs/install.en.html

Taller del Administrador: Backups…66

EL AUTOR

Sus datos nunca se perderán si implementa una estrategia correcta de backup. Alta Disponibilidad para VPNs……...68 Switch transparente para un túnel de seguridad sin perturbar conexiones VPN.

Figura 1:El CGI muestra los resultados de Smokeping.

WWW.LINUX-MAGAZINE.ES

Charly Kühnast es Gerente de Sistemas Unix en el centro de datos de Moers, Alemania cerca del conocido Rhin. Entre sus labores se incluye la seguridad del cortafuego, la disponibilidad y cuidado del DMZ (zona desmilitarizada).

Número 07

65


ADMINISTRACIÓN • BackUps

Administración: Backups

RIESGOS LABORALES Los datos siempre acaban perdiéndose en el peor momento, pero con una estrategia de copias de seguridad adecuada no tendremos problemas para restablecer los archivos perdidos. POR MARC ANDRÉ SELIG

D

ebido a la amplia tipología de requerimientos en lo concerniente a pérdida de datos, a lo largo del tiempo han surgido un gran número de soluciones distintas. Cada tipo de solución tiene sus ventajas e inconvenientes. En el artículo de este mes de taller de administración, describiremos algunas técnicas y herramientas básicas de backups.

Alternativas de backups La cinta magnética ha sido durante mucho tiempo el medio de almacenamiento más habitual, y lo sigue siendo en redes con grandes cantidades de datos a almacenar. Las cintas son baratas en relación a su capacidad, pero su escasa velocidad es probablemente su mayor desventaja. Una solución basada en cintas y un jukebox suele ser la mejor para backups automatizados. Aún así, las cintas magnéticas suelen ser demasiado caras para entornos domésticos o de oficinas pequeñas. Hoy día las soluciones basadas en CD, DVD, memorias flash o discos duros internos o externos son mucho más comunes. En entornos mayores, los administradores pueden usar también sistemas NAS (Network Attached

66

Número 07

Storage) para añadir capacidad a sus discos duros. Del mismo modo que existen distintos medios de almacenamiento, existen también diferentes estrategias de backup. En la mayoría de los casos, los administradores optan por backups incrementales, que guardan sólo los cambios ocurridos desde la última copia. Este método permite un ahorro considerable de espacio en los medios de almacenamiento, que se traduce en una mejora en cuanto al coste, y la convierte en la estrategia más utilizada. La gran desventaja de los backups incrementales es que la restauración de los archivos consume mucho más tiempo que con un backup completo. Además de todo esto, es probable que los administradores tengan que estar cambiando el medio de almacenamiento si no disponen de un equipo jukebox. Una tercera variante es el backup diferencial, en el cual siempre se guarda los cambios respecto a la última copia completa. La Figura 1 ilustra los tres métodos.

Off-line, on-line, “en caliente” La elección del método de backup puede depender de las circunstancias en las que se recuperarán los datos. Si el fichero que necesita un usuario está en una cinta dentro de un armario, el proceso para recuperarlo puede llevar tiempo y esfuerzo.

WWW.LINUX-MAGAZINE.ES

Por contra, los backups on-line “en caliente” se guardan en dispositivos que soportan acceso automatizado 24 horas al día, 7 días a la semana. Este método ahorra tiempo, y normalmente también dinero. Sin embargo, los backups “en caliente” sólo protegen frente a daños del hardware. No tienen protección frente a errores del usuario o administrador, errores que propagaran al medio de almacenamiento tan pronto como se haga la copia. Esta es la razón por la cual la mayoría de los administradores no considera el backup en caliente como alternativa al convencional.

Formatos Los administradores no se ponen de acuerdo en los pros y contras de guardar los ficheros simples tal cual, o bien guardados dentro de archivos que los contengan, con un formato estructurado, metadatos y checksum. Los ficheros simples se recuperan más rápidamente, y si el medio de almacenamiento sufre un fallo sólo quedará afectado ese archivo, mientras que si un archivo “contenedor” falla, seguramente se pierdan muchos ficheros. Los archivos que contienen ficheros tienen algunas características que los backups de ficheros simples no tienen. Por ejemplo, pueden guardar información acerca del propietario, permisos de acceso y marcas de tiempo junto con el fichero propiamente dicho. Incluso podemos hacer copia de seguridad de disposi-


BackUps • ADMINISTRACIÓN

tivos especiales del directorio mente a grandes sistemas. Para /dev/. Señalar también que las usuarios domésticos, o pequecintas magnéticas no están ñas empresas puede que les sea orientadas a almacenamiento más que suficiente un backup de ficheros individuales. basado en CD o DVD. En comAlgunos programas, como tar paración con las cintas magnéy cpio, intentan un término ticas, los CDs y DVDs son extremedio. Si un archivo cpio resulta madamente baratos y tienen un dañado, quedan afectados sólo ciclo de vida bastante largo. los ficheros guardados en la El listado 1 muestra un sencizona dañada. El programa vuelllo script para hacer backups, ve a sincronizar desde la siguienque utiliza gpg para encriptar te marca de fin de fichero, y los datos y guarda un checksum todos los ficheros que le siguen MD5. Si se pierde el CD, al se recuperan sin problemas. menos no tenemos que preocuAl tratar este tema, también Figura 1: Un backup completo guarda todos los ficheros, un bacparnos de que accedan a los hemos de considerar la comprekup diferencial guarda todos aquellos ficheros modificados desde datos indebidamente. Podemos sión y la encriptación de los el último backup completo y un backup incremental guarda todos modificar el script para poder ficheros. La característica de los ficheros modificados desde el último backup, ya fuese este usar memoria flash, o un disco resincronización de cpio que incremental o completo. duro externo. hemos comentado sólo funciona El Camino a Seguir para backups sin compresión. Si un error encriptación de datos. La mayoría de los Un sistema de backups es tan bueno nos impide descomprimir un archivo conprogramas de encriptación usados en baccomo lo sean los datos guardados en el tenedor, cpio no nos será de gran ayuda. kups nos impedirán acceder a los datos si medio de almacenamiento. Y estos datos La popular herramienta gzip se cierra sufrimos un error. Una manera de soluciono tienen que ser necesariamente los en caso de leer errores, por lo que es una narlo podría ser comprimir y descomprique debían de haberse guardado. Por lo mala elección para hacer copias de segumir cada fichero de manera individual tanto tiene mucho sentido verificar los ridad. (zcat al menos descomprime el dentro del archivo contenedor. La herrabackups para comprobar que pueden archivo hasta el punto donde aparece el mienta afio es una alternativa a cpio a leerse y que son los datos adecuados error de lectura). La alternativa, bzip2, este respecto, ya que puede manejar la cada cierto tiempo. comprime y descomprime los ficheros en encriptación individualizada de los ficheAsimismo, deberíamos asegurarnos de bloques de 900 kbytes como mucho. Si ros. que los usuarios son capaces de recupesufrimos un error de lectura, probableBackup con CD rar los datos por sí mismos. No hay nada mente sólo perdamos un bloque, salvánpeor que tener la necesidad de recuperar dose de este modo los bloques anteriores Una solución backup con cinta magnétiun backup configurado por otra persona y posteriores. ca como Amanda (véase cuadro 1) Los administradores también se hace mucho tiempo, y no ser capaces de puede ajustarse a entornos menores, encuentran ante un dilema similar con la hacerlo porque esta persona ya no está pero sigue estando orientada preferenteen la empresa. El caso de pérdida total de los datos Listado 1: Script simple para Backup conlleva otras muchas consideraciones. 01 #!/bin/sh Como el propio sistema operativo proba14 tee 02 blemente no estará disponible, tiene sen/tmp/root/backup-$TODAY/backup 03 [ `id -u` -eq 0 ] || ( echo tido prever un sistema de rescate. Este -$TODAY.tar.gpg | \ 'Must be root to write a sistema podría arrancar desde un CD o 15 md5sum -b CD/DVD!' && exit ) disco duro externo y permitiría al admi>/tmp/root/backup-$TODAY/bac04 nistrador recuperar todos los datos desde kup-$TODAY.tar.gpg.md5 05 TODAY=`date +%Y%m%d.%H%M` allí. Por supuesto, este tipo de soluciones 16 06 MYKEY='0x598342d9' requiere de una buena planificación y 17 cd /tmp/root 07 ■ algo de práctica. 18 mkisofs -r -pad -o backup.iso 08 umask 022 09 mkdir -p /tmp/root/backup-$TODAY 10 11 cd / 12 tar cf - etc home usr/local | \ 13 gpg -v --homedir $HOME/.gnupg -e -r $MYKEY | \

19 backup-$TODAY 20 cdrecord -v -eject -multi dev=0,0,0 -driveropts= burnproof -speed=24 -pad backup.iso 21 22 rm -rf backup-$TODAY backup.iso

WWW.LINUX-MAGAZINE.ES

RECURSOS [1] Afio: http://directory.fsf.org/sysadmin/ backup/afio.html [2] Amanda: http://www.amanda.org [3] Amanda para Windows: sourceforge.net/projects/ amanda-win32/

Número 07

http://

67


ADMINISTRACIÓN • VPN

Alta Alta Disponibilidad Disponibilidad para para VPNs VPNs

RUTAS ALTERNATIVAS

IPSec obstaculiza muchos de los trucos que se emplean en los productos de alta disponibilidad. Le mostramos una solución que proporciona backups transparentes para las conexiones IPSec. POR JOHANNES HUBERTZ

L

os administradores a menudo desean que el sistema de conexión de la red conmute transparentemente a un sistema de backup si la conexión primaria cae. Pero si se utiliza una VPN con IPSec para proteger su tráfico de que sea enrutado a través de Internet, la línea de backup necesita una atención especial. La razón para esta atención es que IPSec [1] [2] requiere una dirección IP consistente al final del túnel, así cuando la red conmuta a un túnel distinto, la dirección IP debe conmutar a un nuevo extremo o sino las conexiones existentes finalizarán. El Border Gateway Protocol (BGP [3]) ofrece un método fiable de mantenimiento de direcciones IP con un número de proveedores. Desafortunadamente, el servicio de los proveedores a menudo impide a los administradores usar BGP en una conexión de Internet existente. La solución es que, muchos administradores prescinden de la automatización y si ocurre lo peor, conmutar manualmente de la línea estándar a la línea de

68

Número 07

backup en un proceso que a menudo implica físicamente el parcheado de las interfaces. No es exactamente una buena solución. Sería preferible para los dispositivos de la red detectar un fallo en la línea y conmutar automáticamente. El sistema automático ideal también generaría la configuración para ambos extremos haciendo referencia a una configuración central. Para los cortafuegos y las puertas de enlace IPSec, la configuración central es una tecnología en desarrollo. En Linux, SSPE (Simple Security Police Editor, [4]) maneja esto. Sin embargo, la solución HA presentada en este artículo no está capacitada para SSPE aún.

Linux-HA El proyecto LINUX-HA [5] pretende aportar soluciones de alta disponibilidad para servidores Linux. Este software permite a los administradores configurar una VPN de alta disponibilidad (que no requiere BGP) que conmutará desde el sistema estándar a operaciones de backup de forma rápida. Para implementar

WWW.LINUX-MAGAZINE.ES

esta solución, se necesitan dos túneles independientes paralelos; sólo se utilizará uno de estos túneles en cada momento determinado. Cada túnel en cada red tiene sus propios extremos, los cuales sirven como puertas de enlace de la red local. Linux-HA implementa una reconfiguración automática de direcciones IP para apoyar esta configuración. Ambos nodos HA tiene una dirección individual y otra compartida. La dirección compartida sólo la utiliza una de las máquinas en cada momento determinado. El mecanismo está diseñado para servidores operativos (Web, email,…) con una dirección compartida. El servicio se ejecuta en ambas máquinas y escucha cada dirección IP, sin embargo, las peticiones sólo llegan mediante la IP compartida. Esto permite a Linux-HA asignar la dirección externa a la segunda máquina en caso de emergencia, sin que los usuarios se den cuenta de que la primera máquina está caída. Un cable serie proporciona el heartbeat para las dos máquinas. El heartbeat es una parte importante de Linux-HA, ya


VPN • ADMINISTRACIÓN

primer ordenador. Genera una transmisión ARP usando una dirección IP compartida y su propia dirección MAC en la LAN (y realiza una especie de ARPSpoofing legal). Además, la máquina permite un alias de interfaz. Tan pronto como el primer nodo vuelve a ponerse online, el protocolo heartbeat se asegura de que el Servidor 2 deshabilite el interfaz del alias de nuevo, mientras el Servidor 1 habilita su interfaz y la transmisión ARP en la LAN.

Dos Instalaciones Linux-HA Figura 1: Una red cliente está conectada a un proveedor de servicios externo mediante una VPN. Esta conexión utiliza dos caminos alternativos; si es necesario, el Túnel 2 asume el papel del Túnel 1.

que los ordenadores implicados lo usan para comprobar la disponibilidad de sus

parejas. Si un ordenador falla, su pareja adopta la dirección IP perteneciente al

El escenario de la Figura 1 muestra al cliente a la izquierda y a la empresa a la derecha. El lado de los clientes (izquierda, gw-aa) y el lado del proveedor de servicios IPSec (derecha, gw-ba) utilizan ESP (Encapsulating Security Payload y el protocolo IPSec) para enviar paquetes a

Listado 1: Supervisor HA VPN 01 02 03 04 05 06 07

#!/bin/bash # Supervisor HA VPN en gw-aa # El otro extremo del túnel TARGET="gw-ba"

# Número de segundos entre pings 08 TIMEOUT=1 09 10 # Esperar MAXFAIL * TIMEOUT, antes de habilitar backout 11 MAXFAIL=5 12 13 # Espera HYSTERE * TIMEOUT después de un corte 14 # antes de que el script vuelva a las operaciones normales 15 HYSTERE=180 16 17 # Suposición: No hay condición de error el comienzo 18 FAIL=0 19 20 VERBOSE="" 21 22 ACTION_FAIL_START="/root/bin/H A-VPN-action-script start" 23 ACTION_OK_AGAIN="/root/bin/HAVPN-action-script stop" 24 25 PING=/usr/bin/echoping 26 LOG="/usr/bin/logger -t

HA-VPN" 27 28 29 30 31 32

math () { eval echo "\$(($*))" } echo "`date +%Y%m%d%H%M%S``basename $0` arrancando" | $LOG

33 34 while : 35 do 36 VAL=`$PING ${VERBOSE} -u -t $TIMEOUT -s 5 ${TARGET} 2>&1` 37 ERROR=$? 38 if [ $ERROR -gt 0 ] ; then 39 echo "$DAT $ERROR $FAIL $VAL" | $LOG 40 # Timeout 41 if [ $FAIL -lt 0 ] ; then 42 # Otro error en la fase 43 FAIL=`math $MAXFAIL + 1` 44 fi 45 if [ $FAIL -eq $MAXFAIL ]; then 46 # Empieza backout 47 : 48 FAIL=`math $FAIL + 1` 49 echo "$DAT arrancando backup ahora: ${ACTION_FAIL_START}" | $LOG 50 ${ACTION_FAIL_START} 51 else 52 if [ $FAIL -lt $MAXFAIL ] ; then

WWW.LINUX-MAGAZINE.ES

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

FAIL=`math $FAIL + 1` fi fi else # Ping con éxito if [ $FAIL -gt $MAXFAIL ]; then FAIL=`math 0 - $HYSTERE ` fi if [ $FAIL -le $MAXFAIL -a $FAIL -ge 0 ] ; then FAIL=0 fi if [ $FAIL -lt 0 ] ; then # Espera un período de histéresis echo "$DAT $ERROR $FAIL $VAL" | $LOG FAIL=`math $FAIL + 1` if [ $FAIL -eq 0 ] ;then # Restaura las operaciones normales : echo "$DAT normal de nuevo: ${ACTION_OK_AGAIN}"| $LOG ${ACTION_OK_AGAIN} fi fi fi #echo "$DAT $ERROR $FAIL $VAL" | $LOG sleep $TIMEOUT done # never happens: exit 0

Número 07

69


ADMINISTRACIÓN • VPN

través del túnel. El túnel reemplazado (2) se configura en uno de los routers de backup en la parte de arriba (gw-ab, gwbb) de manera parecida al Túnel 1. Linux-HA se está ejecutando entre gwaa y gw-ab y entre gw-ba y gw-bb. El heartbeat utiliza el puerto serie, que no no se necesita para ningún otro propósito y es independiente de la red, IPSec e IPtables. Ambas instalaciones HA trabajan separadamente e independientemente el uno del otro. En operaciones normales, gw-aa y gw-ba tienen una dirección IP local del router (10.1.255.254 izquierda y 10.31.0.254 derecha). En caso de un corte, estas direcciones migran a gw-ab y gw-bb. Para permitir a los administradores explícitamente conectar a los ordenadores en un sistema HA, ambos sistemas tienen adicionalmente direcciones IP estáticas en sus respectivas LANs; esto es 10.31.0.252 para gw-bb por ejemplo.

Script HA-VPN La puerta de enlace por defecto gw-aa y gw-ba ejecuta un script de la shell como el que se muestra en el Listado 1. El script se lanza mediante una entrada en el inittab y monitoriza la accesibilidad por el otro lado, independientemente del

túnel de IPSec. Para hacerlo así, el script envía pequeños paquetes UDP al puerto de eco. El comando ping es un componente estándar para la mayoría de las distribuciones Linux y puede usar UDP si se configuran las opciones adecuadas. Esta solución evita problemas con los cortafuegos sobreprotegidos que no aceptan paquetes ICMP y de esta forma bloquean los ping normales. Mientras que la conexión entre el gwaa y gw-ab esté activa, el contador FAIL estará siempre a cero. Si el comando ping falla, el script incrementa la variable FAIL en la línea 53, mientras el valor esté por debajo de MAXFAIL. Si el siguiente ping es correcto, el script establece FAIL a cero (Línea 62). Si el valor alcanza MAXFAIL, la línea 50 llama a ACTION_FAIL_START (Listado 2 con el parámetro start). ACTION_FAIL_START deshabilita el heartbeat local, provocando que la puerta de enlace de backup automáticamente adopte la dirección IP del router local.

Esperando las Operaciones Normales El bucle infinito se mantiene en ejecución, esperando en la línea que realiza el backup y la señal del ping para volver al

Listado 2: Script de Acción de HA-VPN 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

70

#!/bin/bash # HA-VPN-Aktionsskript #VERBOSE=-v VERBOSE="" NAME=`basename $0` LOG="/usr/bin/logger -t HA-VPN" PARAMETER_FAULT=0 if [ $# -ne 1 ] ; then PARAMETER_FAULT=1 else PARAMETER=$1 case $PARAMETER in start) ;; stop) ;; *) PARAMETER_FAULT=1 ;; esac fi if [ $PARAMETER_FAULT -ne 0 ]; then

Número 07

25 $LOG " ${NAME}: called with :$*: ==> parameter error, abort" 26 echo "`date +%Y%m%d%H%M%S` ${NAME}: parameter error, abort" 27 exit 1 28 fi 29 30 ACTION_FAIL_START="/etc/init.d /heartbeat stop" 31 ACTION_OK_AGAIN="/etc/init.d/h eartbeat start" 32 33 case $PARAMETER in 34 start) $LOG ${ACTION_FAIL_START} ; 35 ${ACTION_FAIL_START} ;; 36 stop) $LOG ${ACTION_OK_AGAIN} ; 37 ${ACTION_OK_AGAIN};; 38 esac 39 exit 0

WWW.LINUX-MAGAZINE.ES

valor normal de 0. Cuando llega la primera respuesta después de un periodo sin conexión, la línea no será del todo estable, así que el script espera antes de restaurar las operaciones normales. Establece FAIL a un valor negativo de HYSTERE (Línea 59) e incrementa FAIL para cada ping recibido (Línea 67). Si se produce otro error, la línea 43 establece la variable FAIL a un valor mayor que MAXFAIL – esto mantiene al sistema usando el backup. Las operaciones normales comienzan cuando FAIL retorna a cero y el script llama a ACTION_OK_AGAIN en la línea 71 (Listado 2 con el parámetro stop). El programa también rehabilita el heartbeat y reinicia la dirección IP del router local. Esta solución evita las oscilaciones del router, cuando las puertas de enlace fluctúan entre los túneles. Las conexiones a Internet están llenas de peligros cuando se producen los cortes, que se resuelven después de un breve periodo. Tres minutos es un buen valor para asegurar las operaciones estables. La experiencia adquirida nos indica que si el heartbeat en uno de los extremos del túnel bloquea la puerta de enlace, el otro extremo continúa después de un retraso de unos segundos.

Satisfacción Garantizada Esta solución ha estado ha estado disponible en Internet desde el 2004 y ha demostrado repetidamente que los usuarios que lo utilizan ni se dan cuenta de los cortes en el router del lado del proveedor. En el caso de un fallo total, el mecanismo normal de reintento usado por la pila TCP/IP de la aplicación del servidor y del PC del cliente pueden fácilmente resolver los diez segundos antes de que la solución de backup irrumpa. Y la clase de inconvenientes que acompañan a los cortes de esta clase ■ es ya cosa del pasado.

RECURSOS [1] RFC 2401: rfc2401.txt

http://www.ietf.org/rfc/

[2] Freeswan: http://www.freeswan.ca/ code/super-freeswan/ [3] RFC 1745: rfc1745.txt

http://www.ietf.org/rfc/

[4] SSPE: http://sspe.sourceforge.net [5] Linux-HA: http://www.linux-ha.org


Bienvenidos a Linux User Ésta es la sección dedicada a la presentación de software interesante y útil que nos ayuda en nuestro quehacer diario con el escritorio Linux. Aquí aprenderemos a utilizar software estándar de una manera más eficiente, adquiriremos valiosos conocimientos y descubriremos apasionantes nuevas aplicaciones.

KTools: Basket

.......................

72

Basket es un cómodo contenedor de documentos, notas, imágenes, sonidos, gráficos, hojas de cálculo y otros archivos que puede que queramos encontrar en otro momento.

DeskTOPia: WMI

......................

74

WMI es un gestor de ventanas elegante y rápido con un buen soporte para el control por teclado.

KoolDock y KXDocker

.................

76

Si el panel de KDE no te parece suficientemente espectacular, puedes mejorarlo con KoolDock o KXDocker.

Gnome SoundJuicer . . . . . . . . . . . . . . . . . . . 78 En este artículo presentamos una de las herramientas dedicadas a al ripeado de CDs a disco duro bajo Gnome: Sound Juicer.

KDE Image Menu (Kim) . . . . . . . . . . . . . . . . 80 Con un menú de servicio integrado en Konqueror denominado Kim, se puede modificar y manipular ficheros de imágenes desde un menú contextual.

Educación: Accesibilidad (II)

...........

82

En esta segunda parte dedicada al estudio de las tecnologías de accesibilidad en Linux, nos concentramos en la tiflotecnología.

Línea de Comandos: Navegadores . . . . . . . 87 Si trabajamos desde la línea de comandos y necesitamos algo en Internet, o bien si sólo queremos convertir un archivo HTML en un ASCII perfectamente formateado, podemos probar un navegador en modo texto.

WWW.LINUX- MAGAZINE.COM

ISSUE 52 MARCH 2005

71


LINUX USER • KTools

Guardar, ordenar y catalogar con Basket

CANASTA VIRTUAL Si tendemos a recolectar información para luego olvidar dónde la pusimos, la herramienta de KDE Basket puede ser justo lo que necesitamos. Basket es un cómodo contenedor de documentos, notas, imágenes, sonidos, gráficos, hojas de cálculo, y otros archivos que puede que queramos encontrar en otro momento. POR STEFANIE TEUFEL

B

asket es la herramienta perfecta para cazadores y buscadores de información que necesiten una manera de ordenar información importante con un solo clic. Basket funciona como una cesta virtual en nuestro escritorio Linux. Basket puede guardar trozos de texto, enlaces, etc. Pero no sólo eso, también funciona como un depósito de imágenes, sonido, documentos de texto, accesos directos de programas y muchas otras cosas. Los desarrolladores de Basket están todavía trabajando bastante en el programa, por lo que si lo vamos a usar, merece la pena visitar periódicamente la página del proyecto para verificar la última versión. Puede que encontremos una nueva versión cada vez que la visitemos. En http://basket.kde.org/download.php encontraremos enlaces que nos llevarán al código fuente de Basket. Junto al código fuente, encontraremos también paquetes RPM listos para usar con Suse 9.1 y 9.2. Los usuarios de otras distribuciones necesitarán compilar el código fuente. Los desarrolladores de Basket han puesto asimismo un pequeño script para facilitar los típicos pasos para compilar: confi-

72

Número 07

gure, make y make install configura las variables de entorno, compila el código fuente e instala el programa respectivamente. Pero antes de ejecutar el script, hemos de asegurarnos de tener los paquetes devel para KDE y Qt en nuestro equipo, si queremos evitar una avalancha de mensajes de error del script. Tras la instalación, podemos lanzar Basket desde Utilities | Basket en el menú Start, o bien tecleando basket en un terminal.

Mate Añadir datos a Basket es tan fácil como poner una moneda en una cesta. Basket es una más de las aplicaciones de KDE con soporte “arrastrar y soltar”. Si queremos guar-

WWW.LINUX- MAGAZINE.ES

dar una imagen, un enlace o un fichero de texto, sólo tenemos que arrastrar los datos a la ventana abierta y soltar el icono allí. Lo mejor de la característica de “arrastrar y soltar” es que ni siquiera tenemos que guardar los cambios. El programa guarda automáticamente cualquier cosa que soltemos en la cesta. Por supuesto, podemos usar un método más tradicional si así lo preferimos. Para guardar datos a la vieja usanza, seleccionamos Insert en la barra de herramientas y seleccionamos en el tipo de datos en el submenú: las opciones son Image, Text para texto normal y Rich Text para archivos RTF. Los diseñadores de páginas Web pueden seleccionar colores y guardarlos en código


KTools • LINUX USER

Figura 3: Configuración de Basket con el menú Settings.

datos como otra utilidad para llevar la cuenta de nuestra colección de información. Podemos añadir los detalles clave para cualquier imagen, texto o enlace. El metadato aparecerá cuando posemos nuestro ratón encima de cualquier entrada. Para configurar la opción de metadato, pulsamos el botón derecho sobre el objeto del que queramos especificar el metadato, y seleccionamos la opción del menú Edit Meta-data…, y añadimos el comentario.

color del texto y del fondo, tamaño de las imágenes o iconos, todo ello desde las pestañas Items Default Values e Items Look. Desde el apartado Program podremos definir el programa que usará Basket para abrir el archivo, según la extensión asociada, ya sea texto, sonido o animaciones. Si las que vienen por defecto no nos convencen, pulsamos sobre el botón Choose y elegimos el programa a asociar con el tipo de archivo desde el cuadro de diálogo que aparece.

Cuestión de Gustos

Basket tiene funcionalidades para ayudarnos a usar listas de chequeo o listas de cosas por hacer, de manera parecida a las que ofrece KOrganizer (véase Figura 2). Para crear una lista de chequeo, nos vamos a Check list dentro del menú Basket | New. Como muestra la figura 2, estas listas muestran un checkbox para cada entrada, que podemos marcar para señalar que ya las hemos atendido. Si hemos recopilado un montón de información útil, puede que queramos compartirla. De nuevo, Basket nos ayuda a convertir los contenedores de información a código HTML. Para ello, seleccionamos una lista y pulsamos sobre Basket | Export to HTML en el menú. Si lo necesitamos, podemos empotrar nuestros ficheros o directorios desde el cuadro de diálogo que aparece. Después de guardar el contenido en HTML, sólo tenemos que subirlo a la red o a la página Web para permitir a otras personas admirar nues■ tra colección de documentos.

Figura 1: Basket nos permite agrupar una colección de documentos, imágenes y enlaces, en un lugar único y fácilmente accesible.

Al igual que otros programas KDE, Basket nos permite fijar preferencias. Seleccionamos Preferences | Set up Basket para ello. Podemos usar la pestaña General para especficar si queremos o no que Basket nos muestre consejos, añadir una entrada desde Kicker y demás. Incluso podemos especificar cómo nos mostrará los objetos. Por ejemplo, podemos definir aspectos como el

LA AUTORA

hexadecimal HTML, lo cual es útil si solemos olvidar los valores de color de páginas que visitamos. Basket añade y organiza los documentos a la colección, permitiéndonos acceder a ellos de un vistazo (véase Figura 1). Para cambiar el orden, podemos hacerlo bien arrastrando y soltando, o bien seleccionando Item | Move Up o Item | Move down. Si hemos trabajado previamente con alguna herramienta de notas como KNotes, Kjots o Gnome Sticky Notes, podemos importar la información de esas otras herramientas directamente a Basket. Para ello seleccionamos Basket | Import y así añadimos esas notas a nuestra cesta. Además de este sistema de cestas, Basket también nos proporciona meta-

Figura 2: Podemos organizar la lista de objetos como lista de chequeo.

Stefanie Teufel es programadora Linux vocacional, aunque no se lleva bien con las pseudo-explicaciones crípticas ni con el tecnolenguaje elitista. Como economista titulada, Stefanie es la prueba viviente de que no es necesario ser un gurú para divertirse con Linux.

WWW.LINUX- MAGAZINE.ES

Listas de Comprobación y Más…

Número 07

73


LINUX USER • Desktopia: WMI

WMI y la reencarnación del teclado

LA VELOCIDAD DE LA LUZ

WMI es un gestor de ventanas elegante y rápido con un buen soporte para el control por teclado. POR PHILIPP KLEIN

W

MI, Window Manager Improved (Gestor de Ventanas Mejorado) es un gestor de ventanas elegante y rápido que hace un especial énfasis en el uso del teclado [1]. WMI ofrece mayor velocidad mejorando la experiencia del usuario en hardware más antiguo.

Ideas y Soluciones Esta herramienta permiten que el usuario disponga de dos modos. La parte inferior de la pantalla contiene una línea para la entrada de comandos, que se habilita pulsando [ALT + e]. En el modo comando, los usuarios pueden ejecutar los programas instalados en el sistema; dicho de otro modo, el gestor de ventanas cumple el rol de un terminal simple. El segundo modo en WMI es para atajos [ALT + i].

Instalación El sitio web del proyecto WMI en [1] tiene descargas en varios formatos. Además de los ficheros con el código fuente, estas descargas incluyen paquetes binarios para Debian, Slackware y

74

Número 07

RPM. Se procede de forma normal para instalar los paquetes y compilar el código fuente siguiendo la secuencia estándar: ”./configure; make; sudo make install”. Después de instalarse WMI, hay que establecerlo como el gestor de ventanas por defecto. Si se entra en modo consola, las entradas en el fichero ~/.xinitrc mostrado en el Listado 1 realizarán el trabajo. (Las últimas tres líneas en el fichero no tienen interés por el momento, pero más adelante nos fijaremos en ellas). El Listado 1 no tendrá efecto en el login basado en GUI GDM o KDM.

¡Allá Vamos! La primera vez que se ejecuta WMI, no se verá ningún menú ni otro sistema para ejecutar programas por medio del ratón apuntando y haciendo clic. Sin embargo, se muestra una ventana con la página man de ayuda de WMI, que describe los primeros pasos y explica la forma en la que funcionan los dos modos. Así pues, empecemos. Lo primero que deseamos hacer es ordenar el escritorio. Así que vamos a dividir el escritorio en un

WWW.LINUX- MAGAZINE.ES

número de áreas o espacios de trabajo. Los lectores estarán familiarizados con estos elementos, ya que la mayoría de los gestores de ventanas disponen de espacios de trabajo o escritorios virtuales. Tiene sentido configurar varios espacios de trabajo para que sirva de ayuda a la hora de organizar el escritorio. Un espacio de trabajo puede ser para comunicaciones (email, IRC, Jabber,…), el segundo para navegar por Internet y un tercero para trabajar con OpenOffice. Para crear estos espacios de trabajo, hay que habilitar primero el modo de entrada presionando [ALT + i], que permite el acceso a comandos específicos de WMI. Ahora se teclea

Listado 1: ~/.xinitrc 01 #!/bin/sh 02 exec /usr/local/bin/wmi 03 04 if test -x $HOME/.wmi/sti.pl ; 05 then 06 $HOME/.wmi/sti.pl & 07 fi


Desktopia: WMI • LINUX USER

create-workspace

se solicitará la entrada de un nombre para el nuevo espacio de trabajo. Tecleando Browser se crea un espacio de trabajo con este nombre. El espacio de trabajo aparece en la parte inferior del escritorio. Para ejecutar un navegador web, primero hay que habilitar el modo comando presionando [ALT + e]. Entonces, ya se puede introducir firefox

para ejecutar el navegador Firefox. Si se quiere restaurar la ventana a pantalla

Listado 2: ~/.wmi/ actions.conf

completa, hay que hacer clic en el botón de la parte de arriba en la esquina derecha de la ventana del programa o más rápidamente presionando [ALT + M]. Se pueden seguir los mismos pasos para crear más espacios de trabajo. Tecleando: save-settings

se guardarán las configuraciones de modo que estén disponibles la próxima vez que se conecte al sistema. Si se desea ejecutar una aplicación automáticamente después de entrar en el sistema, se puede especificar introduciendo una entrada en el fichero ~/.xinitrc. Para lanzar una terminal XTerm llamada shell en la esquina superior derecha del espacio de trabajo:

01 intern.cycle-workspace-prev.ke ys=ctrl+s 02 03 chain.wsia.seq="selectworkspace+irc" 04 chain.wsia.keys=alt+1 05 chain.wsis.seq="selectworkspace+web" 06 chain.wsis.keys=alt+2 07 chain.wsio.seq="selectworkspace+shell" 08 chain.wsio.keys=alt+3 09 10 extern.firefox.cmd=/usr/bin/fi refox 11 extern.firefox.keys=shift+F9 12 13 # Rebobinar en XMMS 14 extern.xmmsr.cmd="xmpisms -r" 15 extern.xmmsr.keys=shift+F5 16 # Reproducir o continuar con la pista actual 17 extern.xmmst.cmd="xmms -t"

exec wmiremote -a U select-workspace+web exec firefox&

Por último, para desconectarse del sistema se presiona [ALT + q] y nos volvemos a conectar de nuevo para asegurarnos de que la configuración esté funcionando de forma correcta. Nota: Para mostrar un listado de los atajos actualmente definidos basta con teclear wmiremote -p | less

Configuración Individual Hay que admitir que el conjunto actual de controles de WMI es poco intuitivo. Así que vamos a añadir unos cuantos atajos propios a WMI. Para ello, se entra al directorio de configuración de WMI en ~/.wmi. En esta carpeta, el fichero actions.conf se usa

Atajos Comunes en WMI [Alt + I]

18 extern.xmmst.keys=shift+F6 19 # Detener la pista actual

[Alt + E]

20 extern.xmmss.cmd="xmms -s"

[Esc]

21 extern.xmmss.keys=shift+F7 22 # Saltar una canción en la lista de reproducción 23 extern.xmms.cmd="xmms -f" 24 extern.xmms.keys=shift+F8

[Alt + M] [Alt + D] [Alt+ A] [Alt + Tab] [Ctrl + Alt + Q]

Habilita el modo de entrada Habilita el modo ejecu ción Salir del modo entrada/ ejecución Maximiza una ventana Oculta una ventana Restaura una ventana Conmuta entre ventanas Salida del sistema

WWW.LINUX- MAGAZINE.ES

para definir los atajos. Los ejemplos mostrados en el Listado 2 son de mi propia colección. La mayoría de los comandos son autoexplicativos, pero vamos a echarle un vistazo. La Línea 1 asocia CTRL + s al comando que conmuta entre espacios de trabajos. Si se está en el espacio de trabajo 3, presionando CTRL + s se pasará al espacio de trabajo 2. Las líneas que van desde la tres a la ocho contienen los atajos para conmutar explícitamente entre los espacios de trabajo. ALT + 1 nos lleva al espacio de trabajo 1 (que es IRC en este caso). Del mismo modo ALT + 2 nos lleva al espacio de trabajo 2 y ALT + 3 al espacio de trabajo 3. Por supuesto que se pueden usar los atajos para ejecutar comandos externos. Por ejemplo, las Líneas 10 y 11 le indican a WMI que ejecute Firefox cuando se presione SHIFT + F9. También son posibles atajos “avanzados”, por ejemplo, los atajos de las líneas 13-25 que controlan el reproductor de audio xmms.

Extendiendo WMI WMI es fácilmente extensible y configurable usando temas y scripts. Se puede encontrar una colección de temas en [2] que se pueden adaptar para usar nuestros colores favoritos. Es bastante fácil instalar un tema: simplemente se copia el fichero theme.conf del nuevo tema en ~/.wmi. El script Perl wmi.pl [3] muestra lo fácil que es realizar scripts WMI para extenderlo. Por ejemplo, este script añade una barra de estado, que da información detallada de la carga, el número de mensajes leídos y no leídos y la hora del día. Para instalar el script, hay que ejecutarlo antes de ejecutar WMI (por ejemplo, en ~/.xinitrc). El Cuadro ~/ .xinitrc explica como instalar el script wmi.pl. Desde luego, el script Perl tiene que estar ubicado en ~/.wmi y necesita los privilegios apropiados para que se ■ ejecute correctamente.

RECURSOS [1] Web oficial del proyecto: http://wmi. modprobe.de [2] Temas WMI:http://wmi.modprobe. de/index.php/WMI/Themes [3] sti.pl:http://www.dcs.gla.ac.uk/ ~lativyn/sti/

Número 07

75


LINUX USER • KoolDock

Uso de KoolDock y KXDocker

EN EL MUELLE Si el panel de KDE no te parece suficientemente espectacular, puedes mejorarlo en KDE con KoolDock o KXDocker. POR HAGEN HÖPFNER

K

icker es la base de operaciones en KDE. Lanza programas, cambia entre escritorios y permite añadirle applets a la barra de herramientas. Además de estas funciones básicas, el programa permite algunos efectos gráficos. Kicker permite transparencias e iconos animados con efecto cristal al posar el ratón por encima. Desafortunadamente, la barra de herramientas de KDE no alcanza la elegancia gráfica de su equivalente en Mac OS X. Matías Fernández, Francisco Guidi y Stefano querían algo más. Matías y Francisco han desarrollado una barra de tareas al estilo de Mac OS X. En este artículo describiremos KoolDock [1] y KXDocker [2] y mostraremos como se puede mejorar el escritorio de KDE con estas herramientas.

Espectacular

compilar el código, hemos de seguir los pasos habituales para compilar e instalar KoolDook: ./configure && make && su -c "make install". Antes de lanzar KoolDock, puede que prefiramos arrastrar el Kicker a la derecha o izquierda de la pantalla, ya que KoolDock va a secuestrar el espacio inferior de la misma. Al teclear kooldock, aparece sin más una ventana indicándonos que movamos el ratón hasta la parte inferior de la ventana para comprobar que allí está KoolDock. Al hacerlo, aparece una aplicación que se parece mucho a Mac OS *X (véase Figura 1). Por defecto, KoolDock nos proporciona espacio para seis iconos de aplicaciones. Cuando pasamos el ratón por encima del panel, el programa amplía el icono correspondiente. KoolDock muestra por encima del icono correspondiente la acción que se ejecutará si pulsamos el botón izquierdo, por ejemplo, en el caso del icono más a la izquierda del panel, se iniciará Konqueror. Si pulsamos con el botón derecho, KoolDock abre un menú, donde precisamente la entrada KoolDock tiene muchas e importantes opciones. Por ejemplo, Go to Desktop cambia a otro escritorio y Task List muestra una lista de ventanas activas. Con Edit Preferences (véase Figura 2) desplegamos un cuadro de diálogo donde podemos personalizar KoolDock. Mejor que desplegar el menú para ver la lista de programas activos, podemos hacer que KoolDock integre iconos para esos programas en la barra de tareas. Para ello, habilitamos Enable Taskbar en la pestaña Visual. Si seleccionamos Show K Menu añadiremos el menú K a KoolDock. Pulsamos en OK cuando hayamos terminado para añadir así el icono a la parte izquierda de la barra de herramientas. Si

KoolDock [1] es un proyecto que tiene la estética como principal objetivo. No necesitaremos verificar con el compilador el factor estético de nuestra barra de herramientas. Encontraremos paquetes para Debian y Mandrake en la página del proyecto y los paquetes RPM para Suse Linux están disponibles en [3]. Si preferimos

Figura 1: KoolDock aparece al llevar el ratón al borde inferior de la pantalla.

76

Número 07

WWW.LINUX- MAGAZINE.ES

Figura 2: Usamos este cuadro de diálogo para especificar como integrar KoolDock con el menú de KDE.


KoolDock • LINUX USER

nos gusta experimentar, podemos pulsar también sobre Enable System Tray para añadir las áreas del panel Kicker a KoolDock. Cada vez que ejecutemos un applet para el panel de ahora en adelante, debería aparecer un icono para ese applet en la barra de herramientas. Pero, tal y como hemos comprobado, esto no funciona para algunos applets. Cuando ejecutamos el applet de kamix en nuestro ordenador de laboratorio, para cambiar el volumen en Suse Linux, no ocurrió nada. La pestaña Application List nos permite añadir iconos de aplicaciones a KoolDock. La manera más fácil de añadir un programa es arrastrar el lanzador del programa desde el menú K y soltarlo en la ventana de configuración. Pulsamos en Add en el cuadro de diálogo para añadir por fin el lanzador a nuestra colección en KoolDock. Si solemos abrir muchas ventanas de terminal al mismo tiempo y no queremos sacrificar todo ese espacio en la barra de herramientas, podemos añadir la ventana de terminal a la lista de Ignore list. Para ello, primero seleccionamos Grab Window y entonces pulsamos en una de las ventanas del programa que queramos eliminar de la lista de programas activos. Pulsamos entonces en Add en el cuadro de diálogo configuración de KoolDock: así se añade el programa seleccionado a la lista y evitamos que se muestre como activo.

Un Toque de OS X KXDocker [2] es otra barra de herramientas que se parece mucho a la de Mac OS X. Los archivos RPM para KXDocker de Mandrake Linux se instalarán sin problema en Fedora Core 2. Para

Figura 4: Desde este desordenado cuadro de diálogo, configuramos el comportamiento de KXDocker.

compilar KXDocker desde el código fuente, Figura 3: KXDocker se presenta con un botón para el menú K, necesitamos compilar accesos directos de programas y applets. previamente el paquete kxdocker-0.27 y luego el paquete kxdocker-resources-0.9 que connos pregunta por un nombre de archivo, y tiene los datos e iconos para la barra. si queremos que se cargue esta configuraTecleamos kxdocker para lanzar nuestro ción la próxima vez que ejecutemos la nuevo programa. De nuevo, la barra se barra de herramientas. hace con el espacio inferior de la pantalla. El manual [5] nos ofrece más detalles En esta ocasión, no sólo tenemos los icoacerca de la configuración de KXDocker nos de los programas, sino que también e incluye unos cuantos ejemplos de contenemos el menú de inicio de KDE y una figuración. colección de applets (véase Figura 3). Mucho Donde Elegir Por defecto, la selección de applets Tanto KoolDock como KXDocker ofrecen incluye calendario, reloj, red y carga de la al usuario una fantástica barra de herraCPU, así como un indicador del estado de mientas, pero ninguna de las dos alcanza la batería. Además de la barra, KXDocker la funcionalidad del Kicker original. Los añade también un mini-icono al panel de desarrolladores no han tenido el punto de Kicker, permitiéndonos mostrar u ocultar vista del usuario suficientemente en cuenKXDocker con sólo pulsarlo. ta a la hora de integrar el menú K. Si pulPodemos borrar el indicador de estado samos el icono del menú K, simplemente de la batería en los ordenadores de sobreabriremos el menú estándar, que tendrá mesa, y tener así más espacio para acceuna pinta muy aburrida en comparación a sos directos en la barra. Para ello selecciolos espectaculares gráficos de cualquiera namos Configurator en el menú de de las dos barras. Asimismo, ninguna de KXDocker para acceder al cuadro de diáambas barras nos permite prescindir comlogo de configuración (véase Figura 4). pletamente del Kicker original, ya que La pestaña Objects, en el ciertamente ambas usan funciones del Kicker para desordenado cuadro de diálogo, nos perintegrarse en el menú de inicio de KDE. mite eliminar accesos directos y applets. Si no tenemos un proceso Kicker activo, Sólo tenemos que seleccionar el elemento KoolDock y KXDocker pierden parte de su en cuestión y pulsar, en el panel de la funcionalidad. Aún así, si somos de los derecha, sobre el icono que se parece a un que aprecian esos efectos gráficos y estacírculo negro con una cruz blanca. mos buscando una manera de darle vida Con el icono en forma de varita podea nuestro escritorio e incluso añadir algumos crear nuevos accesos directos de pronas funcionalidades, seguro que pasaregramas. Pulsamos en la varita para crear mos un buen rato con este par de aplicauna nueva entrada y luego especificamos ■ ciones. las propiedades usando las pestañas de la parte derecha de la ventana. KXDocker acepta cualquier valor para Name. RECURSOS Tecleamos el texto para mostrar en Over [1] KoolDock: http://ktown.kde.cl/ Text showed y seleccionamos un icono kooldock/ para la nueva entrada en la pestaña [2] KXDocker: http://www.xiaprojects. Images. Para ejecutar el programa cuando com/www/prodotti/kxdocker/main. pulsemos el botón izquierdo, definimos la php acción requerida como onClickExec den[3] RPMs SuSE para KoolDock: http:// tro de Actions. Podríamos hacer esto por linux01.gwdg.de/~pbleser/ ejemplo para thunderbird, si queremos rpm-navigation. una entrada para nuestro cliente de php?cat=%2FUtilities%2Fkooldock/ correo electrónico. [4] RPMs SuSE para KXDocker: http:// Los botones de flecha nos ayudarán a linux01.gwdg.de/~pbleser/ posicionar el nuevo icono adecuadamenrpm-navigation. te. Cuanto más arriba en la lista esté el php?cat=%2FUtilities%2Fkxdocker/ icono, más a la izquierda aparecerá en [5] Documentación de KXDocker: http:// nuestra barra de herramientas. Cuando www.xiaprojects.com/www/prodotti/ hayamos acabado, pulsamos en el icono kxdocker/main.php?action=manual del disquete para guardar los cambios. Se

WWW.LINUX- MAGAZINE.ES

Número 07

77


LINUX USER • GTools

Soundjuicer para la copia de CDs musicales

¡EXPRIME TUS CDS!

Es posible que queramos hacer copias de seguridad de los CDs que tenemos, o que queramos guardar nuestras canciones en el ordenador, para después poder ir reproduciendo toda nuestra discoteca de forma aleatoria, agrupada por géneros, por artista… directamente desde el ordenador. En este artículo presentamos una de las herramientas dedicadas a ello: Sound Juicer. POR ALBERTO MORA

S

i lo que queremos es volcar el contenido de un CD de audio en el disco duro de nuestro ordenador, lo que necesitamos es una herramienta que ofrezca la posibilidad de extraer las pistas de un disco compacto y escoger el formato en el que las queremos guardar. Ahora bien, pese a que

Ross Burton (el desarrollador de Sound Juicer) ha manifestado repetidamente que su objetivo es el de conseguir una aplicación que también reproduzca las pistas del disco y así su programa sea sustituto del ya anticuado reproductor de CD, este objetivo no ha sido todavía alcanzado en su aplicación. De momento, pues, Sound Juicer sólo nos permite

hacer copia de discos, sin oír previamente las pistas que lo componen.

Figura 2: Cuadro que representa el tamaño que ocupa la canción Badlands, de Bruce Figura 1: Diagrama donde se refleja el proceso de extracción de las canciones de un disco compacto.

78

Número 07

Springsteen, según formato: WAV no comprimido, Ogg/Vorbis, MP3 y FLAC, respectivamente.

WWW.LINUX- MAGAZINE.ES

Figura 3: Renombramos pistas de ser necesario.


GTools • LINUX USER

Una vez tenemos un archivo de sonido (generalmente se tratará de música, y en formato WAV) en nuestro ordenador, nos puede interesar comprimirlo para que así ocupe un espacio menor. Esencialmente, las técnicas de compresión se catalogan según si esta compresión supone pérdida de la información del archivo (aunque ésta no sea audible por los humanos) o no. En el primer caso, se dice que que el formato es lossy, y son ejemplos de ello Ogg/ Vorbis [2] y MP3. En el segundo hablamos de formatos lossless, y incluye FLAC [3]. El rendimiento de cada uno de estos algoritmos queda representado en la Figura 2.

La librería GStreamer GStreamer [4] es una librería que desarrolla la comunidad de software libre para que sea el estándar en todo lo que concierne al mundo del multimedia (audio y vídeo), ya sea en funciones de creación, edición o reproducción. Su diseño basado en un sistema de plugins, ofrece la posibilidad de añadir fácilmente formatos (lo que técnicamente se conoce como codecs) a cualquier programa que utilice esta librería, como es el caso de los dos programas presentados en este artículo.

WWW.LINUX- MAGAZINE.ES

ración también podemos ajustar una serie de preferencias que serán de nuestro interés, como son la carpeta donde Sound Juicer almacenará los archivos de música generados, el formato de estos, o el patrón que debe seguir para nombrarlos (por ejemplo, “Artista - Nombre de la canción.ogg”) basándose en la información del que dispone.

Extracción de Canciones Sound Juicer permite seleccionar que pistas del CD queremos transferir al disco (aquellas que tengan la casilla de la izquierda seleccionada), con lo cual podemos copiar todo el disco o sólo unas canciones. Y… ¡ya está! Sólo nos queda pulsar el botón de ‘extracción’ y el programa realizará la tarea que le hemos encomendado: hacer la copia de las pistas seleccionadas, como se muestra en la Figura 5. Y ¡ya podremos disfrutar de la nuestra música en nuestro ordenador sin necesidad de rebuscar en el armario de los ■ CDs!

RECURSOS [1] Página de Sound Juicer: http:// burtonini.com/blog/computers/ sound-juicer [2] Página de Ogg/Vorbis: http://www. vorbis.com [3] Página de FLAC: http://flac.sf.net [4] Página de GStreamer: http:// gstreamer.freedesktop.org

EL AUTOR

El proceso de extracinsertemos un CD en el ción de pistas (que en ordenador se arrancará argot se conoce como la aplicación seleccionaripear, del verbo inglés da, que nos permitirá to rip) se describe en la reproducir directamente Figura 1: primero se el disco o extraer sus piscopian en el disco duro tas y copiarlas a disco del ordenador las pistas duro. En caso de que no en un formato de audio sea esta última opción la no comprimido (tal que suceda, podemos como se encuentra en el Figura 4: Ventana de configuarrancar la aplicación CD), luego --y según el ración del programa. elegida desde el menú de algoritmo de compresión GNOME. que escojamos-- un segundo La Figura 3 corresponde a programa comprimirá estos la ventana inicial del prograficheros para obtener los ma Sound Juicer. En ella resultantes. Los efectos de vemos que el programa nos esta compresión, según el forofrece la información relativa mato, quedan reflejados en la Figura 5: Las barras a las pistas del disco que Figura 2. Sound Juicer permide progreso indican tenemos insertado, y que te obtener archivos en varios el estado de la rellena gracias a la herraformatos de audio: uno de extracción de las mienta de autodetección con ellos no comprimido (con pistas del disco. que cuenta, y que funciona extensión WAV), y tantos extraordinariamente bien en comprimidos como plug-ins tengamos la mayoría de casos. Caso que Sound instalados, típicamente: Vorbis u Ogg/ Juicer no etiquete correctamente el Vorbis (compresor lossy totalmente disco, también podemos escribir, indivilibre), FLAC (compresor lossless totaldualmente, los campos correspondientes mente libre) y MP3 (compresor lossy paral artista, título del disco y nombres de cialmente patentado, con lo cual el plucada pista. gin asociado no se proporciona en todas Configurar el Programa las distribuciones de GNU/Linux). Otro de los escenarios posibles se produce Arranque del Programa cuando arrancamos Sound Juicer manualSi tenemos instalado y debidamente conmente en un ordenador que disponga de figurado gnome-volume-manager (el más de una unidad CD, y el programa esté módulo que se encarga de gestionar consultando una unidad incorrecta. En el automágicamente los dispositivos multimenú de configuración (Figura 4), dispomedia y de almacenamiento), cuando nemos de una opción que lista todas las unidades que tenemos en nuestro ordenador, para que podamos indicar en cual de Compresión lossless vs. ellas acabamos de insertar nuestro disco. compresión lossy Adicionalmente, en este menú de configu-

Albert J. Mora (Barcelona, 1981) es Ingeniero en Informática por la Universitat Pompeu Fabra (2003) y está estudiando Comunicación Audiovisual (Universitat Oberta de Catalunya). Sus intereses se centran en ser feliz, el medio digital (y las posibilidades que ofrece de gestión de la información), los movimientos sociales alternativos y -cómo no- el software libre.

Número 07

79


LINUX USER • Kim

Convirtiendo Convirtiendo Imágenes Imágenes con con Kim Kim

ADMINISTRADOR DE FOTOGRAFÍAS Con un menú de servicio integrado en Konqueror denominado Kim, se puede modificar y manipular ficheros de imágenes desde un menú contextual. POR PETER BUBENIK Y MARCEL HILZINGER

M

ientras Windows ha dejado a las aplicaciones añadir funciones al administrador de ficheros Explorer por algún tiempo, KDE versión 3.2 fue la primera versión de KDE que le proporcionó a los usuarios esta capacidad. KDE 3.3 incluyó una versión de Konqueror con un menú de contexto separado para archivos de imagen. Gracias a este menú, los usuarios haciendo clic con el botón derecho del ratón, pueden ver, rotar y escalar imágenes directamente desde dentro de Konqueror. El KDE Image Menu (Kim) de Charles Bouveyron [1] le proporciona a esta característica un paso más. Kim le facilita más opciones de las que un usuario Windows pueda esperar. El menú de contexto permite a los usuarios convertir, comprimir, rotar, recortar y enviar por correo electrónico imágenes en varios formatos mediante Konqueror. El programa puede crear un clip MPEG a partir de un directorio que contenga imágenes. Para todo ello, Kim utiliza la funcionalidad de manipulación de imágenes del programa ImageMagick [2] y de Mpegtools [3]. Kim también integra Kalbum [4], un programa KDE diseñado para crear galerías Web y álbumes de fotos.

Comenzaremos la instalación copiando el fichero, kim_0.7.tar.gz, a cualquier directorio. Luego descomprimimos el fichero tecleando: tar xvfz kim_0.7.tar.gz

Cambie al directorio que se ha creado en este paso y teclee su para ser root (Suse Linux tiene el comando sux para esto). A continuación arranque el script de instalación tecleando ./install.sh. Aparece una ventana Kdialog, proporcionándole las siguientes opciones: • Standard • With plugins • Uninstall Si quisiera instalar los plugins, necesitará Mjpegtools, Digikam y Kalbum. Digikam también requiere a su vez el paquete kipi-plugins (Digikam 0.7.x) o digikamplugins (Digikam 0.6.x). Estos paquetes incluyen el script image2mpg que Kim utiliza para convertir imágenes a películas MPEG. Los usuarios de Suse Linux necesitan instalar las Mjpegtools

desde [5], ya que el paquete original de Suse no contiene un número importante de programas. Los usuarios de otras distribuciones normalmente pueden instalar el paquete Mjpegtools sin ningún cambio, pero pueden tener alguna dificultad con Digikam. Por ejemplo, Fedora Core 3 no tiene ningún paquete de la versión 0.7 de Digikam, aunque los paquete de [6] y [7] con Digikam 0.6.2 pueden ejecutarse bajo Core 3. El instalador no comprueba si los instrumentos necesarios existen sobre su sistema y esto puede significar que no ocurre nada cuando usted selecciona un elemento del menú específico. De hecho, Kim no le proporciona un mensaje de error si la herramienta no está presente. El plugin le proporciona elementos para lanzar Kalbum con las imágenes seleccionadas y para desenfocar o normalizar imágenes con Imagemagick. Podemos añadir un par de entradas para crear una presentación con o sin sonido en formato MPEG. Como la versión 3.2 de KDE o superior tiene un menú desple-

Cuadro 1: Creación de una película formateada en PAL 01 [Desktop Action WebExp75800] 02 Name=Pal-Movie: 768x576 at 75 % 03 Name[de]=Film im Pal-Format : 768x576 bei 75 %

Descarga e Instalación

04 Icon=tgz

El sitio web de Kim [1] incluye los paquetes para Debian y Suse 9.1, así como un fichero tar. Para este caso, supondremos que se va a instalar desde un fichero.

05 Exec=kimgsm_webexport 768x576 %D %U && images2mpg -T /tmp -d

80

Número 07

06 `kdialog -- inputbox "Choose duration of each image (sec):" 3` -t 07 `kdialog -- inputbox "Choose transition speed:" 5` -o 08 `kdialog -- getsavefilename %d *.mpg` -i %U

WWW.LINUX- MAGAZINE.ES


Kim • LINUX USER

gable para la manipulación de imágenes, Kim crea una copia de seguridad del menú original cuando se instala, almacenando las entradas del menú en $KDE/ share/apps/konqueror/servicemenues/ antes de terminar borrando las entradas originales. En nuestros dos sistemas de laboratorio, una con Suse Linux 9.1 y otra con Fedora Core 3, el instalador de Kim mostró varios mensajes de error antes de decir Good bye, que es la forma que tiene Kim de indicar que la instalación se ha completado correctamente. Desinstalar Kim fue tan fácil como instalarlo y no hubo mayores problemas utilizando el programa.

Funciones Principales El menú principal de Kim (ver Figura 1) tiene cuatro elementos. Compress and Resize permite a los usuarios comprimir y redimensionar múltiples imágenes a la vez. Al igual que con los formatos comunes, Kim también proporciona a los usuarios las opciones de individualmente especificar el factor de compresión y el tamaño. La tercera entrada del menú es para la exportación Web, que es muy útil para los lectores que quieran realizar un mantenimiento de páginas web. Por ejemplo, con un solo clic de ratón, comprimiremos imágenes formateadas con TIF de su cámara de 5 Megapixels a formatos compatibles con el estándar de páginas web de 800x600 manejables con una ratio de compresión del 75 por ciento.

El menú Plugins proporciona entradas para crear una película MPEG (ver Cuadro 2) o una galería Web con Kalbum. El menú también tiene una entrada para el suavizado de imágenes (Gaussian Blur) y para la normalización de colores (Normalize Image). Finalmente, el menú Publication and treatment tiene entradas que le permiten a los usuarios enviar por correo electrónico imágenes, convertir imágenes a blanco y negro o añadir un marco. Figura 1: El menú principal de Kim aparece cuando se hace clic con el botón derecho del ratón en un fichero de imagen.

Nótese que muchos pasos de manipulación pueden ocurrir sin una entrada de usuario o la característica deshacer. Por ejemplo, si convertimos todas las imágenes de una carpeta de 2030 x 1536 (3 Megapixels) a 640 x 480, inevitablemente perderemos las imágenes originales. Primero, hemos de asegurarnos de crear una copia de seguridad de los ficheros antes de empezar a manipularlos. La mejor forma de crear una copia se seguridad es seleccionando Convert to TIF desde el menú Convert and Rotate. TIF es un formato muy útil para copias de seguridad ya que soporta manipulación libre de errores. Por el contrario, la calidad de las imágenes JPEG se ve afectada con cualquier cambio que realice. Además de las opciones de conversión y rotación, el menú también tiene una entrada para reflejar imágenes.

Extensibilidad Las entradas del menú son simples funciones de la shell, así puede fácilmente modificarlas o añadir nuevas entradas. Por ejemplo, si a menudo necesita convertir ficheros a formato 350 x 500, puede añadir una entrada para esta tarea en el fichero kimgsm_compressandresize.desktop. No hay necesidad de modificar el fichero de script (bin/ kimgsm_webexport). Si normalmente crea vídeos desde imágenes para verlos en su TV, a los lectores de Europa les gustaría convertir las imágenes a formato PAL (768 x 576 píxeles). Otra vez, puede añadir una entrada al menú Compress and Resize para hacer esto y enlazarlo con la entrada para crear una película. El Cuadro 1 muestra un ejemplo. Kim no proporciona un indicador de progreso para tareas complejas, pero el comando top permite ver qué pasos está realizando cada programa. Un sistema con procesador Centrino de 1.4 GHz tardó sobre un cuarto de hora para crear una ■ presentación con 30 imágenes.

Cuadro 2: Creando Videos MPEG Vamos a suponer que tiene un directorio con 100 imágenes JPEG con una resolución, digamos de 2048 por 1536 píxeles (sobre 3 Megas). Le gustaría crear un vídeo MPEG de sus 25 favoritas y grabar el resultado en un video CD. En circunstancias ideales, las 25 imágenes estarían en el formato de paisaje; pero también trabajará con el formato de retrato. Seleccione las imágenes que necesite para el video (presione la tecla [CTRL] en Konqueror para hacerlo). Haga clic derecho en una de las imágenes seleccionadas y seleccione Actions | Kim - Convert and Rotate | Convert to PNG. Esta opción le dice a Kim que cree copias del fichero JPG en formato PNG. Ahora queremos que Kim cree una película de estas copias. Seleccione las nuevas 25 PNGs que hemos creado, en vez de las JPGs originales y seleccione Actions | Kim - Compress and Resize | Resize (640x480 pixels) del menú de contexto. Haga clic con el botón derecho en uno de los ficheros seleccionados y seleccione Actions | Kim - Plugins | Make an Mpeg movie. Kim muestra tres diálogos para exponerle la presentación con transiciones de fundido entre las imágenes individuales y luego le pide que introduzca un nombre para el fichero de la película. El script images2mpg genera un vídeo en unos minutos dependiendo de la capacidad de su CPU. El programa no muestra un indicador de progreso, pero el hecho de que la carga de CPU se acerque al 100 por ciento significa que Kim está trabajando duro. Puede borrar lo ficheros fuente en formato PNG cuando haya terminado con la película.

WWW.LINUX- MAGAZINE.ES

RECURSOS [1] Kim: http://bouveyron.free.fr/kim/ [2] ImageMagick: imagemagick.org/

http://www.

[3] Mpegtools: http://www.metzlerbros. org/dvb/ [4] Kalbum: kalbum/

http://www.paldandy.com/

[5] Mjpegtools para Suse: packman.links2linux.org/

http://

[6] Digikam para Fedora: http://manta. univ.gda.pl/~mgarski/RPMS/digikam/ [7] Digikamplugins para Fedora: ftp://ftp. icm.edu.pl/vol/rzm8/linux-kderedhat/ kde-redhat/fedora/1/RPMS.stable/ digikamplugins-0.6.2-0.fdr.0.1.i386. rpm

Número 07

81


LINUX USER • Educación

Accesibilidad en 2005

TIFLOTECNOLOGÍA

Prometíamos al término el artículo anterior «examinar los sistemas alternativos de comunicación con el ordenador (morse, braille), la disponibilidad o no de aplicaciones destinadas a los alumnos con discapacidades, la accesibilidad en la web, y finalmente un cambio de enfoque para examinar todas estas herramientas y especificaciones desde el punto de vista pedagógico». Es el momento de cumplir en la medida de lo posible lo prometido. POR JUAN RAFAEL FERNÁNDEZ GARCÍA

H

abiendo consultado a varios colegas sobre la entrega anterior de este artículo, me señalaron que había una imprecisión en el vocabulario y la necesidad de reconducir la presente entrega en respuestas hacia preguntas formuladas por enseñantes, sin entrar en clasificaciones de personas según sus discapacidades. Proseguimos nuestro viaje, pues, hablando de la tiflotecnología.

Braille ¿Tiene sentido seguir hablando de Braille cuando ya hemos conocido las posibili-

82

Número 07

dades que ofrecen los lectores de pantalla? Un mensaje a la lista de distribución tiflonet[1] nos da la respuesta: es el último vínculo con la lectura y la escritura de los invidentes. En el lenguaje hablado no hay ortografía, es más las palabras se confunden en grupos fónicos regidos por el ritmo y la entonación. Como sabemos, el código Braille consiste generalmente en celdas de seis puntos en relieve, organizados como una matriz de tres filas por dos columnas [2] ¿Cómo se utiliza en informática? Mediante hardware específico, y para evitar confusiones debemos empezar por

WWW.LINUX- MAGAZINE.ES

una breve clasificación: debemos distinguir dispositivos de entrada (anotadores braille, procedentes de las máquinas Perkins, y que están siendo, por su precio, sustituidos por PDAs) de los dispositivos de salida (terminales o líneas braille e impresoras braille)[3]. La entrada no presenta dificultades: pueden utilizarse teclados especiales braille, o bien adaptaciones de los teclados ordinarios para escribir Braille. O el teclado completo y un programa conversor (en la lista de distribución de blinux y sin buscar mucho he encontrado nfbtrans, Turbo Braille, Duxbury for


Educación • LINUX USER

como gnopernicus (imagen 1). La documentación muestra un amplio listado de líneas braille contempladas. ¿Cómo funciona? Brltty reproduce una porción rectangular de la pantalla del ordenador como texto Braille en el dispositivo, y permite utilizar los controles del dispositivo para moverse Figura 1: Configuración de una terminal braille con gnopernicus. por la ventana reproducida. Linux). Las dificultades están en la saliBrltty solamente funciona con consoda. Una primera solución ya la vimos en las y aplicaciones basadas en texto. el artículo anterior: los lectores de panta¿Cómo lograr reproducir imágenes? Una lla. La alternativa son las llamadas «línerespuesta es imprimirlas en relieve, lo as braille». Son dispositivos que se veremos ahora; pero en una terminal con conectan por el puerto serie o usb al refresco es posible también utilizar un ordenador, basados en un mecanismo desarrollo proporcionado por See by electro-mecánico capaz de representar Touch[5]. SeebyTouch proporciona la caracteres Braille mediante posibilidad de percibir imála elevación de puntos a genes mediante el sentido través de una superficie táctil. Presentado como plana con agujeros hechos proyecto de fuente abierta a tal efecto (cada célula en marzo de 2004, consiste contiene ocho pequeñas en una unidad movible por agujas, por lo que la repreel usuario y controlada de sentación se realiza forma paralela con dos Figura 2: SeebyTouch mediante Braille de ocho barras (foto 2). Esta unidad para ver con el tacto. puntos). Complejos y de contiene celdas braille que elevado coste, suelen tener 20, 40 u 80 hacen la función de matriz táctil. celdas; también dispone de botones para Dependiendo de su posición el usuario desplazar el texto y realizar otras funciopercibe mediante el tacto partes de la nes especiales. imagen; moviendo la unidad el usuario El uso de terminales braille bajo GNU puede identificar distintas partes de la Linux pasa a bajo nivel por brltty[4], foto o dibujo y hacerse una composición aunque puedan utilizarse interfaces mental de la imagen.

Tabla 1:Ventajas y desventajas del Morse como herramienta de comunicación Ventajas Como método directo de selección es eficaz A medida que se coge soltura, el proceso se vuelve automático Requiere muy poco esfuerzo físico

Desventajas Con un ratón no es intuitivo Obliga al estudio previo del código

Se percibe como obsoleto o pasado de moda Es fácilmente adaptable a la diversidad Prejuicio generalizado de medio difícil de los usuarios de aprender Puede utilizarse desde una diversas El éxito de la comunicación depende al 100% posiciones depende al 100% de la entrada Requiere poco procesamiento visual de la información Puede combinarse con otras adaptaciones Es una excelente opción como medio de entrada de texto

WWW.LINUX- MAGAZINE.ES

Existen también las impresoras braille[6], que imprimen en relieve (por eso se llaman «embossers» en inglés). Se configuran en Linux como impresoras de agujas (cf. https://www.redhat.com/ archives/blinux-list/2005-January/ msg00053.html). Y una tecnología llamada «horno fúser» que permite la plasmación en soportes especiales de dibujos de línea resaltada.

Morse ¿Por qué hablar aquí del código Morse? Porque es uno de los métodos de adaptación de la interrelación con el ordenador que se han demostrado eficaces para ayudar a personas con necesidades específicas (figura 4). Y porque nos va a servir para mostrar una de las paradojas presentes en el mundo del software libre. ¿En qué medida es práctico y útil el uso de morse? En el artículo Morse Code Demystified: a Powerful Alternative for Access to AAC and Computers[7], de Bruce Fleming et al., se señalan las ventajas del Morse frente a otras formas adaptadas de interacción con el ordenador (vid. la tabla 1). Al hablar de morse como herramienta de comunicación en atención a la diversidad debemos romper varios prejuicios: • Se cree que se tarda mucho en aprender (en realidad sólo hacen falta de dos a cuatro horas) • Se dice que es pesado y difícil de usar (¿recuerdan lo que es aprender a escribir a máquina sin mirar?) • Se piensa que es una mecanismo lento (en realidad son normales velocidades de 10 a 25 palabras por minuto, más rápido que muchos escáners; hay usuarios que llegan a superar las 30 palabras por minuto). Ahora cambiamos de idioma: la comunicación mediante código Morse se llama «onda continua» (continuous wave), de ahí los «cw» presentes en los nombres de las herramientas disponibles. Y es que en GNU Linux como de costumbre el tema del Morse está en manos de hackers, en este caso de los peores, los radioaficionados (adviértase el tono irónico, por favor). Lo que hace que sea posible utilizar Morse con las más variadas y complejas tecnologías, pero que no haya una interfaz atractiva para niños

Número 07

83


LINUX USER • Educación

Listado 1: El juego morse 01 $ morse casa 02

daw dit daw dit

03

dit daw

04

dit dit dit

05

dit daw

06 07

dit dit dit daw dit daw

08 09 $ morse -s casa 10

-.-.

11

.-

12

...

13

.-

14 15

...-.-

16 17 $ morse -d 18 -.-. 19 C 20 .21 A 22 ... 23 S 24 .25 A

similar a la del programa Preescritura Morse, donde por ejemplo el punto son pelotas y la raya son coches y el niño juega hasta aprender a reconocer y a introducir los caracteres como si tirara al plato. Tampoco he encontrado nada similar en los listados de actividades para (j)clic, atnag, childsplay o gcompris. La primera opción disponible en software libre para aprender Morse es utilizar el juego (entiéndase juego como «juego para hackers» morse, de bsdgames. No es más que un conversor, pero es útil si el objetivo es aprender. En el cuadro 1 tenemos un ejemplo aclaratorio del funcionamiento de morse. La interfaz más amigable, créanme, es xcwcp, un programa tutor interactivo de código Morse para Xwindows (figura 3). Nos permite elegir varias modalidades de práctica, incluidos el envío de caracteres aleatorios, palabras al azar o caracteres introducidos mediante el teclado. También permite utilizar el teclado o el ratón para enviar Morse (creo que la fun-

84

Número 07

ción se llama a Morse keyer), y permite monitorizar este código y mostrar los caracteres que ve. Figura 3:xcwcp, programa para aprender Morse. ¿Pero entonces no hay ninguna aplicación nales, que pueden utilizarse para ayudar Linux que permita utilizar el Morse para a usuarios con discapacidades visuales manejar el ordenador? Sí la hay: morseall proporcionando ligera resistencia en los (existe paquete rpm). Es una aplicación bordes de ventanas y botones de manera para gnome que permite controlar una que el usuario «sienta» la interfaz gráfica terminal pulsando con el teclado (una o pueda de algún modo diferenciar textubreve pulsación del botón izquierdo es el ras en las imágenes digitales. Esta tecnopunto, una pulsación más larga o un logía ya es una realidad en ratones como click con el botón derecho es la raya, el el iFeel Mouse y el IFeel Mouseman de programa presenta una ventana con la Logitech. equivalencia de los caracteres en puntos O del resto de sistemas aumentativos y y rayas como ayuda al usuario). alternativos de comunicación, tableros La opción preferible (aunque evidentede conceptos… mente más cara) es usar hardware específico. Los fabricantes de Darci Too y Sobre la Ausencia de Darci USB (recordemos la figura 4) han Software respondido afirmativamente a mi preEs verdad que el de las necesidades gunta de si tenían constancia de su funespecíficas es un nicho de mercado muy cionamiento correcto bajo GNU Linux. limitado, donde el desarrollo de software Otros Sistemas de está subordinado al más lucrativo de Interacción y Comunicación hardware, y donde se dan características Es el momento de replantearse el artícupropias de los primeros tiempos de esta lo en la forma en que va a ser publicado era de lo digital. Recordemos la exploen la revista. El espacio prohíbe contisión de software de pequeñas empresas nuar la exploración detallada de los sisy de autores independientes durante los temas de interacción con el ordenador. El años del DOS y Windows 3.1 y los priespacio y el sentido común: el detalle del meros Mac. Multitud de autores crearon material encontrado durante la fase de y distribuyeron sus pequeñas aplicaciopreparación lleva a huir de una aplastannes educativas. La situación es similar, te acumulación de tecnologías que predominan las pequeñas empresas y los requerirá una plasmación web más paudesarrollos de uno o dos autores que son sada y nos aleja de nuestros objetivos profesionales de la atención a la diversiprimeros. Podríamos discutir de la dad. El riesgo es que vuelva a caer en la madurez del OCR en GNU Linux y trampa del software gratuito de fuente hablar de la existencia de aplicaciones cerrada: un cambio en los estándares de comerciales y de otras libres (clara, gocr, programación o de interfaz de usuario o ocrad) y de la utilidad de la tecnología en los sistemas operativos utilizados del Reconocimiento Óptico de Caracteres mayoritariamente hacen que ese softwapara permitir que las personas con prore quede inutilizable. blemas serios de visión puedan acceder Durante la fase de preparación de este a libros e impresos y volcarlos ya como artículo he escrito a algunos de los más textos en lectores de pantalla o líneas importantes desarrolladores de lengua braille, pero deberemos limitarnos a hispana de software específico para el enunciarla. tratamiento de las necesidades especiaO podemos hablar de las pantallas tácles. Amablemente algunos han contestiles (touch screens), totalmente funciotado y hemos discutido qué impedía el nales en Linux. http://www.tldp.org/ paso de las licencias freeware con códiHOWTO/XFree86-Touch-Screen-HOWTO. go cerrado que tradicionalmente utilihtml, escrita por Christoph Baumann, zan a software libre. Sin citar nombres nos da los detalles necesarios. sí citaré frases textuales, para analizar O de las tecnologías de dispositivos brevemente la problemática. Afirman hápticos (relativos al tacto) bidimensiosimpatía y estar meditando seriamente

WWW.LINUX- MAGAZINE.ES


Educación • LINUX USER

sible confusión del derecho de reconocimiento de autoría con licencia, permisos que el dueño de la obra concede sobre el uso, copia, distribución de la misma. «¿Cómo se gana la vida la gente que desarrolla el software libre?» Pues igual, trabajando. Como no existe la killerapplication el modelo de negocio se centra en encargos y en servicios, y se trabaja sobre lo que han hecho otros y se sabe que otros trabajarán sobre lo que hacemos nosotros. ¿No era esto el progreso? Figura 4: Darci usb, dispositivo de acceso al ordenador mediante morse.Morse.

la posibilidad de dar el paso. ¿Qué problemas ven? «el primero de estos programas que desarrollé (…) pusimos el código fuente en Internet (…) Lo quitamos porque nos encontramos con un impensado problema, consistente en que hubo personas que comenzaron a tomar el desarrollo, modificarlo sin un análisis con profesionales del área de la educación especial (lo cual era sumamente peligroso para algunos posibles usuarios, por una cuestión de desconocimiento que, aunque no debería existir, es real aquí), y luego proponían venderlo. (…) “comerciantes” que ante un campo con relativamente poco desarrollo como el de la tecnología y las necesidades especiales, sólo quieren ganar dinero sin tener en cuenta la calidad y potenciales riesgos que generan.» Argumento de responsabilidad sobre la obra, totalmente independiente de que sea libre o no. «(…) el problema de que, ante una registración de la propiedad intelectual sólo en el país (como está hecho ahora por cuestión de costos), personas con fines exclusivamente lucrativos lo registren en otro lugar y lo vendan, cosa que los autores originales no queríamos.» Esto es un problema de protección del copyright, no de licencia. Luego también es independiente de que la obra sea libre o no. «(…) el desarrollo en formato tenedor. Es decir si dejo, pongamos un ejemplo, el código de P libre y alguien hace un cambio en un sitio y otro alguien en otro, ¿qué es lo que exactamente queda de P? Hasta ahora la solución que he adoptado es que cualquier persona que precisa una modificación me la propone y yo la hago y es una manera de tener controlado el programa». La habitual y compren-

Accesibilidad en la Web La primera en la frente, y en pocas palabras: existe software de creación de páginas web que debería haber dejado de utilizarse hace mucho tiempo ya, si es que en algún momento tuvo una justificación (estoy siendo diplomático), enfoques de la creación de páginas web que no conocen y anulan la separación entre contenido y presentación. Y ahora explicaré porqué. El estándar html no lo ha creado una empresa para hacerse con el mercado. Lo ha creado un consorcio de organizaciones (el W3C, hay oficina española http:// www.w3c.es/) por impulso de Tim Werners-Lee, el inventor del protocolo http y de la web. Fue creado en octubre de 1994 «para guiar la Web a su máximo potencial mediante el desarrollo de protocolos comunes que promoviesen su evolución y asegurasen su interoperabilidad». La principal tarea del consorcio es, pues, definir estándares (recomendaciones, en sus palabras) que funcionen con cualquier sistema operativo y cualquier navegador. Así a lo largo de los años han ido definiendo nuevas versiones del lenguaje de etiquetado html con el que está escrita la WWW y han creado CSS, las hojas de estilo en cascada para definir la presentación de las páginas. Para los que nunca hayan examinado el código de una página web quizás sirva un breve ejemplo: esto sería un fragmento de texto html <p> Un puntoU <strong>importante</strong>. </p>

Hemos visto cómo se marca el comienzo de un párrafo (<p>), su contenido y una etiqueta semántica para señalar la importancia de una expresión. Esto es

WWW.LINUX- MAGAZINE.ES

importante: en esta fase el autor debe preocuparse de la estructura semántica de su documento, que será independiente de su salida impresa. ¿Y la hoja de estilo? Una forma sencilla sería p { text-indent: 1.8em; text-align: justify; color: black; background-color: white; font-family: verdana,sans-serif; }

Se definen aquí las propiedades que tendrá el párrafo (todos los párrafos del documento, no será necesario ir copiándolas párrafo a párrafo): sangría, tipo de letra, su color y el de su fondo, justificación… ¿Qué tiene que ver esto con la accesibilidad? Todo: su Iniciativa de Accesibilidad Web (WAI) ha publicado las Directrices de Accesibilidad para el Contenido (http://www.w3.org/TR/ WCAG/), que no sólo están dirigidas a atender a las discapacidades sino a independizar el contenido del llamado «agente de usuario». Mediante hojas de estilo es posible definir distintas salidas o presentaciones del contenido (el navegador, sí, pero también un sintetizador de voz, un teléfono móvil y un dispositivo instalado en el coche, etc.). Para ejemplo basta un párrafo. p { voice-family: paul; stress: 20; richness: 90; cue-before: url("ping.au"); volume: x-soft; azimuth: center-left; }

Balance Pedagógico Debemos volver a nuestra pregunta inicial: ¿en qué grado está el software libre maduro para responder a las necesidades de atención a todos nuestros alumnos, tengan las barreras que tengan y las dificultades que tengan? Si hemos dispuesto en esta segunda parte del artículo de cuatro o cinco páginas, debemos llegar a conclusiones aunque sean provisionales y abiertas a la discusión. En primer lugar podemos concluir que la interfaz de usuario ha llegado a su madurez en cuanto al soporte de la tec-

Número 07

85


LINUX USER • Educación

EL AUTOR

nología de asistencia. Todo hardware que funciona mediante el uso de controladores estándar o abiertos funcionará con GNU Linux. Y con un enfoque correcto: no hacen falta aplicaciones específicas de teclados virtuales, emulaciones de teclado o ratón, etc., porque es el sistema operativo o el entorno integrado (Gnome, KDE) los que se ocupan de ello; tampoco es una tarea de la que deban ocuparse las aplicaciones específicas, salvo cumplir unas reglas en su desarrollo (lo que equivale a seguir adecuadamente una API y unas instrucciones). Por tanto no hace falta desarrollar juegos específicos para jugar mediante sólo teclado o sólo joystick o sólo switches, sino que cualquier juego debe poder ser jugado mediante el dispositivo que elija el usuario. Existen distribuciones específicas para por ejemplo personas con discapacidades visuales, caso de Oralux (http://www.oralux.org/). Aunque comprendo su utilidad, entiendo que lo que hay que hacer es desarrollar las distribuciones generales para que puedan ser utilizadas por todos, una distribución específica nunca podrá mantenerse al día y ser completa. En este sentido no se ha solucionado el segundo problema, la configuración del soporte de asistencia para cada persona: yo mismo he tenido que bucear en la documentación y en las profundidades del entorno para poder configurar algunas opciones. Sugiero la creación de perfiles que de forma sencilla y autónoma permitan la configuración y la adaptación a las capacidades de cada uno del entorno de trabajo (y de juego y de comunicación y aprendizaje). En consecuencia deja de ser tan cierto que no existan aplicaciones específicas[8]: en primer lugar porque aquellas aplicaciones que no dependen directamente de la presencia de determinados

86

Juan Rafael Fernández García es profesor de educación secundaria y tiene una larga experiencia en la traducción y documentación del software libre. Ha sido coordinador de uno de los Centros que participan en la experiencia andaluza de integrar las TIC en la educación y actualmente trabaja como asesor de formación del profesorado.

Número 07

controladores de hardware pueden funcionar perfectamente con wine (figura 5) o dosemu o incluso con máquinas virtuales qemu, sino porque además las aplicaciones educativas libres «generalistas» pueden ser utilizadas tras una correcta configuración de la interfaz de usuario. Sí es verdad que hay que trabajar en el desarrollo de estos núcleos de aplicaciones, jclic, atnag, wims, childsplay, gcompris, leterrier, para disponer de actividades y juegos de familiarización con el hardware adaptativo por un lado y para proporcionar ejercicios y prácticas de todos los niveles cognitivos y para todas las capacidades. Este es un tema que no podemos pasar por alto, porque es la clave del éxito y el sentido del software educativo, tanto libre como privativo.

Y en el Próximo Número Examinaremos qué se esconde detrás del proyecto ATNAG, del francés Geard Sellès: una herramienta de autor, desti-

Figura 5: Una aplicación específica reutilizada bajo wine.

nada a crear juegos y actividades destinados a educación infantil, pero también un conjunto de actividades y un sistema de planificación y seguimiento del trabajo con los alumnos. Veremos en concreto cómo se está utilizando por el equipo de trabajo que lidera María Dolores Almansa en el Colegio Sagrado Corazón de Palencia y nos servirá para ver cómo se aplica la filosofía del software libre en ■ la realidad de las aulas.

RECURSOS [1] Citado en Rafael Sánchez Montoya, Ordenador y discapacidad, 2ª edic., ed. CEPE, Madrid 2002, página 158. [2] Existen numerosas ampliaciones y adaptaciones del código Braille original. Ha sido ampliado a un código de ocho puntos (Sánchez Montoya le llama braille computerizado), de tal manera que una letra individual puede ser codificada con una sola celda, lo que permite 256 combinaciones posibles codificadas según el estándar Unicode. Y disponemos de extensiones para representar fórmulas matemáticas o música. O (lo encuentro en http://www.tcts.fpms.ac.be/synthesis/w/) un Braille de grado II utilizado desde 1829 en el que existen contracciones y abreviaturas, con un ahorro del 30 al 50%. El documento que cito lo defiende con ventaja comparativa respecto a los algoritmos de predicción de palabras (los vimos en el artículo anterior): frente a estos y la necesidad de comprobar y corregir la predicción, es fácil aprender de memoria las abreviaturas. [3] Más información en http://cidat.once.es/, en http://snow.utoronto.ca/technology/ products/refreshable-braille.html y claro, en la wikipedia: teclados Braille (Perkins Brailler, máquinas Perkins); Braille Notetakers: anotadores electrónicos, portátiles Braille; líneas Braille = Terminales Braille = (refreshable) Displays Braille; Impresoras (embossers) Braille. [4] http://dave.mielke.cc/brltty/. Hay manual en español: http://rt001pvr.eresmas.net/ Manual-1.html. [5] http://see-by-touch.sourceforge.net/index_.html. [6] http://www.utoronto.ca/atrc/reference/tech/brailleemb.html. Sobre hornos fúser cf. http://www.cepmalaga.com/actividades/Interedvisual/recursos_didacticos_adaptados. htm. [7] http://www.csun.edu/cod/conf/2003/proceedings/71.htm, recogido en las Actas de la Conferencia de 2003 de la Technology and Persons with Disabilities Conference de la Universidad del Estado de California Northridge. [8] Con un matiz: es verdad que no existen aplicaciones para logopedia, o para el aprendizaje de los sistemas pictográficos de comunicación por poner dos ejemplos. Pero la tecnología y el conocimiento están ahí, y las aplicaciones gratuitas también, es cuestión de que las dos tradiciones se encuentren.

WWW.LINUX- MAGAZINE.ES


Línea de Comandos: Navegadores• LINUX USER

Navegadores desde la línea de comandos: Lynx, Links y w3m

NAVEGAR EN CONSOLA

Si trabajamos desde la línea de comandos y necesitamos algo en Internet, o bien si sólo queremos convertir un archivo HTML en un ASCII perfectamente formateado, podemos probar un navegador en modo texto. POR HEIKE JURZIK

L

a navegación Web en modo texto puede parecer el último recurso, pero un navegador de este tipo puede ser la herramienta perfecta en ciertos casos. En el artículo de este mes relativo a la línea de comandos, revisaremos los navegadores sin interfaz gráfica Lynx [1], Links [2] y w3m [3].

Lynx Podemos ejecutar Lynx en una terminal tecleando lynx, o si lo preferimos así, mediante el paso de la URL o archivo local HTML en el momento de realizar la llamada, es decir: lynx www.linux-magazine.com

Por defecto, Lynx muestra un resumen de los atajos de teclado más comunes en la parte inferior de la pantalla. Lynx se

controla completamente desde teclado. La tabla 1 muestra los atajos de teclado más importantes. Podemos modificar el comportamiento de Lynx especificando las opciones al hacer la llamada al navegador, o bien cambiando las opciones en el cuadro de diálogo, que aparece al presionar [O]. Si preferimos que no se nos pregunte acerca de aceptar Cookies, podemos desactivar esa opción mediante: lynx -accept_all_cookies

Para fijar esta configuración como permanente, bajamos por el cuadro de diálogo con la flecha hacia abajo hasta que encontramos la entrada de las Cookies, y presionamos entonces la flecha derecha. En el menú que aparece podemos seleccionar ignore, ask user

WWW.LINUX- MAGAZINE.ES

(opción por defecto) y accept all (véase Figura 1). Para asegurarnos de que Lynx no se olvidará de esta configuración al cerrar el programa, necesitamos guardar los cambios (antes debemos confirmar pulsando en Submit o en Accept Changes). Para hacer esto, marcamos la opción Save options to disk pulsando la tecla [Enter]. Lynx guarda la configuración de usuario en un archivo oculto llamado ~/.lynxc, que podemos modificar con un editor de texto. Podemos usar la opción -book para forzar a Lynx que se inicie con nuestros favoritos. Para páginas protegidas con contraseña, o bien introducimos el nombre y contraseña interactivamente, o bien proporcionamos las credenciales al ejecutar el navegador:

Número 07

87


LINUX USER • Línea de Comandos: Navegadores

Tabla 1: Controles de Lynx [Shift--] o [H] [Q] [Shiftt-Q] [Flecha Arriba], [Flecha Abajo] [Pg Up], [Pg Dn] [Flecha Derecha] o [Enter] [Flecha Izquierda] [K] [M] [G] [Shift-G] [L] [P] [D] [A] [V] [Ctrl-A] [Ctrl-E] [Ctrl-R] [Shift-7] (/) [Retroceso] [O]

Llama a la ayuda de Lynx. Cierra el programa tras preguntar. Cierra el programa sin preguntar. Desplaza hacia arriba o hacia abajo por los enlaces. Desplaza arriba o abajo una página. Sigue un enlace. Vuelve a la última página. Muestra una lista de comandos de teclado disponibles. Vuelve a la página de inicio. Confirmamos presionando [Y]. Abre un cuadro de diálogo donde podemos teclear una nueva URL. Confirmamos presionando [Enter]. Va a la última URL, permitiendo modificarla. Muestra todos los enlaces disponibles en el documento actual. Opciones de impresión: Guarda el documento en un archivo local, lo envía por email o lo envía directamente a impresión. Guarda el archivo (con todas las imágenes). Añade a favoritos bien la página que vemos ([D]) o bien la página cuyo enlace tenemos bajo el cursor ([L]). Abre un administrador de favoritos. Vuelve al comienzo de la página. Va al final de la página. Recarga la página. Comienza la búsqueda. Muestra el historial. Abre el cuadro de diálogo de configuración de Lynx.

lynx -auth=nombre:contraseñaU www.url.es

Si vamos a usar Lynx para ver páginas HTML locales, podemos indicarle al navegador que no siga enlaces externos mediante la opción -localhost. También podemos usar nuestro editor favorito en Lynx. Si tecleamos lo siguiente: lynx -editor=vim

podemos teclear [E] para cargar la página HTML que estamos viendo en ese momento en el editor Vim. Al cerrar el editor volveremos automáticamente a Lynx, dónde podremos recargar la página presionando [Ctrl-R]. Para asegurarnos que Lynx recuerda nuestro editor favorito la próxima vez que usemos el navegador, presionamos la tecla [O] de nuevo para acceder al cuadro de diálogo, donde podemos introducir el nombre de nuestro editor favorito en en cuadro Box.

De Lynx a Links El segundo navegador en modo texto, Links, nos permite el control por teclado

88

Número 07

y por ratón. Para ejecutarlo tecleamos links y nuevamente podemos especificar una URL o un archivo local. Si presiona-

mos [Esc] o pulsamos en el borde superior de la ventana con el ratón, Links nos mostrará un menú que podremos manejar mediante ratón o teclado. Existen atajos de teclado para la mayoría de las entradas del menú, y es bastante recomendable aprenderse estos atajos y dejar el ratón quieto en su alfombrilla. La Tabla 2 muestra un resumen de los comandos más comunes. Como el ratón se usa para controlar el programa, no podemos seleccionar una porción de texto y mandarla al portapapeles de la manera habitual. En vez de esto, tenemos que dejar presionada la tecla [Shift] mientras seleccionamos el texto. El menú Setup nos permite configurar el navegador. Desde el menú Setup podremos configurar el idioma, teclado, opciones del terminal (color, cursor, etc), tamaño de la caché y similares. La configuración personal se guarda en un archivo llamado links.cfg en el directorio ~/.links. De nuevo, links.cfg es un archivo de texto que podemos modificar usando un editor. Links renderiza las tablas y los marcos mejor que Lynx, e incluso podemos especificarle la manera de renderizar tipos específicos de archivos. Por ejemplo, para mostrar imágenes PNG con el programa display (sólo funciona bajo X Window), debemos definir previamente

Tabla 2: Comandos de teclado para Links [Esc] [Q] [Shift-Q], [Ctrl-C] [Flecha Arriba], [Flecha Abajo] [Pg Up], [Pg Dn] [Flecha Derecha] [Flecha izquierda] [G] [Shift-G] [D] [Shift-7] (/) [Shift--] (?) [N] [Shift-N] [Shift-0] (=) [\\] [A] [S] [Ctrl-R]

Muestra/esconde la barra de menú. Cierra Links - preguntando antes de salir. Cierra el programa sin preguntar. Navega delante y detrás a través de los enlaces. Desplaza una página arriba/abajo. Sigue un enlace. Vuelve un paso en el historial. Abre una línea donde introducir una nueva dirección. Abre la misma línea pero mostrando la última dirección visitada, permitiendo modificar la dirección. Guarda una copia local del documento en nuestro ordenador. Búsqueda hacia delante en el documento actual. Búsqueda hacia atrás en el documento actual. Va hasta la siguiente coincidencia. Vuelve a la anterior coincidencia. Abre una ventana con información de la URL, tamaño, juego de caracteres, servidor Web, etc. Muestra el código fuente del documento, pulsando de nuevo la tecla volvemos a la vista del navegador. Añade a favoritos. Abre el administrador de favoritos. Recarga el documento.

WWW.LINUX- MAGAZINE.ES


Línea de Comandos: Navegadores• LINUX USER

De nuevo tecleamos image/png en Content-Type, confirmamos seleccionando OK y guardamos los cambios. A partir de este momento, cada vez que pulsemos con el botón derecho sobre una imagen PNG que se muestra como [IMG], podemos seleccionar View image o presionar el botón de flecha derecha para abrir un cuadro de diálogo que nos permite abrir, guardar o mostrar (el código fuente) del archivo.

Simplemente w3m

Figura 1: Cuadro de diálogo para configurar Lynx.

un tipo de archivo en Setup / Associations / Add. Para ello, introducimos un nombre en el campo Field, por ejemplo PNGs. Fijamos Type a image/png, y finalmente definimos en Program la aplicación que usará Links para mostrar los archivos PNG. Después de completar estos pasos, usamos Add

en menú Setup / File extensions para definir los tipos de extensiones para el tipo de archivo que acabamos de definir. Añadimos las posibles extensiones del archivo en Extensions como una lista separada por comas, por ejemplo: png,PNG

El tercer navegador de nuestra lista es w3m. A diferencia de Links y Lynx, w3m sí aguarda que le pasemos una dirección Web o una ruta local. Si no se la suministramos, w3m simplemente mostrará una lista de opciones en nuestra ventana. De nuevo, el navegador soporta control por teclado y por ratón (véase Tabla 3 para un resumen de los atajos de teclado) y de nuevo necesitamos mantener pulsada la tecla [Shift] para seleccionar porciones de texto con el ratón. La posibilidad de abrir múltiples páginas Web usando el atajo de tecladdo [Shift-T] y navegar pasando de una pes-


LINUX USER • Línea de Comandos: Navegadores

taña a otra es una característica realmente interesante. Si presionamos { iremos a la siguiente pestaña, mientras que con } volvemos a la anterior. Si presionamos [Esc-T] (o [Alt-T] en algunos escritorios) se abre un cuadro de selección de pestañas, y con [Ctrl-Q] eliminamos la pestaña actual (véase Figura 2). Los usuarios de w3m necesitarán con seguridad abrir el cuadro de configuración presionando [O] y realizar los cambios que necesiten. w3m proporciona un gran número de opciones de configuración, y si las configuramos a nuestro gusto mejoraremos enormemente la navegación.

Trucos y Más Trucos Los navegadores en modo texto brillan en todo su esplendor en conjunción con otros programas. Si nuestro editor favorito es Vim, por ejemplo, sólo necesitamos

añadir una simple línea a la configuración del archivo ~/.vimrc para configurar nuestro navegador favorito como visor HTML. Podemos asignar una tecla para lanzar el navegador o definir un nuevo comando. Por ejemplo, necesitaremos añadir la siguiente línea a Figura 2: w3m ofrece navegación mediante pestañas. ~/.vimrc para ejecutar Lynx cada vez que presionemos [F2]: set mailcap_path = ~/.mailcap map <F2> :!lynx %<CR>

De esta manera podemos iniciar el navegador mientras trabajamos con Vim. Para lanzar el navegador desde Vim, presionamos [Esc] para pasar al modo comando y tecleamos :View Es igualmente muy sencillo integrar los tres navegadores en Mutt [4]. Para ver adjuntos HTML directamente en nuestro cliente de correo, añadimos la siguiente línea en el archivo ~/.mail-cap:

90

Formatos Los tres navegadores comentados en este artículo usan la opción del comando dump para convertir páginas HTML a ficheros de texto ASCII convenientemente formateados. Los siguientes comandos:

text/html; links %s

Añadimos la ruta de nuestro archivo mailcap al archivo de configuración ~/.muttrc:

Tabla 3: Controles de teclado de w3m Llama a la ayuda. Cierra w3m tras pedir confirmación. Cierra w3m sin pedir confirmación. Desplaza una página arriba / abajo en el documento actual. Va a la primera / última línea del documento. Va al siguiente enlace. Vuelve al enlace anterior.

lynx -dump /home/huhn/ U lynx.html | less

hacen que el navegador Lynx formatee el documento y llame al paginador less para mostrar el documento pantalla a ■ pantalla.

RECURSOS [1] Lynx: http://lynx.isc.org/ [2] Links: http://links.sourceforge.net/ [3] w3m: http://w3m.sourceforge [4] Mutt: http://www.mutt.org/

Sigue el enlace. Vuelve a la página anterior. Muestra la URL del archivo actual en la esquina inferior izquierda de la ventana. Abre un cuadro de diálogo donde los usuarios pueden introducir una nueva URL. Búsqueda hacia delante por palabra clave. Búsqueda hacia detrás por palabra clave. Alterna en navegador entre vista normal y vista de código fuente. Añade un documento a la lista de favoritos. Muestra los favoritos. Recarga la página. Abre un historial de páginas visitadas recientemente. Guarda el archivo a disco. Abre un cuadro de diálogo para la configuración personal. Abre la página en el editor (definido en el cuadro de configuración).

Número 07

WWW.LINUX- MAGAZINE.ES

LA AUTORA

[Shift-H] [Q] [Shift-Q] [Space], [B] [G], [Shift-G] [Tab] [Esc], [Tab] (o [Alt-Tab]) [Return] [Shift-B] [U] [Shift-U] [Shift-7] (I) [Shift-?] (?) [V] [Esc], [A] (o [Alt-A]) [Esc], [B] (o [Alt-B]) [Shift-R] [S] [Esc], [S] (o [Alt-S]) [O] [E]

La próxima vez que recibamos un correo formateado como HTML, sólo tendremos que presionar [V] (para la opción view attachments) y seleccionar el adjunto HTML presionando la tecla [Enter].

Heike Jurzik estudió Alemán, Informática e Inglés en la Universidad de Colonia, Alemania. Descubrió Linux en 1996 y quedó fascinada con la potencia de la línea de comandos desde ese momento. En su tiempo libre puede que la encuentre en clases de folclore irlandés, o visitando Irlanda.


Trucos

El orden de las particiones sí altera al producto

RM -FR /

En el día a día del usuario y desarrollador de Linux, nos topamos con problemas de toda suerte e índole, que se resuelven con o mucha, poca o ninguna ayuda de la comunidad, con Google, Dogpile, o Usenet, pero siempre con dosis de imaginación e intuición. Esta sección reúne los mejores soluciones para el beneficio de todos. Soluciones que no se encuentran googleando o que se encuentran, pero o que son insatisfactorias, incompletas o directamente mal planteadas. Este mes Alberto Planas y Paul C. Brown lidian con un Windows 2000 en una máquina de arranque dual que se niega a atender a razones.. POR PAUL C. BROWN

L

a instalación empezó a las 4:30 pm. A las 4:45 las cosas no podían ir peor… Windows no pitaba, sólo habíamos conseguido una instalación parcial de Linux y no había conexión a la red para consultar los errores ni descargar las herramientas para corregirlos. Un desastre. Cuando las cosas se ponen así de

92

Número 07

mal, sólo queda una solución: Extensión 520. Alberto.

Flashback: 24 horas antes Perfil de la víctima: Luis, 41 años, diseñador gráfico. Nivel de proficiencia informática: usuario final. Con semejante panorama ¿a quién se le ocurre aconsejar que se instale Linux? Pero no lo

WWW.LINUX- MAGAZINE.ES

puede resistir. Hay un personajillo chovinista del Software Libre a ultranza en mi cerebro, quiero pensar que vestido con los hábitos blancos de los angelitos de los dibujos animados, que me obliga de vez en cuando a decir aquello de “Pues con Linux eso no pasa”. “Pues con Linux eso no pasa”. Luis andaba renegando de la cantidad de


Trucos

virus, spyware y troyanos pululando por su máquina que hacían que el arranque fuese un martirio, la inicialización del entorno gráfico una tortura y la ejecución de las aplicaciones un sinvivir. Inmediatamente, el otro personaje que conforma mi conciencia, el ying al yang del angelito fanático de mi cerebro, un diablillo que vive en mi vientre, me clavó su tridente profundamente en alguna parte sensible de mi duodeno. ¡Ay! ”¿Estás bien?” pregunta Luis, solícito. “Perfectamente,” le aseguro “pues deberías plantearte instalarte Linux”. Estoy perdido. He puesto el piloto automático y el ángel se hace cargo de todo lo que digo. Empiezo a enumerar todas las ventajas de Linux, su seguridad, su estabilidad, su configurabilidad, a este bienintencionado, inteligente, pero informáticamente simplón artista de los pinceles y los lápices. “Pero ¿qué haces?” grita el diablillo, retorciendo el tridente salvajemente en mis tripas. “Te estás buscando la perdición. Como algo salga mal, que saldrá, lo habrás perdido para siempre”. Pero yo ya había cogido carrerilla y me era imposible parar. “Si quieres, me traes tu máquina y te ayudo con la instalación”. Y entonces fue cuando me di cuenta de que, de los dos, el diablillo es el que tenía razón.

Flashforward: Hoy Hemos pasado por el DVD que no arranca. Esa fue la primera llamada a Alberto. A menudo veo a los acólitos que pretendo ganarme como un par de termómetros. Uno mide su confianza en mi y, normalmente va bajando. Estoy contento si no se llega al punto de congelación. El otro mide el nivel de pánico y va subiendo a medida que se multiplican los mensajes de error sobre la irrecuperabilidad del sistema, los pantallazos en negro y las preguntas tipo “Eeeh… te acordaste de hacer copias de seguridad ¿verdad?”. En cuanto a Alberto, creo que tiene un salvapantallas con un pingüino con las alas desplegadas sobre un círculo blanco, a lo Batman, conectado a la salida del teléfono. Cuando un usuario en apuros llama, aparece el pingüino, Alberto se pone sus bat-camiseta con Tux y llega corriendo a resolver cualquier batentuerto. Cuando llega, cambia de super-

héroe que lucha en pro del software libre, por cirujano tipo Urgencias, dispuesto a improvisar una traqueotomía con el canutillo de un bolígrafo. “Destornillador” ordena. Desmonta la carcasa del ordenador de Luis veloz y con pericia. Uno casi espera encontrar un corazón fibrilando entre los cables y placas. “Pinzas”. Quita un jumper, cambia la posición de otro. Vuelve a montar la carcasa con tres precisos movimientos de muñeca. “Se recuperará” informa mientras se quita guantes y mascarilla. “He puesto el reproductor de esclavo de la grabadora. Los dos estaban como maestros y confundían a la placa base. Que duerma. pasaré por la mañana”. Se despide chocando las manos a todos los atónitos presentes. “Sigamos” digo suspirando. Echo una rápida ojeada al reloj. No vaya a ser que Alberto se vaya a casa y me deje colgado con el marrón. La instalación propiamente dicha va como la seda. Utilizamos el modo experto para poder configurar a nuestro gusto particiones y hardware. El sujeto, muestra un disco duro de 80 gigas, con dos particiones afectadas por sendos casos terminales de Windows y otro sano dedicado a datos. Hemos de salvar al menos uno: la operación tratará de sustraer la partición vfat de 20 Gigas con Windows 98 y sustituirlo por uno ext3 Linux y un swap. Por algún oscuro motivo, la familia desea que se respete la partición con Windows 2000, a pesar de que se le informa que ésta puede ser extraída sin que peligre la vida del paciente. Pero la familia insiste. Motivos religiosos, alegan. Lo dicho. A las 4:45, llega el momento de la verdad: reiniciamos. Aparece el menú de GRUB. El paciente parece estable y en buen estado de salud. El arranque de Linux es impecable: Mandrake muestra sus colores en toda su gloria. Una vez se ha comprobado que Linux da la talla, pasamos a ver si ese putrescente tumor (es decir, la partición Windows) sigue en su sitio.

Sudor Frío Parece que sí. Empieza el arranque, pero de repente… Error: NTOSKRNL.EXE isU missing or corrupt

WWW.LINUX- MAGAZINE.ES

Lo primero que haces es no creértelo. A fin de cuentas ¿quién puede fiarse de un error de Windows? Knoppix en ristre, registras la partición NTFS y, ahí, bajo WINNT/SYTEM32 aparece el fichero NTOSKRNL.EXE, intacto. Bien. Lo que sospechaba. Algo ha pasado para que Windows no lo encuentre en el arranque. Ahora llega el momento de pensar detenidamente y con calma, cosa imposible, claro, por que miras a Luis y está al borde de la apoplejía. El confiametro ha bajado de golpe a -10º y el pánicometro amenaza con romper las barreras conocidas. Y eso que un examen de su disco duro nos dice que todo está bien, que su partición Windows 2000 está intacta. Pero explícale eso a él. Además, la máquina la comparte con su esposa, y ni nos podemos imaginar la bronca que le propinará Coral cuando descubra que todos sus datos son irrecuperables. O esto es lo que se imagina Luis. ¿Qué puede haber ocurrido? Windows 2000 estaba ubicado en hda2 (NTFS). Bueno de hecho sigue ahí, pero en la particionamiento, hda1 (donde estaba W98) ha desaparecido, siendo sustituido por hda5 (ext3) y hda6 (swap). Um. Windows decide ignorar la existencia de estas particiones. Parece obvio que para Windows 2000 la partición anterior simplemente ha desaparecido y ahora se halla en la primera partición. Veamos que nos cuenta San Google (ver [1]). ¡Ajajá! Dice… “Fichero boot.ini corrupto: Este problema a menudo surge cuando el fichero boot.ini o falta o no está correctamente configurado. Ocurre cuando el usuario a añadido o eliminado un sistema operativo del ordenador […]. Hay que asegurarse de que la línea que apunta al sistema operativo y si dispositivo y partición están correctamente configurados en

Número 07

93


Trucos

las secciones de [cargador de disco] y [sistemas operativos]…” Stupendo. Veamos el ficherito de marras: $ cat /mnt/windows/boot.ini [boot loader] timeout=5 default=multi(0)disk(0)rdisk(0)U partition(2)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)U partitions(2)\WINDOWS=U "Microsoft Windows XPU Home Edition" /fastdetect

Y ahí lo tienes. La partición a la que apunta es el 2, pero es que hda2 sigue siendo hda2 y si no lo es para Windows, ¿qué narices es ahora? Y además, estando ubicado en NTFS ¿cómo podemos cambiarlo? Desde Linux, puedo verlo, pero sólo eso: el driver actual es de sólo lectura. He llegado al límite de mis conocimientos. Levanto el auricular y marco el 520…

Pingüinoman al Rescate “Podemos intentar restaurar el cargador de disco original en el MBR” sugiere Alberto. Parece una buena idea, pero hemos de introducirnos en el modo rescate de Windows y ni Luis ni yo tenemos un disco para hacerlo. Pero Alberto es el hombre de los mil recursos, desaparece en su despacho durante un breve intervalo y reaparece con un CD de Windows original en la mano. Es increíble lo que tiene este hombre dentro de cuatro paredes aparentemente desnudas. Ante mi mirada interrogadora, me dice, casi avergonzado, “a veces tengo que administrar máquinas Windows”. Arrancamos el CD de Windows en modo rescate. Consultamos el famoso “How to Remove Linux and Install

94

Número 07

Windows XP” [2] – que, a pesar de los pesares, no es tan ofensivo como sugiere el título) en el sitio de Microsoft y, casi a tontas y a locas, intentamos aplicar un poco de la sabiduría que destila. Nos saltamos la parte de quitar particiones e intentamos restaurar el MBR con un

desde Linux, lo grabamos en un disquete y listos”. Perfecto. Manos a la obra. Rearrancamos la máquina en Linux y abrimos vi, realizamos los cambios y guardamos, esta vez en un disquete formateado con vfat, por que, como mencionamos, no podemos escribir a NTFS. Según Alberto, la línea ofensiva

c:\> fdisk \mbr

Nos sale una advertencia informándonos que se perderán los cambios realizados en el MBR. Alberto y yo dudamos. Luis no. Notamos que que se pone en tensión y se aclara la garganta. Es suficiente: “Dale a enter, Alberto”. Borra, borra , escribe, escribe, copia, copia. “Vamos a reiniciar” nos informa Alberto. Comprobación de memoria, discos duros y DVDs detectados, LILO… ¿Cómo? Linux empieza a arrancar. Alberto y yo suspiramos aliviados. Luis no. Yo, apóstol de lo obvio, comento “Bueno eso no ha funcionado”. “No importa” declara Alberto. “Modificaremos el boot.ini”. Nueva rearrancada al rescate de Windows. Instintivamente, Al escribe vi en la línea de comandos. “¿Qué haces?” le pregunto. “Caray, es verdad” dice, apesadumbrado. “¿No hay un programa edit o algo por el estilo?” No, no hay. No al menos en el modo rescate. El programa EDIT del MS-DOS sólo está disponible si tenemos el QBASIC y QBASIC hace mucho que no se suministra con Windows. Conclusión: El modo rescate de Windows no contiene un editor (???!!!!). “No importa” dice de nuevo Alberto. “Copiaremos el fichero a un disquete y lo editaremos en Linux”. Disquete. copy c:\boot.ini a:. Enter. Espera. ”¿Ha hecho algo?” Saco el disquete y lo monto en Linux. “Aquí no hay nada” les informo a ambos. Otra vez: Disquete. copy c:\boot.ini a:. Enter. Espera. “Sigue sin haber nada”. Hemos pecado del síndrome de Windows: no leemos lo que nos dice: que el modo de rescate no permite la escritura a disquete, sólo permite la lectura. “Pero, ¡eso es absurdo!” resopla Alberto. “No importa” Esta vez he sido yo. “Cierto”. dice Alberto. “Lo editamos

WWW.LINUX- MAGAZINE.ES

multi(0)disk(0)rdisk(0)U partitions(2)\WINDOWS=U "Microsoft Windows XP HomeU Edition" /

Debe rezar multi(0)disk(0)rdisk(0)U partitions(1)\WINDOWS=U "Microsoft Windows XP HomeU Edition" /

No se nos olvida pasarle unix2dos para evitar problemas con los finales de línea. Volvemos al modo rescate de Windows otra vez, volvemos a insertar el disquete otra vez, tecleamos: C:\> move boot.ini boot.ini.bak C:\> copy a:boot.ini c:

Si no arranca, la hemos cagado. Ya se nos acaban las ideas. Veamos: reset, LILO, Windows… La cara de alivio de Luis era pura poesía. Había recuperado su infecto Windows 2000 de nuevo. Podía seguir viviendo. No puedo reprimirme: “¡rm -fR /, Alberto!” le murmuré, “¡rm -fR /!”

Epílogo Luis llega al día siguiente, sonriente y con un no sé qué en los andares, como si se hubiera liberado de un enorme peso desde la tarde anterior. “He formateado la partición de Windows” me informa feliz. ■ Eso es lo que yo llamo progreso.

RECURSOS [1] Información sobre el problema con boot.ini: http://www.computerhope. com/issues/ch000646.htm [2] Como eliminar Linux y reinstalar Windows: http://support.microsoft. com/default. aspx?scid=kb;en-us;314458


Más del 30% de descuento respecto al precio de portada: Consigue 12 números por 54’90 Euros y todos los DVDs ¡Gratis!

A diferencia de otras publicaciones, Linux Magazine no llenará tu buzón de recordatorios para que renueves tu subscripción. Ésta se renovará automáticamente cada año. Recibirás una confirmación aproximadamente 30 días antes del final de tu periodo de subscripción, pero no se requiere que hagas nada para seguir suscrito.

¡No te pierdas Linux Magazine nunca más! La subscripción te asegura que recibas los conocimientos Linux de más alta calidad en tu domicilio cada mes.

Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el precio de todos los números que no hayas recibido. Sin preguntas, sin fechas de cancelación, sin problemas.

Linux Magazine es algo más que una revista de Linux. Patrocinamos grupos, congresos, proyectos y eventos relacionados con el Software Libre. Suscribiéndote a Linux Magazine garantizas que podamos seguir apoyando al Software Libre allá donde haga falta.


EVENTOS

CAMPUS PARTY

Linux World San Francisco

aKademy 2005

Fecha: 25-31 Julio

Fecha: 9-11 Agosto

Fecha: 27 Agosto - 4 Septiembre

Ciudad: Valencia

Ciudad: San Francisco, CA, EE.UU.

Ciudad: Málaga, España

Sitio Web: http://www.campusparty.org

Sitio Web: www.linuxworldexpo.com

Sitio Web: http://dot.kde.org

Calendario de Eventos Evento Fecha Linux Forum Asia 2005 15-16 Junio International Lisp Conference 2005 19-22 Junio yapc:Yet Another Perl Conference 22-24 Junio LinuxTag 2005 22-25 Junio I Congreso de Tecnologías del Software Libre 7-8 Julio Debconf 5 10-17 Julio 2005 Linux Symposium 20-23 Julio Campus Party 2005 25-31 Julio What the Hack 28-31 Julio Usenix Security Symposium 1-5 Agosto Wikimania 2005 4-8 Agosto LinuxWorld Conference & Expo S.F. 9-11 Agosto LinuxWorld Conference & Expo Beijing 24-26 Agosto LinuxWorld Conference & Expo Moscow 7-9 Septiembre aKademy 2005 27 Agosto - 4 Septiembre LinuxWorld Conference & Expo UK 5-6 Octubre LinuxWorld Conference & Expo NL 13-14 Octubre LinuxWorld Conference & Expo Frankfurt 15-17 Noviembre LinuxWorld Conference & Expo Australia 28-30 Marzo 06

Ciudad Hong Kong, China Palo Alto, CA, EE.UU. Toronto, Canadá Karlsruhe, Alemania A Coruña Helsinki, Finlandia Ottawa, Canadá Valencia, España Liempde, Holanda Baltimore, MD, EEUU Frankfurt, Alemania San Francisco, CA, EE.UU Beijing, China Moscú, Rusia Málaga Londres, Reino Unido Utrecht, Holanda Frankfurt, Alemania Sydney, Australia

Sitio Web www.linuxforumasia.com www.international-lisp-conference.org http://yapc.org/America www.linuxtag.org http://congreso.gpul.org www.debconf.org/debconf5 www.linuxsymposium.org http://www.campus-party.org www.whatthehack.org www.usenix.org http://wikimania.wikimedia.org/wiki www.linuxworldexpo.com www.linuxworldchina.com www.linuxworldexpo.ru http://dot.kde.org www.linuxworldexpo.co.uk www.linuxworldexpo.nl www.linuxworldexpo.de www.linuxworldexpo.com.au

Información de Contacto Director Paul C. Brown Coolaboradores Paul C. Brown, Jose Manuel González Vida, Juan Rafael Fernández, Pedro Orantes, José María Ruíz, Alberto Planas. Traductores Paqui Martín Vergara, Paul C. Brown, Jesús Reyes Delgado, Antonio Rueda, Víctor Tienda. Maquetación Sergio Hardasmal Diseño de Portada Pinball (info@pinball-werbeagentur.de) Diseño de Publicidad Feedback (www.f-back.com) Publicidad www.linuxmagazine.com.es/pub/ Para España Paul C. Brown pbrown@linuxmagazine.com.es pbrown@linuxnewmedia.es Tel.: (+ 34) 951 010 556 Móvil.: (+ 34) 655 036 836 Fax.: (+ 34) 951 010 516 Sergio Hardasmal anuncios@linuxmagazine.com.es Tel.: (+ 34) 951 010 556 Fax.: (+ 34) 951 010 516

Para el Resto del Mundo Brian Osborn ads@linux-magazine.com Tel.: (+49) 6509 910 495 Fax.: (+49) 6509 910 497 Director Editorial Paul C. Brown Director de Producción Sergio Hardasmal anuncios@linux-magazine.com Subscripciones: www.linuxmagazine.com.es/ magazine/subs Precios Subscripción (12 números + 1 DVD cada 3 números) España: 49,50 € Europa: 59,90 € Resto del Mundo - Euros: 79,90 € Resto del Mundo - Dólares U.S.A.: $94,90 € Tel.: (+34) 951 010 556 Fax.: (+34) 951 010 516 subs@linuxmagazine.com.es Linux Magazine Linux New Media Spain, S.L. Avda. Juan López Peñalver, 21 29590 - Campanillas Málaga ESPAÑA info@linuxnewmedia.es Tel.: (+34) 951 010 556 Fax.: (+34) 951 010 516

WWW.LINUX- MAGAZINE.ES

www.linux-magazine.es - España www.linux-magazine.com - Mundo www.linux-magazine.de - Alemania Si bien se toman todas las medidas posibles para garantizar la precisión del contenido de los artículos publicados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en la revista. Asimismo, Linux Magazine no comparte necesariamente las opiniones vertidas por sus colaboradores en sus artículos. El riesgo derivado del uso del DVD y el material que contiene corren por cuenta del lector. El DVD es estudiado escrupulosamente para confirmar que está libre de virus y errores. Copyright y Marcas Registradas © 2004 Linux New Media Spain, S.L. Linux New Media Spain S.L. prohíbe la reproducción total o parcial de los contenidos de Linux Magazine sin su permiso previo y por escrito. Linux es una Marca Registrada de Linus Torvalds. Impreso en Alemania Impresión: Dierichs Druck + Media GmbH Distribución: SGEL Depósito Legal: MA-116-2005 ISSN edición impresa: 1576-4079 ISSN edición online: 1699-2237

Número 07

97


PRÓXIMO NÚMERO

Agosto 2005: Número 8

PRÓXIMO NÚMERO WIKIS Y BLOGS Y es que la web no para de crecer y las herramientas para publicar y administrar contenidos no paran de mejorar y de hacerse más poderosas. En portada el mes que viene examinamos precisamente esas herramientas para la publicación y administración en web. Abarcaremos Drupal, un sistema de administración de contenidos, una herramienta para soportar sitios web y weblogs comunitarios. Veremos la plataforma de colaboración TWiki, uno de los más veteranos motores wiki. Y le echaremos un vistazo a MediaWiki, uno de los más poderosos. Más aún, en la sección de desarrollo, Jose María Ruíz nos proporcionará un script Python para implementar un WIki basado en CGIs.

PDFS EXTENDIDOS

LINUX USER

La esencia de Linux es la búsqueda o creación de las herramientas perfectas. Si la configuración estándar para la creación de PDFs desde OpenOffice no te satisface, es hora de modificarlo a tu gusto. El mes que viene vemos como con un sencillo macro podemos crear PDFs que incluyen marcas, hiperenlaces y notas… Y todo sin salir de OpenOffice.

En la sección dedicado al usuario final, veremos como administrar fuentes bajo KDE y Gnome, como compartir archivos en la red Kazaa con Apollon y hablaremos de uno de los proyectos educativos más interesantes de este momento: ATNAG.

COCHECITOS Alberto Planas nos trae la segunda entrega de su serie de hardware y software destinado a controlar un coche teledirigido a través del puerto paralelo. ¿Logrará que eche a andar en este capítulo? ¿En más de una dirección? ¿Simultáneamente?

GMAILS Vemos como utilizar tu cuenta de GMail como sistema de ficheros montable accesible desde Internet.

BOLETÍN LINUX MAGAZINE El Boletín de Linux Magazine te da la oportunidad de ver lo que se avecina en el siguiente número de Linux Magazine e incluye enlaces a artículos que aparecen en nuestro sitio web antes de que la versión impresa llegue a los quioscos. Suscríbete en www.linuxmagazine.es/boletin.

A LA VENTA: JULIO 2005 98

Número 07

WWW.LINUX- MAGAZINE.ES


0

*

Proyectos desarrollados Programas escritos Páginas publicadas

* Este sería el resultado de la aplicación de la directiva sobre patentes de software propuesta al Parlamento Europeo.

www.ffii.org



Linux Magazine - Edición en Castellano, Nº 07