OpenWrt

De Hacklab La Paz - r00thouse

OpenWrt

Usualmente el firmware stock que viene junto a aparatos de red (routers, APs) no es lo suficientemente {estable,eficiente,flexible} para nuestros propósitos.

OpenWrt es una "distribución" GNU/Linux (aunque más conocida como firmware en este caso) diseñada para funcionar en sistemas embebidos, como los aparatos antes mencionados. Goza de una gran flexibilidad, lo que lo hace apto para un montón de casos.

How To: Cocinar firmware OpenWrt mediante ImageBuilder

(esta guía está enfocada a la arquitectura ar71xx (Atheros MIPS). La guía funciona para cualquier otro aparato soportado, pero podrían necesitar descargar las utilidades para su arquitectura en específico)

Este es el método más fácil para obtener binarios instalables con configuraciones no estándar. Contrariamente al caso de utilizar Buildroot, las imágenes generadas con ImageBuilder son compatibles con los paquetes de los repositorios existentes en downloads.openwrt.org (incluso módulos de kernel).


Primero es necesario descargar ImageBuilder: [1] y se descomprime el archivo en una carpeta vacía.

Para empezar a trabajar:

# Obtenemos la lista de paquetes por defecto
$ make info

# Revisamos los repositorios por defecto que traerán las imágenes
$ cat repositories.conf

A la hora de compilar, se puede indicar a ImageBuilder:

  • Que agregue más paquetes (esto es, en la partición SquashFS)'. Ej: PACKAGES="luci"
  • Que quite algunos paquetes por defecto, especificándolos con un guión al principio. Ej: PACKAGES="-dnsmasq"
  • Que incruste algunos archivos en el firmware a generar. Ej: FILES=files/

(Se debe tomar en cuenta la jerarquía de archivos. Ej: files/bin/wololo estará, al final, en /bin/wololo)


De manera que, al ejecutar ImageBuilder con los sig. argumentos...

$ make image PROFILE=UBNT PACKAGES="luci" FILES=files/

... compilará imágenes para dispositivos UBNT M Series (NanoStations, NanoStations Loco, Rocket, Bullet, etc...) con Luci por defecto y con los archivos en la carpeta files incrustados.

Imágenes para el proyecto de Redes Mesh

La sugerencia para crear imágenes para dispositivos mesh (UBNT) es la siguiente:

$ make image PROFILE=UBNT PACKAGES="luci luci-i18n-base-es iwinfo -odhcp6c -odhcpd -dnsmasq -ppp -ppp-mod-pppoe" FILES=files/

Los archivos extra [2] a añadir, de la carpeta files/ están acá: [3]