Archivo

Entradas Etiquetadas ‘Zyxel’

Zyxel NSA-325 V2 con OpenWRT y discos de 20TB

sábado, 5 de agosto de 2023 Sin comentarios

Dejando atrás la limitación del sistema operativo que traía de fabrica para intentar sobrepasar el límite del sistema de ficheros ext2 y lograr hacer un RAID 0 con dos discos duros de 20TB he llegado a la conclusión de que no se puede.

Se puede formar un RAID 0 sin mayores inconvenientes instalado las herramientas disponibles en OpenWRT y utilizando este comando como en cualquier sistema Linux:

mdadm –create –verbose /dev/md0 –level=0 –raid-devices=2 /dev/sda /dev/sdb

Pero a la hora de darle formato a ese raid es cuando empiezan los problemas. Con ext4, en el proceso de inicialización del journaling, directamente se para con un error, algo que se puede saltar para que finalice el proceso y con XFS no hay inconvenientes. Pero a la hora de montar la unidad /dev/md0, en ambos, salta un error diciendo que el fichero es demasiado grande («file to large»). Intuyo que todo está relacionado con el hecho de utilizar un sistema operativo de 32bit por culpa de una CPU que no soporta instrucciones de 64bit.

Curiosamente, podemos formatear y montar el raid si utilizamos el sistema de ficheros exFAT, pero cuando empiezas a copiar ficheros en él empieza a dar errores y tiempos de espera muy largos, algo que lo hace inusable.

Supongo que este ZyXEL se quedará con dos discos de 8TB como máximo.

 

Zyxel NSA-325 V2 pasa a OpenWRT

viernes, 28 de julio de 2023 Sin comentarios

Hace 8 años compré por un precio más que razonable un NAS de 2 bahías de Zyxel que me permitió hacer bastantes más cosas de las oficiales gracias a repositorios de la comunidad. Pero todo tiene un límite, concretamente en lo que se refiere a su compatibilidad con discos duros de gran capacidad. Resulta que el sistema de archivos que utiliza es ext2, el cual permite un tamaño de volumen máximo de 16TiB, algo que me impedía hacer uso de dos discos duros de 20TB. Frustrado por ello busqué alternativas y encontré la posibilidad de instalar OpenWRT reescribiendo la NAND, lo cuál me permitía hacer uso de ext3 entre otras muchas cosas.

Para llevar a cabo la operación, me enfrenté con documentación incompleta desde el punto de vista de alguien que no lo había hecho nunca. Se hablaba de utilizar una conexión serie USB, de poner comandos en un terminal, hacer uso de un pendrive antiguo y de soldar cosas. Al final fue relativamente sencillo, sin soldar ni comprar nada adicional porque ya tenía en mi posesión una Raspberry Pi 2 para hacer el trabajo de conector serie USB.

Importante

El proceso puede dejar inservible el dispositivo NAS e incluso la Raspberry Pi si confundís algún cable. Así que cada uno es responsable de lo que hace.

Obtención de la MAC

Durante el proceso habrá que configurar la MAC del NAS a mano, con lo que antes de empezar sería buena idea obtenerlo.

Sacar la placa base

Para sacar la placa base hay que extraer las bahías de los discos duros, sacar un par de tornillos de la base, deslizar una parte de la carcasa sobre la otra y seguir desatornillando un poco más, nada difícil ni nada clicks. Hay un vídeo muy ilustrativo de los primeros pasos:

Conectar la Raspberry Pi

Teniendo en cuenta de que en mi caso estaba usando una Rasperry Pi 2 B y que sun GPIO difiere de otros modelos, la conexión me quedó así:

 

En caso de utilizar un adaptador USB serie, la conexión sería como esta:

Preparando un pendrive

Parece ser que esto es algo que da bastantes problemas, donde algunas personas han tenido que recurrir a pendrive antiguos anteriores al 2.0, pero yo me he arreglado con un Sandisk de 16GB que tenía por ahí. Lo tendremos que formatear en FAT32 y depositaremos en él dos ficheros:

  • Los ficheros de u-boot en su versión 18.06.0 porque las más recientes parecen tener un bug que afecta al arranque con USB.
  • El firmware de OpenWRT (la más reciente, a día de hoy la versión 22.03.5).

