span.fullpost {display:none;}

miércoles, 8 de abril de 2009

Montar una red Ad-Hoc en Hardy

Desde hace mas de dos años tengo un pocket PC con WiFi incluido que me gusta utilizar de vez en cuando, mayormente para navegar, escribir notas y poco más. Cuando la adquirí no tenía ningún punto de acceso inalámbrico, ni nada que se le pareciera, así que cada vez que necesitaba conectarme a Internet me veía obligado a tener que allanar conexiones ajenas pertenecientes a vecinos incautos que no tomaban -ni siguen tomando- la precaución de poner una contraseña para protegerse de intrusos como yo. La situación cambió cuando hice un plan renove a mi ordenador y me agencié uno nuevo que, entre otras características, posee una tarjeta wireless Conceptronic C54Ri, con chipset RaLink RT2561/RT61, la cual instalé con la sana intención de usarla como router WiFi para crear mi propio espacio inalámbrico, y no tener que andar robando anchos de banda ajenos.
Como no andaba muy puesto en materia de conectividad inalámbrica bajo Linux, me puse a buscar información al respecto, y la primera conclusión a la que llegué fue que necesitaba poner la tarjeta en modo Master, conclusión tan errónea como inviable, ya que solo unos pocos modelos son capaces de soportar este modo, y mi Conceptronic no se encuentra entre ellos. Y errónea, porque después supe que no es necesario soportar dicho modo para poder compartir la conexión a Internet, ya que existe otro modo, llamado Ad-Hoc, que permite interconectar dos ordenadores directamente y compartir dicha conexión. Así que me puse a buscar toda la información necesaria para:
  1. instalar los controladores del chipset de la tarjeta Wifi para que pueda ser reconocida por Ubuntu
  2. configurar dicha tarjeta para ponerla en modo Ad-Hoc y que actúe como punto de acceso a la red
  3. ... y modificar las iptables para redireccionar el acceso a Internet
En aquellos momentos utilizaba la versión 7.10 de Ubuntu (Gutsy) y, tras mucho buscar y leer en manuales, tutoriales y foros de todo tipo, llegué a deducir que con dicha versión me iba a resultar del todo punto imposible pasar siquiera del primer punto, debido a cierto bug residente en Gutsy. Así que decidí dejarlo por imposible y posponer la tarea para más adelante, cuando llegara la siguiente versión, hecho que se produciría a los pocos meses con el lanzamiento de la 8.04 (Hardy). Tras instalarla volví a ponerme en faena, rescatando los conocimientos adquiridos durante los meses anteriores y poniéndolos de nuevo en práctica. Y tras varios intentos conseguí, ahora sí, hilvanar los pasos necesarios para lograr esta receta, gracias a la cual puedo conectarme y navegar mediante la PDA sin tener que perder tiempo en infructuosos intentos de conexión a las redes de los vecinos. Ni que decir tengo que la primera parte de este howto solo es válida con tarjetas inalámbricas que posean algún chipset del fabricante RaLink. Si este no es tu caso, tendrás que averiguar cuales son los controladores mas apropiados para el chipset de tu tarjeta, donde encontrarlos y como instalarlos. No obstante, si es un modelo de Ralink distinto al rt61, puede que no se ejecuten correctamente algunas de las instrucciones que doy a continuación.

Dicho lo cual, me dispongo a exponer a continuación la secuencia ordenada de pasos que seguí:

