Hace unos días he comprado un NAS, el QNAP TS-210, y por alguna extraña razón, el acceso mediante samba desde mi reproductor multimedia (un Emtec Q800) no iba nada fino. Según las pruebas que he estado haciendo, el acceso Samba desde otros dispositivos al QNAP funciona perfectamente, y el acceso Samba desde el Emtec a otros servidores también funciona correctamente, pero entre ellos no iba nada fino y los problemas eran muy extraños. Los ficheros .avi y las fotos, se reproducían correctamente, pero ni los .mpg ni las imagenes de DVD se reproducían en absoluto, aparecía un «Fatal error» seguido de un «Buffering» y como resultado, no se reproducía nada de nada.
Después de darle muchas vueltas al tema de Samba y no encontrar ninguna solución, decidí buscar otro camino para conseguir el mismo resultado. El QNAP exporta contenidos por unos cuantos protocolos, y en concreto me interesé por NFS. El Emtec es un pequeño Linux (BusyBox) que permite acceso por telnet, y me permitía hacer montajes NFS manuales sin mayor complicación. Pero claro, la imagen del sistema está en almacenamiento flash de solo lectura y no permite hacer ningún cambio, hasta que encontré una forma de hacerlo.
En /usr/local/etc hay varios ficheros con permiso de lectura/escritura cuyos cambios son permanentes cuando se apaga el dispositivo. Así que, lo primero que intenté fue añadir el comando para montar el volumen NFS en /usr/local/etc/rcS, de esta forma:
mount -t nfs 192.168.1.137:/share/HDA_DATA/Multimedia /tmp/hdd/volumes/HDD1/nfs
Pero no funcionaba, me aparecía este error:
mount: 192.168.1.137:/share/HDA_DATA/Multimedia failed, reason given by server: Permission denied
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.168.1.137:/share/HDA_DATA/Multimedia on /tmp/nfs failed: Bad file descriptor
Y problema de permisos de servidor no era, porque el montaje manual funciona correctamente desde esta misma máquina. Comprobé mediante trazas que la red estaba operativa y había conectividad con el servidor antes de ejecutar el comando de montaje, y también que el punto de montaje estaba disponible, pero el error continuaba.
Temía que había algo que todavía no estaba bien montado, o terminado de cargar correctamente y que debía retrasar el montaje del volumen un poco más hasta que la máquina terminara de arrancar. Así que cambié la línea del rcS por esta otra:
/usr/local/etc/mount_nfs.sh &
Y el contenido de ese fichero contiene lo siguiente:
#!/bin/sh
sleep 30
mount -t nfs 192.168.1.137:/share/HDA_DATA/Multimedia /tmp/hdd/volumes/HDD1/nfs -o ro,vers=3
De esta forma, la máquina termina de arrancar y cargar lo que le faltara y el volumen se monta un tiempo después de arrancar.
Problema solucionado!!!
PD: Por cierto, aunque probé a actualizar el firmware del Emtec Q800 hasta la última 906, esta solución solo me ha funcionado con la 751 (tuve que cargar versiones más antiguas) porque el contenido de /usr/local/etc/rcS parece no ejecutarse en las versiones posteriores.