De todo un poco

OpenWRT desde memoria usb externa en WRT160NL

with 2 comments

Al poco rato me di cuenta que el router tiene solo 8MB de memoria y 32MB de RAM que definitivamente es poco para todo lo que tenía pensado instalarle, así que me enfoqué en buscar una solución aprovechando su puerto usb: hacer que el router se inicie desde una memoria externa de mayor capacidad donde podremos instalar los programas que queramos y a la vez montar una unidad de swap en una memoria externa. Así tendríamos virtualmente capacidad ilimitada de RAM y para instalar programas, además de tener aparte una unidad para almacenar nuestros archivos.

Es importante que el firmware instalado sea openwrt-ar71xx-wrt160nl-jffs2.bin, ya que con openwrt-ar71xx-wrt160nl-squashfs.bin no me funcionó.

Preparando el almacenamiento

Tengo un disco duro usb externo el cual ya ocupo para guardar mis archivos, a este disco le agregué las dos particiones adicionales que necesito usando Parted Magic, en el cual rápidamente y con interfaz gráfica generé las nuevas particiones. Finalmente tengo:

Partición 1: La más grande que permitirá almacenar nuestros archivos.

Partición 2: De sistema (EXT3), donde estará todo instalado, con 200MB será suficiente.

Partición 3: De swap (Linux-Swap) para “ampliar” la memoria RAM, de 300MB.

Copiando la partición de sistema al disco usb

Con el disco duro usb conectado me conecto a ssh e instalé los siguientes paquetes para reconocer los dispositivos usb y utilizar las particiones que creamos, luego reinicio:

opkg update
opkg install kmod-usb-core kmod-usb-uhci kmod-usb-storage kmod-usb2 kmod-fs-ext3
opkg install mkdosfs e2fsprogs kmod-fs-vfat fdisk block-hotplug
opkg install kmod-fs-ext2
opkg install nano kmod-loop kmod-nls-cp437 kmod-nls-iso8859-1
opkg install usbutils
reboot

Existe un bug con el modulo fstab que se encarga de montar las unidades al inicio, lo corrijo comentando la siguiente línea en el archivo /etc/init.d/fstab:

# echo ‘# WARNING: this is an auto generated file, please use uci to set defined filesystems’ > /etc/fstab

eliminamos el archivo /etc/fstab y genero un symlink :

rm /etc/fstab
ln -s /tmp/fstab /etc/fstab

Listo, ahora estamos listos para copiar la partición de sistema a la partición del disco usb (Segunda partición), en este caso \dev\sda2, para ello montamos ésta partición en el directorio /mnt y la partición de sistema en un directorio temporal.

mount /dev/sda2 /mnt
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt –a
umount /tmp/root
umount /mnt

Al ingresar por ssh lo primero que se ve es un banner de inicio, ahora que ya lo copiamos al disco usb el original le agrego una línea que me dice que el sistema fue iniciado desde la memoria interna del router.

echo Booteado desde ROM interno >> /etc/banner

Ahora hay que hacer se inicie desde la partición de sistema del disco usb (/dev/sda2), modifico el archivo /etc/config/fstab en la sección mount y agrego la línea:

option is_rootfs 1

Entonces queda así:

config mount
option target /overlay
option device /dev/sda2
option fstype ext3
option options rw,sync,umask=000
option enabled 1
option enabled_fsck 1
option is_rootfs 1

Instalamos paquete block-extroot que permite boteo externo y reiniciamos

opkg update
opkg install block-extroot
reboot

Después del reinicio además del banner de inicio podemos verificar listando las particiones y espacio libre:

df -h

Puede que al intentar instalar algún paquete reclame que no hay espacio, así que agregamos una línea para forzar el espacio disponible

echo option force_space >> /etc/opkg.conf

Ahora debería iniciar siempre desde el disco usb, si encendemos el router sin el disco lo único que pasará es que no montara la unidad así que iniciara desde la memoria interna.

Montar la Partición Swap

Lo único que debemos hacer para que al inicio monte la partición swap (/dev/sda3) es modificar el archivo /etc/config/fstab en la sección “swap”

config swap
option device /dev/sda3
option enabled 1

Ahora al reiniciar podremos verificar con

free

Nos mostrará la memoria disponible.

Montando nuestra unidad

Nuestra partición la montamos en el directorio /home para ello debemos crear este directorio:

mkdir /home

y en /etc/config/fstab modificamos la sección “mount”:

config mount
option target /home
option device /dev/sda1
option fstype vfat
option options rw,sync,umask=000
options enabled 1
options enabled_fsck 1

Después de reiniciar, finalmente veremos el router iniciando desde el disco usb, con una partición swap y con nuestros archivos en /home

Written by overside_

25.noviembre.2010 a 21.05

Publicado en Odisea con OpenWRT

Tagged with , , , , ,

2 comentarios

Subscribe to comments with RSS.

  1. como esta, tengo un problema ojala puedas ayudarme. tengo el router wrt160nl y le instale openwrt porque quiero a¿hacer unas pruebas con asterisk pero la memoria del router no es suficiente para instalar asterisk por eso quiero usar un pendrive para aprovechar el puerto usb y usarlo para instalar asterisk pero no se que pasos deberia seguir para que el router me lo reconozca. gracias

    galo

    6.enero.2011 at 12.16

  2. Hola.

    Muchas gracias por tu información.

    ¿como se puede instalar gcc para hacer
    make install?

    apt-get install gcc build-essential

    Jose

    27.junio.2012 at 10.26


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: