Objetivo
Nesta etapa você irá partir do ambiente OpenWrt já validado para o TP-Link EAP225-Outdoor v3 e adicionar uma camada básica do LibreMesh.
O objetivo ainda não é produzir a firmware completa utilizada pelo projeto. Primeiro validamos uma base mínima e reproduzível:
OpenWrt 24.10.7 + LibreMesh base para o TP-Link EAP225-Outdoor v3.
OpenWrt puro
↓
OpenWrt + LibreMesh base ← esta página
↓
pacotes e serviços do projeto
↓
configurações e ajustes
↓
versão candidata a estávelAo final desta reprodução, a imagem LibreMesh base foi compilada com sucesso e os artefatos gerados tiveram seus hashes validados.
Pré-requisitos
Antes de começar, conclua a preparação do ambiente e a compilação da primeira imagem OpenWrt.
Ambiente desta reprodução:
- Debian 12;
- usuário
compila; - OpenWrt em
/home/compila/openwrt; - OpenWrt 24.10.7;
- TP-Link EAP225-Outdoor v3;
- target
ath79; - subtarget
generic.
cd ~/openwrt
whoami
git describe --tags --always
git rev-parse HEADResultado:
compila
v24.10.7
b40dfac0a31695596f7c1f5f1519302ca8237f6e1. Adicione os feeds do LibreMesh
cp feeds.conf.default feeds.conf
cat << 'EOF' >> feeds.conf
src-git libremesh https://github.com/libremesh/lime-packages.git;master
src-git profiles https://github.com/libremesh/network-profiles.git
EOFConfira:
grep -E 'libremesh|profiles' feeds.confResultado:
src-git libremesh https://github.com/libremesh/lime-packages.git;master
src-git profiles https://github.com/libremesh/network-profiles.gitComo master pode mudar, registre posteriormente o SHA efetivamente
utilizado.
2. Atualize e instale os feeds
Como compila:
scripts/feeds update -a
scripts/feeds install -aRegistre os commits:
git -C feeds/libremesh rev-parse HEAD
git -C feeds/profiles rev-parse HEADNesta reprodução:
LibreMesh:
0b6b5c53c6ec1805bd74aaf27237ad2c31a63a7c
network-profiles:
0965de26aaa4703ce300093cc94f07edb6ef12db3. Abra o menuconfig
make menuconfigMantenha:
Target System → Atheros ATH79
Subtarget → Generic
Target Profile → TP-Link EAP225-Outdoor v34. Selecione os pacotes LibreMesh da imagem base
Foram selecionados para esta etapa:
lime-docs-minimal
lime-hwd-ground-routing
lime-hwd-openwrt-wan
lime-proto-anygw
lime-proto-babeld
lime-proto-batadv
lime-app
shared-state
shared-state-babeld_hosts
shared-state-bat_hosts
shared-state-nodes_and_links
babeld-auto-gw-mode
check-date-httpApós a resolução das dependências, o .config efetivamente compilado
também continha:
lime-debug
lime-proto-wan
lime-report
lime-system
shared-state-async
shared-state-dnsmasq_hosts
shared-state-dnsmasq_leasesIsso é importante: nem todo pacote com =y foi necessariamente
selecionado manualmente.
Deixe para a etapa seguinte os componentes adicionais da firmware, como
LuCI e complementos, tradução pt-BR, Statistics, Pirania, tmate,
ubus-tmate, sshtunnel, OpenWISP, ZeroTier, WireGuard e configurações
específicas do projeto.
5. Ajuste DHCP
A configuração final ficou:
# CONFIG_PACKAGE_dnsmasq is not set
CONFIG_PACKAGE_dnsmasq-dhcpv6=y
# CONFIG_PACKAGE_dnsmasq-full is not set
CONFIG_PACKAGE_odhcpd-ipv6only=mDurante a reprodução, odhcpd-ipv6only não pôde ser simplesmente
desmarcado no menuconfig. A consulta ao símbolo mostrou que
DEFAULT_odhcpd-ipv6only era selecionado pelo profile
TARGET_ath79_generic_DEVICE_tplink_eap225-outdoor-v3.
Após salvar .config, foi aplicado:
cat << 'EOF' >> .config
CONFIG_PACKAGE_odhcpd-ipv6only=m
EOF
make defconfigAqui =m mantém o pacote disponível como pacote separado, em vez de
incorporá-lo à imagem como =y.
6. Não habilite os feeds como repositórios da imagem
Em:
Image configuration
→ Separate feed repositoriesmantenha libremesh e profiles desabilitados.
O .config apresentou:
# CONFIG_FEED_libremesh is not set
# CONFIG_FEED_profiles is not setIsso não remove os feeds do ambiente de compilação.
7. Configure o wpad para mesh
Este foi o principal problema encontrado durante a primeira tentativa.
O profile do EAP225-Outdoor v3 selecionava wpad-basic-mbedtls como
default. Inicialmente foi testado:
CONFIG_PACKAGE_wpad-basic-mbedtls=m
CONFIG_PACKAGE_wpad-mesh-mbedtls=yEssa configuração não funcionou.
A compilação chegou a package/install e falhou após aproximadamente 41
minutos:
Collected errors:
* check_conflicts_for: The following packages conflict with wpad-basic-mbedtls:
* check_conflicts_for: wpad-mesh-mbedtls *
* opkg_install_cmd: Cannot install package wpad-basic-mbedtls.Antes da correção, preserve a configuração da tentativa:
cp .config config-eap225-outdoor-v3-libremesh-base-falha-wpadA correção aplicada foi:
cat << 'EOF' >> .config
# CONFIG_PACKAGE_wpad-basic-mbedtls is not set
CONFIG_PACKAGE_wpad-mesh-mbedtls=y
EOF
make defconfigO estado final usado no build bem-sucedido foi:
# CONFIG_PACKAGE_wpad-basic-mbedtls is not set
CONFIG_PACKAGE_wpad-mesh-mbedtls=yA verificação completa mostrou que wpad-mesh-mbedtls era a única
variante wpad selecionada com =y.
8. Mantenha os defaults ath10k
Foram encontrados:
CONFIG_PACKAGE_ath10k-firmware-qca9888-ct=y
CONFIG_PACKAGE_kmod-ath10k-ct=yEles foram mantidos nesta etapa. Não foi feita troca para variantes não-CT. Esse comportamento ainda deverá ser avaliado em testes reais da firmware e da rede mesh.
9. Avisos encontrados durante a configuração
make defconfig apresentou warnings envolvendo referências como:
deferrable-reboot
bird1-ipv4
bird1-ipv6
python3-pysocks
python3-unidecode
python-setuptools/hostTambém foi observada dependência recursiva envolvendo o profile Freifunk
profile-freifunk-80211s-sae-bmx7-batadv e wpad-mesh-wolfssl.
Como esse profile não fazia parte da seleção intencional e a imagem final foi compilada, esses avisos não impediram este build específico. Eles permanecem registrados para investigação.
10. Preserve a configuração
Depois dos ajustes:
cp .config config-eap225-outdoor-v3-libremesh-baseIsso cria um checkpoint entre a base LibreMesh e a futura firmware customizada.
11. Compile
Foi usado:
time make V=s 2>&1 | tee build-eap225-outdoor-v3-libremesh-base.logA primeira execução falhou pelo conflito de wpad.
Depois da correção, a compilação foi repetida e reaproveitou artefatos já construídos:
real 6m22.642s
user 4m44.066s
sys 2m10.984sEsse tempo não representa uma compilação limpa desde o início.
12. Confira os binários
ls -lh bin/targets/ath79/generic/*eap225-outdoor-v3*.binForam gerados:
8.1M openwrt-ath79-generic-tplink_eap225-outdoor-v3-initramfs-kernel.bin
8.6M openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-factory.bin
8.6M openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-sysupgrade.binO diretório também contém config.buildinfo, feeds.buildinfo,
manifest, profiles.json, sha256sums e version.buildinfo.
Comparação com a imagem OpenWrt pura
| Imagem | OpenWrt puro | LibreMesh base |
|---|---|---|
| initramfs-kernel | 6,2 MB | 8,1 MB |
| factory | 6,5 MB | 8,6 MB |
| sysupgrade | 6,6 MB | 8,6 MB |
Essa tabela registra apenas os tamanhos obtidos nas duas compilações; não representa uma avaliação de desempenho ou consumo de memória no roteador.
13. Valide os hashes
cd ~/openwrt/bin/targets/ath79/generic
sha256sum -c sha256sumsResultado:
config.buildinfo: OK
feeds.buildinfo: OK
openwrt-ath79-generic-tplink_eap225-outdoor-v3-initramfs-kernel.bin: OK
openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-factory.bin: OK
openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-sysupgrade.bin: OK
openwrt-ath79-generic-tplink_eap225-outdoor-v3.manifest: OK
profiles.json: OK
version.buildinfo: OK14. Registre a procedência
OpenWrt:
v24.10.7
b40dfac0a31695596f7c1f5f1519302ca8237f6e
LibreMesh:
0b6b5c53c6ec1805bd74aaf27237ad2c31a63a7c
network-profiles:
0965de26aaa4703ce300093cc94f07edb6ef12db
Hardware:
TP-Link EAP225-Outdoor v3
Target:
ath79 / generic15. Registre o uso do ambiente
Ao final:
/home/compila/openwrt 13 GB
dl/ 877 MB
build_dir/ 11 GB
staging_dir/ 721 MBDisco:
40 GB total
16 GB usados
23 GB disponíveis
41% utilizadoMemória:
7,6 GiB total
6,8 GiB disponíveis no momento da medição
sem swapEsses números descrevem esta reprodução. Não estabelecem requisitos mínimos.
O teste inicialmente planejado com 2 GB de RAM não foi concluído; portanto, 2 GB não deve ser apresentado como requisito validado.
16. Resultado
A cadeia validada é:
Debian 12
↓
OpenWrt 24.10.7
↓
ath79 / generic
↓
TP-Link EAP225-Outdoor v3
↓
feeds LibreMesh
↓
pacotes LibreMesh base
↓
wpad-mesh-mbedtls
↓
BUILD CONCLUÍDO
↓
factory.bin
sysupgrade.bin
initramfs-kernel.bin
↓
SHA256 OKPortanto, a construção da primeira imagem LibreMesh base foi reproduzida com sucesso.
Isso valida a compilação, mas ainda não valida o comportamento da firmware instalada no equipamento.
Checklist
Validado
- OpenWrt 24.10.7;
- TP-Link EAP225-Outdoor v3;
- target
ath79/generic; - feeds LibreMesh e profiles;
- commits registrados;
- pacotes LibreMesh base;
-
dnsmasq-dhcpv6; -
odhcpd-ipv6only=m; - conflito de
wpadidentificado; -
wpad-basic-mbedtlsretirado; -
wpad-mesh-mbedtls=y; - defaults
ath10k-*-ctpreservados; - build concluído;
- três imagens geradas;
- checksums validados;
- procedência registrada;
- uso de disco registrado.
Ainda não validado
- instalação no EAP225-Outdoor v3;
- boot no equipamento;
- acesso após instalação;
- interfaces Ethernet;
- rádios 2,4 GHz e 5 GHz;
- mesh 802.11s;
- Babel;
- Batman-adv;
- comportamento dos defaults
ath10k-*-ct; - operação prolongada;
- requisitos mínimos de RAM do ambiente de compilação.
Próxima etapa
A próxima etapa não deve simplesmente repetir a lista histórica de pacotes.
As versões mais recentes disponibilizadas pelo compilador do Nupef mostram uma evolução importante da arquitetura:
- a interface local e o
lime-appentram antes da camada de gerência central; - o OpenWISP passa a fornecer gerenciamento e monitoramento centralizados;
- WireGuard passa a ser utilizado como rede de administração dessa implantação;
- o monitoramento do OpenWISP não depende, por princípio, da VPN: o agente do roteador pode enviar dados ao controller;
- a VPN utilizada na implantação precisa ter suporte correspondente na firmware;
- as estatísticas locais baseadas em collectd foram posteriormente removidas por redundância com o monitoramento central;
- ZeroTier aparece como capacidade adicional em uma variante específica, sem substituir o WireGuard;
- o suporte remoto via tmate é uma capacidade relacionada ao
lime-app, mas não está sendo utilizado operacionalmente no momento; - Pirania permanece uma capacidade independente de portal cativo, ativável em runtime.
Por isso, a próxima página compara o manifest da imagem LibreMesh base com o manifest publicado do perfil Nupef 0.6.1 antes de selecionar no menuconfig os pacotes que pertencem ao perfil reproduzido.
A trilha de versões informa ainda que a base OpenWrt foi atualizada para 24.10.8 a partir da v0.2.1. Portanto, uma reprodução exata da v0.6.1 exige confirmar também
version.buildinfo,feeds.buildinfoeconfig.buildinfoda versão publicada; a imagem construída nesta página continua sendo a base validada em OpenWrt 24.10.7.
Nota de nomenclatura
Este tutorial documenta OpenWrt + LibreMesh.
LiRoOS/LibreRouterOS é uma referência histórica relacionada ao LibreRouter e não identifica a firmware construída neste procedimento.