Colocaremos el pendrive en la placa base del NAS, procurando que sea uno de los puertos traseros 2.0.

Preparando la Raspeberry Pi

Arrancamos la Raspberry Pi (en mi caso llevaba una Hyperbian), nos logueamos y, utilizando el comando «raspi-config», dentro de «Interface options» -> «Serial Port», desactivamos el puerto serie para el login shell y activamos el puerto serie por hardware. Reiniciamos las Raspberry Pi y ya la tenemos lista.

Flasheando

Le damos corriente al NAS a través de su adaptador habitual y lo encendemos desde su botón. Desde la Raspberry Pi descargamos el u-boot y le damos una orden con él a través del USB serie que hemos montado con los cables:

wget https://archive.openwrt.org/releases/18.06.0/targets/kirkwood/generic/u-boot-nsa325/u-boot.kwb

kwboot -p -t -b u-boot.kwb -o 5 -B 115200 /dev/ttyAMA0

Nos pedirá que reiniciemos el dispositivo NAS de Zyxel, con lo que le quitaremos la corriente y se la volveremos a dar. Nos mostrará el progreso de flasheo y cuando haya terminado cargará una especie de shell interactiva en la cual tendremos que dar algunas órdenes.

usb reset
fatload usb 0 0x1000000 u-boot.kwb
nand erase 0x0 0x100000
nand write 0x1000000 0x00000 0x100000
reset

Seguiremos configurando algunas variables de entorno:

setenv mtdparts ‘mtdparts=orion_nand:0x00c0000(uboot),0x80000(uboot_env),0x7ec0000(ubi)’
setenv bootcmd ‘run setenv bootargs; ubi part ubi; ubi read 0x800000 kernel; bootm 0x800000’
saveenv
reset

Le configuraremos la MAC que tenía:

setenv ethaddr AB:CD:EF:00:00:00
saveenv

Flashearemos el fichero «openwrt-22.03.5-kirkwood-zyxel_nsa325-squashfs-factory.bin» que habíamos descargado:

usb reset
fatload usb 0 0x2000000 openwrt-22.03.5-kirkwood-zyxel_nsa325-squashfs-factory.bin
nand erase.part ubi
nand write 0x2000000 ubi 0x600000

Una vez finalizado podremos reiniciarlo con el siguiente comando:

reset

El sistema arrancará y ya tendremos disponible desde el navegador una interfaz web para configurarlo.

Fuentes:

Documentación de OpenWRT

Apuntes de Panticz.de

NAS ZyXel 325-V2

lunes, 14 de diciembre de 2015 Sin comentarios

El NAS ZyXel 325-V2 se diferencia de la primera versión en un cambio estético de la carcasa de plástico y en una mejora del ventilador posterior que parece hacer menor ruido. A parte de eso dispondremos de un sistema de almacenamiento en red con dos bahías para discos duros SATA de 3’5″ y 2’5″ con soporte para RAID 0, 1 y JBOD, tarjeta de red Gigabit, dos USB 2.0 traseros y uno 3.0 frontal frontal con un consumo eléctrico que varía de entre 15W con dos discos duros en marcha a 7W cuando pasa a modo en reposo.

El panel de administración puede parece bastante simple y no tan completo como los NAS de Synologic, pero la diferencia de precio también es bastante notable. Gracias a la comunidad estas diferencias intentan cubrirses con paquetes de software de terceros.

Como vamos a hacer del NAS un servicio de red fijo, lo que nos va a interesar es darle una IP fija a través de la configuración del servidor de DNS. Para eso se necesita averiguar su dirección MAC de forma fácil con el siguiente comando (sabiendo previamente la IP que se le ha sido asignado previamente o el nombre del equipo):

ping 192.168.1.55 -c 1

arp -a

