26

Odp: Parę pytań dotyczących kompilacji OpenWRT

Widziałem, że wrzuciłeś paczkę na git'a i nasunęło mi się pytanie. Jak mam kilka różnych środowisk kompilacji utworzonych via ./scripts/env new to czy po aktualizowaniu feeds'ów trzeba się przełaczyć do każdego z tych środowisk i zaktualizować plik .config, czy istnieje może jakiś prostszy sposób by ten dodatkowy pakiet (lub inne zmiany) dodać dla wszystkich konfiguracji naraz?

27

Odp: Parę pytań dotyczących kompilacji OpenWRT

Musisz przełączyć się na każde środowisko które zrobiłeś, dodać, zaktualizować, zapisać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

28

Odp: Parę pytań dotyczących kompilacji OpenWRT

Zostały mi w sumie chyba ostatnie pytania już. big_smile

Chodzi o tę edycję plików w obrazie za sprawą katalogu files/ :

A następnie umieszczamy w nim pliki lub katalogi które mają znaleźć się w docelowym obrazie. Cała struktura katalogów zostanie przeniesiona w identyczny sposób, więc np. jeżeli chcemy podmienić plik /etc/banner w obrazie wynikowym na swój, to w katalogu files robimy podkatalog etc a w nim umieszczamy plik banner z własną zawartością:

Czy tak utworzony plik zostanie dołączony do tego w obrazie czy podmieniony? big_smile

To co ja chciałbym zrobić, to skonfigurować sobie parametry połączenia LTE i WiFi, które w zasadzie pozostają takie same. I pytanie jest jak się do tego zabrać? Skopiować gotowe pliki z /etc/config/ po skonfigurowaniu routera czy jakoś inaczej?

Da radę jakoś wypakować ten obraz, tak by podejrzeć jego zawartość i upewnić się, że wszystkie pliki są na swoim miejscu?

29

Odp: Parę pytań dotyczących kompilacji OpenWRT

Co do tego wypakowania obrazu to chyba tym. big_smile
https://github.com/ReFirmLabs/binwalk

30

Odp: Parę pytań dotyczących kompilacji OpenWRT

Dołączony i podmieniony jeżeli o takiej nazwie w danym katalogu już był. To akurat mogłeś sprawdzić smile

Nie, zrób skrypt w etc/uci-default który ustawi wszystko w systemie tak jak chcesz. Pliki oczywiście mógłbyś umieścić, ale jak coś się zmieni w źródłach a ty zapomnisz dostosować swoje pliki to będziesz znów szukał gdzie jest problem.

Albo po prostu rozpakuj (w zależności od routera albo unsquashfs albo extract plików z ubifs), albo spójrz do build_dir, tam jest katalog rootfs* którzy zawiera system plików przez spakowaniem do obrazu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

31

Odp: Parę pytań dotyczących kompilacji OpenWRT

Cezary napisał/a:

Dołączony i podmieniony jeżeli o takiej nazwie w danym katalogu już był. To akurat mogłeś sprawdzić smile

No mogłem, ale już mi się nie chciało ponownie budować obrazu i podłączać tego testowego routera. big_smile

32

Odp: Parę pytań dotyczących kompilacji OpenWRT

Cezary napisał/a:

Albo po prostu rozpakuj (w zależności od routera albo unsquashfs albo extract plików z ubifs), albo spójrz do build_dir, tam jest katalog rootfs* którzy zawiera system plików przez spakowaniem do obrazu.

Nie do końca to rozumiem. big_smile

$ unsquashfs openwrt-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin
Can't find a SQUASHFS superblock on openwrt-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin

Czyli unsquashfs odpada?

Co do tego extract, to w debianie jest w zasadzie tylko taki extract:

