Ir al contenido principal

WD My Cloud OS5: cómo recuperar el botón Shutdown oculto en la interfaz web

En esta tercera entrega de la serie sobre personalización del WD My Cloud Gen 2 con My Cloud OS5, explicaré cómo recuperar una función que Western Digital mantiene oculta en la interfaz administrativa: el botón Shutdown para apagar el dispositivo.

El procedimiento fue probado en un WD My Cloud Gen 2 con firmware OS5 5.33.102.

Lo interesante es que no necesitamos desarrollar una nueva función de apagado ni modificar el firmware. Descubrimos que el botón y su funcionalidad ya existen: solamente están ocultos mediante JavaScript.

1. El problema: desapareció el botón Shutdown

En la sección Device Maintenance de la interfaz administrativa aparece normalmente el botón Reboot, que permite reiniciar el NAS.

Sin embargo, en este modelo no se muestra un botón equivalente para apagarlo.

Esto resulta inconveniente cuando necesitamos apagar correctamente el dispositivo para realizar mantenimiento, transportarlo o desconectarlo de la alimentación eléctrica.

Aunque existen comandos de apagado mediante SSH, resulta más práctico recuperar el control desde la interfaz web.

2. Localizar el archivo de la interfaz

El firmware contiene los archivos de la interfaz administrativa en:

/usr/local/modules/web/pages

La página correspondiente a las opciones de mantenimiento del dispositivo se encuentra en:

/usr/local/modules/web/pages/setting/diagnostics.html

Para confirmar que existe, ejecutamos por SSH:

ls -l /usr/local/modules/web/pages/setting/diagnostics.html

Este archivo contiene el código HTML y JavaScript que controla distintas funciones de mantenimiento.

3. Descubrir el botón Shutdown oculto

Para buscar las referencias relacionadas con el apagado del dispositivo utilizamos:

grep -nEi 'shutdown|reboot' \
/usr/local/modules/web/pages/setting/diagnostics.html

Encontramos que el archivo contiene un botón con el identificador:

settings_utilitiesShutdown_button

Su estructura HTML es:

<td class="tdfield_padding" id="id_shutdown_td">
    <button type="button"
        id="settings_utilitiesShutdown_button">
        <span class="_text"
            lang="_utilities"
            datafld="shutdown"></span>
    </button>
</td>

Esto demuestra que el botón ya está incorporado en el código original del firmware.

3.1. El formulario de apagado también existe

La misma página contiene el formulario:

<form method="post"
    action="/cgi-bin/system_mgr.cgi"
    name="form_shutdown"
    id="form_shutdown">

    <input type="hidden"
        name="cmd"
        value="cgi_shutdown">
</form>

Por tanto, la interfaz ya dispone de un mecanismo para solicitar el apagado del dispositivo.

El problema no era la ausencia del botón, sino que el código JavaScript impedía mostrarlo.

4. La instrucción que oculta Shutdown

Dentro de la función page_load() encontramos el siguiente código:

if (SHUTDOWN_FUNCTION == 0 )
{
    $("#tip_dev").attr('title',_T('_tip','dev1'));
    $("#id_shutdown_td").hide();
}
else
    $("#tip_dev").attr('title',_T('_tip','dev'));

La instrucción responsable es:

$("#id_shutdown_td").hide();

Esta instrucción utiliza jQuery para ocultar el elemento HTML cuyo identificador es id_shutdown_td.

Curiosamente, la variable SHUTDOWN_FUNCTION tiene el valor 0 en la configuración estándar de nuestro modelo.

Esto significa que la condición se cumple y el botón se oculta deliberadamente.

5. La solución: cambiar hide() por show()

La modificación necesaria es mínima.

Código original:

$("#id_shutdown_td").hide();

Código modificado:

$("#id_shutdown_td").show();

Con este cambio, cuando se carga la página, JavaScript muestra el botón Shutdown en lugar de ocultarlo.

No es necesario modificar el mecanismo de apagado ni alterar otros elementos de la interfaz.

6. El problema de SquashFS

Como explicamos en el primer capítulo, el firmware OS5 está almacenado en una imagen comprimida SquashFS.

Esta imagen se encuentra montada en modo de solo lectura:

/usr/local/modules

Por tanto, no podemos modificar directamente diagnostics.html mediante una edición convencional.

La solución consiste en crear una copia personalizada en una partición persistente y utilizar mount --bind para presentarla en la ubicación del archivo original.

7. Crear una copia persistente del HTML

