<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
<?xml-stylesheet type="text/css" href="http://www.orvtech.com/styles/feed.css"?>
<icon>http://www.orvtech.com/images/feedicon.png</icon>
<logo>http://www.orvtech.com/images/rss_logo.png</logo>
<title type="html">Categorizado como: NSLU2 | Linux y el NSLU2</title>
<subtitle type="html"></subtitle>
<link rel="alternate" type="text/html" href="http://www.orvtech.com"/>
<link rel="self" type="application/atom+xml" href="http://www.orvtech.com/archives/nslu2/index-atom.xml"/>
<updated>2010-09-02T18:12:02-04:00</updated>
<author>
<name>orvtech</name>
<uri>http://www.orvtech.com</uri>
</author>
<id>http://www.orvtech.com/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.4">
NanoBlogger
</generator>

<entry>
<title type="html">Los zombis podrian estar consumiendo tu procesador en este instante</title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/08/16/los_zombis_podrian_estar_consumiendo_tu_procesador_en_este_instante/index.html"/>

<id>http://www.orvtech.com/archives/2010/08/16/los_zombis_podrian_estar_consumiendo_tu_procesador_en_este_instante/index.html</id>
<published>2010-08-16T22:57:31-04:00</published>
<updated>2010-08-16T22:57:31-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
<img src="http://www.orvtech.com/images/zombie-nslu2.101x100.png" height="100px" width="101px" alt="TUX version zombie sediento por NSLU2" align="left" />
Un proceso zombie 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 zombie 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 <i>kill</i> no tiene efectos sobre él.
</p>

<p>
Indentificarlos es fácil, podemos ejecutar el comando ps y buscamos cuales procesos tienen una "<i>z</i>" en la columna "<i>STAT</i>". Los procesos zombie 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 zombie aun existe después de que el proceso padre ha terminado esto por lo general indica un bug en el sistema operativo. 
</p>
<div style="text-align:center;"><img src="http://www.orvtech.com/images/terminal-zombies-700x291.png" height="291" width="700" /></div>

<p>
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. 
</p>

<p>
Una vez que el padre haya matado el zombi el processo ID (<abbr title="Process ID">PID</abbr>) y la entrada en la tabla de procesos puede ser reutilizada, pero si este falla, el zombi permanece en la tabla de procesos.
</p>

<p>
Para eliminar un zombi del sistema, se le debe enviar la señal <abbr title="Señal usada para informar que un procesos hijo ha terminado">SIGCHLD</abbr> al padre usando el comando <i>kill</i>. En caso de que el padre se reuse a 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, '<i>init</i>' 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.
</p>
<br />
<p>
<i>
<b>Tema vinculado:</b> <a href="http://www.orvtech.com/archives/2010/06/17/sobre-asignacion_de_memoria/index.html" rev="bookmark">La sobre-asignación de memoria lograda con memory_overcommit</a>.
</i>
</p>
</div>
</content>

</entry>
<entry>
<title type="html">Comparte un archivo via torrents con tu propio tracker</title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/08/12/comparte_un_archivo_via_torrents_con_tu_propio_tracker/index.html"/>

<id>http://www.orvtech.com/archives/2010/08/12/comparte_un_archivo_via_torrents_con_tu_propio_tracker/index.html</id>
<published>2010-08-12T01:15:18-04:00</published>
<updated>2010-08-12T01:15:18-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<div style="text-align:center;">
<a href="http://www.orvtech.com/images/torrentsx750.png" title="La internet es una serie de tubos"><img src="http://www.orvtech.com/images/torrentsx450x343.png" alt="El NSLU2 como centro de una red torrents, un tracker server" /></a>
</div>

<p>
Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos y no quería usar el ancho de banda de mi servidor por completo para esto así que decidí usar torrents. El torrent es un protocolo para compartir archivos con la peculiaridad de que todo lo que descargas por este medio, durante el transcurso de su descarga, estará siempre disponible para ser descargado por otro. Ya en el articulo <i>"<a href="http://www.orvtech.com/archives/2010/05/18/descargas_automatizadas_de_torrents_en_el_nslu2/index.html">Descargas automatizadas de torrents en el NSLU2</a>"</i> toque el tema de los torrents en el NSLU2, esta vez les voy a comentar un poco de como crear un torrent tracker y como crear el torrent como tal.
</p>

<br />

<p>
<b>El Tracker</b><br />
Un tracker es un server (en este caso mi <a href="http://www.orvtech.com/archives/nslu2/index.html" title="Servidor de casa, economico y silencioso">NSLU2</a>) que contiene la información necesaria para que los peers se conecten con otros peers coordinando la comunicación entre ellos. Los trackers son el único punto de encuentro al cual los clientes requieren conectarse para poder comunicarse y poder iniciar una descarga. En nuestro caso usaremos el que trae el kit de utilidades bittornado.
bttrack.py viene incluido con bittornado, yo use el siguiente comando con estos flags para levantar mi servicio de torrent tracker:</p>
<pre>nohup /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log &</pre>


<p>
Así de simple como se ve, invoco el script de python y le paso los siguientes parámetros:
<br />
<b>--port:</b> El puerto en el que va a escuchar.<br />
<b>--difile:</b> El archivo con la información mas reciente de las descargas.<br />
<b>--logfile:</b> El archivo de registros de las actividades del tracker.
</p>

<br />

<p>
<b>El *.torrent</b><br />
El archivo torrent es un poco mas complejo pero igual fácil de crear, usando btmakemetafile que también esta incluido en bittornado podemos crear el archivo tan solo con proporcionarle el hiper vinculo del tracker y el nombre del archivo que queremos compartir como se puede ver aquí:</p>