# aptitude show extract
Package: extract
Version: 1:1.9-3+b1
State: not installed
Priority: optional
Section: utils
Maintainer: Bertrand Marc <bmarc@debian.org>
Architecture: amd64
Uncompressed Size: 453 k
Depends: libc6 (>= 2.4), libextractor3 (>= 0.6.3)
Description: displays meta-data from files of arbitrary type
 Similar to the well-known "file" command, extract can display meta-data from a file and print the results to stdout.

 Currently, libextractor supports the following formats: HTML, MAN, PS, DVI, OLE2 (DOC, XLS, PPT), OpenOffice (sxw), StarOffice (sdw), FLAC, MP3 (ID3v1 and
 ID3v2), OGG, WAV, S3M (Scream Tracker 3), XM (eXtended Module), IT (Impulse Tracker), NSF(E) (NES music), SID (C64 music), EXIV2, JPEG, GIF, PNG, TIFF, DEB,
 RPM, TAR(.GZ), LZH, LHA, RAR, ZIP, CAB, 7-ZIP, AR, MTREE, PAX, CPIO, ISO9660, SHAR, RAW, XAR FLV, REAL, RIFF (AVI), MPEG, QT and ASF.

 Also, various additional MIME types are detected. It can also be used to compute hash functions (SHA-1, MD5, ripemd160).
Homepage: http://www.gnu.org/software/libextractor/
Tags: interface::commandline, role::program, scope::utility, use::scanning, works-with::file

Jeśli to jest to, to:

$ extract openwrt-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin
'openwrt-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin' cannot be extracted via >extract<

No i chodzi jeszcze o ten katalog rootfs w build_dir/ -- u mnie w build_dir/ chyba tego nie ma. Jedyne co to jest coś takiego:

$ find . -name "*rootfs*" -type d
./build_dir/target-mips_24kc_musl/collectd-5.10.0/contrib/docker/rootfs_prefix
./build_dir/target-mips_24kc_musl/linux-ath79_generic/linux-4.14.171/include/config/mtd/rootfs
./build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-4.14.171/include/config/mtd/rootfs
./build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/collectd-5.10.0/contrib/docker/rootfs_prefix

33

Odp: Parę pytań dotyczących kompilacji OpenWRT

Nie nie, to jest gotowy obraz. Albo wydobądź z niego część odpowiadającą za rootfs (np. tym co wspomniałeś już) albo weź plik który jest rootfs a który jest tam gdzie w build_dir.

W build_dir/target*/root* jest. Nie rootfs.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

34

Odp: Parę pytań dotyczących kompilacji OpenWRT

No to jeszcze takie pytanie, bo tam są dwa root. Czym się różni root.orig-ath79 od root-ath79 ? big_smile

35

Odp: Parę pytań dotyczących kompilacji OpenWRT

Możesz budować albo wszystkie urządzenia albo wybrać sobie kilka. Wtedy jeden z tych root ma samą podstawę openwrt, a później dla każdego urządzenia dokładane są pakiety przez niego wymagane (jak wiesz każde urządzenie może mieć inny zestaw pakietów w zależności czym ono jest) i robi się ten drugi root (już sprawdź sobie który jest który bo nie pamiętam).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

36

Odp: Parę pytań dotyczących kompilacji OpenWRT

Cezary napisał/a:

już sprawdź sobie który jest który bo nie pamiętam

Ten root-ath79 ma dodane pliki z katalogu files/ big_smile

37

Odp: Parę pytań dotyczących kompilacji OpenWRT

Chyba wyłapałem lekką nieścisłość w tym twoim arcie o kompilacji. big_smile

Piszesz coś takiego:

$ cd ~
    $ git clone https://github.com/openwrt/openwrt.git
    $ cd openwrt
    $ git fetch --tags
    $ git checkout v19.07.2

A później coś takiego:

Aktualizacja
...

    $ git pull
    $ make package/symlinks
    $ make defconfig

To tak nie zadziała. Jak się wyda po pobraniu źródeł git checkout v19.07.2, to się dostanie HEAD detached at v19.07.2.

Z tego co wyczytałem to nie jest zbyt miły stan, bo można stracić bardzo łatwo wszystkie zmiany, które się w tych źródłach wprowadzi (nie że bym coś zmieniał ale lepiej tego unikać).

Do tego problem jest z aktualizacją. Dla przykładu, tuż po wydaniu polecenia git checkout v19.07.2, mam taki log:

$ git log

commit 33732f4a9c17921b782167a0dcaba9703d4e6753 (HEAD, tag: v19.07.2)
Author: Jo-Philipp Wich <jo@mein.io>
Date:   Thu Feb 27 22:34:09 2020 +0100

    OpenWrt v19.07.2: adjust config defaults

    Signed-off-by: Jo-Philipp Wich <jo@mein.io>

To jest najnowszy commit. Jak widzisz, data jego wskazuje na Feb 27.  Jak się teraz wyda polecenie zaktualizowania remotki:

$ git remote update && git status
Fetching origin
HEAD detached at v19.07.2
nothing to commit, working tree clean

To nie ma żadnego nowego commit'a. Z kolei jak wejdziesz na git'a OpenWRT, to zobaczysz coś takiego:

29 hours ago     Adrian Schmutzler    Revert "ramips: disable ZyXel Keenetic by default" openwrt-19.07     commit | commitdiff | tree | snapshot
29 hours ago     Alexey Dobrovolsky    ramips: use full 8MB flash on ZyXEL Keenetic     commit | commitdiff | tree | snapshot
6 days ago     Dan Haab    bcm53xx: add support for Luxul FullMAC WiFi devices     commit | commitdiff | tree | snapshot
6 days ago     Rafał Miłecki    bcm53xx: refactor board.d code in 02_network     commit | commitdiff | tree | snapshot
6 days ago     Rafał Miłecki    bcm53xx: sysupgrade: optimize building UBI image     commit | commitdiff | tree | snapshot
...

To są commit'y z gałęzi openwrt-19.07 . Jeśli teraz zamiast git checkout v19.07.2 wydasz, git checkout openwrt-19.07 ,to:

$  git checkout openwrt-19.07
Updating files: 100% (7970/7970), done.
Branch 'openwrt-19.07' set up to track remote branch 'openwrt-19.07' from 'origin'.
Switched to a new branch 'openwrt-19.07'

oraz

$ git remote update && git status
Fetching origin
On branch openwrt-19.07
Your branch is up to date with 'origin/openwrt-19.07'.

nothing to commit, working tree clean

i jeszcze log:

 $ git log
commit 01b624e28ec7e45573e6c501125510c19f64c257 (HEAD -> openwrt-19.07, origin/openwrt-19.07)
Author: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date:   Wed Apr 8 22:08:46 2020 +0200

    Revert "ramips: disable ZyXel Keenetic by default"

    This reverts commit c38074de929e6f7c089e2cb7f81746ba90ddf16b.

    Since ZyXEL Keenetic has actually 8 MiB flash as fixed in the
    previous patch, we can re-enable it.

    Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

I jak widzisz, commit w tej gałęzi jest z Apr 8 i gdyby teraz wyszły jakieś nowe commit'y to git remote update by je dostrzegł i można by je było pobrać via git pull.

Także chyba trochę musisz ten artykuł przerobić. big_smile

38

Odp: Parę pytań dotyczących kompilacji OpenWRT

Widzisz, bo pierwotnie artykuł był o kompilacji openwrt-19.07 a nie określonego release. W sumie to mogę wywalić rozdział o aktualizacji, bo przecież określony release jest niezmienny, więc nie ma tam co aktualizować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

39 (edytowany przez morfik 2020-04-13 18:31:12)

Odp: Parę pytań dotyczących kompilacji OpenWRT

No możesz wywalić, choć pewnie ludzie tak jak ja poszukują bardziej aktualnego stable niż jedynie określonego release. big_smile

40 (edytowany przez Cezary 2020-04-13 18:43:58)

Odp: Parę pytań dotyczących kompilacji OpenWRT

Właśnie nie. Dlatego zostało zmienione na określone bo o to się ludzie dopytywali.

EDIT: wyprostowałem to chyba trochę. Jeszcze moment i zacznie się zaraz opisywanie gita i czym jest tags/branch.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

41

Odp: Parę pytań dotyczących kompilacji OpenWRT

Wydanie stabilne w określonej wersji (tag) nie zmienia się. Jeżeli zaś wybraliśmy całą gałąź wersji stabilnej to są tam wprowadzane poprawki dopóki jest ona utrzymywana (to z niej właśnie kiedyś może powstać następna wersja stabilna oznaczona określonym numerem). Aktualizację tej gałęzi można wykonać poleceniami (będąc w katalogu ze źródłami):

To po co jest w takim razie master? big_smile

42

Odp: Parę pytań dotyczących kompilacji OpenWRT

Gałąź w której bawią się deweloperzy. Z niego masz snapshot, w nim są wszystkie błędy i to własnie to czego nie powinieneś używać na co dzień jeżeli nie bawisz się w rozwój openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

43

