linux magazine - edición en castellano, nº 07
DESCRIPTION
Puesto a la venta en junio 2005. Tema de Portada: Sistemas Virtuales. DVD: Suse 9.2 - Versión Comercial.TRANSCRIPT
Siste
ma
s Virtu
ale
sW
ine
Ma
c-o
n-Lin
ux
Ac
tive D
irec
tory C
oc
he
cito
s ap
t4rpm
Linu
x e
n S
pa
rc E
ma
il an
ón
imo
Zo
pe
X3.0
Debianiza tu SuSEUso de APT para la descarga
e instalación de paquetes p41
JuguetesControlamos un coche teledirigido de un
“Todo a 100” a través del puerto paralelo p52
NÚMERO 7 • P.V.P 5,95 €
SoundJuicerRipea CDs desde el escritorio Gnome
SUSE 9.2PROFESIONAL
SUSE 9.2PROFESIONAL
Versión profesionalcompleta DVD de 7.5 GB
KooldockUn panel decontrol vistoso
W W W . L I N U X - M A G A Z I N E . E S
LIN
UX M
AGAZIN
E
NÚMERO 07
Edición enCastellano
SISTEMAS VIRTUALESEmulación de Windows, Mac y 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
BlueFish p35
Un completo IDE para
el desarrollo web
• Número 1: Especial Redes - Servidores de correo TLSMediaWiki - Konversation - DVD Fedora Core 3 ...
¡Hazte con tus ejemplares atrasados!
¡No esperes a que se agoten!
#1
#2
#3
#4 #5
• Número 2: Hardware Linux - PCs Silenciosos - Gestorde ventanas Twin - Backups con Konserve ...
• Número 3: Seguridad para todos - Configuracióniptables con Shorewall - Ruby Rails - Domótica ...
• Número 4: Redes Wireless - Scribus - Radio USBHackeando con Zaurus - DVD Mandrake 10.1 ...
• Número 5: Email seguro - Seguridad Wireless - Gimpcon Python - Bluetooth - QEMU - QTCanvas - Scribus (II)
• Número 6: Multimedia - MLDonkey - OpenOfficeJuegos DOS con SCUMMVM y DOSBox - Scribus (III)
¡pídelos ya!
#6
WWW.LINUX-MAGAZINE.ES
Me imagi-
no que
serían
hasta buena gente
en el fondo, que
amarán a sus
familias y respeta-
rá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, cele-
bradas en el Parque Tecnológico de
Andalucía, donde tenemos la redacción de
la revista. “Jopé,” me dije cuando apare-
ció 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 cua-
les atizarles.
Mr. X, era el responsable de
Investigación y Tecnología de una empre-
sa 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 soft-
ware ya es un terreno harto resbaladizo, el
promocionar las patentes desde la univer-
sidad, institución diseñada para la disemi-
nació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, descara-
damente de software, descaradamente
infringiendo la directiva en vigor aproba-
da 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, esta-
ba bastante orgulloso de sus logros.
Normal: estaba sacando una empresa ade-
lante y tenía en cartera tres o cuatro
patentes de software para su compañía.
Todo un logro. Mas, cuando le
hice notar que sus patentes pro-
bablemente 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 respon-
dí, 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 aca-
tarla.
Después vino la absurda pregunta, que-
riendo 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 peligro-
so 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 investi-
gar si están infringiendo la patente de
alguien. Bastante tienen con escribir pro-
gramas. 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 suici-
da. ¿A qué me suena todo esto? Desde la
fría lógica y el sentido común, parece un
sistema intrínsecamente perverso, perver-
so en el sentido en que trastoca los mismo
principios que alega defender, es decir, los
del libre mercado.
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 convi-
van, los del Software Libre han de permi-
tirnos patentar a los del Software
Privativo”. Brillante. O sea que hemos de
darle la libertad a las megacorporaciones
(o minicorporaciones, me da igual) acapa-
radoras de patentes a registrar cada una
de las ideas que se les ocurra y ellos nos
darán la libertad de defendernos en el jui-
cio cada vez que infrinjamos una de sus
chaladuras, como el doble clic, los interfa-
ces con pestañas o el XOR aplicado a gráfi-
cos. Me parece que no.
Sin embargo, la más peligrosa de todas
las cosas peligrosas que se malinterpreta-
ron ese día por el desconocimiento gene-
ral reinante, al menos para Mr. X y Mr. Y,
es que, estaban tan metidos en su fabulo-
so mundo donde las restricciones artificia-
les al mercado promueven la innovación y
permiten a PYMEs codearse con las gran-
des 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 ansia-
ban pertenecer.
Que miedo.
3
EDITORIAL
3Número 07W W W . L I N U X - M A G A Z I N E . E S
Estimado Lector de Linux Magazine
Nos sentimos orgullosos de nuestrosorígenes como publicación, que seremonta a los primero días de la revo-lución Linux.Nuestra revista hermana,la publicación alemana Linux Maga-zin, fundada en 1994, fue la primerarevista dedicada a Linux en Europa.Desde aquellas tempranas fechashasta hoy, nuestra red y experienciahan crecido y se han expandido a lapar que la comunidad Linux a lo anchoy largo del mundo. Como lector deLinux Magazine, te unes a una red deinformación dedicada a la distribucióndel conocimiento y experiencia téc-nica. No nos limitamos a informarsobre el movimiento Linux y de Soft-ware Libre, sino que somos parteintegral de él.
LA IGNORANCIA ES FUERZA
Paul C. Brown
Director
4 Número 07
CONTENIDOS • Linux Magazine nº 7
W W W . L I N U X - M A G A Z I N E . E S
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.
37 Zope
Vemos las novedades que aporta la
nueva versión X3.0 al universo de los
servidores de aplicaciones web.
41 AptEn 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.
PORTADA PORTADA
31 Mac en Linux
Gracias a los emuladores los usuarios ya
pueden ejecutar su querido Mac OS X
bajo Linux, permitiendo un reencuentro
entre hermanos.
48 Cochecitos
Primera parte de una serie que nos mues-
tra como controlar dispositivos (en este
caso un cochecito teledirigido de un “Todo
a Cien”) a través del puerto paralelo.
52 Correos anónimos
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.
56 Perl
En nuestra entrega mensual de Perl,
echamos un vistazo al depurador inte-
grado en Perl.
61 Jython
Este mes utilizamos librerías Java y
analizamos la reproducción de sonidos
desde Java para crear un mini reproduc-
tor de MP3.
65 La Columna de Charly
66 BackUp
Con una estrategia de copias de seguri-
dad adecuada no tendremos problemas
para restablecer archivos perdidos.
PRÁCTICO
LINUX MAGAZINE
3 Editorial
6 Inseguridades
8 DVD Linux Magazine
10 Noticias
95 Suscripciones
97 Eventos
97 Información de Contacto
98 Próximo Número
ADMINISTRACIÓN
12 Wine
Hemos investigado las versiones libre y
comercial de Wine para ver como se
comportan ante situaciones reales de
uso.
17 PCs en PCs
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.
21 Linux dentro de Linux
Encontraremos cientos de usos para
UML, el rápido y práctico sistema
virtual de Linux
25 Samba
Descubrimos como integrar Windows
con Linux (y viceversa) con Samba.
DESARROLLO
5Número 07W W W . L I N U X - M A G A Z I N E . E S
� Versión Completa yComercial
� DVD de arranque, capadual, 7.5 GB de software
� KDE 3.3, GNOME 2.6,OpenOffice.org 1.1.3
� Conexión WLAN, Blue-tooth e IR Mejorada
� Firewall Automático
� Herramientas yCompiladores para elDesarrollo
� Incluye versión de 32 y 64bits
SUSE LINUX 9.2pROFESSIONAL
SUSE LINUX 9.2pROFESSIONAL
68 VPNs
Mostramos una solución que propor-
ciona backups transparentes para las
conexiones IPSec.
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.
74 Desktopía
WMI es un gestor de ventanas elegante
y rápido con un buen soporte para el
control por teclado.
76 KoolDock
Si el panel de KDE no te parece suficien-
temente espectacular, puedes mejorarlo
con KoolDock o KXDocker.
78 SoundJuicer
En este artículo presentamos una de las
herramientas dedicadas al ripeado de
múscia bajo Gnome: Sound Juicer.
80 Kim
Con Kim, se puede modificar y manipu-
lar ficheros de imágenes desde un menú
contextual.
82 Educación
En esta segunda parte sobre accesibili-
dad bajo Linux, abordamos uno de las
áreas más interesantes de esta ciencia:
la tiflotecnología.
87 Línea de ComandosVemos navegadores en modo texto para
el acceso a la web desde la consola.
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.
ADMINISTRACIÓN LINUX USER
LINUX USER
COMUNIDAD
Distribuidor Fuente Seguridad ComentarioDebian Info:http://www.debian.org/security/ Los avisos de seguridad actuales se in-
Lista:http://www.debian.org/debian-security-announce/ cluyen en la página de inicio. Los avisos
Referencia:DSA-…1) se proveen como páginas HTML con
enlaces a los parches. Los avisos también
incluyen una referencia a la lista de
correo.
Gentoo 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.
Mandrake 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.
Red Hat 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.
Slackware 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.
Suse 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.
POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS
6
INSEGURIDADES
Schlagwort sollte hier stehenLINUX USERNOTICIAS
6 Número 07 W W W . L I N U X - M A G A Z I N E . E S
�KRB5Kerberos es un sistema de autenticación
en red que utiliza un tercero de confian-
za (un KDC) para autenticar clientes y
servidores entre sí.
El paquete krb5-workstation incluye
un cliente telnet compatible con
Kerberos. Se descubrieron dos desborda-
mientos de búfer en la manera en que el
cliente telnet maneja mensajes del servi-
dor. Un atacante podría ser capaz de eje-
cutar código arbitrario en la máquina del
cliente si se consigue engañar a un usua-
rio para que se conecte a un servidor tel-
net 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
�MYSQLMySQL 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-
ciones definidas por el usuario. Un usua-
rio con la capacidad de ejecutar funciones
definidos por el usuario, podría, poten-
cialmente, ejecutar código arbitrario en el
servidor MysQL. El proyecto CVE ha asig-
nado los nombres CAN-2005-0709 y CAN-
2005-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 mani-
pulado 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
� TELNETEl 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
� MOZILLAMozilla 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 pro-
cesa imágenes GIF. Sería posible para un
atacante crear una imagen GIF manipula-
da que ejecutase código arbitrario cuando
fuese visualizado por la víctima. El proyec-
to CVE ha asignado el nombre CAN-2005-
0399 a este problema.
NOTICIAS
7Número 07W W W . L I N U X - M A G A Z I N E . E S
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 prove-
nir de la pestaña activa. El proyecto de
Vulnerabilidades y Exposiciones
Comunes ha asignado el nombre CAN-
2004-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 malicio-
sa 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 CAN-
2005-0232 a este problema.
Se encontró un error en la manera en
que Mozilla Mail maneja cookies cuan-
do 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 conteni-
do a través de HTTP. El proyecto de
Vulnerabilidades y Exposiciones
Comunes ha asignado el nombre CAN-
2005-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 emi-
tiendo una petición 407 de autenticación
de proxy. El proyecto de
Vulnerabilidades y Exposiciones
Comunes ha asignado el nombre CAN-
2005-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 visualiza-
da por la víctima. El proyecto de
Vulnerabilidades y Exposiciones
Comunes ha asignado el nombre CAN-
2004-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 insta-
le ficheros con permiso de lectura y escri-
tura globales, permitiendo a un usuario
local malicioso robar información o ejecu-
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 privilegia-
dos. 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 pro-
yecto 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
8
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 respectiva-
mente. Suse 9.2 viene con herramientas
gráficas como el programa de retoque de
bitmaps The GIMP versión 2, el progra-
ma 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 clien-
tes 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 administra-
dor de colecciones de música, juK.
Computación MóvilSuse Linux 9.2 viene con muchas carac-
terísticas que soportan ordenadores
móviles y dispositivos de bolsillo. La ver-
sión 9.2 viene con soporte WLAN mejo-
rado. 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
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 SencillaLa versión 9.2 de Suse Linux de
Linux Magazine es muy senci-
lla de utilizar. No hay más que
insertar el DVD en la unidad y
rearrancar el ordenador. El ins-
talador de Suse localiza el hard-
ware y recomienda las opciones
de instalación pertinentes.
La mayoría de los detalles se
manejan automáticamente y se acce-
den a las opciones de instalación a través
de un interfaz claro y simple.
YaSTSuse 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.
EscritorioSuse Linux 9.2 Profesional viene con los
escritorios KDE 3.3.4 y Gnome 2.6.
Nos 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 distribucio-
nes Linux más populares del mundo y
Suse Linux Professional es el buque
DVD LINUX MAGAZINE
8 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Figura 1: El escritorio predeterminado de Suse Linux 9.2 es KDE 3.3. Figura 2: Administra tu correo, contactos y calendario con Kontact.
DVD DE LINUXMAGAZINE
energética ACPI con suspensión a disco
avanzado.
Servidores y Herramientasde AdministraciónSuse suministra un amplio abanico de
servicios de red y herramientas de admi-
nistración. Estos servicios incluyen FTP,
DNS, Samba, NFS y NIS. También pode-
mos encontrar entre los paquetes el ser-
vidor web Apache, servidores de correo,
servidores de bases de datos SQL y utili-
dades 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 YaSuse Linux es una de las más prestigio-
sas distribuciones del mundo y espera-
mos 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 dependien-
tes en un mismo disco. Suse Linux le
trae una de las mejores y mejor integra-
das distribuciones Linux para su escri-
torio y si nunca ha utilizado Suse Linux,
ésta es una excelente ocasión para pro-
barlo. Si ya tiene una instalación de
Suse anterior, utilice el DVD para actua-
lizarse.
Tanto si es un principiante, recién lle-
gado al mundo Linux como si es un
experto de años, sabemos que encontra-
rá en Suse 9.2 Profesional el Linux que
estaba esperando. �
DVD LINUX MAGAZINE
9Número 07W W W . L I N U X - M A G A Z I N E . E S
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
• 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
Suse Linux 9.2
Suse Linux soporta los componente de
PC más comunes. Para una lista de dis-
positivos soportados, recomendamos
visitar http://www.novell.com/. El hard-
ware mínimo es:
• Procesador: Pentium 1-4, AMDx,
Duron, Athlon XP, Athlon MP o Athlon
64.
• RAM: Al menos 128 MB, 256 MB reco-
mendado.
• 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 siste-
ma se inicia, acceda al menú de arran-
que 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 hard-
ware.
Requisitos del Sistema
Como es habitual, es casi imposible
meter todo lo que Suse tiene que ofrecer
en un sólo DVD, aunque sea de las carac-
terí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, pro-
gramas y juegos, que no vienen en la dis-
tro por defecto.
Desde España, podemos acceder a la
red Iris que contiene un mirror del repo-
sitorio de Suse. También podemos insta-
lar paquetes desde repositorios no ofi-
ciales que suelen incluir paquetes no
disponibles en la versión oficial. Uno de
dichos repositorios es Packman, infor-
mación sobre la cual se encuentra dispo-
nible en http://www.links2linux.de/.
Para configurar a Yast con estas direccio-
nes, 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 oficia-
les de Packman, el servidor es
ftp.links2linux.de
y el directorio es
/pub/packman/suse/9.2/
Una vez configurado todas las direccio-
nes de repositorios, Yast actualiza la base
de datos y podremos instalar paquetes
indistintamente desde cualquiera de las
fuentes.
Más allá del DVD
10
NOTICIAS LINUX
Schlagwort sollte hier stehenLINUX USERNOTICIAS
10 Número 07 W W W . L I N U X - M A G A Z I N E . E S
La empresa malagueña Animatika aca-
bar 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 volca-
do al proyecto SAMBA bajo licencia
GPL.
Active Directory, una tecnología pro-
pietaria, cerrada e indocumentada de
Microsoft, sintetiza en un mismo paque-
te la funcionalidad de Kerberos, LDAP y
DNS. La futura versión 4 de SAMBA (pla-
neado para mediados del 2006), replica-
rá completamente la funcionalidad de
Active Directory.
“Lo realmente novedoso de nuestro
producto es que permite la inyección
ACTIVE DIRECTORY PORTADO A LINUXautomatizada 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 pro-
ductos de Animatika. como pueden ser
sus clusters de alto rendimiento y de alta
disponibilidad.
Animatika cuenta con un largo histo-
rial de desarrollo de aplicaciones de soft-
ware libre.
Más información en:
http://us1.samba.org/samba/ftp/
tsig-gss/
http://www.animatika.net
Sun ha estado contribuyen-
do al clima general de
esquizofrenia y paranoia
que se respira
últimamente en
el mundo del
software libre,
al desvelar casi
simultáneamen-
te que es la
empresa que
más software
ha contribuido
al código abier-
to a la vez que
piensa oficial-
mente que la GPL es una
licencia depredadora.
Con la liberación de su pro-
pio sistema operativo, Open
Solaris, junto con NFS y
OpenOffice, entre otros, Sun
EL SOL Y LA LUNAha superado oficialmente a la
Universidad de Berkeley de
California en lo que se refiere
a a cantidad de
código libera-
do… mas, eso sí,
Sun ha liberado
su propio siste-
ma bajo su pro-
pia licencia, la
CDDL, una licen-
cia que permite
desarrollar soft-
ware propietario
a partir del códi-
go 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 ampo-
llas en la comunidad a la cual
tanto dona. Y es que tildó a la
GPL de “depredadora” y a sus
apóstoles de “perros imperia-
listas estadounidenses”.
El razonamiento va más o
menos como sigue: si toma-
mos 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
Estados Unidos (el resto del
mundo no existe) sea más
fuerte debido a que la GPL
obliga a devolver a la comu-
nidad toda modificación y
mejora, y que, por tanto,
Brasil siempre estará en infe-
rioridad 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
mienta rápida, equilibrada y barata para
ejecutar Linux como un sistema virtual
en Linux. Describiremos como configu-
rar 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 applica-
tion” 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 obte-
ner lo mejor de ambos mundos sin
arranque dual. �
Herramientas para la computación virtual en Linux
ANFITRIONES E INVITADOS
11
Multimedia • PORTADA
11Número 07W W W . L I N U X - M A G A Z I N E . E S
Antes había que elegir un solo sis-
tema operativo. Después se
podían elegir más, pero habia
que reiniciar. En la actualidad, los usua-
rios prefieren tener toda la variedad pero
en un solo paquete.
¿Por qué no ejecutar aplicaciones
Windows en Linux? ¿Por qué no imple-
mentar una versión completa de
Windows, o Mac OS X, o Linux dentro
de un anfitrión Linux? A los desarrolla-
dores les gustan los sistemas virtuales
porque una aplicación sin probar puede
romper el PC virtual sin colgar el anfi-
trió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 siste-
mas virtuales son la historia de portada,
le ayudaremos a iniciarse en la computa-
ción virtual en Linux.
Aplicaciones Windows con Wine .12
VMWare 4.5.2 . . . . . . . . . . . . . . . . . . .17
User-Mode Linux . . . . . . . . . . . . . . .21
Active Directory . . . . . . . . . . . . . . . . .25
Mac-on-Linux . . . . . . . . . . . . . . . . . . .31
EN PORTADA
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, inten-
te la respetable
VMware.
User-Mode
Linux: El
popular User-
Mode Linux
(UML) es
una herra-
12
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
Wine, Crossover Office y Cedega
¿AGUA O VINO?
PORTADA • Wine
12 Número 07 W W W . L I N U X - M A G A Z I N E . E S
En 1993, Sun Microsystems des-
arrolló una herramienta que per-
mitía a los usuarios ejecutar las
aplicaciones Windows en Solaris, sin
necesidad de tener que portar la aplica-
ción. Unos cuantos meses después, se
hizo un intento para hacer que la herra-
mienta se ejecutara en BSD y Linux y
estos pasos marcaron el nacimiento de lo
que ha llegado a conocerse con el nom-
bre 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 lla-
mada a la API de Windows realizada por
la aplicación e intenta convertirlas en lla-
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 apli-
cación Windows y Linux. Una traduc-
ció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 aplicacio-
nes. 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
Pentium 4 a 1,7GHz y 256 Mbytes de
RAM. Como sistema operativo hemos
escogido Suse Linux 9.0 Professional.
Instalación de WineLa mayoría de las distribuciones inclu-
yen 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 ver-
sió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
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 espec-
tacular. 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 modifi-
car la configuración, tan sólo hay que
ejecutar la herramienta winecfg, que per-
mite ver o cambiar las asignaciones de
las letras de los discos virtuales para los
dispositivos (Figura 4).
Instalación de AplicacionesWindowsAhora 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 espa-
cios 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 configu-
ració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 progra-
mas son tan sencillas como esta. El
13
Wine • PORTADA
13Número 07W W W . L I N U X - M A G A Z I N E . E S
intentar instalar cualquier versión de
NetObjects Fusion (otro programa que
no está oficialmente soportado) demues-
tra los fallos típicos. La aplicación no se
puede instalar sin tener instalado previa-
mente Internet Explorer.
Alternativa: CrossoverOfficeSi 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 multiusua-
rio). 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 cualida-
des del producto en un escenario real.
Hemos usado el paquete de demostra-
ción de Crossover, que funciona durante
un mes tras instalarse, aunque hace falta
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, nece-
sita encontrar la versión que tiene insta-
lada:
# rpm -qa | grep -i wine
wine-20040505-1
Su sistema debería contestar con la eti-
queta de la versión, que debe indicar al
programa que la va a eliminar. En nues-
tro 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 ins-
talación de Wine que ha ido mal.
Cuadro 1: Eliminando Wine
Figura 1: Una imagen muy extraña: arranque del instalador de Windows de Acrobat en el escri-
torio de Linux con un emulador Wine…
(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 fuen-
tes 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 fuen-
tes 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.
registrarse para poder acceder a la des-
carga 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
PORTADA • Wine
14 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Si queremos ejecutar juegos de
Windows en Linux, necesitamos Cedega
de Transgaming [4]. Cedega es una ver-
sión del emulador Wine API para el cual
los desarrolladores han añadido las fun-
ciones de las librerias multimedia
DirectX. Cedega hasta soporta juegos
actuales de Windows con gráficos com-
plejos tal como Half Life 2 o Far Cry.
Sin embargo, este tipo de funcionamien-
to 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 vis-
tazo 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 ver-
siones CVS y necesitaremos el progra-
ma cvs para descargarlos. Suponiendo
que tenemos cvs en el equipo, primero
necesitaremos identificarnos en el servi-
dor:
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 fiche-
ros de la máquina:
cvs -z3U
-d:pserver:[email protected]
ming.U
org:/cvsroot co winex
Tras un rato, tendremos el código
completo en el directorio winex.
La compilación sigue los pasos
normales, aunque Fedora Core 3 requie-
re 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 ~/.transga-
ming. Hay que crear un directorio con
este nombre o cambiar este a
~/.wine/config; si hacemos esto, utilizare-
mos 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
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 equiva-
lente al C: de Windows.
Para asegurarnos de que el juego encon-
trará los ficheros, cambiaremos el direc-
torio 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 ejecu-
tar juegos actuales, de copia pro-
tegida, no hay más remedio que
optar por las versiones comer-
ciales.
Jugando con Cedega
Figura 5: El juego Moorhuhn ejecutándose en Cedega.
Después de instalar una aplicación, se
puede usar la solapa Menus en la venta-
na principal de Crossover o usar la línea
de comandos para ejecutar la aplicación
Windows:
tarse mejor si se mantiene las configura-
ciones por defecto. Las aplicaciones
Windows que explícitamente necesiten
NT 4 o NT 5 (Windows 2000), normal-
mente no se ejecutarán (o por lo menos
Wine • PORTADA
Figura 3: Los pasos de instalación y configuración tienen lugar en la
ventana principal de Crossover Office.
Figura 2: Aunque oficialmente no está soportado por Wine, Adobe
Acrobat se muestra cooperativo.
~/cxoffice/bin/acrobat
No tiene mucho sentido especificar la
versión de Windows como entorno. Los
programas Windows tenderán a ejecu-
Conclusión
Wine es un intento ambicioso para
ejecutar aplicaciones nativas
Windows en sistemas Unix. Como
aplicación minimalista, Wine se res-
tringe a sí misma a proporcionar un
servicio de traducción entre el sistema
operativo y la aplicación. La simplici-
dad 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
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 vir-
tual, como la aplicación comercial
VMware o la gratuita Qemu. �
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.
PORTADA • Wine
16 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[1] WineHQ: http://www.winehq.org/
[2] Paquetes de Wine: http://www.
winehq.org/site/download
[3] Codeweavers: http://www.
codeweavers.com/
[4] Transgaming: http://www.
transgaming.com/
RECURSOS
Figura 6: Tras completar la instalación simple, podemos configurar directamente Crossover
Office.
Figura 7: ¿Quién sabe si el icono de reiniciar
significa una inicialización de Crossover o
algo más drástico?
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 cual-
quier aplicación escrita para el sistema
operativo de la máquina virtual. La pér-
dida de rendimiento debido a la sobre-
carga 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”:
# ls -a /home/user/.wine
dosdevices fake_windows [...]
Las aplicaciones que acceden a elemen-
to específicos de Windows a menudo se
estrellan contra un muro (virtual).
Cuadro 2: Wine no es unEmulador
Apesar del éxito de la compatibili-
dad 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 simplemen-
te probar su nuevo website usando unos
cuantos sistemas operativos y navegado-
res. Si es así, una máquina virtual es la
forma de conseguirlo.
EngañosA diferencia de los emuladores de API
como WINE, VMware workstation emula
un ordenador completo como un progra-
ma 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 nom-
bre que está tras este producto (converti-
da 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 cual-
quier cosa, con una velocidad aceptable,
es necesario que el PC anfitrión sea bas-
tante rápido. VMware recomienda un
Pentium II o una CPU AMD equivalente,
256 MBytes de RAM, un adaptador gráfi-
co 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;
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
PCS EN PCS
El emulador de PC VMware Workstation 4.5.2 para Linux
PCS EN PCS
17
WMware • PORTADA
17Número 07W W W . L I N U X - M A G A Z I N E . E S
suponiendo que el PC emulado necesite
acceder a la red.
Estas especificaciones deben conside-
rarse 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+,
Adquisiciónde VMwareComo acabamos
de mencionar, una
licencia de
VMware, no es
exactamente bara-
ta. Si prefiere pro-
bar el emulador
antes de invertir
199$, hay disponi-
ble una licencia de
prueba durante 30
días. VMware
solamente le pedi-
rá que se registre
antes de descar-
garla [3] y le
enviara una clave
de prueba por email. Los usuarios regis-
trados pueden descargar un paquete rpm
y un fichero tar. en nuestro laboratorio
usamos el paquete RPM, que se instala
fácilmente tecleando su -c "rpm -Uhv
VMware-workstation-4.5.2-8848.i386.rp
m".
Si intenta lanzar el programa teclean-
do directamente vmware tras la instala-
ció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 pro-
grama. 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 anfi-
trió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 configura-
ción genera el módulo. Para hacerlo,
necesita un compilador de C, que en
Linux suele ser gcc. En Suse 9.1 el com-
pilador está localizado en /usr/bin/gcc
tal como nos indica whereis gcc.
Usa la fuerza… digoooo, lafuenteEl 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 proba-
blemente necesitaremos instalar y modi-
ficar 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 archi-
vos de las cabeceras del núcleo simple-
mente pulsamos la tecla [ENTER] para
aceptar la configuración predeterminada
512 Mbytes de RAM, un adaptador gráfi-
co basado en el chipset de NVIDIA
GeForce MX4000 (con el controlador de
dispositivo comercial de NVIDIA) y un
adaptador WLAN.
PORTADA • WMware
18 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Figura 1: VMWare nos permite ejecutar un sistema Windows comple-
to dentro de su ordenador Linux.
Figura 2: Si se intenta ejecutar VMware, des-
pués de completar la instalación, sin haberlo
configurado, se mostrará este mensaje de
error.
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.
Procesador:
• Intel Pentium o posterior
• AMD Athlon o posterior
(Dependiendo de la CPU original)
• Soporte experimental para las proce-
sadores 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
Unidades IDE:
• Hasta 4 unidades IDE
• Discos físicos y virtuales (máx. 128
GBytes)
• Unidades CD/DVD-ROM
Unidades SCSI:
• Hasta 7 Unidades
• Discos físicos y virtuales (máx. 256
GBytes)
• Soporte de SCSI genérico
• Soporte para escáneres, CD/DVD-
ROM, unidades de cinta, etc.
• Controlador de entrada salida LSI
LOGIC LSI53C1030 Ultra320
• Anfitrión compatible con el adaptador
de bus Mylex (BusLogic) BT958 (sola-
mente sobre Windows XP con contro-
ladores de dispositivo adicionales)
Medios extraíbles
• Unidades CD-ROM/CD-R/CD-RW (físi-
cas o imágenes ISO)
• Unidades DVD-ROM
• Un máximo de 2 unidades de 1.44
Mbytes (físicas o como imágenes)
Hardware gráfico
• VGA y SVGA con BIOS VESA
Puertos:
• Hasta un máximo de 4 puertos serie
(COM)
• Hasta 2 puertos paralelos bidireccio-
nales (LPT)
• Dos controladores USB 1.1 UHCI
• Teclado Windows de 104 teclas
• Ratón PS/2
Dispositivos de red:
• Un máximo de tres adaptadores de
red virtuales (Ethernet)
• Tarjeta de sonido compatible con
AMD Pcnet PCI II
• Compatible con Sound Blaster Audio
PCI (sin soporte para MIDI ni para
joystick) BIOS:
• Soporte para la versión 6 VESA BIOS
de PhoenixBIOS 4.0 con DMI-v2.2/
SMBIOS
Cuadro 1: Hardware emulado.
del guión. Tras un breve instante, durante el cual el
guión de configuración construye el binario, se nos pre-
guntará 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 RedContestamos “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 anfi-
trió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 direc-
ción IP propia que debe ser valida en la red local. Si quie-
re que VMware monte el sistema de archivos del anfi-
trió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 anfi-
trió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.
ComienzoTras 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 asisten-
te 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 ini-
ciara el PC virtual. La máquina emulada aún no tiene
un sistema operativo, hay que instalar el sistema opera-
tivo como si fuera un ordenador de verdad. Para insta-
lar 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 directa-
mente 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
cargue un Cd simulado en la unidad de
CD emulada. El controlador de dispositi-
vo necesario está en el CD.
Cuidado con las NuevasDistrosEn nuestro laboratorio, hemos sido inca-
paces de hacer funcionar VMware sobre
Suse Linux 9.2. A pesar de haber com-
pletado 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 vir-
tual fue una cuestión de suerte.
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. �
ratón, haga click en la ventana del emula-
dor. 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
PORTADA • WMware
20 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[1] Página de VMware: http://www.
vmware.com/
[2] Tienda VMware: http://www.vmware.
com/vmwarestore/newstore/
[3] Página de descarga: http://www.
vmware.com/download/workstation.
html
[4] Herramientas VMware: http://www.
vmware.com/support/ws4/doc/
new_guest_tools_ws.html
RECURSOS
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.
Figura 4: El usuario ha decidido instalar Windows XP en la máquina
virtual.
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.
La versión Linux de VMware funciona
sobre un cierto numero de las principa-
les 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 distribucio-
nes:
• Mandrake Linux 9.0 (Núcleo 2.4.19)
• Mandrake Linux 8.2 (Núcleo 2.4.18-
6mdk)
• Red Hat Enterprise Linux 3.0 (Núcleo
2.4.21 or 2.4.21-15.EL)
• Red Hat Enterprise Linux 2.1 (Núcleo
2.4.9-e3)
• Red Hat Linux Advanced Server 2.1
(Núcleo 2.4.9-e3)
• Red Hat Linux 9.0 (Núcleo 2.4.20-8 o
2.4.20-20.9)
• 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)
• Suse Linux 9.1 (Núcleo 2.6.4-52)
• Suse Linux 9.0 (Núcleo 2.4.21-99)
• Suse Linux Enterprise Server 8
(Núcleo 2.4.19)
• Suse Linux 8.2 (Núcleo 2.4.20)
• Suse Linux 8.1 (Núcleo 2.4.19)
• Suse Linux 8.0 (Núcleo 2.4.18)
• Suse Linux Enterprise Server 7
(Núcleo 2.4.7 y parche 2)
• Suse Linux 7.3 (Núcleo 2.4.10)
Cuadro 2: Distribuciones Anfitrión
El versatil
y popular User-
Mode Linux (UML) [1] crea un sis-
tema Linux completamente funcional en
un host Linux. UML tiene numerosas apli-
caciones en el mundo de Linux. Muchos
desarrolladores confían en UML para pro-
bar sus aplicaciones sin poner todo el sis-
tema en peligro. Los usuarios de Linux
pueden ejecutar UML para experimentar
con versiones del kernel sin tener que
preocuparse de parches nuevos o experi-
mentales. Los administradores de siste-
mas usan UML para probar configuracio-
nes. 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 comu-
nica con el hardware. Cuando un proce-
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
Primeros pasos con User-Mode Linux
LINUX DENTRO DELINUX
21
UML • PORTADA
21Número 07W W W . L I N U X - M A G A Z I N E . E S
Encontraremos un documento muy inte-
resante 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.
SeLinux dentro de UML
Esta orden instala el kernel UML y tam-
bién otras utilidades. Con otros adminis-
tradores de paquetes el proceso es igual-
mente simple, pero si aparecen proble-
mas con estos, o tenemos problemas de
memoria durante el arranque [2], pode-
mos 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
hayamos descargado los archivos del
parche y el kernel (en el mismo directo-
rio), 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 sis-
tema virtual Linux.
Para conseguir que UML funcione
adecuadamente, necesitamos incluir
so quiere comunicarse con un dispositi-
vo (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 hard-
ware. 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 sis-
tema host son ambos Linux con estruc-
turas prácticamente idénticas, la comu-
nicación pasa muy eficientemente del
sistema virtual al host, requiriendo muy
pocas cabeceras de abstracción o traduc-
ción.
Configurar UMLPodemos 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
PORTADA • UML
22 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Figura 1: Estructura habitual de procesos en
Linux .
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.
Quizás la mejor manera de entender las
ventajas de UML es considerar que exis-
ten 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 emula-
ción del software más famosos. Su prin-
cipal característica es emular la arquitec-
tura 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 operati-
vo x86 sobre él (Linux, Windows, Dos y
demás), pero la ejecución es muy lenta,
ya que se necesita traducir cada instruc-
ción del sistema operativo invitado al
sistema operativo que lo alberga.
La emulación del hardware consiste en
código compilado en la arquitectura
hardware nativa. Un emulador hardware
es más eficiente que el emulador softwa-
re, pero necesita interceptar todas las lla-
madas al hardware. Esta solución tiene
como gran desventaja que el código
debe particularizarse para una arquitec-
tura 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 últi-
ma categoría. No necesita emular un
hardware específico, sino que se comu-
nica casi directamente con el hardware
real. Las instrucciones pasan eficiente-
mente 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 ejecu-
ción del mismo código en el host.
Elegir emulación
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.
Tabla 1: Tipos de transporte
Si nuestro interés en UML es probar dis-
tribuciones Linux, podemos optar asi-
mismo 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].
QEMU: Una buena alternativa
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 contie-
ne un sistema de archivos raíz. No olvi-
demos colocar el programa linux en un
lugar donde podamos usarlo (si no lo
hemos movido, estará aún en el directo-
rio 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 dearchivos raízPodemos 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 termi-
nal y teclear las siguientes órdenes:
[xterm 1]$ linuxU
ubd0=uml_vm1.cow,U
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 impor-
tante evitar el arranque del sistema de
ficheros directamente (con
ubd0=root_fs_XXX), por que cada archi-
vo COW registra el tamaño y la marca de
tiempo del sistema de archivos raíz, y
cualquier modificación hará que los fiche-
ros COW queden inutilizados. La sintaxis
correcta para el siguiente reinicio, cuando
tengamos un archivo COW es la siguien-
te:
[xterm 1]$ linuxU
ubd0=uml_vm1.cow
[xterm 2]$ linuxU
ubd0=uml_vm2.cow
Redes Virtuales y rRealesUML nos ofrece unas cuantas opciones
interesantes para redes virtuales en siste-
mas 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 siste-
mas virtuales.
Encontraremos una
descripción exhausti-
va de interconexión
de redes con UML
en [8].
La idea principal
en la intercone-
xión de redes
con UML es
que
UML • PORTADA
23Número 07W W W . L I N U X - M A G A Z I N E . E S
Figura 3: Arranque del sistema virtual UML.
nos facilitan distintas opciones en la
capa de transporte para la administra-
ció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 cade-
na como la siguiente en la línea de
comandos del kernel:
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 explica-
ción teórica de esto es que en
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
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 simplifi-
car 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 ple-
namente operativo en el entorno
UML.
ConclusiónUser-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 ins-
talar y configurar, pero si somos capaces
de ponerlo en marcha, le encontraremos
multitud de usos. �
PORTADA • UML
24 W W W . L I N U X - M A G A Z I N E . E S
[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: http://fabrice.
bellard.free.fr/qemu/
[13] Página de Bochs: http://bochs.
sourceforge.net
[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
RECURSOS
Figura 6: Una máquina virtual UML con los
servicios de red disponibles.
Figura 4: Arranque del segundo sistema vir-
tual UML.servicios de red disponibles.
Figura 5: Ficheros COW de dos máquinas virtuales UML.
Fabrizio Ciacchi (http://fabrizio.
ciacchi.it – [email protected]) es
un estudiante italiano de Ciencias
de la Computación en la
Universidad de Pisa. Sus activida-
des principales son estudiar Linux,
desarrollar páginas Web con PHP
y programar en Java. Trabaja tam-
bién como consultor para distin-
tas compañías y escribe artículos
sobre Linux.
EL
AU
TO
R
Número 07
1994. En ese entonces quiso conectar elequipo con Windows de su mujer alsuyo, que ejecutaba Linux. Se acordódel pequeño servidor que programó dosaños antes y lo probó. Para su sorpresa¡funcionaba!
Investigó un poco y descubrió que losprotocolos NetBIOS y SMB, que usan lasmáquinas de Microsoft, estaban docu-mentados aunque se dejaban muchosparámetros sin especificar. Decidió reali-zar una programa serio, ahora que tenía
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
DIRECTORIOSINTELIGENTES
Active Directory en Linux
DIRECTORIOSINTELIGENTES
25
Active Directory • PORTADA
25Número 07W W W . L I N U X - M A G A Z I N E . E S
Acomienzos de 1992 AndrewTridgell, un ingeniero informáti-co australiano que se encontra-
ba realizando sus estudios de doctorado,se encontró con un problema. Trabajabaen una máquina UNIX (Linux estabaaún en la mente de Linus Torvalds) ynecesitaba montar en una máquina MS-DOS un directorio de su UNIX a travésde la red. Lo había hecho hasta entoncesusando NFS, pero ahora necesitaba quefuncionase sobre NetBIOS.
Se armó de paciencia, programó unfiltrador de paquetes y comenzó a reali-zar pruebas para poder replicar el com-portamiento del protocolo de Microsoft.NetBIOS es la base de la tecnología deMicrosoft para compartir ficheros a tra-vés de red. Cuando consiguió un progra-ma que le permitió realizar esta hazañalo liberó. Eran los primeros 90 y lo quesería Samba daba sus primeros pasos.
Ese pequeño programa pasó inadverti-do, incluso para el propio Andrew, hasta
Windows como directorios en equiposLinux. De esta manera el acceso a sucontenido era como el acceso a un direc-torio local. También se añadió la posibi-lidad de usar impresoras remotas o com-partir las propias.
Microsoft, ya por aquel entonces,comenzó a explotar el filón empresarialcon la versión NT de su sistema operati-vo. Windows NT incorporaba la posibili-dad de gestionar el acceso a las máqui-nas Windows NT o 95 a través de losdominios. La gente de Samba decidiópasar a la acción y trabajó intensamenteen la replicación de este servicio.
Sus esfuerzos fueron recompensados yfue posible registrar a una máquinaSamba en una máquina NT en esta tarea.Al poco tiempo, entre 1999 y el año2000, hubo un fork (una escisión) y secreó un proyecto paralelo denominadoSamba TNG. La misión de este otro pro-yecto, que comparte gran parte del códi-go de Samba, es realizar un reemplazototal de las características de WindowsNT como controlador de dominio.Samba TNG ha ido apagándose poco apoco, y aunque persisten algunos de suscolaboradores muchos lo dan por aban-donado.
La gente de Samba avanzó por sucuenta, siguiendo otros criterios. En sep-tiembre del 2003 se pudo registrar una
máquina Samba en una máquina ActiveDirectory.
Y a finales de 2003, en diciembre, seconsiguió replicar completamente undominio Windows NT, incluyendo lamigración de usuarios y claves. Sambaestaba entonces en la versión 3.0.x.Samba podía sustituir a un Windows NTServer completamente. Esto supuso unboom, puesto que muchas empresas seinteresaron por la tecnología ya que asíse ahorraban licencias, bastante caras,de Windows NT Server.
Pero la gran desventaja de Samba esque siempre va unos pasos por detrás deMicrosoft. Este seguimiento continuo hallevado a un código fuente difícil demantener y de cambiar. Por eso AndrewTridgell y otros se han lanzado al de-sarrollo de Samba4: una reescritura par-cial de Samba3 buscando la modulari-dad y el reemplazo total de una máqui-na Active Directory.
Primeros pasos con SambaLo primero que haremos será instalarSamba. La manera de hacerlo dependeráde la distribución que usemos. Puedeque tengamos que descargar el paqueteo que exista una herramienta que lo ins-tale por nosotros. Hay que asegurarse deinstalar tanto el servidor de Sambacomo las herramientas cliente. Existen
la experiencia necesaria. Y, como uno desus primeros pasos, Andrew buscó nom-bre para el proyecto. Escogió smb, peroentonces se percató de que estaba regis-trado. Así que ni corto ni perezoso intro-dujo smb en un editor de textos y esperóque el corrector ortográfico decidiese porél. La primera palabra que apareció fueSamba y así fue llamado desde entonces.
Samba ha crecido sin parar desdeentonces, añadiendo más funcionalida-des y batiendo en numerosas ocasionesal propio software de Microsoft en cuan-to a seguridad y rendimiento. El nombredel proyecto Samba apareció en losfamosos documentos de Halloween
donde Microsoft se quejaba del dañoprovocado por los proyectos libres.
Samba cuenta ahora con gran canti-dad de programadores voluntarios, tieneuna conferencia anual (SambaeXPerience) y el apoyo de grandesempresas como Silicon Graphics, Novello IBM.
La Situación ActualSamba ha ido amoldándose a la situa-ción a medida que Microsoft añadía fun-cionalidades o modificaba sus protoco-los. En un principio Samba permitía auna máquina Linux compartir directo-rios con una máquina Windows. Era elfamoso compartir carpeta.
Posteriormente fue posible montarcarpetas compartidas por máquinas
PORTADA • Active Directory
26 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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
Cuadro 1: smb.conf paraconfiguración local
Figura 1: Esquema típico de una red Linux.
W W W . L I N U X - M A G A Z I N E . E S
algunas distribuciones que los separanen dos paquetes.
Una vez instalado Samba tenemosque localizar el archivo de configura-ción. Generalmente está en \texttt{/etc/smb.conf}. El fichero de configura-ción de Samba es muy complejo debi-do a la cantidad de opciones que haido acumulando con el tiempo. Soloveremos un conjunto de esas opciones,pero nos permitirán compartir unaserie de directorios con máquinasWindows.
smb.confLa sintaxis del fichero de configuraciónde Samba, el fichero smb.conf, no esmuy complicada. Se divide en seccio-nes, y cada una de ellas tiene un nom-bre. Algunas secciones son obligatoriasy tienen nombres específicos mientrasque 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 podemosobservar, hay una serie de lineas en lasque se relaciona una entrada o clave conun valor. De esta manera establecemoslos parámetros en Samba.
Estos ficheros pueden volverse muygrandes, por eso es posible incluircomentarios. Los comentarios comien-zan con ; y se extienden hasta el fin dela línea.
[global]
; Esta sección es muyU
importante
; ...
Configuración GlobalLa primera sección que debe aparecer es[global]. En ella, como podemos ver porel nombre, configuramos el comporta-miento global de Samba. Las redesWindows, antes de la llegada de los sis-temas Windows NT, se separan en gru-
pos de trabajo y cada máquina pertenecea uno y sólo uno. Las máquinas tambiéntienen nombres que podemos ver cuan-do exploramos los grupos de trabajo. Eslo primero que configuraremos:
[global]
workgroup = MIGRUPO
netbios name = MILINUX
Bueno, ya tenemos nombre y pertenece-mos a un grupo. Ahora toca establecerla seguridad. Existen varias maneras decontrolar el acceso a un directorio com-partido:
• Control por usuario• Control por máquina• Control delegado en dominio• Control delegado en Active
DirectoryEn los dos primeros es nuestra máquinaque controla el acceso y en los dos últi-mos otra máquina. Como buscamos algosencillo usaremos autentificación basa-da en usuario. Cuando hacemos esto, lapersona que intente acceder a uno denuestros directorios compartidos veráaparecer una ventana que le preguntarásu nombre de usuario y su clave.
Este usuario y esta clave son gestiona-dos por Samba, como veremos luego,pero deben relacionarse con un usuariolocal de la máquina donde se ejecutaSamba. Éste es el gran problema resuel-to por Samba. Cuando un usuario deWindows crea un directorio en uno denuestros directorios compartidos conSamba… ¿qué permisos y a quién perte-necerá ese directorio?
En Windows el control de permisos ypropietarios en los ficheros es mínimo.De hecho ni siquiera es excluyente. Sidigo que un fichero pertenece a Pepe elusuario Juan puede hacer lo que quieracon él. Este sistema tan inseguro fue eli-minado por Microsoft al introducir NTFSy el control estricto de permisos en sussistemas NT y 2000.
Lo que Samba hace es establecer unarelación entre el usuario de red Windowsy un usuario local. Por ejemplo, podemosrelacionar todos los usuarios que accedanal directorio compartido Finanzas con elusuario finanzas que hemos creado enLinux. Cada fichero en ese directorio ten-drá como propietario a finanzas, a pesarde que el usuario que lo está haciendo seha registrado al acceder al directorio comoJoseManuel. Por tanto, pondremos:
security = user
Configuraciones LocalesCon sólo 3 parámetros ya hemos defini-do unas cuantas opciones básicas, ahora
[datos] comment = MisU
datos compartidos
Si ejecutásemos el servidor de Sambaahora aparecería una máquina llamadaMILINUX en el grupo de trabajo MIGRU-
PO. Podríamos entrar en ella, y veríamosuna carpeta datos pero no podríamosentrar en ella.
¿Qué nos falta? Pues el sitio en el querealmente existe esa carpeta. El famoso“What you see is what you get” (Lo que
ves es lo que tienes) no se aplica almundo de Samba ;). A pesar de ver unacarpeta compartida datos, esa carpetano existe. Al menos hasta que nosotroslo configuremos correctamente. Esto sehace mediante el parámetro path:
path = /usr/local/datos
Ahora sí será posible acceder, pero antestenemos que configurar el usuario ousuarios que podrán acceder a ella.Cuando realizamos la configuración glo-bal establecimos criterios que afectan atodos los recursos compartidos, a menosque se especifique algo más concreto enlos mismo.
El resto de parámetros, que podemosobservar en el Cuadro 1, son para permi-tir el uso de WINS (una especie de DNSque usa Microsoft) y para indicar el“tipo de Windows” que somos (en estecaso un Windows NT Server).
Samba nos da la posibilidad de usargran cantidad de mecanismos para guar-dar a los usuarios. Tenemos desde sim-ples ficheros de texto donde listamosqué usuario local corresponde con quéusuarios de Samba hasta bases de datoscomo Postgres o incluso LDAP. Tambiénpodemos usar un mecanismo que el pro-pio Samba nos proporciona usando unaespecie de base de datos de usuarios. EnSamba4 habrá un enfoque unificadopara este tema.
Como buscamos simplicidad, no espe-cificaremos el backend para almacenarlos usuarios, lo que significa que dejare-mos que sea Samba quien lo elija.
Primer ArranqueY ahora, después de tanta ceremonia,vamos a arrancar el servidor de Samba ya realizar unos cuantos experimentos.
Para ello ejecutaremos el servidor deSamba, que de nuevo depende de la dis-tribución de Linux que usemos.Generalmente requerirá ejecutar el dae-
mon smbd, en el caso de Mandrake con-sigue ejecutando como root:
# /etc/init.d/smb start
Con esto ya deberíamos tener el servidorde Samba funcionando, pero no hemoscreado usuarios Samba. Este proceso esmuy simple, se realiza empleando elcomando pdbedit que viene con Samba(ver cuadro “Creación del usuario prue-ba”):
He puesto toda la salida para que noos asustéis al verla. Solo es informaciónde configuración para ese usuario, ennuestro caso la configuración por defini-ción. El usuario prueba debe existir pre-viamente en Linux, en caso contrariotendremos que indicarlo al ejecutarpdbedit de manera que pueda relacionarel usuario Samba con algún usuario deLinux.
Es necesario darle permisos al directo-rio [datos] para que el usuario corres-pondiente en Linux a “prueba” (ennuestro caso también se llamará “prue-ba”) pueda escribir sobre él. Con esto yatenemos la configuración básica. Ahoravamos a comprobar que todo está bien.Vamos a listar los servicios que ofrece-mos (ver cuadro “Consulta a nuestropropios servidor”).
Podemos ver como aparece el directo-rio datos que compartimos, pero tam-bién otros recursos como IPC$ oADMIN$. No nos debemos preocuparpor ellos, entrar en los detalles de su uti-lidad ¡nos llevaría casi un libro!
Ahora vamos a realizar una pruebaaccediendo por red al directorio compar-tido datos y copiando algo en su interior.Como se puede ver en las Figuras 2 y 3,nuestro ordenador con Samba y el direc-torio aparecen dentro de la red deWindows como el resto. Cuando inten-tamos acceder nos saldrá una pantallade Login donde tendremos que registrar-nos como usuario prueba.
Y ya podemos crear, modificar, borrary copiar ficheros en nuestro directoriocompartido desde una máquinaWindows. Si queremos tener un controlmás exhaustivo, por ejemplo permitirque algunos usuarios solo puedan leermientras otros tengan control total,deberemos especificarlo en smb.conf. Lamanera más sencilla es hacer que eldirectorio compartido solo pueda serleído:
vamos a compartir algo. Digamos quehemos creado el directorio \texttt{/usr/local/datos} y queremos que otros pue-dan acceder a él desde sus máquinasWindows.
Tenemos que crear una sección paraeste directorio, la llamaremos [datos].Todo directorio compartido en una redWindows, share en argot Microsoft,debe tener un comentario que lo defina.Así que pondremos uno:
PORTADA • Active Directory
28 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 [josemaria@localhost josema-
ria]# 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: \\mili-
nux\prueba
11 HomeDir Drive:
12 Logon Script:
13 Profile Path: \\mili-
nux\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 josema-
ria]#
Cuadro 2: Creación delusuario de prueba
Active Directory • PORTADA
29Número 07W W W . L I N U X - M A G A Z I N E . E S
read only = yes
; o
writable = no
La opción writable = no es equivalentea read only = yes. Pero si ponemos wri-
table = yes o read only = no entoncespermitimos tanto la lectura como laescritura. Es un poco lioso por lo querecomiendo que se use writable o read
only y no mezclar. Podemos ser más res-trictivos solo permitir que puedan leer eldirectorio algunos usuarios.
valid users = prueba
De esta manera sólo el usuario prueba
puede acceder al directorio que hemoscompartido. Podríamos entrar en másdetalles, pero requeriría muchas máspáginas. Con esta configuración mínimapodemos ya compartir con los ordena-dores de una red Windows uno o variosdirectorios y controlar el acceso desdenuestra máquina.
Active DirectoryMicrosoft ha realizado una gran campa-ña de publicidad alrededor de su tecno-logía Active Directory y, la verdad, esque no conozco mucha gente que sepalo que es realmente esa cosa llamada“Active Directory”.
Active Directory es un sistema quepermite gestionar el acceso a los objetos
de una red de manera centralizada.Estos objetos pueden ser muchas cosas:usuarios, máquinas, impresoras o fiche-ros.
Ahora imaginemos una red de ciertotamaño, digamos 100 máquinas.Tenemos que administrarlas y entrenuestras funciones estaría el gestionarel acceso a los ficheros de todas lasmáquinas. Ya puestos no estaría mal
Figura 2: Vemos a nuestro equipo, Milinux,
dentro de la red de Windows.
que me pudiese sentar en cualquierade las 100 máquinas, introducir misdatos y que allí apareciese mi escrito-rio.
Esto puede ser una pesadilla paracualquier administrador de sistemas.Pero esto también es lo que ActiveDirectory promete realizar. Para elloActive Directory necesita realizar variasfunciones:
• Tiene que proporcionar unmecanismo para mantenerseguras las comunicaciones.
• Debe llevar un control de losusuarios del sistema.
• Debe llevar un control de lasmáquinas de la red.
• Debe llevar un control de losficheros en cada máquina.
Estas funciones las realizan variasmáquinas en las redes UNIX. Por ejem-plo, la identificación distribuida se reali-za con NIS/NIS+ y el control de lasmáquinas de la red con una mezcla deDHCP y DNS. Las máquinas ActiveDirectory hacen todo estoy y tambiéngestionan otros recursos como la sincro-nización horaria (NTP).
Configuración de Sambapara Active DirectoryEl uso de Active Directory y Samba esun tema candente en muchos foros. Laidea de poder delegar la autenticaciónen una máquina Active Directory haceque Samba entre en la nueva era de lasredes Microsoft.
Antes dimos una descripción un pocosimplista sobre lo que es y hace Active
Directory, la realidad es mucho máscomplicada. Active Directory se basa enun diseño enorme con el que Microsoftpretende atacar el problema de la admi-nistración de redes cada vez más gran-des. El equipo de Samba siempre hatenido en la mira a Active Directory,pero una serie de problemas tecnológi-cos les han apartado de la simulacióntotal.
El primer problema es el propioSamba. Con un código fuente que adole-ce de más de 10 años de desarrollo conti-nuo no se pueden hacer demasiadosexperimentos. Por ello el equipo se hacentrado en Samba4 que incorpora lareescritura desde cero, con un diseñomás lógico, de la mayoría de código.
Aún así han ido introduciendo poco apoco en versión 3 algunas de las tecno-logías que permiten al sistema interac-tuar con Active Directory.
Active Directory deja absolutamenteanticuado al anterior diseño de Microsoft.
Figura 3: Cuando nos pida la clave tenemos
que darle la que introducimos al crear al
usuario “prueba”.
[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]#
Cuadro 3: Consulta a nuestro propio servidor
PORTADA • Active Directory
30 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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.
EL
AU
TO
RFigura 4: Tipos de interacción con Active Directory.
El sistema de autentificación y listado derecursos es nuevo. Esto ha supuesto unreto, puesto que el equipo de Samba loca-liza los cambios filtrando los paquetes dela red cuando las máquinas Windowsestán realizando operaciones.
La primera sorpresa, aunque fueampliamente publicitado por Microsoft,fue el uso de Kerberos como protocolode autentificación. Por ello es muyimportante que tengamos alguna de lasimplementaciones de Kerberos instala-das. La configuración de cada una deellas es distinta, pero el fin es elmismo: hacer que la máquina ActiveDirectory sea la entidad emisora de cer-tificados.
Una vez que Kerberos esté correcta-mente configurado pasaremos a configu-rar nuestro servidor Samba. Es impor-tante tener las versión más modernaposible de Samba. Los cambios en elcódigo fuente se están sucediendo conrapidez durante los últimos meses.
El fichero de configuración tendrá laforma que se ve en el cuadro“Configuración para Active Directory”:
Como podemos ver la configuraciónde [datos] no ha cambiado. Son losparámetros globales, y los de autentifi-cación en particular, los que tenemosque cambiar. El modo de autentifica-ción, el parámetro security, pasa a serads.
Este modo es temporal, aunque pro-bablemente esté en Samba3 durante un
buen tiempo, y se debe a que Sambaaún no es capaz de auto-detectar lapresencia de una servidor ActiveDirectory.
El realm es el mismo que establezca-mos en la configuración de Kerberos yse suele corresponder con el dominioque establezca Active Directory, mien-tras que password**server tiene que serla IP o nombre de la máquina que seencarga de las autentificaciones ennuestra red Active Directory.
Con esta simple configuración conse-guimos que nuestro Samba esté prepara-do para funcionar con Active Directory,así que volvemos a arrancar Samba.
Existe un paso intermedio aún.Aunque estemos configurados para fun-cionar con Active Directory tenemos queunirnos al dominio. Para ello ejecuta-mos:
[josemaria@localhost ~]# net adsU
join -U [email protected]
password:
[josemaria@localhost ~]#
Cuando realizamos esta acción nuestramáquina se registra en el servidor ActiveDirectory y debería aparecer, puede tar-dar unos segundos debido al cacheo querealiza Active Directory, en el dominio
configurado. Si todo ha ido bien, alejecutar net ads user -U
deberíamos obtener un listado con todoslos usuarios de Active Directory.
C o n n e t a d s i n f o - U
podremos obtener información genéricasobre el servidor Active Directory.
ConclusiónAunque el soporte de Samba3 es muyreciente, y por tanto posee fallos, el pro-yecto Samba se mueve a pasos agiganta-dos hacia la emulación total de un servi-dor Active Directory. A Samba4 aún lequeda tiempo, dicen que un año ymedio, pero puede que esté ahí cuandoMicrosoft lance una versión para servi-dor de su famoso Longhorn. Entre lagente que querrá obtener la primeracopia seguro que habrá unos cuantoscolaboradores de Samba. �
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
Cuadro 4: Configuracionpara Active Directory
La manera más fácil de ejecutar pro-
gramas para Mac en Linux es el
software libre Mac-on-Linux [1].
Mac-on-Linux no ofrece emulación hard-
ware, por lo que requiere un ordenador
Apple. Mac-on Linux soporta teóricamen-
te otras aquitecturas PowerPC [2], como
Pegasos [3], pero instalar el sistema opera-
tivo de Apple, Mac Os, en estas arquitectu-
ras supone incumplimiento de la licencia.
Linux para ApplePodemos usar Mac-on-Linux en cual-
quier ordenador Apple. Obviamente,
nuestra distribución tendrá que soportar
el procesador PowerPC [4], cosa que per-
miten 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 optimi-
zado 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 ProgramaLinuxMac-on-Linux arranca un sistema opera-
tivo Apple como un programa en Linux.
En nuestro ejemplo usaremos Mac OS X,
pero Mac-on-Linux también ejecuta ver-
siones anteriores, como System 9, que
aún estén bastante
extendidas.
Los usuarios de
Gentoo pueden descar-
gar y compilar Mac-on-
Linux de la manera típi-
ca en Gentoo: usando
Gracias a los emuladores los usuarios ya pueden ejecutar su querido
Mac OS X bajo Linux, permitiendo un reencuentro entre hermanos.
POR OLIVER FROMMEL
Mac Os X en Linux
PEDIR MANZANAS AL OLMO
31
Mac en Linux • PORTADA
31Número 07W W W . L I N U X - M A G A Z I N E . E S
emerge mol. Yellow Dog incluye el progra-
ma por defecto.
Hemos usado la distribución Ubuntu
para el procesador PowerPC, puesto que
nos resultó imposible arrancar una inter-
faz gráfica ni con Gentoo ni con la distri-
bució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. Mac-
on-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 insta-
ladas. Con las siguientes órdenes descar-
gamos los paquetes y los instalamos:
sudo apt-get install build-U
essential linux-headers-2.6-U
powerpc
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 archi-
vos, 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 debe-
mos 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 insta-
lamos el código fuente de los módulos
del kernel para Mac-on-Linux:
Figura 1: Si arrancamos Mac-on-Linux con la opción --loadonly se
muestran los módulos requeridos.
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 pre-
via, y podemos continuar con la instala-
ción del resto de paquetes de Mac-on-
Linux:
sudo apt-get install mol mol- U
drivers-macosx
El gestor de paquetes resuelve las
dependencias e instala mol y mol-dri-
vers-linux, y también mol-drivers-linux,
el cual usaremos sólo si queremos eje-
cutar 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 diferen-
tes 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 nece-
sario, 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 orga-
nizar 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. Mac-
on-Linux usa una ventana de terminal
para mostrar los mensajes que se pro-
duzcan durante en arranque. Estos men-
sajes se almacenan permanente en un
archivo en /var/log, y deberemos mirar-
los si algo va mal.
Túnel de RedConfigurar la red es algo más complica-
do 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 inter-
faz 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 Mac-
on-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 tun-
config 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 com-
pleja configuración, Mac-on-Linux tendrá
acceso a Internet.
sudo apt-get install mol
modules- source
Lanzamos un editor para abrir una cabe-
cera 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 alternativamen-
te otro editor de texto, reemplazando vi
con el nombre del otro editor que prefira-
mos.
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 directo-
rio con el código fuente de Linux y des-
comprimimos 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 eje-
cutamos 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í:
PORTADA • Mac en Linux
32 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 deb http://archive.ubuntu.com/ubuntu warty multiverse
02 deb-src http://archive.ubuntu.com/ubuntu warty multiverse
Cuadro 1: Líneas a añadir a /etc/apt/sources.list
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
Cuadro 2: /etc/mol/tunconfig
El acelerador
Para lanzar Mac-on-Linux a pantalla com-
pleta 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 eli-
minar un gran número de operaciones
gráficas. Se puede conseguir el mismo
efecto lanzando Mac-on-Linux directa-
mente 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:
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 AppleSi 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
./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 archi-
vo 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
Por contra a lo expuesto en la documen-
tació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 emula-
dor, 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 ten-
dremos que copiar asimismo al directorio de
usuario. También vamos a mover la imagen
del disco duro, macosx.img, al mismo direc-
torio para tener todos los archivos que nece-
sitamos 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 con-
tinuació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 cam-
biamos el valor a select, el emulador nos
requerirá que seleccionemos una parti-
ció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 con-
mutar 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 uni-
dad como objetivo, pero desafortunada-
mente aún no la tenemos. Tenemos que
hacer una partición en nuestro disco duro
Mac en Linux • PORTADA
33Número 07W W W . L I N U X - M A G A Z I N E . E S
Figura 2: Navegación con Mac OS X en una ventana de Linux. Figura 3: La ventana inicial de PearPC nos permite seleccionar la par-
tición de arranque.
Mac OS X detecta la tarjeta de red
Ethernet virtual automáticamente. Para
localizarla, comprobamos la configura-
ción de red dentro de la configuración del
sistema. Asignamos la dirección IP estáti-
ca 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 pro-
porciona un servidor de nombres.
Al igual que Mac-on-Linux, PearPC
configurará la red virtual de manera prác-
ticamente automática en segundo plano,
e incluso hará lo propio con la NAT. Para
ello, necesita algunos archivos del direc-
torio 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 confi-
guración de red de Linux, necesitamos privi-
legios de root para este paso. En otras pala-
bras, 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 AlianzaTanto Mac-on-Linux como PearPC impre-
sionan 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
programa que ejecuta Mac OS X (y otros
programas) bajo Linux. De hecho, es sufi-
cientemente rápido como para desarrollar
trabajos serios en un ordenador moderno.
Ambos programas tienen una configu-
ració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 benefi-
ciarse de los conceptos aportados por
QEMU. �
virtual. Lanzamos la herramienta de par-
ticiones 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 conti-
nuació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 selec-
ción de paquetes, el instalador copiará los
paquetes al disco duro virtual.
Una vez hayamos terminado este paso,
salimos de PearPC e insertamos el segun-
do CD de instalación. Cuando reinicie-
mos, seleccionamos como partición de
arranque la creada anteriormente. El ins-
talador 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 ExpertosPara permitir a Mac OS X usar la red en
un entorno PearPC, necesitamos modifi-
car 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.
PORTADA • Mac en Linux
34 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[1] Mac-on-Linux: http://www.
maconlinux.org
[2] Procesador PowerPC: http://www.ibm.
com/chips/products/powerpc
[3] Pegasos Computer: http://www.
pegasosppc.com
[4] Página Linux-PPC: http://www.
penguinppc.org
[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: http://www.
yellowdoglinux.com/
[10] Modo pantalla completa en Mac-on-
Linux: http://www.maconlinux.org/
userguide/cvideo.html
[11] PearPC: http://pearpc.sourceforge.net
RECURSOS
Figura 4: El instalador de Mac OS X en ejecución en el emulador
PearPC.
Figura 5: Cuando termina la instalación funciona hasta el Dock.
Construir complejos proyectos web
que soporten CGIs se puede con-
vertir rápidamente en algo confu-
so. 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 libp-
cre proporciona un resaltado de sintaxis
muy útil, aunque el corrector ortográfi-
co, basado en Aspell, es opcional.
Los usuarios también pueden acceder
a los recursos en linea, tales como servi-
dores 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 recur-
sos, como si estuvieran en directorios
locales.
Diseño de la interfazLa interfaz de Bluefish tiene tres paneles:
Una barra de menú con las funciones
estándar en la parte superior de la venta-
na, 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 docu-
mentos rápidamente. Según los desarro-
lladores, 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 de-
sarrolladores pueden añadir documenta-
ción sobre alguno de los guiones y len-
guajes web a los que da soporte el pro-
grama 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 usua-
rio acceso rápido a los bloques de cons-
trucción HTML. Las pestañas está orga-
nizadas por funciones, permitiendo a los
usuarios que añadan tablas, formularios
o elementos CSS con el mínimo esfuer-
zo. Para las estructuras más complejas,
como los formularios, el programa indica
al usuario que especifique los paráme-
tros necesarios para mostrar los ele-
mentos correcta-
mente.
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 adaptacio-
nes locales de las páginas Web. Los
usuarios pueden utilizar el botón dere-
cho 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 predeter-
minada.
Entorno de DesarrolloLigeroLos desarrolladores no enfocaron su pro-
yecto como un simple editor de HTML.
El hecho de que Bluefish de soporte a
lenguajes de guiones y lenguajes tradi-
cionales de programación tales como C
significa que Bluefish está más cerca de
un entorno integrado de gestión de de-
sarrollo. Esto es siempre útil ya que un
IDE hecho y derecho pude ser demasia-
do molesto para, por ejemplo, proyectos
más pequeños; pues a menudo un IDE
ofrece a los programadores característi-
cas no deseadas que probablemente con-
funden más que ayudan.
Otra característica útil es que los usua-
rios pueden buscar en la documentación
integrada de Python y PHP directamente
en la barra lateral. Aquí es donde se pue-
den 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 realza-
do de sintaxis facilitan el trabajo con el
código fuente.
Bluefish da a los usuarios la capaci-
dad de evaluar los makefiles y de
Bluefish • PRÁCTICO
35Número 07W W W . L I N U X - M A G A Z I N E . E S
El editor de HTML Bluefish es útil en los grandes proyectos web y también para los proyectos de progra-
mación más pequeños. El resaltado sintáctico y los bloques de código ayudan a los desarrolladores a cons-
truir proyectos de manera más eficiente. POR ANDREAS GRYTZ
35
El editor del HTML e IDE integrado Bluefish
UN PEZ LLAMADO…
extensible. Por ejemplo, los usuarios
podrían aprovechar esta capacidad para
agregar sus herramientas de desarrollo
preferidas.
Gestión de ProyectoBluefish realmente es brillante cuando
es necesario manejar archivos múlti-
ples en un proyecto a gran escala. El
programa tiene
un diálogo para
este propósito.
Los usuarios
pueden especifi-
car un directorio
objetivo para el
proyecto y asig-
nar un nombre
interno en
Bluefish; un clic
con el botón derecho le permitirá agre-
gar carpetas y archivos a la barra late-
ral.
El diálogo de proyecto tam-
bién permite que los usuarios
definan un directorio remoto
para el proyecto local.
ImpresionesAunque los desarrolladores
afirman que la versión actual
1.0 es estable, el software
todavía tiene una o dos extra-
vagancias. Por ejemplo, el
programa se bloqueó en varias
ocasiones mientras creábamos
un proyecto, al intentar selec-
cionar una plantilla para el
proyecto. Asegúrese de tener
una copia de seguridad antes
de comenzar a trabajar con datos de pro-
ducción.
Según el sitio web de Bluefish, los
desarrolladores están trabajando en
incorporar, donde sea posible, las direc-
trices 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álo-
go 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 programa-
ción, una vez que aprendamos como
desenvolvernos. Los bloques de código
eliminan la necesidad de repetir pulsa-
ciones de teclado y así evitar los errores
asociados a esto.
Además de las dependencias ya men-
cionadas, 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 distribu-
ciones 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 progra-
madores que trabajen con hardware
obsoleto. �
mostrar las llamadas en una ventana
separada. Utiliza esta misma aproxima-
ción para llamar a programas externos
tales como Tidy, un verificador de sinta-
xis HTML [2].
Algunos programas externos son pre-
configurados por la instalación estándar
de Bluefish, sin embargo, la rutina de
instalación no comprueba si los progra-
mas están real-
mente instalados
y se encuentran
en las rutas espe-
cificadas. Esto
puede causar
confusión, ya
que si no se tiene
cuidado, el soft-
ware puede mos-
trar entradas en
el menú a programas que no existen.
A pesar de todo, los programas exter-
nos integrados hacen que el software sea
PRÁCTICO • Bluefish
36 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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.
Figura 3: Bluefish nos permite añadir herramientas
externas.
Figura 4: Creación de un proyecto Bluefish.
[1] Página principal de Bluefish: http://
bluefish.openoffice.nl/
[2] HTML Tidy: http://tidy.sourceforge.net/
RECURSOS
Desde el lanzamiento del sistema
de administración de contenido
(CMS) Plone [1], ha sido difícil
imaginar un mundo de servidores de apli-
caciones 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 NuevosDesarrollosZope 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 cono-
cido como infraestructura de administra-
ción de contenidos (CMF – Content
Manager Framework). El marco CMF
para Zope 2 no sólo tenía las herramien-
tas necesarias para desarrollar un siste-
ma de administración de contenido, sino
que también proporcionaba una arqui-
tectura basada en componentes que
soportaba modificaciones flexibles de
componentes individuales. La experien-
cia 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ódi-
go 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 pro-
gramadores experimentados de Zope y
Zope X3.0 • PRÁCTICO
37Número 07W W W . L I N U X - M A G A Z I N E . E S
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
37
Desarrollo Aplicaciones Web con Zope X3
FÓRMULA XDesarrollo Aplicaciones Web con Zope X3
FÓRMULA X
Cuando empezó el desarrollo de Zope 3,
pronto quedó claro que había que dese-
char la compatibilidad con la API de
Zope 2. El prefijo “X” de la versión origi-
nariamente 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 pre-
via.
Xs y Us
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, revi-
siones 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 per-
mite al usuario asignar permisos para
proteger componentes, propiedades y
métodos. Los usuarios que deseen acce-
der a un componente protegido tienen
que estar autorizados. Los componentes
modulares autentican y autorizan a los
usuarios, dando a los operadores la posi-
bilidad de adaptar la seguridad a la situa-
ción presente sin tener que rehacer la
aplicación subyacente.
Zope no sólo proporciona las herra-
mientas para la internacionalización de
las aplicaciones que necesitan los pro-
gramadores, 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, sur-
gen de la paleta de Zope.
Cambio de Paradigma
Zope X3 elimina algunos de los fallos que
afectaban a Zope 2. Por ejemplo, la ver-
sión anterior esperaba a que las instan-
cias de clase proporcionaran los atributos
y métodos que necesitaban para interac-
cionar 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.
los recién incorporados al proyecto,
organizaron sesiones principales y
secundarias de desarrollo (llamadas
“sprints”) por todo el mundo para man-
tener 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ódi-
go tenía que ser desechado para dejar
paso a una implementación mejor.
CaracterísticasEl núcleo de Zope X3 es su arquitectura
basada en componentes. Se les asigna a
los diferentes componentes respon-
sabilidades para las tareas espe-
cíficas. Por ejemplo, las
tareas de administra-
ción de compo-
nentes
PRÁCTICO • Zope X3.0
38 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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")
Listado 1: Interfaces (inter-faces.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 = pos-
tal_code
Listado 2: Componentes deContenido (buddy.py
Figura 1: Este formulario de edición fue generado automáticamente por la referencia al esque-
ma de datos del componente de contenido.
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 funcionali-
dad. La arquitectura de Zope define los
siguientes tipos de componentes:
• Contenido: Este tipo de compo-
nentes no tiene normalmente
métodos, tan sólo propiedades
que utilizan para publicar los
datos almacenados. Los tipos
de datos y valores se especifi-
can normalmente usando
esquemas de datos.
• Adaptadores: Son probable-
mente los componentes más
potentes. Los Adaptadores per-
miten a los desarrolladores aña-
dir funcionalidad a los compo-
nentes existentes sin tener que
modificar los propios compo-
nentes. Esta técnica es extrema-
damente útil si un marco
requiere una API específica.
Los desarrolladores pueden
dejar los componentes origina-
les tal cual e implementar un
adaptador que haga de interfaz
entre el componente y la API
requerida.
• Vistas: Visualizan los compo-
nentes para el usuario. Un
ejemplo de esto es un navega-
dor web, que usa Vistas para
renderizar HTML. Una vista es
realmente una clase especial de
adaptador que proporciona a
Zope X3.0 • PRÁCTICO
otros objetos una característica
que no poseen nativamente
(presentación).
Contrato AbstractoPara permitir a los componentes perma-
necer independientes de la implementa-
ció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 mues-
tra un interfaz de
una aplicación
de ejemplo
que adminis-
tra direccio-
nes privadas.
El interfaz es
un esquema de
datos que descri-
be un componente
de contenido, en este caso, los
datos de la dirección de una perso-
na. 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éto-
dos para describir funcionalidad y un
interfaz que define un esquema de datos.
Componentes de ContenidosSimplesLa 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 requeri-
sitos 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 implementa-
ción del interfaz IBuddy que se muestra
en el Listado 1. Nótese que la clase here-
39Número 07W W W . L I N U X - M A G A Z I N E . E S
l)01 <configure
xmlns="http://namespaces.zope.
org/zope"
xmlns:browser="http://namespa-
ces.zope.org/browser">
02
03 <content
class="buddydemo.buddy.Buddy">
04 <require
permission="zope.View"
05 interface="buddydemo.inter-
faces.IBuddy" />
06 <require
permission="zope.ManageContent
"
07 set_schema="buddydemo.inter-
faces.IBuddy" />
08 </content>
09
10 <browser:addform
11 schema="buddydemo.interfa-
ces.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.interfa-
ces.IBuddy"
20 label="Edit buddy address"
21 name="edit.html"
22 menu="zmi_views"
23 title="Edit"
24
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>
Listado 3: Configuración (configure.zcm
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 seguri-
dad o vistas de navegadores web, están
ahora ligadas al fichero de configura-
ción. Esta solución proporciona a los
desarrolladores una ventaja importante:
la posibilidad de desactivar componen-
tes temporalmente o permanentemente
sin necesidad de modificar el código.
El Listado 3 muestra las directivas de
configuración típicas para un componen-
te de contenido basado en un esquema.
El ejemplo tan sólo maneja las declara-
ciones de seguridad para lectura y escri-
tura de datos para las instancias de
buddy. El fichero sigue con la definición
de dos formularios. Un formulario gene-
ra 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 imple-
mentación persistente simple, unas
cuantas directivas de configuración y
nada de HTML, proporcionan un compo-
nente 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 pue-
dan 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 FuturoZope ha tenido un seguimiento masivo
gracias a sus características, su flexibili-
dad 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 pro-
yecto. 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 duran-
te 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. �
dada
de
Persistent
se asegura de
que sus instan-
cias sean automática-
mente almacenadas en ZODB. Para
asegurar la clase contra otros componen-
tes, también se necesita especificar que
la clase implementa el interfaz IBuddy.
Configuración XMLZope 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 confi-
guraciones 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-
40 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Philipp Von
Weitershausen
estudia Física en
Dresden,
Alemania.
Además es pro-
gramador free-
lance y consul-
tor. Philipp tam-
bién participa en
el equipo de desarrollo de Zope 3
y es autor del libro Desarrollo de
componentes Web con Zope 3.
EL
AU
TO
R
[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
RECURSOS
La instalación de Zope 3 en Linux es sen-
cilla. 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 confi-
guración (configure) que automática-
mente genera el fichero Makefile para el
proceso de compilación e instalación.
Las bibliotecas de Zope se instalan nor-
malmente en /usr/local/Zope-3.0.x. Sin
embargo, se puede cambiar esta locali-
zación con el parámetro --prefix en el
script configure. Para ejecutar una ins-
tancia del servidor, primero se necesita
crear un árbol de directorios para la ins-
tancia. 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 reque-
ridas por la instancia. Una instalación de
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 instan-
cia). 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 run-
zope se puede pulsar Ctrl-C para salir.
Como esto no es práctico para una apli-
cación de servidor, se puede ejecutar el
script zopectl (también en el directorio
bin de la instancia) para controlar el ser-
vidor; es similar a apachectl del servidor
Apache.
Instalación y Configuración
PRÁCTICO • Zope X3.0
Apt (Advanced Packaging Tool),es un sistema simple peropoderoso para instalar softwa-
re en sistemas Debian. Los paquetesespecíficos para Debian están disponi-bles tanto como binarios como códigofuente, y los usuarios pueden acceder aun repositorio administrado centraliza-damente para actualizar todo su soft-ware desde Internet. Las herramientasde administración de paquetes resuel-ven automáticamente las dependenciasque puedan surgir durante la actualiza-ción.
En la actualidad los usuarios de distri-buciones basadas en RPM pueden asi-mismo beneficiarse de las bondades dela herramienta de Debian. Vamos a usarSuse, por ejemplo, para mostrar cómoadministrar nuestro software convenien-
temente y con fiabilidad con Apt paraRPM.
Instalación y ConfiguraciónSi vamos a usar Apt con Suse, será conve-niente disponer de una conexión de bandaancha a Internet, ya que esta herramientadescarga los paquetes de la red para insta-larlos. Antes de nada, los usuarios de Suse9.2 deberán instalar previamente dospaquetes: apt-0.5.15cnc6-rb.suse092.
6.i586.rpm y apt-libs-0.5.15cnc6-rb.s
use092.6.i586.rpm. Ambos paquetes estándisponibles en [1].
Si preferimos usar la interfaz gráficade Apt, debemos asegurarnos de insta-lar el paquete synaptic-0.55.3-0.
suse092.rb1.i586.rpm de igual manera.Después de completar este paso, nece-
sitamos configurar un archivo llamado
sources.list (véase el Cuadro 1:Repositorios). Este archivo especificaqué repositorios vamos a utilizar y cua-les no. Apt entiende como repositorioscolecciones de paquetes de software,usualmente ordenados por categoría. Elarchivo sources.list situado en /etc/apt
nos permite especificar estos reposito-rios. Los usuarios más cautelosos evita-rán añadir las ramas como kde-unstable
o kernelof-the-day a la lista de fuentes.De igual manera, los paquetes del reposi-torio usr-local-bin han de manejarse concuidado. Y si estamos contentos connuestra interfaz gráfica tal como está,deberíamos también eliminar la ramaX.org.
Con privilegios de root, editamos elarchivo /etc/apt/apt.conf.d/
gpg-checker.conf y reemplazamos el valor
APT para RPMs • PRÁCTICO
41Número 07W W W . L I N U X - M A G A Z I N E . E S
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
41
Apt en Suse
REMIX DE PAQUETES
la interfaz gráfica Synapticpara modificar la lista defuentes, seleccionando paraello Settings | Package sources.
Uso en ConsolaApt tiene unas poderosascaracterísticas para modificarnuestra colección de software.Sin embargo no es tan sencilloentender cómo funciona. Nosvamos a concentrar en lasopciones disponibles parausuarios con un conocimientoprevio de las herramientasYaST y YOU. Los lectores másminuciosos deberán revisar laspáginas man para tener unavisión más profunda de Apt.
Tras configurar sources.list
en /etc/apt, tecleamos apt-get update enuna terminal. Esta orden verifica laestructura de nuestro software, localizalos datos especificados en nuestra sour-
ces.list y nos muestra las opciones deactualización.
Podemos teclear apt-get install nom-
bredelpaquete o apt-get remove nombre-
delpaquete en la consola para instalar oeliminar el paquete respectivamente. Losusuarios más atrevidos estarán tentadosde usar apt-get upgrade para actualizar elsistema por completo. No es aconsejableeste método a menos que sepamos lasconsecuencias. Decisiones faltas de cau-tela o sin la debida información puedenconducir a instalaciones desde reposito-rios con paquetes inestables. Hemos deasegurarnos de ejecutar apt-get -s upgra-
de previamente para revisar que paque-tes vamos a actualizar con Apt. Por otrolado, si sólo necesitamos instalar paque-tes de seguridad oficiales o software dela rama estable de KDE, el método de la
línea de comandos es la manera másrecomendable de hacerlo. Si preferimosinvestigar más detenidamente este tema,podemos usar la herramienta Synaptic.
SynapticSi aún no tenemos instalado el paquetesynaptic-0.55.3-0.suse092.rb1.i586.rpm,lo instalamos tecleando como root
apt-get install synaptic. Esto supone queel toolkit Gtk está instalado en nuestroequipo o bien que nuestra sources.list
tiene una entrada al repositorio base. Eneste último caso, Apt nos preguntará siinstalamos los otros paquetes necesarios.
Después de terminar la instalación,encontraremos un enlace al programa enSystem | Configuration | Synaptic
Package Manager, siempre que tengamosuna versión reciente de KDE con la tec-nología llamada vFolder. Tras introducirnuestro password de root, comprobare-mos que la parte izquierda de la ventanadel programa está dividida en seccionesde manera parecida a YaST. Synaptic listalos paquetes en la derecha. Una marcaverde significa que el programa está ins-talado. Una marca con un asterisco signi-fica que está disponible una versión másreciente. Podemos revisar los signos usa-dos en Help | Icon Legends.
La instalación o actualización depaquetes sigue un patrón similar al deYaST. Seleccionamos el paquete requeri-do y elegimos Mark for installation oMark for upgrade en el menú desplega-ble. Pulsamos en Apply en la barra deherramientas para pasar a la descarga einstalación. Si sólo queremos revisar lasnuevas versiones (apt-get update), selec-cionamos Reload en la barra de herra-mientas.
El menú Settings tiene un buen núme-ro de opciones de configuración, que se
en GPG::CHECK de true a false. Esto per-mite que Apt acepte paquetes sin firma.De lo contrario, un buen número depaquetes no podrán cargarse debido a lafalta de firma.
Los usuarios más precavidos preferi-rán evitar las actualizaciones automáti-cas del kernel. Para ello, abrimos elarchivo /etc/apt/apt.conf.d/apt.conf yañadimos lo siguiente en la sección RPMpara el kernel 2.6:
Hold {"kernel-default"; U
"kernel-source"; };
Si aún estamos usando el kernel 2.4,necesitaremos las siguientes líneas en sulugar:
Hold {"k_deflt"; U
"kernel-source"; };
Si preferimos evitar estas tareas de confi-guración en modo texto, podemos usar
PRÁCTICO • Apt para RPMs
42 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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 ejecu-
ció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.
Un fichero sources.list bastante más
conservadora, que no actualiza cada pro-
grama 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
# More info about aptate at:
http://apt4rpm.sourceforge.net
#
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.
Cuadro 1: Repositorios
Figura 1: El comando “apt -s upgrade” nos permite veri-
ficar los resultados antes de actualizar.
explican por sí mismas. Puede que que-ramos llevar la cuenta de qué paquetesproceden de qué repositorio. Para ello,seleccionamos adicionalmente la colum-na Components en la pestaña Columns
and Fonts dentro de Settings |
Configuration. Si hubiese múltiples ver-siones de un paquete disponibles devarios repositorios, podemos seleccionarPackage | Force version para instalar elpaquete requerido. La opción Package |
Lock version nos ayuda a evitar la actua-lización no deseada de un paquete.
Los paquetes están agrupados porcategoría en el panel izquierdo de la ven-tana de Synaptic, para ofrecernos unamejor visión global. Bajo la lista tenemosalgunos botones que podemos pulsarpara cambiar la vista. La opción Status
nos permite ordenar paquetes de progra-mas instalados o disponibles en funcióndel criterio seleccionado.
PragmatismoComo se mencionó anteriormente, unaactualización completa del sistema noestá recomendada, a menos que sepa-
APT para RPMs • PRÁCTICO
mos a ciencia cierta como funciona Apt.Es mejor concentrarse en las actualiza-ciones de seguridad mediante el reposi-torio correspondiente, y en actualizarpaquetes muy específicos.
Supongamos que estamos aún conSuse 9.0 o 9.1, y estamos un poco asus-tados de una gran actualización. Enlugar de esto, lo que queremos es actua-lizarnos al último escritorio KDE, ya quehemos leído la gran cantidad de mejoraslogradas.
La instalación manual usando lospaquetes de Suse es una pesadilla, ya quedeja al sistema con un montón de depen-dencias no resueltas. En lugar de esto,buscamos “kde” en Synaptic. La búsque-da da como resultado una lista de paque-tes que necesitamos instalar y actualizar.Todo lo que necesitamos hacer es seleccio-nar los paquetes que queremos actualizar.Cuando lancemos la actualización, Apttratará cualquier paquete de KDE borradoo introducido recientemente y resolverátodas las dependencias.
El método es parecido si disponemosde Suse 9.2, pero no aparecen algunos
importantes componentes multimediadado que Novell/Suse no los incluye ensus medios de instalación, debido a pro-blemas con las licencias. Hemos de des-cargarnos previamente estos paquetes de
Apt no funciona únicamente para la ulti-
ma versión de Suse, la 9.2, sino también
para cualquier Suse desde la 7.3 en ade-
lante. La arquitectura AMD64 está sopor-
tada desde Suse 9.x o superior.
Los paquetes para apt, apt-libs y synap-
tic están disponibles en [1]. Sólo tene-
mos que reemplazar el número de la
versión 9.2 en la URL con nuestra ver-
sión de Suse. Para ejecutar Apt en ver-
siones anteriores a Suse 8.2, también
nos hará falta el paquete
lua-5.0.2-rb1.i586.rpm.
Puede que apreciemos algunas diferen-
cias 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/.
Cuadro 2: Apt para versio-nes antiguas de Suse
Para localizar la página adecuada, hemosde añadir #suse92 o #suse73 a URL,dependiendo de nuestra versión.
A veces puede ocurrir que un intentode instalación de un paquete abc falledando un mensaje del tipopaket-xyz.so.2 requires abc. Podemospedirle a Apt que busque el paquete per-dido con apt-get install abc
paket-xyz.so.2.La herramienta apt-iselect combina la
funcionalidad de apt-cache search yapt-get install ofreciendo una interfazmás amigable basada en consola.Podemos instalar esta herramienta desdeel repositorio suser-oc2pus tecleando apt
install apt-iselect.Si ordenamos apt-iselect
libgnutls-extra.so.11, por ejemplo, nosindica que el archivorequerido está en elpaquete gnutls.Podemos ver los deta-lles del paquete actua-lizado (checksum,dependencias adicio-nales, descripción,nombre de los archi-vos, tamaño, etc.) eincluso instalarlo si asílo deseamos. Éstapuede ser también unabuena manera deencontrar qué paque-
tes existen para una palabra clave,como pueda ser “chess” (ajedrez, véaseFigura 3).
Cuando necesitemos borrar un paque-te, tenemos que recordar que el típicoapt-get remove nombredepaquete sóloborrará el programa. No borrará ningúnpaquete instalado para resolver depen-dencias. Sin embargo ,apt-get -D remove
nombredelpaquete permite borrar tam-bién esos paquetes.
Encontraremos un HOWTO para Apten Suse en [5], junto con una buena can-tidad de otros HOWTOs relativos a Apten otras distribuciones RPM.
ConclusionesNo es muy complicado configurar unsistema Apt en Suse y los pasos paraconseguirlo no llevan demasiado tiem-po. La excelente y poderosa interfazgráfica Synaptic ofrece a los usuariossin mucha experiencia la herramientasencilla que buscaban para acostum-brarse a Apt. Las actualizaciones delsistema completo necesitan más expe-riencia debido al método descentraliza-do en el que se organizan los reposito-rios. En caso de duda, no es mejor norealizar grandes cambios en un sistemaque funcione.
Apt no está restringido a usuarios deSuse. Esta herramienta está disponiblepara las principales distribuciones basa-das en RPM. La instalación y configura-ción son muy similares a las descritas eneste artículo, aunque el número de repo-sitorios pueda variar según la distribu-ción. Véase [6] y [7] para más detalles. �
la Web [3] e instalarlos. Algunas vecesesto requerirá investigar un poco por losforos para averiguar el orden correcto deinstalación. De todas maneras no es muycomplicado si añadimos packman ypackman-i686 a nuestra sources.list einstalamos Xine o MPlayer.
Trucos y ConsejosApt nos facilita mucho la instalación desoftware, pero puede que aún queramossaber algunos consejos para el uso segu-ro del sistema de administración depaquetes.
Antes de meternos en una actualiza-ción masiva, es bueno comprobar losnuevos paquetes que hayan sido publica-dos. La página Freshrpms [4] es un sitioideal para revisar los nuevos paquetes.
PRÁCTICO • Apt para RPMs
44 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[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/
RECURSOS
Figura 3: apt-iselect encuentra rápidamente todos los paquetes
que concuerden con una palabra clave.
Figura 2: Synaptic es un cómodo interfaz gráfico para Apt.
Durante la era .com, cada compa-
ñía corría sus aplicaciones en sis-
temas 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 acumu-
lando 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 popula-
res para Linux. De todas formas, Linux
sobre SPARC es muy parecido a Linux
sobre PC, pero si quiere que su instala-
ció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
detalles que necesitará conocer si quiere
instalar Linux en una máquina Sun.
Linux y SPARCEl 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 ejem-
plo. Hay también es probable para quien
le interese que su LUG local o incluso en
su universidad hayan máquinas Sun anti-
guas de las que se quieran deshacer.
Las máquinas SPARC (32-bits) fueron
unas de las primeras (sino la primera) pla-
taformas donde Linux fue montado tras
los x86. Hace unos 6 años, varios vende-
dores, 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 dis-
tribuciones para SPARC están mantenidas
por la comunidad.
Las distribuciones de SPARC Linux más
extendidas incluyen:
• Aurora Linux: La primera ver-
sió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 ocasio-
nalmente mezclarlo en el Fedora
Core.
• Debian GNU/Linux: La distribu-
ció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 men-
cionado, 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
SPARC • PRÁCTICO
45Número 07W W W . L I N U X - M A G A Z I N E . E S
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
45
SALTAN CHISPAS
Instalando Linux en una máquina Sun SPARC
SALTAN CHISPAS
01 Disk /dev/hda (Sun disk label): 16 heads, 63 sectors, 17660 cylinders
02 Units = cylinders of 1008 * 512 bytes
03 Device Flag Start End Blocks Id System
04 /dev/hda1 0 102 51408 1 Boot
05 /dev/hda2 102 16620 832507 2 83 Linux native
06 /dev/hda3 0 17660 8900640 5 Whole disk
07 /dev/hda4 16620 17660 524160 8 Linux swap
Listado 1: Configuración de Disco de SPARC Linux
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 pri-
mero. 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 bina-
rio 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 progra-
mas antiguos MacOS, tal como
MacWrite II, pero puede ocurrir.
Cuadro 1: Endianness
La mayoría del
desarrollo actual
ya está realizado
para los nuevos
ordenadores
UltraSPARC con
PCI. Debido a
esto, los equipos
SPARC de 32-bit y
los UltraSPARC
basados en SBus
a veces se retra-
san un poco. Los
nuevos kernels no siempre quieren ejecu-
tarse de forma correcta en estas máquinas
y lleva unas cuantas versiones de kernel
el arreglar estos problemas.
Los servidores de altas prestaciones son
demasiado caros y normalmente no están
disponibles para un usuario normal y
Linux probablemente no funcionará de
ninguna forma, aunque hay informes de
que Linux arranca en algunos servidores
de gama media, tal como el Enterprise
4500.
Instalación de Linux enSPARCProbamos 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 ins-
talació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áqui-
na Sun y un PC normal es la forma en la
que se particionan los discos duros. Un
modo uniprocesador y no en modo SMP.
Para algunas máquinas, los diferentes
subtipos no están soportados, por ejem-
plo, la SPARCstation 5 con una CPU de
170 MHz no está soportada, sin embargo
otras SPARCstation 5 sí están soportadas.
La razón por la que esto sucede es que la
CPU de 170 MHz es de otro fabricante.
PRÁCTICO • SPARC
46 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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 siste-
ma 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 actua-
les. Sun también ha incorporado el chip
x86 en las máquinas Cobalt y reciente-
mente 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áqui-
nas. La versión 4 llegó a ser conocida
como “Sun4”. Algunos de los subtipos
de Sun4 se pueden ver en la Tabla 1.
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 cam-
bió al bus SBus, que se usó en todas las
máquinas SPARC. Unas cuantas máqui-
nas también usan las ranuras de expan-
sión MBus, que pueden utilizarse para
añadir CPUs extra a la máquina.
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 ser-
vidores, con los nuevos servidores de
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).
Desde 1996, el chip UltraSPARC se usa
en casi todas las máquinas, con la nota-
ble excepción de varios JavaStation. Las
JavaStation usaban un chip SPARC en la
placa con componentes PC (memoria PC,
bus PCI).
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 royal-
ties a SPARC Internacional o a Sun. Hay
un chip certificado SPARCv8 diseñado
por ESA que tiene un diseño desarrolla-
do bajo licencia LGPL. Los diseños para
este chip, llamado LEON SPARC, pueden
descargarse desde http://www.gaisler.
com/.
En Japón, Fujitsu ha realizado sus pro-
pias 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
como Solair y Tadpole. Estas máquinas
son idénticas a las máquinas normales
de Sun en su interior.
A menudo veremos referencias a cosas
como sparcv8 o sparc64. La primera des-
cribe la versión de la arquitectura SPARC.
Hay 3 versiones que pueden encontrarse:
• sparcv7: versión 7 de la arquitectura
SPARC, 32 bits
• sparcv8: versión 8 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 apro-
vecharse durante el tiempo de ejecución.
La mayoría de las distribuciones Linux
compilan para sparcv7, pero para algu-
nos paquetes, en particular openssl, es
útil utilizar unas etiquetas especiales de
optimización durante la compilación.
Algunas distribuciones, como Aurora,
contienen paquetes especiales precom-
pilados para openssl de sparcv8 y
sparcv9.
Términos como sparc32 y sparc64 no
describen un chip en particular, en cam-
bio, 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.
Cuadro 2: A la Búsqueda del Sol
Tipo de Máquina Bits Bus Máquinas (incompleto)
sun4 32 VMEbus Sun-4
sun4c 32 SBus SPARCstation SLC/ELC/
IPC/IPX/1/2
sun4d 32 SBus SPARCcenter
SPARCserver
sun4m 32 SBus SPARCstation 4/5/10/20;
SPARCstation X/ZX/
Voyager;SPARCclassic
sun4u 64 SBus/PCI Ultra; Blade; Enterprise;
Fire; Fujitsu SPARC64
Tabla 1: Subtipos Sun4u
PC puede tener hasta 4 particiones prima-
rias en un disco, una de las cuales puede
ser una partición extendida con más parti-
ciones 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 disposi-
ción, tales como una partición que utili-
za 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 utilizar-
lo 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 blo-
que de 512 bytes. La mayoría de los repro-
ductores 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 completa-
mente transparente para las máquinas
como la Ultra 10. La situación puede ser
diferente con las máquinas antiguas con
SPARC • PRÁCTICO
SBus o un chip de 32-bit. Antes de insta-
lar Linux, hemos de comprobar que el
hardware que va a utilizarse está real-
mente soportado. Un buen punto de parti-
da es la lista de compatibilidad de hard-
ware de Aurora.
El ArranqueUna 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 com-
pleto 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 siste-
mas de ficheros, y, a diferencia de LILO,
no necesita ser reinstalado después de un
cambio en la configuración. La configura-
ción de SILO puede ser un poco complejo,
pero el manual es muy claro.
AlternativasSi no quiere ejecutar Linux en una máqui-
na SPARC, hay varias alternativas. Por
supuesto, puede utilizar Solaris. Sun des-
arrolla Solaris 10 bajo licencia (CDDL)
esto es, según con quien se hable, abierto.
Si necesita una alternativa que sea real-
mente abierta, no estaría mal considerar
la variante BSD. NetBSD ha tenido sopor-
te 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ér-
minos aceptables.
La versión FreeBSD para SPARC es bas-
tante 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. �
47Número 07W W W . L I N U X - M A G A Z I N E . E S
[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: http://www.
sparc-boot.org/
[5] Páginas de la Wikipedia sobre byte
endianness: http://en.wikipedia.org/
wiki/Endianness
RECURSOS
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ósi-
to, ya que los clientes de Sun todavía
tenían la necesidad de ejecutar los bina-
rios 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 ker-
nel es completamente de 64 bit pero las
aplicaciones de usuario son normalmen-
te 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 bina-
rios de 32-bit y 64-bit. A no ser que uno
haga su propia distribución no tenemos
por que preocuparnos demasiado por
esto y sólo debemos utilizar las utilida-
des 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 correc-
to por nosotros.
Algunas aplicaciones de usuarios no se
beneficiarán de haberse compilado
como binarios de 64 bit, de hecho pue-
den 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
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 tam-
bié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 advier-
te 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á dispo-
nible como un paquete adicional.
Cuadro 3: Arquitectura 64-bit
No 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 autocontrola-
dos, 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 ins-
piración vino tras ojear el libro Linux
Toys[1] de la editorial ExtremeTech. El
libro dedica un capítulo entero a expli-
car 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 presu-
puesto. La solución que proponemos en
este primer artículo además de ser
mucho más barata es mucho más diver-
tida y peligrosa (¡cuidado con el cutter y
el soldador!).
Lo Duro del HardwareLa mayoría de nosotros, por lo gene-
ral, somos personas de software: pen-
samos en operaciones booleanas, ins-
tanciaciones 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 nece-
sitaremos 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
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 inexacti-
tud se debe exclusivamente a su^H^H mi
ignorancia. ¡Gracias chicos! : )
Presentamos a los ActoresLo 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 funcio-
ne a base de pulsadores o interruptores y
no por medio de las palancas que encon-
tramos en modelos más caros y avanza-
dos. En las tiendas esas de “Todo a pocos
Euros” encontraremos modelos pre-tune-
ados (a juzgar por la estética) a bajo pre-
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
Controlando un Coche a Teledirigido desde Linux (I)
EL COCHECITO
PRÁCTICO • Control Remoto
48 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Control Remoto • PRÁCTICO
último pulsador.
También nos
daremos cuenta
que hay tres
cables que salen
de la placa, uno
va al polo positi-
vo de la pila, otro
al negativo y un
tercero que va a
la base de la ante-
na. Con mucho
cuidado desolda-
remos los extre-
mos del cable
cercanos al conte-
nedor de la pila.
Naturalmente
anotaremos en
un papel donde
estaban conecta-
dos los cables para poder luego recompo-
nerlos a su lugar correcto. En mi caso el
cable rojo estaba soldado al polo positivo
de la pila, y el cable blanco al negativo.
Ahora la placa queda suelta completa-
mente y podremos retirarla del mando.
Con un cutter cortaremos el
plástico del mando para
extraer el contenedor de
la pila (ver Figura 2 y 3)
y eliminaremos los tro-
zos sobrantes hasta
darle una forma ade-
cuada. Necesitamos
ahora soldar otra vez los
conectores de la caja de
pilas a la placa para dejarlo
tal y como se ve en la Figura 4.
Si nos detenemos un momento a
analizar la placa del mando a distancia,
veremos que desde la parte posterior, las
soldaduras de los cuatro o cinco pulsa-
dores tienen una disposición similar a las
mostradas en la Figura 5, dos extremos
del pulsador pertenecen al
circuito impreso y otros
dos no. Si seguimos uno de
los extremos veremos ade-
má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 pulsa-
dores, de hecho si nos fija-
mos más veremos que el
mismo circuito une todos
los lados negativos de los
interruptores. Cuando pul-
samos el interruptor cerramos el circuito
y se producirá el movimiento correspon-
diente en el coche. Para comprobar esto
puentearemos de manera temporal los
dos extremos del pulsado con un alam-
bre o con una barrita de metal.
Veremos que la corriente pasará y se
encenderán los leds (en caso de existir) y
se empezará a mover el coche en la
dirección asignada a ese pulsador.
Nuestra misión es, por tanto, construir
algún tipo de mecanismo que sea capaz
de hacer lo mismo que hemos hecho con
el alambre: puentear el interruptor a
nuestra voluntad, o mejor dicho, a la
voluntad del ordenador. ¿Cómo afrontar
este reto? Esa es la pregunta que le hice a
un amigo y su respuesta no pudo se más
desconcertante: transistores polarizados.
Corte y SaturaciónVale, la respuesta era obvia para quien
supiera algo de electrónica. Pero no era
mi caso. Con un poco de paciencia y
cio, ideales para desarmar sin sobresal-
tos.
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 cua-
tro optoacopladores 4N25 y ocho resis-
tencias 4K7-0.25W. El precio de todo esto
no debe exceder los 4 Euros. De todas
maneras yo para practicar pedí un optoa-
coplador 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: creare-
mos un cable paralelo que conectará el
ordenador a una placa con los optoaco-
pladores y las resistencias, ésta, a su vez
quedará conectada a la placa con-
troladora del mando a distan-
cia.
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 MandoVamos a empezar a trabajar. Tomaremos
un destornillador y abriremos la tapa del
mando a distancia (ver Figura 1). Lo nor-
mal es encontrar un lugar donde se colo-
ca la antena, otro para colocar la pila de
9V y una placa de color verde con inte-
grados, 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
Figura 1: El mando a distancia desmontado. Se pueden ver los cinco
interruptores mencionados en el texto.
Figura 2: Vamos a sacar la caja de la pila con ese cutter tan
amarillo.
49Número 07W W W . L I N U X - M A G A Z I N E . E S
PRÁCTICO • Control Remoto
50 Número 07 W W W . L I N U X - M A G A Z I N E . E S
algo de lectura se puede entender el
funcionamiento del transistor. De todas
maneras solo nos interesa un compor-
tamiento de estos transistores: el que se
denomina paso de corte a saturación.
Para explicar este modo de funciona-
miento nos vamos a remitir a la Figura
6. Un transistor está compuesto por tres
cristales semiconductores, dependien-
do cómo se ordenen estos cristales ten-
dremos un transistor NPN o PNP. Cada
cristal es un terminal del transistor y
01 #include <stdio.h>
02 #include <stdlib.h>
03 #include <unistd.h>
04
05 #include "parapin.h"
06
07 int main()
08 {
09 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_sequen-
ce[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_sequen-
ce[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_sequen-
ce[i]]);
32 }
33 }
Listado 1: test.c
recibe un nombre: colec-
tor, base y emisor.
La corriente pasa general-
mente entre el colector y el
emisor siguiendo la direc-
ció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 sali-
mos de este rango por abajo,
el transistor estará en corte,
y si nos salimos por el límite
superior el transistor estará
saturado. Cuando el transis-
tor está en corte no hay
corriente entre el colector y
el emisor: es como un inte-
rruptor 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
corriente (y la diferencia de
potencial entre Vcc y V1 es,
naturalmente, cero).
Si la intensidad de corriente es algo
más alta podremos llegar a saturar el
transistor. En este caso el puente colec-
tor-emisor se comporta como un hilo.
Bueno, hay una caída muy pequeña de
potencial, pero para este
ejemplo vamos a considerar
que el transistor se comporta
como si existiera un cable
que une directamente el
colector y el emisor. En ese
caso la diferencia de poten-
cial entre V1 y tierra sería de
cero, mientras que la dife-
rencia de potencial entre V1
y Vcc es… sí… ¡eso es!:
Vcc. Es, entonces, lo mismo
que un interruptor cerrado.
Para poder controlar, por
tanto, la el tránsito de
corriente entre los extremos
de los pulsadores de nuestra placa de
radiocontrol, necesitaremos poner la
patilla del emisor en la parte del inte-
rruptor que da al polo negativo de la
pila, mientras que V1 tenemos que
ponerla en la parte positiva.
Vale, ya tenemos una parte de la teo-
ría. Mi amigo además me explicó otra
cosa. Vamos a usar un ordenador que
tiene un puerto paralelo, y desde ese
puerto voy a emitir pulsos. Tengo por
otro lado una placa conectada a una pila
de 9V. Dos circuitos con dos fuentes de
alimentación diferentes:
¡peligro! Corremos el riesgo
de, si nos equivocamos al
trabajar con los transisto-
res, introducir 9V en el
puerto paralelo. Eso parece
ser que puede ser malo para
nuestra controladora. La
solución está entonces en
desacoplar los dos circuitos
por medio de un nuevo
invento: el optoacoplador.
Aunque esto ya lo veremos
en profundidad en el
siguiente capítulo.
Echando un CableEl puerto paralelo es, junto con el serie,
uno de los puertos de comunicaciones
más veteranos en la informática. En ori-
gen este puerto era unidireccional (los
pines de salida eran solo de salida y los
de entrada solo de entrada) y estaba des-
tinado a conectar la impresora. Con el
Figura 3: Dos horas después ya tenemos la cajita de la pila.
Figura 4: Soldamos la caja a la placa respetando la polaridad
inicial.
Figura 5: Las cuatro
soldaduras traseras de
un pulsador. Dos de
ellas conectadas al cir-
cuito.
Control Remoto • PRÁCTICO
51Número 07W W W . L I N U X - M A G A Z I N E . E S
Figura 7). La lógica de
estos terminales es posi-
tiva: cada vez que envíe
un “1” lógico desde el
ordenador estaremos
transmitiendo un poten-
cial alto y cada vez que
enviemos un “0” no
tendremos potencial. La documenta-
ción técnica de este puerto dice que el
potencial que emite debería estar
comprendido entre 2.5V y 5V. Para
comprobarlo he medido con un mul-
tímetro los potenciales de estos ocho
pines y me sale 3.3V por cada uno de
ellos. Es conveniente pedir uno de estos
multímetros (o polímetros) prestados,
puesto que lo usaremos para testear la
corrección del cable que vamos a mon-
tar. Cómo solo vamos a usar estos ocho
terminales de salida de datos podremos
tomar un cable Ethernet (Figura 8) de
esos que sobran para soldarlo al conec-
tor paralelo. Estos cables tienen cuatro
pares de cobre, que dan un total de ocho
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 sol-
dadura, 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 des-
cargar desde [2]. Con esta
librería podremos activar y
desactivar los pines que
deseemos del puerto parale-
lo. La compilación de la
librería es muy sencilla:
tar -xzvf par
pin-1.0.0.tar.gz
cd parapin-1.0.0
./setup-2.6.sh
make
A partir de una versión
modificada de un fichero
de ejemplo de la librería,
vamos a construir un pro-
grama (Listado 1) que pon-
drá a cero los ocho pines
de datos, para luego ir acti-
vando / desactivando cada
uno de ellos en orden
ascendente. Es el momento
de ir comprobando que cada uno de los
cables va recibiendo potencial de manera
ordenada por medio de multíme-
tro. Es ahora la oca-
sión, si no lo
hici-
mos en cuando
soldamos el cable,
de apuntar en un papel la corresponden-
cia 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 prepara-
do 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 disponer-
lo todo en una caja vacía. Hacer tests y
un programa en C (una variación del lis-
tado 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. �
paso del tiempo
este conector ha
ido evolucionan-
do. En la actuali-
dad es bidireccio-
nal y tiene una
mayor velocidad
en la transferencia
de datos.
El conector que hay en el ordenador es
hembra y el que hemos comprado es
macho de 25 pines. Si nos fijamos en
este veremos que en la parte donde se
espera que soldemos los cables hay una
numeración del 1 al 25. Cada pin tiene
una finalidad, aunque a nosotros sólo
nos interesa los 8 pines de datos. Estos
son los situados entre el 2 y el 9 (ver
[1] Linux Toys: http://www.linuxtoys.net
[2] Librería parapin: http://parapin.
sourceforge.net/
RECURSOS
Figura 6: Transistor
como interruptor.
Figura 7: Esquema simplificado de los
pines de datos del puerto paralelo.
Figura 8: El cable ethernet y el conector paralelo antes de
soldarlo.
Figura 9: Cable Ethernet soldado al conector paralelo.
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, pro-
gramación con las QT,
perfeccionamiento de C++, desarrollo
en Java y mil cosas más.
EL
AU
TO
R
52
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
PRÁCTICO • Email anonimo
52 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Reenvío anónimo de correo con Mixmaster
MENSAJES DESDE NINGÚN SITIO
Cuando Johan Helsingius comenzóun servicio para el envío anóni-mo de correo electrónico en
1993, no podía prever en que clase deproblema se estaba metiendo. Johan esahora famoso por su trabajo pionero, apesar de las reacciones hostiles, o preci-samente debido a ellas.
Al comienzo de los 90, las listas decorreo y los grupos de discusión deUSENET habían dejado la fase en lacual principalmente se concentrabanen temas científicos y relacionadoscon la informática. En USENET tam-bién se dieron numerosas discusionespolíticas y religiosas muy polémicas.Como estas discusiones eran de inte-rés para los servicios secretos y de losjefes, los usuarios buscaban unamanera de expresarse anónimamente.Johan Helsingius desarrolló un softwa-re para despersonalizar mensajes decorreo electrónico y lo instaló en suservidor.
Pronto se conoció la dirección de esteservidor (http://anon.penet.fi/) y todavíase habla de él con reverencia. Para utili-zar el servicio, los usuarios tenían queenviar un mensaje de correo electrónicocon una entrada especial en la cabecerapara la dirección. El servidor sustituía ladirección del remitente por una direc-ción con el formato [[email protected]] (donde XXXX era una combina-ción de números) y remitía el correoelectrónico a la dirección especificada enla línea adicional de la cabecera.
El servicio era fácil de utilizar y atrajoa muchos usuarios. Antes de 1996, elprograma manejaba alrededor 10.000mensajes al día. Éste era el año que elmovimiento de la Cienciología demandóal operador, exigiendo la publicación delas direcciones de correo electrónico.Una corte finlandesa decidió que losmensajes de correo electrónico no esta-ban amparados por la ley de secretos delcorreo postal facilitando así la escucha
secreta y la identificación de los usua-rios. Esto, a su vez, impulsó aHelsingius, a desconectar el servidor [1].
Cypherpunk y MixmasterPara cuando Johan Helsingius apagosu servidor de correo anónimo, eldesarrollo progresaba a la velocidaddel rayo. Los Cypherpunks, grupo quese centró en la protección de la privaci-dad y el uso del cifrado, desarrollaronun cierto número de modelos de servi-dores anónimos (remailers) que nodependían de un servidor central. Sutrabajo estaba basado en un artículopublicado en 1981 por David Chaum[2], describiendo redes mezcladorasque habían sido implementadas con laidea de proteger el anonimato de laspartes durante el intercambio delcorreo electrónico.
El principio es comparable a enviaruna carta en varios sobres. Si Ralf Pennquería enviar una carta anónima, inicial-
entrantes y salientes y de esta manerasacar conclusiones sobre la identidad delremitente y el destinatario. Un atacantetambién podía interceptar un mensaje yreinsertarlo reiteradamente en la cadenade servidores anónimos.
Debido a que cada mensaje se manejaexactamente de la misma manera, tomaexactamente la misma ruta. Esta debili-dad fue identificada por Lance Cottrellen 1.995 en “Mixmaster & RemailerAttacks” [3]; también propuso algunoscambios, los cuales condujeron a remai-
ler Tipo II, el Mixmaster.
Como Funciona MixmasterMixmaster no remite inmediatamente losmensajes entrantes. En vez de eso, espe-ra hasta que se han agregado bastantesmensajes a la cola. Cuando el destinata-rio de mensajes está lleno, el servidorenvía los mensajes a la siguiente esta-ción en la cadena en un orden aleatorio.Para que sea imposible que un potencialinvestigador identifique los mensajes por
su tamaño, el servidor anónimo tambiénhace que todos los mensajes tengan untamaño uniforme. Si un mensaje esdemasiado pequeño, Mixmaster agregacaracteres de relleno al azar; si un men-saje es demasiado grande, Mixmasterdivide el mensaje en bloques del mismotamaño. Esta técnica hace imposible quelos atacantes asocien los paquetesentrantes con los paquetes salientes.
Además, a cada paquete del mensajese le asigna un ID. Mixmaster comprue-ba si el ID del paquete ya se ha registra-
mente dirigía la carta al destinatario,pero en vez de enviar la carta directa-mente, agrega un número de estacionesintermedias. Pone la carta en otro sobrey escribe la dirección de una de estasestaciones en el sobre. La carta consigueun sobre nuevo para cada uno de estasestaciones.
Entonces se envía la carta a la primeradirección intermedia, donde se abre elsobre externo. Se destruye el sobre y lacarta se envía a la siguiente direccióndel siguiente sobre hasta que, finalmen-te, la estación intermedia envía la cartaal destinatario real. El destinatario sola-mente puede rastrear la carta hasta laultima estación intermedia, ya que sehan destruido el resto de los sobres. Coneste proceso se garantiza el anonimatodel remitente.
Primera Generación deServidores AnónimosEl primer modelo de servidor anónimoque se basó en este principio fueCypherpunk Remailer, también conoci-do como remailer Tipo I. Al diferenciadel modelo de Helsingius, se involucranun cierto número de servidores, que tra-bajan independientemente unos deotros. Si un servidor no es accesible, losusuario pueden recurrir a cualquier otro.Como los servidores están situados enpaíses distintos, con diferentes sistemaslegales, los agresores lo tendrán difícilpara intentar lo que sea contra este tipode servidores.
Según se ha descrito anteriormente, seutilizan técnicas criptográficas paraenvolver el mensaje. Este proceso impli-ca que el remitente cifre el mensaje conla llave pública de cada servidor anóni-mo de la cadena. Los usuarios puedensolicitar la llave vía correo electrónico(Listado 1) o vía el sitio web del servi-dor. Cada servidor anónimo en la cade-na solamente puede descifrar la partedel mensaje previsto para su uso. Laparte descifrada contiene la dirección ala cual el servidor tiene que remitir elmensaje.
La organización del servidor anónimoelimina algunas de las debilidades delservicio de Helsingius, pero todavía que-dan algunos problemas. Por ejemplo,cada servidor anónimo remite los co-rreos electrónicos tan pronto como lle-gan. Esto permite que un atacantededuzca relaciones entre los mensajes
Email anonimo • PRÁCTICO
53Número 07W W W . L I N U X - M A G A Z I N E . E S 53
1. Se compone un mensaje y se añade la
cabecera. El mensaje se direcciona al pri-
mer destinatario. Se insertan dos lineas
al comienzo del mensaje:
::
Anon-To: [email protected]
Estas lineas proporcionan al ultimo ser-
vidor anónimo la información que nece-
sita para enviar el mensaje a su destina-
tario final.
2. Se cifra el mensaje y se añade la cabe-
cera cifrada. Ahora se cifra el mensaje
con la clave pública del servidor anóni-
mo. 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 Encypted: PGP
03 03
04 -----BEGIN PGP MESSAGE-----
05 V e r s i o n : G n u P G v 1 . 2 . 5
(GNU/Linux)
06 06
07
hQEOA1gu3H8UQS6IEAP/UgB5ZbyRS5
Kkmi/mD4Vi4PHBg6XOOoS8BL/t6HGa
CkMc
08
BHAB4YCnQGz1IEzxhrMnYxeFl0Ca9B
fsGTel1DjnHeLWypdW4XuPNnCiNA8f
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 usua-
rio quiere añadir otro servidor anónimo,
se añade una nueva linea Anon-To: en el
comienzo del mensaje. Después se repi-
te el paso número 2. Este paso se repeti-
rá 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 cade-
na, el cual reenviará la información indi-
cada más arriba.
Cuadro 1: Correo en Servidores Anónimos Cypherpunk
Figura 1: Pantalla de inicio del cliente
Mixmaster.
Además, los servidores anónimos deMixmaster utilizan el cifrado simétrico,que acelera los proceso con los mensa-jes. De hecho, Mixmaster tiene un mon-tón de ventajas sobre el servidor anóni-mo de Cypherpunk.
Aunque una descripción detallada decómo funciona todo esto está lejos delalcance de este artículo, los lectores quelo deseen pueden comprobar el borradordel RFC para conocer el protocolo deMixmaster [4].
do y si es así, descarta el mensaje. Aldescartar los mensajes con paquetesregistrados se protege al servidor contralos ataques por reinserción. Estos pasoseliminan algunas de las debilidades delservidor anónimo de Cypherpunk.
PRÁCTICO • Email anonimo
54 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 From: Jens Kubieziel
02 To: Dizum Remailer
03 Subject: remailer-key
Respuesta de Remailes:
01 From: Nomen Nescio
02 To: "Jens Kubieziel"
03 Subject: Remailer key for
dizum
04
05 $remailer{"dizum"} =
"<[email protected]> 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 <[email protected]>
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
mLjy1zPsysx7Zdc7J/c40l6rGS9n1t
ZQiw
21
CTpILinXiCLP3I9Pu9T4kl1gHVYyIu
2pqeNOJL0Wz1w6HkwQjGsGdxtFDyFC
mfxe
22
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<[email protected]>
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
3XLUuc8UzXNuL5VNAD40SfbxVpNwJJ
PYM3
40
fA2RY0IbsMefKvotlXRkKZHzFbj0Kc
nkvF0d0WhXzCgTEdwYwhaQQJzWznvu
Vzqm
41
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-----
Listado 1: Recuperación de claves de un Servidor Anónimo
Operaciones DiariasMixmaster también es el nombre de unpaquete software que ha sido desarrolla-do por programadores voluntarios comoun proyecto de fuente abierta. El desa-rrollo está hospedado en Sourceforge [5].Los usuarios pueden descargar el códigofuente desde Sourceforge y construir elprograma desde las fuentes. AdemásDebian ha precompilado los binarios delcliente Mixmaster para sus usuarios [6].
Después de instalar el software, losusuarios deben descargar las clavespúblicas y las estadísticas de disponibili-dad para los servidores anónimos.Muchos operadores de un servidor anó-nimo publican estos datos en sus sitiosweb [7]. El paquete Mixmaster deDebian incluye un guión de Perl llamadomixmaster-update. El guión descargaautomáticamente los archivos necesa-rios y está diseñado para trabajar comouna tarea cron o como parte de delguión IP-up. Después de descargar losarchivos y de almacenarlos en/var/lib/mixmaster/stats/, ya puedeteclear mixmaster y arrancar el progra-ma (véase el Cuadro 1).
Dentro del programa, los usuarios pue-den componer, leer, y enviar mensajes.Por ejemplo, si se necesita enviar unmensaje de correo electrónico,se le pide al usuario querellene los camposremitente yasuntodel
Email anonimo •
mensaje cuando se pulsa la tecla [M].Pulsar [E] en el menú de enviar permitecomponer el mensaje. Se vuelve al menútras terminar el mensaje. Por omisión,el programa selecciona automática-mente una cadena de cuatro servido-res anónimos, aunque los usuariospueden teclear [C] para definiruna cadena de servidores anónimos(Cuadro 2).
El Cuadro 2 muestra servidores anóni-mos y sus valores de fiabilidad. Estaestadística es solamente una instantáneay se puede esperar una cierta desviación,así que estos valores se deben utilizarsolamente como un indicador aproxima-do. Después de seleccionar una cadena,se puede enviar el mensaje o el conjuntode mensajes presionando [M] y despuéspasar a componer otro mensaje si fuesenecesario. Cuando se han acumuladobastantes mensajes, o si un usuarioemite un comando a tal efecto, el progra-ma envía los mensajes a las otras esta-ciones en la cadena.
En definitiva, Mixmaster es muy fácilde usar y tiene un interfaz de usuarioauto-explicativo. Los recién llegados nodeben tener ningún problema para con-seguir acostumbrarse a usar el softwarey a enviar mensajes anónimos siempreque necesiten hacerlo.
Pros y Contras del CorreoAnónimoEn una sociedad plural, la comunica-ción anónima tiene connotaciones sór-didas. La gente tiende a pensar en acu-saciones, amenazas de bombas, correobasura o documentos ilegales. Sinembargo, los servidores de correo anó-nimos solamente cumplen con un requi-sito para la seguridad de la infraestruc-tura de TI, que es, la que oculta elhecho de que la comunicación estáteniendo lugar. Hay muchas razoneslegitimas para querer ocultar la comuni-cación a la opinión pública. Por ejem-plo, un repentino incremento del volu-men de correo electrónico entre dos
compañías puede dar pistas sobreque las compañías estén conside-
rando una posible asociación,aunque el contenido de los
mensajes esté cifrado.Miembros de grupos radica-
les, defensores de reformasen países autoritarios o personas
con enfermedades graves estigmatiza-
das porla sociedad,también desearánproteger su anonimato.
Por otra parte, no hay que negarel potencial que tiene el envío de correoanónimo para hacer cosas inadecuadas.Los grupos de presión y las autoridadesde correo electrónico se apresuran a pre-cisar el posible abuso y la controversiaresultante ha provocado llamamientospara prohibir los servicios de anonimato.Johan Helsingius, el hombre detrás delremailer, afirma que nunca ha utilizadoel servicio que inventó. Sin embargo,para él era importante desarrollar unatecnología que diera soporte al anonima-to y que permitiera a los usuarios ejerci-tar su derecho a la libertad de opinión. Yeste acceso al correo electrónico anóni-mo aun está disponible en los servidoresanónimos alrededor del mundo. �
55Número 07W W W . L I N U X - M A G A Z I N E . E S
[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/
RECURSOS
Figura 2: El cliente Mixmaster muestra un
resumen de servidores anónimos disponi-
bles.
DESARROLLO • Perl
56 Número 07 W W W . L I N U X - M A G A Z I N E . E S
va. Y perl tiene un depurador que localiza
rápidamente los errores aplicando puntos
de ruptura, acciones y puntos de vigilan-
cia (watchpoints).
Ejecución de PruebasEl programa de ejemplo wsrv (descarga-
ble desde [1]), nos dice que tipo de ser-
vidor 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 ini-
ciar el modo de linea de ordenes con
perl -d y después añadir la ruta al guión
y sus argumentos. En este caso, debere-
mos teclear: perl -d wsrv http://micro-
soft.com. El depurador arrancará y pre-
guntará al usuario por las ordenes des-
pué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>
ALinus 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 des-
pué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 depura-
ción apropiado dentro de una aplicación
y realizar actividades de depurado remo-
to.
Sin embargo, hay ocasiones donde un
programador no tiene ninguna alternati-
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 nues-
tra entrega mensual de Perl, echamos
un vistazo al depurador integrado en
Perl. POR MICHAEL SCHILLI
Perl • DESARROLLO
57Número 07W W W . L I N U X - M A G A Z I N E . E S
depurador que continúe ejecutando el
código hasta donde termina la función
actual y que vuelva al programa principal.
Entonces se para automáticamente:
list context return U
from
LWP::Simple::head: 0
‘text/html’
1 16144 2 1107018115
3 1107028115 4
‘Microsoft-IIS/6.0’
main::(wsrv:9):
print U
“Server:$fieldsU
[3 ] \n”;
El depurador es tan atento que nos da
inmediatamente los valores de retorno de la
función head() antes de mostrar la siguien-
te 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á Microsoft-
IIS/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 depu-
rador maneja las estructuras más comple-
jas sin esfuerzo:
DB<2> x @fields
0 'text/html'
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 direc-
tamente dentro del depurador:
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 valor-
clave en vez del estilo estructura, simple-
mente 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 histo-
rial, 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 realImaginemos que un programador acaba
de terminar un módulo llamado Foo::Bar
y quiere preparar el módulo para publi-
carlo 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:
Pulsando n (de next) en el prompt
se ejecuta silenciosamente la pri-
mera sentencia, extrayendo la
URL de la estructura del argumen-
to @ARGV y dejándola en $url.
Desde n solamente se ejecutara
una única sentencia, luego el
depurador se parará antes de eje-
cutar la siguiente linea:
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
se compone de las líneas 10 y 11
de wsrv. En vez de ejecutar la línea com-
pletamente con n, vamos utilizar s (por
step) para echar una ojeada más de cerca
a lo qué está ocurriendo dentro del códi-
go. Como podemos ver, el depurador pri-
mero se zambulle de cabeza en la función
principal dentro del módulo LWP::Simple
al que se ha llamado en la línea 10:
LWP::Simple::headU
(.../LWP/Simple.pm:70):
70: my($url)=@_;
70==>my($url) = @_;
La orden l (de list) muestra algunas de las
siguientes lineas:
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 pulsa-
mos 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 comienzoDespué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
Figura 1: El GUI DDD integra el depurador de 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 vista-
zo 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 para-
rá en la linea 606. Pero teniendo un punto
de ruptura permanente podremos volver
más tarde fácilmente.
La orden push mostrada en la siguien-
te línea del código de fuente anterior
aparece para añadir el resultado de una
llamada a una estructura desde un méto-
do. Puede ser que sea interesante descu-
brir a que método llama $method Para
averiguar eso, usamos p $method, que
imprime post_initialize; que
realmente no nos da un
conocimiento más profun-
do.
El depurador Perl ejecuta
la linea actual cuando tecle-
amos n; pero no reacciona.
n ejecuta la linea pero no
obtenemos la advertencia
que esperábamos. Parece
como si MakeMaker ejecu-
tase la linea varias veces y
emitiera el error en la enési-
ma iteración.
Antes tecleamos c (conti-
nue) para movernos a la
siguiente iteración, (parán-
donos otra vez en el punto
de ruptura de la linea 606)
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}},
$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 AdvertenciasPero todavía no hay rastro de la adverten-
cia. 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 […] static-
make test ppd WARNING: Setting ABS-
TRACT ßß via file ‘lib/somehowßß /any-
way.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 tran-
quilos, tecleando R permitirá que reco-
mencemos el programa desde el princi-
pio. 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 depura-
dor 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-
DESARROLLO • Perl
58 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 =head1 NAME
02
03 Foo::Bar - Blah blah blah
04
05 =head1 SYNOPSIS
06
07 useFoo::Bar;
Listado 2: Módulo de ejemplo
Orden Significa
Controlar el flujo del programa
n Ejecuta la siguiente linea y para
s Avanza a la siguiente linea, para en la
subrutina
r Finaliza la función actual, regresa y para
R Vuelve al comienzo y vuelve a ejecutar
Mostrando variables
p Valor de la salida
x Volcado (x \%hash)
Navegando por la fuente
l Desplaza hacia adelante
- Desplaza hacia atrás
v Muestra el código circundante a la linea
actual
. Vuelve a la linea actual
f Cambia a otro archivo fuente
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
Tabla 1:Ordenes del depurador
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
Uti l s : :MM_Unix . Para descubr i r
es te error, necesitamos que el pro-
grama 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ódu-
lo ExtUtils::MM_Unix. Tras pulsar l para
echar un vistazo alrededor, descubri-
mos 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 conti-
nú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 resu-
men 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 $packa-
ges 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 nece-
sita estar en la línea
seguido de un solo espa-
cio y un guión. Puesto
que la línea 3 en el listado
2 está identada, con el nombre siguiendo
la identación, la extracción falla.
Interfaz Gráfico de UsuarioSi 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 prin-
cipales distribuciones de Linux. Lo
siguiente llama a wsrv en ddd para exa-
minar 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 mues-
tren correctamente formateadas ajustán-
dose al formato de la GUI. Como alterna-
tivas, 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.
TrazasPor ultimo, simplemente un pequeño
truco para mostrar como se consigue eje-
cutar cada línea de código por un guión.
La variable de entorno de PERLDB_OPTS
controla el trazado del depurador, con
solo agregarlo a la línea de ordenes antes
de llamar al depurador:
PERLDB_OPTS="NonStop=1U
AutoTrace=1 frame=2 "U
perl -d Sprogram
La opción AutoTrace cambia el depura-
dor al modo de trazado, donde muestra
cada línea del código fuente antes de eje-
cutarla. 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 ulti-
mo, 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 perl-
debtut se muestra la página del manual.
En perldebug encontrará documentación
más detallada y si realmente desea obte-
ner los pormenores de la depuración,
examine perldebguts. �
Perl • DESARROLLO
59Número 07W W W . L I N U X - M A G A Z I N E . E S
[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
RECURSOS
Figura 2: El depurador gráfico Ptkdb está basado en Perl/Tk
y es fácil de instalar desde CPAN.
Python • DESARROLLO
61Número 07W W W . L I N U X - M A G A Z I N E . E S
En Java, en general, para reproducir un
sonido es necesario definir varias partes:
Obtener el stream de audio, descodificar-
lo, tratarlo y escribirlo en el dispositivo de
nuestro PC.
RequisitosComo 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
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 ins-
talar el JDK 1.5, este directorio se encuen-
tra en /usr/Java/jdk1.5.0_02/jre/lib/ext/ y
debemos copiar aquí (obviamente como
root) los paquetes mp3spi1.9.2.jar, y den-
tro del directorio lib, jl1.0.jar y
tritonus_share.jar.
Una vez hecho esto, al arrancar el intér-
prete de Jython nos aparecerá un mensaje
por cada archivo que hemos copiado,
indicando que dicho paquete se está pro-
cesando para su uso (justo antes de arran-
car nuestro intérprete). Para confirmar
que todo es correcto, en el interprete
introducimos import Javazoom y no debe-
ría salir ningún mensaje de error (en caso
de que así fuera, comprobad que los
archivos están copiados en el sitio correc-
to).
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
El 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 repro-
ductores de música, ya sea en el ordena-
dor, 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 bas-
tante complicado. Se necesita mucho
tiempo para realizar el descodificador
del formato (MP3 en este caso) que pro-
cese los datos (conocidos como stream
de audio) que contiene cada canción
codificada en este formato. Por eso, lo
mejor para poder crear nuestro reproduc-
tor, es utilizar librerías que ya estén pre-
paradas para descodificar el stream y
para que podamos reproducirlo. En este
caso utilizaremos librerías bajo la licen-
cia LGPL (Lesser General Public
License).
JUKEBOX CON JYTHON
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
DESARROLLO • Python
62 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 import org.tritonus.share.sam-
pled.TAudioFormat as taf
02 import org.tritonus.share.sam-
pled.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 = sam-
pled.AudioSystem.getAudioFileF
ormat(archivo)
31 baseFormat =
baseFileFormat.getFormat()
32
self.getTag(baseFileFormat)
33 self.player.play()
34
35 def getTag(self,
baseFileFormat):
36 properties = ftaf.pro-
perties(baseFileFormat)
37 key = "author"
38 val =
properties.get(key)
39 key = "title"
40 tag=
properties.get(key)
41 key = "album"
42 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 def
panelReproductor(self):
52 self.pnlBoton =
swing.JPanel(awt.FlowLayout())
53 self.pnlBoton2 =
swing.JPanel(awt.FlowLayout())
54 acciones = ["Play",
"Stop"]
55 self.txtArea =
swing.JTextArea(6,18)
56 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",
"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 = selec-
tor.getSelectedFile()
76 self.player =
pad.AdvancedPlayer(io.FileInpu
tStream(archivo))
77 self.nombre=archi-
vo.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()
Listado 1: jython-julebox.py
applets. Una de las limitaciones de CLIP,
es que necesita cargar el sonido entero en
memoria antes de reproducirlo lo cual
aumenta los recursos utilizados, además
de que sólo está preparada
para reproducir los formatos
típicos en Java (Wav, A-Law,
U-Law, etc.). Nosotros utili-
zaremos un SourceDataLine
y trabajaremos con un
pequeño Buffer que llenare-
mos con el stream de sonido
descodificado que luego
introduciremos en nuestro
dispositivo de sonido.
Los pasos que seguiremos para tratar el
sonido serán los siguientes. Primero,
obtendremos el Stream y el formato de
sonido (utilizando AudioSystem y sus
métodos getAudioInputStream, y
getAudioFileFormat). Además, del forma-
to de audio (AudioFormat) leeremos los
datos del MP3 (el título, el álbum, el
autor, etc…).
Una vez obtenido
todo esto (el descodifi-
cador ya esta haciendo
su trabajo), necesitare-
mos crear el buffer,
que no es otra cosa
que un array de Bytes.
Para crear dicho array.
Jython nos provee de
un modulo llamado
jarray que tiene dos
constructores: zeros y
array. El primero crea un array inicializa-
do a 0 del tamaño y del tipo que nosotros
necesitemos y el segundo crea un array ya
inicializado (por nosotros) de un tipo de
datos.
Veamos una ejemplo del uso de Jarray.
>>> import jarray
>>> a = jarray.zeros(4,'i')
>>> print a
array([0, 0, 0, 0], int)
>>> b = jarray.array([1,2,3,4],U
'i')
>>> print b
array([1, 2, 3, 4], int)
Como podéis ver el funcionamiento es
sencillo. Jarray.zeros recibe dos argumen-
tos que son el numero de elementos y el
tipo de datos, en este caso 'i' son enteros
(integer). Y jarray.array recibe la secuen-
cia que forma el array y el tipo de datos
también. Para nuestro buffer necesitamos
un array de 4096 Bytes que crearemos
usando jarray.zeros(4096,'b'). Si quisiéra-
mos que nuestro array fuera de Strings,
haríamos un jarray.zeros(45,Java.
lang.String). En caso de que necesitára-
mos (que, de hecho, necesitamos) pasar
como argumento la longitud de nuestro
array a un método, haríamos len(array)
ya que los arrays de Jython no tienen un
método como .length() de los arrays de
Java.
Por ultimo, crearemos el
SourceDataLine y desde su método
write() escribiremos nuestro sonido en
nuestro dispositivo de audio (entonces ya
empezaremos a oír música) y luego basta-
ra con rellenar el buffer (desde nuestro
AudioInputStream) y volver a escribirlo
en nuestro dispositivo de sonido hasta
que lleguemos al final de la canción o
hasta que paremos la reproducción.
Finalmente, y dado que vamos a usar
un pequeño interfaz para manejarnos
(hecho con swing),
necesitaremos progra-
mar Java con hilos
(Thread), por lo que
nuestro reproductor
heredara de la clase
Thread y en el
momento de reprodu-
cir, se lanzará un hilo
que será el encargado
de reproducir la músi-
ca mientras seguimos
teniendo el control en
nuestro pequeño reproductor. Un Thread
es una secuencia de instrucciones que se
ejecuta en paralelo con la aplicación que
lo invoca, podríamos decir que mientras
nosotros usamos nuestra aplicación, lan-
zamos otra pequeña aplicación que repro-
ducirá nuestro sonido sin interferir en la
primera (ejecución en paralelo).
Métodos y LibreríasVamos a implementar un total de once
métodos. Empezaremos describiendo el
motor del reproductor y terminaremos
describiendo los de creación del interfaz.
Son cuatro métodos.
• Run(). Desde este método es de
donde comienza el proceso del
tratamiento de nuestro fichero
MP3. Desde aquí obtendremos
el InputStream y el AudioFormat
y una vez que los tengamos,
pasaremos a llamar al siguiente
método (Reproducir() ha de lla-
canciones -artista, álbum, etc.- y algunas
cosas más).
Nos falta un último paso: Debemos eli-
minar una de las limitaciones de Jython.
Java tiene distintos tipos de
variables, métodos, cons-
tructores, etc., que pueden
ser privados (private) o
públicos (public). Es impor-
tante saber que en Jython no
se pueden declarar variables,
métodos, etc., como públicas
ni como privadas y cuando
intentamos acceder, por
ejemplo, a una interfaz abs-
tracta privada, nos saltará un mensaje de
error diciendo que no es posible acceder a
la interfaz abstracta con el denominador
public.
Solventar esta limitación es sencillo.
Basta con editar el fichero de registro de
jython que se encuentra en el direc-
torio d o n d e h aya m o s i n s t a l a d o
j y t h o n ( e n nuestro caso $HOME/
Desarrollo/jython-2.1/registry) y bus-
camos la línea python.
security.respectJavaAccessibility = true y
cambiamos true por false. Ya tenemos
nuestro sistema preparado.
Por último, es muy importante tener a
mano la API (documentación) de Java
disponible también en su web y la de las
librerías que vamos a utilizar. De
Javazoom deberéis bajar la documenta-
ción de JLayer (la de MPSPI viene en el
fichero que bajasteis al principio) y la API
de las librerías tritonus la podéis bajar de
[4] (están al final de la página).
¿Sonido en Java?El sonido de Java requiere que los progra-
madores conozcan como funcionan sus
clases principales. Las que vamos a utili-
zar son AudioSystem, AudioFormat y
SourceDataLine. AudioSystem está conec-
tada a los dispositivos del sistema de
forma que podemos acceder a ellos ade-
más de que dentro de ella tenemos méto-
dos para tratar el stream de audio.
AudioFormat con el que manejaremos el
formato de audio que necesitaremos. Y
SourceDataLine que nos proporciona la
entrada al dispositivo de sonido, es decir,
que podremos introducir nuestro sonido
en el dispositivo y de esta forma escu-
charlo).
Java proporciona una clase más directa
que es CLIP. Suele utilizarse más para
sonidos pequeños en aplicaciones o en
Figura 1: Aquí tenemos
a nuestro pequeño
reproductor de MP3.
Figura 2: Este es el selector de
ficheros (JFileChooser) que se lan-
zará al ejecutar su método
showOpenDialog().
Python • DESARROLLO
63Número 07W W W . L I N U X - M A G A Z I N E . E S
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 creare-
mos el SourceDataLine (que
recibimos desde el método
getLine que definiremos un poco
más adelante). Luego entrare-
mos en un bucle en el que con-
taremos los bytes que leámos y
los bytes que escribamos, y
desde el que leeremos (llenando
el buffer) desde el AudioInputS-
tream 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), ten-
dremos 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 mos-
trará la información del MP3, el creador
del menú (menu()) que creará un menú
con dos opciones (play y stop) que reali-
zarán las mismas funciones que los boto-
nes, el recogedor de los eventos del ratón
(accionMenu()) que ejecutará los meto-
dos Play y Stop, el método Play() que ini-
ciara el hilo que reproducirá la canción,
además de lanzar el selector de ficheros y
el método Stop() que detendrá la repro-
ducció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 selecciona-
remos 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 alma-
cenar datos en ficheros, con eso sabréis
ponerle una lista de reproducción a nues-
tro 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 fiche-
ros 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ípi-
co en las aplicaciones Python y Jython
que inicializará los valores de la aplica-
ció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 boo-
leanas 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.sam-
pled.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 cla-
ses 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,
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 ubica-
ció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 PosibleSí, 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 nece-
sidades (como el tamaño del buffer). En
las librerías que hemos instalado de
Javazoom, en JLayer concretamente, exis-
te 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. �
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
LOS
AU
TO
RE
S
[1] http://www.jython.org
[2] http://www.Javazoom.net
[3] http://Java.sun.com
[4] http://www.tritonus.org
[5] Descargas de http://www.linux-
magazine.es
RECURSOS
DESARROLLO • Python
64 Número 07 W W W . L I N U X - M A G A Z I N E . E S
La herramienta de monitorización
Smokeping está en la lista de paque-
tes 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 confi-
guració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 defec-
to 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 compa-
rar. Las entradas separadas por comas son
para el porcentaje de paquetes perdidos.
Por defecto, Smokeping realiza pings a la
tarjeta veinte veces cada cinco minutos.
Si los paquetes se pierden en tres pings
consecutivos, Smokeping dispara el resor-
te.
Feliz Ping-eadoEl segundo ejemplo se ha tomado tam-
bié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 valo-
res 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 secuen-
cia de múltiples RTTs de más de 100 mili-
segundos 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 ser-
vidores. 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 herra-
mienta 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. �
65
La Columna de Charly • ADMINISTRACIÓN
65Número 07W W W . L I N U X - M A G A Z I N E . E S
[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
RECURSOS
Charly Kühnast es Ge-
rente de Sistemas Unix
en el centro de datos
de Moers, Alemania
cerca del conocido
Rhin. Entre sus labores
se incluye la seguridad del corta-
fuego, la disponibilidad y cuidado
del DMZ (zona desmilitarizada).
EL
AU
TO
R
Taller del Administrador: Backups…66
Sus datos nunca se perderán si imple-
menta una estrategia correcta de
backup.
Alta Disponibilidad para VPNs……...68
Switch transparente para un túnel de
seguridad sin perturbar conexiones
VPN.
SYSADMIN
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
El día a día del Administrador de Sistemas: Smokeping
MENOS HUMOS
Figura 1:El CGI muestra los resultados de
Smokeping.
66
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 fren-
te 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.
FormatosLos administradores no se ponen de
acuerdo en los pros y contras de guardar
los ficheros simples tal cual, o bien guar-
dados dentro de archivos que los conten-
gan, con un formato estructurado, meta-
datos y checksum.
Los ficheros simples se recuperan más
rápidamente, y si el medio de almacena-
miento sufre un fallo sólo quedará afec-
tado 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 informa-
ción acerca del propietario, permisos de
acceso y marcas de tiempo junto con el
fichero propiamente dicho. Incluso pode-
mos hacer copia de seguridad de disposi-
Storage) para añadir capacidad a sus dis-
cos duros.
Del mismo modo que existen distintos
medios de almacenamiento, existen tam-
bién diferentes estrategias de backup. En
la mayoría de los casos, los administra-
dores optan por backups incrementales,
que guardan sólo los cambios ocurridos
desde la última copia. Este método per-
mite 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 tiem-
po 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 dife-
rencial, en el cual siempre se guarda los
cambios respecto a la última copia com-
pleta. La Figura 1 ilustra los tres méto-
dos.
Off-line, on-line, “encaliente”La elección del método de backup puede
depender de las circunstancias en las
que se recuperarán los datos. Si el fiche-
ro que necesita un usuario está en una
cinta dentro de un armario, el proceso
para recuperarlo puede llevar tiempo y
esfuerzo.
Debido a la amplia tipología de
requerimientos en lo concernien-
te 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 inconve-
nientes. En el artículo de este mes de
taller de administración, describiremos
algunas técnicas y herramientas básicas
de backups.
Alternativas de backupsLa cinta magnética ha sido durante
mucho tiempo el medio de almacena-
miento 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 esca-
sa velocidad es probablemente su mayor
desventaja. Una solución basada en cin-
tas y un jukebox suele ser la mejor para
backups automatizados. Aún así, las cin-
tas magnéticas suelen ser demasiado
caras para entornos domésticos o de ofi-
cinas 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
Los datos siempre acaban
perdiéndose en el peor
momento, pero con una
estrategia de copias de seguri-
dad adecuada no tendremos
problemas para restablecer
los archivos perdidos.
POR MARC ANDRÉ SELIG
Administración: Backups
RIESGOSLABORALES
ADMINISTRACIÓN • BackUps
66 Número 07 W W W . L I N U X - M A G A Z I N E . E S
tivos especiales del directorio
/dev/. Señalar también que las
cintas magnéticas no están
orientadas a almacenamiento
de ficheros individuales.
Algunos programas, como tar
y cpio, intentan un término
medio. Si un archivo cpio resulta
dañado, quedan afectados sólo
los ficheros guardados en la
zona dañada. El programa vuel-
ve a sincronizar desde la siguien-
te marca de fin de fichero, y
todos los ficheros que le siguen
se recuperan sin problemas.
Al tratar este tema, también
hemos de considerar la compre-
sión y la encriptación de los
ficheros. La característica de
resincronización de cpio que
hemos comentado sólo funciona
para backups sin compresión. Si un error
nos impide descomprimir un archivo con-
tenedor, cpio no nos será de gran ayuda.
La popular herramienta gzip se cierra
en caso de leer errores, por lo que es una
mala elección para hacer copias de segu-
ridad. (zcat al menos descomprime el
archivo hasta el punto donde aparece el
error de lectura). La alternativa, bzip2,
comprime y descomprime los ficheros en
bloques de 900 kbytes como mucho. Si
sufrimos un error de lectura, probable-
mente sólo perdamos un bloque, salván-
dose de este modo los bloques anteriores
y posteriores.
Los administradores también se
encuentran ante un dilema similar con la
encriptación de datos. La mayoría de los
programas de encriptación usados en bac-
kups nos impedirán acceder a los datos si
sufrimos un error. Una manera de solucio-
narlo podría ser comprimir y descompri-
mir cada fichero de manera individual
dentro del archivo contenedor. La herra-
mienta afio es una alternativa a cpio a
este respecto, ya que puede manejar la
encriptación individualizada de los fiche-
ros.
Backup con CDUna solución backup con cinta magnéti-
ca como Amanda (véase cuadro 1)
puede ajustarse a entornos menores,
pero sigue estando orientada preferente-
mente a grandes sistemas. Para
usuarios domésticos, o peque-
ñas empresas puede que les sea
más que suficiente un backup
basado en CD o DVD. En com-
paración con las cintas magné-
ticas, los CDs y DVDs son extre-
madamente baratos y tienen un
ciclo de vida bastante largo.
El listado 1 muestra un senci-
llo script para hacer backups,
que utiliza gpg para encriptar
los datos y guarda un checksum
MD5. Si se pierde el CD, al
menos no tenemos que preocu-
parnos de que accedan a los
datos indebidamente. Podemos
modificar el script para poder
usar memoria flash, o un disco
duro externo.
El Camino a SeguirUn sistema de backups es tan bueno
como lo sean los datos guardados en el
medio de almacenamiento. Y estos datos
no tienen que ser necesariamente los
que debían de haberse guardado. Por lo
tanto tiene mucho sentido verificar los
backups para comprobar que pueden
leerse y que son los datos adecuados
cada cierto tiempo.
Asimismo, deberíamos asegurarnos de
que los usuarios son capaces de recupe-
rar los datos por sí mismos. No hay nada
peor que tener la necesidad de recuperar
un backup configurado por otra persona
hace mucho tiempo, y no ser capaces de
hacerlo porque esta persona ya no está
en la empresa.
El caso de pérdida total de los datos
conlleva otras muchas consideraciones.
Como el propio sistema operativo proba-
blemente no estará disponible, tiene sen-
tido prever un sistema de rescate. Este
sistema podría arrancar desde un CD o
disco duro externo y permitiría al admi-
nistrador recuperar todos los datos desde
allí. Por supuesto, este tipo de soluciones
requiere de una buena planificación y
algo de práctica. �
BackUps • ADMINISTRACIÓN
67Número 07W W W . L I N U X - M A G A Z I N E . E S 67
Figura 1: Un backup completo guarda todos los ficheros, un bac-
kup diferencial guarda todos aquellos ficheros modificados desde
el último backup completo y un backup incremental guarda todos
los ficheros modificados desde el último backup, ya fuese este
incremental o completo.
01 #!/bin/sh
02
03 [ `id -u` -eq 0 ] || ( echo
'Must be root to write a
CD/DVD!' && exit )
04
05 TODAY=`date +%Y%m%d.%H%M`
06 MYKEY='0x598342d9'
07
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 | \
14 tee
/tmp/root/backup-$TODAY/backup
-$TODAY.tar.gpg | \
15 md5sum -b
>/tmp/root/backup-$TODAY/bac-
kup-$TODAY.tar.gpg.md5
16
17 cd /tmp/root
18 mkisofs -r -pad -o backup.iso
19 backup-$TODAY
20 cdrecord -v -eject -multi
dev=0,0,0 -driveropts= burn-
proof -speed=24 -pad
backup.iso
21
22 rm -rf backup-$TODAY
backup.iso
Listado 1: Script simple para Backup
[1] Afio: http://directory.fsf.org/sysadmin/
backup/afio.html
[2] Amanda: http://www.amanda.org
[3] Amanda para Windows: http://
sourceforge.net/projects/
amanda-win32/
RECURSOS
68
esta solución, se necesitan dos túneles
independientes paralelos; sólo se utiliza-
rá uno de estos túneles en cada momen-
to 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 reconfi-
guración automática de direcciones IP
para apoyar esta configuración.
Ambos nodos HA tiene una dirección
individual y otra compartida. La direc-
ción compartida sólo la utiliza una de las
máquinas en cada momento determina-
do. El mecanismo está diseñado para
servidores operativos (Web, email,…)
con una dirección compartida. El servi-
cio 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 pri-
mera máquina está caída.
Un cable serie proporciona el heartbe-
at para las dos máquinas. El heartbeat es
una parte importante de Linux-HA, ya
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 dispo-
sitivos de la red detectar un fallo en la
línea y conmutar automáticamente. El
sistema automático ideal también gene-
raría la configuración para ambos extre-
mos haciendo referencia a una configu-
ració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-HAEl proyecto LINUX-HA [5] pretende
aportar soluciones de alta disponibilidad
para servidores Linux. Este software per-
mite a los administradores configurar
una VPN de alta disponibilidad (que no
requiere BGP) que conmutará desde el
sistema estándar a operaciones de bac-
kup de forma rápida. Para implementar
Los administradores a menudo
desean que el sistema de conexión
de la red conmute transparente-
mente a un sistema de backup si la cone-
xió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 cone-
xión de Internet existente.
La solución es que, muchos adminis-
tradores prescinden de la automatización
y si ocurre lo peor, conmutar manual-
mente de la línea estándar a la línea de
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
Alta Disponibilidad para VPNs
RUTAS ALTERNATIVASAlta Disponibilidad para VPNs
RUTAS ALTERNATIVAS
ADMINISTRACIÓN • VPN
68 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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
primer ordenador. Genera una transmi-
sión ARP usando una dirección IP com-
partida y su propia dirección MAC en la
LAN (y realiza una especie de ARP-
Spoofing 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 inter-
faz del alias de nuevo, mientras el
Servidor 1 habilita su interfaz y la trans-
misión ARP en la LAN.
Dos Instalaciones Linux-HAEl escenario de la Figura 1 muestra al
cliente a la izquierda y a la empresa a la
derecha. El lado de los clientes (izquier-
da, gw-aa) y el lado del proveedor de ser-
vicios IPSec (derecha, gw-ba) utilizan
ESP (Encapsulating Security Payload y el
protocolo IPSec) para enviar paquetes a
VPN • ADMINISTRACIÓN
69Número 07W W W . L I N U X - M A G A Z I N E . E S 69
01 #!/bin/bash
02 # Supervisor HA VPN en gw-aa
03
04 # El otro extremo del túnel
05 TARGET="gw-ba"
06
07 # 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 vuel-
va 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/HA-
VPN-action-script stop"
24
25 PING=/usr/bin/echoping
26 LOG="/usr/bin/logger -t
HA-VPN"
27
28 math () {
29 eval echo "\$(($*))"
30 }
31
32 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
53 FAIL=`math $FAIL + 1`
54 fi
55 fi
56 else
57 # Ping con éxito
58 if [ $FAIL -gt $MAXFAIL ];
then
59 FAIL=`math 0 - $HYSTERE `
60 fi
61 if [ $FAIL -le $MAXFAIL -a
$FAIL -ge 0 ] ; then
62 FAIL=0
63 fi
64 if [ $FAIL -lt 0 ] ; then
65 # Espera un período de histé-
resis
66 echo "$DAT $ERROR $FAIL $VAL"
| $LOG
67 FAIL=`math $FAIL + 1`
68 if [ $FAIL -eq 0 ] ;then
69 # Restaura las operaciones
normales
70 :
71 echo "$DAT normal de nuevo:
${ACTION_OK_AGAIN}"| $LOG
72 ${ACTION_OK_AGAIN}
73 fi
74 fi
75 fi
76 #echo "$DAT $ERROR $FAIL $VAL"
| $LOG
77 sleep $TIMEOUT
78 done
79 # never happens:
80 exit 0
Listado 1: Supervisor HA VPN
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.
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, gw-
bb) de manera parecida al Túnel 1.
Linux-HA se está ejecutando entre gw-
aa 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ósi-
to y es independiente de la red, IPSec e
IPtables. Ambas instalaciones HA traba-
jan separadamente e independientemen-
te el uno del otro. En operaciones nor-
males, gw-aa y gw-ba tienen una direc-
ció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 adicional-
mente direcciones IP estáticas en sus res-
pectivas LANs; esto es 10.31.0.252 para
gw-bb por ejemplo.
Script HA-VPNLa 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 compo-
nente 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 gw-
aa y gw-ab esté activa, el contador FAIL
estará siempre a cero. Si el comando
ping falla, el script incrementa la varia-
ble FAIL en la línea 53, mientras el valor
esté por debajo de MAXFAIL. Si el
siguiente ping es correcto, el script esta-
blece 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, provocan-
do que la puerta de enlace de backup
automáticamente adopte la dirección IP
del router local.
Esperando las OperacionesNormalesEl bucle infinito se mantiene en ejecu-
ción, esperando en la línea que realiza el
backup y la señal del ping para volver al
valor normal de 0. Cuando llega la pri-
mera 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 fluc-
tú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 minu-
tos es un buen valor para asegurar las
operaciones estables.
La experiencia adquirida nos indica
que si el heartbeat en uno de los extre-
mos del túnel bloquea la puerta de enla-
ce, el otro extremo continúa después de
un retraso de unos segundos.
Satisfacción GarantizadaEsta solución ha estado ha estado dispo-
nible en Internet desde el 2004 y ha
demostrado repetidamente que los usua-
rios que lo utilizan ni se dan cuenta de
los cortes en el router del lado del pro-
veedor. 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. �
[1] RFC 2401: http://www.ietf.org/rfc/
rfc2401.txt
[2] Freeswan: http://www.freeswan.ca/
code/super-freeswan/
[3] RFC 1745: http://www.ietf.org/rfc/
rfc1745.txt
[4] SSPE: http://sspe.sourceforge.net
[5] Linux-HA: http://www.linux-ha.org
RECURSOS
ADMINISTRACIÓN • VPN
70 Número 07 W W W . L I N U X - M A G A Z I N E . E S
01 #!/bin/bash
02 # HA-VPN-Aktionsskript
03
04 #VERBOSE=-v
05 VERBOSE=""
06
07 NAME=`basename $0`
08 LOG="/usr/bin/logger -t
HA-VPN"
09
10 PARAMETER_FAULT=0
11
12 if [ $# -ne 1 ] ; then
13 PARAMETER_FAULT=1
14 else
15 PARAMETER=$1
16 case $PARAMETER in
17 start) ;;
18 stop) ;;
19 *)
20 PARAMETER_FAULT=1 ;;
21 esac
22 fi
23
24 if [ $PARAMETER_FAULT -ne 0 ];
then
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
Listado 2: Script de Acción de HA-VPN
7171ISSUE 52 MARCH 2005W W W . L I N U X - M A G A Z I N E . C O M
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 uti-
lizar software estándar de una manera más eficiente, adquiriremos valiosos
conocimientos y descubriremos apasionantes nuevas aplicaciones.
KTools: Basket . . . . . . . . . . . . . . . . . . . . . . . 72Basket 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 . . . . . . . . . . . . . . . . . . . . . . 74WMI es un gestor de ventanas elegante y rápido con un
buen soporte para el control por teclado.
KoolDock y KXDocker . . . . . . . . . . . . . . . . . 76Si el panel de KDE no te parece suficientemente espectac-
ular, 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 denomi-
nado Kim, se puede modificar y manipular ficheros de
imágenes desde un menú contextual.
Educación: Accesibilidad (II) . . . . . . . . . . . 82En esta segunda parte dedicada al estudio de las tec-
nologías de accesibilidad en Linux, nos concentramos en
la tiflotecnología.
Línea de Comandos: Navegadores . . . . . . . 87Si 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.
Basket es la herramienta perfecta
para cazadores y buscadores de
información que necesiten una
manera de ordenar información impor-
tante con un solo clic. Basket funciona
como una cesta virtual en nuestro escri-
torio 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 progra-
ma, por lo que si lo vamos a usar, merece
la pena visitar periódicamente la página
del proyecto para verificar la última ver-
sió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ódi-
go fuente, encontraremos también paque-
tes 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 com-
pilar: confi-
gure, make y make install configura las
variables de entorno, compila el código
fuente e instala el programa respectiva-
mente. 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 ter-
minal.
MateAñadir datos a Basket es tan
fácil como poner una mone-
da en una cesta. Basket es
una más de las aplicaciones
de KDE con soporte “arras-
trar y soltar”. Si queremos
guar-
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
72
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
LINUX USER • KTools
72 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Guardar, ordenar y catalogar con Basket
CANASTA VIRTUAL
73
KTools • LINUX USER
73Número 07W W W . L I N U X - M A G A Z I N E . E S
hexadecimal HTML, lo cual es útil si
solemos olvidar los valores de color de
páginas que visitamos.
Basket añade y organiza los documen-
tos a la colección, permitiéndonos acce-
der 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 nues-
tra cesta.
Además de este sistema de cestas,
Basket también nos proporciona meta-
datos como otra utili-
dad para llevar la
cuenta de nuestra
colección de informa-
ción. Podemos añadir
los detalles clave para cualquier ima-
gen, texto o enlace. El metadato apare-
cerá cuando posemos nuestro ratón
encima de cualquier entrada. Para con-
figurar la opción de metadato, pulsa-
mos el botón derecho sobre el objeto
del que queramos especificar el meta-
dato, y seleccionamos la opción del
menú Edit Meta-data…, y añadimos el
comentario.
Cuestión de GustosAl 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 ejem-
plo, podemos definir aspectos como el
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 anima-
ciones. 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.
Listas de Comprobación yMás…Basket tiene funcionalidades para ayudar-
nos 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 entra-
da, 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 informa-
ción a código HTML. Para ello, seleccio-
namos una lista y pulsamos sobre Basket
| Export to HTML en el menú. Si lo nece-
sitamos, 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 docu-
mentos, imágenes y enlaces, en un lugar único y fácilmente
accesible.
Figura 2: Podemos organizar la lista de obje-
tos como lista de chequeo.
Figura 3: Configuración de Basket con el menú Settings.
Stefanie Teufel es
programadora
Linux vocacional,
aunque no se
lleva bien con las
pseudo-explica-
ciones crípticas ni con el tecno-
lenguaje elitista. Como econo-
mista titulada, Stefanie es la
prueba viviente de que no es
necesario ser un gurú para
divertirse con Linux.
LAAUTORA
RPM. Se procede de forma normal para
instalar los paquetes y compilar el códi-
go fuente siguiendo la secuencia están-
dar: ”./configure; make; sudo make ins-
tall”. Después de instalarse WMI, hay
que establecerlo como el gestor de venta-
nas por defecto. Si se entra en modo con-
sola, 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 momen-
to, 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
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 espa-
cios 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 tra-
bajar con OpenOffice. Para crear estos
espacios de trabajo, hay que habilitar pri-
mero el modo de entrada presionando
[ALT + i], que permite el acceso a
comandos específicos de WMI. Ahora se
teclea
74
WMI es un gestor de ventanas elegante y rápido con un buen soporte para el control por teclado.
POR PHILIPP KLEIN
LINUX USER • Desktopia: WMI
74 Número 07 W W W . L I N U X - M A G A Z I N E . E S
WMI y la reencarnación del teclado
LA VELOCIDAD DE LA LUZ
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
Listado 1: ~/.xinitrc
WMI, Window Manager
Improved (Gestor de Ventanas
Mejorado) es un gestor de ven-
tanas 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 SolucionesEsta herramienta permiten que el usua-
rio 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 venta-
nas cumple el rol de un terminal simple.
El segundo modo en WMI es para atajos
[ALT + i].
InstalaciónEl 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 paque-
tes binarios para Debian, Slackware y
75
Desktopia: WMI • LINUX USER
75Número 07W W W . L I N U X - M A G A Z I N E . E S
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
completa, hay que hacer clic en el botón
de la parte de arriba en la esquina dere-
cha 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 introdu-
ciendo una entrada en el fichero
~/.xinitrc. Para lanzar una terminal
XTerm llamada shell en la esquina supe-
rior derecha del espacio de trabajo:
exec wmiremote -a U
select-workspace+web
exec firefox&
Por último, para desconectarse del siste-
ma se presiona [ALT + q] y nos volve-
mos a conectar de nuevo para asegurar-
nos de que la configuración esté funcio-
nando de forma correcta.
Nota: Para mostrar un listado de los
atajos actualmente definidos basta con
teclear
wmiremote -p | less
Configuración IndividualHay 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 con-
figuración de WMI en ~/.wmi. En esta
carpeta, el fichero actions.conf se usa
para definir los atajos. Los ejemplos
mostrados en el Listado 2 son de mi pro-
pia colección.
La mayoría de los comandos son auto-
explicativos, 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 traba-
jo 3, presionando CTRL + s se pasará al
espacio de trabajo 2. Las líneas que van
desde la tres a la ocho contienen los ata-
jos 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 posi-
bles atajos “avanzados”, por ejemplo, los
atajos de las líneas 13-25 que controlan
el reproductor de audio xmms.
Extendiendo WMIWMI es fácilmente extensible y configu-
rable usando temas y scripts. Se puede
encontrar una colección de temas en [2]
que se pueden adaptar para usar nues-
tros 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 infor-
mació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. �
[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/
RECURSOS
[Alt + I] Habilita el modo de
entrada
[Alt + E] Habilita el modo ejecu
ción
[Esc] Salir del modo entrada/
ejecución
[Alt + M] Maximiza una ventana
[Alt + D] Oculta una ventana
[Alt+ A] Restaura una ventana
[Alt + Tab] Conmuta entre ventanas
[Ctrl + Alt + Q] Salida del sistema
Atajos Comunes en WMI
01
intern.cycle-workspace-prev.ke
ys=ctrl+s
02
03 chain.wsia.seq="selectworkspa-
ce+irc"
04 chain.wsia.keys=alt+1
05 chain.wsis.seq="selectworkspa-
ce+web"
06 chain.wsis.keys=alt+2
07 chain.wsio.seq="selectworkspa-
ce+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"
18 extern.xmmst.keys=shift+F6
19 # Detener la pista actual
20 extern.xmmss.cmd="xmms -s"
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
Listado 2: ~/.wmi/
actions.conf
Kicker es la base de operaciones en
KDE. Lanza programas, cambia
entre escritorios y permite añadir-
le applets a la barra de herramientas.
Además de estas funciones básicas, el
programa permite algunos efectos gráfi-
cos. Kicker permite transparencias e ico-
nos animados con efecto cristal al posar el
ratón por encima.
Desafortunadamente, la barra de herra-
mientas 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.
EspectacularKoolDock [1] es un proyecto que tiene la
estética como principal objetivo. No nece-
sitaremos verificar con el compilador el
factor estético de nuestra barra de herra-
mientas. Encontraremos paquetes para
Debian y Mandrake en la página del pro-
yecto y los paquetes RPM para Suse Linux
están disponibles en [3]. Si preferimos
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 infe-
rior de la misma. Al teclear kooldock, apa-
rece sin más una ventana indicándonos
que movamos el ratón hasta la parte infe-
rior 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 corres-
pondiente. KoolDock muestra por encima
del icono correspondiente la acción que
se ejecutará si pulsamos el botón izquier-
do, 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 precisa-
mente 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) des-
plegamos 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 termi-
nado para añadir así el icono a la parte
izquierda de la barra de herramientas. Si
76
Si el panel de KDE no te parece suficientemente espectacular, puedes
mejorarlo en KDE con KoolDock o KXDocker. POR HAGEN HÖPFNER
LINUX USER • KoolDock
76 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Uso de KoolDock y KXDocker
EN EL MUELLE
Figura 2: Usamos este cuadro de diálogo
para especificar como integrar KoolDock con
el menú de KDE.
Figura 1: KoolDock aparece al llevar el ratón
al borde inferior de la pantalla.
77
KoolDock • LINUX USER
77Número 07W W W . L I N U X - M A G A Z I N E . E S
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, debe-
rí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 permi-
te 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ña-
dir por fin el lanzador a nuestra colec-
ció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 XKXDocker [2] es otra barra de herramien-
tas que se parece mucho a la de
Mac OS X. Los archivos RPM para
KXDocker de Mandrake Linux se instala-
rán sin problema en Fedora Core 2. Para
compilar KXDocker
desde el código fuente,
necesitamos compilar
previamente el paquete
kxdocker-0.27 y luego el
paquete kxdocker-resources-0.9 que con-
tiene los datos e iconos para la barra.
Tecleamos kxdocker para lanzar nuestro
nuevo programa. De nuevo, la barra se
hace con el espacio inferior de la pantalla.
En esta ocasión, no sólo tenemos los ico-
nos de los programas, sino que también
tenemos el menú de inicio de KDE y una
colección de applets (véase Figura 3).
Por defecto, la selección de applets
incluye calendario, reloj, red y carga de la
CPU, así como un indicador del estado de
la batería. Además de la barra, KXDocker
añade también un mini-icono al panel de
Kicker, permitiéndonos mostrar u ocultar
KXDocker con sólo pulsarlo.
Podemos borrar el indicador de estado
de la batería en los ordenadores de sobre-
mesa, y tener así más espacio para acce-
sos directos en la barra. Para ello seleccio-
namos Configurator en el menú de
KXDocker para acceder al cuadro de diá-
logo de configuración (véase Figura 4).
La pestaña Objects, en el ciertamente
desordenado cuadro de diálogo, nos per-
mite eliminar accesos directos y applets.
Sólo tenemos que seleccionar el elemento
en cuestión y pulsar, en el panel de la
derecha, sobre el icono que se parece a un
círculo negro con una cruz blanca.
Con el icono en forma de varita pode-
mos crear nuevos accesos directos de pro-
gramas. Pulsamos en la varita para crear
una nueva entrada y luego especificamos
las propiedades usando las pestañas de la
parte derecha de la ventana. KXDocker
acepta cualquier valor para Name.
Tecleamos el texto para mostrar en Over
Text showed y seleccionamos un icono
para la nueva entrada en la pestaña
Images. Para ejecutar el programa cuando
pulsemos el botón izquierdo, definimos la
acción requerida como onClickExec den-
tro de Actions. Podríamos hacer esto por
ejemplo para thunderbird, si queremos
una entrada para nuestro cliente de
correo electrónico.
Los botones de flecha nos ayudarán a
posicionar el nuevo icono adecuadamen-
te. Cuanto más arriba en la lista esté el
icono, más a la izquierda aparecerá en
nuestra barra de herramientas. Cuando
hayamos acabado, pulsamos en el icono
del disquete para guardar los cambios. Se
nos pregunta por un nombre de archivo, y
si queremos que se cargue esta configura-
ción la próxima vez que ejecutemos la
barra de herramientas.
El manual [5] nos ofrece más detalles
acerca de la configuración de KXDocker
e incluye unos cuantos ejemplos de con-
figuración.
Mucho Donde ElegirTanto KoolDock como KXDocker ofrecen
al usuario una fantástica barra de herra-
mientas, pero ninguna de las dos alcanza
la funcionalidad del Kicker original. Los
desarrolladores no han tenido el punto de
vista del usuario suficientemente en cuen-
ta a la hora de integrar el menú K. Si pul-
samos el icono del menú K, simplemente
abriremos el menú estándar, que tendrá
una pinta muy aburrida en comparación a
los espectaculares gráficos de cualquiera
de las dos barras. Asimismo, ninguna de
ambas barras nos permite prescindir com-
pletamente del Kicker original, ya que
ambas usan funciones del Kicker para
integrarse en el menú de inicio de KDE.
Si no tenemos un proceso Kicker activo,
KoolDock y KXDocker pierden parte de su
funcionalidad. Aún así, si somos de los
que aprecian esos efectos gráficos y esta-
mos buscando una manera de darle vida
a nuestro escritorio e incluso añadir algu-
nas funcionalidades, seguro que pasare-
mos un buen rato con este par de aplica-
ciones. �
Figura 3: KXDocker se presenta con un botón para el menú K,
accesos directos de programas y applets.
Figura 4: Desde este desordenado cuadro de
diálogo, configuramos el comportamiento de
KXDocker.
[1] KoolDock: http://ktown.kde.cl/
kooldock/
[2] KXDocker: http://www.xiaprojects.
com/www/prodotti/kxdocker/main.
php
[3] RPMs SuSE para KoolDock: http://
linux01.gwdg.de/~pbleser/
rpm-navigation.
php?cat=%2FUtilities%2Fkooldock/
[4] RPMs SuSE para KXDocker: http://
linux01.gwdg.de/~pbleser/
rpm-navigation.
php?cat=%2FUtilities%2Fkxdocker/
[5] Documentación de KXDocker: http://
www.xiaprojects.com/www/prodotti/
kxdocker/main.php?action=manual
RECURSOS
Si lo que queremos es volcar el
contenido de un CD de audio en
el disco duro de nuestro ordena-
dor, lo que necesitamos es una herra-
mienta que ofrezca la posibilidad de
extraer las pistas de un disco compacto y
escoger el formato en el que las quere-
mos 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 momen-
to, pues, Sound Juicer sólo nos permite
hacer copia de discos, sin oír previamen-
te las pistas que lo componen.
78
Es posible que queramos hacer copias de seguridad de los CDs que tenemos, o que queramos guardar nues-
tras canciones en el ordenador, para después poder ir reproduciendo toda nuestra discoteca de forma aleato-
ria, 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
LINUX USER • GTools
78 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Soundjuicer para la copia de CDs musicales
¡EXPRIME TUS CDS!¡EXPRIME TUS CDS!
Figura 3: Renombramos pistas de ser nece-
sario.
Figura 2: Cuadro que representa el tamaño
que ocupa la canción Badlands, de Bruce
Springsteen, según formato: WAV no compri-
mido, Ogg/Vorbis, MP3 y FLAC, respectiva-
mente.
Figura 1: Diagrama donde se refleja el proce-
so de extracción de las canciones de un disco
compacto.
79
GTools • LINUX USER
79Número 07W W W . L I N U X - M A G A Z I N E . E S
El proceso de extrac-
ción de pistas (que en
argot se conoce como
ripear, del verbo inglés
to rip) se describe en la
Figura 1: primero se
copian en el disco duro
del ordenador las pistas
en un formato de audio
no comprimido (tal
como se encuentra en el
CD), luego --y según el
algoritmo de compresión
que escojamos-- un segundo
programa comprimirá estos
ficheros para obtener los
resultantes. Los efectos de
esta compresión, según el for-
mato, quedan reflejados en la
Figura 2. Sound Juicer permi-
te obtener archivos en varios
formatos de audio: uno de
ellos no comprimido (con
extensión WAV), y tantos
comprimidos como plug-ins tengamos
instalados, típicamente: Vorbis u Ogg/
Vorbis (compresor lossy totalmente
libre), FLAC (compresor lossless total-
mente libre) y MP3 (compresor lossy par-
cialmente patentado, con lo cual el plu-
gin asociado no se proporciona en todas
las distribuciones de GNU/Linux).
Arranque del ProgramaSi tenemos instalado y debidamente con-
figurado gnome-volume-manager (el
módulo que se encarga de gestionar
automágicamente los dispositivos multi-
media y de almacenamiento), cuando
insertemos un CD en el
ordenador se arrancará
la aplicación selecciona-
da, que nos permitirá
reproducir directamente
el disco o extraer sus pis-
tas y copiarlas a disco
duro. En caso de que no
sea esta última opción la
que suceda, podemos
arrancar la aplicación
elegida desde el menú de
GNOME.
La Figura 3 corresponde a
la ventana inicial del progra-
ma Sound Juicer. En ella
vemos que el programa nos
ofrece la información relativa
a las pistas del disco que
tenemos insertado, y que
rellena gracias a la herra-
mienta de autodetección con
que cuenta, y que funciona
extraordinariamente bien en
la mayoría de casos. Caso que Sound
Juicer no etiquete correctamente el
disco, también podemos escribir, indivi-
dualmente, los campos correspondientes
al artista, título del disco y nombres de
cada pista.
Configurar el ProgramaOtro de los escenarios posibles se produce
cuando arrancamos Sound Juicer manual-
mente en un ordenador que disponga de
más de una unidad CD, y el programa esté
consultando una unidad incorrecta. En el
menú de configuración (Figura 4), dispo-
nemos de una opción que lista todas las
unidades que tenemos en nuestro ordena-
dor, para que podamos indicar en cual de
ellas acabamos de insertar nuestro disco.
Adicionalmente, en este menú de configu-
ración también podemos ajus-
tar una serie de preferencias
que serán de nuestro interés,
como son la carpeta
donde Sound
Juicer almacena-
rá los archivos
de música
generados, el
formato de
estos, o el
patrón que debe
seguir para nom-
brarlos (por ejem-
plo, “Artista - Nombre
de la canción.ogg”) basándose
en la información del que dispone.
Extracción de CancionesSound Juicer permite seleccionar que pis-
tas del CD queremos transferir al disco
(aquellas que tengan la casilla de la
izquierda seleccionada), con lo cual pode-
mos copiar todo el disco o sólo unas can-
ciones. Y… ¡ya está! Sólo nos queda pul-
sar el botón de ‘extracción’ y el programa
realizará la tarea que le hemos encomen-
dado: hacer la copia de las pistas seleccio-
nadas, como se muestra en la Figura 5.
Y ¡ya podremos disfrutar de la nuestra
música en nuestro ordenador sin necesi-
dad de rebuscar en el armario de los
CDs! �
Figura 4: Ventana de configu-
ración del programa.
Figura 5: Las barras
de progreso indican
el estado de la
extracción de las
pistas del disco.
[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
RECURSOS
Una vez tenemos un archivo de sonido
(generalmente se tratará de música, y
en formato WAV) en nuestro ordena-
dor, nos puede interesar comprimirlo
para que así ocupe un espacio menor.
Esencialmente, las técnicas de compre-
sión se catalogan según si esta com-
presión supone pérdida de la informa-
ció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 habla-
mos de formatos lossless, y incluye
FLAC [3]. El rendimiento de cada uno
de estos algoritmos queda representa-
do en la Figura 2.
Compresión lossless vs.compresión lossy
GStreamer [4] es una librería que de-
sarrolla 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 plug-
ins, ofrece la posibilidad de añadir
fácilmente formatos (lo que técnica-
mente se conoce como codecs) a cual-
quier programa que utilice esta librería,
como es el caso de los dos programas
presentados en este artículo.
La librería GStreamer
Albert J. Mora (Barcelona, 1981)
es Ingeniero en Informática por
la Universitat Pompeu Fabra
(2003) y está estudiando Comu-
nicación Audiovisual (Universi-
tat Oberta de Catalunya). Sus
intereses se centran en ser feliz,
el medio digital (y las posibili-
dades que ofrece de gestión de
la información), los movimien-
tos sociales alternativos y -cómo
no- el software libre.
ELAUTOR
Mientras Windows ha dejado a
las aplicaciones añadir funcio-
nes al administrador de fiche-
ros Explorer por algún tiempo, KDE ver-
sió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 facili-
ta más opciones de las que un usuario
Windows pueda esperar. El menú de
contexto permite a los usuarios conver-
tir, 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 fun-
cionalidad 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.
Descarga e InstalaciónEl 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.
Comenzaremos la instalación copian-
do 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 insta-
lación tecleando ./install.sh. Aparece
una ventana Kdialog, proporcionándole
las siguientes opciones:
• Standard
• With plugins
• Uninstall
Si quisiera instalar los plugins, necesita-
rá 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 dis-
tribuciones normalmente pueden insta-
lar el paquete Mjpegtools sin ningún
cambio, pero pueden tener alguna difi-
cultad 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 ins-
trumentos 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 nor-
malizar 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-
80
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
LINUX USER • Kim
80 Número 07 W W W . L I N U X - M A G A Z I N E . E S
Convirtiendo Imágenes con Kim
ADMINISTRADOR DEFOTOGRAFÍAS
Convirtiendo Imágenes con Kim
ADMINISTRADOR DEFOTOGRAFÍAS
01 [Desktop Action WebExp75800]
02 Name=Pal-Movie: 768x576 at 75 %
03 Name[de]=Film im Pal-Format : 768x576 bei 75 %
04 Icon=tgz
05 Exec=kimgsm_webexport 768x576 %D %U && images2mpg -T /tmp -d
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
Cuadro 1: Creación de una película formateada en PAL
81
Kim • LINUX USER
81Número 07W W W . L I N U X - M A G A Z I N E . E S
gable para la manipulación de imágenes,
Kim crea una copia de seguridad del
menú original cuando se instala, almace-
nando las entradas del menú en $KDE/
share/apps/konqueror/servicemenues/
antes de terminar borrando las entradas
originales.
En nuestros dos sistemas de laborato-
rio, una con Suse Linux 9.1 y otra con
Fedora Core 3, el instalador de Kim mos-
tró 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 PrincipalesEl 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 individual-
mente especificar el factor de compre-
sión y el tamaño. La tercera entrada del
menú es para la exportación Web, que
es muy útil para los lectores que quie-
ran realizar un mantenimiento de pági-
nas web. Por ejemplo, con un solo clic
de ratón, comprimiremos imágenes for-
mateadas 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 compre-
sión del 75 por ciento.
Nótese que muchos pasos de manipu-
lació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, inevitable-
mente perderemos las imágenes origi-
nales. Primero, hemos de asegurarnos
de crear una copia de seguridad de los
ficheros antes de empezar a manipular-
los.
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 manipula-
ción libre de errores. Por el contrario, la
calidad de las imágenes JPEG se ve afec-
tada 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.
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.
ExtensibilidadLas entradas del menú son simples fun-
ciones de la shell, así puede fácilmente
modificarlas o añadir nuevas entradas.
Por ejemplo, si a menudo necesita con-
vertir ficheros a formato 350 x 500,
puede añadir una entrada para esta tarea
en el fichero kimgsm_compressandresi-
ze.desktop. No hay necesidad de modifi-
car 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áge-
nes 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 pro-
greso 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. �
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.
[1] Kim: http://bouveyron.free.fr/kim/
[2] ImageMagick: http://www.
imagemagick.org/
[3] Mpegtools: http://www.metzlerbros.
org/dvb/
[4] Kalbum: http://www.paldandy.com/
kalbum/
[5] Mjpegtools para Suse: http://
packman.links2linux.org/
[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
RECURSOSVamos 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.
Cuadro 2: Creando Videos MPEG
Habiendo consultado a varioscolegas sobre la entrega anteriorde este artículo, me señalaron
que había una imprecisión en el vocabu-lario y la necesidad de reconducir la pre-sente entrega en respuestas hacia pre-guntas formuladas por enseñantes, sinentrar en clasificaciones de personassegún sus discapacidades.Proseguimos nuestro viaje, pues, hablan-do de la tiflotecnología.
Braille¿Tiene sentido seguir hablando de Braillecuando ya hemos conocido las posibili-
dades que ofrecen los lectores de panta-lla? Un mensaje a la lista de distribucióntiflonet[1] nos da la respuesta: es el últi-mo vínculo con la lectura y la escriturade los invidentes. En el lenguaje habladono hay ortografía, es más las palabras seconfunden en grupos fónicos regidos porel ritmo y la entonación.
Como sabemos, el código Braille con-siste generalmente en celdas de seis pun-tos en relieve, organizados como unamatriz de tres filas por dos columnas [2]¿Cómo se utiliza en informática?Mediante hardware específico, y paraevitar confusiones debemos empezar por
una breve clasificación: debemos distin-guir dispositivos de entrada (anotadoresbraille, procedentes de las máquinasPerkins, y que están siendo, por su pre-cio, sustituidos por PDAs) de los disposi-tivos de salida (terminales o líneas brai-lle e impresoras braille)[3].
La entrada no presenta dificultades:pueden utilizarse teclados especialesbraille, o bien adaptaciones de los tecla-dos ordinarios para escribir Braille. O elteclado completo y un programa conver-sor (en la lista de distribución de blinuxy sin buscar mucho he encontradonfbtrans, Turbo Braille, Duxbury for
82
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 discapaci-
dades, la accesibilidad en la web, y finalmente un cambio de enfoque para examinar todas estas herramien-
tas 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
LINUX USER • Educación
82 Número 07 W W W . L I N U X - M A G A Z I N E . E S
TIFLOTECNOLOGÍAAccesibilidad en 2005
TIFLOTECNOLOGÍA
83
Educación • LINUX USER
83Número 07W W W . L I N U X - M A G A Z I N E . E S
como gnopernicus
(imagen 1). Ladocumentaciónmuestra un ampliolistado de líneasbraille contempla-das. ¿Cómo funcio-na? Brltty reprodu-ce una porción rec-tangular de la pan-talla del ordenadorcomo texto Brailleen el dispositivo, ypermite utilizar loscontroles del dispo-sitivo para moversepor la ventanareproducida.
Brltty solamente funciona con conso-las y aplicaciones basadas en texto.¿Cómo lograr reproducir imágenes? Unarespuesta es imprimirlas en relieve, loveremos ahora; pero en una terminal conrefresco es posible también utilizar undesarrollo proporcionado por See by
Touch[5]. SeebyTouch proporciona laposibilidad de percibir imá-genes mediante el sentidotáctil. Presentado comoproyecto de fuente abiertaen marzo de 2004, consisteen una unidad movible porel usuario y controlada deforma paralela con dosbarras (foto 2). Esta unidadcontiene celdas braille que
hacen la función de matriz táctil.Dependiendo de su posición el usuariopercibe mediante el tacto partes de laimagen; moviendo la unidad el usuariopuede identificar distintas partes de lafoto o dibujo y hacerse una composiciónmental de la imagen.
Existen también las impresoras brai-lle[6], que imprimen en relieve (por esose llaman «embossers» en inglés). Seconfiguran en Linux como impresoras deagujas (cf. https://www.redhat.com/archives/blinux-list/2005-January/msg00053.html). Y una tecnología lla-mada «horno fúser» que permite la plas-mación en soportes especiales de dibujosde línea resaltada.
Morse
¿Por qué hablar aquí del código Morse?Porque es uno de los métodos de adapta-ción de la interrelación con el ordenadorque se han demostrado eficaces paraayudar a personas con necesidades espe-cíficas (figura 4). Y porque nos va a ser-vir para mostrar una de las paradojaspresentes en el mundo del software libre.
¿En qué medida es práctico y útil eluso de morse? En el artículo Morse Code
Demystified: a Powerful Alternative for
Access to AAC and Computers[7], deBruce Fleming et al., se señalan las ven-tajas del Morse frente a otras formasadaptadas de interacción con el ordena-dor (vid. la tabla 1). Al hablar de morsecomo herramienta de comunicación enatención a la diversidad debemos rompervarios prejuicios:
• Se cree que se tarda mucho enaprender (en realidad sólohacen falta de dos a cuatrohoras)
• Se dice que es pesado y difícilde usar (¿recuerdan lo que esaprender a escribir a máquinasin mirar?)
• Se piensa que es una mecanis-mo lento (en realidad son nor-males velocidades de 10 a 25palabras por minuto, más rápi-do que muchos escáners; hayusuarios que llegan a superarlas 30 palabras por minuto).
Ahora cambiamos de idioma: la comuni-cación mediante código Morse se llama«onda continua» (continuous wave), deahí los «cw» presentes en los nombres delas herramientas disponibles. Y es queen GNU Linux como de costumbre eltema del Morse está en manos de hac-
kers, en este caso de los peores, losradioaficionados (adviértase el tono iró-nico, por favor). Lo que hace que seaposible utilizar Morse con las más varia-das y complejas tecnologías, pero que nohaya una interfaz atractiva para niños
Linux). Las dificultades están en la sali-da. Una primera solución ya la vimos enel artículo anterior: los lectores de panta-lla. La alternativa son las llamadas «líne-as braille». Son dispositivos que seconectan por el puerto serie o usb alordenador, basados en un mecanismoelectro-mecánico capaz de representarcaracteres Braille mediantela elevación de puntos através de una superficieplana con agujeros hechosa tal efecto (cada célulacontiene ocho pequeñasagujas, por lo que la repre-sentación se realizamediante Braille de ochopuntos). Complejos y deelevado coste, suelen tener 20, 40 u 80celdas; también dispone de botones paradesplazar el texto y realizar otras funcio-nes especiales.
El uso de terminales braille bajo GNULinux pasa a bajo nivel por brltty[4],aunque puedan utilizarse interfaces
Figura 1: Configuración de una terminal braille con gnopernicus.
Ventajas Desventajas
Como método directo de selección es eficaz Con un ratón no es intuitivo
A medida que se coge soltura, el proceso Obliga al estudio previo del código
se vuelve automático
Requiere muy poco esfuerzo físico 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
Tabla 1:Ventajas y desventajas del Morse como herra-mienta de comunicación
Figura 2: SeebyTouch
para ver con el tacto.
similar a la del programa Preescritura
Morse, donde por ejemplo el punto sonpelotas y la raya son coches y el niñojuega hasta aprender a reconocer y aintroducir los caracteres como si tirara alplato. Tampoco he encontrado nadasimilar en los listados de actividadespara (j)clic, atnag, childsplay o gcom-pris.
La primera opción disponible en soft-ware libre para aprender Morse es utili-zar el juego (entiéndase juego como«juego para hackers» morse, de bsdga-mes. No es más que un conversor, peroes útil si el objetivo es aprender. En elcuadro 1 tenemos un ejemplo aclaratoriodel funcionamiento de morse.
La interfaz más amigable, créanme, esxcwcp, un programa tutor interactivo decódigo Morse para Xwindows (figura 3).Nos permite elegir varias modalidadesde práctica, incluidos el envío de carac-teres aleatorios, palabras al azar o carac-teres introducidos mediante el teclado.También permite utilizar el teclado o elratón para enviar Morse (creo que la fun-
ción se llama a Morsekeyer), y permite moni-torizar este código ymostrar los caracteresque ve.
¿Pero entonces nohay ninguna aplicaciónLinux que permita utilizar el Morse paramanejar el ordenador? Sí la hay: morseall
(existe paquete rpm). Es una aplicaciónpara gnome que permite controlar unaterminal pulsando con el teclado (unabreve pulsación del botón izquierdo es elpunto, una pulsación más larga o unclick con el botón derecho es la raya, elprograma presenta una ventana con laequivalencia de los caracteres en puntosy rayas como ayuda al usuario).
La opción preferible (aunque evidente-mente más cara) es usar hardware espe-cífico. Los fabricantes de Darci Too yDarci USB (recordemos la figura 4) hanrespondido afirmativamente a mi pre-gunta de si tenían constancia de su fun-cionamiento correcto bajo GNU Linux.
Otros Sistemas deInteracción y ComunicaciónEs el momento de replantearse el artícu-lo en la forma en que va a ser publicadoen la revista. El espacio prohíbe conti-nuar la exploración detallada de los sis-temas de interacción con el ordenador. Elespacio y el sentido común: el detalle delmaterial encontrado durante la fase depreparación lleva a huir de una aplastan-te acumulación de tecnologías querequerirá una plasmación web más pau-sada y nos aleja de nuestros objetivosprimeros. Podríamos discutir de lamadurez del OCR en GNU Linux yhablar de la existencia de aplicacionescomerciales y de otras libres (clara, gocr,ocrad) y de la utilidad de la tecnologíadel Reconocimiento Óptico de Caracterespara permitir que las personas con pro-blemas serios de visión puedan accedera libros e impresos y volcarlos ya comotextos en lectores de pantalla o líneasbraille, pero deberemos limitarnos aenunciarla.
O podemos hablar de las pantallas tác-tiles (touch screens), totalmente funcio-nales en Linux. http://www.tldp.org/
HOWTO/XFree86-Touch-Screen-HOWTO.
html, escrita por Christoph Baumann,nos da los detalles necesarios.
O de las tecnologías de dispositivoshápticos (relativos al tacto) bidimensio-
nales, que pueden utilizarse para ayudara usuarios con discapacidades visualesproporcionando ligera resistencia en losbordes de ventanas y botones de maneraque el usuario «sienta» la interfaz gráficao pueda de algún modo diferenciar textu-ras en las imágenes digitales. Esta tecno-logía ya es una realidad en ratones comoel iFeel Mouse y el IFeel Mouseman deLogitech.
O del resto de sistemas aumentativos yalternativos de comunicación, tablerosde conceptos…
Sobre la Ausencia deSoftwareEs verdad que el de las necesidadesespecíficas es un nicho de mercado muylimitado, donde el desarrollo de softwareestá subordinado al más lucrativo dehardware, y donde se dan característicaspropias de los primeros tiempos de estaera de lo digital. Recordemos la explo-sión de software de pequeñas empresasy de autores independientes durante losaños del DOS y Windows 3.1 y los pri-meros Mac. Multitud de autores crearony distribuyeron sus pequeñas aplicacio-nes educativas. La situación es similar,predominan las pequeñas empresas y losdesarrollos de uno o dos autores que sonprofesionales de la atención a la diversi-dad. El riesgo es que vuelva a caer en latrampa del software gratuito de fuentecerrada: un cambio en los estándares deprogramación o de interfaz de usuario oen los sistemas operativos utilizadosmayoritariamente hacen que ese softwa-re quede inutilizable.
Durante la fase de preparación de esteartículo he escrito a algunos de los másimportantes desarrolladores de lenguahispana de software específico para eltratamiento de las necesidades especia-les. Amablemente algunos han contes-tado y hemos discutido qué impedía elpaso de las licencias freeware con códi-go cerrado que tradicionalmente utili-zan a software libre. Sin citar nombressí citaré frases textuales, para analizarbrevemente la problemática. Afirmansimpatía y estar meditando seriamente
LINUX USER • Educación
84 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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
Listado 1: El juego morse
Figura 3:xcwcp, programa para aprender Morse.
Educación • LINUX USER
85Número 07W W W . L I N U X - M A G A Z I N E . E S
sible confusión del derecho de reconoci-miento de autoría con licencia, permisosque el dueño de la obra concede sobre eluso, copia, distribución de la misma.
«¿Cómo se gana la vida la gente quedesarrolla el software libre?» Pues igual,trabajando. Como no existe la killer-application el modelo de negocio se cen-tra en encargos y en servicios, y se traba-ja sobre lo que han hecho otros y se sabeque otros trabajarán sobre lo que hace-mos nosotros. ¿No era esto el progreso?
Accesibilidad en la WebLa primera en la frente, y en pocas pala-bras: existe software de creación de pági-nas web que debería haber dejado deutilizarse hace mucho tiempo ya, si esque en algún momento tuvo una justifi-cación (estoy siendo diplomático), enfo-ques de la creación de páginas web queno conocen y anulan la separación entrecontenido y presentación. Y ahora expli-caré porqué.
El estándar html no lo ha creado unaempresa para hacerse con el mercado. Loha creado un consorcio de organizacio-nes (el W3C, hay oficina española http://
www.w3c.es/) por impulso de TimWerners-Lee, el inventor del protocolohttp y de la web. Fue creado en octubrede 1994 «para guiar la Web a su máximopotencial mediante el desarrollo de pro-tocolos comunes que promoviesen suevolución y asegurasen su interoperabili-dad». La principal tarea del consorcio es,pues, definir estándares (recomendacio-nes, en sus palabras) que funcionen concualquier sistema operativo y cualquiernavegador. Así a lo largo de los años hanido definiendo nuevas versiones del len-guaje de etiquetado html con el que estáescrita la WWW y han creado CSS, lashojas de estilo en cascada para definir lapresentación de las páginas.
Para los que nunca hayan examinadoel código de una página web quizás sirvaun breve ejemplo: esto sería un fragmen-to de texto html
<p>
Un puntoU
<strong>importante</strong>.
</p>
Hemos visto cómo se marca el comienzode un párrafo (<p>), su contenido yuna etiqueta semántica para señalar laimportancia de una expresión. Esto es
importante: en esta fase el autor debepreocuparse de la estructura semánticade su documento, que será independien-te de su salida impresa. ¿Y la hoja deestilo? 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 ten-drá el párrafo (todos los párrafos deldocumento, no será necesario ir copián-dolas párrafo a párrafo): sangría, tipo deletra, su color y el de su fondo, justifica-ción…
¿Qué tiene que ver esto con la accesi-bilidad? Todo: su Iniciativa de
Accesibilidad Web (WAI) ha publicadolas Directrices de Accesibilidad para el
Contenido (http://www.w3.org/TR/
WCAG/), que no sólo están dirigidas aatender a las discapacidades sino a inde-pendizar el contenido del llamado «agen-te de usuario». Mediante hojas de estiloes posible definir distintas salidas o pre-sentaciones del contenido (el navegador,sí, pero también un sintetizador de voz,un teléfono móvil y un dispositivo insta-lado en el coche, etc.). Para ejemplobasta un párrafo.
p {
voice-family: paul;
stress: 20;
richness: 90;
cue-before: url("ping.au");
volume: x-soft;
azimuth: center-left;
}
Balance PedagógicoDebemos volver a nuestra pregunta ini-cial: ¿en qué grado está el software libremaduro para responder a las necesidadesde atención a todos nuestros alumnos,tengan las barreras que tengan y las difi-cultades que tengan? Si hemos dispuestoen esta segunda parte del artículo decuatro o cinco páginas, debemos llegar aconclusiones aunque sean provisionalesy abiertas a la discusión.
En primer lugar podemos concluir quela interfaz de usuario ha llegado a sumadurez en cuanto al soporte de la tec-
la posibilidad de dar el paso. ¿Qué pro-blemas ven?
«el primero de estos programas quedesarrollé (…) pusimos el código fuenteen Internet (…) Lo quitamos porque nosencontramos con un impensado proble-ma, consistente en que hubo personasque comenzaron a tomar el desarrollo,modificarlo sin un análisis con profesio-nales del área de la educación especial(lo cual era sumamente peligroso paraalgunos posibles usuarios, por una cues-tión de desconocimiento que, aunque nodebería existir, es real aquí), y luego pro-ponían venderlo. (…) “comerciantes”que ante un campo con relativamentepoco desarrollo como el de la tecnologíay las necesidades especiales, sólo quie-ren ganar dinero sin tener en cuenta lacalidad y potenciales riesgos que gene-ran.» Argumento de responsabilidadsobre la obra, totalmente independientede que sea libre o no.
«(…) el problema de que, ante unaregistración de la propiedad intelectualsólo en el país (como está hecho ahorapor cuestión de costos), personas confines exclusivamente lucrativos lo regis-tren en otro lugar y lo vendan, cosa quelos autores originales no queríamos.»Esto es un problema de protección delcopyright, no de licencia. Luego tambiénes independiente de que la obra sea libreo no.
«(…) el desarrollo en formato tenedor.Es decir si dejo, pongamos un ejemplo,el código de P libre y alguien hace uncambio en un sitio y otro alguien en otro,¿qué es lo que exactamente queda de P?Hasta ahora la solución que he adoptadoes que cualquier persona que precisauna modificación me la propone y yo lahago y es una manera de tener controla-do el programa». La habitual y compren-
Figura 4: Darci usb, dispositivo de acceso al
ordenador mediante morse.Morse.
nología de asistencia. Todo hardwareque funciona mediante el uso de contro-ladores estándar o abiertos funcionarácon GNU Linux. Y con un enfoquecorrecto: no hacen falta aplicacionesespecíficas de teclados virtuales, emula-ciones de teclado o ratón, etc., porque esel sistema operativo o el entorno integra-do (Gnome, KDE) los que se ocupan deello; tampoco es una tarea de la quedeban ocuparse las aplicaciones específi-cas, salvo cumplir unas reglas en su des-arrollo (lo que equivale a seguir adecua-damente una API y unas instrucciones).Por tanto no hace falta desarrollar juegosespecíficos para jugar mediante sóloteclado o sólo joystick o sólo switches,sino que cualquier juego debe poder serjugado mediante el dispositivo que elijael usuario.
Existen distribuciones específicaspara por ejemplo personas con discapa-cidades visuales, caso de Oralux(http://www.oralux.org/). Aunque com-prendo su utilidad, entiendo que lo quehay que hacer es desarrollar las distri-buciones generales para que puedanser utilizadas por todos, una distribu-ción específica nunca podrá mantener-se al día y ser completa. En este sentidono se ha solucionado el segundo pro-blema, la configuración del soporte deasistencia para cada persona: yo mismohe tenido que bucear en la documenta-ción y en las profundidades del entornopara poder configurar algunas opcio-nes. Sugiero la creación de perfiles quede forma sencilla y autónoma permitanla configuración y la adaptación a lascapacidades de cada uno del entornode trabajo (y de juego y de comunica-ción y aprendizaje).
En consecuencia deja de ser tan cier-to que no existan aplicaciones específi-cas[8]: en primer lugar porque aquellasaplicaciones que no dependen directa-mente de la presencia de determinados
controladores de hardware pueden fun-cionar perfectamente con wine (figura5) o dosemu o incluso con máquinasvirtuales qemu, sino porque además lasaplicaciones educativas libres «genera-listas» pueden ser utilizadas tras unacorrecta configuración de la interfaz deusuario. Sí es verdad que hay que tra-bajar en el desarrollo de estos núcleosde aplicaciones, jclic, atnag, wims,childsplay, gcompris, leterrier, para dis-poner de actividades y juegos de fami-liarización con el hardware adaptativopor un lado y para proporcionar ejerci-cios y prácticas de todos los nivelescognitivos y para todas las capacidades.Este es un tema que no podemos pasarpor alto, porque es la clave del éxito yel sentido del software educativo, tantolibre como privativo.
Y en el Próximo NúmeroExaminaremos qué se esconde detrás delproyecto ATNAG, del francés GeardSellès: una herramienta de autor, desti-
nada a crear juegos y actividades desti-nados a educación infantil, pero tambiénun conjunto de actividades y un sistemade planificación y seguimiento del traba-jo con los alumnos. Veremos en concretocómo se está utilizando por el equipo detrabajo que lidera María DoloresAlmansa en el Colegio Sagrado Corazónde Palencia y nos servirá para ver cómose aplica la filosofía del software libre enla realidad de las aulas. �
LINUX USER • Educación
86 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[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 computeriza-
do), 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 algo-
ritmos 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 aprendi-
zaje 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 cues-
tión de que las dos tradiciones se encuentren.
RECURSOS
Juan Rafael Fernández García es
profesor de educación secunda-
ria y tiene una larga experiencia
en la traducción y documenta-
ció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 actual-
mente trabaja como asesor de
formación del profesorado.
EL AUTOR
Figura 5: Una aplicación específica reutiliza-
da bajo wine.
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
87
Línea de Comandos: Navegadores• LINUX USER
87Número 07W W W . L I N U X - M A G A Z I N E . E S
Navegadores desde la línea de comandos: Lynx, Links y w3m
NAVEGAR EN CONSOLA
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 acer-
ca de aceptar Cookies, podemos desacti-
var esa opción mediante:
lynx -accept_all_cookies
Para fijar esta configuración como per-
manente, bajamos por el cuadro de
diálogo con la flecha hacia abajo hasta
que encontramos la entrada de las
Cookies, y presionamos entonces la fle-
cha derecha. En el menú que aparece
podemos seleccionar ignore, ask user
(opción por defecto) y accept all (véase
Figura 1). Para asegurarnos de que
Lynx no se olvidará de esta configura-
ción al cerrar el programa, necesitamos
guardar los cambios (antes debemos
confirmar pulsando en Submit o en
Accept Changes). Para hacer esto, mar-
camos 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 for-
zar 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 pro-
porcionamos las credenciales al ejecutar
el navegador:
La 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, revisare-
mos los navegadores sin interfaz gráfica
Lynx [1], Links [2] y w3m [3].
LynxPodemos 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
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ági-
na 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ági-
na 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 intro-
ducir el nombre de nuestro editor favori-
to en en cuadro Box.
De Lynx a LinksEl segundo navegador en modo texto,
Links, nos permite el control por teclado
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 supe-
rior de la ventana con el ratón, Links nos
mostrará un menú que podremos mane-
jar mediante ratón o teclado. Existen ata-
jos de teclado para la mayoría de las
entradas del menú, y es bastante reco-
mendable 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, tene-
mos 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 confi-
guración personal se guarda en un archi-
vo 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 ejem-
plo, para mostrar imágenes PNG con el
programa display (sólo funciona bajo X
Window), debemos definir previamente
LINUX USER • Línea de Comandos: Navegadores
88 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[Shift--] o [H] Llama a la ayuda de Lynx.
[Q] Cierra el programa tras preguntar.
[Shiftt-Q] Cierra el programa sin preguntar.
[Flecha Arriba], Desplaza hacia arriba o hacia abajo por los enlaces.
[Flecha Abajo]
[Pg Up], Desplaza arriba o abajo una página.
[Pg Dn]
[Flecha Derecha] Sigue un enlace.
o [Enter]
[Flecha Izquierda] Vuelve a la última página.
[K] Muestra una lista de comandos de teclado disponibles.
[M] Vuelve a la página de inicio. Confirmamos presionando [Y].
[G] Abre un cuadro de diálogo donde podemos teclear una nueva URL.
Confirmamos presionando [Enter].
[Shift-G] Va a la última URL, permitiendo modificarla.
[L] Muestra todos los enlaces disponibles en el documento actual.
[P] Opciones de impresión: Guarda el documento en un archivo local, lo envía por
email o lo envía directamente a impresión.
[D] Guarda el archivo (con todas las imágenes).
[A] Añade a favoritos bien la página que vemos ([D]) o bien la página cuyo enlace
tenemos bajo el cursor ([L]).
[V] Abre un administrador de favoritos.
[Ctrl-A] Vuelve al comienzo de la página.
[Ctrl-E] Va al final de la página.
[Ctrl-R] Recarga la página.
[Shift-7] (/) Comienza la búsqueda.
[Retroceso] Muestra el historial.
[O] Abre el cuadro de diálogo de configuración de Lynx.
Tabla 1: Controles de Lynx
[Esc] Muestra/esconde la barra de menú.
[Q] Cierra Links - preguntando antes de salir.
[Shift-Q], [Ctrl-C] Cierra el programa sin preguntar.
[Flecha Arriba], Navega delante y detrás a través de los enlaces.
[Flecha Abajo]
[Pg Up], Desplaza una página arriba/abajo.
[Pg Dn]
[Flecha Derecha] Sigue un enlace.
[Flecha izquierda] Vuelve un paso en el historial.
[G] Abre una línea donde introducir una nueva dirección.
[Shift-G] Abre la misma línea pero mostrando la última dirección visitada, permitiendo
modificar la dirección.
[D] Guarda una copia local del documento en nuestro ordenador.
[Shift-7] (/) Búsqueda hacia delante en el documento actual.
[Shift--] (?) Búsqueda hacia atrás en el documento actual.
[N] Va hasta la siguiente coincidencia.
[Shift-N] Vuelve a la anterior coincidencia.
[Shift-0] (=) 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] Añade a favoritos.
[S] Abre el administrador de favoritos.
[Ctrl-R] Recarga el documento.
Tabla 2: Comandos de teclado para Links
Línea de Comandos: Navegadores• LINUX USER
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
De nuevo tecleamos image/png en
Content-Type, confirmamos seleccionan-
do OK y guardamos los cambios. A partir
de este momento, cada vez que pulse-
mos 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ódi-
go fuente) del archivo.
Simplemente w3mEl 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 suminis-
tramos, w3m simplemente mostrará una
lista de opciones en nuestra ventana.
De nuevo, el navegador soporta con-
trol por teclado y por ratón (véase Tabla
3 para un resumen de los atajos de tecla-
do) 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ági-
nas Web usando el atajo de tecladdo
[Shift-T] y navegar pasando de una pes-
un tipo de archivo en Setup /
Associations / Add. Para ello, introduci-
mos 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
Figura 1: Cuadro de diálogo para configurar Lynx.
taña a otra es una característica realmen-
te 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 mejora-
remos enormemente la navegación.
Trucos y Más TrucosLos navegadores en modo texto brillan
en todo su esplendor en conjunción con
otros programas. Si nuestro editor favori-
to es Vim, por ejemplo, sólo necesitamos
añadir una simple
línea a la configura-
ción del archivo
~/.vimrc para confi-
gurar nuestro navega-
dor favorito como
visor HTML.
Podemos asignar
una tecla para lanzar
el navegador o definir
un nuevo comando.
Por ejemplo, necesi-
taremos añadir la
siguiente línea a
~/.vimrc para ejecu-
tar Lynx cada vez que presionemos [F2]:
map <F2> :!lynx %<CR>
De esta manera podemos iniciar el nave-
gador mientras trabajamos con Vim.
Para lanzar el navegador desde Vim, pre-
sionamos [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:
text/html; links %s
Añadimos la ruta de nuestro archivo
mailcap al archivo de configuración
~/.muttrc:
set mailcap_path = ~/.mailcap
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].
FormatosLos tres navegadores comentados en este
artículo usan la opción del comando
dump para convertir páginas HTML a
ficheros de texto ASCII convenientemen-
te formateados. Los siguientes coman-
dos:
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. �
LINUX USER • Línea de Comandos: Navegadores
90 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[1] Lynx: http://lynx.isc.org/
[2] Links: http://links.sourceforge.net/
[3] w3m: http://w3m.sourceforge
[4] Mutt: http://www.mutt.org/
RECURSOS
Figura 2: w3m ofrece navegación mediante pestañas.
[Shift-H] Llama a la ayuda.
[Q] Cierra w3m tras pedir confirmación.
[Shift-Q] Cierra w3m sin pedir confirmación.
[Space], [B] Desplaza una página arriba / abajo en el documento actual.
[G], [Shift-G] Va a la primera / última línea del documento.
[Tab] Va al siguiente enlace.
[Esc], [Tab] Vuelve al enlace anterior.
(o [Alt-Tab])
[Return] Sigue el enlace.
[Shift-B] Vuelve a la página anterior.
[U] Muestra la URL del archivo actual en la esquina inferior izquierda de la ventana.
[Shift-U] Abre un cuadro de diálogo donde los usuarios pueden introducir una nueva URL.
[Shift-7] (I) Búsqueda hacia delante por palabra clave.
[Shift-?] (?) Búsqueda hacia detrás por palabra clave.
[V] Alterna en navegador entre vista normal y vista de código fuente.
[Esc], [A] (o [Alt-A]) Añade un documento a la lista de favoritos.
[Esc], [B] (o [Alt-B]) Muestra los favoritos.
[Shift-R] Recarga la página.
[S] Abre un historial de páginas visitadas recientemente.
[Esc], [S] (o [Alt-S]) Guarda el archivo a disco.
[O] Abre un cuadro de diálogo para la configuración personal.
[E] Abre la página en el editor (definido en el cuadro de configuración).
Tabla 3: Controles de teclado de w3m
Heike Jurzik
estudió Alemán,
Informática e
Inglés en la Uni-
versidad de Colo-
nia, Alemania. Descubrió Linux
en 1996 y quedó fascinada con
la potencia de la línea de coman-
dos desde ese momento. En su
tiempo libre puede que la
encuentre en clases de folclore
irlandés, o visitando Irlanda.
LAAUTORA
La 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 desas-
tre. Cuando las cosas se ponen así de
mal, sólo queda una solución: Extensión
520. Alberto.
Flashback: 24 horas antesPerfil de la víctima: Luis, 41 años, dise-
ñador gráfico. Nivel de proficiencia
informática: usuario final. Con semejan-
te panorama ¿a quién se le ocurre acon-
sejar que se instale Linux? Pero no lo
puede resistir. Hay un personajillo chovi-
nista 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
92 Número 07 W W W . L I N U X - M A G A Z I N E . E S
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
Trucos
93Número 07W W W . L I N U X - M A G A Z I N E . E S
héroe que lucha en pro del software
libre, por cirujano tipo Urgencias, dis-
puesto 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, cam-
bia 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 con-
fundían a la placa base. Que duerma.
pasaré por la mañana”. Se despide cho-
cando las manos a todos los atónitos pre-
sentes.
“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 exper-
to para poder configurar a nuestro gusto
particiones y hardware. El sujeto, mues-
tra un disco duro de 80 gigas, con dos
particiones afectadas por sendos casos
terminales de Windows y otro sano dedi-
cado 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 fami-
lia 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, ale-
gan.
Lo dicho. A las 4:45, llega el momento
de la verdad: reiniciamos. Aparece el
menú de GRUB. El paciente parece esta-
ble y en buen estado de salud. El arran-
que 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íoParece que sí. Empieza el arranque, pero
de repente…
Error: NTOSKRNL.EXE isU
missing or corrupt
Lo pri-
mero
que
haces es
no creérte-
lo. 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 impo-
sible, 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 conoci-
das. 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 parti-
ción anterior simplemente ha desapare-
cido y ahora se halla en la primera parti-
ció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á correc-
tamente configurado. Ocurre cuando el
usuario a añadido o eliminado un siste-
ma operativo del ordenador […]. Hay que
asegurarse de que la línea que apunta al
sistema operativo y si dispositivo y parti-
ción están correctamente configurados en
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 ejecu-
ció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 debe-
rí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 ven-
tajas de Linux, su seguridad, su estabili-
dad, su configurabilidad, a este bienin-
tencionado, inteligente, pero informáti-
camente 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 perdi-
ción. Como algo salga mal, que saldrá, lo
habrás perdido para siempre”. Pero yo ya
había cogido carrerilla y me era imposi-
ble parar. “Si quieres, me traes tu máqui-
na 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: HoyHemos pasado por el DVD que no arran-
ca. 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 con-
gelación. El otro mide el nivel de pánico
y va subiendo a medida que se multipli-
can los mensajes de error sobre la irre-
cuperabilidad del sistema, los pantalla-
zos 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 blan-
co, a lo Batman, conectado a la salida
del teléfono. Cuando un usuario en apu-
ros llama, aparece el pingüino, Alberto
se pone sus bat-camiseta con Tux y llega
corriendo a resolver cualquier bat-
entuerto. Cuando llega, cambia de super-
las secciones de [cargador de disco] y [sis-
temas 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, estan-
do 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 conoci-
mientos. 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 res-
cate 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 den-
tro de cuatro
paredes aparen-
temente desnu-
das. Ante mi
mirada inte-
rrogadora,
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
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 parti-
ciones e intentamos restaurar el MBR
con un
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 rea-
rrancada al rescate de Windows.
Instintivamente, Al escribe vi en la línea
de comandos. “¿Qué haces?” le pregun-
to. “Caray, es verdad” dice, apesadum-
brado. “¿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 QBA-
SIC 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 lec-
tura. “Pero, ¡eso es absurdo!” resopla
Alberto.
“No importa” Esta vez he sido yo.
“Cierto”. dice Alberto. “Lo editamos
desde Linux, lo grabamos en un dis-
quete 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
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ílogoLuis 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. �
Trucos
94 Número 07 W W W . L I N U X - M A G A Z I N E . E S
[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
RECURSOS
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 serequiere 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 domiciliocada mes.
Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el preciode 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
97Número 07W W W . L I N U X - M A G A Z I N E . E S
Linux World San FranciscoFecha: 9-11 Agosto
Ciudad: San Francisco,CA,EE.UU.
Sitio Web:
www.linux-
worldexpo.com
CAMPUS PARTYFecha: 25-31 Julio
Ciudad:Valencia
Sitio Web:
http://www.campus-
party.org
aKademy 2005Fecha: 27 Agosto - 4 Septiembre
Ciudad:Málaga,España
Sitio Web:
http://dot.kde.org
Información de Contacto
DirectorPaul C. Brown
CoolaboradoresPaul C. Brown, Jose Manuel González Vida, JuanRafael Fernández, Pedro Orantes, José María Ruíz,Alberto Planas.
TraductoresPaqui Martín Vergara, Paul C. Brown, Jesús ReyesDelgado, Antonio Rueda, Víctor Tienda.
MaquetaciónSergio Hardasmal
Diseño de PortadaPinball([email protected])
Diseño de PublicidadFeedback(www.f-back.com)
Publicidadwww.linuxmagazine.com.es/pub/
Para EspañaPaul C. [email protected]@linuxnewmedia.esTel.: (+ 34) 951 010 556Móvil.: (+ 34) 655 036 836Fax.: (+ 34) 951 010 516
Sergio Hardasmal [email protected].: (+ 34) 951 010 556 Fax.: (+ 34) 951 010 516
Para el Resto del MundoBrian Osborn [email protected] Tel.: (+49) 6509 910 495Fax.: (+49) 6509 910 497
Director EditorialPaul C. Brown
Director de ProducciónSergio Hardasmal [email protected]
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 556Fax.: (+34) 951 010 516 [email protected]
Linux MagazineLinux New Media Spain, S.L.Avda. Juan López Peñalver, 2129590 - Campanillas Málaga ESPAÑA [email protected].: (+34) 951 010 556Fax.: (+34) 951 010 516
www.linux-magazine.es - Españawww.linux-magazine.com - Mundowww.linux-magazine.de - Alemania
Si bien se toman todas las medidas posibles paragarantizar la precisión del contenido de los artículos publi-cados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en larevista. Asimismo, Linux Magazine no compartenecesariamente las opiniones vertidas por suscolaboradores 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 escrupu-losamente para confirmar que está libre de virus y errores.
Copyright y Marcas Registradas © 2004 Linux NewMedia Spain, S.L. Linux New Media Spain S.L. prohíbela reproducción total o parcial de los contenidos deLinux 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
Calendario de Eventos
Evento Fecha Ciudad Sitio Web
Linux Forum Asia 2005 15-16 Junio Hong Kong,China www.linuxforumasia.com
International Lisp Conference 2005 19-22 Junio Palo Alto,CA,EE.UU. www.international-lisp-conference.org
yapc:Yet Another Perl Conference 22-24 Junio Toronto,Canadá http://yapc.org/America
LinuxTag 2005 22-25 Junio Karlsruhe,Alemania www.linuxtag.org
I Congreso de Tecnologías del Software Libre 7-8 Julio A Coruña http://congreso.gpul.org
Debconf 5 10-17 Julio Helsinki,Finlandia www.debconf.org/debconf5
2005 Linux Symposium 20-23 Julio Ottawa,Canadá www.linuxsymposium.org
Campus Party 2005 25-31 Julio Valencia,España http://www.campus-party.org
What the Hack 28-31 Julio Liempde,Holanda www.whatthehack.org
Usenix Security Symposium 1-5 Agosto Baltimore,MD,EEUU www.usenix.org
Wikimania 2005 4-8 Agosto Frankfurt,Alemania http://wikimania.wikimedia.org/wiki
LinuxWorld Conference & Expo S.F. 9-11 Agosto San Francisco,CA,EE.UU www.linuxworldexpo.com
LinuxWorld Conference & Expo Beijing 24-26 Agosto Beijing,China www.linuxworldchina.com
LinuxWorld Conference & Expo Moscow 7-9 Septiembre Moscú,Rusia www.linuxworldexpo.ru
aKademy 2005 27 Agosto - 4 Septiembre Málaga http://dot.kde.org
LinuxWorld Conference & Expo UK 5-6 Octubre Londres,Reino Unido www.linuxworldexpo.co.uk
LinuxWorld Conference & Expo NL 13-14 Octubre Utrecht,Holanda www.linuxworldexpo.nl
LinuxWorld Conference & Expo Frankfurt 15-17 Noviembre Frankfurt,Alemania www.linuxworldexpo.de
LinuxWorld Conference & Expo Australia 28-30 Marzo 06 Sydney,Australia www.linuxworldexpo.com.au
98
PRÓXIMO NÚMERO
98 Número 07 W W W . L I N U X - M A G A Z I N E . E S
PRÓXIMO NÚMEROAgosto 2005: Número 8
PRÓXIMO NÚMERO
A LA VENTA: JULIO 2005
WIKIS Y BLOGS PDFS EXTENDIDOSLa esencia de Linux es la bús-queda o creación de las herra-mientas perfectas. Si la configu-ración estándar para la creaciónde PDFs desde OpenOffice no tesatisface, es hora de modificarloa tu gusto. El mes que vienevemos como con un sencillomacro podemos crear PDFs queincluyen marcas, hiperenlaces ynotas… Y todo sin salir deOpenOffice.
GMAILSVemos comoutilizar tu cuentade GMail comosistema deficheros monta-ble accesibledesde Internet.
LINUX USEREn la sección dedicado alusuario final, veremoscomo administrar fuentesbajo KDE y Gnome, comocompartir archivos en la redKazaa con Apollon y habla-remos de uno de los pro-yectos educativos más inte-resantes de este momento:ATNAG.
BOLETÍN LINUX MAGAZINEEl Boletín de Linux Magazine te da la oportu-nidad de ver lo que se avecina en el sigu-iente número de Linux Magazine e incluyeenlaces a artículos que aparecen en nuestrositio web antes de que la versión impresallegue a los quioscos. Suscríbete enwww.linuxmagazine.es/boletin.
Y es que la web no para de crecer y lasherramientas para publicar y adminis-trar contenidos no paran de mejorar yde hacerse más poderosas. En portadael mes que viene examinamos precisa-mente esas herramientas para lapublicación y administración en web.Abarcaremos Drupal, un sistema deadministración de contenidos, unaherramienta para soportar sitios weby weblogs comunitarios. Veremos laplataforma de colaboración TWiki, unode los más veteranos motores wiki. Yle 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á unscript Python para implementar unWIki basado en CGIs.
COCHECITOSAlberto Planas nos traela segunda entrega desu serie de hardware ysoftware destinado acontrolar un coche tele-dirigido a través delpuerto paralelo.¿Logrará que eche aandar en este capítulo?¿En más de una direc-ción?¿Simultáneamente?
0Proyectos desarrolladosProgramas escritosPáginas publicadas
* Este sería el resultado de la aplicación de la directiva sobrepatentes de software propuesta alParlamento Europeo.
*
w w w . f f i i . o r g