Linksys WRT160NL + OpenWRT + USB + Servidor de archivos Samba + Wifi WPA + Espacio extra   11 comments

Como comentaba en una entrada anterior, un router es el equipo ideal para llevar a cabo muchas tareas de servidor doméstico. Normalmente siempre está encendido y conectado, su consumo es más bajo que el de cualquier PC, muchos ya cuentan con conectividad por USB y además tienen la potencia suficiente para llevar a cabo multitud de tareas. Siendo posible instalar en muchos de ellos alguna variante de Linux como OpenWRT o DD-WRT… tienes entre manos un servidor en toda regla y las posibilidades simplemente se multiplican.

Mi idea principal cuando adquirí este router fue tener un NAS simple y barato, accesible tanto desde la red local como desde Internet. No voy a tener opción de RAID o características avanzadas, pero a cambio tenemos una solución de bajo coste, bajo consumo eléctrico, silenciosa, que cubre la mayoría de las necesidades de una red casera sencilla… y que además es un router, algo que siempre vas a necesitar en tu red. Y la cosa no se queda ahí, como veremos. ¡Manos a la obra!

Casi toda la información de este tutorial la he recopilado de la wiki de OpenWRT y en cada sección iré enlazando con los artículos de los que he sacado el contenido. No he inventado ninguna rueda pero creo que es interesante tenerlo agregado y recopilado. De hecho, todo lo que aquí se cuenta ¡ya he tenido que hacerlo dos veces! Y la segunda vez, me hubiese gustado tener un buen manual directo al grano disponible 🙂

El firmware

El firmware original del WRT160NL viene (lógicamente) con soporte para aprovechar el puerto USB y compartir discos externos a través de la red mediante SMB; pero al menos a mi me funcionaba fatal. Suerte que tenemos alternativas al software privativo y, de todas formas, ya tenía idea de instalarle un firmware open source. Desde que hace años instalé DD-WRT en un mítico WRT54G, tuve claro el potencial que ofrece un router.

Esta vez decidí usar OpenWRT; por motivo de soporte hardware en un equipo anterior ya había empezado a conocerlo. Después, cacharreando con el Linksys lo acabé brickeando así que instalé OpenWRT vía consola serie como expliqué en la entrada anterior. Ahora, se trata de comenzar a partir ese momento, con el nuevo firmware recién instalado.

Configuración básica

Recién instalado el firmware, el router tiene como IP local 192.168.1.1. Desde el PC con el que estemos conectados vía Ethernet al router, lo primero es abrir una sesión telnet para establecer la contraseña de root, lo que nos ofrece de forma automática. Una vez lo hayamos hecho, OpenWRT desactivará el acceso por telnet y activará el SSH.

A continuación, podemos seguir por la configuración de red. En mi caso, el WRT160NL no gestiona el acceso a Internet, eso lo hace el equipo que me suministró mi proveedor y que es el que tiene asignada la IP 192.168.1.1. Así que antes de conectar el Linksys al resto de la red casera, le cambio su IP local a 192.168.1.2 (por ejemplo) a través del interfaz web LuCi incluido en el firmware (también podríamos hacerlo por línea de comandos, claro).

Pantalla de inicio del interfaz web LuCi

Pantalla de inicio del interfaz web LuCi

Una vez hecho login con la contraseña establecida anteriormente, pincha en Administration para pasar a modo avanzado y tener todas las opciones de menú disponibles. Después, en el menú Network > Interfaces > LAN podemos configurar los parámetros de interfaz de red local del router, entre ellas la IP local, la IP de la pasarela de acceso (en mi caso el router del proveedor, 192.168.1.1) y los servidores DNS.

Pnatalla de configuración de los parámetros de red local

Pantalla de configuración de los parámetros de red local

Una vez hecho esto y guardados los cambios ya podemos desconectar el router del PC y conectarlo al resto de la red como un equipo más, accesible a través de la IP 192.168.1.2.

Poniendo a punto el USB

