Anda di halaman 1dari 84

GRATIS

Ms info en pg. 3.

LINUX Y WINDOWS 8
Conviviendo con lo nuevo de MS

NMERO 91 P.V.P 6,95


CANARIAS P.V.P 7,05

CONVIVIENDO CON EL NUEVO SISTEMA DE MICROSOFT

WINDOWS 8 Y LINUX
Comparte tu espacio con un arranque dual Configura Samba para Windows 8 Windows 8 en mquinas virtuales Aceede a ficheros Linux desde Windows

BYOBU
El administrador de sesiones que extiende la shell

PHP x SISTEMA
Scripting de PHP para la lnea de comandos

Raspberry Pi
Tres proyectos del mundo real Crea bases de datos con poco esfuerzo Graba DVDs desde la lnea de comandos Controla tu Linux desde tu mvil Haz de tu casa un hogar domtico
8 413042 594505

KEXI Y GLOM WODIM


WWW.LINUX- MAGAZINE.ES

ANDROID ARDUINO

00091

4.95
Euros

DVD

DVD tu DVD es que

nosti ra diag e.es pa in z Si cre a g a nux-m evo. dvd@li uno nu s o m ie v n e te

enos OSO? al estado, escrba e U T C E m p ra qu DEF carlo o est en

Arranque
Este DVD contiene OpenSUSE 12.3, un sistema operativo Linux de corte profesional completo y con aplicaciones listas para ser utilizadas. OpenSUSE viene en versin de instalacin de 64 bits y est listo para ser instalado en tu ordenador. Para empezar a usar tu Linux, inserta el DVD en el reproductor y rearranca el ordenador. Si no aparece el men del DVD, tienes que ajustar la BIOS para arrancar desde el disco. Para hacerlo, normalmente has de pulsar una tecla durante las primeras fases del arranque del ordenador (habitualmente F2 o Supr), buscar el men que permite cambiar la secuencia de arranque de dispositivos y colocar el lector de DVDs en el primer lugar de la secuencia. Posteriormente se guardan los cambios y se sale de la herramienta de configuracin para que se reinicie el arranque. Como cada BIOS es diferente, recomendamos consultar la documentacin del fabricante para realizar esta operacin.

OpenSUSE 12.3
E
n nuestro DVD os traemos lo ltimo de un sistema clsico del ecosistema Linux: OpenSUSE 12.3. OpenSUSE siempre se ha caracterizado por su facilidad de uso, su bien nutrida comunidad y cuidado diseo. La versin 12.3 de la distro no es una excepcin. Entre las novedades que trae el nuevo OpenSUSE, destacamos que es una de las nicas distros en ofrecer el mismo soporte igualitario para los escritorios mayoritarios. 12.3 ofrece soporte para Plasma de KDE (el escritorio predeterminado), GNOME, Plasma Netbook (ideal para pantallas pequeas), Xfce, LXDE e incluso E17 Enlightenment. Tras las bambalinas, se ha mejorado la semntica de todos los escritorios, lo que permite encontrar ficheros ms rpidamente y utilizando ms criterios. Se ha incluido un nuevo sistema de administracin de impresoras, con lo que podrs configurar estos dispositivos ms fcilmente, y se han modificado las notificaciones y los mecanismos de monitorizacin de actividades para hacerlos mucho ms amigables. Adems incluye todo lo ltimo en lo que se refiere a aplicaciones de ofimtica, Internet, diseo y desarrollo, por supuesto.

RECURSOS
[1] OpenSUSE en espaol:

http://www.opensuse.org/es/

WWW.LINUX- MAGAZINE.ES

Nmero 91

EDITORIAL

