Tip: El Inicio rápido para instalar una unidad USB resuelve el caso muy común de instalar una sola unidad USB en su dispositivo OpenWrt. La gente hace esto para usar Samba u otros programas que necesitan almacenar datos en un disco externo. El resto de esta página proporciona mucha más información sobre dispositivos y controladores USB.
Muchos dispositivos compatibles tienen puertos para conectar dispositivos de almacenamiento, los más comunes son USB o Sata.
Este artículo describirá cómo configurar su dispositivo para usar dichos dispositivos de almacenamiento para almacenar o compartir. Si desea ampliar el espacio de su firmware (para instalar más paquetes), lea el artículo sobre Configuración de Extroot.
Para configurar el espacio en disco externo, siga los procedimientos de esta página:
Este paso garantiza que los controladores de almacenamiento USB necesarios estén instalados correctamente.
opkg update
opkg install kmod-usb-storage
opkg install kmod-usb-storage-uas
opkg install usbutils
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M
|__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
xhci para USB3.0, ehci para USB2.0 y uhci u ohci para USB1.1.usb-storage para almacenamiento de tipo Bulk only Transport o usb-storage-uas para almacenamiento de tipo USB_Attached_SCSI En el paso 5, verifique que la salida no imprima ningún error y tenga al menos una línea de salida para root_hub y Mass Storage y que cada Driver= incluya un nombre de controlador. De lo contrario, consulte Instalación de controladores USB para obtener más sugerencias sobre controladores.
Este paso de verificación opcional se puede utilizar para comprobar que el sistema operativo puede detectar correctamente una unidad externa conectada.
ls -l /dev/sd*
brw------- 1 root root 8, 0 Oct 30 12:49 /dev/sda brw------- 1 root root 8, 1 Oct 30 12:49 /dev/sda1
Esto debería imprimir al menos un disco conectado como “/dev/sda” o “/dev/sdb”. Si no aparece ningún disco, vuelva a verificar la instalación del controlador USB y reinicie su dispositivo OpenWrt una vez.
opkg install block-mount
para exFAT, también necesita libblkid
opkg install libblkid
block info | grep "/dev/sd"
y debería ver un resultado como este, si su disco ya tiene particiones:
/dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" TYPE="ext4"
Si un disco ya tiene particiones existentes, aparecen como /dev/sda1, /dev/sda2,/dev/sda3, etc. Si hubiéramos conectado más de un dispositivo de almacenamiento tendríamos también /dev/sdb1 (primera partición del segundo dispositivo), /dev/sdc1 (primera partición del tercer dispositivo) y así sucesivamente.
Si el capítulo anterior no enumeró ninguna partición existente (como “/dev/sda1”, “/dev/sda2”, “/dev/sdb1”...), primero debe crear una partición para un uso posterior del almacenamiento.
opkg install gdisk
gdisk /dev/sda
n
. Esto activa un diálogo interactivo: use los valores predeterminados sugeridos para la creación de la partición (número, sector inicial, tamaño, código hexadecimal)
w
y luego confirme su elección con
Y
.
Consulte el texto de ayuda de gdisk (escriba “?”) en caso de que necesite ayuda adicional. Apéguese a una sola partición para mantenerte alineado con el siguiente tutorial.
Para utilizar una partición para el almacenamiento de datos, es necesario formatearla con un sistema de archivos.
La siguiente es la configuración predeterminada más simple (y recomendada) para el uso del sistema de archivos OpenWrt.
Para usuarios avanzados, hay más opciones disponibles de sistemas de archivos opcionales.
ADVERTENCIA: Este paso elimina los datos existentes en esa partición. ¡Asegúrese de tener una copia de seguridad de los archivos importantes antes de comenzar!
opkg install e2fsprogs opkg install kmod-fs-ext4 mkfs.ext4 /dev/sda1
opkg install kmod-fs-exfat
opkg install f2fs-tools opkg install kmod-fs-f2fs mkfs.f2fs /dev/sda1
El montaje automático garantiza que la partición del disco externo esté disponible automáticamente para su uso al iniciar el dispositivo OpenWrt.
block detect | uci import fstab
uci set fstab.@mount[-1].enabled='1' uci commit fstab
uci set fstab.@global[0].check_fs='1' uci commit fstab
uci show fstab
para ver algo como esto
fstab.@global[0]=global fstab.@global[0].anon_swap='0' fstab.@global[0].anon_mount='0' fstab.@global[0].auto_swap='1' fstab.@global[0].auto_mount='1' fstab.@global[0].check_fs='0' fstab.@global[0].delay_root='5' fstab.@mount[0]=mount fstab.@mount[0].target='/mnt/sda1' fstab.@mount[0].uuid='49c35b1f-a503-45b1-a953-56707bb84968' fstab.@mount[0].enabled='1'
ls -l /mnt/sda1
block info
El resultado será:
... /dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"
service fstab boot
Paso opcional para discos duros.
Si desea utilizar OpenWrt como NAS permanente, es posible que desee reducir la velocidad del motor del disco duro durante los momentos de inactividad. Ya sea porque desea tener silencio en su habitación durante la noche o para aumentar la vida útil del disco duro (por ejemplo, cuando utiliza un disco duro de edición doméstica (en lugar de una edición de centro de datos 24×7).
Hay diferentes opciones para apagar automáticamente el motor del disco duro conectado después de un cierto tiempo de inactividad. Ambos requieren la instalación de paquetes opcionales en OpenWrt.
1. Opción: hdparm
Esta herramienta guarda permanentemente un temporizador de giro en el propio disco duro, utilizando comandos estandarizados de disco SATA (el disco duro recordará ese valor del temporizador de giro, incluso si está apagado, incluso después de un reinicio e incluso si está conectado a un dispositivo diferente).
En realidad, es solo una interfaz de línea de comando para una función incorporada del disco duro.
Por lo tanto, no es necesario ejecutar ningún servicio OpenWrt en segundo plano para esto y 'hdparm' podría incluso desinstalarse después de configurar este parámetro. Desafortunadamente, muchos adaptadores USB2.0-PATA/SATA antiguos no soportan el comando SATA requerido, aunque incluso los discos duros con una década de antigüedad sí lo soportan. Pero, afortunadamente, la mayoría de las cajas USB3.0-SATA parecen admitir el comando SATA requerido.
Para instalar el paquete
opkg update && opkg install hdparm
P.ej. Para establecer un tiempo de inactividad razonable de 20 minutos en el disco duro, utilice:
hdparm -S 240 /dev/sda2
Por supuesto, siempre puede cambiar el tiempo de espera o desactivar el giro automático nuevamente más adelante. Dependiendo de su disco duro, el valor puede estar activo hasta el próximo reinicio o almacenado permanentemente en el disco duro.
El firmware del disco duro es quien gestiona el tiempo de espera de inactividad, no un servicio OpenWrt. Para cambios persistentes utilice el archivo /etc/rc.local, como:
# set timeout to put the drive into idle (low-power) mode /sbin/hdparm -S 240 /dev/sda2 exit 0
2. Opción: hd-idle (integrado con LuCI)
hd-idle es un servicio que se ejecuta en segundo plano del dispositivo OpenWrt y mantiene su propio contador de tiempo de inactividad. Una vez que el contador de tiempo de espera definido llegue a 0, enviará un comando Spindow SATA “en vivo” al disco. A diferencia del comando permanente hdparm de reducción giro, muchas más carcasas USB2.0-SATA parecen admitir este comando SATA de ““spindown-now””.
Para instalar el paquete que incluso tiene integración frontal de LuCi:
opkg update && opkg install luci-app-hd-idle
Para configurarlo, utilice el menú “Services” de la GUI web LuCi de su dispositivo.
Para instalar el paquete CLI (sin LuCi):
opkg update && opkg install hd-idle
Para configurarlo, puede editar el archivo /etc/config/hd-idle y luego habilitar el inicio automático y arrancar el servicio hd-idle service hd-idle enable && service hd-idle start.
Opciones para configurar:
| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
disk | string | sda | Reemplace sda con el identificador de su dispositivo |
enabled | boolean | 0 | Habilita la operación de inactividad de disco duro |
idle_time_unit | string | minutos | La unidad de tiempo usada en la opción idle_time_interval |
idle_time_interval | integer | 10 | Cuánto tiempo de inactividad antes del 'spindown' |
Tenga en cuenta que debe habilitarlo ya que no lo está de forma predeterminada.