<pre>btmakemetafile.py http://orvtech.com:6969/announce --comment "http://www.orvtech.com/latest/torrent" guardianes_de_chavez.mp4</pre>

<p>
El parámetro <i>--comment</i> simplemente nos permite agregarle un comentario al torrent.
</p>

<br />

<p>
<b>Hacerlo publico</b><br />

Hay muchas formas de hacerlo publico, solo basta con enviar el archivo *.torrent a las personas que queremos que descarguen el archivo, publicarlo en tu blog personal o subirlo a uno de estos sitios que sirven para buscar torrents, en mi caso use <a href="http://thepiratebay.org/torrent/5756041/guardianes_de_chavez.mp4" titile="Los Guardianes de Chavez en The Pirate Bay" rel="nofollow">TPB</a> el cual tiene la particularidad que toma el *.torrent que tu creaste y agrega otros 2 trackers a el (http://tracker.thepiratebay.org/announce y http://tracker.openbittorrent.com/announce)

</p>

<br />

<p>
<b>UPDATE Viernes Agosto 13, 2010:</b> Un bug en el tracker.<br />
 	
Al parecer mi version de bttracker no es del todo compatible con mi versión de python, y el proceso muere después de mas de un par de horas con un error referente a la incompatibilidad con el modulo <abbr title="algoritmo de hash seguro">SHA</abbr>. Por ahora he decidido hacer un pseudo whatchdog para vigilar que el tracker este siempre arriba. 
</p>
<p>
Modifique el script a esto:
<pre>
while true
  do  if pidof -x bttrack.py > /dev/null
    then sleep 2
    else /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log
  fi
done</pre>
</p>

<p>
Como ven es un loop infinito que constantemente pregunta por el <abbr title="un numero que identifica de manera inequivoca a un proceso">PID</abbr> del proceso, de no encontrarlo simplemente ejecuta de nuevo el comando.
<br />
Luego descargo una versión mas nueva de bittornado a ver si esto soluciona el problema.
</p>
<br /><br />

<p>
<b>páginas de interés:</b> 
<br /><a href="http://www.bittornado.com">TheShad0w's experimental bittorrent client (BitTornado)</a>
<br /><a href="http://www.bittorrent.org">Pagina del proyecto bittorrent.org</a>
</p>
</div>
</content>

</entry>
<entry>
<title type="html">Acceso remoto via SSH a mi AppleTV </title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/07/18/acceso_remoto_via_ssh_a_mi_appletv/index.html"/>

<id>http://www.orvtech.com/archives/2010/07/18/acceso_remoto_via_ssh_a_mi_appletv/index.html</id>
<published>2010-07-18T22:59:54-04:00</published>
<updated>2010-07-18T22:59:54-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<category term="Apple" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
Instale mediante un pendrive USB un parche que permite el acceso remoto a mi AppleTV vía SSH, el mismo parche instala una serie de aplicaciones como Boxee, bin utils y unas modificaciones al menú de la interfaz gráfica que permite la instalación de plugins (como Perian) y otras aplicaciones. 
</p>

<div style="text-align:center;">
<a href="http://www.orvtech.com/images/galleries/liberando_appletv/index.html"><img src="http://www.orvtech.com/images/appletv_flashed_booting.jpg" width="700px" height="129px" alt="Foto de mi televisor mostrando el AppleTV booteando" /></a></div>

<p>
La razón principal de esto es mas que todo para poder instalar <abbr title="Xbox Media Center">XBMC</abbr> y una serie de plugins y scripts para este que permiten organizar automaticamente la librería de películas. El pluging no solo permite renombrar y organizar de acuerdo a el nombre real de este vídeo, temporada y episodio si no también descarga automaticamente los subtítulos e información adicional al vídeo. Aquí les dejo un vídeo de el AppleTV iniciando desde el USB patchstick (el pendrive que preparamos) e instalando todo lo necesario. 
</p>
<div style="text-align:center;">

<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/toulYfy8wp0&amp;hl=en_US&amp;fs=1?rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/toulYfy8wp0&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>

</div>

<p>
Proximamente buscare de instalar macports o el portage de gentoo si es posible. Quiero migrar este site así como linuxevolution.org al AppleTV.
</p>
<br />
<p><i>
<b>Galería Vinculada:</b> <a href="http://www.orvtech.com/images/galleries/liberando_appletv/index.html">Instalando sshd en el appletv</a>
</i></p>
</div>
</content>

</entry>
<entry>
<title type="html">AppleTV, el futuro remplazo de mi NSLU2</title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/07/08/appletv_el_futuro_remplazo_de_mi_nslu2/index.html"/>

<id>http://www.orvtech.com/archives/2010/07/08/appletv_el_futuro_remplazo_de_mi_nslu2/index.html</id>
<published>2010-07-08T15:01:31-04:00</published>
<updated>2010-07-08T15:01:31-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<category term="Apple" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
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:
</p>
<div style="text-align: center;">
<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 1 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-1.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 2 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-2.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 3 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-3.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 4 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-4.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 5 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-5.gif" height="100px" width="100px" /></a>
<br />
<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 6 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-6.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 7 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-7.gif" height="100px" width="100px" /></a>

<a href="http://www.orvtech.com/images/galleries/appletv_con_nslu2/index.html" alt="Foto 8 del AppleTV y mi NSLU2"><img src="http://www.orvtech.com/images/galleries/appletv_con_nslu2/thumbs/appletv-8.gif" height="100px" width="100px" /></a>

</div>
<br />
<p>
Las características técnicas del equipo son:
<table border="0">
<tr><td>Procesador: </td><td> Intel 1.0 GHz "Crofton" Processor </td></tr>
<tr><td>Gráficos: </td><td> NVIDIA GeForce Go 7300 (64 MB VRAM) </td></tr>
<tr><td>Memoria: </td><td> 256 Mb de 400 MHz DDR2 SDRAM </td></tr>
<tr><td>Disco duro: </td><td> 160 GB hard disk </td></tr>
<tr><td>Conectividad: </td><td> USB 2.0, receptor infrarrojo, HDMI y Vídeo por componentes. </td></tr>
<tr><td>Networking: </td><td> 10BASE-T/100BASE-T Ethernet, 802.11 b, g, n wireless networking (AirPort) </td></tr>
<tr><td>Salida: </td><td> 1080p/1080i 60/50 Hz (pero la resolución máxima de vídeo es de 720p)</td></tr>
<tr><td>Audio: </td><td> S/PDIF digital audio óptico, RCA analógico de sonido estéreo </td></tr>
<tr><td>Alimentación: </td><td> Fuente de alimentación universal 48W </td></tr>
<tr><td>Dimensiones: </td><td> 197x197x28 mm (7.7x7.7x1.1 in)</td></tr>
<tr><td>Peso: </td><td> 1.09 kg (2.4 libra)</td></tr>
</table>
</p>
<p>
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.
</p>
<br />
<br />
<p><i>
<b>Galería vinculada:</b> <a href="#">Fotos del AppleTV y el NSLU2</a>.<br />

<b>Artículos Vinculados:</b><br /> 
 &nbsp; &nbsp; <a href="http://www.orvtech.com/archives/2010/05/18/descargas_automatizadas_de_torrents_en_el_nslu2/index.html">Descargas automatizadas de torrents en el NSLU2</a>.<br />
 &nbsp; &nbsp; <a href="http://www.orvtech.com/articles/el_nslu2/">El NSLU2, Especificaciones técnicas.</a>.

</i></p>
</div>
</content>

</entry>
<entry>
<title type="html">Archivos swap y paralelizacion de espacio swap </title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/06/07/archivos_swap_y_paralelizacion_de_espacio_swap/index.html"/>

<id>http://www.orvtech.com/archives/2010/06/07/archivos_swap_y_paralelizacion_de_espacio_swap/index.html</id>
<published>2010-06-07T03:25:41-04:00</published>
<updated>2010-06-07T03:25:41-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
Los archivos swap o particiones swap son archivos que residen en bajo el directorio / (Root Directory) o particiones dedicadas a expandir el espacio para la paginación de memoria (respectivamente). El sistema operativo mantiene el control sobre qué páginas están en memoria principal (RAM) y cuáles no; lleva un registro en la tabla de paginación y le da una prioridad mas alta a el espacio que reside en la RAM. Este espacio permite hacer creer a los programas que tienen más memoria que la disponible realmente.
</p>

<p>
Es el sistema operativo el encargado de mover procesos inactivos para la swap liberando espacio de esta forma espacio en RAM. Este procedimiento de intercambio se lleva a cabo en las dos direcciones dependiendo de las necesidades. 
</p>

<br />
<br />

<p>
<b>Como asigno prioridades a mis archivos o particiones swap?</b><br />
En /etc/fstab podemos usar el parámetro 'pri' y un numero entre 0 y 32767 justo después de sw. Entre mas alto sea el valor de pri mas alta sera su prioridad y mas rápido sera usado. Con Kernels nuevos si tenemos varias particiones swap podemos usarlas en paralelo como si fuese un RAID 0 asignándoles la misma prioridad. 
</p>

<br />
<br />

<p>
<b>Particiones swap trabajando como RAID 0?</b><br />
<div style="text-align:center;"><img src="http://www.orvtech.com/images/raid0.gif"></div>
El parámetro pri no solo permite paralizar el acceso a swap sino también permite asignar mayor prioridad a discos mas rápidos, sectores de disco que son mas rápidos (los que están al inicio del disco son mas rápidos que los que están al final) y hacer un mejor uso de nuestros recursos como lo podemos ver en este ejemplo:
<pre>/dev/sda2    none  swap  sw,pri=4    0    0
/dev/sdb2    none  swap  sw,pri=4    0    0
/dev/sdc2    none  swap  sw,pri=4    0    0
/dev/sdd2    none  swap  sw,pri=3    0    0
/swapfile    none  swap  sw,pri=2    0    0</pre>
</p>
<br />
<p><i>
<br /><b>Articulos relacionados:</b><br /> <a href="http://www.orvtech.com/archives/2010/06/03/cuanto_le_pongo_de_swap_a_mi_instalaci%C3%B3n_de_linux/index.html">Cuanto le pongo de swap a mi instalación de Linux?</a><br />
<a href="http://www.orvtech.com/archives/2010/06/17/sobre-asignaci%C3%B3n_de_memoria/index.html">Sobre-asignación de memoria.</a>
</i></p>
</div>
</content>

</entry>
<entry>
<title type="html">Cuanto le pongo de swap a mi instalacion de Linux? </title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/06/03/cuanto_le_pongo_de_swap_a_mi_instalacion_de_linux/index.html"/>

<id>http://www.orvtech.com/archives/2010/06/03/cuanto_le_pongo_de_swap_a_mi_instalacion_de_linux/index.html</id>
<published>2010-06-03T01:58:05-04:00</published>
<updated>2010-06-03T01:58:05-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
La pregunta de las 800 mil dolares!, para no extenderme mucho vamos a cubrirlo de forma rápida. Antiguas versiones de sistemas operativos basados en Unix como por ejemplo Solaris requerían tener de espacio swap entre dos y tres veces el tamaño de la RAM. Recuerdo que hace años en Linux se recomendaba 2.5 veces el tamaño de la RAM también. Actualmente no se requiere tanto espacio pero si se lo asignamos lo van a usar. una buena regla para asignar swap podrían ser:
<br />
<ul>
<li>
Para un desktop:
No hace mucho se recomendaba el doble de la memoria física (RAM) pero hoy en día cuando la mayoría de las maquinas tienen 2 gigas de RAM o mas no hace falta. Para el usuario común que usa por ejemplo Firefox, Google Chrome, Virtualbox, Gimp, Thunderbird, Pidgin al mismo tiempo es poco lo que pasara a a swap, yo hice mi prueba y durante la mañana de hoy (4 de Junio del 2010) con 1500MB de RAM lo mas que pase a swap fueron 26 megas. Aquí una captura de pantalla de el output de el comando 'free':

<a href="http://www.orvtech.com/images/free-memory.gif"><img alt="Captura de pantalla del comando free, muestra que con 1500 Megas de RAM solo he pasado a swap 26 " src="http://www.orvtech.com/images/free-memory.gif" align="center" width="450px" height="120px"></a>
</li>

<li>Para un servidor: Se acostumbra un tamaño mas pequeño, por ejemplo la mitad de la memoria fisica de todas formas esto depende de el tipo de servicio que valla a prestar, es bueno monitorear el consumo de recursos e incrementar el RAM de ser necesario (cuidado con el OOM Killer!).
</li>

<li>Para computadoras viejas que tengan por ejemplo 64MB de RAM o 128MB por ejemplo, se recomienda asignar la mayor cantidad posible, inclusive unos 750MB.
</li>

<li>Para los laptops: Como nos comenta <a href="http://www.orvtech.com/archives/2010/06/03/cuanto_le_pongo_de_swap_a_mi_instalaci%C3%B3n_de_linux/index.html#comment-53954305">skatox</a>, es recomendable que minimo tenga la misma cantidad de RAM, para poder guardar en la swap toda la informacion de ella al momento de suspender.</li>
</ul>
</p>

<br />
<p>
<b>Que es un swap file?</b>
<br />
El swap file no es mas que un archivo que se usa de la misma forma que la partición de swap. El archivo debe de ser creado asignándole su espacio determinado y preparado por mkswap tal como se prepara una partición. En versiones antiguas del kernel el usar archivos como swap suponía un sacrificio en velocidad, actualmente no existe mucha diferencia entre el swap file y la partición de swap.
</p>



<br />

<p>
<b>Como creo y monto un archivo como swapfile?</b>
<br />
Así como la partición swap, Linux soporta archivos swap que se pueden crear, preparar y montar de la misma forma que una partición. La ventaja de estos archivos es que no necesitas tener una partición libre en el disco para agregar mas swap a la maquina. 
</p>
<p>
Vamos a crear un archivo de 1GB:
<pre>dd if=/dev/zero of=/swapfile bs=1024 count=1048576</pre>
<br />

Preparemos este archivo para ser usado como swap file:
<pre>mkswap /swapfile</pre>
<br />

Vamos a montarlo:
<pre>swapon /swapfile</pre>
<br />

La entrada en /etc/fstab debería de lucir algo así, en caso de que queramos hacerlo permanente:
<pre>/swapfile       none    swap    sw      0       0</pre>
<br />
</p>
<br />
<br />

<p><i>
<b>Artículos vinculados:</b> <br />
<a href="http://www.orvtech.com/archives/2010/06/07/archivos_swap_y_paralelización_de_espacio_swap/index.html">Archivos swap y paralelización de espacio swap</a><br />
<a href="http://www.orvtech.com/archives/2010/06/17/sobre-asignaci%C3%B3n_de_memoria/index.html">Sobre-asignación de memoria.</a><br />
</i></p>

<br />

<p><i>
<b>Update:</b> Gracias al comentario de <a href="http://www.orvtech.com/archives/2010/06/03/cuanto_le_pongo_de_swap_a_mi_instalaci%C3%B3n_de_linux/index.html#comment-54368260">Luis M. Gallardo D</a> que se dio cuenta de este error. La cantidad de memoria recomendada para los desktops fue actualizada. 
</i></p>
</div>
</content>

</entry>
<entry>
<title type="html">Usando el NSLU2 para detectar estafadores en Facebook. </title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/05/31/usando_el_nslu2_para_detectar_estafadores_en_facebook/index.html"/>

<id>http://www.orvtech.com/archives/2010/05/31/usando_el_nslu2_para_detectar_estafadores_en_facebook/index.html</id>
<published>2010-05-31T18:01:20-04:00</published>
<updated>2010-05-31T18:01:20-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<div style="text-align:center;" align=center>
<img src="http://www.orvtech.com/images/galleries/Estafador_de_Facebook/1-facebook-scammer-1.png" alt="Aquí les dejo una conversacion entre un estafador de el Facebook Marketplace y yo. El insistia en comprarme mi carro sin verlo y que luego de hacer el pago el enviaría a un gestor para recoger el carro, para esto el queria pagar lo mas pronto posible pues, segun el, era el compleanos de su cuñado. Me pareció raro que este no llamara ni confirmara que el carro existiese, mas aun que no quería ver el carro antes de hacer el pago y su insistencia en ofrecerle mi información bancaria para, supuestamente, hacerme el deposito lo mas rápido posible" width="450px" height="336px" >
</div>
<p>Aquí les dejo una conversacion entre un estafador de el Facebook Marketplace y yo. El insistia en comprarme mi carro sin verlo y que luego de hacer el pago el enviaría a un gestor para recoger el carro, para esto el queria pagar lo mas pronto posible pues, segun el, era el compleanos de su cuñado. Me pareció raro que este no llamara ni confirmara que el carro existiese, mas aun que no quería ver el carro antes de hacer el pago y su insistencia en ofrecerle mi información bancaria para, supuestamente, hacerme el deposito lo mas rápido posible.</p>
<div style="text-align:center;" align=center>
<img src="http://www.orvtech.com/images/galleries/Estafador_de_Facebook/7-facebook-scammer-7.png" width="450px" height="120px" alt="averiguar su procedencia enviandole un link falso  a una supuesta galeria de imagenes de mi carro que estaria alojada en mi NSLU2">
</div>
<p>Opte por averiguar su procedencia enviandole un link falso  a una supuesta galeria de imagenes de mi carro que estaria alojada en mi NSLU2, la url en cuestión seria <i>/photos/subaru/impreza/sti-photos-forsale/gallery.html</i> en el RootDirectory de este website.</p>

<p>Basto con ejecutar:
 <pre>grep "/photos/subaru/impreza/sti-photos-forsale/gallery.html" access.log</pre> 
</p>
<p>
 Para obtener su IP (41.222.40.199), luego ejecutando un whois sabremos cual es su ubicación. 
 <pre>$ whois 41.222.40.199 | grep ^address
 address:      12th Floor Cocoa House Building
 address:      Oba Adebimpe Street, P.M.B 5350
 address:      Dugbe Post Office, Ibadan, Nigeria
 address:      Odua Telecoms Ltd</pre>
</p>

<p>Nigeria!, ya me convenció... ya le voy a dar mi información bancaria, sera este el famoso principe que necesitaba sacar un dinero malhabido del pais? hasta la vista scammer, tu IP y cuenta han sido reportadas a Facebook y un email acompanhado de screenshots y logs ha sido enviada a badedeji@oduatel.net.</p>    
<br />
<p>
Galeria vinculada:<a href="http://www.orvtech.com/images/galleries/Estafador_de_Facebook/index.html">Detectando estafadores en Facebook Marketplace.</a><br />
Perfil del estafador:<a href="http://www.facebook.com/profile.php?id=100001196010661">www.facebook.com/profile.php?id=100001196010661</a><br />
Articulo en venta en el Facebook Marketplace: <a href="http://apps.facebook.com/marketplace/view/-/1974233097/">Low milage 2008 Subaru Impreza STI.</a>
</p>
</div>
</content>

</entry>
<entry>
<title type="html">Descargas automatizadas de torrents en el NSLU2</title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/05/18/descargas_automatizadas_de_torrents_en_el_nslu2/index.html"/>

<id>http://www.orvtech.com/archives/2010/05/18/descargas_automatizadas_de_torrents_en_el_nslu2/index.html</id>
<published>2010-05-18T15:19:35-04:00</published>
<updated>2010-05-18T15:19:35-04:00</updated>
<category term="Linux" />
<category term="Scripts" />
<category term="NSLU2" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">

<p>Como dice el titulo, automatizado (gracias a cron) y con una consola para monitorear las descargas. La consola luce algo así:</p><div style="text-align:center">
<a href="http://www.orvtech.com/images/torrents_cron_script.png"><img src="http://www.orvtech.com/images/thumb_torrents_cron_script.gif" width="450px" height="297px"></a>
</div>

<p>	
Este es el script que uso para descargar torrents a horas y días pre-determinadas, es un wrapper de btlaunchmanycurses.py y lo llamo en un cronjob a distintas horas y días. Demosle un vistazo y luego hablamos de las opciones:
</p>
<pre>
#!/bin/bash
DESCARGA_VELOCIDAD=1458
COMPARTE_VELOCIDAD=113
LIMPIAR_INTERVALO=5
MIN_PUERTO=27777
MAX_PUERTO=27799
TORRENTS_CARPETA="/home/TU_USUARIO_AQUI/descargas"
DESCARGAS_DESTINO="/home/TU_USUARIO_AQUI/descargas"
test -d $TORRENTS_CARPETA || mkdir -p $TORRENTS_CARPETA
test -d $DESCARGAS_DESTINO || mkdir -p $DESCARGAS_DESTINO
cd $TORRENTS_CARPETA
nice /usr/bin/btlaunchmanycurses.py $TORRENTS_CARPETA \
--saveas_style 3 \
--upnp_nat_access 0 \
--minport $MIN_PUERTO \
--maxport $MAX_PUERTO \
--max_upload_rate $COMPARTE_VELOCIDAD \
--max_download_rate $DESCARGA_VELOCIDAD \
--auto_flush $LIMPIAR_INTERVALO
</pre>
<p>
Para empezar la descarga solo basta poner los *.torrent en <i>~/descargas/</i> y el script hará el resto. 
<br />
<br />
<b>saveas_style:</b>
Que nombre le va a poner a la descarga del torrent. Acepta hasta tres valores del 1 al 3:
<ul>
<li>1= Lo renombra al nombre que el torrent especifica.</li>
<li>2= Lo salva bajo el nombre del torrent.</li>
<li>3= Lo salva dentro de un directorio que tiene el nombre especificado en el torrent.</li>
La ultima (3) es la opcion que usaremos para tener todo mas ordenado.
</ul>
</p>

<p>
<b>upnp_nat_access:</b>
Intenta autoconfigurar un puerto UPnP en el router para que le haga foward al server. En mi caso uso la primera opción que lo deshabilita. Pero aquí tienen la lista completa de opciones:
<ul>
<li>0= deshabilitada.</li>
<li>1= modo 1, esta es rápida y es la que btlaunchmanycurses usa como predeterminada.</li>
<li>2= modo 2, esta es un poco mas lenta.</li> 
</ul>
</p>

<p>
<b>minport:</b>
El puerto que va a usar para escuchar, en caso de que este puerto este ocupado o no este disponible, btlaunchmanycurses utilizara el siguiente puerto y así de manera sucesiva hasta llegar al maxport.
</p>

<p>
<b>maxport:</b>
El número de puerto máximo en el que puede escuchar, el predeterminado es el 60000.
</p>

<p>
<b>max_upload_rate:</b>
El máximo de ancho de banda a usar para compartir nuestros torrents, este acepta el numero máximo de kB/s o estas dos opciones:
<ul>
<li>0= Sin limites.</li>
<li>-1= Automático.</li>
</ul>
El valor predeterminado es 0 (sin limites).
</p>


<p>
<b>max_download_rate:</b>
El máximo de kB/s que se pueden descargar, el valor predeterminado es 0 que indica que no tiene limites.
</p>
<p>
<b>auto_flush:</b>
Los minutos entre cada flush al disco, el predeterminado es 0 que indica deshabilitado.
</p>
<p>
Una opcion que Uds pueden considerar es <i>--random_port</i> que toma los valores 0 o 1, esta opción le dice a btlaunchmanycurses que use un puerto aleatoriamente seleccionado dentro del rango de <i>minport</i> y <i>maxport</i>.
</p>

<br />

<p>
<b>El Cronjob.</b><br />
<pre>
30 0  *   *   *     /home/TU_USUARIO_AQUI/descargas/cron_torrent.sh >/dev/null 2>&1
8  8  *   *   *     /home/TU_USUARIO_AQUI/descargas/killbtlaunch.sh >/dev/null 2>&1
</pre>
Como verán ejecuto dos scripts distintos, uno que levanta el torrent y otro que lo mata. veamos el primero, cron_torrent.sh:
<pre>
#!/bin/bash
screen -D -m -S "torrents-nightly" /home/TU_USUARIO_AQUI/descargas/download.sh
</pre>
Este a las 12:30am creara un screen de nombre <i>torrents-nightly</i> y dentro de ese screen ejecutara el script que discutimos arriba el cual lo llamo download.sh. El segundo script que se ejecuta a las 8:08am termina las descargas. Aquí esta el cod
igo fuente de <i>killbtlaunch.sh</i>:
<pre>
#!/bin/bash
for X in `ps ax | grep -i -E 'btlaunchmanycurses|bittornado|irssi|torrents-nightly' | grep -v grep |awk '{print $1}'`
do kill -9 $X
done
</pre>
</p>
</div>
</content>

</entry>
<entry>
<title type="html">Monitorear ataques a nuestro NSLU2 desde el iPhone.</title>
<author>
<name>orvtech</name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/05/11/monitorear_ataques_a_nuestro_nslu2_desde_el_iphone/index.html"/>

<id>http://www.orvtech.com/archives/2010/05/11/monitorear_ataques_a_nuestro_nslu2_desde_el_iphone/index.html</id>
<published>2010-05-11T18:25:22-04:00</published>
<updated>2010-05-11T18:25:22-04:00</updated>
<category term="Linux" />
<category term="Scripts" />
<category term="NSLU2" />
<category term="Apple" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
Un poco cansado ya de ver los logs todas las mañanas de mi NSLU2, decidí hacer un script que me permita monitorear los ataques mas recientes a mi NSLU2. Para no limitarme decidí hacerlo de tal forma que presentara la información via web. El script aun se puede mejorar almacenando información en un array o incluso en una base de datos sqlite. Pero por ahora me funciona y he estado un tanto ocupado como para optimizarlo. 
</p>
<p>
<b>El Script.</b><br />
Es algo simple, de hecho no hay loops, llamadas a sub-rutinas, condicionales ni nada extraño.
</p>
<pre>#!/bin/bash
FECHA=`date +%d/%b/%Y`

echo &quot;&lt;body&gt;&lt;head&gt;&lt;link href=\&quot;l33t.css\&quot; rel=\&quot;stylesheet\&quot; type=\&quot;text/css\&quot; /&gt;&lt;/head&gt;&lt;textarea name=\&quot;textarea\&quot; cols=\&quot;80\&quot; rows=\&quot;80\&quot; wrap=\&quot;off\&quot;&gt;&quot; &gt; /var/www/public/www/htdocs/stats.html
date &gt;&gt; /var/www/public/www/htdocs/stats.html
echo &quot;-------------------------------&quot; &gt;&gt; /var/www/public/www/htdocs/stats.html
for X in `ls /var/www`
do echo -e $X&quot; &quot; | \
tr '\n' ' '; grep ` date +%d/%b/%Y` /var/www/$X/logs/acces*.log | \
grep -i -E  'html HTTP|htm HTTP|xml HTTP|\/ HTTP|php' | grep -v -E 'rss.xml|\.png|\.gif|\.jpg|\.js|\.css|\.ico|\.css|\.js|rss.xml|stats.html|wp-admin|stats.html|crawl|slurp|msnbot|googlebot|192.168.1.[0-9]|arm-unknown-linux-gnu|localhost' | awk '{print $1&quot; &quot;$12}' | sort | uniq | wc -l 
done  &gt;&gt; /var/www/public/www/htdocs/stats.html

echo &quot;-------------------------------&quot; &gt;&gt; /var/www/public/www/htdocs/stats.html

free &gt;&gt; /var/www/public/www/htdocs/stats.html

uptime &gt;&gt; /var/www/public/www/htdocs/stats.html

echo &quot;-------------------------------&quot; &gt;&gt; /var/www/public/www/htdocs/stats.html

echo `grep $FECHA /var/www/public/logs/acces*.log | grep '/livecasts/js/test.js' | awk '{print $1&quot; &quot;$12}' | wc -l | awk '{print &quot;Livecast Hits: &quot;$1}'` &gt;&gt; /var/www/public/www/htdocs/stats.html
echo `grep $FECHA /var/www/public/logs/acces*.log | grep '/livecasts/js/test.js' | awk '{print $1&quot; &quot;$12}' | sort |uniq | wc -l | awk '{print &quot;Livecast Uniq Hits: &quot;$1}'` &gt;&gt; /var/www/public/www/htdocs/stats.html

echo &quot;-------------------------------&quot; &gt;&gt; /var/www/public/www/htdocs/stats.html

grep `date +%m/%d/%Y` /etc/portsentry/portsentry.history  &gt;&gt; /var/www/public/www/htdocs/stats.html

echo &quot;&lt;/textarea&gt;&lt;/body&gt;&quot; &gt;&gt; /var/www/public/www/htdocs/stats.html</pre>

<p>
Como pueden ver, hace analiza los logs, descartando peticiones de imágenes, archivos xml, javascripts, hojas de estilo, peticiones por host locales, spiders de buscadores, etc. luego solo toma la IP y el URL que se esta pidiendo y se asegura que sea único para dar lo mas cercano a 'uniq hits'. En las dos siguientes lineas se imprimen estadísticas de uso de memoria, tiempo de prendido y carga.<br />
En las próximas 2 lineas saco estadistas de una aplicación (que ya esta en producción) para hacer livecast, luego publicare el código y mas detalles pero por lo pronto puedo decirles lo siguiente, el Live Cast este es una aplicación que permite a transmitir en tiempo semi-real (retraso de 2 a 5 minutos) fotos de un evento con un foro. Esta optimizado para eventos de automovilismo donde la temperatura, presión barométrica y hora son importantes tener. <br />
Aquí les dejo una de las imágenes que publica esta aplicación, en esa oportunidad la usamos unas 7 personas al mismo tiempo:
</p>
<a href="http://www.orvtech.com/images/iphone_livecast_demo.png"><img src="http://www.orvtech.com/images/iphone_livecast_demo.png" width="480px" height="320"/></a>
<p>
Retomando el tema y directo al grano, las ultimas lineas del script buscan los eventos del día registrados por portsentry y los publica. El resto de las lineas son solo para formateo y maquillaje del archivo HTML que este crea. En mi caso lo tengo corriendo en este cronjob: 
</p>
<pre># m h  dom mon dow   command
*/10  *  *  *  *  /home/linuxevolution.org/scripts/uniqhits.sh</pre>
<p>
El script se puede ver en el iPhone con esta apariencia:
</p>
<img src="http://www.orvtech.com/images/iphone_view_site_stats.png" />
<br />
</div>
</content>

</entry>
<entry>
<title type="html">Que distro usas tu? cual me recomiendas? </title>
<author>
<name></name>
</author>
<link rel="alternate" type="text/html" href="http://www.orvtech.com/archives/2010/04/25/que_distro_usas_tu_cual_me_recomiendas/index.html"/>

<id>http://www.orvtech.com/archives/2010/04/25/que_distro_usas_tu_cual_me_recomiendas/index.html</id>
<published>2010-04-25T16:05:16-04:00</published>
<updated>2010-04-25T16:05:16-04:00</updated>
<category term="Linux" />
<category term="NSLU2" />
<category term="Apple" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
No hace mucho me preguntaron que distribución de Linux usaba y cual le podía recomendar a esta persona que recién se esta metiendo en el mundo de la informática a nivel laboral. Para hacer la historia corta, esta fue mi respuesta:
</p>

<p>
 <ul>
    <li>Distro por preferencia: Gentoo.</li>
    <li>Distro en servers del trabajo (los que no usan solaris): CentOS y una distro propietaria igual pasada en RPMs.</li>
    <li>Distro en mi laptop de trabajo: Fedora.</li>
    <li>Distro en mi VPS (Virtual Private Server): Gentoo.</li>
    <li>Distro en mi NSLU2: Debian pero en lo que tenga tiempo le meto Gentoo de nuevo.</li>
    <li>Distro en mi casa: Ninguna, uso OSX Snow Leopard.</li>
  </ul>
</p>
<div align="center">
<a href="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/"><img src="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/thumbs/linux.gif" /></a>
<a href="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/"><img src="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/thumbs/terra-linux.gif" /></a>
<a href="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/"><img src="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/thumbs/osx-snow.gif" /></a>
<a href="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/"><img src="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/thumbs/linux-smallscreen.gif" /></a>
<a href="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/"><img src="http://www.orvtech.com/images/galleries/Mis_Capturas_de_Pantalla_de_SOs/thumbs/osx-leopard.gif" /></a>
</div>
<br />
<p>
<b>Que distro me recomiendas?</b><br />
Vaya pregunta... sin saber mucho de que es lo que esta persona va a hacer con la distro, que tanto sabe de Linux y cuales son sus preferencias, no quise caer en la típica respuesta de prueba X, Y, Z y W distros y elige la que a ti mas te gusta. Gracias a que a los segundos me comento que en su oficina estaban migrando un proxy y otros servicios a Fedora, sin duda alguna le conteste de una vez Fedora.
</p>

<p>
<b>Gentoo por Preferencia.</b><br />
A pesar de que entre en el mundo de Linux como la mayoría, usando redhat (7.1 en mi caso) pase a usar Gentoo por mucho tiempo a raíz de que redhat deja de sacar las versiones para desktop (creo que fue justo después de redhat 9), Fedora 1 sale con un bug que cambiaba la geometría del disco y francamente estaba muy crudo en esa entonces.
<br />
Probé SuSE y Mandrake pues eran las distros mas populares basadas en RPMs después de redhat/Fedora pero no encontré lo que estaba buscando, SuSE era excelente mientras hicieras todo por el YaST (que francamente es tremendo panel de control, no tengo quejas algunas), cosa que no me gusto pues ya estaba acostumbrado a hacer un montón de cosas vía terminal. Es en este memento cuando me doy cuenta de que lamentándolo mucho tenia que buscar una distro fuera del grupo basadas en RPM.
<br />
Optimizado desde que se compila para el hardware en que se va a correr y optimizado para lo que uno lo va a usar Gentoo me llamo mucho la atención. Como todo el mundo me costo aprender como se instalaba y como todo el mundo aprendí el costo que las optimizaciones de velocidad tienen sobre la estabilidad y funcionalidad hasta encontrar ese balance perfecto para mi.
<br />
Hoy en día lo sigo recomendando tan pronto me preguntan 'como puedo aprender Linux?' creo que no hay mejor forma de aprender Linux que construyendo tu propia distro usando la meta-distribución Gentoo, aprendes como funciona el sistema operativo de arriba a abajo.
</p>

<p>
<b>CentOS en el Trabajo.</b><br />
En esto si no tuve ni voz ni voto, la empresa para la que trabajo ya usaba una distro propietaria (TerraLinux) basa en RPMs, optimizada para lo que hacemos y habían tomado la decisión de no seguir manteniendola, CentOS fue lo mas sensato y menos costoso (comparado con Redhat Enterprice). La transición a la nueva distro ha sido fácil, lenta (muchos paquetes deben de ser recompilados) pero la verdad que fácil.
</p>

<p>
<b>Fedora en mi Workstation.</b><br />
La necesidad de compilar paquetes para el trabajo y al mismo tiempo resolver problemas me llevo a formatear el Lenovo T60 con Linux, al principio instale Gentoo pero al poco tiempo me di cuenta que para colaborar con el empaquetado de aplicaciones y desarrollo de algunas cosas, debía usar una distro basada en RPMs. CentOS fue lo que inmediatamente pensé e instale, pero me di cuenta que para usarlo como desktop es un poco limitado comparado con Fedora. Actualmente uso Fedora 12, que para mi sorpresa, ha resultado sumamente estable y sin ningún problema.
</p>

<p>
<b>Gentoo Para el VPS.</b><br />
Hace poco mas de un año se me presento la necesidad de montar un VPS para separar 2 websites que tienen tendencias anti-gubernamentales (específicamente para el actual gobierno de Venezuela) de mi NSLU2, la carga que estos dos websites ya era mucho y estaba bajo constantes ataques que mantenían el procesador de 133MHz y los 32MB de RAM de mi NSLU2 siempre al tope de carga. Linode ofrece Gentoo como OS para los VPS, asi que sin pensarlo dos veces volvi a mi distribución de Linux favorita y no mire atrás.
</p>

<p>
<b>Debian Queriendo Regresar a Gentoo en mi NSLU2.</b><br />
Como comente en un principio mi NSLU2 corría Gentoo, funcionaba de las mil maravillas hasta que la arquitectura dejo de ser soportada. Recuerdo que el primer problema fue con python, la nueva versión de python requería una serie de molificaciones al sistema operativo base antes de poder ejecutar el emerge -u python, algunos paquetes requerían ser enmascarados, otros requerían ser desenmascarados, etc... Al poco tiempo se siguieron presentando problemas de este estilo hasta que me fue imposible seguir dedicándole tiempo a resolverlos, recuperar mi instalación e ignorar actualizaciones que parcheaban huecos de seguridad. Debian me pareció la mejor solución (a falta de Gentoo) y francamente creo que la unica distro que funcionaba en el NSLU2.
<br />
Debian en el NSLU2, no me puedo quejar de la estabilidad para nada, de la disponibilidad de paquetes aunque hay veces que desearía versiones mas nuevas nuevas. Extraño la velocidad y flexibilidad de Gentoo, extraño el poder tener versiones nuevas de paquetes y no aplicaciones que tiene mas de un año de ser liberadas. Algún día regresare mi NSLU2 a Gentoo.
</p>
<br />
<br />
<p><i>
Nota: En mi casa uso OSX (Snow Leopard), una MacBook Pro. Es mi sistema operativo preferido, no creo que regrese a Linux para mi desktop por mucho tiempo.
</i></p>
</div>
</content>

</entry>

</feed>