RELEVANCIA
T
oda empresa tiene un reto continuo al que se tiene que enfrentar: el de mantenerse relevante. En esencia, cada empresa, como condicin sine qua non para su xito (y por xito entiendo que sobreviva, que no fracase miserablemente), ha de ser relevante a la sociedad dnde se halla ubicada. No significa esto que la relevancia la convertir automticamente en exitosa, pero sin ese factor, seguro que no lo consigue. La relevancia una empresa la adquiere a travs de la utilidad de sus servicios o productos. A veces esa utilidad surge y desaparece de manera orgnica, fruto de la evolucin de la sociedad o siguiendo la estela de otros servicios o productos que se popularizan. La industria de la fabricacin de ruedas de carreta, por ejemplo, muri el da en que empezaron a haber ms automviles que carretas, pero, simultneamente, naci la industria de los neumticos para coches. A veces es la utilidad de un producto la que es creada por la empresa, explotando la vanidad o la inseguridad del consumidor a travs del marketing. La industria cosmtica es un buen ejemplo de lo anterior, jugando ambas bazas con igual falta de escrpulos. La cuestin es que todo responsable de una empresa, antes de echarle la culpa a terceros de los fracasos o adjudicarse a s mismo los triunfos de su firma, debe cuestionarse a menudo a lo largo de su carrera el grado de utilidad de sus productos en la sociedad. As que, cul es la utilidad de Linux Magazine? La tiene? Si me hubiese de regir por lo que me dicen en los congresos y eventos, la respuesta sera un rotundo no. Menos mal que hay cada vez menos congresos y eventos. En serio, cada vez que hablaba con los asistentes, nadie admita leer la revista. Aunque despus de un poco de presin, muchos confesaban que lean mis editoriales. Y fuera, tambin he odo esto. En comidas profesionales, mientras senta el calor de la vergenza e ira subir por mi cuello a mi cara, he tenido que escuchar como alguien declamaba que lo que ms vala la pena de Linux Magazine Nos sentimos orgullosos de nuestros orgenes como publicacin, eran las editoriales de Paul. que se remonta a los primeros En serio? Y tengo que sendas de la revolucin Linux. tirme agasajado? Esa es la utiliNuestra revista hermana, la dad de Linux Magazine para ti? publicacin alemana Linux Leer a un to que se equivoca Magazine, fundada en 1994, fue la primera revista dedicada a ms de lo que habla y que slo Linux en Europa. Desde aquellas lees o porque (a) da la casualitempranas fechas hasta hoy, dad de que tiene cierta gracia nuestra red y experiencia han escribiendo (eso lo admito) y crecido y se han expandido a la par que la comunidad Linux a puede que te haga rer, o (b) te lo ancho y largo del mundo. reafirma en tus propias creenComo lector de Linux cias? Magazine, te unes a una Pues has de saber que las opired de informacin niones, y eso es lo que es una dedicada a la distribucin del conocimiento y editorial en esencia, son mutaexperiencia tcnica. No nos bles e interesadas. En el mejor de limitamos a informar sobre el los casos verdades a medias, movimiento Linux y de Software cuando no mentiras completas Libre, sino que somos parte integral de l. por ser exagerados juicios (Juicios!Ni siquiera observaciones!) sobre hipersimplificaciones de la realinos proponemos cuando nos sentamos a dad. El valor de algo as es casi nulo. escribir), pero el fin es el mismo. Para ti, querido lector que tanto te Siempre haba supuesto que, si al lecgusta leer esta seccin, debera ser justo tor le gustaban las editoriales, le gustara al revs, que la apreciacin de lo valioso el resto (o al menos algunos) de los otros de la revista se produjera una vez que la artculos, ya que retaran su mente de la pgina 4 se dejara atrs, cuando uno misma manera. Pero esto de slo leo las penetrara en la seccin de los artculos editoriales se est volviendo absurdo. tcnicos, en el reino del cdigo, las tutoYa el mes pasado, despus del asunto de riales de implementaciones y de los Aaron Schwartz, le ced la palabra pstuexperimentos con software y hardware mamente a l y a su manifiesto, limitnrecin liberado. Ah hay verdad, pura, dome a intentar ser el ms preciso intrsimple, categrica y binaria: o funciona o prete de sus palabras. no. He ah una idea: ceder este espacio a Si te preguntas entonces por qu me otros para enfrentar a los lectores con molesto en escribir esto cada mes, una diversidad de puntos de vista. O eliteniendo como tengo tan pobre opinin minar la editorial por completo y destide las editoriales, pues primero porque a nar la pgina 4 a otros fines, a algn tipo todo el mundo le gusta escucharse a s de pasatiempo que estimule las meninmismo, por lo que mis escritos son un ges al estilo de los juegos que publicaba ejercicio de vanidad. Y, segundo, lo que Martin Gardner en Scientific American. es ms importante, porque las editoriales Mientras me lo pienso, pasa la pgina todas tienen un fin, un fin completay lee el resto de la puetera revista, que mente coherente con el del resto de la creo que la encontrars til. revista, y es el de intentar avanzar la mente del lector hacia otras cosas, hacerle pensar en cosas que tal vez no se les hubieran ocurrido. Concedido que las editoriales y los artculos persiguen ese fin de diferentes maneras (y no me atrevo a decir que lo Paul C. Brown consigan todas las veces, pero es lo que Director

Nmero 91

WWW.LINUX- MAGAZINE.ES

CONTENIDOS Magazine sollte n 91 hier stehen COVER STORY Linux Schlagwort

PORTADA
08 Visitando Amigos
Qu tal funciona el ltimo Windows en una mquina virtual? Hemos probado Windows 8 como sistema operativo husped en Linux utilizando VMware Workstation y VirtualBox.

PRCTICO
25 Un Par de Arranques
Aunque conseguir que Windows conjugue bien en una instalacin de Linux existente es difcil, con un poco de ingenio se puede configurar Windows 8 para arranque dual con Linux.

40 Control Remoto
Dejaste tu sistema ejecutndose? Olvidaste hacer un copia de seguridad crtica? Controla tu ordenador Linux desde cualquier parte con un telfono Android.

PRCTICO
29 Capa Nueva
Han pasado ms de 20 aos de su presentacin y HTTP muestra sin duda signos de envejecimiento. El nuevo protocolo SPDY de Google resuelve algunos problemas de HTTP sin que le afecte a los sitios webs existentes.

DESARROLLO
43 PHP x Sistema
PHP no es slo para sitios web. Los scripts de PHP en lnea de comandos llevan en funcionamiento desde hace ms de 10 aos, algo que hace al lenguaje y a sus libreras adecuadas para cualquier administrador que gestione servidores web.

14 Ajuste Perfecto
Desde hace aos, Windows se ha negado obstinadamente a dar soporte a cualquier sistema de archivos aparte del suyo propio, pero con un poco de ingenio, podemos conseguir que nuestro Windows se comunique con los sistemas de archivos ext de Linux.

47 Extractor de Destacados
Con el lector de ebook Kindle de Amazon, podemos guardar extractos, o destacados en un archivo. Ms tarde, podemos conectar el Kindle a un puerto USB de un equipo con Linux y recuperar la informacin con un script en Perl que la guarda en una base de datos.

19 Conexiones
La configuracin de Samba a menudo falla cuando los usuarios se saltan algunos parmetros. Vamos a mostrar cmo configurar un sistema Linux para compartir ficheros con Windows 8 en una red peer-to-peer.

31 Pesos Mosca
El objetivo de Kexi y Glom es crear bases de datos con poco esfuerzo. Comparamos la potencia de estas dos herramientas.

35 Significado Oculto

LINUX MAGAZINE
03 04 81 81 82

DVD Linux Magazine Editorial Eventos Informacin de Contacto Prximo Nmero

Los programas no son tan inteligentes como las personas cuando se trata de interpretar el significado de la informacin web. Si se quieren maximizar los rangos de bsqueda, probablemente tengamos que aadir a nuestros documentos HTML microformatos y microdatos.

Nmero 91

WWW.LINUX- MAGAZINE.ES

ADMINISTRACIN
53 Para el Protocolo
La bsqueda de errores en un servidor SMTP por medio de telnet y la comprobacin de los correos puede parecer una carrera sin fin. Pero Swaks nos ayuda a llegar a tiempo a la meta.

LINUX USER
66 Instalador de Ventanas
El administrador de sesiones Byobu extiende la shell, aadindole un abanico de funcionalidades tiles, tales como la divisin de pantalla, ejecucin de programas en el fondo, o la organizacin de programas en pestaas.

54 Hackeo Duro
Ahora que nuestras redes estn seguras y hemos convencido a nuestros usuarios de asegurar las contraseas y el software, es el momento de prestar atencin al hardware, para mantenerlo alejado de los ataques.

70 Malabares con Ficheros


Accede y gestiona archivos y documentos en tu servidor de ficheros o en un servidor remoto desde la comodidad de tu navegador o dispositivo Android.

HARDWARE
56 Proyecto: Casa Domtica
Ya se han quedado atrs en nuestra aventura los ejemplos simples de encender un LED o leer el estado de un pulsador. Ahora toca dar los ltimos retoques a nuestro hogar electrnico.

74 ltimo Aviso
Wodim trabaja entre las bambalinas de los programas ms populares para la grabacin de CD/DVD, pero es an ms poderoso en la lnea de comandos.

COMUNIDAD
78: Konsultorio
Klaus Knopper, creador de Knoppix, vuelve un mes ms para responder a las preguntas de los lectores. Este mes: Estado de Mint, Vivo o Muerto y Variaciones en Vaio.

61 Pi2
El ordenador Raspberry Pi, formado por una nica placa del tamao de una tarjeta de crdito, facilita la experimentacin en sistemas Linux empotrados. Mostraremos algunos ejemplos prcticos de cmo utilizar el Raspberry Pi en un entorno cotidiano.

s detalle s m 3 para 0 p r e V

80 El Nuevo Disquete de AOL


Lo chicos ms listos de marketing han comenzado a cargar pendrives USB con su informacin promocional en lugar de publicar los habituales folletos y otra quincalla.

WWW.LINUX- MAGAZINE.ES

Nmero 91

PORTADA Windows 8 Virtualizado

Windows 8 con VMware y VirtualBox

VISITANDO AMIGOS
Qu tal funciona el ltimo Windows en una mquina virtual? Hemos probado Windows 8 como sistema operativo husped en Linux utilizando VMware Workstation y VirtualBox. POR THOMAS LEICHTENSTERN
menudo es difcil vivir sin Windows. Uno de los mayores problemas es que el entorno Linux no ofrece una alternativa real a ciertos programas de Windows. En algunos casos, podemos ejecutar aplicaciones de Windows en Linux utilizando la API de compatibilidad Wine. Lamentablemente, Wine no funciona para todas las aplicaciones y situaciones. Una segunda alternativa es un sistema de arranque dual, que requiere reiniciar el ordenador cada vez que necesitamos un programa de Windows. Sin embargo, a pesar de estas opciones, los usuarios estn utilizando cada vez ms la virtualizacin como la manera ms eficiente para acceder a aplicaciones de Windows desde Linux. La tecnologa de las mquinas virtuales es tan madura que, en un uso normal, es difcil ver la diferencia entre un Windows en una mquina virtual y en un sistema fsico. A menos que ejecutemos juegos, que tienen un mejor rendimiento en su instalacin nativa, la virtualizacin es una opcin viable para una gran cantidad de aplicaciones de escritorio. Hemos decidido probar la ltima versin de Windows 8 en las herramientas de virtualizacin de escritorios lderes en el entorno de Linux: VMware Workstation 9 [1] y VirtualBox 4.2.2 [2].

VMware Workstation 9
En Agosto de 2012, VMware public la novena versin de su software comercial VMware Workstation. La licencia para VMware Workstation 9 es de 249 dlares o 170 euros, con un coste de actualizacin de 119 dlares o 70 euros. Segn VMware, la caracterstica ms importante de esta versin es el soporte para Windows 8, por lo que el hecho de que el dilogo de configuracin para las mquinas virtuales, ofrezca perfiles de 32 y 64-bit para Windows 8, no es algo que nos sorprenda (Figura 1).

dor con acceso a los Hemos sido capaces de instalar Winprogramas de Windows sin ningn problema en nuestro dows en el sistema. laboratorio. Nos gust bastante descubrir Encontraremos el lanzaque Windows 8 viene con un soporte dor en la esquina superior mnimo decente. El ratn y el teclado izquierda cuando activeparecen moverse sin problemas en la mos Unity. mquina virtual, tan pronto como el punEl modo Unity slo funtero del ratn toca una ventana de Winciona en la vista de escritodows. rio. Si lanzamos la aplicacin Para aprovechar todo el potencial del en vista mosaico, el escritorio sistema en una mquina virtual, necesitapermanecer vaco. Actualmente, mos instalar las extensiones de invitado. Unity tampoco funciona perfectamente en Las extensiones de invitado en Workstael modo escritorio. Por ejemplo, si hacetion 9 incluyen unos controladores espemos clic en una imagen en Explorer, una cialmente adaptados para varias reas del aplicacin a pantalla completa salta y nos sistema, pudiendo mejorar significativamuestra la imagen. Si cierras la aplicamente la experiencia. Despus de iniciar cin, primero nos dirige a los mosaicos y el sistema, seleccionaremos Install slo entonces nos devuelve al escritorio. VMware Tools en el men VM. Esta Sin embargo, arrastrar y soltar ficheros opcin indica al programa que monte una hacia y desde el sistema invitado funimagen ISO conteniendo las extensiones ciona perfectamente y Windows 8 se de invitado en el dispositivo DVD de la comporta correctamente cooperando con mquina virtual. el portapapeles compartido. VMware Para comenzar con la instalacin, simWorkstation transfiere fcilmente tanto plemente hay que hacer clic en Setup. En ficheros como un rbol de directorios el dilogo, a continuacin, podemos defidesde el anfitrin al invitado y viceversa. nir qu controladores y caractersticas queremos instalar (Figura 2). Si queremos trabajar directamente con aplicaciones de Windows, podemos hacerlo en el modo Unity. El modo Unity en VMware Workstation aisla al programa en ejecucin del escritorio de Windows (Figura 3) y lo integra directamente con el escritorio de Linux. Para entrar en el modo Unity, seleccionaremos View | Unity. Para permitirnos el acceso a cualquier programa en Windows, VMware ha Figura 1: La versin 9 de VMware para escritorios viene con un creado su propio lanza- perfil de Windows 8.

Nmero 91

WWW.LINUX- MAGAZINE.ES

Windows 8 Virtualizado PORTADA

Esto funciona incluso para textos o URLs que podemos intercambiar copiando y pegando entre la mquina virtual y la real.

Enlace al Mundo Exterior


Integrar carpetas entre el sistema anfitrin e invitado es algo realmente sencillo. Encontramos esta funcin en Settings

para la mquina virtual, debajo de Options | Shared Folders. Hay que especificar el nombre de la carpeta deseada en el directorio de la mquina invitada. Sin embargo, VMware no monta directamente esta carpeta como un disco, sino como vmware-host en la Red local. Para asignar una letra al disco, haremos clic con el botn derecho y seleccionaremos Connect network drive desde el men contextual.

Otra caracterstica importante de las mquinas virtuales es la forma en la que el software pasa limpiamente a travs de la interfaz fsica de USB al sistema invitado. VMware Workstation hace de nuevo un buen trabajo. El sistema invitado detect inmediatamente dispositivos bastante exticos, como smartphones, en nuestro laboratorio y nos permiti acceder a ellos como si estuvieran en un PC fsico (Figura 4). Fuimos capaces de conectar con xito una grabadora de DVD externa por USB, algo que VMware proporcion correctamente en el sistema invitado, soportando tanto datos de lectura como de escritura. De los cinco dispositivos USB probados, VMware detect inmediatamente todos ellos y los activ en el sistema, incluso la webcam conectada estaba preparada para su uso en unos pocos segundos. Slo el dispositivo DVB-T de Pinnacle rehus cooperar al necesitar un controlador apropiado. VMware soporta, adems, conexiones USB 3.0 si el sistema anfitrin tiene dicha interfaz. Para ello, primero necesitaremos activar la interfaz en Settings, debajo de USB Controller, seleccionando la entrada

Figura 2: Las extensiones de invitados en VMware ofrecen una gran variedad de controladores adicionales, diseados especialmente para soportar la cooperacin entre Windows 8 y la mquina virtual.

Figura 3: El modo Unity nos permite acceder a nuestras herramientas de Windows desde el escritorio de Linux. Los eventos de Unity incluyen un lanzador, algo de lo que carece Windows 8.

WWW.LINUX- MAGAZINE.ES

Nmero 91

PORTADA Windows 8 Virtualizado

Figura 4: VMware gestiona fcilmente conexiones por USB con el protocolo MTP.

USB 3.0 del combo cerca de USB Compatibility. Si un dispositivo USB est conectado y no est directamente disponible en la mquina virtual por ejemplo, debido a que est en uso en el anfitrin hay que ir al men VM | Removable Devices. En la mitad inferior, veremos un men desplegable con todos los dispositivos USB identificados. Para activar uno, hay que arrastrar el puntero del ratn al dispositivo y a continuacin, seleccionar Connect (Disconnect from host) desde el submen. Tuvimos algunos problemas con la reproduccin de audio en VMware Workstation. Con la configuracin por defecto hay una exposicin continua al ruido y distorsin. Para remediar esta situacin, hay que cambiar la configuracin de physical soundcard de Auto detect a ALSA default sound card. VMware no ofrece actualmente soporte de vdeo en 3D para Windows 8 y el soporte de la impresora tampoco es muy brillante. Despus de activar la red de impresin, Windows lista todas las impresoras en la red local (Figura 5) y nos permite imprimir. Sin embargo, la salida en nuestro laboratorio fue texto plano Postscript inutilizable.

rio, instalar Windows 8 como sistema invitado en VirtualBox fue una experiencia sin problemas. Windows 8 incluye integracin para el ratn y teclado para VirtualBox, al igual que para VMware. Podemos establecer las extensiones de invitado en VirtualBox haciendo clic en

Devices | Install guest extensions Tcnicamente, ocurre lo mismo que en VMware. El software activa la imagen ISO con los controladores en el dispositivo DVD. La instalacin comenzar al hacer clic en VBoxWindowsAdditions. El tamao de las extensiones slo 9 MB para Windows de 32-bit sugiere que VirtualBox viene con menos controladores que VMware. Y esto es evidente en varios sitios, donde el programa es menos capaz que su competidor. VirtualBox ofrece adems un modo sin fisuras para los programas, que se puede activar en View | Enable seamless mode o presionando Host + L. (La tecla Host es Ctrl derecho por defecto.) Podemos salir de este modo de la misma forma. Pero a diferencia de VMware, VirtualBox carece de un lanzador de aplicaciones. Este modo slo muestra los programas ejecutndose y la barra de tareas. El modo a pantalla completa (Host + F) da la impresin de que el sistema virtualizado se est ejecutando nativamente en el ordenador. Una caracterstica especial es la opcin Scaled (Host + C), que nos permite cambiar la proporcin de aspecto del escritorio para adecuarse a nuestras propias necesidades arrastrando los bordes.

VirtualBox
Los desarrolladores de Oracle han aadido soporte para Windows 8 a la versin de VirtualBox 4.2, que es gratis para los usuarios domsticos. En nuestro laboratoFigura 5: Las apariencias engaan. Aunque la extensin nos permite imprimir desde la mquina virtual, no mantiene el formato original. Las impresiones consistieron en cdigo en texto plano Postscript.

10

Nmero 91

WWW.LINUX- MAGAZINE.ES

PORTADA Windows 8 Virtualizado

Figura 6: Al igual que VMware, VirtualBox monta directorios del anfitrin como zonas compartidas en Windows.

La reproduccin de sonido en la mquina virtual fue molesta debido a clics regulares. Cambiando la infraestructura de audio de Pulse Audio a LASA Audio Drive en la seccin de Audio casi arregl el problema. Aunque el ruido no desapareci totalmente, los clics fueron mucho menos frecuentes. El uso de la tarjeta de sonido virtual ICH AC97 elimin el fenmeno completamente pero debido a que Windows no detecta automticamente la tarjeta, primero necesitamos lanzar el Device Manager en la mquina invitada, luego botn derecho del ratn en la entrada Audio controller con la exclamacin amarilla y seleccionar Update Driver Software en el men del botn derecho. Para instalar el controlador, hay que seleccionar Automatically search for updated driver software? . Una ventaja adicional de la tarjeta virtual de sonido ICH AC97 es que da un volumen mucho ms alto que el perfil de Intel HD Audio.

De Adentro hacia Fuera


El siguiente obstculo en el curso es intercambiar datos entre el sistema invitado y el anfitrin. Aunque activamos el interruptor en la configuracin del dispositivo virtual, VirtualBox rechaz intercambiar cualquier tipo de fichero o directorio entre el anfitrin y el invitado utilizando el arrastrar y soltar (o copiar y pegar). El nico tipo de datos que permite el invitado de esta forma son fragmentos de texto o URLs que copiamos. Sin embargo, VirtualBox ofrece la posibilidad de montar directorios del sistema anfitrin en el invitado. El procedimiento es idntico al de VMware: el directorio deseado es proporcionado en la red local en el invitado (Figura 6). Intercambiar datos fue posible por esta interfaz pero de forma algo engorrosa.

Conclusiones
VMware y Windows 8 interaccionan de manera fiable el uno con el otro, al menos la mayor parte, difuminando con efectividad la frontera entre el husped y el anfitrin. Slo la problemtica reproduccin de sonido y el no poder utilizar la impresora fue lo nico que estrope un poco nuestra impresin sobre VMware Workstation 9. Varios kudos fueron otorgados por el excelente soporte de arrastrar y soltar y de Copiar y Pegar. VirtualBox es una historia completamente diferente. Varias de las caractersticas de VirtualBox no funcionaron adecuadamente y el soporte bastante pobre de USB fue causa de crtica. Por supuesto, debemos considerar que, a diferencia de VMware Workstation, VirtualBox es gratuito para usuarios domsticos. Si necesitamos un sistema casi perfecto, tenemos que tener en cuenta que habr que pagar unos 249 dlares/180 euros por VMware Workstation 9 aunque si podemos vivir con una integracin algo menos ideal entre un sistema invitado y su anfitrin, VirtualBox nos puede servir bastante bien de forma gratuita.

Nmero Equivocado?
A diferencia de VMware, VirtualBox no muestra una ventana emergente apuntando al nuevo dispositivo y pregunta si queremos confirmar con un clic cuando se conecte un dispositivo USB. Despus de enchufar el dispositivo USB en VirtualBox, necesitamos hacer clic con el botn derecho del ratn en el icono de USB en la barra inferior para mostrar el men contextual.

Incluso en el nivel ms simple detectar y montar un lpiz USB VirtualBox tembl y cay. VirtualBox fall al detectar algunos dispositivos y otros los identific como Teclados USB. Al final del da, slo fuimos capaces de integrar dos de nuestros cinco especmenes de prueba en el sistema sin mayores dolores de cabeza. La historia fue similar cuando enchufamos un modelo reciente de smartphone Android, que utilizaba el relativamente sofisticado protocolo de transmisin MTP. En algunos casos, VirtualBox revel lentamente al menos una parte de los contenidos del dispositivo, pero fue imposible abrir directorios. En otros casos, el software detect el dispositivo pero sin mostrar contenido alguno. Un vistazo al gestor de dispositivos lo revel todo. Parece que Windows no reconoci el dispositivo correctamente y por lo tanto, no instal el correspondiente controlador. Conectar la grabadora de DVD por USB caus a VirtualBox menos problemas. El software soport fcilmente ambas operaciones de escritura y lectura y Windows identific correctamente la webcam que enchufamos. Al igual que su competidor, VMware, VirtualBox fall en el soporte del dispositivo DVB-T Pinnacle por falta de los controladores apropiados.

RECURSOS
[1] VMware: http://www.vmware.com [2] VirtualBox: http://www.virtualbox.org

12

Nmero 91

WWW.LINUX- MAGAZINE.ES

PORTADA Sistemas de Ficheros Linux en Windows

Cmo utilizar sistemas de archivos de Linux con Windows 8

Ajuste Perfecto

Desde hace aos, Windows se ha negado obstinadamente a dar soporte a cualquier sistema de archivos aparte del suyo propio, pero con un poco de ingenio, podemos conseguir que nuestro Windows se comunique con los sistemas de archivos ext de Linux. POR THOMAS LEICHTENSTERN

no de los obstculos que se interponen en el camino de la cooperacin entre Linux y Windows en un nico equipo siempre ha sido la incompatibilidad de los sistemas de archivos. Aunque Linux ha hecho progresos sorprendentes en este sentido y ahora soporta tanto sistemas de archivos NTFS como FAT sin ningn problema, Microsoft sigue negndose obstinadamente a dar soporte a nada que no sean sus propios sistemas de archivos nativos (vase la Figura 1). A lo largo de los aos, varios proyectos han proporcionado acceso a los sistemas

Figura 1: La misma historia de siempre continua en Windows 8: no hay soporte para otros sistemas de archivos.

dny3d, 123RF. com

de archivos de Linux desde Windows. En este artculo, vamos a investigar si estas herramientas estn realmente listas para la aparicin de Windows 8. Para ello, hemos creado un sistema con una versin de 32 bits de Windows 8 y hemos probado el acceso a los sistemas de archivos ext2/3/4, ReiserFS y Btrfs de Linux.

Drivers de Sistemas de Archivos


De lejos, la forma ms elegante sera dejar que Windows accediera a los sistemas de archivos de Linux de forma

transparente, sin necesidad de herramientas especiales. Un driver de sistema de archivos funciona tras el escenario, haciendo que el sistema de archivos de Linux parezca nativo, y ste es el enfoque que el veterano proyecto Ext2 Installable File System for Windows [1] ha seguido durante aos. Ext2 IFS afirma soportar Windows NT4.0/2000/ XP/2003/Vista/2008, pero no hay mencin al respecto de Windows 8. La primera vez que lanzamos el programa, gener un mensaje de error (vase la Figura 2) explicando que no es compatible . A continuacin, se cambi el modo de compatibilidad de Windows 8 a Windows Vista SP3, y Ext2 IFS se ejecut sin emitir ningn mensaje de error, aunque los resultados fueron decepcionantes. A pesar de que fuimos capaces de asignar letras de unidad a los sistemas de archivos de Linux utilizando el elemento del panel de control IFS Drives, no era posible acceder a los volmenes.

Figura 2: Ext2 IFS para Windows no es compatible con Windows 8. La ltima versin compatible es Windows 2008.

14

Nmero 91

WWW.LINUX- MAGAZINE.ES

Sistemas de Ficheros Linux en Windows PORTADA

Otro candidato del grupo de controladores de sistemas de archivos es Ext2Fsd [2]. Aunque el nombre sugiere soporte slo para ext2, no es compatible solamente con todos los sistemas de ficheros EXT, sino que de acuerdo con la pgina web del proyecto, tambin soporta ReiserFS y HPFS. Otra ventaja es que soporta ext3 con journaling, evitando as las posibles incoherencias del sistema de archivos. La mayor parte de las otras herramientas de esta clase montan ext como sistemas de archivos ext2 y se saltan el journaling. El vistazo a la pgina de Ext2Fsd nos hace tener pocas esperanzas: la ltima actualizacin fue en julio de 2011, sin ninguna referencia a Windows 8. El soporte oficial slo se extiende a Windows 7. Sin embargo, estos detalles no me disuadieron y prob mi suerte con una mquina Windows 8. Tambin en este caso, apareci el mismo tipo de mensaje de error, el de Ext2 IFS: his programm cannot be installed on Windows NT version 6.1.8.000 or later. Aunque nos las arreglamos para instalar el controlador en modo Windows 7, obtuvimos los mismos resultados que antes: en principio no se puede acceder a las particiones de Linux. Sin embargo, eso cambi tras un reinicio. En nuestro laboratorio, Ext2Fsd daba soporte a ext2 y ext3 en lectura y escritura, as como a ext4 en modo de slo lectura. Para acceder a las particiones ext en operaciones de escritura, pulsamos con el botn derecho en la particin correspondiente en el Administrador de Volmenes Ext2 (vase la Figura 3) y seleccionamos Show Properties en el men contextual. A continuacin, pulsamos en botn Ext2 Properties. En la nueva ventana, desactivamos la casilla Mount volume in readonly mode y confirmamos el cambio pulsando en Apply. Independientemente del mensaje que aparece ahora diciendo que es necesario reiniciar el sistema para permitir acceso de escritura, fuimos capaces de acceder a la particin sin reiniciar nuestra mquina. Si las particiones no se encuentran en una unidad extrable, es una buena idea asignar una letra de unidad fija. Para ello, bajo Show Properties | Mount Points | Add, habilitamos Create a permanent MountPoint via Session Manager mien-

tras mapeamos el disco (Change Drive Letters). La principal ventaja de esto es que las unidades estarn disponibles directamente tras el arranque. La configuracin por defecto de Automatic mount via MountMgr significa que necesitamos iniciar el Administrador de Volmenes Ext2 previamente para ver las Figura 3: El Ext2 Volume Manager que viene con el controlador de unidades. Esto no sistemas de archivos Ext2Fsd ofrece toda una gama de opciones es un error de pro- para administrar particiones de Linux. grama, pero se promen contextual. En el cuadro de diduce porque Windows ignora alegrelogo que aparece dicindonos que deseamente la opcin Enable Ext2Mgr startup. mos guardar un archivo, pulsamos Next El nico inconveniente es que Ext2Fsd hasta la seccin en la que seleccionamos no soporta los sistemas ReiserFS o Btrfs el directorio de destino. El ltimo cuadro en Windows 8. de dilogo muestra los archivos en el Administradores directorio, y podemos activar o desactide Archivos var las casillas para seleccionar o anular Si slo necesitamos acceder a las partila seleccin. ciones de Linux desde Windows ocasioLa herramienta de exploracin con nalmente, sin duda ser suficiente con interfaz grfica de usuario Explore2fs [4] una herramienta que permita el acceso funciona bajo principios similares. En su temporal, por ejemplo en forma de un propio explorador de archivos, muestra explorador de archivos. las particiones que encuentra en la El programa Linux Reader [3], ofrecido columna de la izquierda y el contenido gratuitamente por DiskInternals, soporta del sistema de archivos a la derecha. En ReiserFS adems de los sistemas ext. En nuestro laboratorio, la herramienta su propio explorador de archivos (vase detect todas las particiones ext pero se la Figura 4), permite el acceso en slo neg a mostrar su contenido, por lo que lectura a los sistemas de archivos. era totalmente inutilizable. El programa es ms o menos cdigo privativo, y no soporta arrastrar y soltar, o copiar y pegar de directorios y archivos. Para transferir un archivo o carpeta, tenemos que pasar por un procedimiento relativamente complejo pulsando el botn derecho sobre el archivo o directorio deseado y seleccio- Figura 4: Linux Reader slo permite acceso en lectura a las particionando Save en el nes Linux, pero s incluye ReiserFS.

WWW.LINUX- MAGAZINE.ES

Nmero 91

15

PORTADA Sistemas de Ficheros Linux en Windows

Otra alternativa es el programa shareware Total Commander [5]. La versin de prueba est limitada a un mes, y a continuacin, para activar el software, tendremos que pagar el equivalente a 40 francos suizos (32 euros) al desarrollador. Una de las mayores ventajas de Total Commander es la interfaz de plug-ins que le permite ampliar las funcionalidades del navegador de muchas formas, incluyendo el soporte para sistemas de ficheros de Linux. Para instalar estos complementos, seleccionamos Configuracin | Opciones. En el cuadro de dilogo Configuracin (vase la Figura 5) nos vamos a Complementos y luego presionamos el botn Descargar nuevos complementos de ghisler.com. Esto nos lleva a la pgina de descargas [6] que nos muestra la lista de plugins en el navegador. Avanzamos pgina hasta que vemos la seccin File system extensions (plugins), que contiene los complementos que dan soporte en acceso a sistemas de archivos de Linux. Tras descargar el archivo ZIP con la extensin correspondiente, descomprimimos el archivo. Entre otras cosas, veremos un archivo con extensin .wfx, que es el complemento. En Total Commander, pulsamos en Configuracin | Opciones | Complementos y abrimos la seccin de Complementos de sistema de archivos (.WFX) pulsando sobre Configurar a la derecha. Para integrar el nuevo complemento, pulsamos en Aadir, y a continuacin con el explorador de archivos navega-

mos hasta el directorio donde hemos descomprimido el complemento. Ahora pulsamos en el archivo WFX deseado y confirmamos con Abrir. El complemento ya est listo para usar (vase la Figura 6). Hicimos la prueba con los complementos Ext2+Reiser 1.6 y DiskInternals Reader 2012/06/07. Para Figura 6: Tras instalar los complementos, Total Commander perutilizar las herra- mite acceder a las particiones Linux a travs de Network, supomientas, debemos niendo que se inici con derechos administrativos. iniciar el navegador momento, Windows proporciona slo un de archivos con permisos de adminissoporte muy rudimentario para ReiserFS trador, de lo contrario, no se pueden y nada en absoluto para Btrfs. montar las particiones de Linux. Ambos Si deseamos tener acceso a las particomplementos se basan en el mismo ciones de Linux bajo Windows de forma principio y crean nuevas entradas en el regular, el controlador de sistema de Network Neighborhood de la aplicaarchivos Ext2Fsd es probablemente la cin. mejor opcin. Aunque, como su nombre Haciendo doble clic en una entrada se lo indica, slo permite el acceso a sistemuestra la lista de particiones disponimas de archivos ext y es de lectura y bles, que a su vez podemos abrir con un escritura para las tres versiones. doble clic. Ambos complementos tienen Por contra, la mejor manera de echar una desventaja comn, ya que slo un vistazo rpido a una particin de soportan acceso en lectura a las particioLinux la ofrece DiskInternals Linux Reanes Linux. Sin embargo, ambos permiten der. Sin embargo, esta herramienta slo arrastrar y soltar el contenido para soporta acceso en lectura a las particiocopiar, lo que lo hace mucho ms fcil nes de Linux, y la transferencia de contede utilizar. nido es un proceso algo complicado. Aunque ambos complementos abrieTotal Commander se encuentra en un ron particiones ext2 y ext3 sin ningn punto intermedio: equipado con los problema, un intento de acceder a una complementos adecuados, tambin particin ext4 con soporta el acceso a los sistemas de archiext2+Reiser colg el vos de Linux, pero, de nuevo slo con administrador de acceso en lectura. archivos. El complemento DiskInternals se comport de RECURSOS manera estable en la [1] Ext2 IFS: http://www.fs-driver.org lectura de todas las [2] Ext2Fsd: http://www.ext2fsd.com particiones ext y la [3] Linux Reader: particin con formato http://www.diskinternals.com/linuxReiserFS.
reader/

Conclusiones
Si tenemos que acceder a particiones tanto de Windows como de Linux, no podremos evitar el trato con particiones ext2/3/4. Hasta el

[4] Explore2fs:

http://www.chrysocome.net/explore 2fs
[5] Total Commander:

http://www.ghisler.com
[6] Complementos de Total Commander:

Figura 5: Gracias a su interfaz de complementos, Total Commander soporta extensiones para sistemas de archivos de Linux, entre otros.

http://www.ghisler.com/plugins.htm

18

Nmero 91

WWW.LINUX- MAGAZINE.ES

Windows 8 y Samba PORTADA

Una red con Windows 8 y Linux

nobeastofierce, 123RF.com

CONEXIONES
POR THOMAS DRILLING
uando se est configurando la comparticin de ficheros e impresoras en entornos heterogneos en un sistema Linux, Samba juega un papel crucial. El que los ficheros compartidos funcionen de manera transparente, requieran configuracin o directamente no funcionen depende de varios factores (vase el cuadro Teora y Prctica). Si queremos que nuestro sistema Linux participe a la hora de compartir ficheros por medio de los servicios CIFS/SMB nativos de Windows, tendremos que instalar el paquete samba en nuestro sistema Linux. Si tan slo se quiere acceder a un sistema Windows 8, lo nico que necesitaremos es el paquete smbclient. En este artculo vamos a describir cmo configurar una red peer-to-peer entre Windows 8 y Linux. tante manejable, consistiendo en una seccin [global] y una serie de recursos compartidos para los directorios de conexin de los usuarios y las impresoras. Samba define bastantes valores por defecto, lo que elimina la necesidad de que los usuarios tengan que crear de forma explcita estas configuraciones el comando testparm las muestra. Sin embargo, hay muchos parmetros que tienen al menos dos notaciones complementarias, tales como writeable = yes y readonly = no. Si el recurso se encuentra visible en ambos lados pero el acceso falla, a menudo el problema se encuentra en la autenticacin. Samba crea una correspondencia entre las diversas redes y los modos de comparticin de las LAN de Windows con la ayuda del parmetro security = ... Actualmente, slo user y ads o domain son de importancia. Windows:

La configuracin de Samba a menudo falla cuando los usuarios se saltan algunos parmetros. Vamos a mostrar cmo configurar un sistema Linux para compartir ficheros con Windows 8 en una red peer-to-peer.

comandos para trabajar con los recursos, as como el cliente de la lnea de comandos smbclient. Se puede utilizar la herramienta para ver los recursos ofertados por un servidor Windows o Samba, o incluso para conectarse usando el cliente de forma similar a FTP. Los paquetes smbfs o cifs-utils contienen diversas utilidades para montar sistemas de ficheros y sistemas de ficheros virtuales. El paquete cifs-utils, por ejemplo, proporciona el sistema de ficheros de red actualmente utilizado por los clientes Linux, CIFS VFS, que reemplaza al antiguo sistema de ficheros SMB. Normalmente el paquete smbfs slo contiene un wrapper por razones de compatibilidad, asegurndose de que podemos utilizar simultneamente smbfs y cifs. Los escritorios KDE y Gnome automticamente

Samba: de lo Simple a lo Complejo


La complejidad a la hora de acceder a redes Windows desde Linux con Samba se ve agravada por el hecho de que Samba tiene que hacer corresponder las cuentas y los permisos de forma fiable y gestionar las cuentas de la mquina. Si se quiere saber cuntas opciones se encuentran activadas en un servidor Samba, pueden comprobarse por medio del comando:
testparm -v

Control Total vs. Cambiar

Visibilidad en Samba
Casi todas las distribuciones instalan al menos los paquetes clientes smbclient y smbfs o cifs-util automticamente y normalmente se instala tambin el paquete sambatools. El paquete smbclient contiene diversas herramientas para la lnea de

Un fichero smb.conf tpico, con una configuracin Samba por defecto es bas-

En la filosofa de permisos de Windows, hay una diferencia significativa entre Control Total y Modificar (en Seguridad Compartida) o Cambiar (en Permisos Compartidos) para el sistema de ficheros NTFS, aunque los nombres sugieran efectos similares. Los permisos para modificar permiten cambiar los ficheros o las carpetas y por ello, tambin borrarlos, pero slo con el control total se pueden modificar los permisos de una carpeta. Si se combinan los permisos ordinarios de una carpeta del sistema de ficheros NTFS local con los permisos compartidos, se aplica siempre el permiso ms restrictivo. Por ejemplo, si un usuario slo tiene permiso para Leer, slo podr leer en el lado Linux, incluso si Windows autoriza al usuario el control total a nivel de directorio (NTFS). Por ello siempre debera utilizarse CIFS VFS para montar cualquier recurso compartido de Windows de forma permanente que se necesite para el trabajo diario. Las opciones posibles son similares a las de smbmount.

WWW.LINUX- MAGAZINE.ES

Nmero 91

19

PORTADA Windows 8 y Samba

Teora y Prctica
La comparticin de ficheros entre Linux y Windows 8 a veces falla, pero esto no significa necesariamente que se haya hecho algo mal. Incluso en redes Windows homogneas, XP, Vista, Windows 7 y Windows 8 podran rehusar a comunicarse los unos con los otros porque Microsoft continuamente est incorporando nuevas tecnologas que hacen difcil la comunicacin (vase el cuadro La Red de Windows). Un ejemplo importante de los cambios que lleva a cabo Microsoft a la hora de compartir ficheros lo encontramos en la funcionalidad presentada en Windows 7 denominada Grupo Hogar, que Microsoft dice que simplifica la configuracin, aunque los Grupo Hogar en realidad dificultan la comunicacin entre cualquier sistema que no sea Windows 7 o Windows 8. La funcin Grupo Hogar se basa en WS-Discovery (Web Services Dynamic Discovery Service), as como en otras tecnologas adicionales requeridas para que la conexin funcione, tales como NLA (Network Location Awareness). Windows 7 y 8 tambin usan nuevas tecnologas para detectar redes en entornos basados slo en Windows, tales como LLTD (Link Layer Topology Discovery). Desde Windows Vista, estas tecnologas de propagacin y deteccin se han encontrado bajo el control del cortafuegos. Esto significa que los cuatro tipos de redes posibles red pblica, red de dominio, red de trabajo y red de hogar juegan un papel importante cuando se trata de propagar y encontrar los clientes en la red. Windows identifica las redes sin un controlador de dominio por medio de la direccin de la puerta de enlace de sus respectivas interfaces de red, mientras que NLA identifica cada dispositivo de forma individual para que se encuentren dentro de la puerta de enlace por medio de sus direcciones MAC, descubrindolas por medio de ICMP y ARP.

por medio de sistemas de ficheros virtuales, sin la necesidad de que el usuario necesite los privilegios del root. Esto significa que los recursos compartidos de Windows o Samba pueden usarse directamente en el administrador de archivos, sin tener que instalar ningn paquete adicional. La funcionalidad podra estar limitada, pero es suficiente como para realizar acciones simples como el copiado de datos. Ambos escritorios permiten que los usuarios busquen recursos compartidos en la red local. La Figura 1 muestra un ejemplo en KDE. Tcnicamente, KDE usa esclavos KIO para montar recursos compartidos CIFS. La sintaxis es:
smb://<usuario>@U <servidor>/<recurso>

instalan el servidor Samba por medio del paquete samba, tan pronto como compartamos un recurso en el administrador de archivos correspondiente.

Apunte
Como casi todas las distribuciones actuales incluyen configuraciones por defecto que simplifican la configuracin de Samba, en este artculo nos vamos a centrar en lo esencial. Al mismo tiempo, vamos a intentar resolver problemas de conectividad debidos a fallos de hardware, configuraciones errneas de TCP/ IP, rutas incorrectas, etc. Los problemas de acceso ocasionados por las configuraciones de los cortafuegos, los problemas relacionados con los privilegios o los problemas de autenticacin se explicarn slo si fuera necesario a la hora de resolver algn ejemplo concreto. Esto tambin es aplicable a las peculiaridades de Windows relacionadas con la visibilidad, tales como la propagacin de los recursos de red o el indexado. Como anticipo quiero resaltar que el acceso a un recurso Windows requiere que se tenga una cuenta con el mismo nombre en la mquina Linux. Tericamente, siempre se puede crear el nombre de usuario correspondiente en Linux con el comando useradd. Hay que asegurarse de utilizar el parmetro -M para que el comando no cree el directorio home y -s /sbin/nologin o -s /bin/false para evitar que el usuario pueda utilizar un intrprete de comandos, sin embargo, smbpasswd ofrece una solucin ms

fcil. La nica forma de evitar la creacin de una base de datos de usuarios local y asncrona es utilizando un servidor de claves en la red por ejemplo, si el servidor Samba acta como un controlador de dominio o es miembro de un dominio Windows.

Clientes SMB en KDE y Gnome


Los escritorios modernos como KDE y Gnome ofrecen mecanismos transparentes para acceder a recursos remotos CIFS

Sin embargo, KDE no soporta todas las funcionalidades del protocolo CIFS con este tipo de accesos. Adems, no todos los programas pueden acceder a un recurso compartido de esta forma. Por ejemplo, el acceso normalmente fallar cuando KDE ejecute programas Gtk, tales como LibreOffice, GIMP o Adobe Reader. Si queremos que otros programas puedan acceder a los recursos CIFS por medio de KDE, habr que instalar el paquete Smb4k [1] y utilizar el comando

Red de Windows
En un grupo de trabajo normal de Windows, todos los equipos actan como iguales. Todas las cuentas de usuario se almacenan localmente en cada PC. Si queremos conectarnos a un recurso compartido de un equipo en un grupo de trabajo, necesitamos una cuenta en ese equipo. El grupo de trabajo por s mismo no se encuentra protegido por ninguna contrasea. Fsicamente, sin embargo, todos los equipos del grupo de trabajo deben residir en la misma red local o subred. Los Grupos Hogar, presentados en Windows 7 y soportados en Windows 8, son un tipo especial de grupo de trabajo. Aunque facilitan la comparticin de imgenes, msica, vdeos, documentos e impresoras en la red de casa por medio de un protocolo para los Grupos de Hogar especialmente diseado y desarrollado que slo funciona en Windows 7 y Windows 8 no funciona en Samba ni en los PC Linux. Un Grupo Hogar se encuentra protegido por medio de una contrasea. Los miembros del grupo slo necesitan entrar en el mismo una vez cuando aaden el ordenador al grupo. Si un equipo Windows pertenece a un Grupo Hogar, habr que abandonar dicho grupo para poder compartir con Linux. Al contrario que las redes domsticas, las redes Windows basadas en dominios siempre contienen uno o ms servidores que se encargan de manejar la seguridad y los permisos para el resto de los equipos del dominio. Slo los usuarios del dominio tienen los privilegios de acceso y pueden conectarse a cualquier ordenador del dominio con las credenciales de su cuenta y una contrasea, sin necesidad de tener una cuenta local en ese ordenador. Un equipo Linux con Samba puede actuar como controlador de dominio para un dominio Windows NT o usar OpenLDAP y Kerberos para proporcionar un sistema de autenticacin centralizado en el dominio Windows. Con Samba 4, Samba Domain Controller puede incluso proporcionar un Directorio Activo. La implementacin de Samba 4 contiene a Kerberos y OpenLDAP. Estas soluciones estn pensadas para las redes corporativas y por lo tanto se salen del mbito de este artculo.

20

Nmero 91

WWW.LINUX- MAGAZINE.ES

Windows 8 y Samba PORTADA

smb4k_mount proporcionado por el paquete para montar los recursos compartidos. Adems, KDE permite que los usuarios monten los recursos compartidos SMB de forma permanente por medio del asistente de red y la URL remote:/. Los usuarios de Gnome pueden tambin navegar por los recursos compartidos CIFS de la red local (Windows 8 o Samba) sin la necesidad de instalar ningn software adicional. Los recursos compartidos pueden verse en Nautilus y se pueden acceder a ellos como si fuesen recursos locales. Para ello, Gnome utiliza el sistema de ficheros virtual GVFS, que tambin soporta accesos a los recursos compartidos por medio de FTP, SFTP y WebDAV en Gnome. GVFS no soporta todas las funciones del protocolo CIFS de modo que slo es til para un uso ocasional. Si se necesitase un recurso compartido de manera permanente, habra que configurar un punto de montaje permanente y guardarlo como un atajo en Dolphin o Nautilus en Lugares.

Puntos de Montajes Permanentes


Los puntos de montajes permanentes de los recursos compartidos de CIFS se basan en el sistema de ficheros virtual CIFS VFS en todas las distribuciones, el sucesor de SMBFS. Al contrario que GVFS, CIFS VFS soporta todas las funciones del protocolo CIFS. El programa mount.cifs se usa para montar los recursos compartidos CIFS [2]. Por cierto, en las unidades de red y al contrario que con los volmenes locales, deberamos utilizar siempre sync o _netfs (por ejemplo, cuando se integren sistemas iSCSI) para evitar la prdida de datos si la conexin de red se corta o el servidor deja de ser accesible. Tambin es til para los puntos de montaje de red montados de manera permanente, que el gestor Network Manager no gestione las interfaces de red. Habra que configurarlas manualmente por medio de /etc/network/interfaces (Debian, Ubuntu) o /etc/sysconfig/ network-scripts (Red Hat y derivados), ya que las distribuciones no activan el gestor Network Manager hasta que el usuario no haya iniciado su sesin.

Ubuntu 12.04 LTS, pero los pasos pueden aplicarse fcilmente a cualquier otra distribucin. Para poder seguir todos los pasos indicados en esta seccin, primero hay que asegurarse de que los siguientes paquetes samba, smbclient y cifs-vfs se encuentren instalados en el ordenador. Las distribuciones ms populares los traen instalados por defecto. Tambin son tiles los paquetes opcionales sambatools y el wrapper smbfs. Si se quieren compartir ficheros o directorios de Windows 8 para utilizarlos desde Linux, hay que asegurarse de que se ha iniciado sesin en Windows y Linux con cuentas de usuario con idntico nombre. Por otro lado, se puede ejecutar el comando
smbpasswd -a <usuario>

Figura 1: KDE puede buscar los recursos compartidos de Windows 8 por s mismo.

Figura 2: Si quieres comunicarte con Linux, el PC con Windows 8 no debe proporcionar un Grupo Hogar o ser miembro de uno.

Eliminando el Grupo Hogar


En el siguiente ejemplo, accedemos a un recurso compartido de Windows 8 desde

como root en Linux para crear un usuario Samba con un nombre que coincida con el de Windows. En la interfaz de mosaico de Windows 8, hay que seleccionar la aplicacin escritorio. Luego, en la ms que familiar vista del escritorio, hay que hacer clic en el icono del administrador de archivos de barra de tareas y comprobar en el panel de navegacin de Explorer si el PC Windows pertenece al Grupo Hogar o si se ha creado uno nuevo (Figura 2). Si es el caso, hay que ir a la seccin Redes e Internet del Panel de Control para abandonar el Grupo Hogar. Ahora, en la seccin Redes e Internet del panel de control, hay que hacer clic en Seleccionar Grupo Hogar y opciones de comparticin (Figura 3) y en el cuadro de dilogo que aparece, seleccionar Cam- Figura 3: Utiliza Seleccionar Grupo Hogar y opciones de combiar opciones del Grupo particin en el Panel de Control para abandonar el Grupo Hogar, Hogar y luego Abandonar si fuera necesario.

Grupo Hogar en Acciones avanzadas del Grupo Hogar. En el cuadro de dilogo Abandonar Grupo Hogar que aparece luego, hay que presionar el botn con el mismo nombre una vez que Windows 8 haya finalizado el proceso automtico de cambios de privilegios, usuario y grupo (barra de progreso) hay que presionar el botn Finalizar. Ahora el PC Windows est preparado para compartir directorios con Linux por medio del modo normal de grupos de trabajo. Para ello, hay que abrir el Centro de Red y Comparticin en el mdulo del

WWW.LINUX- MAGAZINE.ES

Nmero 91

21

PORTADA Windows 8 y Samba

tecnologas de quin desea compartir y luego tendremos deteccin avanzaque hacer clic en el botn Aadir. Los das tales como usuarios seleccionados deben existir LLTD, como se tanto en Windows como en Linux. mencion anteriorSi queremos compartir la carpeta con mente. De esta permisos especficos para los usuarios o forma se puede grupos seleccionados, tendremos que acelerar tremendahacer clic en Comparticin Avanzada. En mente la velocidad el cuadro de dilogo que aparece, hay en la que aparecen que marcar el casillero Compartir esta los recursos procecarpeta e introducir un nombre libredentes de una red mente como nombre del recurso comparvecina. tido (los comentarios son opcionales). Tambin deberaTambin se puede hacer clic en el botn mos activar la Permisos, aadir los usuarios y grupos opcin Activar deseados, y darles o quitarles los permicomparticin de sos Control Completo, Cambios o Lectura. archivos e impresoAqu podemos tambin aadir ms usuaras y esto es esperios. Figura 4: Estas configuraciones del perfil de red proporcionan una cialmente imporEn el ejemplo de la Figura 5, el acceso conexin funcional con Linux. tante en Linux al recurso compartido que se acaba de desactivar la crear es limitado a Lectura para Todos en opcin por defecto Permitir a Windows la configuracin por defecto. Para asigpanel de control mencionado anteriorgestionar las conexiones del Grupo Hogar narle permisos de escritura, tendremos mente y, primero, comprobar si se ve si el (recomendado) en favor de la opcin que modificar los permisos a Cambios o perfil de la red que se est utilizando es Usar las cuentas de los usuarios y contraControl Completo. Estos permisos no Privado. Para ello, hay que hacer clic en seas para conectarse a otros ordenadodebemos asignarlos de forma global sino Redes e Internet | Elegir Grupo Hogar y res (Figura 4). Luego, hay que hacer clic para restringir el acceso a ciertos usuaopciones de comparticin | Cambiar en Guardar cambios. Windows 8 ahora rios individuales. configuracin avanzada de comparticin. nos pedir la contrasea de administraPor ejemplo, para permitirle al usuario Por cada perfil de red manejado por Wincin. Por ltimo, Windows 8 nos dice drilling el control completo, hay que dows Privada, Husped o Pblica y que hay que cerrar la sesin del ordenahacer clic en Aadir en el panel ComparTodas las redes hay que definir difedor y volver a abrirla para que se aplitir Permisos y en el cuadro de dilogo rentes parmetros en las secciones Desquen los cambios. En este momento ya Seleccionar Usuarios o Grupos, introducir cubrimiento de red, ficheros e impresoras podremos proceder a compartir los direcel nombre de usuario deseado en el compartidas y Conexiones del Grupo torios deseados. campo Introduzca los nombres de los Hogar. En el escenario del ejemplo que Para ello, tenemos que navegar hasta objetos a seleccionar. A continuacin, hay mostramos aqu con comparticin mutua el directorio por medio de Windows que hacer clic en Seleccionar Nombres. Si de directorios entre Windows y Linux en Explorer, seleccionar Propiedades en el Windows encuentra el nombre, haremos el modo peer, hay que seleccionar el tipo men contextual y luego seleccionar la clic en Aceptar. El usuario adicional Privado para que Windows 8 use la solapa Compartir. En este ejemplo, estoy debera ahora aparecer en la parte supeconfiguracin del cortafuegos asociada. usando el directorio Descargas del direcrior del cuadro de dilogo Compartir PerEn el perfil Privado, hay que definir la torio home del usuario con el que he inimisos del panel Nombres de Grupos o configuracin de los recursos comparticiado sesin en el sistema para comparUsuarios y podremos asignarles el perdos para reflejar nuestras necesidades tirlo. Descargas es ya expandiendo el perfil con un clic en la una carpeta pblica de flecha que apunta hacia abajo a la dereeste usuario debido al cha. En una red privada, se puede y se perfil de red que escog. debera activar el descubrimiento de red. Bajo la ruta mostrada, En Windows 8, esta opcin tambin podremos encontrar el incluye la opcin de configuracin de disbotn Compartir que positivo automtica por defecto, pero nos permitir compartir esta opcin desearemos desactivarla. Por el directorio con otros el contrario, las tecnologas de deteccin usuarios tecleando los normalmente resultan ser tiles. nombres de usuario Adems de los servicios del navegador deseados en el cuadro del prehistrico Windows que Samba, de texto proporcionado por cierto, tambin emula con las opciopor el cuadro de di- Figura 5: Comparticin Avanzada soporta el control granular de nes local master = yes y os level = logo Seleccione con los permisos de los recursos compartidos. <nivel>, Windows 8 tambin incluye

22

Nmero 91

WWW.LINUX- MAGAZINE.ES

Windows 8 y Samba PORTADA

las distribuciones automticamente completarn los pasos necesarios para realizar esta tarea. Configuran un servidor Samba con un fichero de configuracin correspondiente adecuado para los recursos compartidos que hayamos deseado. Por ejemplo, si se selecciona Propiedades en el men contextual del directorio que se desee compartir desde Dolphin en Kubuntu y luego vamos a la solapa Compartir, la distribucin se ofrecer a instalar Samba. Recursos Compartidos en Tras completar este paso, tendremos Linux para Windows que ir a la solapa Compartir del men Para compartir ficheros o directorios en contextual de nuevo en el directorio Linux para su uso desde Windows 8, tendeseado, marcar el casillero Compartir dremos primero que instalar un Servidor con Samba (Microsoft Windows), camSamba en Linux. Esto lo podremos hacer biar el nombre del recurso compartido si manualmente, tal y como lo describ en lo deseamos (por defecto el mismo nomdetalle en la ocasin del lanzamiento de bre que el del directorio) y establecer el Windows 7 [3]. Sin embargo, si se compermiso. Otro casillero nos permitir conparte un directorio por medio del cuadro figurar que se pueda conectar un huesde dilogo correspondiente de KDE/Dolpd, por ejemplo. Los permisos disponiphin o Gnome/Nautilus, la mayora de bles aqu son Control Completo, Slo Lectura y Denegar para los objetos Todos, smbguest y el propietario (drilling, en la Figura 8). Los gur de Samba se sorprendern al ver que un recurso compartido configurado de esta forma no aparezca en la seccin del fichero de configuracin de Samba, /etc/samba/smb.conf. De hecho, el procedimiento mostrado slo sirve para permitir a los usuarios crear recursos compartidos simples en sus propios directorios home con la ayuda de Dolphin (KDE) o Nautilus (Gnome) sin necesidad de tener los privilegios del usuario root. Est basado en el comando nautilus-share (Gnome). KDE gestiona los recursos compartidos Figura 6: Control Total para un recurso comsimples como ste por medio del directopartido de Windows incluye tanto los permirio /var/lib/samba/user-shares y no por sos de lectura como de escritura. medio del fichero de configuracin de Samba, donde tendramos que tener los privilegios del usuario root para poder acceder a l. El acceso a los recursos compartidos de esta forma desde Windows 8 es bastante simple: en el panel de navegacin de la parte izquierda de Explorer, hay que hacer clic en Red; en el panel Ordenador del lado dereFigura 7: Samba crea una correspondencia entre el conjunto de cho se rellenar gradualpermisos de Windows y los de Unix. mente con las entradas y

miso Control Completo o Cambios para este usuario en Permitir (Figura 6). A partir de ahora, la mquina Linux debera ser capaz de acceder a esta carpeta. En el ejemplo mostrado en la Figura 6, Samba crea la correspondencia entre los permisos asignados en Windows con el valor de permisos Linux 755, tal y como se revela en el cuadro de dilogo de Permisos de Acceso de KDE (Figura 7).

deberamos poder ver los nombres del equipo del servidor Linux/Samba. Haciendo doble clic en el nombre del ordenador, aparecer el cuadro de dilogo de inicio de sesin. En el primer intento, fallar, sin embargo, como se muestra en la Figura 9, con una nota indicando que Windows 8 no puede conectarse al servidor Samba con el nombre de usuario especificado incluso si estuvisemos usando la misma cuenta en Windows y en el sistema Linux. Este error es causado por Ubuntu/ Kubuntu, ya que Ubuntu nos proporciona un fichero de configuracin de Samba /etc/samba/Samb.conf sin funcionalidad por defecto cuando se instala el paquete samba. Hay que modificar la seccin [global] para que se adecue al escenario descrito quitando el punto y coma (que sirve para comentar la configuracin de Samba) de la lnea security = user para activar el nivel de seguridad de Samba basado en el usuario. Directamente bajo esta lnea, tendremos que aadir
username map=/etc/samba/smbusers

y luego ejecutar:
sudo smbpasswd -a <usuario>

Ahora hay que introducir una contrasea que podemos elegir libremente para crear un usuario Samba en el PC Linux cuyo nombre tiene que coincidir exactamente con el nombre del usuario del ordenador Windows 8. A continuacin, tendremos que ejecutar el comando

Figura 8: En KDE y Gnome se pueden configurar directamente los recursos compartidos por medio del men que aparece cuando se pulsa el botn derecho de ratn en el Administrador de Archivos.

WWW.LINUX- MAGAZINE.ES

Nmero 91

23

PORTADA Windows 8 y Samba

Listado 1
01 [Sharename] 02 # Ruta 03 path = /<i>path<i>/<i>to<i>/<i>the<i >/<i>data<i> 04 # Comentario 05 comment = My data 06 available = yes 07 browseable = yes 08 # Sin acceso husped 09 guest ok = no 10 # Los usuarios conectados tienen permisos de escritura 11 writeable = yes

de smb.conf. Por ello, casi todas las distribuciones tambin proporcionan herramientas grficas para configurar Samba, como Swat [5] de la propia Samba, system-config-samba [6] y gadmin-samba [7]. Adems, se puede utilizar Webmin como herramienta de configuracin de Samba basada en la web [8].

Conclusiones
Para la mayora de los usuarios Linux con experiencia, el uso de Samba para el acceso a la red forma parte de su forma de trabajo diaria. Sin embargo, a veces la comunicacin entre Linux y Windows falla (vase el cuadro Problemas) y a veces se debe a que algo est sucediendo en el lado de Windows. Las redes de Windows 8 al menos no son diferentes de las de Windows 7 una vez que uno se ha familiarizado con la nueva interfaz de usuario. En el caso de que surjan problemas de conectividad, es importante recordar tres cosas con Windows 8: el comportamiento de los perfiles de red se controla por el cortafuegos interno; es mejor dejar desactivadas diversas funciones de descubrimiento y propagacin de nuevos recursos cuando queramos comunicarnos con Linux; y, por defecto, los Gupos Hogar de Windows slo funcionan en el mundo Windows 7/8.

Figura 9: Windows 8 descubre inmediatamente y fcilmente los recursos compartidos por los PC Linux, sin embargo, hace falta tener la configuracin de Samba correcta para poder usarlos.

Figura 10: La herramienta smbclient hace visible los recursos compartidos de Windows desde la lnea de comandos.

vilegios del usuario root como se muestra en el Listado 1. En la documentacin oficial de Samba [4] se proporcionan otras opciones. Tras reiniciar el servidor con

sudo service smbd restart

sudo service smbd restart

para reiniciar el servidor Samba. Despus de esto, el acceso desde Windows 8 debera funcionar.

se puede acceder al nuevo recurso compartido desde Windows 8 como un simple usuario por medio de
net usershare

Recursos Compartidos Permanentes


Para los recursos compartidos permanentemente, hay que editar la seccin Sharename del fichero de configuracin de Samba, /etc/samba/smb.conf, con los pri-

RECURSOS
La configuracin de los permisos para el directorio apropiado en el men contextual de Dolphin es irrelevante aqu, ya que es un recurso compartido por medio
[1] Smb4k: http://sourceforge.net/p/smb4k/ home/Home/ [2] Opciones para mount.cifs: http://www.samba.org/samba/docs/ man/manpages-3/mount.cifs.8.html [3] Windows 7 en una red Samba por Markus Klimke, Linux Magazine, Nmero 77 pg. 52 [4] Documentacin de Samba: http://www.samba.org/samba/docs/ [5] Swat: http://www.samba.org/samba/docs/ man/manpages-3/swat.8.html [6] system-config-samba: http://www.unixmen.com/ how-to-configure-samba-using-agraphical-interface-in-ubuntu/ [7] gadmin-samba: http://www.ghacks.net/2009/12/25/ configuresamba-with-gadminsamba/ [8] Webmin: http://www.webmin.com/sambahowto.html

Problemas
En las redes Windows, para que funcione la propagacin o el descubrimiento automtico como es debido, los clientes deben ser miembros de un dominio o de un grupo de trabajo independientemente de la configuracin TCP/IP. En caso contrario, la vecindad de la red Windows permanecer vaca. Si se sospecha que, a pesar de haber corregido la configuracin IP y del cortafuegos (el ordenador responde a los ping y a las peticiones ICMP), un ordenador no se muestra en la vecindad de la red porque LLTD en Windows 8 no est haciendo lo que debera hacer o simplemente que NLA tarda mucho, se puede acceder a un recurso compartido directamente tecleando en la barra de direcciones de Explorer \\<Ordenador>, luego se establecer la conexin cuando sea necesaria. Se puede hacer lo mismo tecleando net use \\<Ordenador> desde la lnea de comandos o desde PowerShell. En Linux, se puede usar la URL smb://<GrupodeTrabajo>/<Ordenador> en Dolphin o Nautilus para acceder directamente a un recurso compartido. Por otro lado, la navegacin en Dolphin tambin funciona por medio de Lugares | Redes | Grupo de Trabajo. Si se quiere saber exactamente que recursos compartidos se encuentran disponibles en un equipo Windows 8 desde Linux, se puede teclear el siguiente comando

smbclient -L <ordenador>
(Figura 10). El comando muestra todos los recursos compartidos para el usuario que se encuentre actualmente conectado. Especificando la opcin -U=<Usuario> se consigue el mismo resultado pero para otros usuarios.

24

Nmero 91

WWW.LINUX- MAGAZINE.ES

Arranque Dual Win 8/Linux PORTADA

Rancz Andrei 123RF.com

Windows 8 y Linux en Modo de Arranque Dual

Un Par de Arranques
Aunque conseguir que Windows conjugue bien en una instalacin de Linux existente es difcil, con un poco de ingenio se puede configurar Windows 8 para arranque dual con Linux. POR JRG LUTHER
n 1982, MS-DOS 1.25 poda asumir con seguridad que sera el nico sistema en el disco de arranque, despus de todo, arrancaba desde un disquete. Los discos duros no entraron en la ecuacin hasta MS DOS 2.0 cuando sali el nuevo PC de IBM. 30 aos despus de MS-DOS 1.25, Microsoft sigue siendo reacio a tener inquilinos: al igual que sus predecesores, vuelca su sector de arranque en el disco duro durante la instalacin, incluso si el disco ya contiene otro gestor de arranque. Mientras que los sistemas operativos modernos como Linux funcionan en cualquier rincn del disco duro para dejar suficiente espacio libre, Windows 8 mantiene sus antiguos tics, insistiendo en instalarse en una particin primaria. Sin embargo, a pesar de la negacin de Microsoft sobre la existencia de otros sistemas y pese a amenazas tales como el Arranque Seguro UEFI, podemos ver a Linux y Windows 8 compartir el mismo disco. En este artculo, descubrimos cmo instalar Windows en una configuracin de arranque dual en un equipo que ya est ejecutando Linux.

mos instalando Windows 8 en un sistema Linux ya existente, podemos reducir el tamao de una particin extendida para dejar espacio al sistema operativo de Microsoft. El mejor enfoque es utilizar una herramienta Linux como GParted (Figura 1). Esto tambin tiene sentido para crear una particin primaria nueva para Windows en el espacio que liberemos. Opcionalmente podemos proporcionar Windows 8 con un intercambio separado del tipo que usa Linux. Sin embargo, si creamos un archivo de intercambio, lo tenemos que establecer y activar manualmente despus en Windows, en

Propiedades del sistema bajo Avanzadas | Configuracin del Rendimiento. A Windows no le importa dnde se ubica el archivo de intercambio y esto incluye las particiones extendidas, pero algunos usuarios han cuestionado el tamao adecuado. Si bien 1,5 veces la RAM es la regla de oro para el espacio de intercambio, con las actuales RAM de 4GB y ms, muchos usuarios Windows ejecutan el sistema operativo sin archivo de intercambio sin problemas. La propia particin de Windows 8 debe tener al menos 12GB para que no se llene rpidamente con las operaciones del da a da. El mnimo de 12GB

Hacer Sitio
Aunque Windows 8 insiste en usar una particin primaria, la particin no tiene que estar al principio del disco. Si estaFigura 1: Cmo hacerlo: Windows 8 necesita una particin primaria, /dev/sda4 en nuestro ejemplo. Se pueden ubicar otros discos para datos o intercambio en una particin lgica (/dev/ sda6 aqu).

WWW.LINUX- MAGAZINE.ES

Nmero 91

25

PORTADA Arranque Dual Win 8/Linux

slo es suficiente para los experimentos iniciales con el sistema operativo. Si queremos instalar programas ms all de los que vienen con el sistema, tenemos que aadir ms espacio. Esta regla tambin se aplica si asignamos un disco adicional para los datos de Windows 8 (de nuevo ste debe estar en una particin lgica): el sistema operativo de Microsoft almacena toda la informacin especfica del usuario en la particin primaria bajo C:\Usuarios\<nombre_de_ usuario>\ donde se puede acumular rpidamente una considerable cantidad de datos. Si proporcionamos una particin de intercambio para Windows, la podemos formatear con NTFS en Linux previamente. Esto permite al sistema operativo de Microsoft montar la particin en el primer arranque y asignar una letra al disco. En todo caso, este paso no es absolutamente necesario porque podemos establecer espacio de intercambio y una posible particin de datos posteriormente, usando las herramientas propias de Windows.

Instalar Windows 8
Despus de arrancar desde el disco, el instalador de Microsoft nos pedir que elijamos un idioma del sistema, pongamos la clave del producto y aceptemos los trminos de la licencia. La rutina posteriormente nos ofrece una actualizacin

de una versin ms antigua de Windows existente. Podemos seleccionar la opcin Personalizar: Instalar slo Windows (Avanzado) para hacer una instalacin nueva. Posteriormente el instalador nos preguntar por la ubicacin que queremos para la instalacin. Seleccionamos la particin preparada, pulsamos en Opciones de disco (avanzadas) abajo a la derecha, debajo de la lista de particiones y le pedimos Formatear. Una vez completadas las tareas pendientes de particionado, simplemente pulsamos Siguiente para lanzar el proceso de instalacin real. El instalador copiar los datos a la particin de Windows y si es necesario, descargar las actualizaciones antes de reiniciar el ordenador. En este momento, podemos configurar los detalles para crear una cuenta de usuario. Si bien Windows 8 an tiene una Cuenta Local, de forma que no tenemos que enviar nuestros datos personales a Microsoft, slo ofrece una funcionalidad limitada. La cuenta predeterminada es una Cuenta Microsoft en la nube del fabricante, en la cual al menos tenemos que proporcionar una direccin de correo electrnico, nuestro gnero y el cdigo postal. Necesitamos este tipo de cuenta para descargar aplicaciones de la tienda de Windows y para sincronizar la

configuracin y los datos a travs de diversos dispositivos. Esto quiere decir que si no vamos ms que a utilizar los clsicos programas Windows en el escritorio, es suficiente con tener una cuenta local. Ya habr tiempo para crear una cuenta de nube con Microsoft si es necesario. Una vez seleccionado el tipo de cuenta e introducidos los datos de autenticacin, confirmamos de nuevo la introduccin pulsando Finalizar. El ordenador entonces arranca la nueva interfaz cuadriculada de Windows 8. Termina el proceso cuando se reinicie el equipo, ya que Windows no tiene piedad al sobrescribir el gestor de arranque de Linux, GRUB2, que todas las distribuciones populares utilizan hoy en da. Es necesario remediar esto en la etapa siguiente.

Restaurar GRUB
Cubrir todas las eventualidades relacionadas con la restauracin del sector de arranque nos podra llevar otro artculo entero [1], pero gracias a GRUB 2, por lo general, no necesitamos mucha magia para restablecer el gestor de arranque antiguo: todos los datos necesarios para este proceso siguen almacenados en la particin raz original. Lo nico que falta ahora en el registro de arranque maestro (MBR), son los componentes principales de GRUB boot.img y core.img porque Windows los ha borrado. La manera ms sencilla para restaurar estos componentes es arrancando el sistema Linux original y reparando el sector de arranque desde all. La forma ms rpida y sencilla es hacer esto utilizando Super Grub Disk [2], que forma parte de cualquier caja de herramientas de rescate de la distribucin, incluyendo SystemRescueCd [3]. Para empezar, arrancamos el ordenador desde una versin de SystemRescueCd y seleccionamos F) Ejecutar las herramientas del sistema desde una imagen de disquete en el men de arranque. En el men siguiente buscamos abajo SGD: Super Grub Disk. Normalmente reconoce automticamente la configuracin del GRUB utilizado previamente y ofrece arrancar la correspondiente particin como primer elemento del men en la lista (Figura 3). Si queremos asegurarnos absolutamente, seleccionamos el tercer elemento del men, Detectar cualquier archivo de