Odp: Parę pytań dotyczących kompilacji OpenWRT

Czyli ten openwrt-19.07 to nie jest stable? Bo ja myślałem, że w master robią zmiany i w pewnym momencie robią dajmy na to openwrt-19.07 i mamy wydanie stabilne. A później to wydanie stabilne jest utrzymywane przez jakiś czas i poprawki do niego trafiają, a jednocześnie w master rozwój idzie osobno by za jakiś czas przygotować nowe wydanie stabilne. To tak nie jest w przypadku OpenWRT?

44

Odp: Parę pytań dotyczących kompilacji OpenWRT

Master to bieżące prace. Raz od święta jak stwierdzą że master jest dość stabilny to robią z niego odłam w postaci branchu który nazywają openwrt-18.06, openwrt19.07 itd, który __jest__ gałęzią stabilną - tam teoretycznie nic nie jest już zmieniane ew wprowadzane są jakieś krytyczne poprawki. A z kolei z tego branchu w którym momencie oznaczają jakiś commit jako release np. 19.07.2.
No tak to działa. OpenWrt nie ma jakiś systematycznych wydań, są jak komuś się przypomni, czasami do gałęzi stabilnej są dodawane także nowe rzeczy mimo że nie powinny.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

45

Odp: Parę pytań dotyczących kompilacji OpenWRT

No to mniej więcej dobre miałem zrozumienie tego jak to działa. big_smile

W sumie temat już wyczerpałem, bo udało mi się ten obraz dostosować do swoich potrzeb. Jak coś to tutaj skrobnąłem kawałek artykułu, może się komuś przyda.

46

Odp: Parę pytań dotyczących kompilacji OpenWRT

@morfik
Bardzo fajny opis. Szacun.

Co ja bym zmienił lub dodał:

1. Robisz nową "zone" na WAN-ie o nazwie "lte" więc przydałoby się w pliku 01-config.sh dopisać jeszcze zasady firewalla dla strefy o tej nazwie. Wyglądałoby to bardziej profesjonalnie, bo nie każdy na szybko skapnie się, że tak trzeba lub po prostu zapomni. Cezary w poradniku używa nazwy "wan" więc już nie opisuje tego, ponieważ firewall zawiera taką strefę, a jeśli zmienia nazwę np. HSDPA  to dołącza reguły firewalla dla tej strefy.
https://eko.one.pl/?p=openwrt-3g

2. Dodałbym jeszcze ustawienie strefy czasowej. Ładnie wygląda gdy router ma prawidłowy czas zamiast UTC.

* WNDR 4300v2 * ||  * Xiaomi Miwifi Mini * || Netgear R6220 *
* DVBT2 - T230C *

47 (edytowany przez morfik 2020-04-14 06:19:02)

Odp: Parę pytań dotyczących kompilacji OpenWRT

mar_w napisał/a:

1. Robisz nową "zone" na WAN-ie o nazwie "lte" więc przydałoby się w pliku 01-config.sh dopisać jeszcze zasady firewalla dla strefy o tej nazwie. Wyglądałoby to bardziej profesjonalnie, bo nie każdy na szybko skapnie się, że tak trzeba lub po prostu zapomni.

No ja u siebie w skrypcie mam konfigurację FW:

uci del firewall.@zone[1].network
uci set firewall.@zone[1].network='wan wan6 lte'

Dopiszę zaraz tam do artykułu -- zapomniałem o tym. Jakby nie patrzeć ten mój skrypt ma trochę tych poleceń. big_smile

mar_w napisał/a:

2. Dodałbym jeszcze ustawienie strefy czasowej. Ładnie wygląda gdy router ma prawidłowy czas zamiast UTC.

No te ustawienia można mnożyć dlatego podałem w zasadzie dwa przykłady -- na WiFi i LTE, a reszta to już zależy od usera co sobie tam ustawi. big_smile

48

Odp: Parę pytań dotyczących kompilacji OpenWRT

Mały OT: jak ma się jeden router czy kilka w kraju to strefa czasowa ma sens. Jak ma się kilka routerów na świecie to ustawienie lokalnych stref czasowych daje całkiem niezły bałagan, zwłaszcza jak ktoś zbiera dane w routerów. UTC jest wtedy  lepszym rozwiązaniem bo nie trzeba w głowie przeliczać czasu zdarzeń.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.