Estado de validação: esta etapa foi reproduzida em Debian GNU/Linux 12 (Bookworm). A VM começou com 16 vCPUs, 2 GB de RAM e 40 GB de disco; antes da compilação completa a memória foi ampliada para 8 GB. Portanto, 2 GB de RAM não foram validados como suficientes para o build completo. O disco permaneceu com 40 GB.
Objetivo
Ao final desta etapa você terá uma máquina Debian preparada para iniciar a compilação do OpenWrt.
A separação de privilégios usada nesta documentação é:
rootou outro usuário administrativo: atualização do sistema, instalação de dependências e criação do usuário;compila: download do código, configuração e compilação do OpenWrt.
A compilação será executada pelo usuário não privilegiado compila, dentro de /home/compila.
Importante: não é necessário adicionar
compilaao gruposudo. Se alguma etapa posterior exigir privilégio administrativo, isso deve ser indicado explicitamente.
Ambiente reproduzido
| Item | Ambiente validado nesta reprodução |
|---|---|
| Sistema operacional | Debian GNU/Linux 12 (Bookworm) |
| Arquitetura do host | x86_64 |
| vCPU | 16 |
| RAM no build completo | 8 GB |
| Disco | 40 GB |
| Swap | nenhuma |
| Usuário de compilação | compila |
| Diretório de trabalho | /home/compila |
A preparação chegou a ser iniciada com 2 GB de RAM, mas a VM foi ampliada para 8 GB antes da compilação completa. Por isso, não use esta experiência para afirmar que 2 GB são suficientes ou insuficientes.
Identifique o Debian
Para descobrir a versão do sistema:
cat /etc/os-releaseNa reprodução:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookwormDebian é a distribuição GNU/Linux utilizada como sistema operacional do ambiente de compilação. Esta documentação registra Debian 12 porque foi a versão efetivamente testada, e não porque outras versões já tenham sido homologadas.
Por que CPU, memória e disco importam?
A compilação de uma firmware não usa apenas o espaço ocupado pelo arquivo final.
Durante o build, o OpenWrt mantém código-fonte, feeds, downloads, toolchain, bibliotecas, objetos intermediários, pacotes e imagens finais.
Na compilação da imagem OpenWrt pura para o EAP225-Outdoor v3 foram medidos:
/home/compila/openwrt 12 GB
/home/compila/openwrt/dl 837 MB
/home/compila/openwrt/build_dir 9,4 GB
/home/compila/openwrt/staging_dir 674 MBDepois, ao compilar a primeira imagem OpenWrt + LibreMesh base, foram observados:
/home/compila/openwrt 13 GB
/home/compila/openwrt/dl 877 MB
/home/compila/openwrt/build_dir 11 GB
/home/compila/openwrt/staging_dir 721 MBApós acrescentar o perfil Nupef e concluir o build personalizado, a medição foi:
/home/compila/openwrt 13 GB
/home/compila/openwrt/dl 885 MB
/home/compila/openwrt/build_dir 11 GB
/home/compila/openwrt/staging_dir 741 MB
/home/compila/openwrt/bin 40 MBNo sistema de arquivos de 40 GB, ao final da compilação personalizada:
16 GB usados
23 GB disponíveis
41% de utilizaçãoEsses valores são medições desta reprodução, não requisitos mínimos universais.
Antes de iniciar, registre os recursos:
nproc
free -h
df -h /Atualize o Debian
Como root:
apt update
apt upgradeOu com um usuário administrativo que possua sudo:
sudo apt update
sudo apt upgradeInstale as dependências
Como root:
apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
rsync swig unzip zlib1g-dev file wget bzip2 byobu python3-distutilsOu com sudo:
sudo apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
rsync swig unzip zlib1g-dev file wget bzip2 byobu python3-distutilsDependência descoberta durante a validação
python3-distutils não aparecia na lista inicial. Na primeira execução de make menuconfig, o OpenWrt interrompeu a verificação com:
Checking 'python3-distutils'... failed.
Build dependency: Please install the Python3 distutils module
Prerequisite check failed.Depois de:
apt install python3-distutilsa verificação passou a retornar:
Checking 'python3-distutils'... ok.Pode-se conferir o módulo com:
python3 -c "import distutils; print(distutils.__file__)"No Debian 12 testado, Python 3.11 exibiu:
DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12Esse aviso não impediu o build. O módulo foi carregado e aceito pela verificação do OpenWrt 24.10.7.
Não use
FORCE=1para ignorar a verificação de pré-requisitos neste tutorial. O objetivo é identificar e corrigir as dependências do ambiente.
Crie o usuário de compilação
Como root:
adduser compilaOu:
sudo adduser compilaNo Debian 12 testado, adduser criou automaticamente:
/home/compilaNão foi necessário executar mkdir /home/compila.
Confira:
getent passwd compila
ls -ld /home/compilaNa reprodução:
drwx------ ... compila compila ... /home/compila/Entre como compila
Se estiver como root:
su - compilaConfirme:
whoami
pwdEsperado:
compila
/home/compilaOpcional: mantenha a sessão com Byobu
Byobu é opcional. Ele não é necessário para gerar a firmware.
Ele é útil quando a máquina é acessada remotamente, porque mantém sessões de terminal persistentes. Assim, uma desconexão SSH não precisa encerrar uma compilação longa.
Entre primeiro como compila:
byobuDentro do Byobu:
whoami
pwdEsperado:
compila
/home/compilaAtalhos básicos
| Atalho | Função |
|---|---|
F2 |
criar uma nova janela |
F3 |
ir para a janela anterior |
F4 |
ir para a próxima janela |
F6 |
desconectar da sessão sem encerrá-la |
F8 |
renomear a janela atual |
Ctrl+D ou exit |
encerrar o shell/janela atual |
Depois de F6, conecte-se novamente, entre como compila e execute byobu.
Verifique o ambiente
Usuário
whoamiResultado:
compilaDiretório
pwdResultado:
/home/compilaProprietário
ls -ld /home/compila/Resultado:
drwx------ ... compila compila ... /home/compila/Escrita sem privilégio administrativo
touch /home/compila/teste-escrita
ls -l /home/compila/teste-escrita
rm /home/compila/teste-escritaResultado:
-rw-r--r-- ... compila compila ... /home/compila/teste-escritaFerramentas essenciais
git --version
gcc --version
make --version
wget --version | head -n 1Na reprodução:
git version 2.39.5
gcc (Debian 12.2.0-14+deb12u1) 12.2.0
GNU Make 4.3
GNU Wget 1.21.3 built on linux-gnu.Checklist
- Debian e versão identificados;
- dependências instaladas;
-
python3-distutilsreconhecido; -
whoamiretornacompila; -
pwdretorna/home/compila; -
/home/compilapertence acompila:compila; - escrita no diretório funciona sem
sudo; -
git,gcc,makeewgetestão disponíveis; - se Byobu estiver sendo usado, foi iniciado como
compila.
Resultado esperado
O próximo tutorial começa com:
usuário: compila
diretório: /home/compilaO que acontecerá a seguir
Você irá obter OpenWrt 24.10.7, instalar os feeds padrão, abrir make menuconfig, selecionar o EAP225-Outdoor v3, salvar .config, baixar as fontes, compilar e validar os binários.
Pontos ainda em validação
- requisitos mínimos de RAM;
- requisitos mínimos de disco;
- efeito do paralelismo sobre tempo e memória;
- outras versões de Debian;
- dependências adicionais para outros targets.
Referências externas
- Debian 12 (Bookworm): https://www.debian.org/releases/bookworm/
- Documentação Debian: https://www.debian.org/doc/
- OpenWrt — preparação do build system: https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
- OpenWrt — uso do build system: https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem