Vous êtes sur la page 1sur 28

GRATIS

Versiones Live KDE, Gnome y de Instalacin. Ms info en pg. 3.

HARDWARE
CACHARREAR EN ABIERTO

NMERO 86 P.V.P 6,95


CANARIAS P.V.P 7,05

CHIPS Y GADGETS
SOLUCIONES ABIERTAS PARA TRABAJAR CON HARDWARE
I Hardware educativo con Gnublin y Hummingbird I Acelerando rendimiento de vdeo con VA-API I Seguridad en dispositivos Android I Dando nueva vida a PDAs Palm

FUNCIONES
Trucos de magia con la infraestructura de Python

GIT PRCTICO
Descubre cmo el control de versiones te puede ayudar tambin a ti

Android + NFC
Camarero hay un RFID en mi sopa! y otras aventuras con Near Field Communication
00086 8 413042 594505

RECUTILS
La potencia de las bases de datos de texto

WWW.LINUX- MAGAZINE.ES

ano Loz ert Alb com RF. 123

ZSHELL
Ms all del entorno shell de Bash

4.95
Euros

DVD

es stica DVD tu DVD diagno s para es que e.e Si cre agazin nux-m evo. u n dvd@li o mos un ie v n e te

os a SO? l estado, escrben O U T a C r a a que DEFE rlo o p t en m

Arranque
Este DVD contiene dos versiones de OpenSUSE 12.2 Live y una de instalacin. Para empezar a usar tu Linux, inserta el DVD en el reproductor y reinicia 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. Despus, guarda los cambios y sal 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.2
E
l DVD de este nmero trae una de las distros legendarias y que ms se han orientado al usuario final. OpenSUSE (anteriormente SUSE a secas), siempre se ha destacado por su cuidada interfaz y su objetivo siempre ha sido ser lo ms amigable con el usuario posible, siendo una de la primeras distros en implementar un completo centro control grfico (conocido como YaST). OpenSUSE 12.2, aparte de todas las facilidades que ofrece, viene con novedades a nivel de sistema, seguridad y aplicaciones sobre las que puede leer en [1]. La versin que os traemos en el DVD es la conocida como Promo. Incluye una versin Live con KDE, otra con Gnome, adems de una versin completa instalable. Todas estas opciones, ms la posibilidad de eligir el idioma general del arranque, instalacin y sistema, estn disponibles en un sencillo men que vers nada ms arrancar el disco. Gracias a ello, puedes probar completamente la distro, comprobar su compatibilidad con tu hardware y, luego, si todo pinta bien, instalarlo con la seguridad de que todo te funcionar. I

RECURSOS
[1] Novedades de OpenSUSE 12.2:

http://en.opensuse.org/Features
[2] OpenSUSE en espanol:

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

WWW.LINUX- MAGAZINE.ES

Nmero 86

EDITORIAL

PIECITAS
s que publico que Trisquel, una distro hispana por la que sentimos especial predileccin, ha sido incluida en la lista de las nueve distros GNU/Linux ms libres de la FSF y esto desencadena dos controversias con dos de mis corresponsales en Facebook. Una de ellas, iniciada por Ismael Olea, se centra en la fragmentacin (segn Ismael sobran distros), y la segunda, iniciada por Niklas Andersson, se centra sobre lo que significa libre en el contexto de las licencias de software. Ambos debates son interesantes, pero, debido a restricciones de espacio resumir aqu la que tuve con Ismael, desarrollando mi razonamiento en ms o menos el mismo orden en que lo desarroll en el hilo (que se puede leer ntegramente en [1]). Otro da hablaremos de cmo evaluar el grado de libertad que otorgan las diferentes licencias y como, de hecho, son diferentes entre s, a pesar de calificarse todas como libres. Si se reprende a la comunidad GNU/ Linux por crear demasiadas distros, la pregunta que se ha de contestar a continuacin es cuntas distros debera haber entonces? 100, 4, 3, 1? Y, lo que es ms importante, quin tiene derecho a crear una nueva distro? Es la eterna pregunta de dnde se traza la lnea y quin es el guapo que se erige en autoridad para trazarla. Si uno admite los principios de la libertad de modificacin y distribucin, ha de admitir que va a haber mltiples distros. La libertad del software y la proliferacin de distros es una y la misma cosa. Permtanme una analoga que puede que ayude a aclarar mi postura: cree el lector que es criticable el derecho a la libertad de expresin? Posiblemente no. Pero puede que haya opiniones que le parecern deleznables. Sin embargo, sera realista tener

RECURSOS
[1] Debate sobre fragmentacin y calidad y cantidad de libertad segn la licencia: http://www.facebook.com/ PaulCambraBrown/posts/ 4240661266990?comment_id=4441 552&notif_t=comment_mention

libertad de expresin y que no se vertiesen una gran diversidad de opiniones, incluyendo las que son ofensivas para la mayora? Tendra sentido decir que disfrutamos de libertad de expresin si lo anterior no se diese? Hay algunos legisladores que as lo piensan. En algunos pases, incluyendo algunos tan avanzados como Alemania, la negacin del holocausto nazi es delito y en Espaa tenemos leyes que restringen la libertad de expresin en la forma de legislaciones en contra de la apologa del terrorismo o regulaciones sobre el derecho del honor de las personas. Puede que consideres que expresar opiniones odiosas, obscenas o que inciten a la violencia es un uso irresponsable de la libertad de expresin. Sin embargo, yo no lo veo as: yo lo veo como un uso de la libertad de expresin, as, sin calificativos. Lo que puedo ver criticable es el contenido de las opiniones, pero no que se ejerza la libertad de verterlas pblicamente. Volviendo a la percibida, pero falsa fragmentacin del software libre (sigue leyendo), no puedo criticar la proliferacin de distros porque es un uso de las cuatro libertades postuladas en las licencias consideradas libres, libertades que encuentro loables. A pesar de lo anterior, puedo criticar una distro particular por sus deficiencias, o porque reinvente la rueda, o por otros motivos intrnsecos al sistema en s. Pero, si he de ser coherente, no puedo criticar el hecho de que se haya creado, porque entonces estara diciendo que hay casos en los que las cuatro libertades no se deben aplicar, que hay algunas personas que tienen derecho a ejercer las cuatro libertades y otras que no, lo cual supondra una contradiccin con los principios bsicos del Software Libre. En todo caso, no acabo de ver el problema. Por un lado, en muchos casos la proliferacin de distros se debe o (a) necesidades muy particulares, motivo loable, en mi opinin tienes un problema concreto, le buscas una solucin y compartes tu trabajo para que otros con un problema similar puedan aprovecharlo. As se hacen las cosas en el Software Libre. (b) Dema-

siado tiempo libre. En este caso es problema del creador, no tuyo ni mo. Tambin hay gente que colecciona trenecitos elctricos. Cada uno hace con su tiempo lo que le da la gana, faltara ms. O (c) polticos megalmanos. En este caso el problema no tiene nada que ver con el Software Libre. Cada politicucho del tres al cuarto tambin construye su propio aeropuerto (a la mayora de los cuales no llegan aviones) y su propia facultad de medicina (para la cual no tiene estudiantes). Insisto, no es problema del Software Libre, el problema es que elegimos idiotas para que ocupen cargos pblicos. Nada nuevo que ver aqu. Es ms, la libertad de forkear es lo que le da poder al Software Libre, ayudando a progresar segn las cambiantes necesidades de los usuarios. Vase como Ubuntu ha sustituido a Debian como la distro ms popular (siendo la primera una derivada de la segunda) y como a su vez una derivada de Ubuntu, en este caso Mint, amenaza con destronar a la distro de Canonial como la ms popular entre los usuarios finales. Por otro, el mercado (si se puede llamar as) pone a cada uno en su lugar y, s, hay miles de distros, pero las que cuentan, es decir, las que tienen ms de un puado de usuarios, son, como mucho, diez: Debian y Red Hat (y derivadas) para servidores, Ubuntu, Mint, OpenSUSE para cliente, Fedora para powerusers, Archos y Gentoo para usuarios hardcore, Android, para mviles y me estoy quedando rpidamente sin distros. Me he quedado en nueve, un nmero que creo que es perfectamente razonable. De hecho, puedo contar muchas ms marcas y tipos de acondicionadores para el pelo en mi sper y no veo a nadie gritando FRAGMENTACIN! en el sector parafarI macutico.

