FreifunkMD / FFMD-Orga

Organisation für FreifunkMD, z.B. Aufgaben
2 stars 0 forks source link

Upgrade der Firmware #9

Closed johannwagner closed 6 years ago

johannwagner commented 7 years ago

http://firmware.md.freifunk.net/beta/0.38~beta.2/

LeSpocky commented 7 years ago

Ist hier Gluon gemeint und nicht OpenWRT? Bitte die entsprechenden Issues und Pull Requests in diesem Repo hier ansehen und bearbeiten: https://github.com/FreifunkMD/site-ffmd

eriu commented 7 years ago

gemeint ist https://gluon.readthedocs.io/en/v2017.1.x/releases/v2016.2.7.html

johannwagner commented 6 years ago

Ich habe gestern Nacht mal, mit Hilfe des Pull-Requests von vitapower ein Gluon mit v2016.2.7 gebaut. Images liegen hier jetzt rum. Ich bräuchte nur mal einen Freiwilligen mit etwas mehr Fachkunde, um die Images zu testen.

gluon-ffmd-0.37+24-g00dc726-alfa-network-ap121.bin
gluon-ffmd-0.37+24-g00dc726-alfa-network-ap121u.bin
gluon-ffmd-0.37+24-g00dc726-alfa-network-hornet-ub.bin
gluon-ffmd-0.37+24-g00dc726-alfa-network-n2-n5.bin
gluon-ffmd-0.37+24-g00dc726-alfa-network-tube2h.bin
gluon-ffmd-0.37+24-g00dc726-buffalo-wzr-600dhp.bin
gluon-ffmd-0.37+24-g00dc726-buffalo-wzr-hp-ag300h.bin
gluon-ffmd-0.37+24-g00dc726-buffalo-wzr-hp-g300nh2.bin
gluon-ffmd-0.37+24-g00dc726-buffalo-wzr-hp-g300nh.bin
gluon-ffmd-0.37+24-g00dc726-buffalo-wzr-hp-g450h.bin
gluon-ffmd-0.37+24-g00dc726-d-link-dir-505-rev-a1.bin
gluon-ffmd-0.37+24-g00dc726-d-link-dir-505-rev-a2.bin
gluon-ffmd-0.37+24-g00dc726-d-link-dir-615-rev-c1.bin
gluon-ffmd-0.37+24-g00dc726-d-link-dir-825-rev-b1.bin
gluon-ffmd-0.37+24-g00dc726-gl-inet-6408a-v1.bin
gluon-ffmd-0.37+24-g00dc726-gl-inet-6416a-v1.bin
gluon-ffmd-0.37+24-g00dc726-linksys-wrt160nl.bin
gluon-ffmd-0.37+24-g00dc726-netgear-wndr3700.img
gluon-ffmd-0.37+24-g00dc726-netgear-wndr3700v2.img
gluon-ffmd-0.37+24-g00dc726-netgear-wndr3700v4.img
gluon-ffmd-0.37+24-g00dc726-netgear-wndr3800.img
gluon-ffmd-0.37+24-g00dc726-netgear-wndr4300.img
gluon-ffmd-0.37+24-g00dc726-netgear-wndrmacv2.img
gluon-ffmd-0.37+24-g00dc726-onion-omega.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr1750.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr1750v2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr600.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr600v2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr900.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-mr900v2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2p.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2p-hs.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2p-hsv2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2p-hsv3.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2p-lc.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om2pv2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om5p-ac.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om5p-acv2.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om5p-an.bin
gluon-ffmd-0.37+24-g00dc726-openmesh-om5p.bin
gluon-ffmd-0.37+24-g00dc726-raspberry-pi-2.img.gz
gluon-ffmd-0.37+24-g00dc726-raspberry-pi.img.gz
gluon-ffmd-0.37+24-g00dc726-tp-link-archer-c5-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-archer-c7-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe210-v1.0.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe210-v1.1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe220-v1.0.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe220-v1.1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe510-v1.0.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe510-v1.1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe520-v1.0.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-cpe520-v1.1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr13u-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3020-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3040-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3040-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3220-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3220-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3420-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-mr3420-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa701n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa701n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa750re-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa7510n-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa801n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa801n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa801n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa830re-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa830re-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa850re-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa860re-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa901n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa901n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa901n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wa901n-nd-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wdr3500-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wdr3600-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wdr4300-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wdr4900-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr1043n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr1043n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr1043n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr1043n-nd-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr2543n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr703n-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr710n-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr710n-v2.1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr710n-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr740n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr740n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr740n-nd-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr740n-nd-v5.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr741n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr741n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr741n-nd-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr741n-nd-v5.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr743n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr743n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v10.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v11.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v12.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v5.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v7.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v8.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr841n-nd-v9.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr842n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr842n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr842n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr843n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr940n-nd-v1.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr940n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr940n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr940n-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr941n-nd-v2.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr941n-nd-v3.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr941n-nd-v4.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr941n-nd-v5.bin
gluon-ffmd-0.37+24-g00dc726-tp-link-tl-wr941n-nd-v6.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-airgateway.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-airrouter.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-bullet-m2.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-bullet-m5.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-bullet-m.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-loco-m-xw.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-loco-m2.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-loco-m5.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-m2.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-m5.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-m.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-nanostation-m-xw.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-picostation-m2.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-rocket-m2.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-rocket-m5.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-rocket-m-xw.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-unifiap-outdoor.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-unifiap-outdoor+.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-unifi-ap-pro.bin
gluon-ffmd-0.37+24-g00dc726-ubiquiti-unifi.bin
gluon-ffmd-0.37+24-g00dc726-wd-my-net-n600.bin
gluon-ffmd-0.37+24-g00dc726-wd-my-net-n750.bin
gluon-ffmd-0.37+24-g00dc726-x86-64.img.gz
gluon-ffmd-0.37+24-g00dc726-x86-64-virtualbox.vdi
gluon-ffmd-0.37+24-g00dc726-x86-64-vmware.vmdk
gluon-ffmd-0.37+24-g00dc726-x86-generic.img.gz
gluon-ffmd-0.37+24-g00dc726-x86-kvm.img.gz
gluon-ffmd-0.37+24-g00dc726-x86-virtualbox.vdi
gluon-ffmd-0.37+24-g00dc726-x86-vmware.vmdk
gluon-ffmd-0.37+24-g00dc726-x86-xen.img.gz
penguineer commented 6 years ago