A través de Samba accederemos a «smb://IP-NAS/admin/zy-pkgs/» y crearemos un fichero «web_prefix» que contendrá la siguiente URL:

http://downloads.zyxel.nas-central.org/Users/Mijzelf/zypkg-repo/

Desde el panel web de administración del NAS iremos a la sección «Firmware/Packages» y, después de actualizar el Firmware si existe alguna versión posterior, le daremos al botón de «Acceder listado desde Internet». Aparecerá un único paquete llamado «MetaRepository» que tendremos que seleccionar e instalar. Tras esto ya podremos instalar FFP (desde el cual podremos instalar repositorios con uwsiteloader), RandomTools, NFS y pyLoad por ejemplo.

Para instalar nuestro software de descargas favorito (MlDonkey), entraremos por SSH al NAS y ejecutaremos lo siguiente:

su

uwsiteloader.sh (seguimos los pasos del asistente)

slacker -U

slacker -i mldonkey

exit

Debido a que queremos tener todo lo relacionado con MlDonkey guardado en disco duro por temas de espacio, lo que haremos es un enlace simbólico de la siguiente forma y lanzaremos el proceso para que genere la estructura de carpetas:

mkdir /mnt/HD_a2/mldonkey

cd /mnt/HD_a2

chmod -R 777 mldonkey/

ln -s /mnt/HD_a2/mldonkey/ .mldonkey

mlnet

Cerraremos el proceso anterior con un simple CTRL+C y empezaremos a configurarlo:

vim .mldonkey/downloads.ini (y editamos las ip’s permitidas añadiendo 192.168.1.0/24)

mkdir /mnt/HD_a2/mldonkey/logs

Generaremos un fichero de configuración en «/mnt/HD_a2/mldonkey/mldonkey-server» con el siguiente contenido:

MLDONKEY_DIR=/mnt/HD_a2/mldonkey
MLDONKEY_USER=admin
MLDONKEY_GROUP=everyone
MLDONKEY_UMASK=0022
LAUNCH_AT_STARTUP=true

Crearemos el script que se encargará de gestionar el servicio «/mnt/HD_a2/mldonkey/mldonkey.sh» con el siguiente contenido:

 

#!/ffp/bin/sh
#
# Original file :
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
#
#
# This file has been rewritten by Sylvain Le Gall <gildor@debian.org>
# and Samuel Mimram <smimram@debian.org> for the mldonkey package.
#
### BEGIN INIT INFO
# Provides: mldonkey-server
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Server for the mldonkey peer-to-peer downloader.
# Description: Server for the mldonkey peer-to-peer downloader.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mlnet
EXEC=/usr/local/zy-pkgs/ffproot/ffp/bin/$NAME
DESC=»MLDonkey»
CONFIG=/mnt/HD_a2/mldonkey/mldonkey-server
PIDDIR=/var/run/mldonkey
PIDFILE=$PIDDIR/$NAME.pid
LOGFILE=/mnt/HD_a2/mldonkey/logs/mldonkey-server.log
SERVERLOG=/mnt/HD_a2/mldonkey/logs/mlnet.log

test -e $CONFIG || exit 0

set -e

Warn ()

{
echo «$*» >&2
}

Error ()
{
code=$1
shift

echo «.»
Warn «$DESC: $NAME [ERROR] $@»
exit $code
}

StartErrorCheck ()
{
if [ -f «$SERVERLOG» ] && tail -n 2 «$SERVERLOG» | grep -qi ‘aborting’ ; then
Warn «$DESC: $NAME [ERROR] server start error»
tail –verbose $SERVERLOG
exit 1
fi
}

. $CONFIG

# Look for the default locale
if [ -f «/etc/default/locale» ]; then
. /etc/default/locale
export LANG
fi

if [ -n «$MLDONKEY_UMASK» ]; then
umask $MLDONKEY_UMASK
fi
# /var/run might be on tempfs, see #354701.
if [ ! -d /var/run/mldonkey ]; then
mkdir -m 755 /var/run/mldonkey
fi
if [ ! -d /var/log/mldonkey ]; then
mkdir -m 755 /var/log/mldonkey
fi
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /var/run/mldonkey
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /mnt/HD_a2/mldonkey/logs
fi

