¿Es redimible un Linksys WRT54Gv8.0?

Linux se puede instalar en la actualidad en una variedad de dispositivos asombrosos.

Interfaz web de dd-wrt

Los wireless routers Linksys WRT54G desde la versión 1.0 hasta la 4.0 podían ser flasheados con OpenWRT, lamentablemente a partir de la versión 5.0 en adelante, la empresa decidió reducir la cantidad de memoria disponible, y además cambiar a un sistema privativo (VxWorks).


Para compensar esto, en algún momento lanzó a la calle el modelo WRT54GL, recuperando la compatibilidad con OpenWRT.

  1. Ahora bien, ¿qué pasa si ya tenemos un WRT54G 8.0? la respuesta es definitiva: No se puede instalar OpenWRT. Así de sencillo, la razón es que los desarrolladores de dicho sistema operativo no están dispuestos a trabajar para un espacio de memoria tan reducido.

No obstante, dentro de la variedad que tenemos en el mundo del software libre, se puede optar por dd-wrt. Las últimas versiones vienen con una herramienta que permite sacar al VxWorks, instalar dd-wrt y recuperar el firmware original en el caso de que algo salga mal o que el sistema open source no haya convencido las expectivas.

Estadísticas

He probado dd-wrt sobre un WRT54G 8.0 y me ha funcionado. Es asombroso como el software libre consigue adaptarse a un espacio tan pequeño. El sistema permite, entre otras cosas:

  • Usar un servicio de DDNS
  • Configurar routing avanzado
  • Trabajar con RADIUS
  • Definir una serie de configuraciones avanzadas de wireless tales como soporte multimedia y restricciones de acceso por bandas horarias.
  • Soporte para WDS
  • Tareas programas

Sin embargo, no todas son buenas. Dos carencias notables con respecto a OpenWRT es la carencia de ssl y de ssh. El tráfico web va en texto plano, el acceso de consola es mediante el infame telnet.

Telnet - iptables

Como todo Linux y al igual que en OpenWRT se pueden crear reglas con iptables. Pero tampoco se pueden esperar lujos, como tener un editor de textos o una partición al estilo jffs2. Muchas cosas se configuran con el comando nvram.

Con todo, la experiencia de instalar un Linux en un dispositivo para que parece haberse concebido para que dicha alternativa sea posible, es digna de realizar.

Consumo del ancho de banda

Existen situaciones en las cuales se desea saber que transferencias de la red esán causando un mayor consumo del ancho de banda. Existe una herramienta muy bonita y útil llamada iftop que cumple bastante bien esa función, aunque trabaja solamente con una interfaz de red. iftop

La pantalla de iftop ordena los hosts de acuerdo a la cantidad de bits por segundo transferidos durante los últimos diez segundos. Muestra otras estadísticas interesantes, además de ser configurable gracias a opciones, filtros y/o archivo de configuración. Un aspecto no tan positivo de iftop es que lleva algo más de dos años que no saca una versión nueva.

Fragmentacion en ext3

En repetidas oportunidades se ha dicho que Linux, o más precisamente que ext2 y ext3 no necesitan un defragmentador. La fragmentación existe, pero se supone que no afecta el rendimiento de esos sistemas de archivos. Sin embargo, al mejor estilo Unix, existe una aplicación no muy conocida llamada filedefrag que sirve para ver el grado de fragmentación de un determinado archivo.

filefrag

Se puede leer un interesante y artículo y discusión al respecto en OneAndOneIs2, además de esta mención en Wikipedia de ext3.

Fib3rtel cada vez peor

Desde el año 2003 soy cliente de Cabl3v1sion y Fib3rtel.

En los últimos años se ha producido un importante deterioro no solo
del servicio, sino tambien de la atención al cliente.

Fibertel impone al usuario (no lo hace explicito) un proxy
transparente, esto significa que hay un límite al tamaño de los
archivos que se pueden descargar.

Esto no es lo peor. Recientemente me mudé. Entonces solicité la
transferencia del servicio al nuevo domicilio (apenas unas diez
cuadras de diferencia). Intentar comunicarse llevó todo el día. Una
vez que alguien nos contestó, y luego de varios minutos, se acordó una
fecha para que pasaran por la nueva dirección para realizar la nueva
conexión. Todo parecía ir medianamente bien dentro la mediocre atencion acostumbrada.