Utilizaremos la consola para configurar los siguientes apartados. Accedemos por SSH al router, con el usuario root y la contraseña que definimos anteriormente (si estamos en Windows podemos usar PuTTY como cliente de consola).

OpenWRT utiliza un gestor de paquetes llamado opkg, cuyo uso es muy sencillo. Lo primero que debemos hacer es actualizar la lista de software disponible.

opkg update

Esto hay que hacerlo cada vez que hayamos reiniciado el router, ya que no se mantiene en memoria, supongo que por temas de ahorro de almacenamiento, que desde luego no nos sobra (aunque tiene solución, como veremos más adelante). Probablemente hay alguna configuración para guardar la lista de manera permanente pero no entraré en ello.

Ahora podemos comenzar a instalar los paquetes necesarios para el soporte USB. Esta parte es fácil, usamos el siguiente comando:

opkg install kmod-usb2

Que instalará el paquete kmod-usb2 y las dependencias necesarias que conforman el software mínimo para poder utilizar el puerto USB del WRT160NL.

Almacenamiento externo

Una vez tenemos el puerto USB listo, los paquetes a instalar para soporte de discos externos y pendrives son:

opkg install kmod-usb-storage block-mount block-hotplug

Hecho esto, ahora necesitamos el driver correcto para el tipo de sistema de archivos que tenga el disco que queremos compartir desde nuestro router. Lo ideal sería tener un filesystem Linux como ext3 o ext4: más fiables y robustos y con soporte nativo y completo. NTFS no se recomienda, aunque me gustaría probarlo algún día ya que en ordenadores de sobremesa y con los drivers ntfs-3g he trabajado sin ningún problema y a un rendimiento bastante aceptable.

El caso es que mi disco duro externo de 1 tera está formateado en el viejo conocido FAT32 de andar por casa. Hasta hace unos meses, compartía en red mediante un sencillo USB dongle NAS G101, que solamente funciona con este sistema de archivos (y que por cierto, hace decentemente su tarea… pero no dejaba de ser un aparato más enchufado a la red, tanto eléctrica como de datos). Entre fotos, documentos y películas, he acabado acumulando tanta morralla en él que no tengo espacio suficiente en ningún otro lado para hacer una copia y formatearlo en otro sistema… así que, aunque no sea la mejor opción, apechugaremos con el FAT32 y así es como voy a configurar el OpenWRT:

opkg install kmod-fs-vfat

Si no es tu caso no te preocupes, tienes un buen puñado de otros filesystems soportados, solamente tienes que instalar el paquete adecuado de entre los que te devuelva este comando:

opkg list kmod-fs-*

Aún vamos a necesitar alguna cosa más, y es que es necesario instalar el soporte adecuado para la codificación de caracteres y lenguaje del sistema de ficheros que queremos compartir, a no ser que queramos ver tildes, eñes y otros caracteres propios del idioma de forma incorrecta. Para el castellano, una selección típica sería:

opkg install kmod-nls-cp850 kmod-nls-iso8859-15 kmod-nls-utf8

Puedes consultar todas las codificaciones que hay disponibles con un comando como este:

opkg list kmod-nls*

Ya tenemos instalados todos los paquetes necesarios para acceder al disco USB, vamos a comprobar que efectivamente se detectan las unidades externas examinando la salida del comando dmesg. Debería haber una sección similar a esta:

usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
nf_conntrack version 0.5.0 (460 buckets, 1840 max)
CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
usb 1-1: new high speed USB device using ar71xx-ehci and address 2
usb 1-1: configuration #1 chosen from 1 choice
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usb 1-1.3: new high speed USB device using ar71xx-ehci and address 3
usb 1-1.3: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
usb 1-1.4: new high speed USB device using ar71xx-ehci and address 4
usb 1-1.4: configuration #1 chosen from 1 choice
scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
scsi 0:0:0:0: Direct-Access SAMSUNG HD103SJ 0041 PQ: 0 ANSI: 0
usb-storage: device scan complete
sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI disk
scsi 1:0:0:0: Direct-Access TDKMedia Trans-It Drive PMAP PQ: 0 ANSI: 0 CCS
sd 1:0:0:0: [sdb] 15642624 512-byte logical blocks: (8.00 GB/7.45 GiB)
usb-storage: device scan complete
sd 1:0:0:0: [sdb] Write Protect is off
sd 1:0:0:0: [sdb] Mode Sense: 23 00 00 00
sd 1:0:0:0: [sdb] Assuming drive cache: write through
sd 1:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1 sdb2
sd 1:0:0:0: [sdb] Assuming drive cache: write through
sd 1:0:0:0: [sdb] Attached SCSI removable disk