Kannst Du dokumentieren, wie Du die Firmware gebaut hast? So einzelne Schritte, damit ich das bei mir mal reproduzieren kann?

johannwagner commented 6 years ago

Ich habe alles in ein Dockerfile geworfen und als Container gebaut, damit ich das Ganze reproduzierbar bauen kann. Die site.conf kann halt nach Belieben angepasst werden.

Ich clone hier vom gcc-Image, da die Leute ihr Kram im Griff haben. Wenn man von einem Ubuntu-Image clont, dann gibts nen Fehler, dass die GCC-Version nicht stimmt, ist etwas komplexer, kann ich bei Gelegenheit erklären.

FROM gcc:7.2

RUN apt-get update 
RUN apt-get upgrade -y

RUN apt-get install -y git subversion python build-essential gawk unzip libncurses-dev  libz-dev  libssl-dev wget

RUN git clone git://github.com/freifunk-gluon/gluon.git 
WORKDIR gluon
RUN git checkout origin/v2016.2.x

RUN git clone https://github.com/johannwagner/site-ffmd.git site
WORKDIR site
RUN git checkout origin/v2016.2.x

WORKDIR /gluon
RUN pwd

RUN make update

ENV FORCE_UNSAFE_CONFIGURE=1
CMD ["./site/build.sh", "-v"] 
johannwagner commented 6 years ago

Die Konfiguration baut, so wie sie jetzt ist, noch nicht. Ich weiß aber noch nicht, warum. Es wird ein Binary nicht richtig erstellt, weil es, laut Google, zu groß geworden ist und dann bricht das make-File mittendrin ab. Log wird gerade produziert.