Figura 2: Opciones de Disco (avanzado) muestra las funciones del Instalador de Windows 8 para crear, expandir, borrar y formatear particiones.

26

Nmero 91

WWW.LINUX- MAGAZINE.ES

Arranque Dual Win 8/Linux PORTADA

configuracin GRUB2 (grub.cfg ). SGD entonces rastrea todas las particiones en busca de posibles configuraciones de arranque y nos las muestra. En el caso del test de configuracin de la Figura 1, identifica correctamente la distribucin de Ubuntu 12.04.1 instalada en la particin primaria /dev/sda2 y ZevenOS Neptune en la particin lgica /dev/sda5 (Figura 4). El siguiente paso es seleccionar el elemento adecuado del men para arrancar directamente en la particin del sistema que estaba activa antes de la instalacin de Windows 8 (en este ejemplo, Ubuntu en /dev/sda2). Despus lanzamos una terminal y accedemos como usuario administrativo root. En este punto nos encontramos dos pequeas rdenes para tener una solucin multiarranque.

Tenemos que instalar los componentes principales de GRUB en el MBR de nuevo. Para hacer esto, podemos ejecutar
grub-setup /dev/sda

Puede que necesitemos reemplazar /dev/ sda por el primer disco duro con designacin de dispositivo en el cual queramos restaurar el sector de arranque. Ahora ejecutamos
update-grub

para crear un archivo de configuracin nuevo para el cargador de arranque que incluya la instalacin de Windows nueva. El Listado 1 muestra la secuencia completa de pasos de este ejemplo concreto.

Figura 3: Super Grub Disk normalmente reconoce automticamente la particin de Linux correcta y ofrece su arranque directamente.

Figura 4: Si queremos asegurarnos, podemos pedir a SGD que nos muestre todos los archivos de configuracin de GRUB en el disco.

WWW.LINUX- MAGAZINE.ES

Nmero 91

27

PORTADA Arranque Dual Win 8/Linux

La Isla de los Bienaventurados


Gracias a GRUB 2, tomar el camino inverso, es decir, instalar retroactivamente Linux en un ordenador con Windows 8 preinstalado, es coser y cantar. Los instaladores de todas las grandes distribuciones ofrecen liberar el espacio anteriormente ocupado por Windows para Linux y nosotros podemos ejecutar Linux con la misma facilidad a partir de una particin lgica como con una primaria, por lo que es fcil encontrar un lugar para el sistema operativo. Lo que ahora hace el gestor de arranque estndar GRUB 2 es enlazar automticamente la particin de Windows al instalar Linux e inmediatamente aadirla al men de arranque. Sin embargo, ser interesante ver durante cunto tiempo los usuarios de Linux pueden vivir en esta isla de los bienaventurados. Se avecina una tormenta: el Arranque Seguro UEFI, que Microsoft dice que es obligatorio para los PC con Windows 8, es una fuente potencial de problemas y varias distribuciones Figura 5: El procedimiento propuesto por los no han llegado a consenso sobre cmo desarrolladores de Suse y parcialmente implementar de la mejor manera posible implementado por el especialista de Fedora esta caracterstica para Linux. Matthew Garrett permitir a cualquier distriFinalmente, sin embargo la Linux bucin el acceso al Arranque Seguro UEFI. Foundation ha tomado cartas en el (Imagen: Suse). asunto. Parece que al menos en la gestin de claves para el Arranque Seguro Si es necesario, podemos, manualUEFI habr pronto una solucin. Sin mente o con una herramienta como embargo, las soluciones ofrecidas de GRUB2 Editor [4], cambiar los archivos facto por los desarrolladores de Fedora, de configuracin de GRUB 2 para hacer openSUSE y Ubuntu, que estn actualms atractiva la pantalla de arranque [5]. mente trabajando intensamente en el En caso contrario, simplemente reiniciaproblema, no apuntan necesariamente mos el ordenador y nos encontraremos en la misma direccin. El especialista en nuestro men de arranque habitual, que UEFI de Fedora, Matthew Garrett [6] ha ahora tiene una entrada para el recin codificado parcialmente todo un coninstalado Windows 8. cepto prometedor desde una sugerencia de los desarrolladores de SUSE [7]. Listado 1 La solucin propuesta 01 nonumber est basada en un enfoque 02 # <b>grub-setup /dev/sda<b> a tres bandas: el cargador 03 # <b>update-grub<b> de arranque Shim fir04 Generating grub.cfg ... mado con la clave de 05 Found linux image: Microsoft u otra clave de /boot/vmlinuz-3.2.0-29-generic-pae plataforma (PK) carga pos06 Found initrd image: teriormente el cargador de /boot/initrd.img-3.2.0-29-generic-pae arranque GRUB 2. Autori07 Found memtest86+ image: /boot/memtest86+.bin zado por la clave de 08 Found Windows 8 (loader) on /dev/sda4 cifrado de clave (KEK), 09 Found Debian GNU/Linux (wheezy/sid) on Shim comprueba la validez /dev/sda5 del cargador de arranque

con referencia a una lista de claves del propietario de la mquina (MOK) almacenada en un archivo (Figura 5). Este enfoque posibilita aadir los correspondientes MOK nuevos a la respectiva base de datos en cualquier momento, de manera que el Arranque Seguro UEFI lo pueda utilizar cualquier distribucin sin necesidad de una firma de Microsoft. En cualquier caso la solucin de arranque de Linux para la siguiente generacin de PC todava no est tallada en piedra. El problema se agudizar en un futuro prximo cuando la industria entregue los primeros ordenadores con Windows 8 y el Arranque Seguro UEFI activado. Dado que la especificacin de Microsoft dice que debera ser posible desactivar la funcin de arranque seguro, nadie tendr que preocuparse de no ser capaz de instalar Linux, simplemente arrancar sin esta caracterstica.

Conclusiones
En el futuro, Windows 8 y Linux continuarn coexistiendo pacficamente en el disco duro. Las innovaciones reales en trminos de proceso de arranque no se van a ver hasta el siguiente ciclo para las distribuciones ms importantes, o incluso para el posterior, pero actualmente el hardware para probar las nuevas caractersticas del Arranque Seguro UEFI es difcil de obtener.

RECURSOS
[1] Reparar GRUB 2: http://www.howtogeek.com/114884/ how-to-repair-grub2-when-ubuntuwont-boot/ [2] Super Grub Disk: http://www.supergrubdisk.org [3] SystemRescueCd: http://www.sysresccd.org [4] GRUB2 Editor: http://ksmanis.wordpress.com/ projects/grub2-editor/ [5] GRUB 2 por Andreas Bohle, Linux Magazine, Nmero 61, pg. 62: https://www.linux-magazine.es/ issue/61/062-064_ GRUB2LM61.pdf [6] Blog de Matthew Garrett: http://mjg59.dreamwidth.org [7] SUSE and Secure Boot: Details: https://www.suse.com/blogs/ uefi-secure-boot-details/ The

28

Nmero 91

WWW.LINUX- MAGAZINE.ES

SPDY PRCTICO

El protocolo SPDY de Google acelera el trfico HTTP

Capa Nueva
Han pasado ms de 20 aos de su presentacin y HTTP muestra sin duda signos de envejecimiento. El nuevo protocolo SPDY de Google resuelve algunos problemas de HTTP sin que le afecte a los sitios webs existentes. POR OLIVER FROMMEL
uando Tim Berners-Lee public la especificacin de su primera versin del protocolo HTTP en 1991, Internet era an bastante simple. En tan slo una pgina [1] describa con pocas palabras cmo un servidor tena que responder a una peticin GET y esta descripcin sent las bases de la World Wide Web. Un ao despus, public un borrador que termin como el RFC 1945, Hypertext Transfer Protocol, que se estandariz finalmente como HTTP 1.0 en Mayo de 1996. Tres aos despus, HTTP 1.1 se estandariz para reflejar el incremento de la carga de la web. El protocolo revisado reduca el nmero de intentos de conexin necesarios para acceder a un sitio web presentando las conexiones del tipo keepalive y el encauzamiento HTTP permita el uso de mltiples peticiones en secuencia, sin la necesidad de esperar una respuesta. Desde entonces HTTP no ha cambiado mucho, aunque el panorama general de la web s que ha cambiado. Las aplicaciones en tiempo real como Google+ y Facebook eran inimaginables en el momento que apareci HTTP 1.1 y funciones como Ajax, actualizaciones en tiempo real y la aparicin de redes de 10Gb (o incluso backbones a 100Gbps) han cambiado la forma de la web. El IETF Working Group Hypertext Transfer Protocol Bis (httpbis) [2] est intentando mejorar HTTP y tiene asignado la tarea de revisar el RFC 2616 (Hypertext Transfer Protocol HTTP/ 1.1). Este grupo slo intenta aclarar los malentendidos actuales. En la lista de

correo, Mark Nottingham, el jefe del grupo, recientemente mantuvo una discusin sobre HTTP 2.0, el primer borrador sali en Mayo de 2012 [3]. Un ao despus los cambios tienen que implementarse bajo el alcance del last call antes de que el estndar se remita a la IESG. As pues, existen muy pocos elementos tangibles en HTTP 2.0. Sin embargo, los requerimientos para el protocolo de la web del futuro incluyen buenos rendimientos tanto para los navegadores convencionales como para los de los dispositivos mviles y un gran grado de compatibilidad hacia atrs. SPDY (pronunciado como speedy) [4] es un protocolo nuevo que podra incluirse en las especificaciones de HTTP 2.0, promocionado por Google y que ya ha sido implementado en cdigo que funciona, mejorando de esta forma sus oportunidades para ser aceptado de forma general. Google ha aadido a su navegador Chrome las funciones de SPDY y el protocolo se encuentra ya implementado en la versin de desarrollo de Firefox [5]. En tan slo unos meses, la versin 11 final de Firefox podra incluir el cdigo de SPDY. El navegador Google

Chrome 11 utiliza SPDY por defecto si los usuarios acceden a los servidores de Google por medio de SSL. Para averiguar si la versin que tenemos de Chrome soporta o no SPDY, tan slo hay que teclear la URL chrome://net-internals/#spdy (Figura 1). En Diciembre los desarrollores incluyendo los desarrolladores de Google Apache actualizaron Apache para proporcionarle soporte para SPDY [6]. El mdulo mod_spdy para Apache 2.2 aade el protocolo SPDY al servidor Apache. Los desarrolladores del innovador framework web para JavaScript, Node.js, tambin han desarrollado un mdulo para SPDY que se encuentra en Git Hub [7]. Adems se han desarrollado implementaciones (experimentales) del protocolo para Python, Java, Ruby, Go, Erlang y C, proporcionando de este modo suficientes recursos para poder experimentar por nuestra propia cuenta. Prximamente, Google publicar el cdigo fuente para la implementacin del servidor. La reciente aparicin de SPDY significa que probablemente nos encontremos usando este innovador protocolo nuevo antes de lo que pensemos.

Conozca a SPDY
Segn Google, SPDY aade una capa de sesin por encima de SSL permitiendo mltiples streams entrelazados sobre una nica sesin TCP. Debido a la compleja interaccin entre HTTP y la capa de transporte subyacente, TCP, los navegadores a menudo tienen que abrir mltiples conexiones concurrentes (vase el cuadro titulado Problemas de HTTP). El manejo de varias sesiones TCP para poder soportar estas conexiones simultneas incrementan la sobrecarga y la latencia. SPDY resuelve este problema gestionando mltiples conexiones concurrentes por

Ildi Papp,123RF.com

WWW.LINUX- MAGAZINE.ES

Nmero 91

29

PRCTICO SPDY

Figura 1: Las versiones recientes del navegador Chrome de Google ya utiliza el protocolo SPDY para las conexiones SSL a los servidores de Google.

medio de una nica conexin TCP. En esencia, SPDY es realmente un protocolo que se ubica entre SSL y HTTP. Se encarga de multiplexar mltiples conexiones HTTP por una nica conexin TCP. Introduciendo un protocolo adicional entre HTTP y SSL, los desarrolladores de SPDY proporcionan una mejora considerable reduciendo la latencia a cambio de introducir un mnimo cambio en las infraestructuras existentes. La capa de Transporte y las capas inferiores seguirn trabajando sin la necesidad de modificaciones. Y lo ms importante de todo, las pginas web existentes y las aplicaciones web no tienen por qu darse cuenta de que se ha introducido un protocolo nuevo por debajo de HTTP. El objetivo de SPDY es mantener la compatibilidad y mantener la estructura bsica

de HTTP, tales como la semntica de las peticiones y las respuestas. En el documento donde se recoge SPDY, los autores informan de hasta un 64 por ciento de mejoras en los tiempos de carga. El objetivo declarado es una media del 50 por ciento. Adems de la multiplexacin de los streams, SPDY tambin proporciona beneficios adicionales. La priorizacin de las peticiones asegura que las peticiones importantes reciban una prioridad mayor que las menos importantes. SPDY tambin comprime las cabeceras HTTP para reducir el trfico. Adems, SPDY permite que los servidores puedan iniciar conexiones, lo que dejar obsoleto algunos hacks como Comet [8]. Junto con la mejora del rendimiento, Google quiere que HTTP sea ms seguro, y con este fin, SPDY se basar en las conexiones protegidas por SSL.

Linux [10]. Tambin hay previsto una reduccin del tiempo de espera inicial en la apertura de las conexiones TCP de tres segundos a un segundo. Tambin es interesante la idea de enviar los datos de las peticiones HTTP cuando se abra una conexin con un paquete TCP SYN. Este cambio reduce los tiempos de carga en un diez por ciento de media. Se puede consultar en Internet ms informacin sobre cmo hacer la web ms rpida [11].

Conclusiones
De repente HTTP 2.0 se encuentra a la vuelta de la esquina. El primer borrador saldr en Mayo y el protocolo SPDY de Google puede formar parte del mismo. SPDY posee la ventaja de que ya se encuentra implementado en los propios servidores de Google y en los navegadores Chrome y Firefox. La implementacin del protocolo del borrador en diversos lenguajes permite que los usuarios puedan experimentar con l. Incluso podemos encontrar un libro electrnico acerca de SPDY [12].

Mejoras para TCP


Google no est satisfecho con tan slo contribuir con un protocolo nuevo y se encuentra trabajando en la optimizacin de TCP. Mientras que cada da las conexiones son cada vez ms rpidas, dicen los tcnicos de Google [9], un protocolo TCP ms rpido eliminar la necesidad de cerrar la ventana inicial de congestin en TCP tras cuatro paquetes, como requiere el RFC 3390. En algunas pruebas, el incremento de la ventana a un valor de 10 paquetes consigue una reduccin substancial de la latencia y este objetivo tambin se ve reflejado en un borrador de la IETF. Ya existe un parche que implementa este cambio dentro de kernel de

RECURSOS
[1] HTTP original: http://www.w3.org/ Protocols/HTTP/AsImplemented.html [2] HTTPbis Working Group: http://datatracker.ietf.org/wg/httpbis/ charter/ [3] Llamada para HTTP 2.0: http://lists.w3.org/Archives/Public/ ietf-http-wg/2012JanMar/0098.html [4] Documento de SPDY: http://dev. chromium.org/spdy/spdy-whitepaper [5] SPDY en Firefox: https://bugzilla. mozilla.org/show_bug.cgi?id=528288 [6] Mdulo de SPDY para Apache: http://calendar.perfplanet.com/2011/ introducing-mod_spdy-a-spdy-modul e-for-the-apache-http-server/ [7] SPDY para Node.js: https://github.com/indutny/node-spdy [8] Comet: http://en.wikipedia.org/wiki/ Comet_%28programming%29 [9] Blog de Google: http://googlecode.blogspot.com/2012/ 01/lets-make-tcp-faster.html [10] Incrementando la ventana congestin inicial de TCP: https://lwn.net/Articles/427104/ de

Problemas con HTTP


En el documento sobre SPDY, Google lista algunas de las caractersticas que limitan el rendimiento de HTTP, entre las que se incluyen: Una nica conexin por peticin segn Google, como HTTP slo puede obtener un recurso cada vez (el encauzamiento HTTP ayuda, pero fuerza al uso de una cola FIFO), un retraso del servidor de 500 ms impide que se pueda reutilizar el canal TCP para mltiples conexiones. Desde 2008, la mayora de los navegadores se han pasado de 2 conexiones por dominio a 6. Las peticiones se inician exclusivamente por parte de los clientes actualmente, el servidor HTTP tiene que esperar a que los clientes le soliciten los recursos. El protocolo por s mismo no soporta ningn mecanismo para que el servidor pueda mandar datos al cliente por iniciativa propia. Cabeceras de peticin y respuesta descomprimidas con el uso expandido de funciones tales como los agentes de usuario y las cookies, las cabeceras cada vez son ms grandes y el tiempo total necesario para transmitir la informacin de la cabecera puede reducir la velocidad de la conexin incrementando la latencia. Cabeceras redundantes las provisiones del protocolo HTTP requieren el reenvo de informacin redundante, que incrementa innecesariamente el tamao de las cabeceras y ralentizan las conexiones. Compresin opcional de los datos HTTP soporta la opcin de comprimir los datos, pero muchas conexiones an funcionan sin compresin. Google ha diseado SPDY para resolver estos problemas de forma que se minimice la complejidad de su despliegue y proporcione una reduccin del 50% en los tiempos de carga de las pginas.

[11] Google, vamos a hacer que la web sea ms rpida: http://code.google.com/speed/ [12] Libro sobre SPDY: http://spdybook.com

30

Nmero 91

WWW.LINUX- MAGAZINE.ES

Kexi vs. Glom PRCTICO

Kexi y Glom: comparacin de bases de datos ligeras


Monokini.sxc.hu

Pesos Mosca
El objetivo de Kexi y Glom es crear bases de datos con poco esfuerzo. Comparamos la potencia de estas dos herramientas. POR FRANK HOFMANN
or lo general, los usuarios no tienen acceso directo a la funcionalidad de una base de datos relacional avanzada debido a que, por lo general, la gestin de la base de datos requiere privilegios de root. Sin embargo, si necesitas algo ms que una simple tabla, Glom [1] y Kexi [2] son dos programas que te dan la capacidad de crear una base de datos, formularios de consultas y generar informes. En lo referente a su campo de uso, ambas aplicaciones son muy similares. Adems de ocuparse de las tareas preliminares, crean los esquemas de las bases de datos y las mscaras de seleccin. Estos dos programas permiten a los usuarios, sin conocimientos de base de datos, obtener resultados iniciales con muy poco esfuerzo. Kexi es un spin-off de Calligra, la suite ofimtica para el proyecto KDE, mientras que Glom proviene del campo de Gnome. Ninguno de estos programas

son una incgnita y ambos estn considerados como bastante estables. Kexi, por ejemplo, est directamente disponible en las webs de los proyectos de Debian, Ubuntu, Red Hat/Fedora y en los repositorios de Mandriva/Mageia. Hasta el momento, Glom ha estado disponible desde el sitio web del proyecto como descarga para Ubuntu, Fedora y Mandriva. Ambos programas se pueden configurar fcilmente con los gestores de paquetes respectivos. Si ests buscando un proyecto libre similar, los candidatos obvios son Open/LibreOffice Base [3] [4], H2 [5] y DBDesigner 4 [6]. En el mercado comercial, los competidores de Glom y Kexi son Microsoft Access, FileMaker Pro para Mac OS X o iPad [7] y Oracle Forms [8].

nada, sus datos se almacenan en una base de datos SQLite y la base de datos se guarda como un archivo en el directorio home del usuario. Esto significa que slo el usuario puede acceder a la base de datos. En contraste con esto, Glom almacena sus datos en una base de datos PostgreSQL, que se deposita en el directorio del usuario o se ofrece centralizadamente en el sistema. El programa slo

Conectores
Kexi ofrece conectores para MySQL, PostgreSQL y la base de datos SQLite. Si se opta por la instalacin predetermi-

Figura 1: Al iniciar Kexi, aparece un asistente para ayudarte a crear una nueva base de datos o modificar un proyecto guardado previamente.

WWW.LINUX- MAGAZINE.ES

Nmero 91

31

PRCTICO Kexi vs. Glom

Figura 2: Kexi es compatible con varios formatos de base de datos en archivos locales.

Figura 4: Un formulario permite al usuario rellenar la tabla seleccionada.

datos compatibles con Kexi para archivos locales. Despus de este paso, se abre una ventana con una vista de tres paneles. El men y la barra de navegacin se encuentran en la parte superior. All es donde se abren y cierran los proyectos, se crean los esquemas de bases de datos Kexi en forma de tablas y consultas SQL, se Kexi adopta el aspecto de otras aplicadisean las ventanas de dilogo y los ciones Calligra y al comenzar inicia un informes, y se importan y exportan los asistente (Figura 1). En el dilogo, datos que contiene la base de datos. podrs utilizar las pestaas para selecEl navegador de proyectos en el lado cionar si deseas crear un proyecto nuevo izquierdo proporciona una vista de rbol o continuar trabajando en uno ya exiscon una visin general de todas las tente. tablas, consultas SQL, dilogos, inforAl iniciar el programa, puedes elegir mes y scripts para el proyecto actual. El un documento vaco, acceso a los datos rea central de la ventana contiene los a travs de una plantilla o importar detalles de la tabla seleccionada, la condatos de una base de datos existente. sulta SQL o el dilogo. La aparicin de Para editar un proyecto previo, puedes esta parte de la interfaz de usuario tomar los datos del proyecto tanto desde depende del objeto en el que se est traun servidor de base de datos (MySQL, bajando actualmente. PostgreSQL, xBase) o de un archivo Si vas a definir los campos individualocal. La Figura 2 muestra esta ltima les de una tabla (bajo el botn Design), opcin con los formatos de base de esta parte de la ventana te mostrar una fila editable de campos de entrada. El panel de Editor de propiedades aparece en la parte derecha, que se puede utilizar para especificar los campos individuales (Figura 3). El botn Data te lleva a la vista en Figura 3: Para cada campo de la tabla, Kexi ofrece un cuadro de di- la que puedes logo con el detalle de las propiedades. rellenar la tabla

utiliza un subconjunto de las funciones de PostgreSQL y por tanto, slo puede modificar las tablas que ha creado. Por lo tanto, si varios usuarios ejecutan Glom, no hay peligro de conflicto en trminos de la base de datos PostgreSQL utilizada.

con datos. Dependiendo del nmero de campos de la tabla, aparecer un nmero de campos de entrada editables organizados en filas (Figura 4). Al editar una consulta SQL (botn SQL), Kexi muestra un campo de importacin con varias lneas, donde se resaltan las palabras claves para ayudar a realizar un seguimiento en consultas complejas. Si es necesario, puedes pulsar el botn Check Query para ver si la consulta es vlida. Si es as, aparecer una marca de verificacin en el campo de entrada y una indicacin mencionando que The query is correct. Para comprobar si se ha conectado a las tablas correctas, puedes ir de nuevo al botn Design y cambiar al modo visual (Figura 5). Kexi te permite lanzar la consulta SQL en la pestaa Data y te muestra los resultados, que estn con el tpico estilo de base de datos, con un aspecto algo ms atractivo. El alcance de las caractersticas de Kexi incluye funciones para la creacin de tablas (campos y datos), creacin de consultas SQL y evaluacin de resultados para, por ejemplo, crear campos de entrada o informes. Por desgracia, los desarrolladores parecen reticentes a documentar las dos ltimas funciones, lo que hace que su uso e integracin sea menos intuitiva. En el uso diario, me di cuenta de un par de cosas a tener en cuenta cuando se trabaja con Kexi. Por ejemplo, si modificas retrospectivamente el esquema de una tabla existente, la aplicacin volver a escribir parte de la base de datos SQLite. Desafortunadamente, los datos en una tabla modificada se perdern.

32

Nmero 91

WWW.LINUX- MAGAZINE.ES

Kexi vs. Glom PRCTICO

Inicialmente Kexi define los campos de texto con una longitud de 200 caracteres, sin embargo, puedes modificar esta longitud en el cuadro de dilogo Propiedades. Otra cosa a tener en cuenta es que el programa no guarda todo el contenido (tablas, datos, consultas de SQL) hasta que se cierra un proyecto y no tienes un botn para guardar los datos sobre la marcha. Kexi almacena los datos locales del proyecto en el formato de base de datos SQLite. Esto abre una opcin para ejecutar la herramienta de lnea de rdenes SQLite3 para investigar los archivos de Kexi y hacer las correcciones necesarias. Esta funcin es til para solucionar problemas y te permite echar un vistazo a los trabajos internos de la base de datos cada vez que lo necesites. En general, Kexi te deja con una impresin bastante mediocre. Desde un punto de vista de produccin, es adecuado para proyectos pequeos y pequeos volmenes de datos. Algunas partes de Kexi parecen ser altamente inestables, esto es particularmente cierto para las versiones de la serie 1.0. Se han hecho muchos cambios positivos desde la versin 2.0. En el laboratorio, he utilizado la versin 2.3.3 corriendo en Xubuntu 11.10.

Glom
Al iniciar Glom, aparece un asistente para acompaarte a travs de los siguientes pasos (Figura 6). Te ofrece la opcin de abrir un documento existente o crear un nuevo proyecto. Si eliges la primera opcin, puedes elegir entre acceder al documento desde la red o cargar un archivo local. Para crear un nuevo proyecto, puedes o bien crear un documento vaco, o utilizar una de las plantillas que vienen con el programa. Las plantillas incluyen

Figura 6: El asistente de Glom te ayuda a crear un nuevo proyecto.

algunos ejemplos bastante complejos con tablas, enlaces e informes que pueden ayudarte a saber qu informacin introducir en Glom y dnde hacerlo. Despus de este paso, defines el nombre del proyecto y el nombre del archivo. Ade- Figura 5: Si es necesario, puedes hacer clic para ver las conexiones ms, es necesario entre las tablas. definir el ttulo y el tipo de base de datos, ya sea local o en una tabla, primero selecciona la tabla un servidor de base de datos externa deseada en Tables | Table name. Des(Figura 7). pus, ve al men Developer | Fields para El paso siguiente es definir el esquema abrir una ventana independiente donde de base de datos. Para ello, primero puedes especificar las definiciones de los debes definir las tablas individuales. Al campos (Figura 9). Al pulsar Delete elipulsar el botn Add en el cuadro de diminas de la lista el campo seleccionado. logo, el programa te lleva a una nueva Al pulsar el botn Add puedes comlnea con campos de entrada y agrega plementar los detalles de un campo. La una nueva tabla (Figura 8). Delete elicolumna Name es el nombre de objeto mina la tabla que has seleccionado en la del campo en el esquema de la base de lista. El botn Open te lleva a la ventana datos. Title nombra el campo que apaprincipal de Glom con la tabla selecciorece como encabezado de una columna nada, donde puedes introducir los datos en el resumen de la tabla. El Type por (campos y formatos de campo). defecto del campo est establecido a La ventana principal de Glom ofrece Number. una barra de men desde la que puedes acceder directamente a la mayora de las acciones. Los botones que se encuentran disponibles en la barra dependern del modo actual de la aplicacin. En el modo Developer, puedes modificar el esquema de base de datos, mientras que en el modo de Operator, slo puedes introducir los datos. Los elementos del men se utilizan para modificar el esquema que aparece en gris. Figura 8: Glom ofrece un sencillo enfoque Para cambiar el modo en el que ests para la creacin de tablas. trabajando, puedes seleccionar en el men Developer | Operator mode o Developer | Developer mode. Debajo del men, la aplicacin te muestra toda la informacin de la tabla seleccionada actualmente. Para definir los campos y formatos Figura 7: Con slo unos pocos detalles, se puede crear un nuevo prode los campos de yecto.

WWW.LINUX- MAGAZINE.ES

Nmero 91

33

PRCTICO Kexi vs. Glom

campos previamente definidos (Figura 10) y pulsando Select agrega el campo seleccionado a la lista. Despus de definir todas las tablas y rellenarlas con valores, puedes pasar a acciones ms complejas. Glom te ofrece el elemento del men Figura 9: En Glom, para definir los tipos de campo basta con unos Edit | Search que clics del ratn. puedes utilizar para aplicar una Al hacer clic en el campo Type se abre bsqueda (tambin puedes usar el atajo un men desplegable donde se puede de teclado Ctrl+F). La bsqueda se modificar el valor: puedes elegir entre lanza contra toda la tabla, pero los resullos tipos Text, Date, Time o Image para tados slo mostrarn las lneas que conel campo. Al pulsar el botn Open Glom, tienen coincidencias. te lleva a otro cuadro de dilogo que te Pulsando Search all, que se encuentra permite especificar un campo con ms al lado del nmero de coincidencias, te detalle, por ejemplo, mediante la definipermite eliminar el filtro. Al hacer clic cin de un valor predeterminado o el en un encabezado de columna, se ordeformato numrico. nar la tabla por la columna seleccioUna vez definidos todos los campos, nada. Haz clic en el encabezado de puedes ir al elemento del men Develonuevo y el orden cambiar de ascenper | Layout para especificar el orden y dente a descendente. la vista de los campos de la tabla. PueGlom no te da una opcin para ejecudes utilizar los botones para cambiar el tar comandos SQL sobre tablas (por orden o la posicin en la vista. Al pulsar ejemplo, las tablas de salida o conectael botn Delete se elimina un campo. das a ellas). La interfaz de Python, a la Para cambiar la forma en que se que puedes acceder a travs de Develomuestra un campo (por ejemplo, el per | Script library, est muy poco docucolor del texto, el tipo de letra), hay que mentada. Lo mismo se aplica a las relapulsar el botn Formatting. El botn Edit ciones entre tablas (Developer | Relate lleva a la ventana descrita anteriortions for this table) y a la funcin Devemente, donde puedes editar los detalles loper | Reports. Al igual que en Kexi, el del campo. programa carece de botones para guarEl botn Add field abre un cuadro de dar los datos sobre la marcha, el softdilogo con una lista de seleccin de los ware no guarda el contenido hasta que se cierre el proyecto. En el laboratorio, he utilizado la versin 1.20.7 de Glom en Xubuntu 11.10. En el uso diario, es probable que aprecies el manual que los desarrolladores han integrado en la interfaz de Glom Figura 10: Puedes ordenar los campos previamente definidos en la y que, apareciendo tabla para que se adapten a tus necesidades. en una ventana

separada, es organizado y comprensible en su mayor parte. En este momento, Glom es una excelente opcin para los pequeos proyectos, por ejemplo, una agenda o un administrador de tareas. La capacidad de conectarse a las tablas hara a Glom adecuado para grandes proyectos, como un sistema combinado de gestin de clientes y facturas.

Conclusiones
Kexi y Glom son herramientas prometedoras que facilitan el uso de una base de datos para los recin llegados al tema. Ambos programas tienen algunas asperezas, pero ya son utilizables para proyectos ms pequeos. Aunque en este momento estas herramientas son incapaces de competir con aplicaciones comerciales tales como FileMaker Pro o Form de Oracle, no hay razn para ser fiel.

RECONOCIMIENTO
Me gustara dar las gracias a Wolfram Eifler por su valoracin crtica y comentarios sobre este artculo.

RECURSOS
[1] Kexi: http://kexi-project.org [2] Glom: http://www.glom.org [3] OpenOffice.org Base: http://www. openoffice.org/product/base.html [4] LibreOffice Base: http://www. libreoffice.org/features/base/ [5] H2: http://www.h2database.com [6] DBDesigner 4: http://www.fabforce. net/dbdesigner4/ [7] FileMaker: http://www.filemaker.com/ [8] Formularios de Oracle: http://www.oracle.com/technetwork/ developer-tools/forms/overview/