He señalado las líneas que nos dan la información que vamos a necesitar para continuar con la configuración del servidor de archivos.

scsi 0:0:0:0: Direct-Access SAMSUNG HD103SJ 0041 PQ: 0 ANSI: 0
[...]
sda: sda1
[...]
scsi 1:0:0:0: Direct-Access TDKMedia Trans-It Drive PMAP PQ: 0 ANSI: 0 CCS
[...]
sdb: sdb1 sdb2

Lo que nos está contando es que detecta dos unidades de disco conectadas al puerto USB (lo que es correcto, ya que tengo un hub conectado al router para disponer de más puertos), un disco duro Samsung y un pendrive TDK. Para cada una de estas unidades físicas además nos da una lista de particiones y sus identificadores: sda1 en el Samsung, que se corresponde con la partición FAT32 que quiero compartir en red; y sdb1 y sdb2 en el pendrive, que efectivamente tengo dividido en una partición swap y otra ext3 y que utilizaré más adelante.

Ya tenemos todos los datos necesarios para montar el disco externo como una unidad más accesible en nuestro router. Comenzamos creando un punto de montaje, por ejemplo en /mnt/landisk

mkdir -p /mnt/landisk

El siguiente paso es crear una entrada para nuestra unidad USB en el fichero de configuración /etc/config/fstab. Pero antes debemos comprobar que no exista ya creada por defecto una entrada de ejemplo, como ocurría en mi caso, que además utilizaba el mismo identificador de dispositivo /dev/sda1 que el correspondiente a mi unidad. Comprueba el fichero fstab

cat /etc/config/fstab

Y si existe alguna entrada config 'mount' ya creada, elimínala editando el fichero o bien mediante la siguiente secuencia:

/etc/init.d/fstab stop
uci delete fstab.@mount[0]
uci commit fstab
/etc/init.d/fstab start

Ahora ya podemos configurar nuestro disco duro. En mi caso (sistema de archivos FAT32, configuración para idioma castellano) y usando UCI, sería una secuencia de comandos como esta:

/etc/init.d/fstab stop
uci add fstab mount
uci set fstab.@mount[-1].device=/dev/sda1
uci set fstab.@mount[-1].options=iocharset=iso8859-15,codepage=850,rw
uci set fstab.@mount[-1].enabled_fsck=0
uci set fstab.@mount[-1].enabled=1
uci set fstab.@mount[-1].target=/mnt/landisk
uci set fstab.@mount[-1].fstype=vfat
uci commit fstab
/etc/init.d/fstab start

UCI es el Interfaz de Configuración Unificada (Unified Configuration Interface en el idioma de Shakespeare), una utilidad de línea de comando pensada para centralizar y facilitar las tareas de configuración del sistema. De todas formas, siempre puedes editar directamente los ficheros de configuración si lo prefieres.

Si tras el /etc/init.d/fstab start obtienes un error como este:

mount: mounting /dev/sda1 on /mnt/landisk failed: Invalid argument

Revisa bien que las opciones de iocharset y codepage sean las adecuadas para la codificación del sistema de archivos de tu disco duro. A mi me ocurría si no las especificaba, o si las especificaba de forma incorrecta.

Si en cambio no te dice nada, enhorabuena: tu disco debería de estar montado. Ejecuta mount para confirmarlo y ver una salida similar a esta:

mount
rootfs on / type rootfs (rw)
/dev/root on / type jffs2 (rw,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=14744k)
tmpfs on /dev type tmpfs (rw,relatime,size=512k)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /mnt/landisk type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp850,iocharset=iso8859-15,shortname=mixed,errors=remount-ro)

En la última línea está el dispositivo que acabamos de montar. Fíjate que el codepage lo especifica como cp850, sin embargo en el fichero de configuración hay que especificar solamente el número, sin el “cp”.

La última prueba a realizar es reiniciar el router con el comando reboot y comprobar que la unidad se monta de forma automática en el arranque.

Qué bonito es compartir

Tener un disco duro conectado a un router está muy bien, pero si no podemos acceder desde otros equipos a través de la red, no hemos conseguido gran cosa.

Aunque de hecho, en este punto ya podríamos acceder a los archivos del disco duro desde otros ordenadores a través de SCP. En Linux, el soporte es nativo, en Windows, podemos usar WinSCP que es el que utilizo desde el curro y va muy bien.

Pero para una LAN, el protocolo SMB que usa la red de Windows no deja de ser muy cómodo, con todos sus defectos. En mi caso se trata de una red mixta (Windows XP, Windows 7, Mac OS X y GNU/Linux) y todos los equipos interoperan bastante bien con él. De hecho, los que mejor funcionan con SMB son los que no usan Windows 🙂

Así que el primer paso es instalar los paquetes que nos darán soporte al protocolo, es decir, SAMBA:

opkg install samba3 samba3-nmbd luci-app-samba

Este último paquete luci-app-samba añade a la interfaz web LuCi de OpenWRT una pantalla donde configurar fácilmente los detalles de los directorios compartidos que queramos añadir. Pues a ello vamos, no sin antes configurar el sistema para que el servidor SAMBA arranque en cada reinicio:

/etc/init.d/samba enable

A la pantalla para dar de alta y configurar las comparticiones se accede en el menú Services > Network shares. Allí podemos establecer propiedades básicas del servidor como nombre del host o grupo de trabajo. Y, en la sección Shared Directories, añadir una entrada por cada directorio que queramos compartir en red.

Las opciones son bastante sencillas y los valores por defecto suficientes, pero sí que hay una parte a la que hay que prestar más atención y preparar en detalle: los Allowed users o usuarios con permiso para acceder a las carpetas compartidas.

En todo este tutorial estoy accediendo al router como root, lo cual es lógico ya que las tareas a realizar son todas de administración del sistema. Sin embargo, no es solo eso, es que no hay ningún otro usuario disponible y además, ni siquiera disponemos de comandos como adduser o groups. Si ya has usado por ejemplo WinSCP para conectarte, te habrás dado cuenta.

Esto es así intencionadamente, ya que OpenWRT está pensado para ser instalado en routers y un router no está pensado para ser un equipo multiusuario, para ser accedido a través de diferentes cuentas personales como si fuese un PC cualquiera. Un router es un equipo de infraestructura de red y solamente debería ser utilizado por administradores.

Claro que aquí estamos en una cutre-LAN, esto no es el Pentágono y en este caso en concreto el uso que le estoy dando al Linksys es más el de un servidor tipo barebone que de un router hecho y derecho.

Si no queremos tener que pasar el usuario root y su contraseña cada vez que queremos conectarnos desde nuestro PC de turno a la carpeta compartida, tenemos dos opciones: o admitir accesos de invitados (guest), o crear en el router los mismos usuarios que utilizamos en el PC. La opción de admitir acceso guest no me gusta: vale que esto no es el Pentágono, pero tampoco hay que pasarse 🙂

Así que hay que crear los usuarios a mano editando directamente el archivo /etc/passwd. Copio y traduzco directamente de la wiki de OpenWRT:


“To access a samba share with user level access there must be a user added to the system. Edit /etc/passwd and add a line for the new user. Choose a user id (the first number in the line) of 1000 or higher that does not exist yet. Set the group identification number (the second number) to the same number as the user nobody. Copy the rest.”

“Para acceder a una compartición con acceso a nivel de usuario debe añadirse el usuario al sistema. Editar /etc/passwd y añadir una línea para el nuevo usuario. Elige un identificador de usuario (primer número de la línea) de 1000 o superior que no se esté utilizando ya. Pon como identificador de grupo (segundo número de la línea) el mismo que el usuario nobody. Copia el resto.”