johannwagner commented 6 years ago
/gluon/build/ar71xx-generic/openwrt/staging_dir/host/bin/mktplinkfw -H 0x09410004 -W 1 -F 4M -N OpenWrt -V r49389 -X 0x40000 -k /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/kernel/tmp/kernel-tl-wr941nd-v4.bin -r /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/kernel/root.squashfs-raw -a 0x4 -j -o /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr941nd-v4-squashfs-factory.bin
[mktplinkfw] kernel length aligned to 1290752
[mktplinkfw] firmware file "/gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr941nd-v4-squashfs-factory.bin" completed
/gluon/build/ar71xx-generic/openwrt/staging_dir/host/bin/mktplinkfw -H 0x09410004 -W 1 -F 4M -N OpenWrt -V r49389 -s -X 0x40000 -k /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/kernel/tmp/kernel-tl-wr941nd-v4.bin -r /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/kernel/root.squashfs-raw -a 0x4 -j -o /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr941nd-v4-squashfs-sysupgrade.bin
[mktplinkfw] kernel length aligned to 1290752
[mktplinkfw] firmware file "/gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr941nd-v4-squashfs-sysupgrade.bin" completed
( cd /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images ; find -maxdepth 1 -type f \! -name 'md5sums'  -printf "%P\n" | sort | xargs md5sum --binary > md5sums )
( cd /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images ; find -maxdepth 1 -type f \! -name 'md5sums'  -printf "%P\n" | sort | xargs openssl dgst -sha256 > sha256sums )
make[4]: Leaving directory '/gluon/openwrt/target/linux/ar71xx/image'
rm -f /gluon/output/images/sysupgrade/gluon-*-tp-link-tl-wr940n-v4-sysupgrade.bin && cp /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr940n-v4-squashfs-sysupgrade.bin /gluon/output/images/sysupgrade/gluon-ffmd-$(cat /gluon/build/ar71xx-generic/prepared)-tp-link-tl-wr940n-v4-sysupgrade.bin &&   rm -f /gluon/output/images/factory/gluon-*-tp-link-tl-wr940n-v4.bin && cp /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr940n-v4-squashfs-factory-en.bin /gluon/output/images/factory/gluon-ffmd-$(cat /gluon/build/ar71xx-generic/prepared)-tp-link-tl-wr940n-v4.bin &&      :
cp: cannot stat '/gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr940n-v4-squashfs-factory-en.bin': No such file or directory
/gluon/Makefile:435: recipe for target 'image' failed
make[3]: *** [image] Error 1
make[3]: Leaving directory '/gluon/build/ar71xx-generic/openwrt'
make[2]: *** [image/TLWR940_REGION] Error 2
/gluon/Makefile:479: recipe for target 'image/TLWR940_REGION' failed
make[2]: Leaving directory '/gluon/build/ar71xx-generic/openwrt'
/gluon/Makefile:482: recipe for target 'call_image/TLWR940_REGION' failed
make[1]: *** [call_image/TLWR940_REGION] Error 2
make[1]: Leaving directory '/gluon/build/ar71xx-generic/openwrt'
Makefile:71: recipe for target 'all' failed
make: *** [all] Error 2
penguineer commented 6 years ago

Sieht für mich gerades so aus, als wäre das das kritische Kommando:

cp /gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr940n-v4-squashfs-sysupgrade.bin /gluon/output/images/sysupgrade/gluon-ffmd-$(cat /gluon/build/ar71xx-generic/prepared)-tp-link-tl-wr940n-v4-sysupgrade.bin

Daraus kommt die Fehlermeldung

cp: cannot stat '/gluon/build/ar71xx-generic/profiles/TLWR940_REGION/images/gluon-tl-wr940n-v4-squashfs-factory-en.bin': No such file or directory

Gibt es vorher schon einen Grund, warum das nicht gebaut wurde? (Meldung vorher im Build Script?) Oder ist das Problem, dass einzelne Images gar nicht erzeugt wurden und das cp hier weniger strict sein müsste?

johannwagner commented 6 years ago

Laut einer kurzen Google-Recherchen wird das Image vorher nicht gebaut, da die Binary Size zu groß wird. Es gab da schon mal ein Bug und der Workaround war, dass entweder weniger Sprachen oder Pakete eingebaut werden sollen.

Mehr Infos hier: https://github.com/freifunk-gluon/gluon/issues/1009

EDIT: Ich werde daraus aber nicht so wirklich schlau.

penguineer commented 6 years ago

