Los dispositivos Wi‑Fi económicos y de gama media llevan tiempo usando chips eMMC rápidos. Los fabricantes reservan una pequeña partición del sistema y el resto del espacio queda sin uso. Se puede aceptar y seguir enviando los registros a un servidor syslog remoto, pero resulta más interesante convertir esos gigabytes "de sobra" en un disco local fiable para una biblioteca multimedia, copias de seguridad o contenedores. Además, la memoria flash integrada suele ser más rápida que unidades USB baratas, y el riesgo principal —usar GPT de forma incorrecta y dejar el router inservible— se reduce prácticamente a cero si se actúa con cuidado.
Resumen del hardware: eMMC, NAND, NOR — quién es quién
El módulo eMMC combina el controlador y las celdas flash en un único paquete, apareciendo ante el sistema como un dispositivo de bloques habitual /dev/mmcblk0. Su diferencia principal frente a la NAND cruda es la nivelación de desgaste integrada: el controlador distribuye las escrituras de forma uniforme y oculta defectos, por lo que sistemas de archivos como ext4 se comportan casi como en un SSD. La memoria NOR se conserva sobre todo para el cargador de arranque U-Boot, que necesita acceso aleatorio a bytes individuales. El usuario rara vez dispone de siquiera un megabyte libre en NOR.
Particionado en RAX3000M: por qué usar GPT y por qué 500 MB son suficientes
El ensamblador del cargador deja en el firmware una tabla GPT: alrededor de medio gigabyte para squashfs + overlay y el resto del disco libre. Para una imagen estándar de OpenWrt ese espacio es suficiente: en la partición del sistema caben el kernel, los paquetes básicos y unos pocos kilobytes de configuración. Todo lo demás queda libre. Es ahí donde crearemos un volumen de usuario. GPT es útil porque permite recrear particiones sin lidiar con primarias/extendidas, y la tabla se duplica automáticamente al final del disco, por lo que la probabilidad de perderla por completo es mínima.
Preparar el entorno: instalar las herramientas con un único comando opkg
Con root ejecutamos:
opkg update
opkg install block-mount kmod-fs-ext4 e2fsprogs lsblk cfdisk
El paquete block-mount añade en LuCI la pestaña «Puntos de montaje», kmod-fs-ext4 aporta el controlador del sistema de archivos, e2fsprogs proporciona mkfs.ext4, lsblk muestra los dispositivos de bloque y cfdisk ofrece una interfaz sencilla que evita introducir números erróneos en fdisk. Si LuCI no refleja el nuevo menú, ayuda forzar la actualización de la caché, volver a entrar o, en último recurso, ejecutar reboot.
Crear una nueva partición: guía con las flechas en cfdisk
- Ejecutar la utilidad:
cfdisk /dev/mmcblk0 - Seleccionar Free space — normalmente es enorme: en mi caso 57 GB.
- Pulsar New, aceptar el tamaño por defecto (toma todo el espacio libre) o introducir uno propio.
- Pulsar Write, escribir el mágico
yespara confirmar los cambios. - Salir con Quit o la tecla q.
Comprobar el resultado:
lsblk
Debe aparecer algo como mmcblk0p6 57.1G. Si el índice no es el sexto, no te preocupes: los scripts de OpenWrt no dependen del número de partición.
Sistema de archivos: elegir ext4 y formatear sin líos
En eMMC se puede usar ext4 con tranquilidad: el journaling consume algo de vida útil, pero la nivelación de desgaste mitiga el desgaste. Si se busca exprimir al máximo el número de reescrituras, se puede considerar f2fs, aunque su controlador a veces muestra advertencias en controladores no estándar. El formateo es sencillo:
mkfs.ext4 /dev/mmcblk0p6
Añadimos una etiqueta distintiva:
tune2fs -L userstore /dev/mmcblk0p6
Ahora el volumen es fácil de identificar por la etiqueta userstore.
Montar desde LuCI: clics en vez de línea de comandos
- Ir a System → Mount Points.
- Pulsar Add. En el campo UUID seleccionar la partición (LuCI muestra la etiqueta y el tamaño, por lo que es difícil equivocarse).
- En Mount point elegir custom y escribir, por ejemplo, /mnt/media. Tras introducirlo, pulsa Enter; en navegadores móviles a veces hay que tocar fuera del campo una segunda vez.
- Pulsar Save & Apply. En un segundo aparecerá la nueva entrada con el estado «Mounted».
Listo: cada reinicio montará la carpeta automáticamente. Para probar, crea un archivo:
dd if=/dev/zero of=/mnt/media/test.bin bs=1M count=100
rm /mnt/media/test.bin
Prueba de velocidad: la memoria integrada supera al USB 2.0
Un eMMC medio en el RAX3000M lee a 160 MB/s y escribe alrededor de 90 MB/s. Para almacenar torrents y copias de seguridad es suficiente, y las películas en 4K se reproducen por Gigabit Ethernet sin problemas. La comprobación con hdparm -tT /dev/mmcblk0p6 muestra cifras similares, lo que confirma la práctica. Si se desea, se puede instalar un servidor NFS o Samba y compartir contenido con la televisión.
Cómo manejar firstboot y sysupgrade sin problemas
Al restablecer OpenWrt se regenera /etc/config/fstab, pero no se toca la partición de usuario. Tras firstboot basta con entrar de nuevo en Mount Points, seleccionar el UUID, indicar la ruta anterior y guardar. Lo mismo ocurre después de un sysupgrade: los datos permanecen intactos, la entrada de LuCI desaparece pero se puede recuperar manualmente rápido. Para evitar esta rutina, añade un script de configuración en /etc/uci-defaults/99-restore-gpt.sh que, al ejecutarse, compruebe la etiqueta y añada la entrada al fstab automáticamente.
Copia de seguridad: por qué guardar una copia de la tabla GPT
Aunque GPT esté duplicada, el factor humano no desaparece. Con una sola orden guardamos un volcado binario:
dd if=/dev/mmcblk0 of=/root/gpt-backup.bin bs=1M count=8
El archivo ocupa solo ocho megabytes, pero en una situación crítica su restauración ahorrará muchos problemas. La copia se puede subir a la nube con scp o cifrar con age y subir a un Gist de GitHub.
Bono: mover /overlay o contenedores a eMMC
A quienes siempre les falta espacio para paquetes les puede interesar mover el overlay a la nueva partición. La idea es sencilla: crear el directorio /mnt/media/upper y editar /etc/config/fstab añadiendo:
config overlay
option device '/dev/mmcblk0p6'
option enabled '1'
Tras reiniciar, la raíz de lectura‑escritura saltará a eMMC, y la partición de sistema de 500 MB quedará libre como reserva. El gestor de contenedores docker-ce también se puede instalar en unos pocos pasos: basta con mover /var/lib/docker al volumen libre y arrancar el servicio.
Conclusiones: cuándo la memoria integrada gana al USB externo
usar eMMC tiene sentido si:
- se necesita buena velocidad sin adaptadores;
- se quiere liberar un puerto para una impresora o un módem 4G;
- se planea un servidor multimedia compacto sin unidades USB colgando.
Un USB‑SSD sigue siendo útil cuando se necesita migrar datos entre dispositivos o volcar copias de seguridad muy grandes. En la mayoría de los casos, el almacenamiento integrado es una mejora casi gratuita, sobre todo porque ya está alimentado, refrigerado y oculto dentro de la carcasa. Lo importante es no olvidar las copias de seguridad de la GPT y revisar periódicamente con smartctl, porque incluso el chip flash más resistente acabará fatigándose algún día.