Diferencia entre revisiones de «OpenWrt»
(Cómo crear firmware OpenWrt listo para usar) |
Sin resumen de edición |
||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 11: | Línea 11: | ||
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). | 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). | ||
Esto es especialmente cuando queremos instalar ciertas cosas en routers con poca memoria de almacenamiento: podemos quitar paquetes con funciones que no necesitamos (ejemplo: dnsmasq, odhcpc, odhcp6c), y aprovechar el espacio libre para instalar más cosas. Además la compresión en el archivo de firmware (solo lectura, squashfs) es más eficiente que en la partición (lectura-escritura, jffs2) del router. | |||
Primero es necesario descargar | |||
Primero es necesario descargar el [https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 ImageBuilder de OpenWrt Chaos Calmer '''15.05.1'''] (la versión más reciente hasta Abril/2016) y descomprimirlo en una carpeta vacía. | |||
Para empezar a trabajar: | Para empezar a trabajar: | ||
Línea 27: | Línea 29: | ||
A la hora de compilar, se puede indicar a ImageBuilder: | A la hora de compilar, se puede indicar a ImageBuilder: | ||
* Que agregue más paquetes | * 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 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/ | * Que incruste algunos archivos en el firmware a generar. Ej: FILES=files/ | ||
Línea 41: | Línea 43: | ||
... 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. | ... 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 == | |||
En nuestro caso, tuvimos problemas para configurar algunos routers Wi-Fi (2.4 GHz o 5 GHz) de manera que cumplan las regulaciones nacionales sobre el uso de frecuencias inalámbricas. | |||
Si OpenWrt no te permite elegir frecuencias libres (y legales aquí), puedes necesitar integrar en tu firmware estos archivos. Los [http://luci.subsignal.org/~jow/reghack/README.txt archivos extra] a añadir, de la carpeta files/ están acá, y son universales para firmwares de dispositivos ''ar71xx''. | |||
[http://repo.lmita.xyz/openwrt/chaos_calmer/ar71xx/fixes/regulatory_ar71xx_15.05.tar.gz Parche para OpenWrt 15.05] | |||
[http://repo.lmita.xyz/openwrt/chaos_calmer/ar71xx/fixes/regulatory_ar71xx_15.05.1.tar.gz Parche para OpenWrt 15.05.1] | |||
=== Routers Wi-Fi 5 GHz === | |||
La sugerencia para crear imágenes para dispositivos mesh (UBNT) es la siguiente: | |||
<source lang="bash"> | |||
$ make image PROFILE=UBNT PACKAGES="luci luci-i18n-base-es iwinfo -odhcp6c -odhcpc -odhcpd -dnsmasq -ppp -ppp-mod-pppoe" FILES=files/ | |||
</source> | |||
=== Router Wi-Fi 2.4 GHz (+gestiona clientes temporales) === | |||
Este router era un TP-LINK TL-WR941ND '''v5.1''', y está encargado de '''enrutar''' a los "clientes ocasionales" (aparatos conectados a los hotspots Wi-Fi abiertos). | |||
<source lang="bash"> | |||
$ make image PROFILE=TLWR941 FILES="files" PACKAGES="luci luci-i18n-base-es luci-theme-material qos-scripts luci-app-qos luci-i18n-qos-es -odhcpc -odhcp6c -ppp -ppp-mod-pppoe ip kmod-ledtrig-heartbeat mini-snmpd" | |||
</source> | |||
=== Router Wi-Fi (ruteo de la red interna) === | |||
(aún sin probar) | |||
Este router es un TP-LINK TL-WR841ND '''v9''' (procesador Qualcomm-Atheros). Está encargado de '''enrutar''' los paquetes de la red interna, y servir de gateway para los servidores. | |||
Como sólo queremos que enrute paquetes (que vienen por cable), decidimos '''quitarle todo el soporte Wi-Fi''', para ahorrar espacio en la memoria flash (4 MB). | |||
<source lang="bash"> | |||
$ make image PROFILE=TLWR841 PACKAGES="-kmod-ath -kmod-ath9k -kmod-cfg80211 -kmod-mac80211 -hostapd-common -wpad-mini -iw -odhcpc -odhcp6c -ppp -ppp-mod-pppoe luci luci-i18n-base-es luci-theme-material tinc ip kmod-ledtrig-heartbeat mini-snmpd" | |||
</source> | |||
* ¿necesitamos dnsmasq? | |||
* Necesitamos Babel (babeld), pero éste se instalará en la partición jffs2 (lectura-escritura) para poder actualizarlo sin perder uptime. |
Revisión actual - 15:24 28 mar 2016
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).
Esto es especialmente cuando queremos instalar ciertas cosas en routers con poca memoria de almacenamiento: podemos quitar paquetes con funciones que no necesitamos (ejemplo: dnsmasq, odhcpc, odhcp6c), y aprovechar el espacio libre para instalar más cosas. Además la compresión en el archivo de firmware (solo lectura, squashfs) es más eficiente que en la partición (lectura-escritura, jffs2) del router.
Primero es necesario descargar el ImageBuilder de OpenWrt Chaos Calmer 15.05.1 (la versión más reciente hasta Abril/2016) y descomprimirlo 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
En nuestro caso, tuvimos problemas para configurar algunos routers Wi-Fi (2.4 GHz o 5 GHz) de manera que cumplan las regulaciones nacionales sobre el uso de frecuencias inalámbricas.
Si OpenWrt no te permite elegir frecuencias libres (y legales aquí), puedes necesitar integrar en tu firmware estos archivos. Los archivos extra a añadir, de la carpeta files/ están acá, y son universales para firmwares de dispositivos ar71xx.
Parche para OpenWrt 15.05 Parche para OpenWrt 15.05.1
Routers Wi-Fi 5 GHz
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 -odhcpc -odhcpd -dnsmasq -ppp -ppp-mod-pppoe" FILES=files/
Router Wi-Fi 2.4 GHz (+gestiona clientes temporales)
Este router era un TP-LINK TL-WR941ND v5.1, y está encargado de enrutar a los "clientes ocasionales" (aparatos conectados a los hotspots Wi-Fi abiertos).
$ make image PROFILE=TLWR941 FILES="files" PACKAGES="luci luci-i18n-base-es luci-theme-material qos-scripts luci-app-qos luci-i18n-qos-es -odhcpc -odhcp6c -ppp -ppp-mod-pppoe ip kmod-ledtrig-heartbeat mini-snmpd"
Router Wi-Fi (ruteo de la red interna)
(aún sin probar)
Este router es un TP-LINK TL-WR841ND v9 (procesador Qualcomm-Atheros). Está encargado de enrutar los paquetes de la red interna, y servir de gateway para los servidores.
Como sólo queremos que enrute paquetes (que vienen por cable), decidimos quitarle todo el soporte Wi-Fi, para ahorrar espacio en la memoria flash (4 MB).
$ make image PROFILE=TLWR841 PACKAGES="-kmod-ath -kmod-ath9k -kmod-cfg80211 -kmod-mac80211 -hostapd-common -wpad-mini -iw -odhcpc -odhcp6c -ppp -ppp-mod-pppoe luci luci-i18n-base-es luci-theme-material tinc ip kmod-ledtrig-heartbeat mini-snmpd"
- ¿necesitamos dnsmasq?
- Necesitamos Babel (babeld), pero éste se instalará en la partición jffs2 (lectura-escritura) para poder actualizarlo sin perder uptime.