Frank Hofmann ha estudiado Ciencias de la Computacin en la Chemnitz University of Technology. Actualmente trabaja para Bro 2.0 (http://www.buero20.org), una red de expertos de cdigo abierto en Berln, Alemania, como proveedor de servicios especializados en impresin y publicaciones (http://www.efho.de/). Es miembro del Linux User Group Potsdam (upLUG).

34

Nmero 91

WWW.LINUX- MAGAZINE.ES

EL AUTOR

Microformatos PRCTICO

Kit Sen Chin, 123RF.com

Trabajando con microformatos y microdatos

Significado Oculto
Los programas no son tan inteligentes como las personas cuando se trata de interpretar el significado de la informacin web. Si se quieren maximizar los rangos de bsqueda, probablemente tengamos que aadir a nuestros documentos HTML microformatos y microdatos. POR ANDREAS MLLER
TML permite marcar secciones de texto como ttulos, textos, hiperenlaces y otros elementos tpicos de la web. Sin embargo, estas definiciones no tienen nada que ver con el significado de los datos: se refiere el texto a una persona, a una organizacin, a un producto o a un evento? Los microformatos [1] y sus sucesores, los microdatos [3], hacen que el significado sea algo ms claro indicando informacin relacionada con tarjetas de negocio, descripciones de productos, ofertas e incluso datos relacionados con eventos en un formato legible por las mquinas. En este artculo, vamos a describir algunos microformatos importantes, tales como hCard, hCal, hProduct, hReview y Geo. Tambin vamos a presentar los microdatos y vamos a mostrar algunas herramientas de cdigo abierto para la integracin de microformatos y microdatos en nuestros propios programas.

HTML5 con una tarjeta de visita. El bloque de texto correspondiente al ttulo viene marcado con el elemento h1. El texto de la tarjeta de visita viene rodeado por el elemento contenedor div y <br /> introduce los saltos de lnea. Es fcil que una persona que lea los datos que aparecen en la Figura 1 se de cuenta de que se trata de una tarjeta de visita incluso si el texto viene escrito en un idioma diferente, pero un programa de ordenador no notara la diferencia entre estos datos y cualquier otro dato que venga rodeado por etiquetas HTML. Los microformatos proporcionan una forma de indicar el propsito de los datos. En el Listado 2 se muestran las etiquetas del microformato tpicas de una tarjeta de visita. Como se puede ver, los

microformatos utilizan principalmente los atributos class del vocabulario HTML. En este caso, el microformato hCard describe una tarjeta de visita. En el Listado 2, cada propiedad viene encerrada por el elemento span y descrita por el atributo universal class. Por ejemplo, class=vcard en la lnea 6 se refiere a un objeto tarjeta de visita. La asignacin class=fn url describe el contenido del hiperenlace, Pedro Miguel Daz, como un nombre (fn, Full name) y la URL en el atributo href como el sitio web correspondiente (url). El objeto direccin class=adr en la lnea 11 contiene mltiples propiedades. Contiene los elementos type (tipo), street-address (calle), postal-code (cdigo postal), locality (localidad) y country

Listado 1: Documento HTML5 con tarjeta de visita


01 <!DOCTYPE html> 02 <html lang=es> 03 <head></head> 04 <body> 05 <h1>Pedro Miguel Daz -- el Arte Guitarra Flamenca</h1> 06 <div> 07 <img alt= src=images/el-fumador.jpg/> 08 <a href=http://el-fumador.info>Pedro Miguel Daz</a> - el Fumador<br/> 09 Flamenco Artist<br/> 10 C/ Peral 43<br/> 11 E-41002 Sevilla<br/> 12 Espaa<br/> 13 pedro@fumador.info<br/> 14 +34 954 88 24 37 15 </div> 16 </body> 17 </html>

Microformatos
HTML fue diseado originalmente por humanos para leer, pero con el crecimiento explosivo de la web, programas tales como los motores de bsqueda tienen tambin que procesar los datos HTML. Qu es lo que normalmente encuentran los programas que leen los datos HTML? El Listado 1 muestra el cdigo fuente HTML del sitio web mostrado en la Figura 1 un documento

WWW.LINUX- MAGAZINE.ES

Nmero 91

35

PRCTICO Microformatos

Listado 2: Tarjeta de visita con etiquetas hCard


01 <!DOCTYPE html> 02 <html> 03 <head><link rel=profile href=http://microformats.org/profile/hcard/></he ad> 04 <body> 05 <h1>Pedro Miguel Daz -- el Arte Guitarra Flamenca</h1> 06 <div id=me class=vcard> 07 <img alt= class=photo src=images/el-fumador.jpg/> 08 <a class=url fn href=http://el-fumador.info>Pedro Miguel Daz</a> 09 - <span class=nickname>el Fumador</span><br/> 10 <span class=title>Flamenco Artist</span> 11 <div class=adr> 12 <span style=display:None class=type>Home</span> <span class=street-address>C/ Peral 43</span><br/> 14 <span class=postal-code>E-41002</span> 15 <span class=locality>Sevilla</span><br/> 16 <span class=country-name>Espaa</span> 17 </div> 18 <span class=email>pedro@fumador.info</span><br/> 19 <div class=tel> 20 <span class=type style=display:None>Home</span> 21 <span class=value>+34 954 88 24 37</span> 22 </div> 23 </div> 24 </body> 25 </html> 13

Listado 3: Etiquetas de eventos con hCalendar


01 <div class=vevent> 02 <h3 class=summary>Feria de Abril</h3> 03 <abbr class=dtstart title=2012-03-23T21:00:00Z>el 23 de marzo de 2012, 21:00</abbr> 04 en <span class=location>Sevilla</span> 05 <div class=geo> 06 <abbr class=latitude title=37.3844>37 38&#8242; N</abbr> 07 <abbr class=longitude title=-5.9888>5 98&#8242; W</abbr> 08 </div> 09 </div>

(pas) de la direccin. Las etiquetas para la tarjeta de visita siguen el microformato hCard [3], que implementa la especificacin vCard [4] para HTML del Internet Mail Consortium. Para cada lnea de texto, la vCard almacena un par clave/valor junto con opciones adicionales. El microformato hCard traduce este vocabulario a HTML usando las claves y valores del atributo class. Adems de para tarjetas de visitas se pueden utilizar microformatos para

incorporar otro tipo de informacin. Por ejemplo, se pueden describir los eventos usando hCalendar, informacin geogrfica con Geo y productos y reseas de productos con hReview y hReview-aggregate. Para un resumen de los microformatos y sus versiones, vase la wiki de Microformats.org [5]. En el Listado 3 se muestra cmo utilizar el microformato hCalendar, que viene derivado de iCalendar [6]. Los pares propiedades/valor class=vevent

describen eventos, que deben contener una descripcin (summary) y una fecha de comienzo (dtstart). Sin embargo, la informacin sobre el lugar de celebracin (location) es opcional. Para los microformatos se aplican las siguientes reglas: si se quiere proporcionar una fecha en un formato entendible por la mquina, tiene que aparecer en la propiedad title del elemento abbr (lnea 3). Adems de las reglas gramaticales, los microformatos se caracterizan por ser reutilizables. El Listado 3 utiliza el microformato Geo para especificar la localizacin del evento. El formato contiene propiedades para la latitud y la longitud. De nuevo, la variante legible por la mquina viene dada por la propiedad title del elemento abbr. El Listado 4 proporciona otro ejemplo de reutilizacin de microformatos. La lnea 1 representa la descripcin de una resea de un producto usando el microformato hReview-aggregate. hProduct se utiliza para establecer el producto como un item. El atributo rating se refiere a la puntuacin total y votes al nmero de reseas. Los microformatos utilizan el atributo rel en los hiperenlaces para expresar la relacin con otro recurso como por ejemplo, el enlace:
<a rel=met friend colleague U href=http://esoleares.es>U Estrella Soleares - la Pinta</a>

Figura 1: Un sitio web con los datos ms importantes de un msico los proveedores de sitios web tambin los denominan como tarjetas de visitas.

que hace referencia a la pgina web perteneciente a Estrella Solares. La lista en el atributo rel designa a Estrella como una amiga y colega cuyo enlace proporcionado posee tambin informacin per-

36

Nmero 91

WWW.LINUX- MAGAZINE.ES

Microformatos PRCTICO

sonal (met). Para un resumen de todos los valores del atributo rel, consltese de nuevo la wiki Microformats [7].

Microdatos HTML5
HTML5 incluye varios elementos semnticos que no estaban presentes en las versiones anteriores de HTML. El elemento time se utiliza para establecer fechas y horas; el elemento meter para indicar valores de medida. Para que estos datos semnticos sean ms fciles de entender por los programas, HTML5 adapta el concepto de microformato usando formularios conocidos como microdatos. El sistema de microdatos de HTML5 define un conjunto de propiedades itemscope, itemtype, itemprop y itemref que proporcionan las funciones del atributo class de los microformatos. El Listado 5 muestra los datos de la tarjeta de visita del Listado 2 como microdatos HTML5. En vez de utilizar la propiedad class, los microdatos utilizan el atributo itemprop para expresar propiedades. El atributo itemscope se usa para delimitar las unidades, como aparecen en las lneas 10 a 17. El atributo itemtype (lnea 5) designa el vocabulario para la seccin que presenta. El estndar HTML5 ha adoptado el vocabulario para las vCard y los vEvent. Tambin se han traducido otros microformatos a microdatos [8]. El atributo itemref se utiliza para agrupar propiedades ms all de los contenedores lgicos. Para que esto ocurra, itemref usa el atributo ID universal para apuntar a otros elementos.

Rich Snippet Tool


La importancia de los microformatos no se aprecia hasta que no se ven los datos

que se han preListado 4: Etiqueta de productos con parado con ellos. hProduct Por ejemplo, se 01 <li class=hreview-aggregate> pueden utilizar 02 <span class=item> microformatos 03 <span class=hproduct> para optimizar 04 <a class=fn url los resultados href=www.reseller.com?isbn=9-874-444-333-85-1>El Arte Flamenco</a> obtenidos por los 05 <span class=price>33.90&#8364;</span> motores de bs06 <span class=identifier> queda. La Figura 07 <span class=type>ISBN</span> 2 muestra el 08 <span class=value>9-874-444-333-85-1</span> 09 </span> efecto de los 10 </span> microformatos 11 </span> hCard con el 12 <abbr class=rating motor de bstitle=4.9><sup>&#x2606;&#x2606;&#x2606;&#x2606;&# x2606;</sup></abbr> queda de Google 13 <span class=votes>200</span> al utilizar Rich 14 </li> Snippet Tool [10]. Rich Snippet Tool obtiene el microformato de la pgina y esta tarea sugiere un incremento en su muestra qu informacin evala el uso. Tal y como muestra Rich Snippet motor de bsqueda. Para el sitio web Tool, Google lee tanto los microdatos mostrado en la Figura 1, el motor de bscomo los microformatos. queda obtiene la localizacin de Pedro Trabajando con Miguel (Sevilla) y el trabajo designado Microformatos (Artista de Flamenco). Las reseas basadas en hReview o en hReview-aggregate Las herramientas para trabajar con tambin se resaltan en los resultados microformatos o microdatos las podebuscados. Los valores de 1 a 5 se codifimos clasificar en dos clases: una clase can grficamente como cantidad de crea y marca los datos y la otra clase lee estrellas. Es difcil estimar en qu proporcin se encuentra el uso de los microdatos comparados con los microformatos. Sin embargo, el nmero de herramientas de cdigo abierto Figura 2: Rich Snippet Tool de Google muestra qu informacin obtiene disponibles para un motor de bsqueda a partir de los microformatos y microdatos.

Listado 5: Tarjetas de visita con Microdata


01 <!DOCTYPE html> 02 <html> 03 <head><title>vCard</title></head> 04 <body> 05 <div id=me itemscope itemtype=http://microformats.org/profile/hcard> 06 <img alt= itemprop=photo src=images/el-fumador.jpg/> 07 <a rel=me itemprop=url fn href=http://el-fumador.info>Pedro Miguel D?az</a> 08 - <span itemprop=nickname>el Fumador</span><br/> 09 <span itemprop=title>Flamenco Artist</span> 10 <div itemscope itemprop=adr> 11 <span style=display:None itemprop=type>Home</span> 12 <span itemprop=street-address>C/ Peral 43</span><br/> 13 <span itemprop=postal-code>E-41002</span> 14 <span itemprop=locality>Sevilla</span><br/> 15 <span itemprop=region>Andaluca</span><br/> 16 <span itemprop=country-name>Espaa</span> 17 </div> 18 <span itemprop=email>pedro@fumador.info</span><br/> 19 <div class=tel itemscope> 20 <span itemprop=type style=display:None>Home</span> 21 <span itemprop=value>+34 954 88 24 37</span> 22 </div> 23 </div> 24 </body> 25 </html>

WWW.LINUX- MAGAZINE.ES

Nmero 91

37

PRCTICO Microformatos

Figura 3: El complemento de Firefox Operator permite que los usuarios puedan acceder a la informacin de los microformatos.

la informacin. Por ejemplo, el sistema de gestin de contenidos libre, WordPress, posee una extensin que facilita el proceso de creacin de microdatos [11]. El complemento Operator [12] para el navegador Firefox simplifica el proceso de identificacin y procesamiento de los microformatos en los sitios web. Tras instalar el complemento y reiniciar el navegador, Operator aparece como una barra de herramientas adicional bajo la barra de direcciones (Figura 3).

La versin actual 0.9.5.6 de Operator muestra Contactos, Eventos, Localizaciones, Tagspaces, Favoritos y Recursos, permitiendo que el usuario pueda procesar los datos. Los contactos pueden exportarse en el formato vCard y los eventos en el formato iCal, o pueden inyectarse en servicios web tales como Yahoo Contacts o Google Calendar. El complemento puede pasar las coordenadas Geo a los servicios de mapas si as lo deseamos. Operator se encuentra publicado bajo la licencia MPL/ GPL/LGPL. En Listado 6: Integracin con MicrodataJS versiones futuras 01 <head> aparecern nuevos 02 <script src=js/fumador.js></script> 03 <script src=js/jquery-1.7.1.min.js></script> microformatos y 04 <script src=js/jquery.microdata.js></script> enlaces. 05 <script src=js/jquery.microdata.vcard.js></ Existen diversas script> libreras escritas 06 </head> en diferentes lenguajes de programacin para perListado 7: MicrodataJS mitir el acceso a 01 window.onload = function() { los microdatos. El 02 $([itemtype=http://microformats.org/profile/hcard complemento ]).each(function(index) { Jquery de Micro03 var item = $(this); dataJS [13] ofrece 04 item.append(<a class=microlink>microdata</a>); una interfaz de 05 item.find(a.microlink).click( 06 function() { programacin 07 $(this).parent().prepend(<div class=microdata> similar a la API 08 <a class=microlink close>close</a><textarea > DOM [14] para los 09 +jQuery.microdata.vcard(item)+</textarea></div>); microdatos de la 10 item.find(.close).click(
11 function() { 12 item.find(.microdata).remove() 13 } 14 ); 15 } 16 ); 17 }); 18 }

especificacin HTML5. El Listado 6 muestra la integracin de MicrodataJS en un documento HTML. La lnea 3 integra Jquery, luego las lneas 4 y 5 integran los dos complementos Jquery, MicrodataJS y Microdata vCard. El Listado 7 muestra el uso de MicrodataJS. Este ejemplo utiliza JavaScript para extraer los microdatos de la tarjeta de visita y los resalta en el formato vCard. Tras cargar el documento HTML, el cdigo del Listado 7 ejecuta la funcin asignada al evento onload de la lnea 1. La funcin $ de la lnea 2 espera un selector de expresin CSS. Busca elementos que contengan los atributos itemtype con la especificacin del vocabulario de la hCard. each() pasa el conjunto resultante de elementos a la siguiente funcin. La variable item de la lnea 3 acepta una referencia al elemento actual de la variable especial this. Este valor entonces ser visible en todas las expresiones que comiencen en la lnea 6. Si el usuario entonces ejecuta la funcin de la lnea 6 haciendo clic en el hiperenlace con la propiedad class=microlink, JavaScript recordar el valor de item. Antes de que esto ocurra, la lnea 4 utiliza la funcin append para aadir un hiperenlace con la propiedad class= microlink a cada elemento seleccionado en la lnea 2. La lnea 5 asigna la funcin predefinida en la lnea 6 a este evento clic del hiperenlace. La expresin $(this).parent() de la lnea 7 tambin apunta al valor de la variable item. Es fcil utilizar la variable item, como se muestra en el cdigo. Tras hacer clic, la funcin prepend de la lnea 7 aade un rea importante con los datos en formato vCard para elemento item. Para que suceda esto, se utiliza el mtodo vcard de MicrodataJS tambin en la lnea 7. El Listado 7 tambin define un manejador de eventos para el hiperenlace de la clase close. Otro clic cierra el rea que estaba abierta. La Figura 4 muestra los microdatos extrados. MicrodataJS puede tambin obtener los microdatos que lea como JSON, com-

Listado 8: Instalando Python Microdata


01 wget http://pypi.python.org/packages/source/m/ microdata/microdata-0.3.0.tar.gz 02 tar xzvf microdata-0.3.0.tar.gz 03 cd microdata-0.3.0/ 04 sudo python setup.py install

38

Nmero 91

WWW.LINUX- MAGAZINE.ES

Microformatos PRCTICO

