LibreMesh
LibreMesh tiene un sistema de configuración basado en los siguienes principios:
El sistema de configuración es fundamental para entender el funcionamiento interno de LibreMesh, sin embargo no es necesario entenderlo antes de empezar una red LibreMesh!
Si tu comunidad quiere desplegar una red geek free es recomendable hacerlo usando la lime-app utilizando el FirstBootWizard. Esta aplicación simplifica la configuración inicial de los nodos y permite a nuevos nodos sumarse a una red existente, todo a travez de una interfaz amigable que no requiere conocimientos previos de redes.
En cambio si tu comunidad es una comunidad de geeks entonces quizas no quieran utilizar el FirstBootWizard.
Una vez iniciada la red utilizando el FBW les participantes de la red pueden realizar algunos cambios de configuración a travez de la lime-app. A medida que vayan surgiendo necesidades en la comunidad que no se cubran actualmente con la lime-app les participantes de la red podrán aprender a realizar estos cambios a travez de ssh u otras herramientas y siguiendo la documentación a continuación.
LibreMesh utiliza a UCI como sistema de configuración ya que UCI es tambien es utilizado por OpenWrt. UCI es una base de datos de que es facilmente modificable tanto desde línea de comandos como editando los archivos de configuración directamente.
Todos los archivos de configuración de UCI se encuentran en el directorio /etc/config/
. Los archivos de configuración de LibreMesh que pueden ser editados para son: /etc/config/lime-node
y /etc/config/lime-community
. El resto de los archivos de configuración no deben ser modificados directamente, ver ### No editar otros archivos de configuración que no sean de libremesh.
Para ayudar a la comunidad a mantener sus configuraciones, la configuración de los nodos de la red se estructura jerarquicamente en 3 niveles:
/etc/config/lime-node
/etc/config/lime-defaults
Donde la configuración realizada a nivel de Nodo toma prioridad por sobre Comunidad y esta a su vez tiene prioridad por sobre el Default.
De esta forma cuando la mayoria de los nodos comparten cierta caracteristica la misma puede (y conviene) configurarse a nivel comunidad y solo modificarla en el nivel de Nodo en los nodos donde esa configuración difiere.
El nivel Default contiene todos los valores de configuración en su valor por defecto.
Supongamos que queremos configurar la distancia máxima wireless de los nodos de 2.4GHz de la comunidad en 300 metros pero en dos de los nodos A y B configurarla en 1000m. Lo podríamos hacer de la siguiente forma:
En lime-community de todos los nodos tendriamos:
config lime 'wifi'
# other options
option distance_2ghz '300'
Y en los archivos lime-node de los nodos A y B:
config lime 'wifi'
option distance_2ghz '1000'
Al correr el comando lime-config lo primero que sucede es que se procesan los niveles Node, Comunidad y Default y se genera el archivo /etc/config/lime-autogen. Este archivo es el que contiene la configuración que realmente va a utilizarse por libremesh para configurar el sistema.
The executable lime-config
reads such file and writes all the resulting complex configuration in many other configuration files.
In order to apply modifications to the configuration file, it has to be executed running +lime-config+ in the node's root console and the router has to be rebooted with the reboot
command.
Si quieres realizar una configuración para la cual LibreMesh no tiene una opción entonces necesitas usar configuraciones genéricas y lime-assets.
Specifies generic configurations of type uci set to modify the configs of another package.
Example:
config generic_uci_config libremap
list uci_set "libremap.settings=libremap"
list uci_set "libremap.settings.community=our.libre.org"
list uci_set "libremap.settings.community_lat=-200.123"
list uci_set "libremap.settings.community_lon=500.9"
XXX Qué son, cómo se usan.
If you need a file to be present in the root filesystem you can use the copy_asset
directive.
copy_asset
copy a file from the assets directory into a specified path dst.
For example if you want to config collectd
for your community then you can place the collectd.conf
file at
/etc/lime-assets/community/collectd.conf
and use the following config at your lime-community
file:
config copy_asset collectd
option asset 'community/collectd.conf'
option dst '/etc/collectd.conf'
If you need that a script to be executed at first boot or each time lime-config runs use the run_asset
config option. Usar este método de configuración como último recurso si los otros métodos no son suficientes.
run_asset
executes a file from the assets directory. The execution may be at first boot, using ATFIRSTBOOT
, or when lime-config
is run using ATCONFIG
.
For example to run the script myscript.sh
from /etc/lime-assets/community/myscript.sh
at first boot
config run_asset dropbear
option asset 'community/myscript.sh'
option when 'ATFIRSTBOOT'
ATFIRSTBOOT runs the first time the firmware is booted, so it also runs when you do a firmware upgrade.
Este método de configuración reemplaza los scripts uci-defaults
.
La configuración de un nodo libremesh solo debe realizarse a travez de los archivos de configuración de libremesh
y nunca editando directamente los otros archivos de configuración. Esto es así ya que los cambios realizados en archivos de configuración por fuera del sistema de configuración de libremesh se pueden perder cuando:
A pesar de que podria ser cómodo modificar directamente /etc/config/lime-defaults o inclusive /etc/config/lime-autogen esto no debe hacerse ya que en el futuro cuando querramos entender la configuración que tenemos del nodo no vamos a poder distinguir si cambiamos una configuración o no.
No, las configuraciones por del nivel Default proveen una configuración que permite tener una experiencia de red mesh sin tener que cambiar nada.
Ver el archivo lime-autogen
Para eso existen las configuraciones genéricas y los lime-assets. Ver la sección de configuración XXX