Hast Du die Begrenzung der Sprachen mal probiert? Die Erklärung, dass das erzeugte Image für den Flash zu groß ist, klingt plausibel. (Wobei es schöner wäre, wenn das Make-Script an der Stelle eine Warnung ausgibt, anstatt mit einem anderen Fehler abzubrechen.

Für erste Tests könntest Du die Plattform auch weglassen bzw. nur für den Router bauen, auf dem Du testen möchtest.

johannwagner commented 6 years ago

Jo, habe ich probiert, gibt keine Änderung. Ich baue gerade ohne das Target, mal schauen, ob es klappt.

Desweiteren möchte das Build-Script überarbeitet werden, das ist echt übel zu lesen..

penguineer commented 6 years ago

Desweiteren möchte das Build-Script überarbeitet werden, das ist echt übel zu lesen..

Ja, aber das ist eine andere Baustelle. ^^

johannwagner commented 6 years ago

Okay, wenn ich ohne das Build-Script baue, dann baut alles ohne Probleme. Ich hab jetzt ne Version für Gluon v2016.2.7, welche getestet werden kann.

penguineer commented 6 years ago

Hast Du nochmal ein angepasstes Dockerfile? Und den Docker-Aufruf dazu?

johannwagner commented 6 years ago

Allgemeines

FROM gcc:7.2

RUN apt-get update 
RUN apt-get upgrade -y

RUN apt-get install -y git subversion python build-essential gawk unzip libncurses-dev  libz-dev  libssl-dev wget

RUN git clone git://github.com/freifunk-gluon/gluon.git 
WORKDIR gluon
RUN git checkout origin/v2016.2.x

RUN git clone https://github.com/johannwagner/site-ffmd.git site
WORKDIR site
RUN git checkout origin/v2016.2.x

WORKDIR /gluon
ENV FORCE_UNSAFE_CONFIGURE=1
ENTRYPOINT ["/bin/bash"]

Der Container kann ganz normal gebaut werden, beispielsweise mit docker build -t ffmd-v2016.2.7 . und dann mit docker run -i --name ffmd ffmd-v2016.2.x gestartet werden. In dem Container ist dann alles vorbereitet für die Builds, es kann nach der Gluon-Anleitung vorgegangen werden. Das build.sh-Script hat für mich nicht funktioniert, da müsste man nochmal drüber schauen..

Firmware bauen

make update muss zuerst ausgeführt werden, dass die Dependencies geclont werden. make GLUON_TARGET=ar71xx-generic -j8 baut dann die Firmware für den entsprechenden Chipsatz mit 8 Threads. make GLUON_TARGET=ar71xx-generic -j8 clean baut alles neu.

Firmware aus dem Container holen

Man könnte, eleganterweise, gleich ein Volume durchmounten, bspw. mit docker run -i -v "firmwares:/gluon/output" --name ffmd ffmd-v2016.2.x (ungestestet) Allerdings kann man nach Beenden des Builds auch mit docker cp ffmd:/gluon/output firmwares seine Images heraus ziehen.

Betriebsystem

Ich fahre ein Ubuntu 17.10 mit aktuellstem Update-Stand und Docker 17.12 CE.

Build Time

Ich hab zum Bauen von allen Images für alle Architekturen ~ 3h 20m gebraucht. i7-6700HQ, 16 GB RAM, -j10

LeSpocky commented 6 years ago

@johannwagner Mach bitte für build.sh extra Tickets auf. Speziell auch in Bezug auf »echt übel zu lesen«, das erschließt sich mir nämlich nicht.

johannwagner commented 6 years ago

@LeSpocky Natürlich, mach ich noch. Wollte das nur mal für mich vormerken. Für mich als Neuling erschließen sich einige Dinge nicht, deswegen würde ich mich damit nochmal weiter beschäftigen wollen.

andreasscherbaum commented 6 years ago

Und wie kriegen wir das ganze jetzt in Jenkins, damit bei jedem Commit ein "experimental" Image gebaut werden kann? Und daraus dann "stable" und "release"?

LeSpocky commented 6 years ago

Könnte der zuerst genannte Fehler mit https://github.com/FreifunkMD/site-ffmd/issues/95 zu tun haben?

Und was bedeutet dies hier?

FROM gcc:7.2
johannwagner commented 6 years ago

Ich hole ein Docker-Image von Docker-Hub, welches gcc heißt, in der Version 7.2. Das Image ist im Grunde nen Debian, glaub ich, mit nem installierten GCC.

Es gibt in einem Teil einen Bug, wo auf die GCC Version geprüft wird, welche, wenn man ein Ubuntu/Debian ist und gcc installiert, auftritt. Das passiert so nicht.

penguineer commented 6 years ago

@LeSpocky https://docs.docker.com/engine/reference/builder/#usage

penguineer commented 6 years ago

Der PR ist https://github.com/FreifunkMD/site-ffmd/pull/93 und es gibt ein Approval. Testbetrieb ist jetzt auch schon eine ganze Weile.

Können wir das dann nicht einfach mal mergen?

penguineer commented 6 years ago

@LeSpocky : Ich habe den Merge durchgeführt, bitte noch ein Tag anlegen.

LeSpocky commented 6 years ago

Tag für v0.38~beta.1 ist angelegt. ✔

johannwagner commented 6 years ago

Wie geht es von hier aus weiter ? Ich habe jetzt Images für alle Archtekturen durchgebaut und die liegen hier jetzt rum.

andreasscherbaum commented 6 years ago

Nächste Fragen in dem Zusammenhang:

  1. Auf welchem Host können die Images mittels Docker gebaut werden?
  2. Wo und wie werden die Images danach auf den Webserver geschoben?
  3. Soll das Hochladen der Images Teil des Docker Images sein (ggf. Credentials notwendig), oder passiert das durch den Prozess der den Build anstößt?
  4. Wie kann das in Jenkins integriert werden?
  5. @johannwagner Hattest du dich weiter mit Jenkins beschäftigt?
johannwagner commented 6 years ago

@andreasscherbaum

  1. Im Grunde ist es jetzt betriebssystemunabhängig auf allen Hosts, die Docker unterstützen, baubar.
  2. Desweiteren ist noch nichts automagisiert, was bedeutet, dass dies noch per Hand gemacht werden muss. Allerdings ist in #23 schon dokumentiert, was zu tun ist.
  3. Aus einer CI, also in dem Fall Jenkins, fallen am Ende des Builds Artefakte raus und eigentlich möchte man diese Artefakte persistieren, also bestenfalls sofort hochladen. Allerdings kann dafür beispielsweise im Jenkins auch einfach ein Schlüsselpaar hinterlegt sein, welches in den Container rein gelinkt wird und somit Zugriff auf den Server, auf dem die Images liegen, hat.
  4. und 5. Ich denke, es könnte so oder so ähnlich integriert werden: https://jenkins.io/doc/book/pipeline/docker/ Es gibt im Build-Prozess seltsame Bugs des GCC's, wo Version Checks auf einmal kaputt gehen, weil kein Fehlerhandling dafür da ist. Deswegen bin ich froh, dass die Build-Umgebung im Container jetzt funktioniert und würde den, auch aus Wartbarkeitsgründen, gerne einfach einsetzen. Wenn du mir nochmal ne Mail mit Zugangsdaten zu dem Jenkins schickst, dann kann ich mal schauen, ob ich das da rein konfiguriert kriege.

johann.wagner@st.ovgu.de, da müsste es sogar ein PGP-Key zu geben. https://pgp.mit.edu/pks/lookup?op=get&search=0xAC2506CE806A6A56

andreasscherbaum commented 6 years ago

@johannwagner Siehe E-Mail Postfach.

penguineer commented 6 years ago

Vor einem Rollout der Stable müssen noch die neuen Schlüssel hinterlegt werden, oder?

LeSpocky commented 6 years ago

Vor einem Rollout der Stable müssen noch die neuen Schlüssel hinterlegt werden, oder?

Ja. Wie @lxusrbin schon in #24 schrieb: Wäre gut schon im nächsten Release v0.38 die neuen Schlüssel für das übernächste Release v0.39 drin zu haben!

penguineer commented 6 years ago

Ich mache noch einen Build des aktuellen Master und würde bei Erfolg den Tag für die beta-2 vergeben und dieses Ticket schließen.

@polybos wartet noch auf Feedback bzgl. #24 - hier könnten wir überlegen, wie lange wir warten wollen.

penguineer commented 6 years ago

Build lief durch. :)

