Skip to content

Compilando LibreMESH

samba edited this page Sep 16, 2019 · 1 revision

Compilando LibreMESH

Esta guia es una traducción del documento creado por Ilario para compilar LibreMESH utilizando la versión 18.06 de OpenWRT, tiene solo unas modificaciones para agregar las configuraciones necesarias para NuestraRED.org y otros proyectos.

Compilando LibreMESH desde el código fuente.

Este procedimiento ha sido probado en GNU/Linux, podría requerir algunas modificaciones para trabajar en otros sistemas.

En primer lugar, necesita instalar algunos paquetes en su sistema. Construyendo OpenWrt tiene un montón de dependencias, si no está seguro de que su sistema tenga todas las dependencias instaladas puede comprobar si los siguientes comandos fallan y consultar los mensajes de error, leyendo el enlace:

en el wiki de OpenWrt puede ayudarle también.

En un sistema Ubuntu, el siguiente comando instalará las dependencias de compilación mínimas:

sudo apt update
sudo apt install --no-install-recommends git ca-certificates \
subversion wget make gcc g++ libncurses5-dev gawk unzip file \
patch python3-distutils python3-minimal python-minimal

Ahora necesitas descargar el código fuente de OpenWRT.

Asegurate de ejecutar los comandos git clone como usuario normal (No use el usuario root para esta tarea): El proceso de compilación no va a funcionar como usuario root y tendra un error si intentas usar este usuario

Descarga el código fuente de OpenWRT

git clone https://git.openwrt.org/openwrt/openwrt.git

Tambien puede utilizar el codigo de LibreRouter que se consiguie en el siguiente enlace:

Ingresa al directorio con el código

cd openwrt

Haz "Checkout" o cambia a la rama que necesitamos

git checkout v18.06.4

Opcionalmente, intente ejecutar algunas herramientas de construcción OpenWrt para detectar dependencias faltantes.

scripts/feeds update -a
scripts/feeds install -a
make V=s menuconfig
make V=s

Ahora que tiene su sistema listo, puede continuar:

Añade los repositorios de LibreMesh a los feeds de OpenWrt

cp feeds.conf.default feeds.conf

cat << EOF >> feeds.conf

src-git libremesh https://github.com/libremesh/lime-packages.git;master
src-git libremap https://github.com/libremesh/libremap-agent.git;master
EOF

Actualiza los paquetes de los feeds

scripts/feeds update -a
scripts/feeds install -a

Perzonalizar la configuración de LibreMESH

Primero debes editar el archivo lime-defaults-factory que se encuentra en la carpeta files/etc/config en este archivo se encuentra la configuración inicial de LibreMesh y puedes aprovechar para perzonalizar la configuración segun las necesidares de tu proyecto.

Ejemplo:

En el caso especifico de NuestraRED.org descargue los archivos de los Network-profile ya creados que se encuentran en el repositorio:

.
├── etc
│   ├── config
│   │   └── lime-defaults-factory
│   ├── dropbear
│   │   └── authorized_keys
│   └── uci-defaults
│       ├── 94-dnsmasq_cache_size
│       └── 97-nosred-config

De esta forma agrego los archivos de la configuración de NuestraRED al proyecto y no tengo que compilar uno a uno los equipos que voy a agregar a la red.

Despues de hacer esto puedo continuar con la compilación del Firmware

Ejecuta el menu de configuración

make menuconfig

  • Revisa o seleccion la Opcion +target+ (e.g. +ar71xx+)
  • Luego elige la opcioón +subtarget+ (e.g. +generic+)
  • Luego selecciona el profile a crear +profile+ (e.g. +tl-wdr3600-v1+)

O el equipo de tu preferencia segun el listado en el siguiente enlace:

Selecciona Target System, Subtarget y Target Profile en secuencia.

Deseleccionar los siguientes paquetes problemáticos:

  • Base system -> dnsmasq
  • Base system -> firewall
  • Network -> odhcpd
  • Network -> odhcpd-ipv6only

(Opcional), Deselecciona paquetes que no se van a usar:

  • Network -> ppp
  • Kernel modules -> Network Support -> kmod-ppp

Selecciona los paquetes de LibreMESH:

  • LiMe -> lime-system (LibreMesh system files)
  • LiMe -> lime-proto-babeld (LiMe babeld proto support)
  • LiMe -> lime-proto-batadv (LiMe batman-adv proto support)
  • LiMe -> lime-proto-anygw (LiMe anygw proto support)
  • LiMe -> lime-hwd-openwrt-wan (Respect openwrt wan interface as default)
  • LiMe -> lime-proto-wan (LiMe wan proto support)
  • LiMe -> shared-state (Very minimal state sharing betwen nodes)
  • LiMe -> hotplug-initd-services (Hotplug events of init.d services)
  • LiMe -> shared-state-babeld_hosts (babeld-hosts module for shared-state)
  • LiMe -> shared-state-bat_hosts (bat-hosts module for shared-state)
  • LiMe -> shared-state-dnsmasq_hosts (dnsmasq hosts module for shared-state)
  • LiMe -> shared-state-dnsmasq_leases (dnsmasq leases module for shared-state)
  • LiMe -> shared-state-nodes_and_links (nodes_and_links module for shared-state)
  • LiMe -> check-date-http (Keep local date under NTP too far away skew)
  • LiMe -> lime-app (LimeApp)
  • LiMe -> Offline Documentation -> lime-docs-minimal (LibreMesh English documentation)
  • LiMe -> Offline Documentation -> lime-docs (LibreMesh minimal documentation)
  • LiMe -> lime-debug (libremesh debug utils)
  • LiMe -> first-boot-wizard (first-boot-wizard)
  • LiMe -> lime-hwd-ground-routing (Manage 802.1q VLANs for ground routing)
  • LiMe -> lime-map-agent (LiMe LibreMap agent)

Los paquetes de la parte inferior de esta lista son paquetes no estrictamente necesarios, considere como posibilidad eliminar algunos de ellos solamente si la imagen creada es demasiado grande y no cabe en la memoria del router

Save and exit (Graba y sal del menu de configuración)

Finalmente compila las imagenes

make -j$(nproc)

Es necesario que remplaces $(nproc) con el número de núcleos que tiene su CPU, puedes saber la cantidad usando el comando lscpu como Core(s) por socket.

Si todo va bien, deberías encontrar los binarios producidos dentro del directorio bin/.