Primero creamos un directorio para nuestras personalizaciones:

mkdir -p /usr/local/config/web-overrides

Después copiamos el archivo original:

cp /usr/local/modules/web/pages/setting/diagnostics.html \
/usr/local/config/web-overrides/diagnostics.html

Importante: este comando debe ejecutarse antes de activar el montaje personalizado. Si el montaje ya está activo, la ruta original mostrará el archivo modificado y no el contenido original de SquashFS.

El archivo personalizado queda almacenado en:

/usr/local/config/web-overrides/diagnostics.html

Esta ubicación corresponde a la partición persistente /dev/sda7.

8. Modificar el archivo personalizado

Podemos utilizar sed para sustituir exclusivamente la instrucción que oculta el botón.

sed -i 's/$("#id_shutdown_td").hide();/$("#id_shutdown_td").show();/' \
/usr/local/config/web-overrides/diagnostics.html

Después comprobamos el resultado:

grep -n 'id_shutdown_td' \
/usr/local/config/web-overrides/diagnostics.html

La instrucción JavaScript debe aparecer ahora con .show().

9. Aplicar la modificación mediante mount --bind

Linux permite montar un archivo sobre otra ubicación mediante mount --bind.

Esto permite presentar nuestro archivo personalizado en la ubicación original sin modificar SquashFS.

Ejecutamos:

mount --bind \
/usr/local/config/web-overrides/diagnostics.html \
/usr/local/modules/web/pages/setting/diagnostics.html

Con esta operación:

  • El firmware original permanece intacto.
  • La interfaz utiliza nuestro archivo personalizado.
  • El botón Shutdown aparece en la página.
  • La modificación puede revertirse desmontando el archivo.

10. Verificar el montaje

Para confirmar que el archivo personalizado está montado correctamente:

grep diagnostics.html /proc/mounts

En nuestro dispositivo obtuvimos:

/dev/sda7 /usr/local/modules/web/pages/setting/diagnostics.html ext4 rw,relatime,stripe=128,data=ordered 0 0

Esto confirma que el archivo personalizado de la partición persistente está montado sobre la ubicación original.

Después de actualizar la página Device Maintenance, el botón Shutdown apareció junto a Reboot.

11. Crear un script de restauración

El montaje realizado mediante mount --bind no permanece activo después de reiniciar.

Por ello creamos un pequeño script que permite restaurarlo automáticamente.

El archivo se guarda en:

/usr/local/config/web-overrides/ensure-hibernate-button.sh

Aunque el nombre contiene la palabra hibernate, su función real es restaurar el botón Shutdown.

Contenido:

#!/bin/sh

SRC="/usr/local/config/web-overrides/diagnostics.html"
DST="/usr/local/modules/web/pages/setting/diagnostics.html"

[ -f "$SRC" ] || exit 1
[ -f "$DST" ] || exit 1

if grep -q " $DST " /proc/mounts; then
    exit 0
fi

mount --bind "$SRC" "$DST"

El script comprueba que ambos archivos existen y verifica si el montaje ya está activo.

Si encuentra el montaje, termina sin repetirlo. Si no existe, ejecuta mount --bind.

Para asignarle permisos de ejecución:

chmod +x \
/usr/local/config/web-overrides/ensure-hibernate-button.sh

12. Comprobar el funcionamiento

Podemos ejecutar manualmente el script:

/usr/local/config/web-overrides/ensure-hibernate-button.sh

Y verificar el montaje:

grep diagnostics.html /proc/mounts

Después abrimos la interfaz administrativa y comprobamos que aparecen los botones:

  • Shutdown: apagar el dispositivo.
  • Reboot: reiniciar el dispositivo.

Durante nuestras pruebas comprobamos que el botón de apagado quedaba visible después de aplicar la modificación.

No es necesario ejecutar un apagado real para verificar únicamente la visibilidad del botón.

13. Cómo revertir la modificación

Si queremos recuperar la página original del firmware, podemos desmontar el archivo personalizado.

Primero comprobamos si el montaje existe:

grep diagnostics.html /proc/mounts

Después ejecutamos:

umount /usr/local/modules/web/pages/setting/diagnostics.html

Esto retira la superposición y vuelve a dejar visible el archivo original de SquashFS.

La copia personalizada permanece almacenada en /usr/local/config/web-overrides.

Si configuramos posteriormente una automatización que restaura el montaje durante el arranque, también debemos deshabilitarla para evitar que la modificación reaparezca después de reiniciar.

14. Limitaciones de esta solución

Aunque la recuperación del botón funciona, debemos considerar algunas limitaciones.

14.1. El montaje no sobrevive al reinicio

El comando mount --bind modifica la vista del sistema de archivos durante la sesión actual.

Después de reiniciar, es necesario ejecutarlo nuevamente.

14.2. El firmware puede cambiar

Una actualización de OS5 podría modificar el archivo original diagnostics.html.

En ese caso, conviene comparar nuevamente los archivos antes de reutilizar una copia personalizada creada con una versión anterior.

14.3. La modificación requiere privilegios administrativos

El montaje de archivos sobre ubicaciones del firmware requiere permisos elevados.

Por tanto, estos procedimientos deben ejecutarse únicamente desde una sesión administrativa confiable.

15. Resultado obtenido

En nuestro WD My Cloud Gen 2 con OS5 5.33.102 conseguimos recuperar el botón Shutdown modificando una sola línea de JavaScript.

El procedimiento no requirió modificar la imagen SquashFS ni desarrollar una nueva función de apagado.

La modificación quedó almacenada en una partición persistente y se aplicó mediante mount --bind.

Posteriormente comprobamos que era posible restaurarla automáticamente después de reiniciar utilizando una aplicación llamada Boot Scripts.

16. Conclusiones

La recuperación del botón Shutdown demuestra que algunas funciones aparentemente eliminadas del WD My Cloud OS5 continúan presentes en el código original del firmware.

En este caso, Western Digital no eliminó el botón ni su formulario de apagado: solamente ocultó el elemento mediante JavaScript.

La modificación necesaria fue:

$("#id_shutdown_td").show();

El uso de una copia persistente y de mount --bind permitió aplicar el cambio sin alterar directamente la imagen original del firmware.

La principal limitación es que el montaje debe restaurarse después de cada reinicio.

En el siguiente capítulo veremos cómo resolvimos ese problema de manera permanente.


Próximo capítulo

Capítulo 4. Boot Scripts: cómo ejecutar scripts personalizados automáticamente después de reiniciar el WD My Cloud OS5.

Explicaremos cómo instalar Boot Scripts 1.0.0, configurar un script persistente y verificar que el botón Shutdown se restaure automáticamente después del arranque.

Documentación basada en pruebas realizadas sobre WD My Cloud Gen 2 con firmware My Cloud OS5 5.33.102 en octubre de 2026.

Comentarios

Entradas más populares de este blog

Código agrupador de cuentas del SAT, en excel 2026

 Si eres un contador como yo, y has querido incorporar el archivo PDF a tu excel, para usar alguna función de buscarv para encontrar las cuentas, te habrás podido encontrar que la versión descargable desde el SAT no permite incorporar directamente a excel y hay que hacer el proceso de conversión y revisión de errores.  Aquí tienes el mismo archivo, en versión Excel, que puedes convertir a CSV o a cualquier otro formato desde excel.  codigo_agrupador_sat.xlsx Actualizado con el archivo encontrado en la liga: https://www.gob.mx/cms/uploads/attachment/file/151586/codigo_agrupador.pdf Marzo 2026.

Herramientas Mac

Herramientas para Mac que no puedes no tener. Les voy a compartir algunas herramientas que uso en mi equipo. Esta lista se irá actualizando. Escribe en los comentarios si tienes alguna que sea indispensable en tu trabajo diario. Disk Inventory X Esta herramienta te permite ver en tu disco duro que archivos son los más grandes, así como los directorios con más información y te muestra gráficamente, identificando con colores los distintos tipos de archivos en tu espacio de almacenamiento masivo. Whatcable https://www.whatcable.uk/ Esta herramienta te ayuda a conocer las capacidades de tus cables USB-C. Si por alguna razón un cable funciona más rápido que otro, aquí encontrarás la respuesta. Itsycal https://www.mowglii.com/itsycal/ Esta app coloca un pequeño calendario en tu menú.  Yo configuré la mia así: Con esta configuración para ver el número de semana: Googly Eyes https://sindresorhus.com/googly-eyes Coloca un par de ojos en el menú de tu mac que siempre est...

Reloj ⌚ analógico y digital en código

Varios ejemplos de relojes en página web HTML completa. https://maryx.github.io/flutter_clock/analog_clock/index.html#/ https://maryx.github.io/flutter_clock/digital_clock/index.html#/ https://jankolancer.github.io/gradi_clock/#/ https://barbar-clock.web.app/#/