penguineer commented 6 years ago

Tag v0.38-beta.2 ist da!

penguineer commented 6 years ago

Hier sind Images zum Testen: http://www.netz39.de/ffmd/v0.38-beta.2/

Welche Geräte sollten wir unbedingt testen?

penguineer commented 6 years ago

Welche Geräte sollten wir unbedingt testen?

LeSpocky commented 6 years ago

Hier sind Images zum Testen: http://www.netz39.de/ffmd/v0.38-beta.2/

Wollen wir die mit nach gw1 kopieren, damit sie mit unter http://firmware.md.freifunk.net/beta/ auftauchen? Siehe auch http://www.netz39.de/wiki/freifunk:anleitungen:rollout#firmware_hochladen

Welche Geräte sollten wir unbedingt testen?

eriu commented 6 years ago

Ich hab heute morgen die Beta Firmware auf meinen Knoten wr1043n-54c installiert - bislang sieht alles ok aus :-). Ich werde das mal noch etwas testen und dann mich melden.

robisys commented 6 years ago

Habe auf TP-LINK tl-wr1043nd-v4 die version 0.38 beta2 installiert , auf 2 Geräten was ist für den Test dann erforderlich, gibt es da eine "Testanleitung" ?

eriu commented 6 years ago

moin robi,

penguineer commented 6 years ago

Beta-Rollout sieht gut aus. :) Ebenfalls Test mit meshing und direktem Uplink.

Ich schließe dieses Ticket.