Pues eso, se trata de añadir de esta forma a cada usuario con el que entremos en los equipos de la red desde los que vamos a acceder al disco compartido. Pero vamos a hacer un par de cosas más que no se mencionan en la wiki, para que la configuración de acceso por usuarios sea más completa. En mi caso, se va a acceder al disco compartido desde principalemente dos equipos diferentes, uno al que se accede con un usuario (pongamos usuarioA) y en el otro con usuarioB. Vamos a crear una configuración de grupo también para que los accesos desde ambos usuarios se hagan correctamente.

Lo primero es añadir un grupo al sistema que nos sirva para los usuarios que hemos añadido, editando el fichero /etc/group y añadiendo una línea similar a esta:

lanusers:x:1001

El nombre del grupo (lanusers) y su ID (1001) pueden ser cualquier otro, siempre que en el caso del ID sea mayor que 1000 y no coincida con ningún otro existente.

Ahora en el fichero /etc/passwd, en los usuarios añadidos según explica la wiki, cambiamos el ID de grupo que tienen asignado (65534) por el que acabamos de crear, 1001.

[...]
usuarioA:*:1001:1001:usuarioA:/var:/bin/false
usuarioB:*:1002:1001:usuarioB:/var:/bin/false
[...]

Por último, editamos el fichero /etc/config/fstab, y vamos a añadir las configuraciones uid=1001,gid=1001 en la lista de opciones del volumen compartido:

[...]
config 'mount'
option 'device' '/dev/sda1'
option 'enabled_fsck' '0'
option 'options' 'iocharset=iso8859-15,codepage=850,rw,uid=1001,gid=1001,umask=002'
option 'enabled' '1'
option 'target' '/mnt/landisk'
option 'fstype' 'vfat'
[...]

De esta forma estamos indicando a fstab que monte la unidad y ponga como propietario al usuarioA, y al grupo lanusers. Por un lado conseguimos que todos los usuarios que hemos añadido al grupo lanusers tengan acceso total de lectura y escritura a la unidad, y por otro no tener que montarla como root y tener que poner restricciones de acceso demasiado laxas para que otros usuarios puedan escribir.

Ahora, hecho todo esto, ya podemos desde LuCi añadir los usuarios en el campo Allowed users, separados por comas si hay más de uno.

Pantalla LuCi de configuración de directorios compartidos

Pantalla LuCi de configuración de directorios compartidos

Y ya solo queda una cosa más: editar el fichero /etc/samba/smb.conf para añadir una línea que diga:

null passwords = yes

En la sección [global]. Ahora ya tenemos compartido en la red local nuestro disco duro USB.

La WiFi

Ya que estamos de tutorial… voy a finalizar explicando cómo configurar el WRT160NL como punto de acceso WiFi. En mi casa, es el mejor situado para ello, así que dejemos las conexiones ATM y Ethernet para el modem-router del proveedor, ¡y saquemos un poco más de jugo a OpenWRT y al Linksys!

Es muy fácil. Lo primero, como siempre, drivers y paquetes básicos del subsistema en cuestión:

opkg install kmod-ath9k

Con este paquete ya nos descarga e instala, vía dependencia, el resto de software necesario para poner en marcha la WiFi.

[...]
Configuring iw.
Configuring kmod-crypto-core.
Configuring kmod-crypto-arc4.
Configuring kmod-crypto-aes.
Configuring wireless-tools.
Configuring kmod-cfg80211.
Configuring kmod-mac80211.
Configuring kmod-ath.
Configuring kmod-ath9k.

Solamente nos falta una cosa, y es el paquete que se encarga de gestionar el cifrado de la comunicación inalámbrica. Como se explica en la wiki, hay más de una opción. Yo he usado la recomendada, que es wpad-mini:

opkg install wpad-mini

Ahora, a configurar. Primer paso:

rm -f /etc/config/wireless
wifi detect > /etc/config/wireless

El comando wifi detect es tan amable de generar un fichero de configuración del sistema WiFi a partir de las propiedades de nuestro hardware. El rm anterior es solo por si ya existía un fichero de configuración previo.

Ahora podemos configurar los parámetros habituales de nuestra red WiFi a través del interfaz web, Network > Wifi > RADIO0.

Pantalla de configuración de la red WiFi

Pantalla de configuración de la red WiFi

En la sección Device Radio0 lo único que he cambiado es el modo (Mode), ya que no tengo equipos que soporten la especificación N, lo he puesto a 802.11 g.

En la sección Interfaces he puesto nombre (ESSID) a la red, cifrado (Encryption) WPA2-PSK, y la contraseña (Key) correspondiente. El resto de valores, lo que viene por defecto. Save & Apply y ya tenemos la red WiFi a través del WRT160NL lista.

¿Fin?

Si podemos conectar a la nueva WiFi, damos por finalizado el tutorial. Ya nos hemos hecho a la idea de que un router casero moderno puede ser perfectamente un ordenador solo que sin tarjeta gráfica. Así que… como decía al principio ¡las posiblidades se multiplican!

Cliente de Bittorrent, eMule o descarga directa, monitor de red (lo que viene siendo pillar la WiFi del vecino en caso de emergencia, vaya :-), cliente de SETI@Home o Folding@Home, servidor UPnP, Webcam con acceso remoto, VPN… mil cosas que se nos pueden ocurrir, algunas más sencillas y otras quizás habría que trabajarlas más: pero se puede hacer.

Un momento… ¿y todo eso, dónde cabe?

¡Vaya! Pues es verdad. Tendremos un fantástico mundo de posibilidades, pero un vistazo rápido al espacio disponible…

df -h .
Filesystem Size Used Available Use% Mounted on
/dev/root 6.4M 4.3M 2.1M 67% /

En la raíz del sistema tenemos 6,4 megas, y con todo lo que hemos hecho nos hemos pulido 4,3 así que quedan 2,1… no parece mucho para tantos planes ¿cierto?.

Pues no, no lo es. Una de las limitaciones principales en cualquier router casero, si queremos usarlo como servidor, es que el almacenamiento disponible para el sistema operativo y aplicaciones es muy limitado. Pero como casi todo, y especialmente trabajando en Linux, tiene solución. Y más de una en esta caso.

Vamos a aprovechar el pendrive TDK enchufado al hub USB para añadir espacio donde poder instalar mucho más software. Es muy sencillo.

Creamos la configuración necesaria para montar el pendrive, de manera muy parecida a como lo hicimos anteriormente:

mkdir -p /mnt/extra
/etc/init.d/fstab stop
uci add fstab mount
uci set fstab.@mount[-1].device=/dev/sdb2
uci set fstab.@mount[-1].options=rw,sync
uci set fstab.@mount[-1].enabled_fsck=0
uci set fstab.@mount[-1].enabled=1
uci set fstab.@mount[-1].target=/mnt/extra
uci commit fstab
/etc/init.d/fstab start

Solamente hay que tener en cuenta que el pendrive ha de estar formateado en ext2 o superior, y en la línea device poner el identificador de unidad que corresponda en cada sistema. Para incorporar el soporte para filesystem tipo EXT:

opkg install kmod-fs-ext4 e2fsprogs

Una característica muy interesante del instalador opkg incluido en OpenWRT es que permite instalar los paquetes en cualquier unidad de destino montada en el sistema. Solo tenemos que especificar una línea de configuración para cada posible unidad en el archivo /etc/opkg.conf similar a esta:

dest usb /mnt/extra

Donde usb es el alias que le damos al destino, y que utilizaremos luego como parámetro del comando opkg. Y /mnt/extra es el punto de montaje que acabamos de configurar para el pendrive.

Creamos el siguiente enlace:

ln -s /mnt/extra /opt

Y editamos el fichero /etc/profile para añadir las siguientes dos líneas al final:

export PATH=$PATH:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib:/opt/usr/lib

