Ampliando el espacio de almacenamiento de la fonera

Bueno, tras unas cuantas peleas con los fuentes del kernel de la fonera, y tras horas y horas intentando hacer que funcionase el smbfs para poder montar uno de mis discos ethernet en mi fonera para dotarla de más espacio de almacenamiento, me dió por probar con el módulo cifs del kernel y... ¡lo conseguí hacer funcionar! jejeje mi fonerita ahora tiene un disco de 250 Gigabytes XD

El Making Of

Voy a relatar los pasos que he dado, por si alguno los quisera reproducir.
Primero, me bajé los fuentes de la fonera, los descomprimí, constuí el buildroot y el kit de desarrollo completo de la OpenWRT que trae.
Bueno, eso lo puedes leer en el anterior artículo: Jugando con las fuentes de la Fonera

Una vez que tuve el buidroot, ya estaba en disposición de compilar cosillas, así que mi primer intento fué hacer funcionar el módulo smbfs del kernel, que es un modulo que permite mapear discos de red compartidos de ordenadores Windows (o de ordenadores Linux que usen el Samba).

Pude compilar el módulo sin problemas, pero a la hora de mapear algo me daba un error... claro, luego leí que con sólo el módulo ese del kernel no es suficiente.
El módulo necesita de un programa externo para realizar el montaje: el smbfs y claro, en la OpenWRT no lo veís como paquete, y no es cuestión de andar adaptando un paquete de otra distribución... (menudo coñazo).

Así que el siguiente paso fué intentarlo con el módulo cifs, que es lo que usan actualmente los Windows modernos para compartir sus recursos de red.

Bien, la fonera no trae incluído en el kernel el cifs, ni lo tiene tampoco compilado como módulo, así que necesitaba sacar de algún lado dicho módulo, metérlo en la fonera y probarlo, así que eso es lo que hice :)

En los fuentes proporcionados por fon se encuentran tambien las fuentes del kernel utilizado, así que sólo debía ir allí, hacer un make menuconfig, luego un make modules y ¡voila! ya tendría mi modulito.
(Para impacientes, más abajo en este documento he colocado un enlace al modulo que he generado, por si te quieres ahorrar todo este coñazo de la compilación).

Bien, así que explicaré un poco por encima cómo compilar ese modulo:

A partir de ahora, asumiré que tienes construido el buidroot y que las fuentes las tienes en /fonera asi todas las direcciones a directorios las explicaré tomando como origen eso, el /fonera, ¿ok?.
Hemos dicho que tenemos que configurar el kernel, asi que vamos al directorio /fonera/build_mips/linux-2.4-ar531x/linux-2.4.32 y allí mismo hacemos un: make menuconfig con lo que nos aparecerá la interface ncurses típica de configurar el kernel de linux.

Ahora nos vamos a la opcion File Systems y dentro de ella a la opción Network File Systems y allí activamos el CIFS como módulo externo.
Esta es una captura de la pantalla en esa parte:

MenuConfigCIFS

Una vez hecho eso, salimos (con ESC varias veces), grabamos la configuración y salimos de ahi.
Una vez fuera, compilamos los módulos del kernel mediante una make modules de tal forma que cuando temine, ya tendremos listo nuestro modulo llamado cifs.o que tendremos que subir a la fonera.

En concreto el módulo lo tendremos en: /fonera/build_mips/linux-2.4-ar531x/modules/lib/modules/2.4.32/kernel/fs/cifs

Para subirlo a la fonera, teneis varias opciones: enviarselo mediante SCP, por ejemplo, mediante un cliente SCP en Windows o bien mediante el Konqueror, poniendo en la barra de direcciones fish://fonera (siendo fonera la dirección IP de vuestra fonera) o bien (que es la que al final he usado yo) entrar en la fonera por SSH y desde ella, hacer un wget y descargarse el ficherín.

Para impacientes, os he puesto en mi servidor el ficherín ya generado, lo teneis en http://fonera.trucomania.org/cifs.o así que si desde vuestra fonera poneis wget http://fonera.trucomania.org/cifs.o pues ya lo habreis metido en ella :)


Vamos al grano, ¡hagamos que funcione!

Bien, una vez generado el modulín, hay que meterlo en la fonera.
Lo más rápido que se me ocurre es que lo metais en la fonera haciendo un wget.
El módulo ha de ir alojado en el directorio /lib/modules/2.4.32/

Así que nos posicionamos en dicho directorio:

root@OpenWrt:/# cd /lib/modules/2.4.32/
root@OpenWrt:/lib/modules/2.4.32# ls

Y desde ahí nos descargamos el modulito necesario para usar el CIFS:

root@OpenWrt:/lib/modules/2.4.32# wget http://fonera.q3.nu/cifs.o
Connecting to fonera.q3.nu[85.85.145.224]:80
cifs.o               100% |**************************************************************|   266 KB    00:00 ETA
root@OpenWrt:/lib/modules/2.4.32#

Una vez metido en la fonera, tendremos que cargar el módulo, lo cual se consigue con el comando: insmod cifs

Podreis comprobar que está cargado con el típico lsmod:

root@OpenWrt:/lib/modules/2.4.32# lsmod
Module                  Size  Used by    Tainted: P
cifs                  193840   1
ipt_REDIRECT             640   0
ipt_length               320   2
ipt_CONNMARK             816   1
tun                     4344   3
ath_ahb                91820   1
ath_rate_sample         9096   0 [ath_ahb]
wlan_xauth               332   0 (unused)
wlan_wep                4332   0 (unused)
wlan_tkip              11036   2
wlan_ccmp               6204   0 (unused)
wlan_acl                2524   0 (unused)
ath_hal               176896   1 [ath_ahb ath_rate_sample]
wlan_scan_sta          10476   0 (unused)
wlan_scan_ap            2940   1
wlan                  178512   1 [ath_ahb ath_rate_sample wlan_xauth wlan_wep wlan_tkip wlan_ccmp wlan_acl wlan_scan_sta wlan_scan_ap]
ar531x-wdt              1712   1
mini_fo                54176   1
root@OpenWrt:/lib/modules/2.4.32#

Vale, una vez que tengamos esto cargado y en marcha, podremos ya mapear un disco externo mediante el siguiente comando:

mount -t cifs //PcRemoto/Recurso /mnt/c -o unc=\\\\PcRemoto\\Recurso,ip=192.168.0.6,user=Usuario,pass=Clave,dom=GRUPODETRABAJO

Dónde:

IMPORTANTE: La ruta del recurso compartida que va tras el unc= ha de ir con dobles barras, para que el shell se lo trague. Si las poneis con barras simples no funciona, ah, y si, hay que especificar la ip del PCRemoto, sino tampoco funciona.

Aqui teneis una captura de mi fonera con una sobredosis de disco duro:

root@OpenWrt:/lib/modules/2.4.32# df
Filesystem           1k-blocks      Used Available Use% Mounted on
none                      7128        44      7084   1% /tmp
/dev/mtdblock/2           5568       452      5116   8% /jffs
/                         1536      1536         0 100% /
//gentil/todo        118957688  90085524  28872164  76% /mnt/c
root@OpenWrt:/lib/modules/2.4.32#     

Hale, que lo disfruteis! :)

¿El siguiente paso?, quizá me empeñe en montar una paginita web servida por la propia fonera, ahora que tengo espacio... :)