simetbox-openwrt-feed icon indicating copy to clipboard operation
simetbox-openwrt-feed copied to clipboard

Suporte a compilação usando SDK

Open allgood opened this issue 6 years ago • 5 comments

É interessante se tiver suporte para compilação usando SDK, de forma que a compilação se dá em menos tempo e gera pacotes compatíveis com os releases binários oficiais do openwrt.

Eu tentei fazer com o seguinte roteiro, mas tive problemas de dependência recursiva, e após ajustado manualmente com esse commit ( https://github.com/ctodobom/simetbox-openwrt-feed/commit/d97733568c985d7a9481bfd21dfcf23bcba37605 ), e após instalados os pacotes, não consegui rodar o teste.

obtain the sdk

add the feed

echo "src-git simetbox https://github.com/simetnicbr/simetbox-openwrt-feed.git" >> feeds.conf.default

install source packages

./scripts/feeds update -a ./scripts/feeds install -p simetbox -a

create signing key

./staging_dir/host/bin/usign -G -s ./key-build -p ./key-build.pub -c "SIMETBOX Build signing key"

build

make

Note: To speed up the build you can add -j5 if you have a quad-core CPU or -j9 if you have a octa-core CPU

build index

make package/index

publish

After the last command, folder ./bin/packages/<arch>/simetbox/ will have the built packages, it can be published on any URL like "https:///simetbox/packages//simetbox/"

use repository on an openwrt installation

1. get key fingerprint with

From SDK folder, use the command

./staging_dir/host/bin/usign -F -p ./key-build.pub

2. copy content of key-build.pub into device

obtain the content of key-build.pub with

cat key-build.pub

Paste it into the device with the fingerprint obtained on previous command, on folder /etc/opkg/keys/, example: /etc/opkg/keys/1301dcaaf2d17be3

3. install desired packages

On the device shell opkg install simetbox-openwrt-luci

allgood avatar Apr 06 '20 12:04 allgood

O suporte a buildbot (e provavelmente junto com ele, ao modo SDK) está no nosso mapa, mas estamos terminando algumas altreações de altíssima prioridade antes.

Entretanto, atentar para as dificuldades em ter um busybox "custom", o SDK não te salva deste requerimento. Nem sempre é possível resolver com defines no Makefile...

hmh avatar Apr 06 '20 12:04 hmh

Qual é a necessidade no busybox? alguma opção que não está no build default?

allgood avatar Apr 06 '20 13:04 allgood

Várias, a mais "gritante" é traceroute por ICMP, tem uma gigantesca operadora que quebrou o traceroute em UDP. Existem outras. Em geral estão todas documentadas ou como depends (o build falha se não estiverem ligadas).

hmh avatar Apr 06 '20 13:04 hmh

Em outro projeto eu fiz uma versão modificada do dnsmasq, com código, patches e opções diferentes do "oficial" mas que substitui ele. Não seria uma boa ideia fazer um pacote busybox-simet que conflita com e subsitui o "principal" e é dependência dos scripts do simet?

Imagino que no caso do busybox pode ser complicado porque é ele mesmo que roda os scripts de atualização dos pacotes, de repente durante a troca o sistema pode acabar quebrado a ponto de não conseguir se recuperar, mas de repente a ideia serve.

allgood avatar Apr 06 '20 14:04 allgood

Estamos utilizando o SDK para gerar imagens agora, então em tese poderíamos disponibilizar a "nossa versão do SDK" que utiliza o nosso "fork" do openwrt (em geral, com backports extras) e configuração do BusyBox (habilita mais coisa).

Para utilizar os pacotes e SDKs do próprio OpenWrt, teríamos duas dificuldades a princípio:

  • Direcionar para as nossas versões de pacotes com backports relevantes
  • Configuração do BusyBox.

Um pacote renomeado com config diferente em tese funciona, embora seja um peso permanente de manutenção. Só que o BusyBox é meio "especial" de tão fundamental, e de qualquer forma, apenas o OpenWrt 19.07 está em situação de funcionar de forma razoavelmente estável sem precisar ficar fazendo backport ou alterações.

Parece que duas soluções agregariam valor suficiente para justificar o esforço:

  • Feed com pacotes simetbox compatível com OpenWrt 19.07 que funcionasse com o OpenWrt oficial (mesmo que isso cause restrições de funcionalidade)
  • SDK do SIMETBox (que é só o SDK do openwrt compilado a partir do nosso fork + nossas feeds).

Está em estudo, junto com alguma Web-GUI ou TUI para operar o SDK.

hmh avatar Oct 14 '20 20:10 hmh