Partimos de una NSLU2 de Linksys con Debian GNU/Linux 4.0 (alias etch) y de un adaptador USB Wi-Fi DWL-G122 Ver. C1 de D-Link. Para que dicho adaptador funcione con la NSLU2, hay que compilar los drivers oportunos, pues el Linux de la Debian para este cacharro viene sin ellos. La versión C1 del DWL-G122 trae el 'chipset' rt73 de Ralink y los fuentes para los mismos se pueden encontrar en la página del proyecto rt2x00. Ahí proporcionan dos tipos de drivers: 'antiguos pero mejorados' y de 'nueva generación'. Puesto que los de nueva generación están muy ligados a las últimas versiones del núcleo, opté por utilizar los antiguos. Los pasos que dí para compilarlos fueron los que se pueden ver en este foro (primer comentario de Sinclair73). Es decir, desde el Linux de la NSLU2 (previamente hay que tener instalados los paquetes make, gcc & co.) ir ejecutando:
1) Bajar y descomprimir los fuentes del driver:
1) Bajar y descomprimir los fuentes del driver:
$ wget http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz
$ tar zxvf rt73-cvs-daily.tar.gz
2) Editar el fichero Module/rtmp_init.c para cambiar el cuerpo de la función RTMPMoveMemory a solo { memcpy(pDest, pSrc, Length); }
$ cd rt73-cvs-AAAAMMDDHH
$ vi Module/rtmp_init.c
// RTMPMoveMemory debe quedar así:
VOID RTMPMoveMemory(
OUT PVOID pDest,
IN PVOID pSrc,
IN ULONG Length)
{
memcpy(pDest, pSrc, Length);
}
3) Compilar el driver:
$ cd Module
$ make arm
4) Copiar el modulo rt73.ko resultante a un punto adecuado en /lib:
$ su
# mkdir -p /lib/modules/`uname -r`/kernel\
/drivers/net/wireless/rt2x00-legacy/
# cp rt73.ko /lib/modules/`uname -r`/kernel\
/drivers/net/wireless/rt2x00-legacy/
5) Copiar el firmware rt73.bin a /lib/firmware:
# cp rt73.bin /lib/firmware
6) Actualizar las dependencias de módulos:
# depmod
7) Editar el /etc/network/interfaces y dejarlo a nuestro gusto según la red inalámbrica que tengamos, teniendo en cuenta que el alias para la interfaz de red de la DWL-G122 será wlan0. Así que para una red sin encriptación y con asignación de direcciones ip estáticas, la entrada correspondiente en dicho fichero podría ser:
allow-hotplug wlan0
iface wlan0 inet static
pre-up ifconfig wlan0 up
pre-up iwconfig wlan0 mode Managed
pre-up iwconfig wlan0 essid "nombredelared"
address 192.168.0.188
netmask 255.255.255.0
gateway 192.168.0.1
Con esto ya podemos poner nuestra NSLU2 en cualquier sitio de la casa. Hay opciones más inmediatas para tener una NAS con conexión inalámbrica, como la Asus WL-HDD 2.5, pero la instalación en estas de cualquier otra versión de GNU/Linux que no sea la de fábrica no está tan 'trabajada' como la de la NSLU2. Y si ya tenemos una NSLU2, pues viene bien esta 'ampliación'.
Notas: en algunas ocasiones he tenido un comportamiento algo inestable, de modo que al arrancar la NSLU2 el enlace no estaba disponible o este sufría caídas intermitentes. La solución siempre era o tirar y levantar el enlace con:
# ifdown wlan0
# ifup wlan0
o, desconectar y volver a conectar físicamente el DWL-G122, si no disponía de una sesión telnet/ssh contra la NSLU2. Puesto que últimamente no he sufrido casi estos inconvenientes, me inclino a pensar que son causados por factores ambientales (¿interferencias de algún tipo?). Seguiré investigando, y si encuentro algo, añadiré comentarios.
Actualización: Aquí se puede encontrar mucha más información sobre como conectar adaptadores WiFi a nuestra NSLU2.