-
Notifications
You must be signed in to change notification settings - Fork 96
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.
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
git clone https://git.openwrt.org/openwrt/openwrt.git
Tambien puede utilizar el codigo de LibreRouter que se consiguie en el siguiente enlace:
cd openwrt
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:
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
scripts/feeds update -a
scripts/feeds install -a
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.
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
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.
- Base system -> dnsmasq
- Base system -> firewall
- Network -> odhcpd
- Network -> odhcpd-ipv6only
- Network -> ppp
- Kernel modules -> Network Support -> kmod-ppp
- 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)
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/.