Ahora, cuando queramos añadir uno o varios paquetes nuevo, podemos especificar que se instalen en el pendrive mediante el parámetro -d, por ejemplo:

opkg -d usb install openvpn

¡Y listo! Ya tenemos mucho más espacio para instalar todo tipo de cosas, lo que significa que vamos a poder darle muchos más usos al router.

Este método tiene sus limitaciones: por ejemplo, no podemos instalar módulos del kernel, al menos no directamente. Pero como dije antes, hay alternativas más completas como extroot, que nos van a permitir trasladar la partición raíz a cualquier otra unidad como por ejemplo un pendrive, y así ya no tendríamos limitaciones de ningún tipo más que nuestra imaginación 🙂

¡Happy hacking!

Anuncios

Publicado 24 enero, 2012 por bravido en Uncategorized

Etiquetado con , , ,

11 Respuestas a “Linksys WRT160NL + OpenWRT + USB + Servidor de archivos Samba + Wifi WPA + Espacio extra

Suscríbete a los comentarios mediante RSS.

  1. maravilloso….

  2. La mayoría de la gente de a pié, no pedimos a un router mucho más de lo que nos has explicado….. Excelente trabajo !!!

  3. amigo simplemente magistral, de mucha ayuda, gracias por tomarte el tiempo de compartir, gracias a este tuto tengo un economico router tplink funcionando con netwrok share.

    • ¡Me alegra que sea de ayuda! 🙂

      Aún olvidé añadir una cosa que a veces puede ser importante sobre todo si tienes mucho contenido en la unidad de red: configurar una partición swap. Si da problemas probar eso.

      No es muy complicado, se explica en http://wiki.openwrt.org/doc/uci/fstab, sección
      Adding Swap Partitions. Yo lo hice añadiendo una partición en el pendrive.

      Saludos!

  4. joel, macho, muy práctico. Ves, ya me has picao.

  5. SIMPLEMENTE… ESPECTACULAR!!!

  6. Hola, ante todo muy bueno y claro tu tutorial, y se agredece mas todavia por estar en español. Pero tengo una consulta: ¿como hago para instalar un servidor multimedia que funcione con UPnP? ¿se puede? ¿podria transcodificar con subtitulos .SRT o esty pidiendo demasiado con eso? ¡¡gracias por tu ayuda!!

  7. Excelente amigo, gracias por compartir 😀

  8. Buenas!
    Muchas gracias por este gran tutorial. Me parece un gran trabajo de documentación y me han resultado especialmente útiles los enlaces que has puesto a la wiki de OpenWrt para adaptar los parámetros a nuestros casos particulares.
    En mi caso, con el mismo dispositivo (WRT160NL), la mayoría de los paquetes venían ya instalados en la versión de OpenWrt que descargué (openwrt-ar71xx-wrt160nl-jffs2-factory.bin), como el soporte para usb2 o WiFi así que he tenido un poco menos de trabajo.
    Sin embargo, la configuración de Samba me está dando dolores de cabeza. Sólo funciona si permito el acceso “invitado”. Si intento poner seguridad a nivel de usuario, el disco queda inaccesible para todos. He intentado “de todo” sin frutos hasta ahora. Si pongo “uid=1001..” como opción de montaje, el fstab se queja (parámetro incorrecto) y no monta el disco de ninguna manera. Decir que sistema de archivos es ext4. ¿Alguna idea?
    En fin, podría comentar muchas más cosas acerca del periplo que han sido estos dos días de cacharreo pero sería mucha tela para un comentario. Ahora pienso trastear mucho más la wiki del OpenWrt-UCI e instalar más cosas (torrent y servidor ftp será lo primero).
    Un saludo.

  9. Increíble el nivel de potencial que has sacado a tus aparatos, una pasada como has configurado todo. Gracias. Lo mismo también lo utilizo yo.

  10. Gracias por este gran tutorial.
    Mi idea es crear una nube owcloud con el wr703 y openwrt….o intentarlo je.
    Me ha sido de mucha ayuda tu tuto
    Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: