Estado de validação: este tutorial foi reproduzido com sucesso para OpenWrt 24.10.7 e TP-Link EAP225-Outdoor v3, em uma VM Debian 12 com 16 vCPUs, 8 GB de RAM, 40 GB de disco e sem swap. A primeira compilação, executada sem paralelismo explícito, levou aproximadamente 4 h 08 min.
Objetivo
Nesta etapa você irá gerar uma imagem OpenWrt pura, sem os feeds e pacotes do LibreMesh.
O objetivo é separar dois problemas:
- validar que o ambiente consegue compilar OpenWrt para o hardware escolhido;
- só depois acrescentar LibreMesh e as configurações do projeto.
Ao final, devem existir binários específicos para o TP-Link EAP225-Outdoor v3 em:
bin/targets/ath79/generic/Ponto de partida
Você deve estar como:
compilano diretório:
/home/compilaConfira:
whoami
pwd1. Obtenha o OpenWrt 24.10.7
Clone a versão utilizada nesta reprodução:
git clone -b v24.10.7 --single-branch https://github.com/openwrt/openwrtEntre no repositório:
cd ~/openwrtConfira a versão e o commit:
git describe --tags --always
git rev-parse HEADNa reprodução:
v24.10.7
b40dfac0a31695596f7c1f5f1519302ca8237f6e2. Entenda os feeds padrão do OpenWrt
OpenWrt usa feeds para disponibilizar receitas de compilação de pacotes ao buildroot. Eles são diferentes dos feeds do LibreMesh, que só serão adicionados no próximo tutorial.
Veja:
cat feeds.conf.defaultNa reprodução:
src-git packages https://git.openwrt.org/feed/packages.git^0c8f5f2ed91600b04ba639ef9c4c5ced3286cb3b
src-git luci https://git.openwrt.org/project/luci.git^3cf713a30bf456af74f9393096c2f7eb770b3ae2
src-git routing https://git.openwrt.org/feed/routing.git^cd05be684e670095d20663d1c41766cf8b54de61
src-git telephony https://git.openwrt.org/feed/telephony.git^92892fa285360b8981f62bf4e0a097e6449e7e33Antes de atualizar os feeds, nesta reprodução:
ls -la feedsmostrou apenas:
base -> /home/compila/openwrt/package3. Atualize e instale os feeds padrão
Como compila:
./scripts/feeds update -a
./scripts/feeds install -aNão use sudo.
Avisos observados
Foram observados avisos como:
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-pysocks', which does not exist
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-unidecode', which does not exist
WARNING: Makefile 'package/feeds/packages/python-pika/Makefile' has a build dependency on 'python-setuptools/host', which does not existEsses avisos não impediram a compilação do EAP225-Outdoor v3 nesta reprodução.
Não instale pacotes aleatoriamente no Debian apenas para eliminar esses warnings. Se um aviso vier acompanhado da interrupção do build, registre-o como erro e investigue a dependência correspondente.
4. Abra o menuconfig
Execute:
make menuconfigmenuconfig é a interface textual que define o que o OpenWrt vai construir.
Os três níveis principais são:
Target System
└── Subtarget
└── Target ProfilePara este equipamento:
Atheros ATH79
└── Generic
└── TP-Link EAP225-Outdoor v3Internamente:
ath79
└── generic
└── tplink_eap225-outdoor-v3Como navegar
Em geral:
- setas ↑/↓: navegar;
Enter: abrir submenu;Space: alterar opção;/: pesquisar;Save: salvar;Exit: voltar/sair.
Marcadores:
[ ] não selecionada
[*] selecionada
<M> selecionada como módulo, quando aplicávelTerminal pequeno
A interface exige pelo menos:
19 linhas × 80 colunasSe aparecer:
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.aumente a janela.
Confira com:
stty size5. Selecione o EAP225-Outdoor v3
Escolha:
Target System
→ Atheros ATH79
Subtarget
→ Generic
Target Profile
→ TP-Link EAP225-Outdoor v3Não adicione LibreMesh nem outros pacotes do projeto nesta etapa.
6. Salve .config
Use Save e mantenha:
.configSaia do menu e confira:
grep '^CONFIG_TARGET' .configNa reprodução:
CONFIG_TARGET_ath79=y
CONFIG_TARGET_ath79_generic=y
CONFIG_TARGET_ath79_generic_DEVICE_tplink_eap225-outdoor-v3=y
CONFIG_TARGET_BOARD="ath79"
CONFIG_TARGET_SUBTARGET="generic"
CONFIG_TARGET_PROFILE="DEVICE_tplink_eap225-outdoor-v3"
CONFIG_TARGET_ARCH_PACKAGES="mips_24kc"Também foram registrados:
CONFIG_TARGET_ROOTFS_INITRAMFS=y
CONFIG_TARGET_ROOTFS_SQUASHFS=y7. Baixe as fontes necessárias
Execute:
make downloadDepois registre:
du -sh ~/openwrt/dl
du -sh ~/openwrt
df -h /
free -hAntes da compilação:
~/openwrt/dl 828 MB
~/openwrt 1,5 GB
disco 4,3 GB usados / 34 GB disponíveis
RAM 7,6 GiB total / 7,0 GiB disponíveis
swap 0 B8. Compile
Nesta primeira reprodução foi usado:
time make V=s 2>&1 | tee build-eap225-outdoor-v3.logSignificado:
make: executa o build;V=s: usa saída detalhada;tee: exibe e salva o log;time: mede a duração.
Não foi informado -j nesta primeira execução.
Tempo observado
real 248m29.311s
user 232m41.040s
sys 39m28.557sTempo real aproximado:
4 h 08 min 29 sO arquivo
build-eap225-outdoor-v3.logé evidência da validação. Não precisa ser publicado no hotsite; revise-o antes de qualquer compartilhamento.
9. Localize os artefatos
Execute:
ls bin/targets/ath79/generic/Resultado:
config.buildinfo
feeds.buildinfo
openwrt-ath79-generic-tplink_eap225-outdoor-v3-initramfs-kernel.bin
openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-factory.bin
openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-sysupgrade.bin
openwrt-ath79-generic-tplink_eap225-outdoor-v3.manifest
packages/
profiles.json
sha256sums
version.buildinfoTamanhos:
ls -lh bin/targets/ath79/generic/*eap225-outdoor-v3*.bin6,2 MB openwrt-ath79-generic-tplink_eap225-outdoor-v3-initramfs-kernel.bin
6,5 MB openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-factory.bin
6,6 MB openwrt-ath79-generic-tplink_eap225-outdoor-v3-squashfs-sysupgrade.bin10. Entenda os tipos de imagem
squashfs-factory.bin
É a imagem usada no caminho de instalação inicial quando o procedimento daquele hardware prevê uma imagem factory.
No EAP225-Outdoor v3, a instalação física será tratada em guia próprio. Não grave a imagem apenas com base nesta descrição.
squashfs-sysupgrade.bin
É a imagem destinada à atualização de um equipamento que já executa OpenWrt, seguindo o procedimento de sysupgrade adequado ao dispositivo.
initramfs-kernel.bin
É uma imagem com rootfs em RAM, utilizada principalmente em desenvolvimento, boot temporário e alguns cenários de teste ou recuperação. Não é a imagem normal de operação persistente.
11. 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: OK12. Registre versão e feeds
cd ~/openwrt
git describe --tags --always
git rev-parse HEADv24.10.7
b40dfac0a31695596f7c1f5f1519302ca8237f6eO build gerou também:
cat bin/targets/ath79/generic/version.buildinfor29197-ab4c7d6af7E:
cat bin/targets/ath79/generic/feeds.buildinfosrc-git packages https://git.openwrt.org/feed/packages.git^0c8f5f2ed91600b04ba639ef9c4c5ced3286cb3b
src-git luci https://git.openwrt.org/project/luci.git^3cf713a30bf456af74f9393096c2f7eb770b3ae2
src-git routing https://git.openwrt.org/feed/routing.git^cd05be684e670095d20663d1c41766cf8b54de61
src-git telephony https://git.openwrt.org/feed/telephony.git^92892fa285360b8981f62bf4e0a097e6449e7e3313. Meça o consumo após o build
du -sh ~/openwrt
du -sh ~/openwrt/dl
du -sh ~/openwrt/build_dir
du -sh ~/openwrt/staging_dir
df -h /
free -hResultado:
~/openwrt 12 GB
~/openwrt/dl 837 MB
~/openwrt/build_dir 9,4 GB
~/openwrt/staging_dir 674 MBDisco:
40 GB total
15 GB usados
24 GB disponíveis
39% de utilizaçãoMemória após o build:
7,6 GiB total
6,9 GiB disponíveis
0 B de swapEssa medição de memória foi feita após o término e não representa o pico durante a compilação.
14. Preserve o checkpoint OpenWrt puro
Antes de adicionar LibreMesh ou outros pacotes, preserve a configuração desta etapa:
cd ~/openwrt
cp .config config-eap225-outdoor-v3-openwrt-puroSe quiser preservar também o manifest gerado:
cp bin/targets/ath79/generic/openwrt-ath79-generic-tplink_eap225-outdoor-v3.manifest manifest-eap225-outdoor-v3-openwrt-puro.txtEsses arquivos facilitam a comparação com as etapas seguintes e ajudam a separar alterações introduzidas pelo LibreMesh das alterações introduzidas posteriormente pelo perfil operacional do projeto.
Checklist de validação
-
git describeretornav24.10.7; - feeds padrão atualizados e instalados;
-
make menuconfigabre; -
Target Systeméath79; -
Subtargetégeneric; -
Target Profileé EAP225-Outdoor v3; -
.configregistraDEVICE_tplink_eap225-outdoor-v3; -
make downloadtermina; -
maketermina sem erro fatal; - existe
bin/targets/ath79/generic/; - imagens
factory,sysupgradeeinitramfs-kernelsão geradas; -
sha256sum -c sha256sumsretornaOK; - versão, feeds e uso de recursos foram registrados.
Resultado
A base OpenWrt foi compilada com sucesso para:
TP-Link EAP225-Outdoor v3
ath79 / generic
OpenWrt v24.10.7Neste ponto a imagem ainda não contém LibreMesh.
O que não foi validado nesta etapa
- EAP235-Wall v1;
- build completo com apenas 2 GB de RAM;
- compilação paralela com
-j; - instalação física da imagem;
- recuperação do equipamento;
- LibreMesh;
- pacotes e configurações específicas do projeto.
Referências externas
- OpenWrt — Build System Usage: https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem
- OpenWrt — Feeds: https://openwrt.org/docs/guide-developer/feeds
- OpenWrt — Image formats: https://openwrt.org/docs/techref/image.format