Resulta que la persona que vive en mi domiicilio anterior, ahora dice
que no puede solicitar el cable porque le dijeron en Cablevision que
tenemos una deuda. Esto es inexacto. La unica que no teníamos paga era la
de marzo (ni siquiera estaba vencida) y de hecho ya la abonamos.
Llamamos el ultimo viernes 7/3/08 y nos confirmaron (tal como
habiamos quedado la semana anterior) que pasarian el sabado 8, de 8 a
14 hs.
Bien, estuve toda la mañana esperando (en mi casa) inultimente para nada. A eso de
las 13:15 llamo para ver que estaba ocurriendo para ver si iban a
venir o no. La persona que me atendió me dijo que sí, que iban a pasar
en una media hora.

Pasó la media hora y nada. Entonces llamé alrededor de las 14:30, me
contestaron ahora que iban a pasar de 14 a 20Hs!. Muy molesto, les
dije que deberían haber avisado, pero el empleado de la empresa me
decía que ése era el horario asignado!!! OK, esperé y esperé hasta las
18 hs. llamé de vuelta, qué me dijeron? Que NO iban a pasar.
Resultados objetivos:

  • Mintieron respecto de la hora y el día.
  • Perdí todo medio fin de semana en mi casa.
  • Estoy todavía sin TV con cable y sin internet, y encima pagando, una
    cifra NADA despreciable.

¿Qué puede hacer el consumidor frente a estos atropellos? ¿No es hoy en
la práctica un monopolio lo que ejerce esta empresa, y por eso
descuida a los clientes históricos?

¿De todas maneras, a a quien cara** le importa?

Menús contextuales

GNOME ha mejorado muchísimo en cuanto a usabilidad se refiere. Por ejemplo, Nautilus tiene una herramienta para agregar opciones al menú contextual, tal como se puede leer en este artículo. En KDE, también se puede hacer eso, aunque no hay por ahora una herramienta específica para eso. No obstante crear una entrada a mano, no es tan complicada.

En el directorio /usr/share/apps/konqueror/servicemenus/ están los archivos para cada una de estas opciones. Como es habitual cada usuario puede tener sus propias entradas en ~/.kde/share/apps/konqueror/servicemenus. Hay dos artículos recomendables para leer, uno para GNOME y otro para KDE.

Debajo inserto un ejemplo de un archivo llamado openasroot.desktop, lo creé para acceder como root a directorios a los cuales no tengo permisos como un usuario ordinario.

Opción del menú de servicios personalizada

[Desktop Entry]
ServiceTypes=inode/directory-locked
Actions=ineedtoberoot

[Desktop Action ineedtoberoot]
Name=Abrir como root
Exec=kdesu -c konqueror -u root
Icon=password

Interfaces de red en Xen

Cuando se arranca con kernel Xen en Centos 5.1 genera cuatro interfaces más de red (suponiendo que tenemos solamente una placa de red): peth0, vif0.0, virbr0 y xenbr0.

eth0 Link encap:Ethernet HWaddr 00:16:76:6F:2D:6C
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:76ff:fe6f:2d6c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26381 errors:0 dropped:0 overruns:0 frame:0
TX packets:21968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:36205072 (34.5 MiB) TX bytes:1598392 (1.5 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1263 errors:0 dropped:0 overruns:0 frame:0
TX packets:1263 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2078804 (1.9 MiB) TX bytes:2078804 (1.9 MiB)

peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:26404 errors:0 dropped:0 overruns:0 frame:0
TX packets:22041 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36210479 (34.5 MiB) TX bytes:1730806 (1.6 MiB)
Interrupt:21 Base address:0x4000

vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:21968 errors:0 dropped:0 overruns:0 frame:0
TX packets:26381 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1598392 (1.5 MiB) TX bytes:36205072 (34.5 MiB)

virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:9337 (9.1 KiB)

xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:46934 (45.8 KiB) TX bytes:0 (0.0 b)

Lo que hace es crear dos bridges:

  • virbr0: Sin interfaces
  • xenbr0: Interfaces peth0 y vif0.0

Cuando se levanta un sistema operativo en el DomU cambia a:

  • virbr0: vifN.0
  • xenbr0: Interfaces peth0 y vif0.0

Paravirtualizando con Xen

A pesar de que el propio Linus Torvalds recientemente le quitó relevancia a la virtualización, sigue siendo un recurso muy importante en muchos ámbitos. Mediante la virtualización podemos consolidar distintos sistemas operativos en un sólo equipo físico, con el consiguiente ahorro económico. Además, supone más facilidad de administración, usar entornos separados para el desarrollo de software (se evita el tedioso reinicio del sistema real), evaluar software de tipo experimental de manera inocua, etc.


Arranque de un sistema en DomU

Existen muchas opciones en lo que a virtualización se refiere. Xen es una de ellas, que usa una técnica llamada paravirtualización. Sintéticamente, esto signfica que Xen es un hipervisor, es decir es un software que es lanzado por el cargador de arranque y que simula ser el hardware real. El hipervisor por si solo no puede hacer demasiado, lo que hace es llamar a un sistema operativo virtualizado, lo que llamaríamos un guest, que en la jerga de Xen se denomina Dom0. Este Dom0 no es cualquier guest, es el sistema que tiene el único privilegio de acceder al hipervisor, es decir al pseudo-hardware. Lo interesante de esto es que el Dom0 puede gestionar a otros dominios llamados DomU, es decir podemos tener otros sistemas operativos invitados.

La ventaja de esta técnica es que todos los sistemas operativos instalados acceden a los mismos drivers, con lo cual la performance de un sistema instalado como DomU es casi idéntica a la de un sistema nativo.



Por supuesto, como casi nada es perfecto, esto tiene una desventaja, es necesario que los sistemas invitados estén modificados para poder ser invitados en Xen. Es por eso que se usa un kernel especial, que de hecho lo primero que hace es arrancar Xen, y luego el Dom0. La otra desventaja que tiene es que las distros del DomU y la del Dom0 tienen que ser idénticas para que la implementación sea sencilla. Es decir, si Dom0 es Centos 5.1 una distro del DomU también debe ser Centos 5.1. Obviamente hay excepciones, de hecho, la virtualización completa a diferencia de la paravirtualización permite que un sistema cerrado como Windows esté como sistema invitado.

Fib3rtel pone restricciones para bajar archivos grandes

Quería bajar una imagen iso de DVD de Centos 5.1. Sin embargo, noté que la descarga terminaba bastante rápido. Algo extraño estaba pasando, teniendo en cuenta que se trata de un archivo de 4,1 G. Pensé que se trataba de un problema del mirror. Pero luego probando con otros mirrors, e inclusive probando con ISOs de DVD de otras distribuciones, advertí que el problema se repetía.

$ wget http://linux.cucea.udg.mx/espejo/Mandriva/2008.0/mandriva-linux-2008.0-free-dvd-i586.iso
–07:49:15–  http://linux.cucea.udg.mx/espejo/Mandriva/2008.0/mandriva-linux-2008.0-free-dvd-i586.iso=>`mandriva-linux-2008.0-free-dvd-i586.iso’
Resolving linux.cucea.udg.mx… 148.202.23.6
Connecting to linux.cucea.udg.mx|148.202.23.6|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 269,768,704 (257M) [application/octet-stream

En la lista de correo Centos-mirror, John Lauro me dio una sencilla pero ingeniosa idea: comprobar si el sistema de archivos que estaba utilizando tenía un límite para crear archivos grandes. La primera prueba se puede hacer así:

$ dd if=/dev/zero of=5GB-file bs=1M count=5000

Entonces, obtuve un archivo llamado 5GB-file de 4,9 GB, lo cual era un primer indicio de que el sistema de archivos no era el problema. Tengo un wireless router que se conecta a Internet, que sirve como intermediario para una PC y una notebook. Creí por un momento que el Linksys WRT54G era el problema. Pero no, ya que conectándo la PC directamente al cablemodem tenía el mismo problema. La sospecha entonces comenzaba a apuntar fuertemente en dirección a Fib3rtel.

Luego, hice la siguiente prueba sugerida por John, hacer una descarga de un archivo grande desde un servidor web local. Así que eso hice, inicié Apache (de la PC con Mandriva 2008), puse un archivo de 4,9 GB e intenté bajarlo desde la notebook (con Fedora 8). Este fue el resultado:

$ wget http://192.168.1.2//5GB-file
--19:35:19--  http://192.168.1.2//5GB-file=> `5GB-file'
Connecting to 192.168.1.2:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5,242,880,000 (4.9G) [text/plain]0% [] 2,078,996      1.10M/s

Este resultado, sumado a las pruebas con tcptraceroute (idea leída del blog de Javier Smaldone) entre información recolectada, dieron el veredicto: No sólo Fib3rtel interpone a sus clientes un proxy transparente, sino que además impone un límite al tamaño de los archivos que se descargan. La pregunta (ingenua) es ¿Por qué la empresa no lo dice?

En lugar de llamar a Fib3rtel, y estar lidiando con la gente apenas capacitada del soporte técnico (y esperar los típicos diálogos del tipo: “Haga doble clic en Mi PC” – “Eh… uso Linux” o “Desconecte y reconecte su modem”, o , etc) encontré una solución al problema: usar Tor + Privoxy, los cuales me permiten esquivar el proxy transparente de Fib3rtel.

Descarga limitada por el proxy transparente de Fib3rtel:

$ wget http://holmes.umflint.edu/centos/5.1/isos/x86_64/CentOS-5.1-x86_64-bin-DVD.iso
–13:25:01–
http://holmes.umflint.edu/centos/5.1/isos/x86_64/CentOS-5.1-x86_64-bin-DVD.iso => `CentOS-5.1-x86_64-bin-DVD.iso’
Resolving holmes.umflint.edu… 141.216.3.72
Connecting to holmes.umflint.edu|141.216.3.72|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 147,687,424 (141M) [application/octet-stream]

$ export http_proxy=127.0.0.1:8118

$ wget http://holmes.umflint.edu/centos/5.1/isos/x86_64/CentOS-5.1-x86_64-bin-DVD.iso

–13:25:19–

http://holmes.umflint.edu/centos/5.1/isos/x86_64/CentOS-5.1-x86_64-bin-DVD.iso=> `CentOS-5.1-x86_64-bin-DVD.iso.1′
Connecting to 127.0.0.1:8118… connected.
Proxy request sent, awaiting response… 200 OK
Length: 4,442,654,720 (4.1G) [application/octet-stream]

Hasta la próxima.

Acceder a imágenes ISO

De acuerdo a Wikipedia, una Imagen ISO es Imagen ISO

es un archivo donde se almacena una copia o imagen exacta de un sistema de ficheros, normalmente un disco compacto (como un CD o un DVD)

Algo interesante es que uno puede acceder al interior del archivo y explorar las carpetas y los archivos de manera bastante transparente.

Supongamos que tenemos el archivo mandriva-linux-2008-one-KDE-cdrom-i586.iso

Para ver el contenido es cuestión de montar el archivo como si fuera un sistema de archivos. Esto se consigue gracias al módulo loop del kernel.

Entonces sencillamente se puede hacer:

mkdir /loop1  
mount -o loop mandriva-linux-2008-one-KDE-cdrom-i586.iso /loop1

Entonces, se puede ver el contenido de la imagen ISO:

ls
boot isolinux LISEZMOI.pdf loopbacks README.pdf

Dentro del directorio loopbacks de la imagen está el directorio loopbacks. Podemos ver su contenido:

ls /loop1/loopbacks  
distrib.sqfs

¿De qué tipo de archivo se trata?

/loop1/loopbacks/distrib.sqfs: Squashfs filesystem, little 
endian, version 3.0, 721071324 bytes, 98645 inodes, blocksize: 65536 
bytes, created: Mon Oct 8 19:01:20 2007

Se trata justamente de un sistema de archivos squashfs usado con frecuencia en Live-CDs, ya que permite compresión de archivos y tiene soporte para escritura.

Se puede montar este sistema de archivos también:

mkdir /loop2  
mount -o loop -t squashfs /loop1/loopbacks/distrib.sqfs /loop2  
ls -l /loop2  
total 0  
drwxr-xr-x 2 root root 1122 oct 8 04:53 bin  
drwxr-xr-x 3 root root 201 oct 8 12:19 boot  
drwxr-xr-x 26 root root 63160 oct 8 05:03 dev  
drwxr-xr-x 96 root root 2969 oct 8 05:04 etc  
drwxr-xr-x 3 root root 22 oct 8 05:04 home  
drwxr-xr-x 2 root root 3 jul 27 2007 initrd  
drwxr-xr-x 13 root root 2523 oct 8 05:04 lib  
drwxr-xr-x 4 root root 33 oct 8 04:50 media  
drwxr-xr-x 3 root root 21 oct 8 04:50 mnt  
drwxr-xr-x 2 root root 3 jul 27 2007 opt  
drwxr-xr-x 2 root root 3 oct 8 04:36 proc  
drwx—— 9 root root 203 oct 8 05:04 root  
drwxr-xr-x 2 root root 3764 oct 8 05:04 sbin  
drwxr-xr-x 2 root root 3 oct 8 04:36 sys  
drwxrwxrwt 5 root root 56 oct 8 12:19 tmp  
drwxr-xr-x 12 root root 167 oct 8 04:50 usr  
drwxr-xr-x 16 root root 154 oct 8 04:50 var

¿Suena familiar? Todo este arbol de directorios con sus archivos es el que se descomprime luego de arrancar el Live-CD.

Inspeccionando un poco más se ve que el directorio boot contiene un INIT Ram Disk y la imagen compilada del kernel Linux. De manera que todo estos archivos se pueden copiar a una partición, y configurando apropiadamente GRUB puede arrancarse directamente desde el disco rígido. De manera que nos ahorramos un CD…