WRAPPER_OPTIONS=»–iosched idle»

# Set configuration value, from CONFIG
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chuid $MLDONKEY_USER:$MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_DIR» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chdir $MLDONKEY_DIR»
fi

if [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –group $MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_UMASK» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –umask $MLDONKEY_UMASK»
fi

if [ -n «$MLDONKEY_NICENESS» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –nicelevel $MLDONKEY_NICENESS»
fi

case «$1» in
start|force-start)
echo -n «Starting $DESC: $NAME»

if [ «x$LAUNCH_AT_STARTUP» != «xtrue» ] && [ «x$1» = «xstart» ]; then
Error 0 «configuration file prevent $NAME to be started (use force-start).»
fi

if [ -z «$MLDONKEY_DIR» ] || [ ! -d «$MLDONKEY_DIR» ]; then
if [ -z «$MLDONKEY_DIR» ]; then
MLDONKEY_DIR=»(unset)»
fi
Error 1 «$MLDONKEY_DIR is not a valid directory.»
fi

if [ ! -f «$MLDONKEY_DIR/downloads.ini» ]; then
Error 1 «$MLDONKEY_DIR/downloads.ini is not a valid file.»
fi

#USER=`/usr/bin/stat –format=»%U» «$MLDONKEY_DIR/downloads.ini»`

USER=»admin»

WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –user $USER»

start-stop-daemon –start $WRAPPER_OPTIONS \
–pidfile $PIDFILE –background –exec $EXEC \
— -log_file $SERVERLOG -pid $PIDDIR 2>&1

StartErrorCheck

echo «.»
;;

stop)
echo -n «Stopping $DESC: $NAME»
start-stop-daemon –stop –oknodo –pidfile $PIDFILE –retry 30
echo «.»
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
Error 1 «Usage: $0 {start|stop|restart|force-reload|force-start}»
;;
esac

exit 0

Le daremos permiso de ejecución:

chmod u+x /mnt/HD_a2/mldonkey/mldonkey.sh

Y finalmente crearemos el script que se encargará de levantar el servicio al inicio en «/ffp/start/mldonkey-start.sh» con el siguiente contenido:

#!/ffp/bin/sh
# PROVIDE: mldonkey
# REQUIRE: LOGIN
/mnt/HD_a2/mldonkey/mldonkey.sh start

Le daremos permiso de ejecución:

chmod u+x /ffp/start/mldonkey-start.sh

Si deseamos que el NAS esté accesible por NFS, el camino rápido sería obtenido el identificador del usuario y del grupo correspondiente:

id -u admin

id -g admin

Editaremos el fichero «/etc/exports» con una línea similar a esta siendo 192.168.1.11 la IP que montará la unidad NFS  501 el id de usuario y grupo:

/mnt/HD_a2 192.168.1.11(rw,all_squash,anonuid=501,anongid=500)

Si intentamos colocar algo así como «192.168.1.0/24» no funcionará.

Reiniciaremos el servicio de NFS con el siguiente comando y ya lo tendremos listo en la red:

/usr/local/zy-pkgs/etc/init.d/NFS restart

En el equipo que queramos hacer uso de la unidad NFS (una Raspberry) tendremos que editar el fichero «/etc/fstab» añadiendo la siguiente línea:

192.168.1.10:/mnt/HD_a2    /mnt/nas nfs nouser,atime,auto,rw,dev,exec,suid 0   0

Prepararemos la carpeta donde estará del siguiente modo:

mkdir /mnt/nas

chown pi:users -R /mnt/nas

chmod 777 -R /mnt/nas

mount -a

 

 

 

 

Enlaces de interés:
http://forum.nas-central.org/viewtopic.php?f=249&t=15731&sid=b252ddb5624aca7cd22055ca774de8f7
http://zyxel.nas-central.org/wiki/3rd_party_zypkgs#MetaRepository
http://zyxel.nas-central.org/wiki/FFP_as_zypkg