PRIMERA PARTE
  • Ubuntu trae un driver instalado por defecto pero no funciona bien, cuelga el ordenador a veces sí a veces no. Para deshabilitarlo lo metemos en la lista negra, añadiéndo la siguiente línea al fichero /etc/modprobe.d/blacklist, de manera que dicho módulo no será cargado al arrancar:
    $ sudo echo blacklist rt61pci >> /etc/modprobe.d/blacklist
    si lo desea, puede desinstalar antes dicho módulo mediante:
    $ sudo rmmod rt61
  • Bajarse los drivers que ofrece el fabricante RaLink desde su página web. Buscamos el enlace de descarga que corresponda a nuestro modelo, en mi caso rt61. En el momento de escribir esta entrada, la última versión disponible para el modelo rt61 data del 23 de enero de 2009. Tenemos que compilar el módulo a partir del código fuente, para lo cual necesitaremos tener instalados los paquetes build-essential y linux-headers-[version-nuestro-kernel], asimismo habrá que desinstalar el paquete network-manager:
    $ sudo aptitude purge network-manager network-manager-gnome
    $ sudo aptitude install build-essential linux-headers-$(uname -r)
  • Para compilar ejecutar en un terminal los siguientes comandos, dentro del mismo directorio donde hayamos descargado el archivo comprimido del controlador:
    $ tar -xjvf 2009_0123_RT61_Linux_STA_v1.1.2.3.tar.bz2
    $ cd 2009_0123_RT61_Linux_STA_v1.1.2.3.tar.bz2/Module
    $ make all
    Esperamos un ratito mientras se compilan los módulos.
  • La compilación genera una serie de ficheros que habrá que copiar en el directorio /etc/Wireless/RT61STA. Pero antes debemos crear dicho directorio.
    $ sudo mkdir /etc/Wireless
    $ sudo mkdir /etc/Wireless/RT61STA
    $ sudo cp *.bin rt61sta.dat /etc/Wireless/RT61STA
    $ sudo cp rt61.ko /lib/modules/$(uname -r)/kernel/drivers/net
  • Pues ya está instalado, el resto del trabajo es pura configuración. Levantamos el driver y terminamos de configurar:
    $ sudo depmod
    $ sudo modprobe rt61
  • Para que levante el módulo al arrancar el sistema, añadimos la línea rt61 al archivo /etc/modules:
    $ sudo echo rt61 >> /etc/modules
    y reiniciamos el sistema para que los cambios hagan efecto.
SEGUNDA PARTE
  • Para comprobar que la tarjeta es reconocida por el sistema ejecutamos en un terminal la orden iwconfig, nos debería de salir algo parecido a esto:
    $ iwconfig
    lo no wireless extensions.

    eth0 no wireless extensions.

    eth1 no wireless extensions.

    ra0 RT61 Wireless ESSID:"" Nickname:""
    Mode:Ad-Hoc Frequency:2.412 GHz Cell: C2:66:04:EF:65:EF
    Bit Rate=11 Mb/s
    RTS thr:off Fragment thr:off
    Link Quality=0/100 Signal level:-121 dBm Noise level:-107 dBm
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0
    Al tener dos tarjetas ethernet me aparecen dos dispositivos (eth0 y eth1). La tarjeta wireless adopta el nombre simbólico ra0, aunque puede cambiar de un modelo a otro.
  • Ahora vamos a configurar la tarjeta para crear una red Ad-Hoc, para ello empezaremos por modificar el fichero /etc/network/interfaces. Voy a suponer que nos conectamos a Internet mediante una tarjeta ethernet llamada eth0:
    $ cat /etc/network/interfaces
    auto lo
    iface lo inet loopback

    ## tarjeta "alambrica" de conexion a internet ##
    auto eth0
    iface eth0 inet dhcp

    ## tarjeta inalámbrica de red ad-hoc ##
    auto ra0
    iface ra0 inet static
    address 192.168.25.1
    netmask 255.255.255.0
    network 192.168.25.0
    wireless_mode ad-hoc
    wireless_essid nombre-de-red
    Las direcciones pueden ser cualesquiera que sigan este patrón: 192.168.xxx.yyy. El valor que asignemos a xxx deberá ser el mismo en el campo address y en network, no así el valor que le asignemos a yyy.
  • Ahora procedemos al enmascaramiento de la red, se pretende que todos los ordenadores "clientes" a los que queramos darle acceso utilicen nuestro ordenador como pasarela o puerta de enlace para conectar a Internet. Para ello vamos a crear el fichero /etc/init.d/iptablesconf con el script que crea las reglas de iptables necesarias:
    #### Script que configura iptables ####
    #!/bin/bash
    echo "Aplicando reglas de redireccionamiento....."
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.25.0/25 -d 0.0.0.0/0 -j MASQUERADE
    iptables -A INPUT -p TCP -m state --state RELATED -j ACCEPT
    echo "....hecho"
  • Guardamos el fichero, le damos permisos de ejecución al script y lo añadimos a los servicios de inicio del sistema, después se reinicia el nuevo servicio creado y el de red:
    $ sudo chmod -v 755 /etc/init.d/iptablesconf
    $ sudo update-rc.d iptablesconf start 20 2 .
    $ sudo /etc/init.d/iptablesconf start
    $ sudo /etc/init.d/networking restart
  • En el ordenador cliente (en mi caso el pocket PC), será necesario configurar los siguientes parámetros de conexión:
    IP: 192.168.25.10 (se puede sustituir el 10 por cualquier número entre 2 y 25)
    Mascara de subred: 255.255.255.0
    Puerta de enlace: 192.168.25.1
    Y como servidores DNS se pueden especificar los dos que se desee. Por ejemplo, los mismos que tengamos en el fichero /etc/resolv.conf. En cualquier caso reiniciar el sistema del ordenador cliente para que se hagan efectivo los cambios.
Y eso es todo, comprobaremos que hay acceso a Internet en el sistema cliente, y si no lo hay es que algo has hecho mal. En otra ocasión explicaré como instalar un servidor DNS propio que resuelva nombres de dominio en todos los sistemas conectados entre sí. Para cualquier sugerencia o duda que quieras exponer puedes dejarme un comentario más abajo.

Seguir leyendo ...

martes, 7 de abril de 2009

¿Feliz cumpleaños?

Hoy, 7 de Abril de 2009, se cumplen 40 años del nacimiento simbólico de la red de redes, Internet. Aunque no hay un consenso generalizado sobre la fecha en la cual se considera que comenzó a funcionar Internet, algunos aceptan que este hecho se produjo con la publicación del primer RFC (Request For Comments - petición de comentarios) por parte de Steve Crocker desde la Universidad de California, Los Ángeles, el cual fue enviado a todos los investigadores que colaboraban en la creación de ARPANET.

Sea como fuere, el caso es que el nacimiento de Internet ha contribuido de manera decisiva -y sigue haciéndolo- al desarrollo y difusión del sistema operativo gnu/Linux, en sus distintas versiones y "sabores". Gracias a la red de redes ha sido posible lanzar las distintas versiones de las variopintas distros existentes, descargarlas y, tras ser instaladas, mantener actualizado su software de una manera sencilla y relativamente barata, sin tener que depender de otros canales de distribución bastantes mas lentos y menos inmediatos, como el socorrido CD (cada vez más obsoleto, dicho sea de paso).

Por todo ello, merece la pena congratularse por este hecho pues, sea ésta u otra (2 de septiembre, 29 de octubre, ...) la fecha del cumpleaños de nuestra red de redes, gracias a ella somos cada vez mas los usuarios que podemos utilizar software libre, y la expansión de nuestro querido Ubuntu en estos últimos años no ha sido ajena al fenómeno del crecimiento constante e imparable de Internet.

Seguir leyendo ...

lunes, 23 de marzo de 2009

Java y firma digital en 64 bits

Hoy en dia, y desde hace mucho tiempo, se hace imprescindible disponer en cualquier sistema informático de un entorno de ejecución Java, tanto más desde que Internet se popularizó y, con él, la World Wide Web, pues cada vez más páginas incluyen aplicaciones escritas en lenguaje Java, desarrollado por Sun MicroSystem, lo cual obliga no solo a disponer de un JRE apropiado, sino también un plugin que permita al navegador ejecutar dichas aplicaciones. Una utilidad algo reciente de Java es la posibilidad de implementar la firma electrónica, que nos permite realizar ciertas gestiones telemáticas con la Administración Pública o con entidades financieras.

Afortunadamente, Sun lleva tiempo dando soporte para sistemas gnu/Linux, incluyendo a los de 64 bits. Una de las mejores cualidades de Java es el hecho de ser una tecnología multiplataforma, de tal modo que cualquier aplicación escrita en dicho lenguaje se puede ejecutar en cualquier plataforma que tenga instalada una máquina virtual (JVM). Para poder disfrutar de toda la potencialidad de Java en nuestro sistema Ubuntu, es necesario seguir una serie de pasos que voy a exponer a continuación. Estas instrucciones son válidas para un sistema 8.04 (Hardy) de 64 bits, por tanto habrá que realizar ciertas modificaciones si se desea aplicar a otros sistemas distintos
  1. En primer lugar creamos el directorio java en /opt, y una vez allí descargamos desde la web de Sun el paquete binario necesario para instalar el entorno de ejecución JRE:
    $ cd /opt
    /opt/$ sudo mkdir java
    /opt/$ cd java
    /opt/java/$ wget http://www.java.net/download/jdk6/6u12/promoted/b03/binaries/jre-6u12-ea-bin-b03-linux-amd64-22_dec_2008.bin
  2. A continuación procedemos a instalarlo, tras lo cual se configura como aplicación por defecto:
    /opt/java/$ sudo bash jre-6u12-ea-bin-b03-linux-amd64-22_dec_2008.bin
    /opt/java/$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jre1.6.0_12/bin/java" 1
    /opt/java/$ sudo update-alternatives --set java /opt/java/jre1.6.0_12/bin/java
  3. Creamos los enlaces necesarios al plugin de Java para que Firefox reconozca al JRE, para ello creamos el directorio ~/.mozilla/plugins, si aún no existe.
    $ mkdir ~/.mozilla/plugins
    $ sudo ln -s /opt/java/jre1.6.0_12/lib/amd64/libnpjp2.so ~/.mozilla/plugins/

    $ sudo ln -s /opt/java/jre1.6.0_12/lib/amd64/libjavaplugin_jni.so $HOME/.mozilla/plugins/libjavaplugin_oji.so
    $ sudo ln -s /opt/java/jre1.6.0_12/lib/amd64/libjavaplugin_jni.so /usr/lib/mozilla/plugins/libjavaplugin_oji.so
    $ sudo ln -s /opt/java/jre1.6.0_12/lib/amd64/libjavaplugin_jni.so /usr/lib/firefox/plugins/libjavaplugin_oji.so

  4. Se reinicia Firefox, y entramos a continucación en esta web para comprobar que está bien instalado. En caso afirmativo nos aparecerá en el navegador algo así:


Hasta aquí los pasos necesarios para la instalación de Java. Sin embargo, es posible que hayamos obtenido el certificado digital, que nos habilita para realizar trámites burocráticos con alguna Administración Pública, y queramos utilizarlo con nuestro sistema Ubuntu. En tal caso necesitaremos obtener un par de ficheros que contienen las librerías necesarias para implementar la firma electrónica, tales ficheros suelen facilitarse en la web oficial de la Administración correspondiente, en mi caso los descargué a traves del portal de la Junta de Andalucía. Una vez hecho, les cambiamos los permisos y los copiaremos en dos directorios distintos:
$ wget --no-check-certificate https://ws022.juntadeandalucia.es/firmadigital/servicio/paginas/jss33.jar
$ wget --no-check-certificate https://ws022.juntadeandalucia.es/firmadigital/servicio/paginas/libjss3.so
$ chmod 644 jss33.jar
$ chmod 755 libjss3.so
$ sudo cp jss33.jar /opt/java/jre1.6.0_12/lib/ext/
$ sudo cp libjss3.so /opt/java/jre1.6.0_12/lib/amd64/
Reiniciamos de nuevo el navegador para que haga efecto la instalación de estas librerías, y comprobamos su funcionalidad en alguna web con soporte para firma digital. Ni que decir tengo que previamente a todo este proceso deberíamos haber importado en Firefox la clave del certificado digital, facilitado por la FNMT en un fichero con extensión .p12 (Menú Editar - Preferencias - Avanzado - Cifrado - Ver certificados - Sus certificados - Importar).

Tal como indiqué anteriormente, la URL del paquete binario y las rutas de los directorios serán distintos en caso de utilizarse Ubuntu de 32 bits, u otro sistema gnu/Linux cualquiera. Y esto es todo, espero que os funcione. ;-)

Seguir leyendo ...

domingo, 15 de marzo de 2009

Flash para Ubuntu 64, por fin

Tras unos meses de inactividad retomo este blog, esta vez con su propio dominio (gratuito eso sí, que no está el horno para bollos) y con ganas de seguir escribiendo sobre los temas que más me gustan, y que -espero- que sean de vuestro interés.

Parece que los chicos de Adobe, tras las "sugerencias" recibidas por parte de los usuarios de gnu/Linux, han decidido apostar en esta ocasión no solo por el software libre, sino también por las arquitecturas de 64 bits, liberando la última versión (aún en fase Alpha) de su plugin flash para distribuciones de 64 bits de gnu/Linux. Los usuarios de Ubuntu estamos, pues, de enhorabuena, pues esto debe interpretarse como un reconocimiento implícito de la creciente influencia que está adquiriendo el software libre para las grandes empresas de software.

Lo he instalado en mi sistema Hardy-64, y la experiencia de navegar por páginas web que usan y abusan del flash (que son cada vez más) ha sido plenamente satisfactoria. Desde que poseo un ordenador de 64 bits había tenido que recurrir a la emulación mediante nspluginwrapper para poder usar plugins de 32 bits, lo cual era un engorro que acarreaba muchos problemas, como el de los cuadros grises, del que hablé en otra entrada. Pero en esta ocasión, tras instalar la versión 10 del reproductor, la cosa ha cambiado radicalmente y, aparte no tener ningún impedimento para ver imágenes flash de cualquier tipo (banners, vídeos, juegos, etc...) la calidad de las mismas ha mejorado notablemente.

A continuación voy a explicar detalladamente el proceso que he seguido para instalar dicho plugin en el navegador Firefox 3.0.x, teniendo en cuenta que anteriormente utilizaba la versión de 32 bits mediante emulación.
  • En primer lugar desinstalar los paquetes necesarios para hacer funcionar Flash Player de 32 bits:
    $ sudo aptitude purge nspluginwrapper flashplugin-nonfree
  • Borrar los ficheros libflash-mozplugin.so antiguos:
    $ sudo rm /usr/lib/mozilla-firefox/plugins/libflash-mozplugin.so /usr/lib/mozilla/plugins/libflash-mozplugin.so
  • Descargar el plugin flash 10 de la web de Adobe y descomprimir el fichero.

  • Copiar el plugin descargado en el directorio /usr/lib/mozilla/plugins/:
    $ sudo cp libflashplayer.so /usr/lib/mozilla/plugins/
  • Crear enlaces simbólicos en los demás directorios de FF:
    $ sudo ln -s /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla-firefox/plugins/
    $ sudo ln -s /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/firefox/plugins/
    $ sudo ln -s /usr/lib/mozilla/plugins/libflashplayer.so ~/.mozilla/plugins/
  • Reiniciar Firefox y listo.
Espero que en sucesivas versiones de Flash, Adobe siga apostando por el SL y no deje tirados al cada vez mayor número de usuarios de Ubuntu y demás distros de gnu/Linux. Aunque lo suyo es que el proyecto Gnash madure lo suficiente como para poder dejar de depender del software privativo, pero me temo que esa opción aún está muy lejana.

Seguir leyendo ...

viernes, 7 de noviembre de 2008

Emulando al pasado con Spectemu

Hoy vengo en plan nostálgico ya que mientras revisaba mis marcadores de Firefox he vuelto a visitar varias páginas dedicadas a uno de los ordenadores pioneros de la informática de consumo, me refiero, como no, al famoso ZX Spectrum, un "micro" (como así se denominaba entonces) que marcó una época allá por la primera mitad de la década de los 80. Aunque nunca tuve la suerte de poseer uno (me quedó ese trauma), el ZX Spectrum fue un precursor de los ordenadores personales, e introdujo a muchos jóvenes -y no tan jóvenes- de aquella época en el apasionante mundo de la programación y la informática en general, haciendo posible que se familiarizaran con términos abstractos como bit, byte, ROM, procesador, algoritmo o chip, que a la inmensa mayoría de la gente le sonaba a chino.

La evocación de aquel "micro" hizo plantearme la duda de si existen emuladores del ZX para gnu/Linux Así que me puse a buscar raudo y veloz, y en la Guía Ubuntu pude confirmar que, efectivamente, mis sospechas eran reales. Encontré que existe varios emuladores de Spectrum y que uno de ellos, el Spectemu, se encuentra disponible en los repositorios oficiales de Ubuntu. Por lo cual decidí instalar todos los paquetes necesarios para hacerlo funcionar:

$ sudo aptitude install spectemu-x11 spectemu-common spectrum-roms

Tras la instalación de los paquetes me faltaba tener algo con lo que poder empezar a probarlo, así que siguiendo los pasos de la Guía entré en una web donde se ofrecen muchos de aquellos juegos para Spectrum que
durante los años 80 se vendían en cintas magnéticas (aún conservo una que regalaba la revista Microhobby por suscribirte), y ahora se distribuyen en ficheros con formato tap, tzx o z80, entre otros. El modo de cargar y ejecutar los juegos mediante Spectemu no me ha terminado de quedar muy claro, pues lo he hecho de dos maneras distintas y en ambos casos ha funcionado. En la Guía Ubuntu se indica que la forma correcta es la siguiente:

$ aoss xspect -sound-device /dev/dsp1 -tap fichero.tap

aunque esta sintaxis no es válida cuando solo se dispone de "cintas" en formato tzx u otros; en tal caso lo ejecuto de esta otra manera:

$ aoss xspect -sound-device /dev/dsp1 fichero.tzx

que también es válida para ficheros en formato tap.



Una vez que aparece la ventana del emulador habrá que cargar el juego mediante la orden:

LOAD ""

Lo cual se consigue pulsando la tecla j, Alt-2 (dos veces, una para cada comilla), Enter y, por último, Ctrol-o (para despausar la "cinta").













Un asunto que me ha llamado la atención es que el proceso de carga y ejecución de los juegos es un poco lenta, parece como si también se quisiera emular aquella proverbial lentitud que caracterizaba al Spectrum a la hora de cargar juegos y aplicaciones desde la cinta magnética, algo que tanto desesperaba a los usuarios.

El aspecto problemático de todo esto es la cuestión del sonido. He probado a poner en el parámetro -sound-device los dispositivos /dev/dsp y /dev/dsp1, ya que Spectemu solo funciona con OSS y, como dije en un post anterior, tengo dos tarjetas de sonido en mi sistema, pero tan solo cuando especifico el primero de los dispositivos consigo oir una serie de ruidos bastante rudimentarios (algo así como una bip-bip) durante el proceso de carga, después de comenzar el juego desaparece cualquier sonido. No sé si los juegos que me he bajado carecen de audio, o es que éstos no se oyen por el tema del OSS.

Sea lo que fuere, el caso es que, por lo demás, Spectemu funciona correctamente. No lo he probado mucho porque no soy demasiado jugón y mi torpeza en este terreno es claramente manifiesta, a duras penas consigo jugar durante unos pocos minutos (y eso cuando logro averiguar como se arranca el juego). Aún así he podido disfrutar imaginando como debió ser la experiencia de utilizar aquel añorado ZX Spectrum que nunca tuve en mis manos. Tras más de 20 años de ostracismo voy a poder sacarle partido a los artículos y trucos sobre juegos que llenan las páginas de aquellas revistas que aún conservo.

Más vale tarde que nunca ... ¿no?


Seguir leyendo ...