En el Listado 9 se muestra el uso de Microdata en una sesin interactiva de Python. Primero se llama a Python desde la lnea de comandos, la lnea 1 y el mdulo Microdata se importa en la lnea 2. Llamando al mtodo Figura 4: Tanto Javascript como la librera Microdata JS obtienen, get_items() del a partir de los microdatos, esta tarjeta de visita. manejador de ficheros abierto de microplemento Microdata JSON, Vevent o el data.html, en la lnea 3 se extraen formato Plugin Microdata Vevent. Se todos los microdatos del documento puede encontrar una pltora de funcioHTML5 y se almacena la informacin nes para trabajar con microdatos, que en el campo items. Una llamada a la desafortunadamente no se encuentran funcin json() de la lnea 4 convierte documentadas en ningn otro sitio que los microdatos al formato de datos no sea en el cdigo fuente. Por encima JSON. De forma similar, el mtodo de esto, MicrodataJS proporciona una dict() podra traducir los datos al forinterfaz llamada Live para extraer los mato diccionario de Python. microdatos en el navegador. Otros lenguajes tambin ofrecen funEl lenguaje de programacin Python ciones similares de forma libre para traofrece la librera Microdata [15], que bajar con los microdatos. Por ejemplo, proporciona un analizador para microdaRuby por medio de Mida [16], Perl con tos de los documentos HTML5. Es de HTML::Microdata [17], PHP con PHP dominio pblico sin ningn detalle sobre Microdata [18] o Java con Any23 [19]. la licencia. En el Listado 8 se muestra Any23 no slo procesa los microdatos, cmo instalar Microdata 0.3.0 en Ubuntu sino que los convierte en diferentes for11.10. Si fuera necesario, se instala tammatos convirtindolos primero en bin en este proceso la librera de Python metainformacin. Los formatos de html5lib. entrada vlidos son: RDF, microdata o microformatos en (X)HTML5, Turtle, Listado 9: Interactuando con Microdata N-Triples, N-Quads, 01 $ python RDF en XML y CSV. 02 >>> import microdata Los formatos de 03 >>> items = microdata.get_items(open(microdata.html)) salida vlidos son 04 >>> print items[1].json() Turtle, N-Triples, N05 { Quads, RDF/XML y 06 geo: [ JSON. 07 {
08 latitude: [ 09 37\u00b0 38\u2032 N 10 ], 11 longitude: [ 12 5\u00b0 98\u2032 W 13 ] 14 } 15 ], 16 dtstart: [ 17 2012-03-23T21:00:00Z 18 ], 19 type: http://www.data-vocabulary.org/Event, 20 location: [ 21 Sevilla 22 ], 23 summary: [ 24 Feria de Abril 25 ] 26 }

pio de los microformatos por medio de los microdatos. Experimentando con el complemento de Firefox Operator podremos entender el potencial que ofrecen los datos en estos formatos. Conforme ms sitios web proporcionen microformatos y microdatos, se facilitar la extraccin de informacin til de la jungla compleja de datos que hoy en da es la web.

RECURSOS
[1] Microformatos: http://microformats.org [2] Microdatos: http://www.whatwg.org/ specs/web-apps/current-work/ multipage/microdata.html [3] hCard: http://microformats.org/wiki/hcard [4] vCard: http://www.ietf.org/rfc/rfc2426.txt [5] Wiki de Microformatos: http:// microformats.org/wiki/Main_Page [6] iCalendar: http://www.ietf.org/rfc/rfc2445.txt [7] Rel-Attribute: http://microformats.org/wiki/ existing-rel-values#HTML5_link_type_ extensions [8] Schema.org: http://schema.org [9] Servicio de validacin de etiquetas de la W3C: http://validator.w3.org [10] Rich Snippet Tool de Google: http://www.google.com/webmasters/ tools/richsnippets [11] Wordpress-Plugin: http://wordpress. org/extend/plugins/ microdata-for-seo-by-optimum7com/ screenshots/ [12] Firefox-Plugin Operator: https://addons.mozilla.org/en-US/ firefox/addon/operator/ [13] MicrodataJS: https://gitorious.org/microdatajs/ [14] DOM API para Microdata: http://www.whatwg.org/specs/ web-apps/current-work/multipage/ links.html#microdata-dom-api [15] Extensin Microdata de Python: http://pypi.python.org/pypi/ microdata/0.3.0 [16] Mida: http://lawrencewoodman. github.com/mida/ [17] HTML::Microdata: http://search.cpan. org/~satoh/HTML-Microdata-0.02/lib/ HTML/Microdata.pm [18] PHP Microdata: https://github.com/ soyrex/PHP-Microdata [19] Any23: http://developers.any23.org

Un Tesoro Escondido de Informacin


Los microformatos abren el contenido de las pginas web para que puedan ser procesados de forma ms inteligente por los programas por medio de herramientas tales como los motores de bsqueda. HTML5 ha adoptado el princi-

WWW.LINUX- MAGAZINE.ES

Nmero 91

39

PRCTICO Android: Remote Launcher

Control de PCs con un smartphone Android

Dejaste tu sistema ejecutndose? Olvidaste hacer un copia de seguridad crtica? Controla tu ordenador Linux desde cualquier parte con un telfono Android. POR VINCZE-ARON SZABO

Control Remoto

trolar. Segn el sitio de Play Store, el servidor Remote Launcher est escrito en Java, as que debe funcionar en cualquier PC que tenga el Java Runtime Environment instalado (versin 1.6 o superior), sea Linux, Windows o Mac OS. Se ha probado en Ubuntu y Windows 7. En este artculo, configurar Remote Launcher para controlar un sistema Linux. Java se encuentra incluido por defecto en las distribuciones Linux ms importantes y podemos escribir java -version para descubrir qu versin est ejecutndose en nuestro ordenador. El componente servidor de Remote Launcher se encuentra disponible como un script de instalacin desde el sitio web del proyecto. Tras descargarlo, desempaquetamos el tarball con:
$ tar -xf U remotelauncherserver-U 0.2.11.tar.gz

a combinacin de un ordenador Linux y de un smartphone Android nos abre un mundo de opciones interactivas. Por ejemplo, la app Gmote nos permite usar nuestro smartphone para controlar ficheros de medios en nuestro PC. Otra til app que sigue el mismo principio cliente-servidor es Remote Launcher. Remote Launcher [1] nos permite iniciar programas en un PC Linux desde nuestro smartphone Android con un simple clic (Figura 1). Suponiendo que lo tenemos correctamente configurado, podremos incluso encender o apagar nuestro ordenador cuando estemos

fuera. La app del smartphone acta como un cliente que controla un programa servidor en un PC. Remote Launcher trae tambin una coleccin de widgets y de atajos que aceleran los procesos de inicio de los programas del PC. Con un poco de creatividad, podemos imaginar cualquier nmero de nuevos usos para Remote Launcher. Podramos utilizar una app adicional para arrancar procesos en el smartphone segn el lugar de nuestra localizacin por ejemplo, para encender nuestro PC automticamente cuando volvemos a casa. Adems, podemos iniciar cualquier tipo de aplicacin Linux, incluyendo un script propio para iniciar un copia de seguridad.

Luego, cambiamos al directorio creado en este paso, nos hacemos root e iniciamos el script install.sh. Esto configura el servidor en /usr/share y crea un enlace simblico para su ejecucin desde /usr/bin. Finalmente, necesitamos habilitar la herramienta ejecutando remote-launcher- server.

App y Servidor
Remote Launcher se encuentra disponible en el Play Store, como se llama ahora el Android Market. Como viene siendo habitual, la app aparece en dos variantes: como versin libre con publicidad [2] y como una versin sin anuncios [3] por 0.77 dlares. Requiere al menos Android 1.6 Donut, usa solamente 75KB de RAM y exige un nmero mnimo de permisos. Adems de acceso no restringido a Internet, controla la alarma de vibracin y muestra el estado de red. Remote Launcher incluye una app cliente en el dispositivo Android y un componenete servidor en el ordenador que deseamos con-

dny3d 123rf.com

Figura 1: Los widgets se encuentran disponibles para acceso rpido. El de la izquierda muestra los lanzadores que existen en el ordenador al que estamos conectados, y el de la derecha ejecuta la funcin Wake on LAN.

40

Nmero 91

WWW.LINUX- MAGAZINE.ES

Android: Remote Launcher PRCTICO

El servidor Remote Launcher nos da la bienvenida con una nota en la que nos dice que necesitamos establecer una contrasea. Tras confirmar pulsando OK, nos lleva hasta un dilogo, en el que podemos introducir una nueva contrasea y confirmarla luego de manera habitual en un campo separado. Simplemente ignoramos el campo de color gris de nuestra contrasea previa despus de todo, no asignamos ninguna. Cuando se inicia, Remote Launcher viene con una ventana de programa y deja un icono correspondiente en el panel de nuestro sistema. La mayor parte de la ventana del programa est ocupada por el Server log (Figura 2), donde Remote Launcher registra todas las actividades. Cuando se inicia, el ltimo mensaje ser Waiting for client to connect on port 4444. A continuacin, necesitamos configurar la app para permitirle abrir una conexin al servidor en el ordenador Linux. Nos aseguramos de que el dispositivo Android est conectado a nuestra red domstica mediante una LAN inalmbrica y luego iniciamos la app Remote Launcher. En ella, pulsamos Add. La primera entrada que necesitamos crear es la direccin IP de nuestro PC (Figura 3). Si no conocemos la direccin IP, vamos a la consola del PC y escribimos ifconfig. La salida de, digamos, eth0 dar informacin sobre la interfaz de red, incluyendo la direccin IP (inet address). Debemos introducir esta direccin en el dispositivo Android como la Server address. Se mantiene el valor por defecto del puerto del servidor, 4444 a menos que ya hayamos configurado un puerto diferente para el servidor en nuestro PC. Ahora necesitamos introducir la contrasea que configuramos en el servidor al principio. Podemos ignorar los otros cuadros de entrada de momento. Para finalizar, pulsamos Save.

Como prueba inicial, intentamos llamar al servidor. Pulsando sobre Connect se conecta la app con el PC y devuelve un mensaje de xito si funciona (Figura 4). Como no tenemos un lanzador configurado en el ordenador, no podemos de hecho hacer nada an. En el lado del PC, el servidor toma nota de la conexin abierta creando una entrada en el registro con algo como Client connected from / 192.168.2.117, citando la direccin IP del dispositivo Android conectado (vase el cuadro Consejo).

Consejo
Si nuestro PC usa un mtodo dinmico para configurar sus direcciones IP (DHCP), el router puede asignarle una direccin IP diferente cada vez que arranque. Para evitar este problema podemos deshabilitar esta funcin y asignar una direccin IP esttica a nuestro ordenador.

Configuracin de Lanzadores
Para usar la app para usar aplicaciones en nuestro PC, debemos configurar primero los lanzadores. Para hacerlo, vamos a la ventana del programa del servidor de Remote Launcher y seleccionamos Edit | Configure Launchers o pulsamos el atajo de teclado Alt+L. En el dilogo que aparece a continuacin (Configure Launchers), pulsamos Add Launcher. En el dilogo, introducimos un nombre intuitivo para el lanzador en el cuadro Name. Luego, aadimos una Description de la funcin que controlaremos en el siguiente cuadro. Path nos permite definir la ruta al fichero que va a ser ejecutado. Normalmente es suficiente con introducir el nombre del programa, algo as como amarok, para arrancar el reproductor Amarok. A continuacin, guardamos la configuracin pulsando Add. Tras cerrar los dilogos para crear lanzadores (Figura 5) y guardar todas nuestras configuraciones, podemos seleccionar el lanzador deseado en nuestro telfono Android y la app nos preguntar si queremos realmente ejecutar el lanzador. Cuando confirmemos, iniciar la aplicacin correspondiente en nuestro ordenador Linux. No debe sorprendernos si la app intenta volver a conectar al sevidor despus de que el dispositivo Android ha estado en modo de espera. Dependiendo de las opciones de ahorro de energa para nuestro dispositivo, la funcin LAN inalmbrica podra deshabilitarse automticamente cuando el mvil se pone en espera. Es aconsejable no modificar esta opcin, porque evita un estrs innecesario sobre nuestra batera.

Vamos al dilogo correspondiente seleccionando Edit | Configure Launcher y pulsamos sobre Add Launcher. Bajo Template encontraremos configuraciones preconfiguradas tales como Shutdown (Figura 6) o Reboot. Despus de seleccionar una de estas plantillas, simplemente confirmamos el dilogo pulsando OK. Remote Launcher usa el comando Shutdown, el cual requiere acceso root para ambas funcionalidades. Por tanto, necesitamos modificar el fichero etc/sudoers en nuestro PC para usar ambas funciones desde la app. Para este paso sera aconsejable evitar el uso de un editor normal, porque puede darnos un error de sintaxis que impedira la ejecucin de sudo. Para sistemas Linux, en los que el root no tiene una contrasea, nos cerraramos el acceso al superusuario a nosotros mismos y no sera posible ejecutar tareas administrativas. Para modificar el fichero de configuracin sudo deberemos ejecutar en su lugar el comando sudo visudo en una consola. Este comando abre un editor, el cual se asegura que observamos ciertas reglas de sintaxis.

Sofisticacin
Figura 2: La ventana del programa en el ordenador Linux nos muestra las ltimas acciones de Remote Launcher.

Podemos usar Remote Launcher para apagar el ordenador o provocar un reinicio remotamente. Para hacerlo necesitamos configurar lanzadores especiales basados en plantillas preconfiguradas o preestablecidas.

Figura 3: En este dilogo podemos aadir nuestro PC o el servidor instalado en l.

WWW.LINUX- MAGAZINE.ES

Nmero 91

41

PRCTICO Android: Remote Launcher

introducimos ifconfig en la lnea de comandos y leemos el valor que se muestra a continuacin de Hardware Address.

En Movimiento
Remote Launcher no est limitada a nuestra red domstica. Tambin podemos usar la app cuando nos movemos, por ejemplo, para arrancar nuestro PC antes de volver a casa. Esta funcionalidad elimina la necesidad de iniciar nuestra mquina manualmente. Para hacerlo, necesitamos configurar la transferencia de puertos (port forwarding) en nuestro router de casa. El mtodo difiere de un router a otro, pero los pasos principales sern los mismos. El primer paso consiste en utilizar un navegador para acceder a la interfaz de configuracin del router introduciendo la direccin IP del router en nuestra barra de direcciones. Tras iniciar sesin en el dispositivo, buscamos las configuraciones de las reglas de los puertos en las configuraciones de red. La ayuda en lnea o el manual del router nos ayudarn llegados a este punto. A continuacin, definimos una nueva regla para la direccin IP del PC que controlaremos remotamente usando el protocolo TCP y un nmero de puerto por ejemplo, 7778. La app Remote Launcher enva el comando a este puerto. El router acepta la peticin y transfiere al puerto de Remote Launcher del PC (4444), que tambin necesitamos especificar. El servidor Remote Launcher escucha los comandos en ese puerto y nuestro router acta como un nodo de transferencia. En el dispositivo Android, creamos ahora un nuevo perfil, porque no podemos acceder a la direccin IP del PC a travs de la red mvil. Sin embargo, s podemos acceder a la direccin IP WAN del router. Cuando especificamos el puerto, (en este ejemplo 7778), el router sabe que tiene que transferir la seal de entrada a la app en el PC. Encontraremos la direccin IP WAN del router en la interfaz

Figura 5: Estos lanzadores se encuentran disponibles en la app una vez creados.

Figura 4: La app es sencilla. Podemos ejecutar la funcin Wake on LAN pulsando el botn WOL.

Seguidamente, navegamos al final del fichero y aadimos lo siguiente:


%Usuario ALL = U NOPASSWD: /sbin/shutdown

Sustituimos Usuario por nuestro propio nombre de usuario, guardamos el fichero y salimos del editor. Ahora, Usuario puede ejecutar el comando de apagado sin tener que introducir una contrasea para sudo. Esto significa que la aplicacin puede ejecutar este comando a travs de nuestro dispositivo Android.

Despierta!
Si nuestro PC tiene una interfaz de red que soporta Wake on LAN, podemos despertar remotamente nuestro PC mediante la app. Para hacerlo, la app Remote Launcher enva un paquete mgico que habilita directamente esta funcin. Necesitaremos habilitar Wake on LAN en la BIOS del PC para que esto funcione. Tambin puede que necesitemos realizar algunos pasos de configuracin adicionales en Linux. Para usar Wake on LAN en la app Remote Launcher, seleccionamos la conexin apropiada en nuestro dispositivo Android y luego pulsamos Edit. En el campo Mac address, introducimos la direccin MAC de la tarjeta de red de nuestro PC. Podemos usar esta direccin hardware (que es nica) para referirnos a la tarjeta de red sin la necesidad de utilizar una IP. Para descubrir la direccin MAC de nuestro PC,

de configuracin. Para routers TeleKom Speed PorT, por ejemplo, esto ser el men Overview: Public WAN-IP. Con esta informacin podemos volver a pulsar de nuevo Add. Introducimos la direccin IP WAN del router en Server address as como el nmero de puerto que definimos en las reglas del router (en este caso, 7778) en el campo Server port. La contrasea en Password es la misma de siempre. Luego, copiamos la direccin MAC para el PC que queremos despertar en el campo Mac address y pulsamos Add. Para la prueba inicial necesitamos deshabilitar la conexin WLAN en nuestro dispositivo Android y habilitar la conexin a Internet. Seleccionamos la entrada del router desde la lista de seleccin de la app Remote Launcher y luego pulsamos Connect. Veremos las entradas del lanzador para el servidor Remote Launcher, con lo que podremos despertar el PC e iniciar programas de la manera normal.

Conclusiones
Remote Launcher nos da opciones verstiles para controlar remotamentee un PC Linux a travs de un smartphone o tablet en Android. El uso de la funcin Wake on LAN en particular nos evitar ms de un viaje si olvidamos apagar o desconectar nuestro PC antes de salir de casa.

RECURSOS
[1] Wiki de Remote Launcher: http://owtroid.com/remotelauncher/ mediawiki [2] Remote Launcher Free: https://play.google.com/store/apps/ details?id=com.owtroid. remotelauncherfree

Figura 6: Remote Launcher ofrece plantillas que nos ayudan a configurar funcionalidades especiales tales como apagados remotos.

[3] Remote Launcher: https://play.google.com/store/apps/ details?id=com.owtroid. remotelauncher

42

Nmero 91

WWW.LINUX- MAGAZINE.ES

PHP en la Lnea de Comandos DESARROLLO

PHP para lnea de comandos

PHP X SISTEMA
PHP no es slo para sitios web. Los scripts de PHP en lnea de comandos llevan en funcionamiento desde hace ms de 10 aos, algo que hace al lenguaje y a sus libreras adecuadas para cualquier administrador que gestione servidores web. POR TIM SCHRMANN

unque el lenguaje PHP est casi inseparablemente unido a las aplicaciones web, tambin puede manejar tareas complejas, recursivas o sencillas desde la lnea de comandos. Un componente que hizo que esto fuera posible fue introducido en la versin 4.3, con fecha de antes de 2002. El Intrprete de Lnea de Comandos (PHP-CLI) [1] se oculta en un paquete separado en la mayora de distribuciones. Normalmente, utiliza el mismo nombre que el intrprete por ejemplo, en Debian 6 (Squeeze) y Ubuntu, es php5-cli pero para openSUSE 12.1, necesitamos el paquete php completo.

podemos esperar, la salida de datos no terminar en un navegador web sino que ser enviada a la salida estndar. Un sencillo programa de Hola Mundo sera algo as:
#!/usr/bin/php <?php echo Hola mundo\n; exit(0); ?>

php holamundo.php

El aadido \n a Hola mundo inserta un salto de lnea en la salida y exit(0); enva un cdigo de salida del script. Como primer paso, hay que asegurarse de que realmente estamos llamando a la variante CLI de PHP debido al cdigo CGIPHP. Para ms detalles, ver el recuadro PHP como CLI y CGI. Antes de lanzar el script por primera vez, podemos validarlo escribiendo
php -l script.php

Salir con ello!


CLI aceptar cualquier script de PHP normal. Tal y como

La primera lnea permite al usuario etiquetar el fichero como ejecutable y poder lanzarlo como si fuera un script tpico de consola. Sin embargo, podramos lanzarlo tambin escribiendo:

para identificar errores de escritura y sintaxis. Por supuesto, podemos alimentar comandos de PHP al intrprete con la entrada de datos estndar, lo que significa que podemos conectar el script a otros programas de esta forma:

WWW.LINUX- MAGAZINE.ES

Nmero 91

alexmit, 123RF.com

43

DESARROLLO PHP en la Lnea de Comandos

PHP como CLI y CGI


Los intrpretes de PHP estn disponibles no slo para la lnea de comandos, sino tambin para interfaces de CGI, que utilizan servidores web para lanzar programas externos. La versin de CLI difiere de la versin CGI principalmente en trminos de su salida de datos. Por ejemplo, el intrprete CGI siempre devuelve una cabecera HTTP. La salida del script Hola Mundo sera algo as: X-Powered-By: U PHP/5.3.6-13ubuntu3.6 Content-type: U text/html Hola mundo! Obviamente, no necesitamos esta cabecera en la lnea de comandos. Una simple condicin if comprobar en el script si est ejecutando la variante de la lnea de comandos: if (PHP_SAPI === cli) { [...] } De paso, podemos utilizar esta comprobacin para asegurarnos de que el script no lanza un servidor web por error. Otra forma de determinar si estamos llamando a la versin CLI en la lnea de comandos es con el comando php -v. La salida debera contener una nota con el efecto que estemos utilizando (CLI).

Este script disecciona el texto Hola Mister Miller por los espacios y guarda las partes individuales en un array. A continuacin, el bucle foreach() realiza una iteracin contra el array y muestra el contenido lnea por lnea. Los arrays en PHP son lo que en otros lenguajes se refieren a diccionarios o a tablas de hash. Estas estructuras de datos almacenan un valor debajo de un ndice. En el ejemplo, el ndice 0 hace referencia a la primera palabra. Los programadores pueden buscar por cadenas utilizando expresiones regulares en un estilo con cierta reminiscencia a Perl:
preg_match(/Mister/, U Hola Mister Miller,U $coincidencias); echo $coincidencias[0];

echo <?php echo U Hello; ?> | U php> greetings.txt

devuelve la longitud de la cadena en $nombre, donde printf() da como salida la cadena con la ayuda de los patrones de posicin utilizados en C:
$contador=5; printf(Tienes %d U mensajes \n,$contador);

En el mundo del texto orientado de la lnea de comandos, los administradores frecuentemente tienen que hacer malabares y concatenar mltiples cadenas, algo realmente fcil de hacer en PHP:
$fichero = vacaciones; $sufijo = png; echo /home/tim/ U . $fichero . U .$sufijo \n;

La funcin preg_match() almacena todas las coincidencias en $coincidencias;. En este ejemplo, $coincidencias[0] contiene la cadena Mister.

Argumentos Slidos
Se recomienda precaucin si necesitamos alimentar scripts de PHP construidos y diseados para la web con CLI. Para empezar, CLI simplemente enviar a la salida cualquier texto fuera de <?php ... ?>. En el peor de los casos, simplemente veremos una gran pieza de cdigo HTML enviado por toda la lnea de comandos. Por otra parte, CLI no tiene los array $_GET, $_POST y $_COOKIE, que es donde suelen acabar los datos de vuelta desde el navegador web. En vez de eso, todos los argumentos gestionados por la lnea de comandos acaban en el array $_SERVER[argv], que nos dice cuntos argumentos han sido pasados. El Listado 1 muestra un ejemplo en el que simplemente se listan todos los argumentos pasados. Como podemos ver, de los resultados de la Figura 1, el primer argumento pasado es siempre el nombre de fichero del script ejecutado.

PHP nos proporciona varias formas para diseccionar cadenas. Por ejemplo, el script explode() divide una cadena de acuerdo a un delimitador definido (un espacio en el ejemplo) y distribuye las partes en un array:
<?php $texto = U Hola Mister Miller; $parte = U explode( , $texto); foreach U ($division as $num => $parte)U { echo $parte\n; } ?>\ echo $division[0];

PHP siempre utiliza el signo del dlar para designar variables los programadores de Bash conocern esta medida. Los puntos fuera de las comillas concatenan las cadenas. PHP reemplaza automticamente las comillas dentro con sus contenidos.

Los prstamos de C
Para operaciones ms complejas, PHP tiene funciones que se asemejan a sus contrapartes equivalentes del lenguaje de programacin C. Por ejemplo, strlen($nombre);

Listado 1: Evaluando Argumentos


01 <?php 02 echo Nmero de argumentos: . $_SERVER[argc] . \n; 03 04 $argumentos = $_SERVER[argv]; 05 foreach ($argumentos as $nr => $argumento) { 06 echo argumentos[$nr] = $argumento\n; 07 } 08 09 exit(0); 10?>

Figura 1: Los argumentos pasados al programa pueden ser evaluados en los scripts de PHP.

44

Nmero 91

WWW.LINUX- MAGAZINE.ES

PHP en la Lnea de Comandos DESARROLLO

Si utilizamos php para llamar a un script y queremos adems pasar argumentos que comiencen con un guin (-), como
php ejemplo.php -h

trim(fgets($handle)); fclose($handle);

CLI interpretar el argumento y en este caso, mostrar su propio mensaje de ayuda. El argumento separador (--) puede ser de ayuda aqu:
php ejemplo.php -- -h

La funcin trim() remueve todos los espacios en blanco (p.ej., espacios y tabulaciones) al comienzo y al final de cada lnea y fclose() cierra el fichero. Existen un par de constantes predefinidas para hacer la vida ms fcil a los desarrolladores. En vez de abrir primero el mtodo de entrada estndar escribiendo
fopen(php://stdin, r);

Este problema no ocurre si aadimos un shebang al principio del script como en el ejemplo de Hola Mundo haciendo el script ejecutable, pudiendo lanzarlo directamente.

y a continuacin leer la lnea, los programadores de PHP pueden utilizar directamente STDIN:
$linea = fgets(STDIN);

Abrelatas
Como otros muchos lenguajes de programacin, PHP utiliza la funcin fopen() para abrir ficheros y devolver un archivo para gestionarlo. Despus de eso, todas las otras rutinas de entrada y salida de datos necesitan su puntero al fichero. Una de esas rutinas es fgets(), que lee una lnea de texto desde el fichero:
$handle = U fopen(test.txt, r); $linea = U

permite analizar un fichero CSV: fgetcsv();. El Listado 3 muestra cdigo de ejemplo. En la lnea 2, fopen() abre el fichero lista.csv y a continuacin, fgetcsv() obtiene la primera lnea del fichero, extrayendo los campos de datos individuales e inmediatamente distribuyndolos en el array $datos. El bucle posterior foreach(), muestra todos los elementos del array en el orden correcto. El bucle while() repite este proceso hasta que fgetcvs() llegue al fin del fichero CSV y no pueda devolver ms lneas. Es difcil imaginar una manera ms sencilla o corta de realizar esta tarea. El tercer parmetro en fgetcsv() especifica el delimitador. En el Listado 3 las entradas estn separadas por comas. Si las reemplazamos con dos puntos, podramos analizar fcilmente el fichero del sistema /etc/passwd:
$fichero = fopenU (/etc/passwd, r); $datos = fgetcsvU ($fichero, 0, :);

STDOUT y STDERR, salida estndar y error estndar respectivamente, siguen el ejemplo. Analizar el fichero lnea por lnea es un juego de nios con PHP (Listado 2). En la lnea 4, file() abre el fichero y devuelve todas sus lneas en un array. A continuacin, un bucle foreach realiza iteraciones contra el array y devuelve cada lnea en la pantalla.

Aplicacin Prctica
PHP tiene una funcin parecida que

Listado 2: Analizando un Fichero de Texto


01 02 03 04 05 06 07 08 09 10 11 12 <?php $nombrefichero =test.txt; $lineas = file($nombrefichero); foreach ( $lineas as $num => $linea ) { $linea = trim($linea); echo $num : $linea\n; } exit(0); ?>

La contraparte de fgetcsv() es fputcsv()x, que semiautomticamente almacena una lnea coincidente en un fichero CSV. Para que esto suceda, simplemente necesita pasar el carcter separador deseado y un array conteniendo todos los datos para la lnea:

Listado 4: Procesando Propiedades


01 <?php 02 $uid = posix_geteuid(); 03 $usuario = posix_getpwuid($uid); 04 echo Usuario del proceso: $usuario[name] \n; 05 echo UID: $usuario[uid] \n; 06 echo GID: $usuario[gid] \n; 07 echo Directorio Personal: $usuario[dir] \n; 08 ?>

Listado 3: Analizando un Fichero CSV


01 <?php 02 $fichero = fopen(lista.csv, r); 03 while (($datos = fgetcsv($fichero, 0, ,)) !== FALSE) { 04 05 echo Line content:\n; 06 foreach ( $datos as $nr => $entrada ) { 07 $entrada = trim($entrada); 08 echo $entrada\n; 09} 10 11 } 12 fclose($fichero); 13 exit(0); 14 ?>

Figura 2: La funcin posix_getpwuid() devuelve informacin de la cuenta de usuario utilizada para ejecutar el script.

WWW.LINUX- MAGAZINE.ES

Nmero 91

45

DESARROLLO DESARROL PHP en la Lnea de Comandos

Figura 3: El script en el Listado 5 ejecutndose como un usuario normal y como root.

Figura 4: El script getcwd() muestra que el directorio actual es el que el usuario lanz desde el intrprete de la lnea de comandos.

$registro = arrayU (tims, Tim,Schrmann); $fichero = fopenU (test.csv, w); fputcsv($fichero, U $registro, ,);

el script tendr permisos para acceder al directorio. La funcin scandir() proporciona una manera fcil de manipular ficheros en un directorio:
<?php $ficheros = U scandir(Fotos); foreach U ($ficheros as $fichero) { echo $fichero \n; }; ?>

Las funciones criptogrficas dan a los programadores formas rpidas de generar huellas dactilares nicas para los ficheros este ejemplo utiliza el mtodo MD5 hash:
echo hash_fileU (md5, test.txt);

En la lnea de comandos, hay varias funciones POSIX que llegan a ser muy tiles. Por ejemplo, posix_geteuid() devuelve el id de usuario que est ejecutando el script. Podemos entonces enviar este ID a posix_getpwuid() (Listado 4) para mostrar un array con la informacin de la cuenta de ese usuario (Figura 2). La funcin posix_access() (Listado 5) muestra los permisos para un fichero (Figura 3).

Manipulacin de Ficheros
PHP tiene una funcin adecuada para ms o menos cualquier operacin con el sistema de ficheros. Por ejemplo, chmod() cambia los permisos de los archivos, ls_dir() comprueba que el nombre pasado es un directorio, copy() copia un fichero y mkdir() crea un nuevo directorio:
mkdir(/home/tim/nuevo,U 0700);

Este cdigo utiliza scandir() para mostrar todos los ficheros en el subdirectorio Fotos. La Figura 4 muestra la funcin getcwd(), que evala el directorio actual de trabajo. La funcin exec lanza programas externos [p.ej., exec(gzip test.txt)]. Los administradores pueden utilizar virtualmente cualquier extensin de PHP en CLI, algo que puede ser realmente til. Por ejemplo, podemos acceder a un fichero Gzip que hayamos creado con la funcin correspondiente Zlib y dirigir su contenido a la consola:
readgzfile(test.txt.gz);

Estas funciones introducidas en este artculo [2] son simplemente un pequeo extracto de la gran cantidad de funcionalidades establecidas que podran satisfacer los deseos ms exticos [3]. Por ejemplo, podramos incluso tener la opcin de crear una pequea interfaz de usuario orientada al texto con el uso de funciones Ncurses.

Conclusiones
Aunque puede que PHP no sea el lenguaje de programacin que viene inmediatamente a la mente cuando estamos buscando un lenguaje para la lnea de comandos, resulta que actualmente PHP ejecuta esta tarea casi a la perfeccin. Gracias a la enorme librera de funciones, incluso las tareas ms exigentes se pueden desarrollar con un par de lneas limpias, cdigo fcil de leer. CLI ofrece adems un modo interactivo que podemos activar escribiendo php -a. Este modo soporta la funcin de auto completar comandos. Presionando la tecla Tab, automticamente se completar el comando que empecemos a escribir. Si tienes una mquina con PHP instalado, puedes dar un descanso a bash y cambiar a PHP-CLI en su lugar.

El segundo argumento define los permisos. En este ejemplo, slo el usuario que lanz

Existen otras funciones similares para abrir y manipular archivo ZIP y RAR.

Listado 5: Probando Permisos de Ficheros


01 <?php 02 $existe = posix_access(/etc/passwd,POSIX_F_OK); 03 if($existe) echo Fichero existe\n; 04 05 $lectura = posix_access(/etc/passwd,POSIX_R_OK); 06 if($lectura) echo Permisos de lectura en el fichero\n 07 08$ escritura = posix_access(/etc/passwd, POSIX_W_OK); 09 if($escritura) echo Permiso de escritura en el fichero\n; 10 11 $ex = posix_access(/etc/passwd, POSIX_X_OK); 12 if($ex) echo Permisos de ejecucin en el fichero\n; 13 ?>

RECURSOS
[1] PHP-CLI: http://php.net/manual/en/ features.commandline.php [2] Listados de este artculo: http://www.linux-magazine.es/ Magazine/Downloads/91/PHP [3] Referencia de funciones PHP: http:// php.net/manual/en/funcref.php

46

Nmero 91

WWW.LINUX- MAGAZINE.ES

Perl: Descargando del Kindle DESARROLLO

Extraer el contenido destacado en un Kindle de Amazon desde una mquina Linux

Extractor de Destacados
script en Perl que la guarda en una base de datos. POR MICHAEL SCHILLI

Con el lector de ebook Kindle de Amazon, podemos guardar extractos, o destacados en un archivo. Ms tarde, podemos conectar el Kindle a un puerto USB de un equipo con Linux y recuperar la informacin con un

os libros electrnicos cada vez emulan mejor las propiedades de sus homlogos impresos. Por ejemplo, los compradores de libros elec-

trnicos para el Kindle de Amazon pueden tanto prestar sus libros a amigos, como aadir marcadores al texto y resaltar pasajes (recortes) en su material de lectura digital (vase la Figura 1). Y, como buen servicio que es, el Kindle enva estos a un servidor centralizado de manera que el usuario pueda acceder a ellos en un lector diferente en cualquier momento posterior. Una coleccin compacta de recortes de varios libros pueden ayudarnos a encontrar cosas que sabemos que hemos seleccionado en alguna parte, aunque no podamos recordar el ttulo del libro. Esto explica por qu un gur de la productividad sugiere [2] utilizar cortar y pegar para extraer los aspectos ms destacados de su sitio web personalizado Kindle en Amazon.com. Pero hay un mtodo ms elegante para esto: cuando un usuario presiona el botn Enter, lleva el cursor sobre un pasaje de texto en el dispositivo y presiona Enter de nuevo, el Kindle guarda estos recortes personales o destacados, en un archivo de texto plano en el sistema de archivos del dispositivo. El script Perl que muestro en este artculo toma la informacin del sis-

tema de archivos tan pronto como conectamos el Kindle en el puerto USB de nuestro sistema Linux.

Plugin en Accin
Despus de conectar el Kindle al puerto USB de nuestro ordenador con Ubuntu, veremos el cuadro de dilogo de la Figura 2, que sugiere accionar el Kindle con el reproductor Rhythmbox MP3 o alguna otra aplicacin. Otra opcin de la lista indica a Ubuntu no hacer nada, y podemos pulsar sobre Realizar siempre esta accin para evitar que Ubuntu intente este tipo de tonteras en el futuro. Ubuntu monta el sistema de archivos del Kindle en /media/Kindle. La Figura 3 muestra que el archivo con la informacin destacada almacenada se encuentra en el directorio documents bajo el directorio raz del Kindle y que ste es un archivo de texto claro con el nombre de Mi Clippings.txt (tngase en cuenta los espacios en blanco). Las entradas individuales estn organizadas en lneas y estn delimitadas a partir de las siguientes entradas por una cadena de caracteres = (vase la Figura 4). El archivo de texto no slo incluye los pasajes de texto seleccionados, sino tambin marcadores y notas que el usuario introduce a travs del teclado del Kindle, por ejemplo, para burlarse de un error de impresin que ha descubierto, o para contribuir con su conocimiento infinito y por lo tanto, mejorar el contenido del libro.

Jugar con el Formato


Para automatizar el proceso de conversin del formato de texto claro del Kin-

WWW.LINUX- MAGAZINE.ES

Nmero 91

47

DESARROLLO Perl: Descargando del Kindle

Figura 1: Cuando un usuario pasa su dedo sobre un pasaje de texto, el lector Kindle guarda esta seleccin en un archivo, que se transmite a un servidor centralizado.

dle en entradas de base de datos, que se puedan consultar ms tarde, necesitamos el mdulo ClippingsParser.pm del Listado 1. ste aguarda un descriptor de archivo para el archivo de recortes del Kindle, busca el formato no documentado, y

Figura 2: Este molesto pop-up puede silenciarse seleccionando No hacer nada y Realizar siempre esta accin.

Figura 3: El archivo Mi Clippings.txt en el directorio documents del Kindle guarda recortes del usuario en formato de texto.

devuelve detalles como el ttulo del libro, autor, pgina, fecha y el texto resaltado. La funcin parse_fh() acepta un descriptor de archivo para el archivo de texto claro y devuelve un cdigo de referencia como una devolucin de llamada, saltando a la referencia de cdigo cada vez que se encuentra una entrada. La primera lnea en el archivo de Kindle puede contener un par de caracteres ilegibles al inicio de la lnea, pero el comando de reemplazo de la lnea 30 se deshace de ellos. Si el contenido de la lnea de texto bajo investigacin en la lnea 33 no coincide Texto Completo o con el separador de entradas formado por Coincidencia de Patrn signos =, la lnea 38 agrega el contenido a la variable $entry. Si el script encuentra En el modo normal, las bases de datos una lnea de separacin entre las entradas, SQLite soportan criterios de bsqueda la lnea 34 llama al mtodo parse_entry y tales como LIKE %termino%, que indidevuelve los datos de texto recogidos hasta el momento y la devolucin de llamada, al que el script tiene que saltar una vez que todos los datos de una entrada dada se hayan recogido. En parse_entry(), el comando split de la Figura 4: Los recortes del usuario en el sistema de archivos del leclnea 53 divide una tor Kindle.

entrada en ttulo ($head), pgina y fecha de entrada ($whence), una lnea en blanco y el texto seleccionado ($texto). Dado que el archivo del Kindle utiliza el formato de Windows con \\r\\n como el carcter de fin de lnea, split utiliza esta combinacin en la expresin regular de la lnea 53. Algunos libros electrnicos, tales como diccionarios, no listan el autor entre parntesis a continuacin del ttulo, lo que significa que el campo del autor en la lnea 61 est vaca en este caso. El ltimo campo de la segunda lnea de un registro (separado de la anterior con el caracter |), contiene los detalles de la ubicacin y la pgina, y lleva la fecha en que se ha seleccionado el fragmento de texto o se fij el marcador. Las lneas 80 a 82 proporcionan todos estos campos a la llamada de devolucin, configurada previamente en el programa principal como una funcin pasada por referencia. Podemos usar el mdulo parseador para remodelar los datos del Kindle y convertirlos a un formato que se preste a su rpida consulta. Para asegurar que el usuario puede realizar una bsqueda de texto completo de los trminos de los pasajes de texto seleccionados, el script del Listado 3 alimenta los datos destacados que haya encontrado a una base de datos SQLite con un motor de texto completo. El Listado 2 muestra que se necesitan comandos especiales CREATE con la herramienta en lnea de comandos sqlite3 para configurar una base de datos SQLite en archivos planos que indexen los datos de texto guardados de manera que las bsquedas multi-palabras se ejecuten a una velocidad digna de Google.

48

Nmero 91

WWW.LINUX- MAGAZINE.ES

Perl: Descargando del Kindle DESARROLLO

Listado 1: ClippingsParser.pm
01 ############################## 02 package ClippingsParser; 03 ############################## 04 use strict; 05 use warnings; 06 07 ############################## 08 sub new { 09 ############################## 10 my( $class ) = @_; 11 12 bless {}, $class; 13 } 14 15 ############################## 16 sub parse_fh { 17 ############################## 18 my( $self, $fh, $callback ) = 19 @_; 20 21 my $line_sep = 22 ==========\r\n; 23 my $entry = ; 24 my $first = 1; 25 26 while( my $line = <$fh> ) { 27 28 if( $first ) { 29 $first = 0; 30 $line =~ s/^\W+//; 31 } 32 33 if( $line eq $line_sep ) { 34 $self->parse_entry( $entry, 35 $callback ); 36 $entry = ; 37 } else { 38 $entry .= $line; 39 } 40 } 41 } 42 43 ############################## 44 sub parse_entry { 45 ############################## 46 my( $self, $entry, 47 $callback ) = @_; 48 49 my( 50 $head, $whence, 51 $empty, $text 52 ) 53 = split /\r\n/, $entry, 4; 54 55 # format error? 56 die format error 57 if !defined $text; 58 59 $text =~ s/\r\n\Z//; 60 61 my( $title, $author ) = 62 ( $head =~ 63 /^(.*) \((.*?)\)$/ ); 64 65 # a veces no hay autor 66 if( !defined $author ) { 67 $author = ; 68 $title = $head; 69 } 70 71 my @whence = 72 split /\s*\|\s*/, $whence; 73 my $when = pop @whence; 74 my $what = join |, 75 @whence; 76 77 my( $type, $loc ) = 78 ( $what =~ /^- (\w+) (.*)/ ); 79 80 $callback->( 81 $type, $loc, $author, 82 $title, $when, $text 83 ); 84 } 85 86 1;

Listado 2: sqlite-setup.sh
01 file=highlights.sqlite 02 rm -f $file 03 04 sqlite3 $file <<EOT 05 CREATE VIRTUAL TABLE 06 highlights USING FTS3 ( 07 type TEXT, loc TEXT, 08 author TEXT, title TEXT, 09 date TEXT, text TEXT ); 10 11 CREATE TABLE seen ( 12 type TEXT, loc TEXT, 13 title TEXT, 14 UNIQUE(type, loc, title) ); 15 EOT

gin Full Text Search (USING FTS3). FTS3 se ha incluido con SQLite desde la versin 3.5.0 a partir de 2007, y SQLite 3.7.4 introdujo FTS4 en 2010, aumentando el rendimiento, pero a costa de una mayor complejidad [3]. La tabla de texto completo se puede rellenar con llamadas a INSERT y consultar con consultas SELECT, al igual que cualquier otra base de datos. Sin embargo, ofrece dos funciones adicionales: en primer lugar, tiene una columna virtual que utiliza el mismo nombre que la tabla y que acta como una especie de resumen de todas las columnas de la tabla durante las consultas. En nuestro caso, SELECT
WHERE highlights MATCH(?)

can que se toman su tiempo para encontrar entradas cuyas columnas contengan cadenas de texto especficas. Incluso si una respuesta lenta no te perturba, hay otro inconveniente. Si estamos buscando entradas que contengan las palabras Perl y Data escondidas en algn lugar de las profundidades del texto, este mtodo va a ser muy indirecto. En contraste con esto, un motor de texto completo est especializado en este tipo de consulta, y bsicamente slo busca palabras enteras. Una bsqueda de Data no

encontrar entradas para Database, pero si se busca por Date Time, encontraremos todos los textos que contienen la palabra Date y Time dondequiera que estn y en cualquier orden. Para indicar a SQlite que cree una tabla con un ndice de texto completo, el Listado 2 solicita una tabla virtual en lugar de Figura 5: La salida de la bsqueda completa clipfind muestra una normal: la tabla virtual todos los mensajes de texto resaltados que contengan tanto utiliza la versin 3 del plu- la palabra file como directory.

busca todas las entradas donde cualquier columna coincida con el operador especificado MATCH. La segunda diferencia es el operador MATCH, que implementa una bsqueda de texto completo orientada a palabras. Por ejemplo, MATCH (gato perro) busca textos que contengan ambas palabras en cualquier lugar y en cualquier orden, y la bsqueda es lo suficiente-

WWW.LINUX- MAGAZINE.ES

Nmero 91

49

DESARROLLO DESARROL Perl: Descargando del Kindle

mente inteligente como para ignorar maysculas o minsculas. Incluso podemos utilizar derivados, de manera que una bsqueda de gato tambin encontrar gatos.

Alimento para la Base de Datos


El Listado 3 lee el archivo de recortes del Kindle y rellena la base de datos SQLite previamente creada en una mquina Linux. Con objeto de que encuentre tanto el mdulo ClippingsParser.pm como el archivo de base de datos high-

lights.sqlite, que se encuentra en el mismo directorio que el script tras ejecutar los comandos SQL del Listado 2, el bloque BEGIN de las lneas 18 a 21 en primer lugar se sita en el directorio que contiene el script. Utiliza el archivo de log /var/log/kindle.log para describir lo que est haciendo, lo que resulta muy til para depurar si el script se ejecuta en segundo plano (que es el caso normal como veremos ms adelante), ya que siempre que el usuario conecte el Kindle, el sistema Udev del kernel de Linux llama al script.

Ser llamado por Udev tambin significa que tiene que devolver de inmediato y continuar funcionando en segundo plano con el fin de analizar los datos de recortes y almacenarlos en el orden correcto en la base de datos. Para hacer esto, el script ejecuta un comando fork en la lnea 48 y crea un proceso hijo que se encarga de los trabajos en curso. Mientras, el proceso padre desaparece y devuelve que ha ido todo bien. Debido a que el kernel llama al script como root, la lnea 46 utiliza el comando setuid del mdulo de POSIX para resetear los per-

Listado 3: kindle-connected
001 #!/usr/local/bin/perl -w 002 ############################# 003 # kindle-connected 004 # ejecutar el script con el 005 # kindle conectado 006 ############################# 007 use strict; 008 use local::lib; 009 use Log::Log4perl qw(:easy); 010 use POSIX; 011 use DBI; 012 013 my $run_as = mschilli; 014 my $clip_path = /media/ . 015 Kindle/documents/ . 016 My Clippings.txt; 017 018 BEGIN { 019 use FindBin qw($RealBin); 020 chdir $RealBin; 021 } 022 use ClippingsParser; 023 024 my $logfile = 025 /var/log/kindle.log; 026 027 Log::Log4perl->easy_init( 028 { 029 file => >>$logfile, 030 level => $DEBUG, 031 } 032 ); 033 034 my ( 035 $name, $passwd, 036 $uid, $gid 037 ) = getpwnam($run_as); 038 039 chown $uid, $gid, $logfile 040 or LOGDIE 041 Cannot chown $logfile: $!; 042 chmod 0644, $logfile 043 or LOGDIE 044 Cannot chmod $logfile: $!; 045 046 POSIX::setuid($uid); 047 048 my $pid = fork(); 049 die fork failed 050 if !defined $pid; 051 exit 0 if $pid; # parent 052 053 # esperar hasta que el dir root 054 # del kindle se haya montado 055 for (1 .. 10) { 056 if (-f $clip_path) { 057 last; 058 } else { 059 DEBUG 060 Waiting for $clip_path; 061 sleep 5; 062 next; 063 } 064 } 065 066 LOGDIE $clip_path not found 067 if !-f $clip_path; 068 069 my $dbh = DBI->connect( 070 dbi:SQLite: . 071 highlights.sqlite, 072 , , 073 { 074 RaiseError => 1, 075 PrintError => 0 076 } 077 ); 078 079 open my $fh, <, $clip_path 080 or LOGDIE 081 Cant open $clip_path ($!); 082 083 my $cp = 084 ClippingsParser->new(); 085 086 my $items_added = 0; 087 088 $cp->parse_fh( 089 $fh, 090 sub { 091 my ( 092 $type, $loc, 093 $author, $title, 094 $when, $text 095 ) = @_; 096 097 my $sth = $dbh->prepare( 098 INSERT INTO seen . 099 VALUES (?, ?, ?) 100 ); 101 102 eval { 103 $sth->execute($type, $loc, 104 $title); 105 }; 106 107 # seguramente un incauto 108 return if $@; 109 110 $sth = $dbh->prepare( 111 INSERT INTO 112 . highlights VALUES 113 . (?, ?, ?, ?, ?, ?) 114 ); 115 $sth->execute( 116 $type, $loc, 117 $author, $title, 118 $when, $text 119 ); 120 $items_added++; 121 } 122 ); 123 124 INFO 125 $items_added items added; 126 close $fh;

50

Nmero 91

WWW.LINUX- MAGAZINE.ES

Perl: Descargando del Kindle DESARROLLO

Listado 4: clipfind
01 #!/usr/local/bin/perl -w 02 use strict; 03 use Text::Wrap qw(fill); 04 use DBI; 05 06 BEGIN { 07 use FindBin qw($RealBin); 08 chdir $RealBin; 09 } 10 11 my $query = join , @ARGV; 12 13 my $dbh = DBI->connect( 14 dbi:SQLite: . 15 highlights.sqlite, 16 , 17 , 18 { RaiseError => 1 } 19 ); 20 21 my $sth = $dbh->prepare( 22 SELECT * FROM highlights 23 . WHERE type = Highlight 24 . AND highlights 25 . MATCH(?) ); 26 27 $sth->execute( $query ); 28 29 my $serial = 1; 30 31 while( my $ref = 32 $sth->fetchrow_hashref() ) 33 { 34 35 my $output = 36 [$serial] 37 . \$ref->{title}\, 38 $ref->{author}, 39 ($ref->{loc}), 40 . \$ref->{text}\; 41 42 print fill(, , 43 ($output)), \n\n; 44 45 $serial++; 46 }

misos a los de la cuenta de usuario configurada en la lnea 13, evitando as las vulnerabilidades innecesarias. Debido a que el directorio raz del Kindle puede no existir cuando el script se inicia, el bucle for de la lnea 55 a 64 intenta leer los recortes 10 veces. Si esto falla, el script espera cinco segundos y luego vuelve a intentarlo.

Nada de Material Antiguo


Si el usuario conecta el mismo dispositivo Kindle al ordenador mltiples veces, la mayor parte de las entradas ya existirn en la base de datos y la copia ciega slo causara duplicados indeseables y una carga innecesaria de la base de datos. Para evitar estos duplicados, el script del Listado 2 define una segunda tabla

(real, no virtual) de nombre seen, y utiliza una instruccin UNIQUE para estipular que la combinacin de type (es decir, Highlight, Bookmark o Note), loc (nmero de pgina) y title debe ser nica. Si la lnea 103 agrega luego un registro existente a la tabla seen, automticamente se genera un error porque el sis-

DESARROLLO Perl: Descargando del Kindle

Listado5: 99-kindle.rules
01 SUBSYSTEM==usb, ACTION==add, 02 ENV{DEVTYPE}==usb_device, ATTRS{idVendor}==1949, ATTRS{idProduct}==0004, RUN+=/home/<I>mschilli<I>/git/articles/kindle-highlights/eg/kindle-connected

Cookbook de Jan Just Keijser, los cuales se hallan en mi Kindle y en los que he destacado pasajes.

Control de Lanzamiento
Para asegurarnos de que el script se inicia cada vez que el usuario conecta el Kindle (vase la Figura 6), los Figura 7: Cuando conectamos el Kindle a nuestro ordenador con expertos en auto- Ubuntu, los mensajes del subsistema USB aparecen en /var/log/ Figura 6: Conexin del Kindle a una mquina matizacin guarda- messages. Linux a travs de su conector USB. rn las correspontema de base de datos evita estrictaLos usuarios de Linux pueden descudientes reglas udev (vase el Listado 5) mente integrar un duplicado. La consbrir el ID de fabricante e ID de identificaen el directorio /etc/udev/rules.d y llatruccin eval de la lnea 102 atrapa este cin del producto especificados en la marn a error y la clausula if de la lnea 108 regla udev siguiendo las nuevas entradas devuelve antes de tiempo la devolucin sudo service udev restart en el archivo /var/log/messages (tal y de llamada. Si la entrada no existe, la como se muestra en la Figura 7). En lnea 110 cumple con su deber prepapara llamar la atencin del servicio udev nuestro caso, el nmero asignado al Kinrando una nueva entrada, y la lnea 115 para cambiar la configuracin. La dle en el rbol USB es el 1-4.4.4-2. Con enva correctamente la entrada a la base siguiente entrada esta informacin, podemos analizar el de datos. contenido del correspondiente archivo ENV{DEVTYPE}==usb_device contenido en el directorio /sys/bus/usb, Busca y Hallars como se muestra en la Figura 8. Desde El cdigo clipfind mostrado en el Lisresulta til, porque evita que el manejaeste punto, todo debera funcionar autotado 4 acepta consultas de bsquedas, dor de la directiva RUN se accione mltimticamente y la base de datos local extrae las entradas coincidentes de la ples veces. Conectar el Kindle desencadebera reflejar los datos del Kindle base de datos y las presenta en forma dena una serie de acciones. En primer inmediatamente cada vez que lo conectade una bibliografa. La Figura 5 muestra lugar, se crea la entrada USB, a continuamos. cmo clipfind busca los registros que cin se asigna un disco duro, seguido de contengan ambas palabras file y direcuna particin y otras cosas. Sera una RECURSOS tory, devolviendo dos entradas. El priprdida de tiempo buscar el archivo de [1] Michael Hyatt, Cmo pasar tus mero es un prrafo del excelente libro recortes de cada uno de estos eventos, recortes del Kindle a Evernote: de Linux, La interfaz de programacin por no hablar de la carga del sistema cauhttp://michaelhyatt.com/ de Linux, de Michael Kerrisk, y el sada por procesos paralelos que esperan how-to-get-your-kindle-highlights-in segundo es un pasaje de OpenVPN 2 al directorio con el sistema de archivos to-evernote.html del Kindle. [2] Listados de este artculo: Otra manera de http://www.linux-magazine.es/ atrapar al Kindle al Magazine/Downloads/91 conectarse sera utilizar el demonio [3] Extensiones SQlite FTS3 y FTS4: presentado en [4], http://www.sqlite.org/fts3.html que se encuentra [4] Suban al D-BUS, Michael Schilli, en el sistema DLinux Magazine nmero 77, pg 45. Bus de Linux y www.linux-magazine.es/issue/77/ Figura 8: El directorio sys muestra los parmetros USB del lector atrapa el evento de 045-048_PerlLM77.pdf montaje. Kindle conectado.

52

Nmero 91

WWW.LINUX- MAGAZINE.ES

La Columna de Charly: Swaks ADMINISTRACIN

El da a da del Administrador de Sistemas: Swaks

Para el Protocolo
La bsqueda de errores en un servidor SMTP por medio de telnet y la comprobacin de los correos puede parecer una carrera sin fin. Pero Swaks nos ayuda a llegar a tiempo a la meta. CHARLY KHNAST
MTP es un protocolo de texto plano, lo que resulta ser bastante prctico a la hora de buscar errores en un servidor de correo. Simplemente me puedo conectar al puerto 25 por Telnet y luego actuar como un cliente de correo. Por medio de las respuestas del servidor, rpidamente puedo ver si hay algn problema tericamente, al menos. En la prctica, como seguro ya habrn podido adivinar, las cosas no son tan sencillas. SMTP ha ido engordando y engordando a lo largo de los aos, entre otros motivos por la necesidad de aadirle desesperadamente funciones de seguridad. Aunque los comandos bsicos como HELO <FQDN> o RCPT son fciles de escribir rpidamente, la autenticacin con CRAM-SHA-1 no tiene nada que ver con el texto plano del protocolo original, por lo que yo s y por la diversin que me proporcionaba antao, que ya he perdido. Swaks [1] es una herramienta que nos devuelve de nuevo la facilidad para realizar diagnsticos de los servidores de correo. Con los parmetros adecuados, la herramienta ejecuta el dilogo SMTP para la diagnosis por s mismo. Simplemente puedo mandar un correo de prueba con:

--server=U mail.example.com

Si la prueba tiene xito, charly@kuehnast.com recibir el correo de prueba. Puedo seguir cada paso del dilogo SMTP en la consola y obtener cualquier mensaje de error del servidor en bandeja de plata. En la Figura 1 se muestra un ejemplo ms complejo. Entre otras cosas, Swaks ha descubierto que el servidor de correo soporta TLS. Para averiguarlo, introduzco -tls (atencin: con un slo guin, no dos). Si el servidor no soportase TLS, habra recibido el mensaje * Host did not advertise STARTTLS y Swaks habra cerrado el dilogo SMTP. Ms all de esto, el ejemplo muestra una autenticacin SMTP por medio de un mecanismo basado en texto plano. En una situacin real, seguro que preferira utilizar un mtodo ms seguro, ya que este mecanismo basado en texto plano no cifra ni el nombre de usuario ni la contrasea los caracteres aparentemente crpticos provienen de la codificacin de los datos en base64. Le indico a Swaks que quiero utilizar un mecanismo de autenticacin con el parmetro --auth y le proporciono mis datos de autenticacin por medio de
--auth-user=testuser U --auth-password=testpass

Figura 1: Swaks toma el papel de un cliente SMTP y comprueba si el servidor de correo se est comportando correctamente.

ferido las direcciones de los destinatarios al servidor de correo y recibido la respuesta:


RCPT TO:<charly@kuehnast.com> 250 2.1.5 Ok QUIT

swaks --from=U charly@kuehnast.com U --to=charly@example.com U

Swaks y el servidor de correo negociarn entonces el uno con el otro para averiguar el nivel mayor de seguridad que ambos soportan.

Remedio para la Congestin


Cuando mando una docena o ms de correos de prueba en busca de mensajes de error, puede ser bastante molesto que terminen rebotando en mi buzn y me lo colapsen. Por ello, Swaks me permite terminar el dilogo SMTP en cualquier momento. En el ejemplo, he introducido -q RCPT, de modo que Swaks cierra el dilogo tras haber trans-

En este punto, los errores ms comunes (por ejemplo, HELO cadena, TLS y la autenticacin SMTP) ya han sido procesados. Las direcciones del remitente y del destinatario tambin han sido confirmadas con OK. Swaks puede hacer mucho ms de lo que he mencionado en esta breve introduccin, as que debera echarle un vistazo a la documentacin del manual. Por ejemplo, desde la ltima gran actualizacin en la primavera de 2012, la herramienta es capaz de manejar tambin IPv6.

RECURSOS
[1] Swaks: http://www.jetmore.org/ john/code/swaks/

WWW.LINUX-MAGAZINE.ES

Nmero 91

53

ADMINISTRACIN Inseguridades: Hackeando Hardware

No olvides el hardware

Hackeo Duro
Ahora que nuestras redes estn seguras y hemos convencido a nuestros usuarios de asegurar las contraseas y el software, es el momento de prestar atencin al hardware, para mantenerlo alejado de los ataques. POR KURT SEIFRIED
ste mes es hora de volver al mundo fsico, especficamente al hackeo de sistemas va hardware. En seguridad, los administradores de sistemas normalmente se centran en ataques locales; en los ataques remotos, dado que cualquier usuario de Internet te puede golpear; y en ataques a nivel de intrprete, porque no podemos confiar en todos los usuarios o confiar en que mantengan seguras sus contraseas. Raramente los administradores prestan atencin a los ataques fsicos, porque alguien con acceso fsico y tiempo puede sortear virtualmente todas las medidas de seguridad o simplemente modificar el sistema, de manera que por ejemplo despus del arranque, registre nuestras contraseas para descifrar el disco duro. Sin embargo, algunos ataques fsicos se pueden llevar a cabo en unos segundos y es posible para cualquiera que haya tenido una mnima capacidad de acceso al sistema. Por ejemplo es tan fcil como volver a hablar con alguien o tropezar con otro, aunque suene un poco a pelcula.

limitar el nmero de sistemas de archivos permitidos, podemos incluir en blacklist varios mdulos del ncleo. Para obtener una lista de los mdulos, sencillamente tenemos que listar el contenido de /lib/ modules/$version/kernel/fs y aadirlos a /etc/modprobe.conf o a /etc/modprobe.d/ blacklist.conf (o cualquiera que sea el archivo que use nuestra distribucin debera ser similar). Por supuesto, tenemos que mantener activados los sistemas de archivos que realmente usamos (por ejemplo, ext4).

FireWire y Thunderbolt
Estas interfaces son antiguas, pero buenas. El problema bsico es que FireWire y Thunderbolt estn diseados para ser extremadamente rpidos y flexibles (tardan slo un poco ms que la simple transferencia de datos). Thunderbolt, por ejemplo, se puede usar para enviar seal de vdeo a monitores de control y los dispositivos FireWire pueden hablar directamente a otros dispositivos FireWire. En teora podemos enchufar un disco duro FireWire externo en una cmara que permita FireWire y volcar los datos directamente sin necesidad de ordenador. Thunderbolt y FireWire proporcionan DMA (Acceso Directo a la Memoria Direct Memory Access) de los dispositivos, lo cual es bueno para la velocidad, pero no tanto para la seguridad, dado que podemos escribir virtualmente en cualquier ubicacin de memoria y tambin en cualquier dispositivo PCI que use asignacin de memoria. En otras palabras, un dispositivo Thunderbolt [1] o FireWire malicioso puede escribir directamente en la memoria, saltndose enteramente el sistema operativo. Un atacante podra, por

ejemplo, sobrescribir la memoria de espacio de usuario de aplicaciones o incluso sobrescribir la memoria del ncleo, por lo que es bastante trivial hacer lo que se quiera con el sistema de una manera prcticamente indetectable. La buena noticia es que la mayora de nosotros realmente no usamos FireWire y Thunderbolt, que estn an en paales, as que mi consejo es desactivar FireWire y Thunderbolt en la BIOS si podemos.

Montaje Automtico de Sistemas de Archivos


Un mtodo habitual de ataque en toda conexin perifrica estndar que permita dispositivos de almacenamiento (USB, eSATA, FireWire, Thunderbolt, etc.) es a travs del sistema de archivos. De manera predeterminada, la mayora de las versiones de Linux los montan de manera automtica en cualquier dispositivo que se conecta, lo cual es prctico. Enchufamos un disco USB, aparece en el escritorio y todo funciona. La otra cara de la moneda es que, con el montado automtico activado, un atacante puede usar cualquier sistema de archivos permitido (y hay muchos) para atacar el sistema, tal y como reflejan la cantidad de ataques relacionados con sistemas de archivos permitidos que han ocurrido en sistemas Linux. Para

54

Nmero 91

WWW.LINUX- MAGAZINE.ES

Inseguridades: Hackeando Hardware ADMINISTRACIN

Y tambin podemos considerar desactivar los puertos fsicamente. Sin embargo, esto podra daar el sistema, as que no recomiendo hacerlo salvo que no haya otra eleccin. Hay que tener en cuenta que algunos programas comerciales usan el ataque DMA de FireWire para recuperar contraseas de ordenadores con FireWire (por ejemplo, en Mac OS X, se pueden engullir todas las contraseas del almacenamiento de claves en memoria), as que estos ataques se usan alguna que otra vez. En otras palabras, si hemos accedido y nuestras claves de cifrado, de autenticacin, etc., estn en uso (por ejemplo almacenadas en la memoria), somos vulnerables.

instalar el software almacenado en su interior. Adems, estos dispositivos se pueden programar para esperar o enviar el ataque a intervalos, as que si conectamos un dispositivo en un equipo que est apagado o suspendido, seguir trabajando una vez que el usuario vuelva (y casi nadie comprueba la parte de atrs de su ordenador para ver si algo se ha enchufado mientras estaban tomando un caf).

Bluetooth
No nos olvidemos del Bluetooth. No slo nos permite conectar perifricos externos, si no que lo hace sin cables. Los diseadores no fueron totalmente ignorantes de los aspectos de seguridad. Los dispositivos Bluetooth ahora utilizan un razonable protocolo de cifrado seguro. Sin embargo, los antiguos no, as que si usamos dispositivos antiguos, especialmente teclados, no es demasiado difcil para un atacante modificar el dispositivo Bluetooth para enviar el mismo nmero serie y otra informacin como hace nuestro dispositivo. La manera ms sencilla de enfrentarnos a este tema es desactivar el Bluetooth, o si tenemos que usarlo, asegurarnos de que est configurado de manera que requiere la autorizacin para conectar un dispositivo y que todos los dispositivos son suficientemente modernos como para permitir conexiones seguras.

Asegurar el USB
Al revs que con FireWire y Thunderbolt, no podemos sobrevivir sin USB (si queremos usar un teclado y un ratn). Qu podemos hacer? Todos los dispositivos USB tienen una ID del fabricante y del producto que podemos utilizar para identificarlos. Por qu no hacemos una lista blanca con todos los dispositivos USB que tenemos con la ID de fabricante y producto de manera que cuando un atacante enchufe el suyo no funcione? El problema es que podemos fcilmente enmascarar ambos ID. Desgraciadamente el dispositivo simplemente enva un nmero arbitrario cuando se le pide, as que no proporciona una seguridad real. Por una vez, tenemos buenas noticias: podemos configurar nuestro sistema fcilmente para que desactive cualquier dispositivo USB nuevo que haya sido enchufado y est trabajando, simplemente editando la configuracin authorized_ default para cada controlador USB:
for i in /sys/bus/U usb/devices/usb*/U authorized_default; U do echo 0 > U $i; done

Hackeo USB
Si tenemos un ordenador para uso general, seguro que tiene un puerto USB (sea de escritorio, porttil, netbook, tableta, telfono, cmara o como lo llamemos). El estado de DMA con respecto a USB en Linux es un poco menos complicado. Los controladores de USB pueden permitir DMA, pero no tiene por qu. Sin embargo, USB 3.0 DMA ser ms comn porque mejora significativamente el rendimiento. Otra interesante y nica autopista para los ataques a travs de USB es el HID (Dispositivo de Interfaz Humana Human Interface Device, cosas tales como, ratones, teclados y controladores de juego). Lo verdaderamente mgico de estos dispositivos es que pueden enviar seales de control al sistema. El ms interesante es el teclado, el cual nos permite por ejemplo ejecutar aplicaciones. Para poner las cosas especialmente interesantes, resulta que podemos meter un concentrador USB y el dispositivo HID en un espacio muy pequeo [2][5], como un ratn de ordenador o una memoria grande. Podemos enviar el dispositivo a alguien como un premio o colocarlo cerca de la mesa de nuestro blanco y esperar a que lo conecte. Una vez conectado, el dispositivo puede por ejemplo enviar pulsaciones de teclas y rdenes del ratn a la mquina, abrir un smbolo del sistema y establecer una terminal inversa para que podamos obtener acceso remoto al sistema. O si los combinamos con un dispositivo de almacenamiento, podemos abrir el dispositivo e

Conclusin
La seguridad fsica sigue siendo importante, especialmente cuando un ataque fsico se puede ejecutar en segundos (enchufar el dispositivo USB, esperar a que sea reconocido y realizar su trabajo y despus desenchufarlo). Dado que no queremos andar por ah con un enorme tubo de pegamento desactivando fsicamente todos los puertos en nuestra mquinas, nos tenemos que asegurar de que nuestros sistemas estn configurados de forma segura, tanto a nivel de la BIOS como a nivel del sistema operativo.

RECURSOS
[1] Hackear Macs a travs de la interfaz Thunderbolt: http://www.breaknenter.org/2012/02/ adventures-with-daisy-in-thunderbol t-dma-land-hacking-macs-throughthe-thunderbolt-interface/ [2] Dont stick that in there HID: https://www.securepla.net/dontstick-that-in-there-hid-human-interface-device/ [3] Hackeando el HID: desde Cero a Pwned en 10 segundos: http://hak5.org/episodes/hak5-1006 [4] USB-Rubber-Ducky/Firmware: https://github.com/hak5darren/ USB-Rubber-Ducky/tree/master/ Firmware [5] Armando Teensy: http://initiate6.blogspot.ca/2011/09/ in-progress-this-post-will-be-update d.html

Otra buena noticia: en todos los sistemas Linux que he probado, parece que incluso cuando desactivamos los dispositivos USB nuevos para que no funcionen, si posteriormente enchufamos uno y reactivamos los dispositivos USB nuevos, el que habamos enchufado no funcionar. As que, incluso si un atacante enchufa un dispositivo y lo deja, esperando por ejemplo que reactivemos el USB de manera que podamos enchufar una memoria, deberamos estar seguros (pero, por favor, hay que probarlo antes de confiarnos!). Bsicamente, podemos crear un programa o script para ejecutar la orden, desactivar todos los dispositivos USB y slo activarlos rpidamente cuando necesitemos conectar un nuevo dispositivo.

WWW.LINUX- MAGAZINE.ES

Nmero 91

55

HARDWARE Arduino

Cuando una puerta se cierra, otra se abre

PROYECTO: CASA DOMTICA


pulsador. Ahora toca dar los ltimos retoques a nuestro hogar electrnico. POR LUIS MARTN
omo dira un famoso personaje de la Warner: Eso es todo amigos!. Gracias a los conocimientos adquiridos hasta aqu, podramos realizar ya una domotizacin casi total de nuestra casa, y a partir de ahora, sois vosotros los que debis elegir: qu queris medir o controlar en cada habitacin? Cunto dinero queris gastar? y lo ms importante, cunto tiempo vais a invertir? En funcin de las respuestas a estas preguntas, sabris qu tipo de sistema podis implementar.

Ya se han quedado atrs en nuestra aventura los ejemplos simples de encender un LED o leer el estado de un

Sira Anamwong, 123RF.com

Figura 1: Nio pequeo dando palmadas para llamar la atencin.

Como las grandes obras de teatro, en las que nunca se termina una funcin sin una escena final, en nuestro proyecto va a pasar lo mismo. En memoria a esos primeros artculos en los que encendamos un LED y nos plantebamos ideas tan descabelladas como la de encender la luz dando una palmada, vamos a plantearnos montar y programar dos ejemplos muy curiosos, que como guinda en un pastel, darn un toque original a nuestra casa domtica. Sinceramente, se trata de dos ejemplos de los ms sencillo, en comparacin a lo que hemos ido realizando, pero no significa que no sean interesantes. Muchas veces las cosas sencillas y curiosas son las que ms sorprenden. El simple hecho de encender la luz, sentado en el sof o al entrar en casa, slo dando dos palmadas es algo que a todo el mundo le hace sentir como un nio con un juguete nuevo. Como si furamos un nio que intenta llamar la atencin como el de la figura 1, intenta-

remos que, con dos simples palmadas, el Arduino se entere de que queremos que encienda la luz.

ltimos retoques
En estos ejemplos vamos a intentar repasar varios de los conceptos que hemos ido viendo a lo largo de esta serie de artculos. Para el primer ejemplo, disearemos un sistema que cambie de color en funcin de la temperatura. Una indicacin sencilla y muy visual de la temperatura en nuestro hogar.

Figura 2: Sensor de temperatura RTC genrico.

56

Nmero 91

WWW.LINUX- MAGAZINE.ES

Arduino HARDWARE

Figura 3: Mdulo con sensor de temperatura utilizado para el control cromtico.

Figura 4: Led RGB utilizado para cambiar de color segn la temperatura.

Figura 5: Mdulo con sensor de audio (micrfono y circuito de adaptacin integrado).

Para ello nos podramos servir del sensor de temperatura NTC, como el de la figura 2, que vena en el Arduino Starter Kit [1] que recomendamos adquirir para los primeros montajes. Una NTC es una resistencia de temperatura negativo, esto quiere decir que cuanto mayor sea su temperatura, menor ser su resistencia. Esta caracterstica es la que usamos para la medida de la temperatura por medio de un circuito de divisor resistivo, para as tener una tensin dependiente de la temperatura. Sin embargo, vamos a evitarnos todos estos problemas de circuitera y de operacin no lineal e utilizaremos la pequea y barata placa de la figura 3, que ya incorpora un sensor de

temperatura junto al circuito de adaptacin necesario [2]. Una vez que hemos medido la temperatura, lo que necesitaremos ser una luz de la que podamos controlar su estado, y no me refiero slo a su encendido o apagado, sino al color de la luz que emite. Para ello utilizaremos un diodo LED RGB, como el que muestra la figura 4. Se trata de 3 diodos en uno, que nos permite controlar los colores rojo, verde y azul, en funcin de 3 salidas/entradas digitales. Es sencillo y se puede ver como si controlramos los tres diodos de manera independiente, simplemente es que la luz la emiten en el mismo punto, pudiendo hacer combinaciones de colo-

res. Gracias a este componente tan simple podemos generar casi cualquier color. Podemos encontrar ms informacin sobre este tipo de diodos y otros muchos en una comparativa de diodos publicada en Cooking-Hacks [3]. El segundo ejemplo es el montaje ya comentado de encender las luces dando dos palmadas. Podramos utilizar un micrfono montndole el circuito de adaptacin de audio necesario, al igual que en el primer ejemplo. Pero utilizaremos otra placa ya ensamblada con un micrfono [4], que tiene todo el circuito integrado, como podis observar en la figura 5. Lo bueno de la electrnica es esto, que si necesitas algn tipo de sen-

Listado 1: Sensor de Temperatura con Respuesta Cromtica


01 // Variables estaticas 02 int sensorNTC = A0; // Declaramos la variable pin del sensor de temperatura 03 int luzRojo = 11; // Declaramos la variable pin para encender la luz (LEDrojo) 04 int luzVerde = 10; // Declaramos la variable pin para encender la luz (LEDverde) 05 int LuzAzul = 9; // Declaramos la variable pin para encender la luz (LEDazul) 06 07 // Variables dinamicas 08 int valorTemperatura = 0; // Variable para el valor de temperatura 09 10 void setup() { 11 // Inicializamos los pines de encendido de la luz como salida 12 pinMode(luzRojo,OUTPUT); 13 pinMode(luzVerde,OUTPUT); 14 pinMode(LuzAzul,OUTPUT); 15 } 16 17 void loop () { 18 // Medimos la temperatura y en funcion de su valor damos un determinado color 19 valorTemperatura = analogRead(sensorNTC); 20 if(valorTemperatura > 505){ // Bucle 1: hasta 18 C --> COLOR AZUL 21 digitalWrite(luzRojo,HIGH); 22 digitalWrite(luzVerde,HIGH); 23 digitalWrite(LuzAzul,LOW); 24 } else if((valorTemperatura <= 505) && (valorTemperatura > 462)){ // Bucle 2: desde 18 C hasta 22/23 C --> COLOR VERDE 25 digitalWrite(luzRojo,HIGH); 26 digitalWrite(luzVerde,LOW); 27 digitalWrite(LuzAzul,HIGH); 28 } else if((valorTemperatura <= 462 ) && (valorTemperatura > 400)){ // Bucle 2: desde 22/23 C hasta 27/28 C --> COLOR NARANJA 29 digitalWrite(luzRojo,LOW); 30 digitalWrite(luzVerde,LOW); 31 digitalWrite(LuzAzul,HIGH); 32 } else if(valorTemperatura <= 400){ // Bucle 4: ms de 27/28 C --> COLOR ROJO 33 digitalWrite(luzRojo,LOW); 34 digitalWrite(luzVerde,HIGH); 35 digitalWrite(LuzAzul,HIGH); 36 } 37 }

WWW.LINUX- MAGAZINE.ES

Nmero 91

57

HARDWARE Arduino

Figura 7: Esquema para la activacin de una lampara por medio de un rel.

Figura 6: Patilla del Led RGB.

sor o circuito, seguro que buscando un poco lo encuentras ya en venta. En nuestro caso, la luz que encenderemos ser un simple diodo, pero podemos controlar cualquier tipo de dispositivo.

Diseo del Hardware


Como hemos elegido el camino fcil, y pensando que son unos sencillos ejem-

plos para terminar con el proyecto de nuestra casa domtica, no vamos a tener mucho problema en cuanto a hardware o programacin. En el caso del sensor de temperatura, lo ms complicado ser la conexin del diodo LED, ya que es algo nuevo para nosotros. El sensor en s nos da una seal analgica en funcin de la temperatura, por lo que solamente necesita ser alimentado y conectado a una entrada analgica. Lo principal a tener en cuenta con respecto al LED RGB, es si es de nodo o

ctodo comn. Eso significa que los 3 leds comparten el lado positivo o el negativo. Esto nos servir para saber como encenderlos. El patillaje en nuestro caso es el de la figura 6. Los leds tienen el pin comn conectado a 5 voltios y controlaremos con entradas digitales puestas a 0 voltios su encendido. Como cuando trabajamos con un LED normal, necesitaremos utilizar resistencias para limitar la corriente de cada una de las patillas. Para ms informacin del montaje podemos consultar el siguiente enlace,

Listado 2: Sensor de Encendido Mediante Palmas


01 // Variables estticas 02 int sensorSonido = A0; // Declaramos la variable pin del microfono 03 int controlLuz = 13; // Declaramos la variable pin para encender la luz (LED) 04 05 // Variables dinmicas 06 int valorSonido = 0; // Variable para el valor de humedad 07 int estadoLuz = 0; // Variable para el estado de la luz 08 09 void setup() { 10 // Inicializamos el pin de encendido de la luz como salida 11 pinMode(controlLuz, OUTPUT); 12 } 13 14 void loop() { 15 // Leemos el valor analgico del sensor y lo almacenanos 16 valorSonido = analogRead(sensorSonido); 17 // Si detectamos un sonido importante (palmada) entramos en este bucle 18 if((valorSonido>800)||(valorSonido<200)){ 19 // Esperamos un poco y volvemos a medir 20 delay(300); 21 valorSonido = analogRead(sensorSonido); 22 // Comprobamos que cesa el primer sonido 23 while((valorSonido<800)&&(valorSonido>300)){ 24 // Comprobamos si hay un nuevo sonido (segunda palmada) 25 valorSonido = analogRead(sensorSonido); 26 // Si se detecta cambiamos el estado de la luz en funcion de su estado anterior 27 if((valorSonido>700)||(valorSonido<200)){ 28 if(estadoLuz==1){ 29 estadoLuz=0; 30 } 31 else if(estadoLuz==0){ 32 estadoLuz=1; 33 } 34 digitalWrite(controlLuz, estadoLuz); 35 delay(1000) ; 36 } 37 } 38 } 39 }

58

Nmero 91

WWW.LINUX- MAGAZINE.ES

HARDWARE Arduino

Figura 9: Montaje del ejemplo de control de luces por medio de palFigura 8: Montaje del sensor de temperatura para control cromtico.

madas.

del que se ha sacado parte de la documentacin [5]. Con el ejemplo de la activacin de la luz pasa algo parecido. El sensor de audio se conecta igual que el de temperatura, ya que se trata de una seal analgica dependiente del nivel de ruido. La luz a encender es un simple LED conectado al pin 13, pero recordando los conceptos que vimos en el artculo Centro de control, podemos usar un rel para activar una luz siguiendo el esquema de la figura 7. En las figuras 8 y 9 podemos ver los montajes de cada uno de los ejemplos.

En el listado 2 tenemos el cdigo del segundo ejemplo, que es algo ms complicado, ya que debemos detectar un sonido por encima de un umbral de ruido (en cada situacin puede ser distinto ya que depende del ruido ambiente), medir cuando cesa ese ruido, y de nuevo, detectar un nuevo ruido. Cuando detectemos las dos palmadas, se enciende la luz o se apaga, en funcin de su estado anterior. El montaje quedara como en la figura 11.

Y t qu quieres hacer ahora?


Podramos cerrar este proyecto y artculo con un Hasta luego, aunque prefiero dejarlo con un Hasta donde t quieras llegar. No me gustan demasiado los momentos reflexivos, pero ste es el momento de recordar todo lo que hemos aprendido y pensar si nos ha servido para alcanzar las

Programacin
Para terminar, una vez que tenemos los dos montajes listos, debemos cargarle el cdigo al Arduino. En el primer ejemplo, el cdigo del listado 1 nicamente necesita medir la temperatura y en funcin de ella, combinar los colores para indicarlo de manera visual. El rango de variacin se puede observar en la figura 10.

metas que planteamos en los inicios del proyecto. No significa que estos artculos acaben aqu, de hecho seguramente continen con un nuevo proyecto. Para ello necesito vuestra ayuda una vez ms. Seguramente tengis mil ideas sobre posibles aplicaciones o temticas con las que trabajar y ahora es el momento para que las intentis. nicamente tenis que enviar un tweet a @LuisMartinNuez junto a vuestras ideas. Para cualquier otra consulta o sugerencia, no dudis en escribirme a mi correo: luisantoniomartinnuez @gmail.com.

Figura 10: Dependencia del color del LED en funcin de la temperatura.

Figura 11: Ejemplo de control de luz funcionando.

RECURSOS
[1] Arduino Starter Kit: http://www.cooking-hacks.com/index.php/arduino-starter-kit.html [2] Placa sensor temperatura: http://www.cooking-hacks.com/indexa.php/shop/sensors/temperature/grove-temperature-sensor.html [3] Comparativa diodos LED: http://www.cooking-hacks.com/index.php/blog/comparative-the-light-emitting-diode-led [4] Placa sensor micrfono: http://www.cooking-hacks.com/index.php/shop/sensors/sound/breakout-board-for-electret-microphone.html [5] Lets Cook!: http://www.cooking-hacks.com/index.php/let-s-cook.html [6] Artculo Centro de control, de Luis Martn, Linux Magazine nmero 86, pg. 58.

60

Nmero 91

WWW.LINUX- MAGAZINE.ES

Proyectos Raspberry Pi HARDWARE

un punto de acceso inalmbrico y una unidad empotrada para controlar la temperatura. El primer proyecto es un ejemplo de como el sistema de Raspberry Pi sirve para sustituir un ordenador de sobremesa estndar. Los dos ltimos ejemplos muestran a Raspberry Pi como sistema empotrado, lo que requerir uns mnimos conocimientos de programacin, pero, tambin, nos da una idea de la versatilidad de este pequeo y poderoso mini-ordenador. Tal vez los tres ejemplos nos ayuden a imaginar otros proyectos DIY que se pueden crear con nuestro propio Raspberry Pi.

Evgeniya Uvarova, 123RF.com

La lista de la compra
En un principio, los diseadores haban previsto dos modelos A y B, que se diferencian principalmente en el nmero de puertos USB (uno o dos), la disponibilidad de un puerto Ethernet y, por supuesto, el precio (25/35 $). En este momento, slo est disponible el modelo B. Podis consultar la Tabla 1 para ver un resumen de los componentes del Raspberry Pi. Para poner en marcha el Raspberry Pi (o Raspi para abreviar), es necesario hacer una lista de los componentes bsicos. En Internet hay ms consejos sobre operaciones avanzadas [2] [3]. En la actualidad, slo dos distribuidores globales tienen la tarjeta en su catlogo [4] [5]. Lo habitual es que ahora slo haya que esperar un par de semanas, aunque en la primavera de 2012 no era extrao un plazo de entrega de unos meses. Adems de la propia placa, se necesitan los siguientes componentes: Una fuente de alimentacin USB de al menos 700 mA. Si deseas aadir hardware adicional a travs de USB, se debe planear por lo menos 1 amp. Una tarjeta SD (HC) con al menos 2 GB de capacidad, sin embargo, sera mejor

Explorando el Raspberry Pi a travs de proyectos reales

Pi
E

El ordenador Raspberry Pi, formado por una nica placa del tamao de una tarjeta de crdito, facilita la experimentacin en sistemas Linux

empotrados. Mostraremos algunos ejemplos prcticos de cmo utilizar el Raspberry Pi en un entorno cotidiano. POR WERNER HEIN
l ingeniero britnico Eben Upton y su equipo de hackers de hardware iniciaron el proyecto Raspberry Pi como un medio para poner tecnologa informtica al alcance de jvenes interesados en estos temas [1]. El objetivo era desarrollar y comercializar un ordenador de una sola placa del tamao de una tarjeta de crdito y compatible con el, a menudo escaso, presupuesto del grupo objetivo (vase el cuadro Historia). Si te ves a ti mismo recordando los primeros equipos caseros de los 80, puede que formes parte del pblico al que va dirigido. El objetivo explcito de los fundadores era volver a colonizar los stanos, garajes y aulas con el espritu de la generacin que creci con el Atari 400/800, ZX80/81 o VIC20/C64. Casi un ao despus de que apareciese Raspberry Pi, podemos echar la vista atrs para repasar lo que ha pasado entre la primera serie de aproximadamente 10.000 dispositivos y la situacin actual, en la que se acerca al milln de dispositivos adquiridos: qu hace que este proyecto sea tan exitoso? Qu capacidades ofrece a travs de su hardware? Qu es posible y qu no es (todava) posible? Este artculo explora el sistema Raspberry Pi a travs de tres proyectos reales: un sistema multimedia de reproduccin de vdeo.

Historia
En 2006, Eben Upton y su equipo desarrollaron los primeros conceptos para el Raspberry Pi basado en el ATmega de Atmel. La idea de conseguir que los jvenes se interesaran por el mini-ordenador ya formaba parte del programa. En 2009, los miembros establecieron oficialmente la Raspberry Pi Foundation. En agosto de 2011, sali de produccin la serie alfa, alrededor de 50 tarjetas. Sirvieron principalmente como plataforma para los desarrolladores, para la depuracin y para fines demostrativos. En diciembre de 2011, le siguieron la serie beta de 25 tarjetas, que ya se basaban en el diseo de produccin. Los desarrolladores eliminaron los defectos anteriores. En enero de 2012 se vendieron en una subasta en lnea 10 tarjetas de esta serie beta por un importe de 16.336 . El 29 de febrero de 2012, a las 7:00 am, CET, los servidores web de la fundacin y de las dos distribuidoras se bloquearon en pocos minutos por el aluvin de solicitudes. Muchos clientes esperaron durante horas para realizar una preorden.

WWW.LINUX- MAGAZINE.ES

Nmero 91

61

HARDWARE Proyectos Raspberry Pi

Existe una distribuComponente Tipo cin Linux basada SoC Broadcom BCM2835 (sistema en un chip) en Debian conocida CPU ARM1176JZF-S, 700 MHz como Raspbian que GPU Broadcom VideoCore IV (OpenGL ES 2.0, est diseada para OpenVG, 1080p30, H.264 codificado/decodificador perfil alto) Raspberry Pi para dar servicio como RAM 256 MByte SDRAM sistema operativo Puertos USB 2 x USB 2.0 de a bordo. La funEthernet 1 x 10/100 Mbit/s dacin Raspberry Pi SD/MMC 1 x slot recomienda la verAudio 1 x salida estereo analgica sin Raspbian Vdeo 1 x salida compuesta, 1 x salida HDMI Wheezy [7], que es la utilizada en este taller. Listado 1: Configurar el Reproductor de Vamos a comenVdeo zar por descargar $ sudo apt-get sshfs $ sudo adduser pi fuse el archivo de ima$ mkdir myVideos gen Raspbian $ sshfs username@host_name:/directory_name myVideos Wheezy, que es una imagen del sis4GB. Dependiendo de lo que pienses tema completo que consta de una partihacer, todava podra ser insuficiente. cin de arranque de 60 MB y un sistema Debido a que el sistema tambin se de archivos raz de alrededor de 2 GB. encuentra en la tarjeta SD, es aconsejaDescomprimimos el archivo y lo movemos ble elegir una tarjeta con una velocidad a una tarjeta SD con el siguiente comando: de lectura y escritura alta. Para el acceso inalmbrico sera prctico $ sudo dd bs = 1M U un adaptador WLAN en forma de stick if=2012-08-16-U USB. Pero en la prctica, un adaptador wheezy-raspbian.img U WLAN USB es a menudo un factor sigof=SD_card_device_U nificativo en el consumo de energa. Si filename ests considerando el uso de un adaptador USB, asegrate de que el controlaAhora, conectamos la tarjeta SD, el dor es compatible y elige un diseo delteclado, el ratn y el monitor al sistema gado que no bloquee el segundo puerto Raspberry Pi y lo iniciamos, conectando la USB. fuente de alimentacin USB. Aparece Teniendo en cuenta el bajo nmero de entonces el men de configuracin y si no puertos USB, un teclado y un ratn ests usando un teclado estndar ingls, lo inalmbricos son una inversin que mejor es cambiar primero las valores del merece la pena y que tambin ahorrara men configure-key-board y change_locale una carga innecesaria sobre los limitapara el teclado y el idioma que prefieras, dos recursos del adaptador de corriente ya que, de lo contrario, surgirn problemas USB. tan pronto como se solicite el inicio de Adems de estos elementos, tambin se sesin. El nombre de usuario por defecto necesitan diferentes cables en funcin es pi, la contrasea es raspberry. del uso previsto, tales como HDMI o Otros elementos tiles del men son Ethernet. En cuanto al cable HDMI, el change_timezone, para establecer la zona mejor es el ms corto. Tienes la opcin horaria correcta; ssh para permitir el de aumentar la salida del driver, pero acceso seguro a la terminal a travs de la tambin aumentar el consumo de enerred y expand_rootfs, para cambiar el ga. Si planeas escuchar msica o ver tamao del sistema de archivos raz de vdeos, tambin necesitars auriculares o 2GB por el tamao real de la tarjeta SD. altavoces. Por ltimo, debemos actualizar el sistema El tercer proyecto (un controlador de a la tpica manera de Debian: temperatura empotrado) utiliza una tarjeta de expansin que requiere algn hardware $ sudo apt-get update adicional [6]. $ sudo apt-get upgrade

Tabla 1: Datos Tcnicos de Raspberry Pi

Comenzando

Podemos iniciar la herramienta de configuracin en cualquier momento usando sudo raspi-config.

Proyecto 1: Reproduccin de vdeo


Al teclear startx aparecer el escritorio grfico LXDE, que est optimizado para los sistemas ligeros. Reproducir un vdeo de alta definicin es sin duda la prueba definitiva para el hardware. Los reproductores de vdeo habituales, sin embargo, no son de ayuda, porque la GPU de la tarjeta est optimizada para decodificar datos de audio y vdeo. En consecuencia, se necesita un reproductor que utilice la propia biblioteca de programas de Broadcom (que se encuentra en /opt/vc). En la actualidad, el nico que hace eso es el programa pre-instalado de lnea de comandos omxplayer [8]. Si es posible, basta con montar el directorio que contiene los archivos a travs de la red. NFS ofrece un acceso ms rpido a su coleccin de vdeo, pero SSHFS es menos complicado. Los paquetes apropiados, se instalan como se muestra en el Listado 1. A continuacin, iniciamos la reproduccin con la orden omxplayer . Tras una breve sacudida de la imagen y el sonido, el software reproduce el vdeo de prueba de alta definicin en formato 720p con una pista de audio Dolby Digital 5.1 , mezclado a dos canales, por supuesto sin sobresaltos. Y eso es todo sobre el espartano Omxplayer. El programa demuestra tener unas capacidades impresionantes para decodificar audio y vdeo, pero nada ms. Tambin hay dos inconvenientes ms: la biblioteca de vdeo mencionada anteriormente no es software libre y se deben comprar licencias para los formatos MPEG-2 y VC-1. Por otro lado, el consumo de energa, es sorprendentemente bajo: la carga media, mientras se renderizaba el vdeo HD, fue de slo 3,8 vatios, a pesar de la difcil tarea de transmitir a travs de la red. Los programas Omxplayer, SSH y SSHFS representan la mayor carga para la CPU y la memoria, mientras que el reproductor por si solo acapara el mayor consumo. Sin embargo, si deseamos reproducir vdeo HD con 1080i o 1080p, es importante conectar la unidad de red a travs de NFS.

Los sistemas empotrados


El segundo y tercer proyecto emplean Raspberry Pi como un sistema empotrado conectado a una red local, sin teclado,

62

Nmero 91

WWW.LINUX- MAGAZINE.ES

Proyectos Raspberry Pi HARDWARE

Habilitacin de la interfaz serie


Para equipar al Raspberry Pi con una interfaz serie, es necesario primero realizar unos cuantos retoques. Las seales TXD y RXD del UART del SoC se envan a los pines 8 y 10 de la P1 del conector de dos filas entre la salida de TV y la ranura para tarjeta SD (Figura 1). Sin embargo, las seales se encuentran todava con un nivel de E/S de la SoC a 3,3 voltios. Con un cambiador de nivel, se puede modificar al estndar serie RS232. Para ello, podemos utilizar, por ejemplo, el IC MAX3232CP. Como programa de terminal se puede utilizar Minicom en el PC. Con el comando minicom-s, podemos realizar los mnimos cambios necesarios en la configuracin. Por ejemplo, el puerto serie puede ser representado por cualquiera de los archivos de dispositivo /dev/ttySnumber o /dev/tty-USBnumber. La velocidad de datos (115200 bps) y el formato de datos (8N1) estn predefinidos. Asegrate de que el software no use el control de flujo de hardware ni control de flujo de software. El comando minicom-o impide que el programa de ejecucin presente las secuencias de inicializacin en el arranque y se conecta directamente a la consola.

continuacin, modificamos el archivo de configuracin /etc/wpa_supplicant/wpa_supplicant.conf, como se muestra en el Listado 2, y /etc/network/interfaces, como se muestra en el Listado 3. Finalmente, iniciamos la conexin con sudo ifup wlan0.

Proyecto 2: Punto de acceso


Raspberry Pi tambin puede servir como un punto de acceso por si mismo (figura 2). En ese caso, simplemente enviamos todo lo que reciba el stick WLAN directamente al puerto LAN, como una especie de puente. Es por eso que esta configuracin se denomina modo puente. De esta manera, podemos aumentar el alcance de una red inalmbrica existente. La configuracin se realiza en dos pasos. En el primer paso, se configura el acceso directo WLAN con el demonio hostapd. Sin embargo, hay que tener en cuenta que hostapd no es totalmente compatible con todos los sticks WLAN. Habr que consultar los recursos en lnea [9] para obtener una lista del hardware compatible. A continuacin, en el segundo paso, debemos configurar el reenvo de paquetes entre las dos interfaces. Para instalar los paquetes, es necesario teclear:
$ sudo apt-get installU hostapd bridge-utils

ratn o monitor, pero con acceso a travs de LAN/WLAN. En tales sistemas, se pueden leer los mensajes de inicio a travs de una terminal conectada al puerto serie. Si se produce un error en la configuracin de red, no se podr acceder al sistema a travs de SSH, as que conectarse directamente a travs de un monitor y un teclado es la nica manera de iniciar sesin en el sistema y corregir el error. Por tanto, haramos bien en activar la interfaz serie (vase el cuadro titulado Habilitacin de la interfaz serie ). El acceso a travs de la red con SSH debe ser siempre la primera eleccin, ya que el acceso a travs de la interfaz serie slo se debe utilizar como una puerta trasera para emergencias. El siguiente paso en la construccin del sistema empotrado es la creacin de una conexin de red. En este ejemplo, voy a conectar a travs de WLAN. La instalacin Figura 1: Entre la salida de TV y la ranura predeterminada de Raspbian ya contiene para la tarjeta SD, se encuentra el conector los paquetes de firmware de los stick por el que la placa enva las seales TXD y WLAN ms populares, as como el proRXD por una interfaz serie. grama cliente wpa_supplicant. Para ver si el stick WLAN est activo, conectamos el hardware y buscamos la correspondiente reaccin del kernel en el syslog. Ahora lo nico que queda por hacer es configurar wpa_supplicant para punto de acceso. En una red con un servidor DHCP en el router, encontraremos los datos esenciales en el informe proFigura 2: El Raspberry Pi funcionando como punto de acceso, con porcionado por los escaneos con iwlist. A un consumo de tan slo 3,5 vatios.

Configuramos el punto de acceso WLAN en tres pasos: primero, insertamos la siguiente lnea en /etc/default/hostap:
DAEMON_CONF=U /etc/hostapd/hostapd.conf

A continuacin, aadimos el contenido del listado 4 en el archivo /etc/hostapd/hos-

Listado 2: Modificar el archivo de Configuracin


ctrl_interface=/var/run/wpa_supplicant eapol_version=1 ap_scan=1 network={ ssid=(E)SSID scan_ssid=1 proto=WPA (or RSN for WPA2) key_mgmt=WPA-PSK pairwise=TKIP (or CCMP) group=TKIP (or CCMP) psk=key }

WWW.LINUX- MAGAZINE.ES

Nmero 91

63

HARDWARE Proyectos Raspberry Pi

fue de entre 3,5 y 4 vatios.

Listado 5: Interfaces de red


auto wlan0 iface wlan0 inet static address 192.168.128.1 netmask 255.255.255.0 broadcast 192.168.128.255

Proyecto 3: Controlador de temperatura


Adems de servir como un punto de acceso flexible, Raspberry Pi tambin es excelente para el control de procesos sencillos. En el siguiente ejemplo se toman mediciones cclicas de la temperatura ambiente y, en Figura 3: El Raspberry Pi con una tarjeta de expansin como con- funcin del valor, se trol de temperatura. La luz verde de la tarjeta de expansin con- seala el resultado firma que la temperatura est por debajo de 22 grados centgra- visualmente con dos dos. El IC LM75 sobresale de la placa del sensor de cuatro cables. LED. A temperaturas superiores de 25 graEl chip de 16-pines es el transceptor serie RS232 MAX-3232CPE. dos centgrados, el contapd.conf, si es necesario, modificndolo trolador enciende el LED rojo, a menos de para que se ajuste al entorno local. Un 22 grados centgrados, se enciende el LED ejemplo de configuracin para el archivo verde. Ambas luces se encienden si el /etc/network/interfaces se encuentra en el valor est entre las dos (Figura 3). Por Listado 5. El Listado 6 muestra cmo inisupuesto, este proyecto solamente preciar el punto de acceso y el puente de red. tende ser un experimento como prueba de El consumo de energa operando la LAN concepto. En una verdadera aplicacin del es menor. Dependiendo de la distancia mundo real, el controlador podra realizar entre los puntos de acceso WLAN y el alguna otra accin ms, como encender la volumen de datos transferido, el consumo calefaccin o cerrar las cortinas, en vez de de energa para un cliente WLAN o punto encender solamente un LED. de acceso flucta entre 3,3 y 3,8 vatios, La unidad de control de temperatura mientras que en la operacin LAN, el conrequiere algo de hardware adicional, que sumo fue de alrededor de 2,9 vatios. Si ocupa una tarjeta de expansin aparte. ambas interfaces estaban activas, el valor Necesitaremos los siguientes componentes: el IC LM75 como sensor de temperaListado 3: Modificar /etc/network/ tura y el IC MAXinterfaces 3232CPE, adems de auto wlan0 iface wlan0 inet dhcp cuatro condensadowpa-conf /etc/wpa_supplicant/wpa_supplicant.conf res electrolticos de 0.47mF, como un transmisor-receptor Listado 4: Aadir a hostapd.conf para la interfaz serie ctrl_interface=/var/run/hostapd (UART), junto con ctrl_interface_group=0 driver=nl80211 # according to driver support un conector sub-D macaddr_acl=0 de nueve pines o un auth_algs=3 zcalo para montaje ignore_broadcast_ssid=0 en PCB y un cable de wpa=2 # for WPA2 with PSK wpa_key_mgmt=WPA-PSK interfaz. Adems, se rsn_preauth=1 necesitan dos LEDs, rsn_preauth_interfaces=wlan0 rojo y verde, cada rsn_pairwise=CCMP uno con una resiswpa_passphrase=password interface=wlan0 tencia en serie de hw_mode=g 22 y un transistor channel=11 # a free or weak channel NPN (por ejemplo, ssid=(E)SSID el BC237) como con-

Listado 6: Iniciar el Punto de Acceso


$ sudo service hostapd start $ sudo brctl addbr myBridge $ sudo brctl addif myBridge eth0 $ sudo brctl addif myBridge wlan0 $ sudo ifconfig myBridge up

trolador, as como dos resistencias en pullup de 10k para el bus I2C. Otros materiales, como por ejemplo una placa, regleta de alimentacin, cable de cinta plana y los condensadores de desacoplamiento, son elementos bsicos. El popular mdulo LM75 sirve como sensor de temperatura y est conectado al bus I2C. La mquina controla los dos LED a travs de dos pines GPIO y una etapa de transistor. El cableado es simple y puede obtener una plantilla de referencia en la Web. En realidad, el SOC tiene dos interfaces master en el bus I2C, cuya salida se encuentra tambin en el syslog, pero slo uno de los dos est disponible en el conector de doble hilera (P1-03 y P1-05), el nico con el bus-ID 0. Puede habilitar el bus I2C mediante la instalacin de los dos controladores i2c-bcm2708 y i2c-dev. Para ello, eliminamos el controlador i2c-bcm2708 de la lista de controladores que no se deben cargar en /etc/modprobe.d/raspi-blacklist.conf. Especificamos el controlador i2c-dev, que crea la interfaz de dispositivo en el directorio /dev/etc/modules. El bus se activa una vez que el sistema se ha reiniciado. Para activar el bus sin necesidad de reiniciar, ejecutamos la orden modprobe i2c-bcm2708 I2C-dev. Para poder realizar transacciones en el bus I2C como un usuario normal, primero tendremos que instalar las herramientas correspondientes y establecer permisos de grupo:
$ sudo apt-get install i2c-tools $ sudo addgroup pi i2c

Las direcciones en las que se encuentran los mdulos estn indicadas por los valores encontrados en la salida devuelta por

64

Nmero 91

WWW.LINUX- MAGAZINE.ES

Proyectos Raspberry Pi HARDWARE

Entonces, en concordancia, $ sudo apt-get install el programa git python3 python-pip python-virtualenv enciende o $ git clone apaga cada https://github.com/quick2wire/quick2wire-gpio-admin.git $ git clone uno de los dos https://github.com/quick2wire/quick2wire-python-api.git LED. $ cd quick2wire-gpio-admin Las denomi$ make naciones para $ sudo make install $ sudo adduser pi gpio los diferentes $ virtualenv TEMPCONTROL pines GPIO $ source TEMPCONTROL/bin/activate son algo confu$ cd quick2wire-python-api sas. Los LED $ sudo python3 setup.py install rojo y verde son GPIO23/GPIO24, de acuerdo con el conector, pero tambin estn conectados a i2cdetect -y 0 P1-16/P1-18. La primera designacin corresponde a la documentacin de Dependiendo de cmo hayamos conecBCM2835 y los valores del ncleo. Sin tado los tres pines de direccionamiento del embargo, las bibliotecas de Python siguen LM75, la salida contendr exactamente un la segunda nomenclatura. Tendremos que valor en el rango hexadecimal de 0x48 a proporcionar la secuencia de comandos 0x4f. Despus leemos la palabra de 2 bytes con los permisos necesarios para su ejecucon la temperatura del LM75 en el registro cin. Despus del arranque, la salida dar direccionando 0 con el comando: continuamente por consola los valores $ I2cget -y 0 I2C bus_address U medidos con cada actualizacin de los register_address w LEDs.

Listado 7: Paquetes y Libreras Python

mite conectar los perifricos necesarios y el conector casi suplica que juntes caractersticas adicionales para adaptarse a tus propias necesidades. Una distribucin especializada de Linux ayudar a los principiantes a que sus primeros pasos sean ms fciles. Los desarrolladores han logrado su objetivo original de hacer tangible la tecnologa informtica para las personas interesadas y en especial, para los jvenes.

RECURSOS
[1] Raspberry Pi: http://www.raspberrypi.org/ [2] Gua de compras de Hardware: http://elinux.org/RPi_Hardware_ Basic_Setup#Typical_Hardware_You _Will_Need [3] Ms ayuda eligiendo hardware: http://elinux.org/ RPi_VerifiedPeripherals [4] Farnell element14 (Europa)/Newark element14 (Norteamrica): http://uk.farnell.com/ http://www.newark.com/ [5] RS Components (R.U.)/Allied Electronics (Norteamrica): http://uk.rs-online.com/ http://www. alliedelec.com/ [6] Para respuestas a preguntas, visita: http://elinux.org/RaspberryPiBoard [7] Raspbian Wheezy: http://www.raspbian.org/ [8] Reproductor de audio/video Omxplayer: https://github.com/huceke/ omxplayer [9] Hostapd: http://hostap.epitest.fi/hostapd [10] API Python Quick2Wire: https://github.com/quick2wire/ quick2wire-python-api [11] GPIO Admin: https://github.com/quick2wire/ quick2wire-gpio-admin

La hoja de datos del mdulo ser de gran ayuda para convertir el crptico valor devuelto (por ejemplo: 0x8015) a la temperatura correspondiente. Python es un entorno de software adecuado para el controlador, ya que existen bibliotecas de clases para la Raspberry Pi para acceder al bus I2C y los pines GPIO. Este ejemplo utiliza dos bibliotecas [10] [11]. El Listado 7 muestra la instalacin de los paquetes y bibliotecas. El programa en s es muy simple (Listado 8): se lee el valor del sensor (lnea 15) en un ciclo de cinco segundos y convierte la lectura del sensor en el valor de la temperatura (lnea 16).

Conclusiones
Evidentemente Raspberry Pi no es un equipo de sobremesa. Si utilizar la terminal te parece demasiado extrao y enigmtico, debes comenzar con el escritorio para pasar gradualmente a la lnea de comandos. Desde su concepcin, el Raspi fue concebido como un PC de bajo consumo para aplicaciones multimedia y est claramente destinado a ser utilizado como un sistema empotrado. El hardware es ideal para su uso como servidor u ordenador de control de procesos, o para el control de las tareas en proyectos que no exijan demasiada potencia. La configuracin per-

Listado 8: Programa Controlador


01 01 #!/usr/bin/env python3 02 import quick2wire.i2c as i2c 03 import time 04 from quick2wire.gpio import Pin, exported 05 06 busaddr = 0x48 07 regaddr = 0x00 08 redLED = Pin(16, Pin.Out) 09 greenLED = Pin(18, Pin.Out) 10 11 with exported(Pin(16, Pin.Out)) as redLED, \ 12 exported(Pin(18, Pin.Out)) as greenLED, \ 13 i2c.I2CMaster() as bus: 14 while True: 15 temp_hib, temp_lob = bus.transaction( 16 i2c.writing_bytes(busaddr, regaddr), 17 i2c.reading(busaddress, 2))[0] 18 temp = (temp_hib << 1 | temp_lob >> 7) / 2. 19 if temp > 25: 20 redLED.value = 1 21 greenLED.value = 0 22 elif temp < 22: 23 redLED.value = 0 24 greenLED.value = 1 25 else: 26 redLED.value = 1 27 greenLED.value = 1 28 print (%02.01f % temp) 29 redLED.value = 0 30 greenLED.value = 0 31 time.sleep(5)

WWW.LINUX- MAGAZINE.ES

Nmero 91

65

LINUX USER Byobu

Byobu, un administrador de sesiones para la lnea de comandos

Instalador de Ventanas
El administrador de sesiones Byobu extiende la shell, aadindole un abanico de funcionalidades tiles, tales como la divisin de pantalla, ejecucin de programas en el fondo, o la organizacin de programas en pestaas. Los administradores que han de usar SHH a menudo, encontrarn Byobu especialmente til. POR FLORIAN EFFENBERGER

Florian Effenberger ha sido un evangelista del cdigo abierto y libre durante muchos aos. Est en el Board of Directors de la Document Foundation. Previamente trabaj en el proyecto OpenOffice.org durante siete aos y ms recientemente como Marketing Proyect Lead. Tambin colabora frecuentemente con varias revistas profesionales.

i buscamos en Wikipedia Byobu, nos encontraremos con un artculo sobre biombos japoneses, sin embargo, la herramienta Linux del mismo nombre [1] no es decorativa, pero en trminos de versatilidad y conveniencia, es similar a su homloga del Lejano Oriente. Diseado para suplementar a Screen, el administrador de ventanas a pantalla completa de Linux Byobu, ya se encuentra incluido en la mayora de las distribuciones. En un sistema ejecutando Linux

Mint 12, por ejemplo, para instalar el paquete slo tenemos que hacer:
sudo apt-get install byobu

EL AUTOR

Dependiendo de la distribucin, Byobu se inicia automticamente o bien mediante peticin. Esto ocurre por ejemplo en el caso de Linux Mint. Ejecutamos Byobu directamente en Bash escribiendo byobu. Si nos gusta el nuevo entorno y queremos que se inicie automticamente al iniciar sesin,

66

Nmero 91

WWW.LINUX- MAGAZINE.ES

Byobu LINUX USER

podemos editar la entrada correspondiente en byobu-config o en el men de configuracin pulsando F9 para modificar el fichero .profile en nuestro directorio de inicio. Si Byobu nos llegara a impresionar tanto como para hacerlo el estndar para todos los usuarios, en sistemas basados en Debian podemos hacerlo editando la configuracin con:
sudo dpkg-reconfigure byobu

Si algunos usuarios no estn contentos con el programa, entonces podemos simplemente deshabilitarlo individualmente creando un fichero vaco con:
touch ~/.byobu/U disable-autolaunch

Figura 1: De manera predeterminada, Byobu muestra varios mensajes de estado. Aqu vemos una sesin SSH a un Mac.

o usar el men de configuracin Figura 2: Dependiendo del sistema y de sus estados, Byobu slo muestra campos adicionales. mencionado anteriormente (byobu-config o F9). De manera alternafinal es un recordatorio del men de conexin WLAN (54Mbps, 91%, Figura tiva, las herramientas byobu-enable y configuracin, el cual podemos abrir 1) tambin est. Finalmente, Byobu nos byobu-disable habilitan y deshabilitan pulsando F9 aunque trataremos ms da ms detalles sobre la carga en el byobu. acerca de esto un poco ms adelante. momento actual (0,24, Figura 1), En la segunda lnea Byobu muestra la nmero de ncleos de la CPU y su veloUna Ventana con Vistas distribucin Linux actual a la derecha cidad actual (16x1,6GHz, Figura 2) y Indiferentemente de cmo arranquede un logo estilizado que la representa. detalles de la RAM disponible y su uso mos Byobu, el programa muestra dos A pesar de que podemos ver la versin (2,0GB, 18%, Figura 1). La segunda lneas en la parte inferior de la pantalla exacta de nuestro software en Ubuntu lnea de estado acaba con la fecha y en las que se resume la informacin del (11.04 en la Figura 2), esta informacin hora actual. Esta informacin se actualisistema ms importante (Figura 1). En falta en Linux Mint. Y por ello tambin zar automticamente, pero si deseala primera lnea y a la izquierda, Byobu se muestra siempre que iniciamos mos refrescar la herramienta manuallista las sesiones individuales, similar a sesin. mente, pulsamos F8. las pestaas en un navegador. En el La informacin de la transferencia de Adaptable arranque inicia una nica instancia con los datos actuales es ms interesante el nombre del shell actual. Pulsando F2 (^552kbps v496kbps, Figura 2). EvidenLos elementos mencionados aqu no se abre una nueva ventana y podemos temente, esto slo aparece si se est son estticos, podemos personalizarlos navegar a la izquierda o derecha a tratransfiriendo un gran volumen de datos. fcilmente en el men de configuracin vs de las entradas disponibles pulLo mismo se aplica a la informacin citado previamente (Figura 3), al cual sando F3 y F4. Las entradas estn necesaria para reiniciar (con (R)) y las accedemos pulsando F9 o bien ininumeradas en orden ascendente y pueactualizaciones de paquetes den ser renombradas para mantener las disponibles (11!). El nmero cosas ordenadas pulsando F8. En la de usuarios actualmente Figura 1, los nombres shell, htop, iotop conectados (1 #, Figura 1), y lynx son los de los programas activos el tiempo de conexin del en cada pestaa. Si utilizamos muchas sistema (113d22h, Figura 2) conexiones SSH a servidores remotos, y el estado de la batera disprobablemente desearemos introducir ponible (| = | significa caraqu los nombres de los servidores. gada. Si no es el caso, se En la parte derecha podemos ver el muestra el porcentaje de nombre de usuarios actuales (floeff), el carga de la batera, ver nombre del sistema actual (floeffbook) Figura 1). La informacin de Figura 3: La apariencia y el comportamiento de Byobu son y su direccin IP (192.168.0.11). El la velocidad y calidad de la fcilmente personalizables.

WWW.LINUX- MAGAZINE.ES

Nmero 91

67

LINUX USER Byobu

ciando el programa separado byobu-config. Adems del esquema de color para la lnea de estado, definimos su contenido (vase la Figura 4). Por ejemplo, si sabemos qu distribucin usamos y siempre tenemos un reloj a la vista, podemos eliminar esos detalles, ahorrar un poco de espacio y usarlo, por ejemplo, para mostrar la temperatura de la CPU y la velocidad del disco duro. A pesar de que no podemos cambiar la posicin exacta de los elementos individuales, Byobu se cuida de hacer el mejor uso del espacio disponible.

Adems de mostrar la informacin de estado, una funcionalidad muy til en Byobu es la posibilidad de ejecutar programas en el fondo. Por ejemplo, si deseamos iniciar una actualizacin completa de sistema en la oficina va SSH, pero la actualizacin no ha acabado al final del da, cerrando el terminal terminara inevitablemente el proceso de actualizacin y podra dejar el A Tiempo Parcial Figura 4: Podemos seleccionar cules de las sistema en un estado inconsistente. numerosas notificaciones de estado presenSi necesitamos ms informacin de un Otro ejemplo sera intentar actualizar tan informacin sobre el sistema. vistazo, Byobu tambin es la herradesde una mala conexin a Internet (por ejemplo, con una conexin desde el mvil). Si alguna vez has perdido la conexin durante una actualizacin, sabrs exactamente de lo que estoy hablando. Con Byobu, esto no es un problema, porque la sesin contina ejecutndose (Detached Mode) y podemos conectarnos a ella en cualquier momento. La mejor manera de mover Byobu al fondo es pulsando F6, pero cerrando la ventana tambin funciona. Aunque, tericamente, esto es igualmente posible con Screen, Byobu tiene la inestimable ventaja de automticaFigura 5: Gracias a la funcionalidad de divisin de la pantalla, podemos tener todo a la vista cuando ejecutamos iniciarse mente con cada sesin, mltiples programas.

Si queremos eliminar la informacin del estado en la segunda fila (aunque tambin es personalizable), simplemente deshabilitamos la lnea con byobu-quiet. Para mostrar la informacin de nuevo, escribimos byobu-quiet --undo. Si toda esa informacin de Byobu nos pone de los nervios, la desactivamos con byobu-silent o la reactivamos con byobu-silent -undo. En algunos sistemas, Mac OS X, entre otros, los atajos de teclado y teclas de funcin no mapean perfectamente porque el sistema operativo llama a su propia funcin Expos cuando pulsamos F8. El men de configuracin (F9) nos permite usar las secuencias de escape, las cuales tambin podemos abrir pulsando Ctrl+A. La posibilidad de crear nuevas sesiones es tambin til. Si cargamos mutt para el procesamiento de correo y htop para mostrar la carga del sistema en cada registro, simplemente los aadimos en el men de configuracin. De ahora en adelante, Byobu los abre automticamente al inicio, evitndonos la molestia de crear estas sesiones cada vez.

mienta perfecta porque, aparte de alinear las ventanas en pestaas una al lado de la otra, tambin ofrece un modo Pantalla Partida, dividindolas tanto horizontal como verticalmente. Esta funcin es la solucin ideal para ver iotop y htop uno al lado del otro o para abrir dos ventanas de editor de textos en paralelo. Para partir la pantalla, abrimos dos sesiones, para a continuacin pulsar Mays + F2 y verlas cara a cara horizontalmente o pulsamos Ctrl + F2 para disponerlas verticalmente (Figura 5). Para cambiar entre ventanas divididas, pulsamos Shift + F4 y Shift + F3. Para volver a situar el contenido de cada una en su propia pestaa, pulsamos Shift + F5.

Escaparate

68

Nmero 91

WWW.LINUX- MAGAZINE.ES

mientras que podemos olvidarnos de iniciar Screen precisamente cuando lo necesitamos. Incluso si la conexin se ha perdido durante un rato, no debe preocuparnos no recibir los mensajes importantes: Byobu posee un historial integrado. Pulsando F7 en cualquier momento se le dice a la herramienta que congele el contenido de la pantalla actual (sin salir del programa actual). A continuacin podemos desplazarnos por la pantalla con las teclas de flecha o revisar el historial pgina a pgina pulsando las teclas Re Pg y Av Pg. Para evitar perdernos en un historial extenso, podemos usar la funcin de bsqueda integrada. Para buscar hacia adelante desde la posicin del cursor actual, pulsamos /. Para buscar hacia atrs, ?. Introduciendo N, podemos navegar entre las coinciendencias. Despus de desplazarnos arriba y abajo y de examinar el historial, podemos volver a la sesin actual pulsando Esc.

Espejito, Espejito
Byobu tambin es til si trabajamos en mltiples dispositivos al mismo tiempo, porque la sesin se encuentra disponible para todas las sesiones de usuario. Por ejemplo, podemos acceder a la ventana del editor de nuestro equipo de sobremesa desde nuestro porttil abriendo Byobu e iniciando sesin en el porttil. La pantalla est sincronizada en ambos sistemas y la entrada del teclado tambin es posible desde ambos. Esto posibilita la colaboracin simultnea de equipos de trabajo en una sesin, ofreciendo a los principiantes una herramienta de enseanza ideal. Si todos nuestros usuarios se registran con la misma cuenta de usuario, pueden seguir los pasos en directo para comprender mejor lo que est pasando.

Conclusiones
Byobu es una aplicacin muy prctica para quienes trabajen habitualmente desde la consola. Adems de las funcionalidades mencionadas aqu, ofrece a los usuarios avanzados ms posibilidades, tales como la personalizacin de indicadores de estado mediante un fichero de configuracin, la seleccin de diferentes back ends para programas, copiado de contenido del historial al portapapeles y la programacin de nuestros propios indicadores de estado. La herramienta tambin soporta listas de ventanas pre-escogidas a las que se puede acceder directamente. Si deseas ahondar ms profundamente en el tema, recomendamos consultar la pgina man [2] y la gua para Screen [3].

RECURSOS
[1] Byobu: https://launchpad.net/byobu [2] Pgina man de Byobu: http://manpages.ubuntu.com/manpages/precise/en/ man1/byobu.1.html [3] Pgina man de screen: http://manpages.ubuntu.com/manpages/precise/en/ man1/screen.1.html

LINUX USER Workspace: AjaXplorer

dor, podemos considerar desplegar el gestor de ficheros AjaXplorer, basado en la web. Esta herramienta nos permite trabajar con ficheros desde cualquier navegador web e incluye una genuina coleccin de caractersticas muy tiles. AjaXplorer puede ser instalado en cualquier mquina ejecutndose el servidor web Apache y PHP 5.1. El proceso de instalacin consiste en varios pasos relativamente sencillos.

Desplegar AjaXplorer
Para comenzar, hay que obtener la ltima versin de AjaXplorer desde el sitio web del proyecto, descomprimir el fichero descargado, renombrar el directorio resultante (p.ej., ajaxplorer) y moverlo a la carpeta raz de nuestro servidor web. A continuacin, hay que asegurarse de que el directorio ajaxplorer/data tiene permisos de escritura por el servidor, ejecutando el siguiente comando:
chown -R www-data:www-data U /ajaxplorer/data

Gestiona archivos en tu servidor web Apache.

Malabares con Ficheros


Accede y gestiona archivos y documentos en tu servidor de ficheros o en un servidor remoto desde la comodidad de tu navegador o dispositivo Android. POR DIMITRI POPOV
n estos momentos, los servidores de archivos son muy comunes y es por una buena razn. La posibilidad de acceder a ficheros importantes y documentos desde cualquier parte o compartirlos con otros usuarios, se ha convertido en una necesidad para la mayora de nosotros. Un servidor de archivos basado en Linux nos puede permitir acceder a ficheros y documentos a travs de una gran variedad de protocolos, incluyendo FTP, Samba y SSH. Sin embargo, para hacer incluso ms fcil la gestin de ficheros en nuestro serviDmitri Popov ha estado escribiendo exclusivamente sobre Linux y software de cdigo abierto durante aos. Sus artculos han aparecido en revistas y sitios web daneses, britnicos, norteamericanos, alemanes y rusos. Dmitri es un vido aficionado a la fotografa y escribe sobre herramientas de cdigo abierto para la fotografa en su blog scribblesandsnaps.wordpress.com.

Apuntando nuestro navegador web a http:// 127.0.0.1/ajaxplorer (reemplazando 127.0.0.1 con la direccin IP actual o con el nombre de dominio de nuestro servidor) se ejecutar automticamente AjaXplorer Diagnostic Tool, que comprobar la instalacin buscando problemas potenciales (Figura 1). Si todo parece correcto, hay que ir a AjaXplorer y autentificarse utilizando el nombre de usuario y contrasea por defecto (admin/admin). Una vez que estamos autentificados, deberamos cambiar la contrasea por defecto del administrador para asegurar nuestra instalacin de AjaXplorer.

EL AUTOR

Figura 1: La herramienta de diagnstico incluida comprueba la instalacin de AjaXplorer.

70

Nmero 91

WWW.LINUX- MAGAZINE.ES

Workspace: AjaXplorer LINUX USER

Figura 2: Aadiendo un usuario a AjaXplorer.

Figura 3: Definiendo roles.

Para hacer esto, hay que seleccionar Change sera pulsar el botn derecho del ratn en Password desde la lista Logged y especificar aadir rol y elegir Edit. la nueva contrasea. En el cuadro de dilogo (Figura 3), podeAntes de comenzar a utilizar AjaXplorer, mos especificar los permisos de acceso para quiz queramos rellenarlo con usuarios. cada repositorio existente. Si queremos Incluso si planeamos utilizar AjaXplorer hacer ese rol por defecto para los nuevos como una solucin para un nico usuario, usuarios, hay que marcar Apply this role by sigue siendo buena idea el crear una cuenta default to all new users. En el campo de para el acceso sin privilegios al sistema. Manual actions filtering, podemos especifiPara aadir un nuevo usuario, hay que car una lista de acciones especficas que seleccionar Settings desde el desplegable queramos desactivar. Por ejemplo, si querecon todos los repositorios y a continuacin, mos no permitir al usuario crear directorios cambiar a la seccin Repositories & Users | y cambiar contraseas, hay que introducir Users. Presionando el botn New User en la las acciones mkdir,pass_change en el barra de herramientas principal, hay que campo. Esta es una funcionalidad bastante especificar la informacin requerida y pultil, aunque configurar los nombres de las sar el botn OK (Figura 2). Siguiendo estos acciones especficas soportadas por AjaXplopasos, podremos aadir a los usuarios que rer puede ser algo engorroso. necesitemos. La mayora de funcionalidades de AjaXCuando se utiliza AjaXplorer en un plorer estn implementadas mediante pluentorno multi-usuario, quizs necesitemos gins. Cada plugin viene con un fichero XML establecer diferentes permisos de acceso que lista todas las acciones soportadas. Por para ciertos usuarios. Por ejemplo, dar a los ejemplo, el plugin access.fs es responsable de invitados acceso de slo lectura a ciertos todas las operaciones de gestin de archivos repositorios especficos y dar permisos de y podemos encontrar la lista de las acciones escritura-lectura a otros usuarios. Aqu es soportadas en el fichero ajaxplorer/plugins/ donde la funcionalidad de perfiles de AjaXaccess.fs/fsActions.xml. Hay dos cosas que plorer entra en escena. hacen difcil encontrar el nombre de la En la seccin de Repositories & Users | accin que necesitamos. Primero, tenemos Roles, podemos especificar varios niveles de acceso (o roles, en la terminologa de AjaXplorer) y a continuacin, asignar los roles creados a los usuarios de AjaXplorer. Establecer un rol es bastante sencillo. Hay que presionar el botn de New Role en la barra de herramientas principal, dar un nombre al nuevo rol (p.ej.visitante, admin, etc.) y presionar OK. El siguiente paso Figura 4: Asignando roles a usuarios.

WWW.LINUX- MAGAZINE.ES

Nmero 91

71

LINUX USER Workspace: AjaXplorer

a repositorios especficos. El siguiente paso que podramos hacer es establecer los repositorios, desde la seccin Repositories & Users | Repositories en el mdulo Settings. En la mayora de los casos, un repositorio apunta a un sistema de archivos local separado. Adicionalmente, AjaXplorer proporciona controladores que pueden ser utiliFigura 5: AjaXplorer puede crear repositorios de varias fuentes, zados para crear reposiincluyendo bases de datos MySQL. torios desde otras fuentes. Por ejemplo, podemos crear un repositorio FTP que nos permita acceder y gestionar ficheros y directorios almacenados en un servidor FTP remoto. Este acercamiento implica que podemos utilizar AjaXplorer como agregador de ficheros que Figura 6: Activando un plugin en AjaXplorer. nos de acceso a datos almacenados en mquique saber qu plugin buscar. Segundo, los nas remotas. Adems de FTP, AjaXplorer nombres de las acciones que podemos hacer. proporciona controladores para Samba, FTP Si tenemos problemas a la hora de averiguarva SSH y WebDAV. Pero eso no es todo. las, la opcin ms segura es enviar nuestra Gracias a los controladores de MySQL y de pregunta al foro de soporte del proyecto. correos, podemos utilizar AjaXplorer para Para asignar uno o varios roles a los usuagestionar bases de datos de MySQL remotarios existentes, hay que hacer clic con el mente y acceder a correos mediante POP e botn derecho en el usuario deseado en la IMAP. En otras palabras, podemos utilizar seccin Repositories & Users | Users, elegir AjaXplorer no simplemente como un gestor Edit, cambiar a Access Control y mover los de archivos, sino tambin como un cliente roles especficos del panel Available Roles al grfico de MySQL y como un cliente de panel User Roles (Figura 4). Desde aqu, correo electrnico. podemos especificar accesos ms granulares Configurar un repositorio en AjaXplorer no es particularmente difcil. Para crear un repositorio de MySQL, hay que pulsar en el botn New Repository en la barra de herramientas principal, darle un nombre al repositorio y seleccionar el elemento Mysql Database desde el desplegable Repository Driver (Figura 5). En la seccin Main Options, hay que indicar Figura 7: Activando la funcionalidad WebDAV. la informacin reque-

rida para la conexin a la base de datos y especificar los derechos de acceso en la seccin de Repository Commons. Finalmente, especificar un alias (p.ej., mysql-repo) en la seccin Repository Slug, con lo que ya estara listo. De una forma similar, podemos configurar otros tipos de repositorios. AjaXplorer viene con una gran coleccin de plugins que ofrecen una funcionalidad muy til. Desde reproducir ficheros multimedia y retocar imgenes para ver los meta datos Exif, hasta editar ficheros de texto. La mayora de los plugins estn activados por defecto, aunque podemos fcilmente desactivar y activar plugins inactivos desde la seccin Global Configurations | Plugins desde el mdulo Settings. Por ejemplo, si queremos que AjaXplorer genere URLs cortas para compartir ficheros, podemos activar el plugin Bit.ly URL Shortener. Para hacer esto, hay que seleccionar el plugin Shorten, clic en el botn derecho en el elemento Bit.ly URL Shortener, activar el plugin y proporcionar tu usuario y API key de Bit.ly (Figura 6). Simplemente hay que presionar OK para activar el plugin. Nuestra instalacin de AjaXplorer ya est lista para funcionar, aunque quizs queramos activar y configurar una caracterstica ms antes de empezar a utilizar el gestor de ficheros. AjaXplorer soporta el protocolo WebDAV, que permite a los usuarios montar repositorios de AjaXplorer como unidades en la red local. Esta caracterstica no est activada por defecto, pero podemos hacerlo fcilmente en la seccin Global Configurations | Core Configs del mdulo Settings. Para hacerlo, botn derecho en el ratn en el elemento AjaXplorer Core, elegir Edit, expandir la subseccin WebDAV Server y activar WebDAV (Figura 7). Podemos dejar el resto de opciones por defecto. Una vez que hemos activado WebDAV globalmente, necesitaremos activar esta funcionalidad para cada usuario individualmente. Para ello, hay que seleccionar el elemento WebDAV Preferences desde el desplegable Logged, activar WebDAV, especificar una contrasea y anotar las URLs para acceder a los repositorios AjaXplorer.

Utilizando AjaXplorer
Gracias a su interfaz no intrusiva y amigable, AjaXplorer es realmente fcil de utilizar. Los botones en la barra de herramientas principal nos dan un rpido acceso a las tareas ms comunes, como mover, renombrar, copiar y borrar ficheros y directorios. La aplicacin trae una herramienta flexible

72

Nmero 91

WWW.LINUX- MAGAZINE.ES

Workspace: AjaXplorer LINUX USER

fichero seleccionado en una aplicacin externa o en la que trae por defecto. AjaXplorer viene con un editor simple de texto (Figura 8), con lo que podemos ver y editar ficheros directamente desde el gestor. El editor incluye funcionalidades esenciales Figura 8: AjaXplorer tiene integrado un sencillo editor de textos. como Deshacer y Rehacer, bsqueda de texto, ajuste de lnea, nmero de lnea y edicin en pantalla completa. Todo esto hace que sea una herramienta decente para editar ficheros de forma ligera sin tener que descargarlos primero. AjaXplorer trae adems un visor de imgenes integrado que puede ser utilizado para una Figura 9: El gestor de archivos nos permite editar ficheros grfi- previsualizacin de imgenes e incluso para ejecos en el editor de imgenes Pixlr. cutar presentaciones de con la que podemos subir mltiples ficheros diapositivas directamente desde el gestor. arrastrando y soltando en el rea de subida Mejor an, la aplicacin se integra adecuade archivos. Utilizando la herramienta, damente con el editor de imgenes Pixlr, que podemos subir ficheros desde nuestra puede ser utilizado para retocar las imgemquina local y obtener ficheros desde un nes sin dejar AjaXplorer (Figura 9). sistema anfitrin remoto. El gestor de archivos puede incluso comHaciendo clic en el botn derecho en cualpartir ficheros y documentos fcilmente con quier fichero de un repositorio aparece un otros usuarios. Simplemente hay que selecmen contextual que nos da acceso a varias cionar el fichero deseado y presionar el acciones. Con la accin Compress, podemos botn Share en la barra de herramientas crear un archivo ZIP conteniendo los ficheprincipal. En la ventana de dilogo para ros seleccionados actualmente, algo que compartir (Figura 10), podemos especificar puede venir muy bien cuando necesitamos un periodo de expiracin y proteger los descargar varios ficheros de una vez. La ficheros compartidos con una contrasea. accin Open nos permite ver o editar el Para generar un enlace al fichero compartido, hay que presionar el botn Generate. Finalmente, la AjaXplorer app [2] nos permite acceder y gestionar ficheros desde la comodidad de nuestro dispositivo Android (Figura 11). La app puede gestionar varias instancias de AjaXplorer y tiene todas las caractersticas esenciales para acceder y gestionar ficheros y documentos en movimiento. Figura 10: Compartiendo un fichero con AjaXplorer.

Figura 11: La app AjaXplorer de Android permite acceder a nuestros ficheros y documentos cuando estamos en movimiento.

Conclusiones
AjaXplorer proporciona un modo fcil y flexible de acceder y gestionar ficheros y documentos utilizando navegadores web, aunque eso es slo uno de los muchos talentos de AjaXplorer. Gracias a varios controladores de repositorios, AjaXplorer puede gestionar datos almacenados en servidores remotos. Esto implica que nuestros ficheros y documentos no necesitan residir en nuestro propio servidor de ficheros. Adicionalmente, podemos utilizar AjaXplorer para acceder a bases de datos MySQL y cuentas de correo POP e IMAP. Tambin tiene varias herramientas integradas que nos permiten ver y editar ficheros y documentos directamente en el gestor de ficheros. Las posibilidades de compartir ficheros en AjaXplorer pueden venir muy bien en varias situaciones y los usuarios de mviles definitivamente apreciarn la app de Android AjaXplorer. En resumen, si ests considerando desplegar un gestor de archivos web en tu servidor, AjaXplorer debera estar en lo ms alto de la lista.

RECURSOS
[1] AjaXplorer: http://ajaxplorer.info/ [2] AjaXplorer Android app: https://play.google.com/store/apps/ details?id=info.ajaxplorer.android

WWW.LINUX- MAGAZINE.ES

Nmero 91

73

LINUX USER Lnea de Comandos: Wodim

Quemando con Wodim

embargo, el comando principal es wodim. Las herramientas del escritorio son slo la fachada para la serie de opciones del comando wodim. Wodim es un fork de la coleccin de herramientas de Jrg Schilling para grabar cds: cdrtools. Cuando en el ao 2006 Schilling cambi la licencia de cdrecord por la Common Development and Distribution License, la distribucin Debian comenz el fork sobre la base de que la nueva licencia fuera incompatible con la GNU General Public License, que estaban utilizando otras partes de la coleccin cdrtools. El fork fue enconado, pero la Free Software Foundation se puso del lado de Debian, por lo que wodim y ahora cdrkit, la versin del fork de cdrtools ms unos cuantos comandos adicionales , es el estndar en las principales distribuciones de Linux y se instala de forma predeterminada. Como la mayora de las utilidades de la lnea de comandos, Wodim ofrece una larga lista de opciones. Algunas proporcionan la informacin necesaria para utilizar el mandato bsico de manera eficiente. Muchas son opciones que se centran en grabar audio o datos en CD/ DVD exactamente de la manera deseada. Mientras que otras son exclusivas para el formato CD-RW. Debido a la gran cantidad de opciones, la mejor manera de utilizar Wodim es reunir una lista bsica de las opciones que necesita para un sistema en particular y guardarla o asegurarse de que el comando est siempre en su historia del Bash.

ltimo Aviso
Wodim trabaja entre las bambalinas de los programas ms populares para la grabacin de CD/ DVD, pero es an ms poderoso en la lnea de comandos. POR BRUCE BYFIELD
uchas personas han utilizado algn tipo de Linux en un dispositivo mvil u otro tipo de dispositivo sin saberlo. La herramienta Wodim es igualmente annima: si has utilizado una aplicacin de escritorio para quemar CD/ DVD como Brasero o K3, entonces has utilizado Wodim y otras herramientas, como cdrdao genisoimage aunque, sin

Recopilacin de informacin
Para utilizar Wodim, necesitas leer y escribir en una unidad de CD/ DVD. Afortunadamente, la mayora de las distribuciones modernas suministran esto automticamente a las cuentas genricas. Si, por alguna razn, la tuya no lo hace, tendrs que agregar tu cuenta de trabajo para el grupo correspondiente en /etc/group . Por ejemplo, en las distribuciones derivadas de Debian, el grupo suele ser cdrom . Para opciones avanzadas, en especial para la solucin de problemas, es necesario iniciar sesin como root, pero para solamente grabar, no es necesario.

74

Nmero 91

WWW.LINUX- MAGAZINE.ES

Lnea de Comandos: Wodim LINUX USER

Si una unidad est conectada correctamente, a menudo se puede utilizar Wodim sin especificar un ID de dispositivo. Si no se especifica un dispositivo, Wodim intentar detectar uno antes de grabar. Sin embargo, ya que la deteccin a veces puede tardar hasta tres minutos casi tan larga la espera como la propia grabacin en general, es conveniente especificar un dispositivo simplemente para ahorrar tiempo. La primera manera de obtener un ID de dispositivo es ingresar el comando
wodim --devices

Figura 1: Antes de grabar, utiliza Wodim para descubrir la informacin bsica que necesitas.

Grabacin de un CD/DVD
En un equipo moderno, la estructura de una orden para Wodim puede ser tan simple como:
wodim U TARGETDRIVE FILESTOBURN

Este comando indica el fabricante de la unidad y el modelo, los permisos de la cuenta actual (que deben ser rwrw-- ) y, lo ms importante, el ID de la unidad (en este caso, /dev/sg1 )(Figura 1). Alternativamente, puedes utilizar la opcin -scanbus para encontrar la direccin SCSI del dispositivo (Figura 2). La direccin SCSI es la primera columna de la izquierda (en este caso, 8,0,0 ). Cuando utilices la direccin SCSI para quemar, recibirs una advertencia de que este mtodo de identificacin pronto podra ser eliminado, pero por ahora, sigue siendo una alternativa legtima. Si necesitas ms informacin para configurar la estructura del comando Wodim, utiliza la opcin -checkdrive . Adems de dar informacin sobre las unidades disponibles, sus controladores y modos soportados para quemar, la opcin -checkdrive tambin te da una nueva denominacin vlida para las unidades, como /dev/sr0 (Figura 3). Para mejorar an ms la informacin que proporciona Wodim, puedes utilizar uno de los modos detallados. Wodim admite tres niveles de detalle, desde -v que es el menos detallado, hasta -vvv que es el mximo. La informacin adicional proporcionada puede ser til para solucionar problemas, pero a menos que ests usando la cuenta root o wodim se haya instalado con suid-root (que, en la mayora de las distribuciones, no es as), puede que parte de la informacin que proporciona en modo detallado no est disponible para ti.

Sin embargo, si lo deseas, puedes aadir opciones adicionales, para que el proceso de quemado sea exactamente como quieras. De forma predeterminada, Wodim asume que todas las pistas deben ser datos, excepto los archivos que tengan la extensin .wav o .au , que los identifica como archivos de audio. Sin embargo, es posible que desees especificar -audio o -data en el comando para reducir las posibilidades de error. Por lo general, Wodim analiza la unidad para determinar la velocidad ms rpida de la que es capaz. Sin embargo, en algunos sistemas, especificando una velocidad inferior, a veces se pueden eliminar errores. Tambin, a veces, puede usar una

velocidad predeterminada que est por debajo de la que puede manejar la unidad. En tales casos, la opcin speed= te permite ajustar la velocidad de grabacin a tu eleccin. Puedes utilizar una de las opciones de informacin para encontrar exactamente a qu velocidad es capaz de funcionar tu unidad o, ms sencillamente, utilizar speed=0 para que Wodim queme a la velocidad ms alta posible. De manera similar, por defecto Wodim graba en el primer modo listado al final de la informacin proporcionada por la opcin -checkdrive . Sin embargo, puede utilizar -dao , -tao o -sao para especificar cualquier modo de grabacin compatible con la unidad. Con la mayora de las modernas unidades CD/ DVD, el modo predeterminado es track-at-once (TAO). Con este modo de grabacin, cada pista se graba por separado, una cada vez. La mayora, si no todas las unidades, slo pueden grabar un disco multisesin si se utiliza TAO.

Figura 2: Utiliza la opcin scanbus para identificar las unidades del controlador SCSI.

Figura 3: La opcin CheckDrive ofrece la informacin ms completa sobre la unidad de CD/ DVD.

WWW.LINUX- MAGAZINE.ES

Nmero 91

75

LINUX USER Lnea de Comandos: Wodim

Por el contrario, disk-at-once (DAO) quema todo el contenido en una pasada continua. Si se especifica -dao con wodim, puede ajustar la distancia entre las pistas con el uso de -pad o

padsize= #OFDISKSECTORS. A veces los usuarios avanzados usan esta capacidad para aadir pistas ocultas o introducciones, una opcin mucho ms all del alcance de este artculo.

Figura 4: La opcin blank te da control sobre los discos re-grabables.

El tercer modo de grabacin es session-at-once (SAO). Como TAO, SAO permite mltiples sesiones, pero con SAO, todas las sesiones despus de la primera son ledas por unidades de PC, no por un equipo de audio CD. Los discos quemados con SAO se utilizan a menudo para combinar las pistas de audio con otros materiales, como vdeos. SAO requiere que se especifique en el comando el tamao de cada pista, lo que suele ser suficiente para garantizar que el usuario medio elija DAO o TAO en su lugar. Wodim tambin soporta varios tipos de pista, tales como mode2 , xa , xa1 y xa2 [1], los cuales son todos ellos formatos extendidos de los formatos de audio bsicos. Sin embargo, es improbable que la mayora de los usuarios lleguen a usar estas variaciones. Experimentando, pronto llegars a descubrir la estructura bsica del comando que necesitas para grabar con Wodim en cualquier sistema en particular. Si deseas asegurarte de que se ha especificado todo para la grabacin ms eficiente posible, la orden mnima ser algo como esto:
wodim -tao U speed=0 dev=/dev/sr0 U -v -data U /home/bruce/*.png

Figura 5: La pgina de resumen te permite revisar el proceso de grabacin antes de que comience.

Figura 6: Durante la grabacin, Wodim da cumplida cuenta de lo que est haciendo exactamente en cada paso del camino.

Figura 7: Despus de la grabacin, resume los resultados.

Naturalmente, se pueden aadir tantas opciones como se quiera o se necesite. Muchos usuarios querrn utilizar -eject para que se abra la unidad al completar la grabacin. Tambin puedes usar -multi que te permite grabar en el disco ms de una sesin y aadir -nofix , de modo que Wodim cierre el disco y evitar as un uso posterior. Alternativamente, es posible que desees especificar -fix para impedir la grabacin sobre el disco. Con la orden blank= command, tendrs ms control sobre el borrado o unfixing de discos re-escribibles (Figura 4). Los usuarios cuidadosos igual tambin queris utilizar gracetime= SECONDS para extender el valor predeterminado de cuatro segundos de retraso antes de escribir, para que se pueda leer el resumen de lo que est pasando antes de que algo suceda realmente. Estas opciones no son

76

Nmero 91

WWW.LINUX- MAGAZINE.ES

Lnea de Comandos: Wodim LINUX USER

estrictamente necesarias, pero son convenientes y tiles, mientras se est grabando. Si la unidad no est actuando como debera, incluso se puede especificar el controlador para ella. Comprueba el fabricante y el modelo de la unidad. A continuacin, aade driver= NAME, utilizando una de las opciones que aparecen en la completsima pgina man de Wodim. Cuando grabas archivos con Wodim, ste comienza con un resumen de la unidad y los archivos que se van a grabar (Figura 5). Entonces comienza la cuenta atrs que indica el tiempo que falta para iniciar del proceso. Se informa de cada paso de la grabacin (Figura 6). El proceso finaliza con un resumen de la operacin y el rendimiento de Wodim (ver Figura 7). Las primeras veces que utilices Wodim, repasa los mensajes de error (Figura 8). Estos mensajes suelen sugerir cmo corregir problemas y

puede ayudar a afinar las opciones necesarias en la estructura del comando. Las advertencias se pueden ignorar, ya que suelen ser corregidas por el mismo programa. Sin embargo, si puedes agregar opciones que eliminen las advertencias, las siguientes grabaciones tardarn menos. Como es de esperar, podras terminar sacrificando una gran cantidad de discos antes de llegar a la estructura de comando ideal. Para evitar este tipo de residuos, puedes utilizar la opcin -dummy . Al incluir -dummy se le indica a Wodim que debe funcionar en vaco. No se escribe nada en el disco, pero todava puedes beneficiarte de las advertencias, errores y otra informacin en tus esfuerzos por utilizar Wodim de la forma que prefieras.

Opciones Hardcoding
Wodim se configura en /etc/wodim. conf . Los valores establecidos en wodim.conf se usan con el comando,

Figura 8: Los mensajes de error que ofrece Wodim aluden a cmo puedes aumentar la eficiencia de tus grabaciones.

a menos que se aada una opcin predominante en el prompt (Figura 9). Si abres wodim.conf en algunas distribuciones especialmente en las derivadas de Debian encontrars que todas las opciones estn comentadas. Sin embargo, mediante el estudio de los comentarios en el archivo, puedes aprender las cuestiones bsicas del comando. Adems, puedes codificar algunas de las opciones, lo que significa que puedes dejar de lado el promt. Los campos en wodim.conf se nombran de manera diferente que las opciones del comando, pero no debes encontrar muchos problemas para encontrar la manera en que se corresponden. Por ejemplo, utiliza CDR_DEVICE para establecer la unidad por defecto utilizada por Wodim o CR_SPEED para la velocidad predeterminada. Adems, puedes establecer las especificaciones de la unidad a utilizar con la ayuda de algunas de las opciones de informacin de Wodim. Al aadir esta informacin a wodim.conf , puedes reducir considerablemente la estructura necesaria para el comando. Puede que el juego de malabares de las opciones de este programa no sean sencillas. No importa cmo lo intentes, pero en la mayora de los casos, con unas pocas pruebas debera ser suficiente para que te sientas cmodo con el comando. Por otra parte, si ests teniendo problemas para grabar correctamente, familiarizarte con Wodim en el promt te puede proporcionar el grado de control que necesitas y no se puede encontrar en el escritorio.

RECURSOS
[1] CD-ROM XA: https://en.wikipedia.org/wiki/CDROM_XA

Figura 9: Puedes codificar opciones predeterminadas en wodim.conf, acortando la estructura del comando.

Bruce Byfield es periodista tecnolgico, escritor freelance y editor especializado en software de cdigo abierto. Aparte de escribir sus proyectos, tambin da cursos de live y e-learning. En su tiempo libre Bruce escribe sobre el arte de la costa Noroeste. Puedes leer ms sobre su trabajo en http:// brucebyfield.wordpress.com

EL AUTOR

WWW.LINUX- MAGAZINE.ES

Nmero 91

77

COMUNIDAD Konsultorio

EL KONSULTORIO DE KLAUS
Klaus Knopper es el creador de Knoppix y co-fundador de la LinuxTag Expo. En la actualidad trabaja como profesor, programador y consultor. Si tienes algn problema de configuracin o simplemente quieres conocer mejor cmo funciona Linux, no dudes en escribir tus preguntas a:
PD. He realizado esto mismo con openSUSE 12.1 y Kubuntu 10.04, usando exactamente el mismo nombre de usuario, contrasea, cdigo PIN, etc., que en Linux Mint. Saludos, G. Kaellqvist Knoppix usa el mismo gestor de red que usan la mayora de las otras distribuciones, de manera que esto no parece que marque la diferencia. Sin embargo en lo relativo a los temas de hardware, es mejor usar los ltimos paquetes disponibles de Debian inestable, as que se podra considerar la actualizacin de los siguientes paquetes que estn relacionados con los mdems inalmbricos:
modem-manager ppp usb-modeswitch usb-modeswitch-data

Podemos comprobar el archivo de Knoppix /etc/ppp/peers/gprs (slo legible para superusuarios) para ver algunas opciones tiles de PPPD. Desgraciadamente, modem-manager no tiene un elemento de configuracin grfica para las opciones de PPPD, as que tendremos que modificar los archivos de configuracin de PPPD en /etc/ppp. Tambin podemos experimentar con el script iniciador de mdem inalmbrico de Knoppix llamado gprsconnect, que primero vincula /dev/modem a /dev/ttyACM0 o /dev/ttyUSB0 (donde el mdem debe conseguir su carcter de dispositivo asignado desde udev) y luego ejecuta un script chat e inicia pppd con las opciones conocidas para trabajar en muchos escenarios.

Vivo o Muerto
Estimado Sr. Knopper: estoy feliz con la versin de Knoppix 7.0.2 corriendo como Live DVD. No obstante, el sistema Live es bastante lento y quiero instalarlo en mi memoria USB de 32 GB que segn ha dicho en un par de ocasiones debe ser muy fcil. Los dos libros de OReilly de Kyle Rankin (Knoppix Pocket Reference y Knoppix Hacks) no me han ayudado. He encontrado sus archivos de informacin en distintos sitios y explica que debo usar el elemento Configuracin del men que aparece en el arranque. Pero mi arranque de 7.0.2. no proporciona ningn men ni por lo tanto ningn elemento marcado como Configuracin. Encontr un nico archivo con ese nombre en UNIONFS/etc/crossfire, pero no parece un archivo con instrucciones de configuracin o un script. En algn otro archivo, menciona que prefiere ReiserFS, que no est en ninguna de mis muchas

preguntas@linux-magazine.es

Estado de Mint
Hola! Estoy teniendo problemas para conseguir que mi banda ancha mvil funcione bajo Linux Mint 12, en la versin de KDE (proveedor: Teila, Suecia; hardware: Huawei e143 en un porttil, Asus E56v). Funciona sin errores con Knoppix Live 7. He cambiado el KNetworkManager a la versin de GNOME, pero sin resultados. El sistema encuentra el mdem, conecta con la lnea de telfono, pero se para mientras consigue la direccin de red. En Knoppix, funciona una vez instalado y despus de responder dos o tres preguntas. Qu diferencia hay entre cmo inician Linux Mint y Knoppix la banda ancha mvil?

usb-modeswitch especialmente puede ser un buen candidato. Prepara el mdem para ir desde el modo CD de instalacin a la lnea serie y adems, si es necesario, eventualmente establece los permisos adecuados y los archivos del dispositivo en /dev. Si el mdem ni siquiera se detecta como tal, es probable que necesitemos un ncleo nuevo o cargar el mdulo usbserial manualmente. Tambin se necesita un conmutador importante para pppd que no est en Debian de manera predeterminada, as que deberamos comprobar la opcin noauth en /etc/ppp/options, lo que significa que el par (el ISP) NO tiene que autenticarse contra nuestro sistema. En su lugar, nuestro sistema debera autenticar contra nuestro servidor de ISP. Si falta esta opcin, la conexin se cierra antes de conseguir una direccin IP, lo que parece ser que est ocurriendo.

78

Nmero 91

WWW.LINUX-MAGAZINE.ES

Konsultorio COMUNIDAD

versiones de Linux, pero lo he descargado de algn sitio. Intent la descarga desde Debian, pero no lo hizo correctamente. En este momento tengo una memoria de 32GB vaca y formateada con tres particiones primarias de 6GB en ext4, con un archivo de intercambio de 1GB y el espacio restante como /home en /dev/sdb6. Cmo puedo completar este USB y cmo puedo aadir otros Linux a /dev/ sdb2 y sdb3? Estoy buscando una versin de Linux completa que contenga GCC, Emacs y TeX o LaTeX, pero no he encontrado ninguna, slo cantidad de juegos, grficos y otros despropsitos. Estuve satisfecho con Linux desde 1996-2002 cuando reconoca un procesador 86_64, un disco SATA y una placa Asus que incluso se negaba a cargar Windows XP e intentaba obligarme a comprar Windows 7 u (pero preferentemente y) 8. Gracias. J.K. Nieuwenhuizen Primero hablaremos de la solucin general y luego acerca de la configuracin especial. Para la instalacin en Flash, Knoppix tiene un script llamado flash-knoppix que copia el contenido de un DVD o CD a la primera particin primaria, asumiendo que es FAT32, haciendo que se pueda arrancar a travs de Syslinux y creando una capa superpuesta para escribir datos. La Figura 1 muestra dnde encontrarlo en la versin 7.0.4 actual (que es igual para la 7.0.2). Aparentemente no es esto lo que andamos buscando para usar mltiples particiones y ubicar el directorio home en la segunda particin extendida (para lo cual debemos asegurarnos de que los permisos coinciden con el resto del sistema: el usuario Knoppix tiene UID y GID 1000). Asumiendo que la primera particin est libre para Linux, podemos ejecutar el instalador sin reparticionar el disco flash entero. Si queremos usar una particin diferente,

tendremos que instalarla en un disco flash distinto y copiar los datos sobre la particin deseada. Hay que tener en cuenta que el cargador de arranque Syslinux necesita una particin FAT32, pero podemos ubicar una entrada del tipo
mount /dev/sda6 /home

(Este truco funciona en muchos otros notebooks.) Para WiFi, es posible que un conmutador rfkill acte desactivando la antena. Si hay una opcin de combinacin de teclas que se supone que activan el WiFi, pero no funcionan, podemos comprobar qu conmutadores de software estn activos con:
sudo rfkill list

en los scripts de inicio de Knoppix (es decir, /etc/init.d/knoppix-autoconfig o /etc/ rc.local) para tener el directorio home fuera del archivo de capa superpuesta en una particin diferente. Para arrancar otros sistemas operativos, tendremos que instalar un cargador multiarranque que permita la seleccin del ncleo y el disco ram desde particiones arbitrarias como GRUB o Smart BootManager [1]. Una vez cargados el ncleo y el disco ram inicial, Knoppix buscar el directorio KNOPPIX que contiene el sistema de archivos comprimido principal en otras particiones automticamente. Para otras distribuciones, tendremos que establecer la particin del sistema de archivos raz de forma explcita como parmetro del ncleo root=/dev/nombre_de_la_particin.

Si nos muestra un conmutador soft blocked para la tarjeta WiFi, lo podemos desbloquear con:
sudo rfkill unblock U <nmero_del_conmutador>

Para el sonido, en algunos casos, los controladores deben cargarse con opciones especiales, pero hay demasiadas posibilidades de chipsets especficos para poder acertar. Hay una gua de cmo comprobar e informar del sonido en el tablero de ayuda de Ubuntu [2], que puede ser til. Una forma sencilla de comprobar si funciona la cmara es
mplayer tv://

Variaciones en Vaio
Hola Klaus! Qu tal ests? Me gustara saber la razn por la que Ubuntu no funciona en mi Sony Vaio pcg61a11x. Lo puedo instalar, pero no funciona nada WiFi, brillo de pantalla, sonido, cmara, etc. Conoces un Linux que funcione en Sony Vaio, o tengo que seguir con Windows y una mquina virtual con Linux? Gracias. Unio Parece que este modelo especfico de notebook slo est disponible en unos pocos pases. No se encuentra mucha informacin sobre l. Sin embargo otros modelos de Sony Vaio se sabe que funcionan, de manera que es probable que se trate de un asunto de configuracin de Linux para conseguir que las cosas funcionen, como por ejemplo buscar controladores especiales. Vamos a intentar algunas cosas. Por ejemplo intentar conseguir que las teclas de brillo funcionen aadiendo la opcin de arranque:
acpi_osi=Linux acpi_U backlight=vendor

lo cual mostrar una imagen en directo. Tambin lo podemos hacer con el programa Cheese [3]. Si nos informa de que no encuentra ninguna cmara, podemos intentar cargar el controlador uvcvideo manualmente. Se debera detectar automticamente, pero para los modelos exticos de cmara, podra faltar el ID de la cmara:
sudo modprobe uvcvideo

Seguro que hay disponibles otros notebooks ms amigables con Linux que Sony Vaio, pero en caso de no poder reemplazarlo, estas soluciones nos pueden ayudar a que funcione la mayora de nuestro hardware.

RECURSOS
[1] Smart BootManager: http://sourceforge.net/projects/btmgr/ [2] Tablero de ayuda de Ubuntu: https://wiki.ubuntu.com/ DebuggingSoundProblems [3] Cheese: http://projects.gnome.org/cheese/

Figura 1: Instalador flash en el men.

WWW.LINUX-MAGAZINE.ES

Nmero 91

79

COMUNIDAD La Perrera: USB Promocionales

EL NUEVO DISQUETE DE AOL


Lo chicos ms listos de marketing han comenzado a cargar pendrives USB con su informacin promocional en lugar de publicar los habituales folletos y otra quincalla. POR JON MADDOG HALL
uede que algunos de ustedes recuerden los disquetes. Cuando comenc a usarlos, contenan la increble cantidad de 92KB de datos, con el tiempo fueron evolucionando hasta capacidades relativamente grandes. Sin embargo, el disco que recuerda la mayora de la gente es el disquete de 3,5 pulgadas que contena 1,44 MB. Por otra parte, cuando salieron por primera vez, los disquetes solan costar un par de dlares cada uno, pero con el tiempo, redujeron su precio tanto como la fabricacin y la competencia permiten bajar los precios. Puede que algunos tambin recuerden que America Online (AOL) utiliz estos disquetes de 3,5 pulgadas para anunciar sus servicios. Un disquete poda llegar por correo con algn tipo de software que promocionaba AOL y que permita conectarse a su servicio. Cuando todo esto ocurra yo usaba GNU/Linux. Por supuesto, el software que se inclua en el disco no funcionaba en mi sistema Linux, as que me limitaba a sobreescribir el disco y utilizarlo como un disco de arranque o para la transferencia de archivos pequeos. Despus de

todo, slo utilizamos alrededor de 150 de estos discos para mantener la distribucin Slackware al da. Despus de un tiempo, AOL se volvi un poco ms sabio y comenz a poner su software en un CD-ROM. Ahora que no podan utilizarse para copias de seguridad o distribuciones, mucha gente los utiliz como posavasos o para hacer bonitos mviles que reflejaban los colores del arco iris a la luz del sol. Algunas empresas Linux fueron un paso ms all de los CD-ROM publicitarios y crearon algunos discos CD-ROM del tamao de una tarjeta de visita que contenan programas tiles (adems de la informacin promocional) y sencillamente impriman sus datos de contacto en la parte superior de las tarjetas. Linuxcare, una de las primeras compaas de soporte, era famoso por su CD de recuperacin de tamao cartera. A medida que las distribuciones se hicieron ms grandes y la red ms rpida y ms comn, la necesidad de llevar algo en el bolsillo para recuperar el sistema decay un poco. Es ms, la llegada del CD-R permiti a la gente adaptar fcilmente sus propios sistemas de recuperacin, por lo que las tarjetas para la cartera perdieron popularidad. En una reciente conferencia, el ICANN distribuy una unidad flash USB que contena algunos documentos y presentaciones para todos los asistentes. Este tipo de cosas haban sucedido antes, pero por lo general las unidades flash eran muy pequeas, tal vez 64 MB de datos. Sin embargo, esta unidad indicaba en el exterior de la unidad que tena 4 GB de almacenamiento. Intrigado, puse la unidad en mi Equipo. El ICANN haba puesto tan slo 600 MB de datos en un disco de 4 GB y (lo ms interesante) la unidad slo mostraba 2 GB de su capacidad total. Con mucho cuidado, quit los datos y reparticion el disco a 4 GB, para despus instalar en l Linux con un sistema de archivos persis-

tente de 2GB. Luego, coloqu de nuevo los datos del ICANN y ofrec esta imagen USB mejorada a algunos de mis compaeros asistentes. Cuando llegu a casa, me puse a buscar en el precio por cantidades de las unidades USB. Las unidades flash USB de gama baja (el tamao de 64 MB) pueden llegar a 3 $ cada uno en cantidades de 100. Para el propsito de que contengan tanto un sistema persistente y datos, la unidad debe ser de un mnimo de 4 GB, que en cantidades de 100 cuestan 6,27 $ cada una. Una unidad de 8 GB costara 8,32 $ para las mismas cantidades. Al aumentar la cantidad a 1.000, los precios son 5,18 $ y 7,23 $ para 4 y 8 GB, respectivamente. Esto incluye el logo y la URL de tu organizacin impreso en el exterior de la unidad. Todava puede sonar algo caro para regalar en un evento, pero las alternativas tampoco son muy baratas. Los materiales impresos son caros y muchas veces van directamente de tu maletn (donde los guardas para el evento) a la papelera (en el que los asistentes los dejan). Imprimir un folleto a color brillante puede costar de 2 a 3 $, y cuando necesitas actualizar el material, el folleto se vuelve intil. Sin embargo, una unidad de memoria puede volver a cargarse para actualizar la informacin o incluso podran actualizarse los datos a travs de Internet. Con uno de estos dispositivos USB, la persona que lo recibe puede ponerlo en su ordenador y acceder a datos multimedia o arrancar un sistema Linux Live para echar un vistazo a los datos (que se pueden mostrar a travs de un escenario auto ejecutable). Despus, la persona puede copiar los datos a su propio sistema, dejarlo en la unidad de disco USB o eliminarlo, pero todava tendr tu logo y tu URL en la parte exterior de la unidad de disco USB, ya que es algo valioso. Teniendo en cuenta que GNU/Linux est disponible gratuitamente, el uso de dispositivos USB como un artculo promo cional es una opcin atractiva.

80

Nmero 91

WWW.LINUX-MAGAZINE.ES

EVENTOS

Libre Graphics Meeting 2013


Fecha: 10 - 13 Abril Lugar: Madrid, Espaa Web: libregraphicsmeeting.org/2013

Concurso Univ. de SwL Final


Fecha: 10 - 11 Mayo Lugar: Granada, Espaa Web: www.concursosoftwarelibre.org

Akademy 2013
Fecha: 13 - 19 Jul. Lugar: Bilbao, Espaa Web: akademy2013.kde.org

Calendario de Eventos Espaa e Hispanoamrica Evento Libre Graphics Meeting 2013 Concurso Univ. de SwL - Final Akademy-es 2013 Akademy 2013 Resto del Mundo Evento Infosecurity Europe 2013 LinuxFest Northwest 2013 LinuxTag 2013 Automotive Linux Summit AnDevCon Spring 2013 Berlin Buzzwords Europython 2013 Guadec 2013 USENIX Security LinuxCon Europe Linux Kernel Summit DebConf13

Fecha 10 - 13 Abr 10 - 11 May 11 - 12 Jul 13 - 19 Jul Fecha 23 - 25 Abr 27 - 28 Abr 22 - 25 May 27 - 28 May 28 - 31 May 03 - 04 Jun 01 - 07 Jul 01 - 08 Ago 14 - 16 Ago 21 - 23 Oct 23 - 25 Oct 27 - 28 Oct

Ciudad / Regin Madrid, Espaa Granada, Espaa Bilbao, Espaa Bilbao, Espaa Ciudad / Regin Londres, R.U. Bellingham, EE.UU. Berln, Alemania Tokyo, Japn Boston, EE.UU. Berln, Alemania Florencia, Italia Brno, Rep. Checa Washington, EE.UU. Edimburgo, R.U. Edimburgo, R.U. Vaumarcus, Suiza

Sitio Web libregraphicsmeeting.org/2013 www.concursosoftwarelibre.org www.kde-espana.es/akademy-es2013 akademy2013.kde.org Sitio Web www.infosec.co.uk linuxfestnorthwest.org www.linuxtag.org events.linuxfoundation.org www.andevcon.com berlinbuzzwords.de ep2013.europython.eu guadec.org usenix.org/conference/usenixsecurity13 events.linuxfoundation.org events.linuxfoundation.org wiki.debconf.org

Informacin de Contacto
Director Paul C. Brown Coolaboradores Jos Mara Ruz, Oliver Frommel, Klaus Knopper, Jose Mara Lancho, Paul C. Brown, Kristian Kissling, Martin Streicher, Joe Brockheimer Editores Alina Caravaca Chaves, Paul C. Brown Traductores Paqui Martn Vergara, Vctor Tienda, Francisco Molinero Maquetacin Miguel Gmez Molina, Alina Caravaca Chaves Diseo de Portada Pinball info@pinball-werbeagentur.de Publicidad www.linux-magazine.es/pub/ Para Espaa Marketing y Comunicaciones anuncios@linux-magazine.es Tel.: (+ 34) 952 020 242 Fax.: (+ 34) 951 235 905 Para el Resto del Mundo Petra Jaser ads@linux-magazine.com Tel.: (+49) 8999 34 11 23 Fax.: (+49) 8999 34 11 99 Director Editorial Paul C. Brown Jefe de Produccin Miguel Gmez Molina Subscripciones: www.linux-magazine.es/magazine/subs Precios Subscripcin Espaa: 54,90 Europa: 64,90 Resto del Mundo - Euros: 84,90 subs@linux-magazine.es Tel.: (+34) 952 020 242 Fax.: (+34) 951 235 905 Linux Magazine Linux New Media Spain, S.L. Edfco. Hevimar, Planta 2, Ofic. 16 C/Graham Bell n 6 29590 - Mlaga ESPAA info@linux-magazine.es Tel.: (+34) 952 020 242 (+34) 951 235 904 Fax.: (+34) 951 235 905 www.linux-magazine.es - Espaa www.linux-magazine.com - Mundo www.linux-magazine.co.uk - Reino Unido www.linux-magazine.com.br - Brasil www.linux-magazine.pl - Polonia Si bien se toman todas las medidas posibles para garantizar la precisin del contenido de los artculos publicados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en la revista. Asimismo, Linux Magazine no comparte necesariamente las opiniones vertidas por sus colaboradores en sus artculos. El riesgo derivado del uso del DVD y el material que contiene corren por cuenta del lector. El DVD es estudiado escrupulosamente para confirmar que est libre de virus y errores. Copyright y Marcas Registradas 2013 Linux New Media Spain, S.L. Linux New Media Spain S.L. prohbe la reproduccin total o parcial de los contenidos de Linux Magazine sin su permiso previo y por escrito. Linux es una Marca Registrada de Linus Torvalds. Impreso en Polonia Impresin: ArtDruck DVDs: Fermata Distribucin: SGEL Depsito Legal: MA-116-2005 ISSN edicin impresa: 1576-4079 ISSN edicin online: 1699-2237

WWW.LINUX- MAGAZINE.ES

Nmero 91

81

PRXIMO NMERO

Rescate de Sistemas
Si ejecutas un sistema durante bastante tiempo, algo se romper. Un controlador sobrescrito? Un disco duro que falla? Un sistema de ficheros corrupto? No sabes lo que te va a tocar en la lotera de los fallos informticos. Lo que s sabes es que utilizars Linux para repararlo. La plataforma Linux viene con un amplsimo abanico de herramientas que puedes utilizar para resucitar un equipo, o sino, al menos, para recuperar sus datos, sea desde Windows, Mac o Linux. Y con la tecnologa de arranque en modo Live, las tareas de rescate son an ms sencillas y seguras. Te ayudamos a recuperar tus equipos rotos en el nmero 92 de Linux Magazine.

Sguenos en nuestras redes sociales: Facebook: facebook.com/linuxmagazine.es Twitter: twitter.com/linux_spain Google+: plus.google.com/b/101673494113753130304/ Identi.ca: identi.ca/linuxspain/

Andrea Danti, 123RF

A LA VENTA: ABRIL 2013


82
Nmero 91
WWW.LINUX- MAGAZINE.ES

Anda mungkin juga menyukai