Aquí les dejo un script que me ayuda a mi a respaldar mi librería de música desde mi laptop a mi NSLU2 que por cierto esta a unas 30 millas (48 kilómetros) de distancia. El script usa Rsync sobre SSH. Démosle un vistazo a este script al cual he salvado como rsync_itunes.sh.

#!/bin/bash
#rsync -avx --delete --exclude='iTunes/iTunes\ Media/Movies/*' --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/
#rsync -avx --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/
rsync -avx --delete --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/

Como pueden ver tengo dos lineas comentadas las cuales las descomento de acuerdo con lo que quiera hacer. La primera omite el directorio 'Movies'. La segunda no borra los archivos que he eliminado de iTunes o que ya no están en esa ubicación. La ultima que es la que no esta comentada borra y sincroniza la librería entera. Noten que -e "ssh -p22" le dice a rsync que va a ejecutar SSH por el puerto 22, útil en caso de que engan SSH corriendo en otro puerto.

Yo en particular lo tengo en ~/scripts y lo ejecuto así:

sh ~/scripts/rsync_itunes.sh

Mi presentación ante el Grupo de Usuarios de Linux de South MIami Dade

A finales del 2006 fue la ultima vez que asistí a una reunión del grupo de usuarios de Linux (LUG por su siglas en ingles) de Miami hasta este pasado fin de semana. El grupo es un poco mas pequeño de lo que recuerdo pero las intenciones y la motivación siguen siendo las mismas.

Mi participación este pasado 11 de Junio no se limito a ser oyente, por el contrario, di una corta charla que consistió en un recuento del FUDcon de Panamá, Un servidor casero económico y diagnosticar problemas usando strace.

El tema que mas genero preguntas fue el del "Un servidor casero económico" especialmente sobre un NSLU2 que lleve para que lo vieran, algunos de los participantes no podían creer que esa cosa tan pequeña con un costo menor de $30 pudiese convertirse en un servidor web. Parte de mi charla consistió en demostrar lo que es capaz de hacer este mini NAS hackeado a mini server, así que les mostré el blog http://www.linuxevolution.org que esta corriendo sobre mi NSLU2 y además les hice una demostración de transmisión de imágenes en vivo con fotos del evento.

La charla cerro con el tema de 'Diagnosticar problemas con strace' fue la siguiente y aunque cubrí todo lo básico, me hubiese gustado haber hecho una practica sobre este tema.

Aquí les dejo un video de parte de mi presentación donde le explico a un miembro del LUG sobre el NSLU2. Me despido muy agradecido con Jonathan Respeto del southdadelug.org por su invitación a este evento y pueden descargar aqui mi presentación en formato PDF.

Si te pareció interesante este articulo, tal vez este otro también te interese: Reunión de septiembre en el LUG de Miami

Hoy quiero retomar el tema del NSLU2, el tema de un servidor casero, silencioso y económico. El NSLU2 es un dispositivo que Linksys saco al mercado como un simple NAS sin muchas funciones que se diga pero gracias a esfuerzos de la comunidad se ha podido convertir en un servidor completo. Para Nosotros, los que nos gusta meterle Linux a cualquier cosa que consuma electricidad y tenga conectividad a internet le llamamos de cariño "Slug".

El Slug es una solución completa, barata para jugar con Linux embebido y lo mejor de todo es que el firmware original de Linksys usas el Kernel de Linux por lo tanto liberan el código fuente. Hoy en día aunque ya no tienen tanta actividad Unslung y OpenSlug siguen siendo las principales comunidades orientadas al NSLU2.

Debido a que ya esta descontinuado el NSLU2 no se puede comprar directo en las tiendas si en las que se puede lo cobran excesivamente caro. La solución es comprarlo por vías alternas como eBay, craigslist, etc.

Mi experiencia con el NSLU2 en cuanto a sistemas operativos se limita a Gentoo y Debian, particularmente prefiero Gentoo para este dispositivo ahora que Fedora esta empezando a desarrollar para ARM seria interesante intentar compilarlo para el NSLU2.

El NSLU2 viene limitado a correr a 133MHz pero su procesador en realidad es de 266MHz, para liberarlo es necesario eliminar un transistor. Así que sin miedo desconecten el cable de poder, abran la carcasa y eliminen este transistor:

Como servidor web con sus 266MHz (liberado desde 133MHz) y tan solo 32MB de RAM no es exactamente el tipo de servidores que usaríamos en para hostear el landing page de fedoraproyect.org o el wiki de Fedora pero si podemos tener nuestro blog personal corriendo en conjunto con otros servicios.