Paul C. Brown Director

Nmero 86

WWW.LINUX- MAGAZINE.ES

A E N L N E O L E D O P

! A R O H A O C S O I U Q U T A N D E N E I E T L / B S I E . N E O N I P Z DIS MAGA X U N I L . W W W EN

CONTENIDOS Magazine sollte n 86 hier stehen COVER STORY Linux Schlagwort

PORTADA
10 Vdeo Rpido
Mejorando el rendimiento del vdeo con la decodificacin basada en hardware para acelerar el rendimiento utilizando la API Video Acceleration.

DESARROLLO
28 Placa de Aprendizaje
Para aprender sistemas Linux empotrados no necesitas ser un genio, como demuestra claramente la placa Gnublin. Si ests interesado en aprender a leer sensores, conmutar interruptores y LEDs en un ARM Linux, esta pequea mquina es perfecta para tu investigacin.

40 Llamada Cercada
Android Gingerbread introdujo el soporte de Near Field Communication, dando as un impulso al pago y venta de entradas va mvil, pero con Ice Cream Sandwich y el nuevo Jelly Bean se elevan las apuestas.

18 Bloquea tu Android
El an experimental pero prometedor entorno de trabajo SEAndroid ofrece control de acceso obligatoro tipo SELinux para el universo Android.

32 Colibr
El Hummingbird combina las ideas de Arduino con los juguetes de construccin para traer el concepto de construye tu propio hardware al mbito educativo.

44 Funcional
Al igual que otros lenguajes, Python contiene una serie de caractersticas que pueden resultar contraintuitivas o hacerle la vida difcil a los novatos.

PRCTICO
36 Cara a Cara 22 Hardware Resucitado
No te desesperes con tu viejo Palm pasado de moda. El software de cdigo abierto puede devolverle la vida a estos dispositivos aportndoles nuevas funcionalidades y de paso, nos podremos ahorrar una buena cantidad de dinero. Cooperative Linux ofrece una interesante alternativa para ejecutar Linux en un sistema Windows sin que haga falta virtualizar.

49 Recuerda Esto
Evernote, un bloc de notas digital muy estructurado, replica rpidamente ideas apuntadas y captura pginas web a diferentes lugares y dispositivos. Una API da soporte al acceso controlado por programas a travs de la librera Thrift de Facebook.

ADMINISTRACIN
LINUX MAGAZINE
03 04 81 81 82

55 Observando el Trfico
Cuando se trata de tareas diarias tales como la monitorizacin del trfico de red, los administradores deberan elegir una herramienta que sea lo suficientemente funcional y no demasiado complicada de manejar.

DVD Linux Magazine Editorial Eventos Informacin de Contacto Prximo Nmero

Nmero 86

WWW.LINUX- MAGAZINE.ES

ADMINISTRACIN
56 Aventamiento
Los atacantes imponen un alto precio en nuestros limitados recursos. Veamos algunas maneras de separar lo bueno de lo malo.

LINUX USER
69 Sin Desvos
Con unos cuantos comandos de la shell, Recutils permite administrar registros grandes en bases de datos basados en texto.

HARDWARE
58 Centro de Control
Podemos manejar casi cualquier dispositivo elctrico/electrnico de nuestro hogar, sin necesidad de estar all para activarlo.

LINUX USER
62 Invasin Z
Pocos entornos shell tienen la versatilidad ni ofrecen la variedad de funcionalidades de zsh, la Shell Z.

73 Pantallazos
Mostramos cmo usar la herramienta Scrot para realizar capturas de pantalla desde la lnea de comandos.

COMUNIDAD
76 Konsultorio
Klaus Knopper, el creador de Knoppix, vuelve un mes ms dispuesto a ayudar a nuestros atribulados lectores. En este nmero: Consejos sobre CentOS y Usar Wubi.

65 Control de Versiones
Git es un potente sistema de control de versiones con una curva de aprendizaje bastante pronunciada. Vamos a mostrar unos cuantos principios bsicos y rdenes para ayudar a utilizarlo de una manera prctica.

80 Estndar
Jon pide a las diferentes distros y proyectos de escritorio que lleguen a un acuerdo sobre su aspecto, comportamiento y funcionamiento.

talles e d s para m 3 0 p r Ve

WWW.LINUX- MAGAZINE.ES

Nmero 86

PORTADA Hummingbird Board

Un Arduino orientado a la educacin

COLIBR
El Hummingbird combina las ideas de Arduino con los juguetes de construccin para traer el concepto de construye tu propio hardware al mbito educativo. POR PAUL C. BROWN
ktde sign - 123 m RF.co

cnicamente Hummingbird [1] no es un Arduino, pero tampoco pretende serlo. En algunos aspectos es algo ms: viene con un completo abanico de complementos modificados a su medida y la claridad de su diseo hace mucho menos empinada la curva de aprendizaje. Pero en otros aspectos, algo menos: el ecosistema Arduino es indudablemente mucho ms rico en expansiones y la variedad de los dispositivos en los que se puede integrar es tambin mucho mayor. Pero las comparaciones son odiosas, sobre todo para dos sistemas orientados a pblicos diferentes. Mientras que Arduino sirve para el aficionado adulto o, incluso para aplicaciones profesionales, el Hummingbird est claramente dirigido al sector de la educacin, concretamente a los nios de primaria y de los primeros aos de secundaria. De hecho, el kit Hummingbird, que se puede adquirir completo en [1] por 199 dlares, viene con todo lo necesario para empezar, incluyendo LEDs, motores, servos y sensores. En el kit con el que nos hicimos nosotros, incluso tuvieron el detalle de incorporar una fuente de alimentacin adaptada a los enchufes espaoles. Tambin se puede comprar por piezas e ir adquiriendo ms componentes gradualmente a medida que se vayan necesitando, tal y como muestra la Tabla 1.

adores recomiendan dos entornos: el Programador Virtual y Snap! para Hummingbird.

Programador Visual
El programador visual (PV) es la manera original que concibieron los desarrolladores del kit para interactuar con l. Para arrancar el PV la primera vez, lo recomendable es visitar [2] y pulsar en el botn Launch y esperar. El programa en s es un fichero JNLP, es decir un archivo Java Network Launching Protocol. Este tipo de archivo contiene aplicaciones que, si bien pueden arrancarse desde el navegador, han de ejecutarse en el Java Web Start. En Firefox, puede que la primera vez que nos encontremos con un fichero de estas caractersticas, tengamos que escoger Abrir con del dilogo y buscar nuestro ejecutable de javaws (normalmente en /usr/bin/ javaws, pero si no estamos seguros, utilizamos which javaws desde la lnea de comandos para descubrir su localizacin). Es buena idea marcar la casilla de verificacin Hacer esto automticamente para que javaws arranque cada vez que deseamos utilizar el programador.

Coser y Cantar
Conectar componentes al Hummingbird es realmente sencillo. La placa tiene en los bordes varios bloques de terminal de color verde claramente etiquetados para cada uno de los tipos de componentes que se pueden conectar (Figura 1). Cada bloque terminal cuenta con una serie de agujeros en los cuales puedes insertar los extremos de los cables pelados del componente (Figura 2). Un poco ms arriba de cada agujero hay una pestaa con una hendidura. Para conectar un componente, se pulsa la pestaa hacia abajo utilizando el destornillador proporcionado en el kit bsico y se inserta el cable en el agujero. Soltamos la pestaa y el cable queda firmemente conectado a la placa. Para desconectar el componente, se vuelve a pulsar la pestaa y se extrae el cable. Una vez hemos conectado los componentes de hardware, toca programarlos. Para ello, y siguiendo en su la lnea educativa, los cre-

Tabla 1: Precios
Kit Controller Motores LEDs Contenido Tarjeta Hummingbird, cable USB, adaptador de corriente y destornillador. 4 servos HS-311, 4 cables para servos y 2 motores DC. 8 LEDs de un slo color, 2 LEDs RGB y 3 motores de vibracin. Sensor de luz, temperatura, distancia y sonido, un dial rotatorio, dos cables y un resistor. Precio $89 $59 $29

Sensores

$49

32

Nmero 86

WWW.LINUX- MAGAZINE.ES

Hummingbird Board PORTADA

Figura 1: Los bloques terminal estn etiquetados para indicar qu componente se puede conectar dnde.

Figura 2: Los bloques terminal facilitan la conexin de componentes.

Tambin podemos descargar el fichero jnlp del PV desde [3] y ejecutarlo simplemente abrindolo en un navegador. Esto nos permitir usar el entorno sin tener que visitar el sitio de Hummingbird. Sin embargo, seguiremos necesitando conexin a Internet, ya que el programador enlaza a varios mdulos que descarga en el arranque. Y aqu nos topamos con el primer problema de este entorno: la primera vez que arranca es muy lento, precisamente por tener que descargar tantos mdulos. Hay que indicar que los arranques subsiguientes son algo ms veloces, pero no mucho, por tanto: paciencia. En el caso de que el PV no identifique la placa durante el arranque, comprobaremos que sta est conectado a la corriente con el cargador y al ordenador a travs del cable USB. Igualmente tenemos que comprobar el estado de los permisos del bus USB al cual se conecta la placa (vase el cuadro Permisos, permisos, permisos).

Con el entorno arrancado, veremos una ventana como la de la Figura 3. Esto es el Constructor de Expresiones. En el panel de la izquierda, tenemos un diagrama de la placa. Cada uno de los grupos de bloques terminal vienen etiquetados igual que en la placa fsica y cada bloque terminal tiene al lado una casilla de verificacin. Marcando la casilla, se activa el bloque y se nos permite establecer valores para interactuar con los componentes. Por ejemplo, si tenemos conectado un LED RGB al bloque 1 del grupo de los TriColor LEDs y marcamos la casilla correspondiente en el programador, aparece un panel con deslizadores para cada uno de los colores que el LED puede mostrar. Moviendo los deslizadores (o escribiendo un valor entre 0 y 255 en la casilla a la derecha de cada deslizador) podemos establecer la intensidad de la luz roja, verde y azul que emite el LED. Lo mismo podemos hacer con motores, servos y LEDs monocromos.

Esto en s ya es bastante divertido y puede proporcionar a un nio horas de diversin, pero lo mejor es que, jugueteando con el Constructor de Expresiones, estamos inicindonos en la creacin de los bloques para la programacin de la placa y sus componentes. La programacin con PV consta de dos partes: la creacin de expresiones, que se realiza en Constructor de Expresiones que hemos visto, y lo que es la programacin propiamente de scripts (denominados Secuencias), cosa que se realiza en el Constructor de Secuencias encadenando las expresiones. Para ilustrar cmo se hace, vamos a crear un script que haga parpadear tres veces el componente verde de un LED RGB con una cadencia de un segundo, es decir, se ilumina el componente verde durante un segundo, luego se apaga durante un segundo y as hasta tres veces. El primer paso, como hemos mencionado, consiste en crear las expresiones.

Figura 3: Estado inicial del Programador Visual.

Figura 4: Secuencia que hace parpadear el componente verde del LED.

WWW.LINUX- MAGAZINE.ES

Nmero 86

33

PORTADA Hummingbird Board

Conectamos un LED RGB al bloque 1 del grupo Tri-Color LEDs y marcamos la casilla correspondiente en el Constructor de Expresiones. Con todos los deslizadores en cero, pulsamos en el botn Save en el ngulo superior del panel. Le damos un nombre a nuestra expresin (por ejemplo, Apagado) y aparecer la expresin en la lista a la derecha del panel principal. Ahora pulsamos en el botn New, confirmamos que queremos crear una nueva expresin y la representacin de la placa vuelve a su estado original. De nuevo pulsamos en la casilla de nuestro LED y movemos el deslizador del color verde al mximo. Pulsamos en Save y guardamos la expresin con el nombre Verde. Ahora pulsamos en la pestaa Sequence Builder para empezar a construir nuestro programa. Veremos que tambin en esta pestaa disponemos de nuestras expresiones, que podemos arrastrar hasta el espacio de trabajo para crear una secuencia. Para lo que nosotros queremos hacer, del cajetn Structures del ngulo inferior derecho, escogeremos un Counter y lo colocaremos en el espacio de trabajo (un counter hace las veces de bucle). Una vez colocado, pulsamos en el candado y

podremos desbloquear el nmero de iteraciones del bucle. Cambiamos el uno por un tres. Ahora arrastramos las expresiones Verde y Apagado al interior del bucle para que quede como en la Figura 4. Para probar nuestro programa, pulsamos en botn Play en la parte superior derecha del panel principal. As que parece Navidad. Enhorabuena. Naturalmente, podemos guardar nuestro trabajo utilizando el botn Save y empezar otro proyecto con el botn New. A pesar de sus buenas ideas, el Programador Visual se queda bastante corto. El tener que arrancarlo estando conectado a Internet y su lentsima carga son otras dos desventajas de este entorno. Est bien para experimentar y comprobar que todo funciona, pero poco ms. Ahora bien, Snap para Hummingbird es otra historia

Figura 5), ayudan a iniciarse en la programacin proporcionando una serie de bloques similares a la de los juegos de construccin que pueden interconectarse entre s. Por ejemplo, para realizar un script que hiciese lo que vimos en el apartado anterior, es decir, hacer parpadear el elemento verde de un LED RGB tres veces con una cadencia de un segundo, conectaramos bloques de la siguiente manera:

Snap
Adems del programador visual, Hummingbird puede programarse utilizando Snap [4], una implementacin de Scratch [5] para web. Para quien no est familiarizado con este tipo de interfaces (ver

Como se puede ver, el resultado es bastante ms compacto y legible que con el Programador Visual, adems de que Snap proporciona muchas ms herramientas y es ms responsivo. Sin embargo, para poder utilizar este interfaz, hay que hacer unas cuantas cosas antes. El primer paso es descargarse el servidor de [6] y descomprimir el archivo en el directorio donde los vayamos a alojar. Para esto

Permisos, permisos, permisos...


Un problema tpico al intentar interactuar con Hummingbird es que el IDE, sea el Programador Visual, Snap o cualquier otro, no vea la placa o, lo que es ms comn, no pueda escribir en ella (es decir, no pueda pasarle datos), impidiendo que se ejecuten los programas que creamos. Para determinar si este es el caso, primero hemos de saber qu bus USB se ha asignado al Hummingbird. Para ello podemos utilizar lsusb: $ lsusb Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser Bus 001 Device 004: ID 0461:4d0f Primax Electronics, Ltd Bus 002 Device 006: ID 2354:2222 Bus 002 Device 005: ID 5986:0143 Acer, Inc El candidato ms probable en esta caso es el bus 002 del dispositivo 006. De hecho, cuando desenchufo el Hummingbird, este dispositivo desaparece. Para ver si los permisos son correctos (recordemos que nos tienen que permitir leer y escribir al bus), escribiremos $ ls -l /dev/bus/usb/002/006 crw-rw-r-- 1 root root 189, 133 sep 20 18:20 /dev/bus/usb/002/006 Como vemos, pertenece a root y slo root puede escribir al dispositivo, ya que al tercer terceto de permisos, el de other (otros) usuarios, le falta el permiso de write (escritura). Para solucionar el problema, podemos cambiar los permisos a mano con chmod sudo chmod a+w /dev/bus/usb/002/006 o, si queremos que los permisos se establezcan correctamente cada vez que enchufamos la placa al ordenador, podemos escribir una regla udev para que lo haga por nosotros. /etc/udev/rules.d/55Para ello, creamos el fichero hummingbird.rules e introducimos la siguiente regla: SUBSYSTEM==usb, ATTR{idVendor}==2354, ATTR{idProduct}==2222, MODE=0660, GROUP=nombre_grupo Los atributos idVendor e idProduct son los que nos da la instruccin lsusb que hemos visto ms arriba. Mode establece los permisos, en este caso, lectura + escritura para el propietario y el grupo que se especifica en GROUP, que puede ser el personal en mi caso paul, o uno que se cree por ejemplo hummingbird, para todos aquellos que vayan a trabajar con la placa. Para probar el script udev, hemos desenchufar la placa y volver a enchufarla y comprobar los permisos del bus USB. Si por ejemplo el dispositivo es el 009 del bus 002, si se examina con ls -l, $ ls -l /dev/bus/usb/002/009 crw-rw---- 1 root nombre_grupo 189, 136 sep 20 19:30 /dev/bus/usb/002/009 vemos que tanto (root) y el grupo designado tienen permisos de escritura. Para ms informacin sobre Udev y cmo configurar hardware que se enchufa en caliente, consulta [8].

34

Nmero 86

WWW.LINUX- MAGAZINE.ES

Hummingbird Board PORTADA

lares por ah y un estudiante que haya tenido contacto con uno, inmediatamente se encontrar a gusto.

Processing y Java
Hummingbird tambin contempla la programacin hardcore, con cdigo escrito a mano en un editor de textos. Para ello se utiliza o Java o Processing (un lenguaje del cul ya hablamos en [7]), pero la complejidad de estas dos soluciones sobrepasa los objetivos de este artculo. Adems, de alguna manera su uso da al traste con las intenciones didcticas del Hummingbird, al empinar excesivamente la curva de aprendizaje.

Figura 5: Snap para Hummingbird es un entorno mucho ms flexible y agradable que el Programador Virtual.

Conclusiones
A pesar de no ser tan verstil como Arduino y de tener algunos problemas con las interfaces visuales que estn an un poco inmaduras, Hummingbird cubre un sector de la poblacin que otras propuestas no toca: el de los escolares de primaria y, apurando, de los primeros aos de secundaria. Su sencillez y la claridad de su diseo son sus mejores bazas, hacindolo ideal para iniciar a nios a partir de los 7 aos en la construccin de robots y otros dispositivos elecI trnicos.

no hacen falta permisos especiales y se piezas predeterminadas para interacpuede crear una carpeta que cuelgue del tuar con el entorno de Snap. directorio personal. Control contiene piezas de control de Nos introducimos en el directorio que se flujo (bucles, condicionales, etc.). crea en descompresin y copiamos el fichero Sensing contiene piezas que pueden libhidapi32.so a /usr/lib/ (en el caso de que leer datos de los sensores del Humnuestro sistema sea de 32 bits) o el fichero mingbird. libhidapi64.so a /usr/lib64/ (en el caso de Operators contiene piezas para la ejecuque de sea de 64). Alternativamente, podecin de operaciones aritmticas, lgimos crear un enlace simblico en el directocas, etc. rio apropiado. Y Variables contiene piezas que permiA continuacin podemos arrancar el serten asignar valores a variables, crear lisvidor ejecutando el script LaunchSnap.sh y, tas, leer su longitud, etc. una vez hecho esto, podemos dirigir nuestro Con todo, Snap para Hummingbird propornavegador a la direccin http://127.0.0. ciona una completa caja de herramientas 1:3000 y veremos la interfaz. para realizar todo tipo de experimentos con Las diferentes piezas que podemos utiliel kit. zar en nuestros programas (incluyendo los Snap es una excelente solucin para que vienen por defecto con Snap) se Hummingbird: es atractivo, flexible, muy encuentran en el panel de la izquierda y escalable (el proyecto original invita a los podemos acceder a diferentes categoras de desarrolladores a expandir el lenguaje, intepiezas pulsando en los botones del ngulo grando bloques que sean relevantes para sus superior izquierdo. propios proyectos) y, lo mejor de todo, es Las diferentes categoras son: familiar: ya existen mltiples interfaces simi Motion contiene, entre las piezas predeterminadas para el control de la tortuga de Snap, bloques que controlan motores, servos y los motores de vibracin. Looks contiene piezas que controlan los LEDs. Sound y Pen Figura 5: Nuestros pequeo experimento funciona perfectamente: el slo contienen LED tricolor parpadea verde tres veces.

RECURSOS
[1] La placa Hummingbird: http://www. hummingbirdkit.com [2] Programador visual: http://www. hummingbirdkit.com/?q=content/ visual-programmer [3] Fichero JNLP del Programador Visual: http://artsandbots.com/ visualprogrammer/ visualprogrammer.jnlp [4] Snap: http://byob.eecs.berkeley.edu/ #snap4.0 [5] Scratch Una herramienta ldica de iniciacin a la programacin de Mximo Prudenci, Linux Magazine http://www. 28, pag. 79: linux-magazine.es/issue/28/ 078-082_ScratchLM28.crop.pdf [6] Snap para Hummingbird: https://dl. dropbox.com/u/9303915/ SnapHummingbirdLinux.zip [7] Figuras Animadas Creacin de animaciones grficas con Processing de Kristian Kissling, Linux Magazine 48, pag. 54: http://www.linux-magazine. es/issue/48/ 054-057_ProcessingLM48.pdf [8] Fcil Acceso Gestin dinmica de dispositivos con Udev, HAL y D-Bus de Eric Amberg, Linux Magazine 46, pag. 35: http://www.linux-magazine. es/issue/46/035-038DetHardLM46. pdf

WWW.LINUX- MAGAZINE.ES

Nmero 86

35

Ms del 30% de descuento respecto al precio de portada: Consigue 12 nmeros por 5490 Euros y todos los DVDs Gratis!

A diferencia de otras publicaciones, Linux Magazine no llenar tu buzn de recordatorios para que renueves tu subscripcin. sta se renovar automticamente cada ao. Recibirs una confirmacin aproximadamente 30 das antes del final de tu periodo de subscripcin, pero no se requiere que hagas nada para seguir suscrito.

No te pierdas Linux Magazine nunca ms! La subscripcin te asegura que recibas los conocimientos Linux de ms alta calidad en tu domicilio cada mes.

Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripcin en cualquier momento. Te abonaremos el precio de todos los nmeros que no hayas recibido. Sin preguntas, sin fechas de cancelacin, sin problemas.

Linux Magazine es algo ms que una revista de Linux. Patrocinamos grupos, congresos, proyectos y eventos relacionados con el Software Libre. Suscribindote a Linux Magazine garantizas que podamos seguir apoyando al Software Libre all donde haga falta.

PRCTICO Cooperative Linux

Ejecutando Cooperative Linux junto a Windows


Tomasz Trojanowski, 123RF

Cara a Cara

Cooperative Linux ofrece una interesante alternativa para ejecutar Linux en un sistema Windows sin que haga falta virtualizar. POR HENRY NESTLER Y GUILHERME CHEHAB
a mayora de las opciones para ejecutar Linux en Windows se basan en algn tipo de tecnologa de virtualizacin. stas han mejorado a lo largo de los aos, pero siguen imponiendo una disminucin del rendimiento. Cooperative Linux (o coLinux) ofrece una alternativa interesante y eficiente: una versin en modo de usuario del ncleo Linux que se ejecuta de forma nativa en Windows u, de manera opcional, se ejecuta como un servicio de Windows.

Una cuestin de Arquitectura


Tanto Unix como Windows tienen una arquitectura en capas. Los componentes de software slo pueden utilizar los servicios proporcionados por los componentes de su misma capa o de una inferior. De la misma manera, un componente nicamente puede proporcionar servicios a otros mdulos de su misma capa o una superior.

Si puedes arreglrtelas para construir un componente de software que imite el comportamiento exacto de cualquier capa, las capas superiores no sern capaces de distinguir el componente de la capa a la que sustituye. Esta sencilla tcnica da lugar a diferentes tipos de estrategias para injertos, mezclas y sistemas operativos virtualizados. Lo que hace diferentes a estas soluciones es a qu capa trata de imitar y a cuntas capas inferiores implementa o abstrae. Algunas de las opciones incluyen: Virtualizacion completa del hardware El software trata de sustituir todo el hardware de la plataforma destino y todos los componentes de hardware se implementan en el software que emula el comportamiento. Si puedes asegurar que todo el hardware emulado sea conocido por el ncleo, puedes engaar al kernel en funcionamiento sin ningn problema. Estas soluciones interpretan el juego del cdigo

ensamblador de la CPU y emulan su comportamiento. Esta tcnica tiene la ventaja de proporcionar una total separacin entre el sistema anfitrin (donde est en marcha el software de virtualizacin) y el husped (que se ejecuta en la capa de virtualizacin). Incluso es posible emular una arquitectura completamente diferente, como es el caso de productos sorprendentes, como Bochs, que emula la arquitectura x86, Gemu, que puede emular x86, ARM, PowerPC y MIPS y Hrcules, que puede emular un mainframe IBM. A pesar de que este enfoque conduce a algunas situaciones realmente divertidas, como correr los viejos juegos de DOS o de Amiga en dispositivos Android o ejecutar una copia de la aplicacin mainframe de tu empresa, emular la CPU afecta gravemente al rendimiento. Virtualizacin moderada del hardware Para minimizar la prdida de rendimiento se emula casi todo el hardware, con algunas excepciones. En este enfoque, slo se emula una parte del conjunto de instrucciones de la CPU (por ejemplo, la parte que se ocupa del modo protegido). La mayora del software actual de virtualizacin cae en esta categora, por ejemplo, VirtualBox, VMware y Xen. Por una parte, estas soluciones pierden la capacidad de ejecutar software en plataformas de hardware diferentes pero, por otra, se puede conseguir un nivel de rendimiento mucho ms cercano al que se puede esperar con hardware dedicado. Los tres escenarios alternativos incluyen: virtualizacin completa, en la que se emulan todas las instrucciones de la CPU en modo protegido, paravirtualizacin, en la que se altera el ncleo anfitrin para que llame al software de virtualizacin con llamadas de sistema especficas (hiperllamadas) y virtualizacin asistida por hardware, que se logra cuando la CPU anfitrin proporciona un juego especfico de instrucciones para crear la abstraccin necesaria para las instrucciones de emsamblador en modo protegido (como con los juegos de instrucciones extendidos Intel VT y AMD-V). User Mode Kernel El ncleo del sistema cliente es portado para correr en la capa de modo de usuario. Todas las interfaces que deben dirigirse al hardware se sustituyen por llamadas del sistema al kernel del sistema anfitrin. coLinux usa este enfoque, como lo hace User Mode Linux (UML). La princi-

36

Nmero 86

WWW.LINUX- MAGAZINE.ES

Cooperative Linux PRCTICO

pal ventaja es que esta solucin no trata de emular cualquier componente de hardware, sino que slo utiliza los servicios regulares disponibles para cualquier aplicacin normal de usuario. La principal desventaja es que la adaptacin de un ncleo para ejecutarse como una aplicacin de usuario no es tarea sencilla y mantenerla al da con un kernel como Linux, en rpida y constante evolucin, es muy difcil. Llamadas de sistema o abstracciones del ncleo Los componentes que responden a las llamadas al sistema del modo usuario se reemplazan con componentes que acceden al anfitrin. Este es el caso de Cygwin, que permite ejecutar aplicaciones de Linux directamente en Windows y de Wine, que ejecuta aplicaciones Windows sobre Linux. En algunos casos, estas soluciones pueden llegar a necesitar una adaptacin de los programas que se van a ejecutar en estas capas. Cuando la adaptacin es necesaria, los programas tienen que ser recompilados para usar las libreras de reemplazo en modo usuario. Aunque sin duda es la forma ms fcil, se pueden presentar algunas limitaciones de compatibilidad debido a que las bibliotecas de nivel usuario implementan muchas funciones e imitarlas todas exactamente es casi imposible (como a menudo le pasa a Wine). En Cygwin, todas las bibliotecas se vuelven a compilar para la plataforma anfintrin de destino para utilizar las bibliotecas de compatibilidad de Cygwin.

los segmentos de tiempo al otro sistema. Entre el sistema Windows y el Linux hay un componente muy pequeo (escrito en cdigo ensamblador) llamado conmutador, que guarda y restaura todos los registros de la CPU para ambas partes. El conmutador se encuentra en la passage page, que es la nica pgina que existe en el momento de la conmutacin. Este enfoque est diseado para minimizar el efecto de los cambios de contexto del ncleo UML, que es el principal problema de rendimiento, especialmente con la alta demanda de E/S de las aplicaciones Linux clientes. Para gestionar la memoria, coLinux usa una pseudo-memoria fsica autocreada. Esta memoria toma la forma de pginas de memoria dispersas, que los clientes Linux ven como un sencillo bloque de memoria lineal. Este es el hack ms importante del kernel de Linux. Todo el hardware real existente slo se puede acceder desde el lado del anfitrin de Windows. As que en el kernel Linux, la mayora de los controladores de hardware estn desactivados. Para acceder al hardware virtual, como los discos duros, la consola, el teclado o la red, coLinux usa dispositivos virtuales y el correspondiente controlador bajo Windows.

Aplicaciones
El tpico usuario de coLinux planea mudarse a Linux, pero tiene demasiados programas que se ejecutan en Windows. A menudo, el cambio total a Linux sera ms difcil para el usuario, por lo que instala coLinux para tener ambos entornos de ejecucin en sus estaciones de trabajo. Otro grupo de usuarios coLinux son desarrolladores de sistemas embebidos para sistemas como routers y estaciones multimedia. La mayora de las herramientas para estos sistemas funcionan mejor en un entorno Linux real y una instalacin de coLinux sin graficos es rpida y con la potencia suficiente para ejecutar el entorno del compilador cruzado. Por ltimo, algunos usuarios instalan un entorno coLinux para agregar estaciones de trabajo normales a clusteres Mosix en escenarios de computacin distribuida. En este caso, coLinux se ejecuta como un servicio en segundo plano que es capaz de convertirse en parte de la configuracin del Mosix de la empresa.

Historia de coLinux
Cooperative Linux fue creado por Dan Aloni en 2003. En aquel entonces, ya haba trabajado en una adaptacin a Linux para ejecutar UML usando Cygwin. El objetivo era crear una versin ligera del kernel de Linux que pudiera proporcionar una funcionalidad suficiente para hacer funcionar una distribucin Linux sin modificar en un entorno Windows. El proyecto est actualmente mantenido por Henry Nestler, que coordina los esfuerzos de una comunidad de desarrollo ms amplia. La idea principal de coLinux es que ambos sistemas operativos deberan tener pleno acceso a toda la CPU sin la tpica sobrecarga que necesita la emulacin. Para que esto sea posible, coLinux utiliza un mecanismo muy simple: cuando un sistema operativo est inactivo ofrece la mayora de

para que puedas familiarizarte con el sistema y sus principales caractersticas. Comienza por comprobar las instrucciones disponibles en la pgina web del proyecto [1]. Una configuracin sencilla necesita que el equipo tenga lo siguiente: Windows 7 para el sistema anfitrin (de momento, slo es compatible con la versin de 32 bit). 7 Zip [2] o otro compresor que pueda descomprimir archivos .7z. Xming 6.9.0.31 [3]. Tambin tendrs que descargar los siguientes paquetes: coLinux 0.7.9 (coLinux-0.7.9.exe [4]). Debian-6.0.1-squeeze.7z [5] (a una imagen de Debian 6 pre-instalada, con una seleccin de paquetes mnima). PulseAudio 0.9.6 El servidor para Windows [6]. Lo primero que hay que hacer es ejecutar el instalador coLinux 0.7.9 (coLinux-0.7.9.exe) y aceptar todos los valores predeterminados. El asistente de instalacin te pedir que aceptes el acuerdo de licencia: haz clic en I Agree para continuar y despus contesta las siguientes indicaciones. Elige c:\coLinux como la ruta de la instalacin. No utilices una imagen integrada y elige la opcin de No download. TAPWin32 te alertar con un cuadro de seguridad rojo si deseas instalar un controlador sin firmar en Windows. Selecciona Install driver software anyway. A continuacin, extrae los archivos de imagen de Debian 6.0.1-squeeze.7z en la misma ruta que has instalado coLinux (c:\coLinux). El archivo expandido debe ocupar aproximadamente 2 GB. Edita squeeze.conf en un editor de texto para incluir las configuraciones en el Listado 1 [7]. Para configurar el dispositivo de red Tap para que permita que la red con el host funcione, abre Network and Sharing Center,

Listado 1: Cambios en squeeze.conf


01 kernel=vmlinux 02 cobd0=rootfs_2gb.img 03 cobd1=swap_128mb.img 04 root=/dev/cobd0 05 ro 06 initrd=initrd.gz 07 mem=1024 08 eth0=slirp 09 eth1=tuntap 10 exec0=pulseaudio-0.9.6\pulseaudio.exe

Instalacin y Configuracin
Si planeas instalar coLinux, es una buena idea empezar con una instalacin sencilla

WWW.LINUX- MAGAZINE.ES

Nmero 86

37

PRCTICO Cooperative Linux

Figura 2: Configurar Xming para acceder al cliente Linux a travs de XDMCP. Figura 1: Configuracin del adaptador TAP-Win32 para una red entre el anfitrin y los sistemas invitados.

luego Change adapter settings y selecciona Properties para el TAP-Win32 Adapter V8 (coLinux). Selecciona Internet Protocol Version 4 y a continuacin, establece la direccin IP esttica a 192.168.1.1 y la mscara de red a 255.255.255.0, como se muestra en la figura 1. Ejecuta Xming-6-9-0-31-setup.exe y acepta todos los valores predeterminados. No arranques Xming desde el instalador, despus ejecuta Xlaunch, que lo encontrars bajo All Programs | Xming. Las opciones del asistente deben incluir One Window, Open session via XDMCP y Connect host to: 192.168.1.2. Guarda la configuracin en el escritorio como coLinux.xlaunch (Vase la Figura 2). La primera vez que se inicia Xming, el firewall de Windows se abrir. Ahora tienes que habilitar Xming para redes privadas y pblicas, extrae todos los archivos de pulseaudio-0.9.6.zip en la ruta c:\coLinux\pulseaudio-0.9.6 y crea un nuevo archivo de texto en este directorio, como se muestra en el Listado 2. Ahora, guarda el archivo como default.pa. Recuerda seleccionar Save type as: All files y no aadir una extensin .txt. Para iniciar el sistema operativo cliente, ejecuta squeeze.bat. El firewall de Windows aparecer cuando se inicie PulseAudio. Activa la casilla de privado y pblico. Cuando la consola de invitado se abra (Vase la Figura 3), inicia la sesin con la cuenta de root, ya que todava no hay una contrasea. Para configurar el sistema Debian Linux cliente, sigue los pasos que se muestran en el Listado 3.

A continuacin, abre el archivo /etc/network/interface en un editor y aade las lneas que se muestran en el Listado 4. Abre /etc/kde4/kdm/kdmrc en un editor, localiza la sesin [Xdmcp] y cambia Enable=false a Enable=true. Edita /etc/ asound.conf y utiliza los valores que se muestran en el Listado 5. Es necesario reiniciar el equipo invitado con la orden reboot. Una vez que se haya rei-

niciado, haz doble clic en el icono del escritorio llamado colinux.xlaunch para que puedas ver la pantalla de inicio de sesin de KDE. A continuacin, introduce el nombre de usuario y contrasea que aadiste con la orden adduser en el Listado 3. Por ltimo, utiliza el botn de inicio de KDE para ejecutar cualquier programa Linux (Figura 4) y usa la opcin shutdown de la consola coLinux o del men de KDE para apagar el sistema Linux limpiamente o escribe halt en el prompt.

Listado 2: c:\colinux\pulseaudio-0.9.6\default.pa
01 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24;10.0.2.0/24 02 load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24;10.0.2.0/24 03 add-autoload-sink output module-waveout sink_name=output 04 set-default-sink output

Listado 3: Configurando el cliente


01 passwd root # Crea una contrasea de root --> No saltarse este paso! 02 adduser USERNAME # Crea un usuario 03 04 apt-get update # Preparate para instalar nuevos paquetes 05 06 apt-get -y install x-window-system # Instalar xorg 07 apt-get clean # Limpiar la cach apt 08 apt-get -y install openssh-server # Si se quiere acceso ssh 09 apt-get -y install kdm # Poner XDMCP Display Manager 10 apt-get -y install alsa # Instalar ALSA sound 11 apt-get -y install libpulse0 # Poner soporte para Pulse Audio 12 echo default-server=192.168.1.1 >> /etc/pulse/client.conf 13 apt-get -y install libasound2-plugins 14 apt-get clean # Limpiar la cach apt otra vez para ahorrar espacio 15 echo 192.168.1.1 >> /etc/kde4/kdm/Xaccess # Permite la conexin XDMCP

Listado 4: Fragmento de /etc/network/interface


01 auto eth1 02 iface eth1 inet static 03 address 192.168.1.2 04 network 192.168.1.0 05 netmask 255.255.255.0 06 broadcast 192.168.1.255

38

Nmero 86

WWW.LINUX- MAGAZINE.ES

Cooperative Linux PRCTICO

Listado 5: /etc/asound.conf
01 pcm.!default { 02 type pulse 03 } 04 05 ctl.!default { 06 type pulse 07 } 08 09 pcm.pulse { 10 type pulse 11 } 12 13 ctl.pulse { 14 type pulse 15 }

adems, se pueden crear varias copias de las imgenes de Linux y sus configuraciones para que puedas trabajar con tantos servicios Linux simultneos como necesites y que tu hardware pueda manejar. Para obtener ms informacin, consulta la documentacin en el sitio web del proyecto [8]. Algunas distribuciones de Linux han encapsulado los pasos anteriores con formularios predefinidos de una forma prctica. Si ests interesado, puedes ver estos proyectos en lnea [9] [11].

El Futuro

Cooperative Linux tiene dos limitaciones principales. El asunto ms complicado es Otros Escenarios que originalmente coLinux fue desarrollado El anlisis anterior present un escenario de para trabajar con sistemas de 32 bits tanto instalacin de coLinux muy sencillo, pero en el anfitrin como en el cliente. La mayohay disponibles muchas otras opciones. Por ra de las instalaciones Windows ms ejemplo, es posible poner en marcha una recientes son de 64-bit y todava no hay verinstalacin de Linux que resida en una parsin de coLinux para 64-bit. ticin fsica de un sistema de arranque dual. Esta limitacin se aplica tambin al sisDe esta forma, el usuario puede acceder a tema operativo cliente, que tambin est los archivos o programas en la particin de restringido a 32 bits. Aunque se ha iniciado Linux sin tener que reiniciar el equipo. el trabajo sobre la implementacin de una Tambin puedes hacer que coLinux se versin de coLinux de 64-bit, actualmente el ejecute como un servicio de Windows y, esfuerzo est estancado debido a la falta de desarrolladores que puedan dedicar tiempo y esfuerzo a esta importante tarea. La ausencia de una consola grfica nativa obliga al usuario a ejecutar una herramienta de terceros para acceder a una GUI Figura 3: La consola Cooperative Linux. Linux (en el caso de este tutorial, hemos utilizado un servidor X Window). El uso de una herramienta externa conlleva a cargar ms la red, lo que conduce a una mayor latencia y a ms cambios de contexto. Esto a su vez limita la utilizacin de coLinux para el uso de vdeo intenso y aplicaciones multimedia. El equipo coLinux ha Figura 4: La interfaz grfica de usuario coLinux junto a Windows. desarrollado una

versin experimental de una aplicacin de consola grfica nativa, pero todava es incapaz de ejecutar X Window y le falta el soporte de sonido. Cooperative Linux tambin necesita un poco de trabajo para mejorar la estabilidad y el rendimiento. Arquitectnicamente, coLinux tiene la posibilidad de ser ms rpido que la mayora del software de virtualizacin, pero todava no ha tenido el mismo nivel de optimizacin y pruebas. Por esta razn, se considera todava coLinux software experimental. Si deseas contribuir con el desarrollo, las pruebas y la documentacin de coLinux, visita su sitio web, donde encontrars informacin sobre cmo tener acceso al cdigo fuente y te podrs suscribir a las listas de correo de desarrolladores y usuarios.

Conclusiones
Aunque coLinux an est todava bajo desarrollo, la arquitectura coLinux es una alternativa muy interesante para la ejecucin de aplicaciones Linux sobre Windows, sin la necesidad del pesado software de virtualizacin o los hacks a las bibliotecas. El proyecto est todava en una etapa temprana de desarrollo, pero en un futuro prximo, coLinux proporcionar una alternativa prometedora para la computacin de plataforma cruzada. I

RECURSOS
[1] Sitio web de coLinux: http://www.colinux.org [2] 7-Zip: http://www.7zip.org [3] Servidor Xming X Windows: http://www.sourceforge.net/projects/ xming [4] Cdigo fuente de coLinux: https:// sourceforge.net/projects/colinux/ [5] coLinux en SourceForge: http://sourceforge.net/projects/ colinux/files [6] Binarios de PulseAudio para Windows: http://www.cendio.com/pulseaudio [7] Listados de este artculo: http://www.linux-magazine.es/ Magazine/Downloads/86 [8] Documentacin y sugerencias de usuarios de coLinux: http://colinux.wikia.com [9] AndLinux: http://www.andlinux.org/ [10] SpeedLinux: http://sourceforge.net/ projects/speedlinux [11] Pen Drive Linux: http://www.pendrivelinux.com/ colinux-portable-ubuntu-for-windo ws/

WWW.LINUX- MAGAZINE.ES

Nmero 86

39

Scrot LINUX USER

Capturas de pantalla desde la lnea de comandos

Pantallazos
Mostramos cmo usar la herramienta Scrot para realizar capturas de pantalla desde la lnea de comandos. POR BRUCE BYFIELD
l contrario de lo que en principio podramos imaginar, Scrot [1] no es la ardilla de dientes de sable de las pelculas Ice Age. En vez de eso, Scrot (abreviatura de SCReen shOT o captura de pantalla) es una aplicacin de captura de pantallas de la lnea de comandos bastante fcil de usar y que vale la pena tener en cuenta, incluso si habitualmente preferimos aplicaciones de escritorio. Las capturas de pantalla son una funcin bsica dentro de la informtica. Podemos tomar una captura de pantalla para

mostrar a nuestros amigos nuestro nuevo escritorio personalizado o la nueva aplicacin que hemos encontrado. Si hay alguien que nos est ayudando con un problema tcnico, podemos enviarle una captura de pantalla para ayudarle con el diagnstico. Si somos escritores tcnicos, es posible que utilicemos capturas de pantalla para hacer que nuestras instrucciones sean ms claras y para ayudarnos a documentar los pasos involucrados en un proceso. Pero, por qu usar una aplicacin de la lnea de comandos en el escritorio? En su

WWW.LINUX- MAGAZINE.ES

Nmero 86

73

LINUX USER Scrot

Sin embargo, esta estructura no nos dar demasiado control. Para evitar tener que editar las capturas de pantalla ms tarde, probablemente querramos capturar algo que sea lo ms parecido al resultado final que deseamos, siempre que sea posible. Scrot incluye algunas opciones para ajustar los grficos que crea. Podemos comenzar con --focused o -u, que toma una captura de pantalla de la ventana actualmente enfocada es decir, la ventana en la que podemos ejecutar Scrot. Estas opciones son tiles si deseamos capturar la salida de la lnea de comandos y, naturalmente, se utilizaron para ilustrar este artculo. Para un mayor control del tema de la captura de pantallas, podemos aadir --select o -s. Estas opciones demoran la captura de pantalla hasta que elegimos una ventana con el ratn. Tambin podemos utilizar estas opciones para capturar una parte del escritorio que resaltaremos usando el mapa. Los que se dedican a capturar pantallas y tienen alguna experiencia con estas cosas, saben que a menudo se requiere algn tipo de montaje. Las ventanas necesitan estar posicionadas de modo que estn visibles y la ventana de la cual deseaOpciones mos una captura, debe estar activa de La manera ms simple de usar Scrot es modo que no est atenuada, como ocurre introduciendo el comando scrot sin aadicon las ventanas inactivas de KDE por dos. Respetando la tradicin Unix, Scrot no ejemplo. Para facilitar esta tarea podemos muestra ningn resultado en la lnea de usar --delay SEGUNDOS o -d SEGUNDOS comandos. Tampoco posee la habitual para decirle a Scrot que espere antes de opcin --verbose para ello. Sin embargo, el hacer la captura. Pero, usar una demora puede distraernos cuando intentamos contar los segundos mientras ajustamos las ventaFigura 1: El contador de Scrot se utiliza con la opcin --delay nas de nuestra pantalla, para decirnos de cunto tiempo disponemos antes de tomar la as que Scrot incluye -c captura de pantalla. y --count, que muestran

lugar iniciaramos GIMP, pero eso requiere mucha potencia para algo tan simple como una captura de pantalla. Una herramienta de escritorio ms acorde podra ser Shutter [2], que es de peso ligero y posee todas las opciones que la mayora de los usuarios necesitan. Sin embargo, Scrot es an ms ligero y, como la mayora de las apps de la lnea de comandos, est repleta de opciones que podemos aprender sin demasiada dificultad. Adems, a diferencia de las apps de capturas con interfaces grficas, se ejecuta sin GUI y podemos embeberlo en scripts en caso de necesidad. Scrot es un front end para imlib2 [3], que es lo ltimo en una sucesin de libreras estndar para manipulacin de imgenes. Una rpida investigacin sugiere que la mayora de las distribuciones ms importantes la incluyen en sus repositorios. Si en la nuestra no est, la herramienta es fcil de compilar, aunque primero deberamos comprobar las dependencias buscando en los repositorios de una distribucin grande como Debian [4]. Cuando usemos Scrot, es probable que deseemos crear un directorio para nuestras capturas de pantalla y luego, cambiar a ese directorio para ejecutarlo. En caso contrario, podemos rellenar nuestro directorio de inicio con ficheros de salida que hemos de clasificar ms tarde. Adems, podemos redirigir ficheros desde nuestro directorio actual o moverlos posteriormente, pero organizar nuestras acciones desde el principio es de lejos lo ms sencillo. Scrot soporta la mayora de los formatos de fichero grficos, incluyendo .gif, .jpg, .png, .tiff y .pdf. Sin embargo, para producir la salida exacta que queremos, necesitamos conocer tanto las opciones de comandos de Scrot, como las cadenas especiales opcionales.

resultado ser una captura de pantalla de nuestro escritorio completo en formato .png con una calidad del 75%, con un nombre que comienza con el formato AAAA-MM-DD-HHMMSS, es decir, la fecha y hora, seguido por la resolucin y el nombre bsico scrot por ejemplo, 2012-0126-140222_1680x1050_scrot.png. No est mal para empezar, pero no es muy interesante. Es probable que deseemos otro formato para la salida. Quizs una lnea de comando bsica ms til sea:
scrot U FICHEROSALIDA.EXTENSIN

un contador para hacer que el seguimiento del tiempo sea ms fcil (Figura 1). Existen otras opciones que nos permiten ajustar los contenidos de la salida. Cuando usamos ms de un monitor, podemos aadir la opcin -m o --multidisp para que Scrot tome una foto de cada y produzca un nico fichero con los escritorios combinados. Con --border o -b, la foto incluye las decoraciones de la ventana, como la barra de ttulo, una opcin que la mayora de los escritores tcnicos prefieren a la hora de producir imgenes para manuales. Tambin podemos aadir --quality PORCENTAJE o -q PORCENTAJE para cambiar la resolucin de la salida, sobreseyendo el valor predeterminado de 75. Una opcin especialmente importante es --thumb o -t. Si la opcin no va seguida de dos dgitos o de un signo de porcentaje, crea una previsualizacin con un tamao relativo al tamao del fichero de salida original. Alternativamente, podemos especificar una dimensin exacta en pxeles, listando el ancho seguido de la altura (por ejemplo, 400x300). Sin embargo, debemos ser cuidadosos de preservar las dimensiones relativas para evitar distorsiones. Ambas opciones pueden ser utilizadas no slo en casos en los que necesitamos un thumbnail, sino tambin para crear una copia con un nuevo tamao distinto al de la captura de pantalla original. Las opciones aqu mencionadas nos dan todas las funcionalidades disponibles en la mayora de las aplicaciones de captura de pantalla y, en muchos casos, unas pocas ms. Sin embargo, si necesitamos funcionalidades adicionales, podemos especificar un comando para ejecutarlo sobre el fichero de salida despus de crearlo. Para ello utilizamos las opciones -e COMANDO o --exec COMANDO. Por ejemplo, si deseamos archivar un fichero de salida tan pronto como se cree, podremos introducir el comando:
scrot escritorio.png U -e tar -tvf desktop.tar

El comando
scrot escritorio.png U -e gimp escritorio.png

hace que se abra automticamente en GIMP el fichero escritorio.png tan pronto como se crea, de este modo podemos editarlo usando las funcionalidades avanza-

74

Nmero 86

WWW.LINUX- MAGAZINE.ES

Scrot LINUX USER

das del editor de imgenes. Las opciones -e o --exec vienen despus del nombre del fichero de salida y se colocan entre comillas para que puedan ser parseadas adecuadamente. Estas opciones se encuentran limitadas solamente por nuestras necesidades e imaginacin.

Cadenas Especiales
Una vez que conocemos las opciones de Scrot, tenemos toda la informacin para producir las capturas de pantalla que necesitamos. Sin embargo, Scrot tambin soporta una serie de cadenas especiales que podemos aadir al nombre del fichero de salida o a cualquier comando con la opcin --exec. Estas cadenas especiales son, en esencia, variables a las que Scrot asigna un valor definitivo cuando hace la captura de pantalla. Por ejemplo, para copiar una captura de pantalla a otro directorio tan pronto como se cree, podemos usar el comando:
scrot escritorio.png U --exec cp escritorio.png U /home/bruce/

Sin embargo, usando la cadena especial $f podemos evitar escribir el nombre del fichero completo y simplemente introducir:
scrot escritorio.png U --exec cp $f /home/bruce/

Scrot soporta dos tipos de cadenas especiales. La primera son las funciones estndar strftime, que crean las marcas de fecha y hora. stas comienzan con el signo del porcentaje (usa %% si quieres introducir un signo de porcentaje en el nombre del fichero) y van seguidas por una letra nica. La Tabla 1 muestra las funciones ms comunes de strftime, aunque podemos encontrar una lista completa en la pgina man de strftime. Las funciones strftime son tiles cuando es preciso guardar la fecha y hora exactas en el nombre del fichero por ejemplo, cuando estamos tomando capturas de pantalla de un proceso en curso, como podra ser una instalacin. Por ejemplo, podemos especificar que el fichero de salida se llamar %R-instalacion.png, luego una captura de pantalla tomada exactamente a las 2:00pm producira el fichero 14:00:00-instalacion.png, mientras que una tomada exactamente dos minutos ms tarde con la ayuda de nuestro historial (shell history) sera 14:02:00-insta-

lacion.png, evitndonos Tabla 1: Funciones strftime un esfuerzo considerable. Seleccionadas Hay que tener en Funcin Descripcin cuenta que las funciones %a Nombre de das de la semana abreviados strftime pueden verse %A Nombres de das de la semana completos afectadas por nuestra %b Nombre del mes abreviado cuenta de usuario. En particular, si usamos un %B Nombre del mes completo locale americano o cana%c Fecha y hora diense, entonces %c aa%D Formato MDA dir la fecha al nombre %F Formato AMD de fichero en formato %H Hora usando un reloj de 24 horas MM-DD-AA, lo que %I Hora con reloj de 12 horas podra confundir a los %m El mes como nmero decimal (01 a 12) usuarios de cualquier otra parte del mundo. %M El minuto como nmero decimal (00 a 59) El segundo tipo de %p Un reloj de 12 horas + AM or PM cadenas especiales son %R La hora en notacin de 24 horas (HM) las internas de Scrot. %T La hora en notacin de 24 horas (HMS) stas funcionan de la misma manera que las funciones strftime, Tabla 2: Cadenas Internas excepto que van precediEspeciales de Scrot das con un signo ($) y Cadena Descripcin extraen informacin de la $f Ruta/nombre de fichero de imagen (ignorado cuando se usa en el nombre de fichero) imagen creada. La Tabla 2 muestra las cadenas $n Nombre de imagen (ignorado cuando se internas disponibles. usa en el nombre de fichero) Las cadenas internas $s Tamao (bytes) de imagen (ignorado de Scrot no son instruccuando es usado en el nombre de fichero) ciones al comando, sino $p Tamao en nmero de pxeles de la imagen que slo reflejan la infor$w Ancho de la imagen macin que ya se $h Altura de la imagen encuentra almacenada en $t Formato de la imagen el fichero. Aadiendo el ancho y la altura de la cantidades. Pero con sus opciones fciles imagen al nombre del fichero no cambia el de aprender y sus cadenas especiales de la tamao de la imagen. De manera similar, lnea de comandos, es al menos tan potente slo podemos usar $f (nombre de fichero), como las apps de escritorio para la captura $n (nombre de imagen), or $s (tamao de de pantallas y a veces, hasta bastante ms. imagen) con la opcin --exec. No podemos Podramos decir que combina la potenutilizarlos cuando tomamos la captura de cia de la lnea de comandos con la comodipantalla, porque la imagen y su informadad del escritorio. Esta combinacin hace cin no existen todava en ese momento. que merezca la pena que aprendamos Aparte de eso, al igual que las cadenas Scrot si necesitamos capturas de pantallas especiales strftime, las cadenas internas de regularmente. I Scrot pueden ahorrarnos esfuerzo y ayudarnos a organizar nuestros ficheros.

Del Prompt al Escritorio


Usar la lnea de comandos para trabajar con imgenes grficas, puede parecer ilgico. Sin embargo, al igual que ImageMagick [5], una aplicacin de la lnea de comandos es frecuentemente la manera ms eficiente de administrar ficheros. Scrot posee muchas menos funcionalidades que ImageMagick y carece de capacidad para administrar ficheros en grandes

RECURSOS
[1] Scrot: http://linuxbrit.co.uk/software/ [2] Shutter: http://shutter-project.org/ [3] imlib2: http://freecode.com/projects/imlib2 [4] Debian: http://packages.debian.org/ squeeze/scrot [5] ImageMagick: http://www.imagemagick.org/script/ index.php

WWW.LINUX- MAGAZINE.ES

Nmero 86

75

Adonde vayas...

Lee Linux Magazine desde cualquier sitio con nuestra subscripcin digital. Accede a todos los nmeros en PDF entrando en nuestro sitio. Encuentra lo que buscas con un sencillo formulario de bsqueda. Mantn tu propia biblioteca de artculos y lelos desde cualquier dispositivo.

... Linux Magazine va contigo.


http://www.linux-magazine.es/digital

EVENTOS

OSHWC 2012
Fecha: 08 Oct. - 10 Oct. Lugar: Madrid, Espaa Web: www.oshwcon.org

Libre Software World Conference


Fecha: 18 - 19 Oct. Lugar: Santiago de Composela, Espaa Web: www.libresoftwareworldconference.com

LinuxCon Europe
Fecha: 07 - 09 Nov. Lugar: Barcelona, Espaa Web: events.linuxfoundation.org

Calendario de Eventos Espaa e Hispanoamrica Evento Zentyal Summit 2012 Libre Software World Conference 2012 Drupalcamp Centroamrica Encuentro Centroamericano de SwL LinuxCon Europe Resto del Mundo Evento Apps World Webit Congress LibreOffice Conference 2012 Ubucon 2012 OpenSuse Conference 2012 Strata Conference 2012 LISA '12 AnDevCon IV SCaLE 11x CeBIT 2013 LinuxTag 2013

Fecha 04 - 05 Oct 08 - 10 Oct 11 - 13 Oct 02 - 04 Nov 07 - 09 Nov Fecha 02 - 03 Oct 10 - 11 Oct 17 - 19 Oct 19 - 21 Oct 20 - 23 Oct 23 - 25 Oct 09 - 14 Dic 04 - 07 Dic 22 - 24 Feb, 2013 05 - 09 Mar, 2013 22 - 25 Mar, 2013

Ciudad / Regin Zaragoza, Espaa Santiago de Comp., Espaa Panam, Panams Guatemala, Guatemala Barcelona, Espaa Ciudad / Regin Londres, R.U. Estanbul,Turqua Berln, Alemania Berln, Alemania Praga, Chequia Nueva York, EE.UU. Los Angeles, EE.UU. Burlingame, EE.UU. San Diego, EE.UU. Hannover, Alemania Berln, Alemania

Sitio Web events.zentyal.com/zentyal-summit-2012 www.libresoftwareworldconference.com panama2012.drupal-centroamerica.org softwarelibre.ucr.ac.cr/node/506 events.linuxfoundation.org Sitio Web www.apps-world.net/europe www.webitexpo.com conference.libreoffice.org ubucon.de en.opensuse.org/Portal:Conference strataconf.com www.usenix.org/events/lisa12 www.andevcon.com/AndevCon_IV www.socallinuxexpo.org/scale11x www.cebit.org www.linuxtag.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 2012 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 86

81

PRXIMO NMERO

Virtualizacin
Todo se est volviendo virtual: ejecutas apps en entornos virtuales sobre escritorios virtuales que funcionan en mquinas virtuales que se alojan en nubes virtuales. Y, con la ubicuidad de estos servicios, las herramientas cambian y evolucionan a una velocidad de vrtigo. El mes que viene volvemos a zambullirnos en la dimensin de lo virtual para analizar e informar sobre todo lo que hay de nuevo y ayudarte a mantenerte al da.

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/

iSamantha Craddock, 123RF

A LA VENTA: NOVIEMBRE 2012


82
Nmero 86
WWW.LINUX- MAGAZINE.ES