Instalar OpenWRT en la Fonera

OpenWRT es una distribución de Linux muy ligera pensada para ser instalada en dispositivos con recursos muy limitados, como por ejemplo routers. Instalar OpenWRT en la Fonera tiene innumerables beneficios (imagina tener Linux instalado en un aparato que cabe en la palma de tu mano y tiene capacidades inalámbricas :D ).

En esta entrada explico como instalar la versión mas reciente de OpenWRT (la 7.09, nombre en clave Kamikaze) en la Fonera.

Para enviar a la instalación de OpenWRT los archivos de firmware necesarios necesitamos un servidor TFTP en nuestro ordenador. Para instalarlo ejecuta:

emerge net-ftp/tftp-hpa

Ahora copia los archivos al directorio del servidor ejecutando:

mkdir /tftproot
cd /tftproot
wget http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/openwrt-atheros-2.6-root.jffs2-64k
wget http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/openwrt-atheros-2.6-vmlinux.lzma

De momento no iniciamos el servidor porque es probable que nuestro ordenador no esté configurado con la IP adecuada.

Para intercambiar datos entre la Fonera y nuestro PC se usar el programa RedBoot. El problema es que la Fonera tiene limitado el acceso por cable Ethernet a este programa. Para solucionarlo entrar por SSH a la Fonera y ejecutar los siguientes 4 comandos:

cd /tmp
wget http://coppercore.net/~kevin/fon/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot

Después de esto la Fonera se reiniciara. Ejecutar entonces los siguientes 4 comandos:

cd /tmp
wget http://coppercore.net/~kevin/fon/out.hex
mtd -e "RedBoot config" write out.hex "RedBoot config"
reboot

Tras el último comando la Fonera se reiniciará pero no podrá completar su arranque por lo que dejará de ser accesible por SSH. No pasa nada, porque durante los 10 primeros segundos de arranque será accesible por RedBoot.

Para conectar usando RedBoot:

  1. Conectar físicamente (por Ethernet) la Fonera al ordenador
  2. Configurar el ordenador con una IP del rango 192.168.1.X
  3. Iniciar el servidor TFTP
    /etc/init.d/in.tftpd start
  4. Acceder por telnet a la dirección 192.168.1.254 en el puerto 9000 (9000 es el puerto de escucha de RedBoot )
    telnet 192.168.1.254 9000

Si no te da tiempo a conectar a RedBoot, desconectar y reconecta la alimentación de la Fonera y dispondrás de otros 10 nuevos segundos para intentarlo. Si todo va bien verás el prompt "RedBoot>".

Lo siguiente es indicar a la Fonera las direcciones del servidor TFTP y del cliente, con el siguiente formato:

ip_addr -h IP_DEL_SERVIDOR_TFTP -l IP_DE_LA_FONERA/24

Es importante no olvidar la máscara /24 al indicar la IP de la Fonera.

En mi caso le había asignado a mi PC la IP 192.168.1.2 por lo que el comando concreto es:

ip_addr -h 192.168.1.2 -l 192.168.1.254/24

Ahora ya estamos en condiciones de flashear la Fonera con el firmware OpenWRT ejecutando los siguientes comandos (Importante:el tercer comando puede tardar cerca de 20 minutos, no tocar la Fonera en ese rato):

fis init
load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
fis load -l vmlinux.bin.l7
exec

Ya tenemos la Fonera con OpenWRT instalado, solo falta cambiar la contraseña de root:

telnet 192.168.1.1
passwd root

Para actualizar a una nueva versión de Kamikaze no hace falta repetir los pasos pues nuestra Fonera ya se queda con el Redboot y SSH funcionando. Tan solo hace falta entrar por SSH y ejecutar

cd /tmp
wget http://downloads.openwrt.org/kamikaze/nueva_version/atheros-2.6/openwrt-atheros-2.6-vmlinux.lzma
wget http://downloads.openwrt.org/kamikaze/nueva_version/atheros-2.6/openwrt-atheros-2.6-root.squashfs
mtd -e vmlinux.bin.l7 write openwrt-atheros-2.6-vmlinux.lzma vmlinux.bin.l7
mtd -e rootfs write openwrt-atheros-2.6-root.jffs2-64k rootfs
reboot

AL reiniciar la Fonera tendrá los valores de fábrica, es decir, que para conectarnos a ella por cable tenemos que poner nuestro ordenador en el rango de IPs 192.168.1. y hacer telnet a la IP 192.168.1.1

telnet 192.168.1.1

Una vez dentro, establecemos un password de root

passwd

Una vez cambiado, ya podemos conectarnos por SSH

ssh 192.168.1.1

Créditos
Wiki de fonera.info
Instrucciones originales (en inglés)
Instrucciones en español