El NSLU2 no es la única opción en el mercado, pero es la mejor si tomamos en consideración el costo, al cabo de un anho de estar prendido 24/7 y los beneficios que obtenemos a cambio. Entre las alternativas que les puedo comentar están el DSM-G600 de D-LINK que cuesta alrededor de $50 y la primera versión del Apple TV por $110.


El DSM-G600 es rápido, tiene un procesador de 266MHZ al igual que el NSLU2 pero tiene 64MB de RAM y el almacenamiento es vía IDE en vez de USB 2.0. Lo malo de este dispositivo es que requiere de un ventilador para mantenerlo fresco y sacar el calor que genera el CPU y el disco duro en la carcasa.

La primera versión del AppleTV debería de ser mas rápida aun con su procesador de 1 GHz Intel "Crofton" Pentium M, 256 MB a 400 MHz DDR2 de memoria RAM y almacenamiento mas rápido que el NSLU2. No tengo mas que comentarles respecto a este candidato para servidor porque lo tengo corriendo con XBMC y lo tengo como media center hasta que le consiga remplazo (un google tv?).

Se le puede montar wordpress, joomla o algo así? No, créanme intente correr wordpress con 3 plugins distintos para la DB, intente usar sqlite3 y otros plugins para minimizar la carga de la DB pero no logre correr el blog que soportara mas de 3 conexiones simultaneas.

La buena noticia es que existen alternativas, en mi caso termine por usar Nanoblogger. Nanoblogger es un manejador de contenido que genera contenido estático esto reduce bastante la carga en el NSLU2.

CGI en BASH? No es tan halado de los cabellos como muchos piensan. Yo lo uso para cosas puntuales como una interfaz web para agregar artículos a Nanoblogger o mantener una URL (por ejemplo orvtech.com/ultima.bash siempre apuntando a la ultima URL que ya publicamos).

El limite de lo que puedes hacer con el NSLU2 es como el de Linux, te lo pones tu. Para mi no tiene limites, siempre hay una alternativa a lo que se puede hacer con maquinas potentes, para muestra aquí les dejo una lista de cosas interesantes que he hecho con el NSLU2:

  • Transmisión en vivo de imágenes: Con una demora de tres a cinco minutos un conjunto de scripts corriendo en el NSLU2 puede ser usado para cubrir eventos como el FLISOL, FUDcon, Google IO, eventos deportivos y convenciones en genera. La cobertura puede ser hecha por cualquiera con un dispositivo capaz de tomar fotos y enviarlas por email. Estos scripts manipulan estas imágenes insertando información relevante al evento, por ejemplo mis scripts para cubrir carreras de carros generan imágenes como esta:

    Como ven, en la parte superior tengo la fecha, hora, temperatura y presión atmosférica así como el logo en la parte inferior derecha. Puedes leer mas de este tema pinchando aquí.

  • Un puente de last.fm a gNewBook: Con un script hecho en BASH el NSLU2 puede actualizar nuestro estado en gNewBook.org con la ultima canción escuchada en nuestro perfil de last.fm. Si quieres ver el script, pincha aqui.

  • Comparte archivos vía torrents con tu propio tracker en el NSLU2: Usando bittornado podemos configurar el NSLU2 para que sea un torrent tracker. Para leer mas del tema puedes leer este articulo.

  • Un reproductor de música inalámbrico: Este articulo es una traducción de una mini-guia publicada por "POTUS Camacho", basicamente te explica como usar el NSLU2 y una tarjeta USB de bluetooh para convertir el NSLU2 en un MP3 player inalámbrico. La traducción de este articulo puede ser leída aqui.

Los zombis también pueden estar en el NSLU2

Un proceso zombi es un proceso que ha completado su ejecución pero aun tiene una entrada en la tabla de procesos. Esta entrada aun es necesitada para permitir la lectura del estado de su estado de salida. El Termino zombi se deriva de la definición de un muerto viviente (se acuerdan de esa película?). Para ponerlo en términos simples y un poco mas técnicos, un proceso hijo ha terminado pero aun no se ha eliminado de la tabla de procesos y el comando kill no tiene efectos sobre él.

Identificarlos es fácil, podemos ejecutar el comando ps y buscamos cuales procesos tienen una "z" en la columna "STAT". Los procesos zombi que permanecen por un periodo mas que corto por lo general es señal de un Bug en el proceso padre. Ahora bien, si el zombi aun existe después de que el proceso padre ha terminado esto por lo general indica un bug en el sistema operativo.

[caption id="attachment_231" align="aligncenter" width="700" caption="La salida de el comando top que muestra donde están los zombis"]La salida de el comando TOP que muestra donde estan los zombis[/caption]

Un procesos zombi no es un problema tan grave, el problema se agrava si el computador va a ser sometido a fuertes cargas pues puede ser que se multipliquen. A pesar de que los zombis no consumen memoria un incremento acelerado de estos podría traer consecuencias a la hora de que el sistema operativo se le acaben los PID a asignar.

Una vez que el padre haya matado el zombi el proceso ID (PID) y la entrada en la tabla de procesos puede ser reutilizada, pero si este falla, el zombi permanece en la tabla de procesos.

Para eliminar un zombi del sistema, se le debe enviar la señal SIGCHLD al padre usando el comando kill. En caso de que el padre se no pueda eliminar el zombi de la tabla de procesos podríamos intentar matando el proceso padre. Algo que debemos tomar en cuenta es que cuando un proceso pierde a su padre, 'init' pasar a ser su nuevo padre y este se encarga de limpiar periódicamente la tabla de procesos de los zombis cuyos padres sean init.

Por ahora no he jugado mucho con el Apple TV, tan solo unos minutos esta mañana, en cuestión de minutos lo conecte al TV, prendió y logre configurar para que se conecte a la red inalámbrica de la casa. Este sera el reemplazo de mi servidor NSLU2 en un par de meses. Por su puesto no podian faltar las fotos:

[gallery link="file" order="DESC"]

Las características técnicas del equipo son:

Procesador: Intel 1.0 GHz "Crofton" Processor
Gráficos: NVIDIA GeForce Go 7300 (64 MB VRAM)
Memoria: 256 Mb de 400 MHz DDR2 SDRAM
Disco duro: 160 GB hard disk
Conectividad: USB 2.0, receptor infrarrojo, HDMI y Vídeo por componentes.
Networking: 10BASE-T/100BASE-T Ethernet, 802.11 b, g, n wireless networking (AirPort)
Salida: 1080p/1080i 60/50 Hz (pero la resolución máxima de vídeo es de 720p)
Audio: S/PDIF digital audio óptico, RCA analógico de sonido estéreo
Alimentación: Fuente de alimentación universal 48W
Dimensiones: 197x197x28 mm (7.7x7.7x1.1 in)
Peso: 1.09 kg (2.4 libra)

A simple vista, mas de ocho veces la cantidad de memoria que tiene mi NSLU2 (que por cierto aloja esta pagina web), casi ocho veces mas poder de procesamiento, disco duro interno vía IDE que ya de por si es mucho mas rápido que USB 2.0, lo puedo conectar al TV y ver en HD las películas, photos, y demás contenido multimedia que descargue vía torrents. Todo esto por $108 puesto en mi casa.

Los directorios mas importantes de NanoBlogger son data templates styles images y plugins. Anoche decidí a automatizar el respaldo de mi blog, como no tengo problemas de espacio decidí solo dejar por fuera el directorio cache. Este es el script para crear un archivo comprimido y subirlo a otro server vía SCP:

#!/bin/bash BLOG_PATH="/path/to/the/directory/that/contains/your/blog.conf/" BLOG_NAME="orvtech.com" DATE=`date +%d%b%Y-h%Hm%M` NO_BAKUP="cache/*" SCP_SERVER="" SCP_USER="" SCP_PORT="22" cd $BLOG_PATH tar -czpsf ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz --exclude "$NO_BAKUP" * ls -lah  ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz scp -P$SCP_PORT ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz $SCP_USER@$SCP_SERVER:~/

Me entere este fin de semana que el datacenter que aloja mi NSLU2 (la casa de un amigo que tiene IP publico) va a cerrar y necesito mover el NSLU2 a otro lado. Esto pasara en los próximo 2 meses así que necesito empezar a ver a donde muevo mi NSLU2 o que hacer en este caso en vista de que en mi casa no tengo IP publica.

[caption id="attachment_500" align="alignleft" width="100" caption="NSLU2 sin acceso al publico"]NSLU2 en la carcel[/caption] La primera idea que se me ocurrió es usar el NSLU2 como un backend o publicador y hacer un wrapper a NanoBlogger para que al hacer cualquier tipo de actualización haga un rsync a mi VPS que actuaria como frontend.

Si tienen cualquier sugerencia me la pueden dejar en los comentarios.

El NSLU2 (conocido como "slug") se vende como un dispositivo NAS (Network Attached Storage) pero en realidad es mucho mas útil que un simple NAS. Es un sistema embedido completo y barato con su firmware basada en Linux. Lo mejor de todo es que su fabricante (Linksys) usa el kernel de linux y ha liberado su código lo que trajo como consecuencia el nacimiento de proyectos llevados por la comunidad como Unslung y OpenSlug.