Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


firmware

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
firmware [25.12.2015 12:49] – [Firmware erstellen] havelockfirmware [12.05.2023 11:41] (aktuell) – [Firmware erstellen] havelock
Zeile 1: Zeile 1:
 ====== Firmware ====== ====== Firmware ======
 +
 +Die von der Community Pinneberg verwendete Firmware ist [[Gluon]].
 +Siehe:
 +  * https://wiki.freifunk.net/Freifunk_Firmware_Gluon
 +  * Quelltext: https://github.com/freifunk-gluon/gluon
 +  * Dokumentation: https://gluon.readthedocs.io
  
 Es gibt verschiedene Zweige: Es gibt verschiedene Zweige:
  
-  * stable +  * stable - Das sollte normalerweise installiert werden 
-  * beta - momentan nicht vorhanden +  * beta - die nächste, kommende Version z.B. 2017.1 
-  * experimental - die kommende Version 2015.2+  * experimental - hier werden neue Versionen und Features ausprobiert
  
 ===== Pinneberger Versionen ===== ===== Pinneberger Versionen =====
Zeile 11: Zeile 17:
   * 0.7.0 - erste Version die Community basierend auf Gluon 2015.1.1   * 0.7.0 - erste Version die Community basierend auf Gluon 2015.1.1
   * 0.7.1 - Version ab 28.11.2015 bastierend auf Gluon 2015.1.2   * 0.7.1 - Version ab 28.11.2015 bastierend auf Gluon 2015.1.2
-  * die nächste Version wird 0.8 sein+  * 0.9 - basierend auf Gluon 2016.2.6 
 +  * 0.9.1 - basierend auf Gluon 2016.2.7 
 +  * anschließend dann Umstieg auf 802.11s 
  
 ===== Firmware erstellen ===== ===== Firmware erstellen =====
Zeile 17: Zeile 26:
 Voraussetzungen Voraussetzungen
 <code> <code>
-aptitude install build-essential git subversion python gawk unzip +apt-get install build-essential git subversion python gawk unzip file libssl-dev zlib1g-dev libncurses5-dev
-    libssl-dev zlib1g-dev libncurses5-dev+
 </code> </code>
  
Zeile 24: Zeile 32:
 git clone https://github.com/freifunk-gluon/gluon.git git clone https://github.com/freifunk-gluon/gluon.git
 cd gluon cd gluon
-git clone git://github.com/freifunk-pinneberg/site-ffpi.git site+git clone git://github.com/thooge/ffpi-site.git site
 cd site cd site
 git checkout [master|beta|experimental] git checkout [master|beta|experimental]
Zeile 31: Zeile 39:
 git checkout v2015.1.2 git checkout v2015.1.2
 make update make update
-make -j10 GLUON_TARGET=ar71xx-generic+make -j10 GLUON_TARGET=ar71xx-generic GLUON_BRANCH=[stable|beta|experimental]
  
-make manifest GLUON_BRANCH=stable+# Falls die Versin < 2017 ist, muß die Datei modules angepaßt werden: 
 +# Das Reporitory muß von openwrt auf chaos_calmer umgestellt werden 
 + 
 +make update 
 + 
 +make manifest GLUON_BRANCH=[stable|beta|experimental]
 </code> </code>
  
 Weitere Targets Weitere Targets
-  * ''mpc85xx-generic'' +  * ''mpc85xx-generic'' - TLWDR4900 
-  * ''ar71xx-nand''+  * ''ar71xx-nand'' - WNDR4300
   * ''x86-generic''   * ''x86-generic''
 +  * ''x86-64''
   * ''x86-kvm_guest''   * ''x86-kvm_guest''
  
Zeile 47: Zeile 61:
 cd gluon cd gluon
 git pull git pull
-make clean GLUON_TARGET=ar71xx-generic+make clean GLUON_TARGET=ar71xx-generic GLUON_BRANCH=[stable|beta|experimental]
 make update make update
-make -j10 GLUON_TARGET=ar71xx-generic+make -j10 GLUON_TARGET=ar71xx-generic GLUON_BRANCH=[stable|beta|experimental] 
 +</code> 
 + 
 +Alles löschen: ''make dirclean'' 
 +==== Fehlerbehebung ==== 
 + 
 +Falls der Build mit einer Fehlermeldung abbricht, kann das Kommando um ''V=s'' 
 +ergänzt werden. Damit wird eine ausführliche Protokollierung eingeschaltet. 
 + 
 +Fehler aufgrund Änderungen in glibc 
 + 
 +Fehler bei m4: 
 +<code> 
 +cd ./openwrt-ramips/build_dir/host/m4-1.4.17 
 +sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c 
 +echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h 
 +</code> 
 + 
 +<file patch tools/bison/patches/110-glibc-change-work-around.patch> 
 +Subject: Workaround change in glibc 
 + 
 +Temporary workaround to compile with glibc 2.28, which 
 +deprecated some constants 
 + 
 +Based on the workaround made for the tools/m4 package 
 + 
 +--- a/lib/stdio-impl.h 
 ++++ b/lib/stdio-impl.h 
 +@@ -18,6 +18,12 @@ 
 +    the same implementation of stdio extension API, except that some fields 
 +    have different naming conventions, or their access requires some casts.  */ 
 + 
 ++/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this 
 ++   problem by defining it ourselves.  FIXME: Do not rely on glibc 
 ++   internals.  */ 
 ++#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN 
 ++# define _IO_IN_BACKUP 0x100 
 ++#endif 
 + 
 + /* BSD stdio derived implementations.  */ 
 + 
 +--- a/lib/fseterr.c 
 ++++ b/lib/fseterr.c 
 +@@ -29,7 +29,7 @@ 
 +   /* Most systems provide FILE as a struct and the necessary bitmask in 
 +      <stdio.h>, because they need it for implementing getc() and putc() as 
 +      fast macros.  */ 
 +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ 
 ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ 
 +   fp->_flags |= _IO_ERR_SEEN; 
 + #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */ 
 +   fp_->_flags |= __SERR; 
 +</file> 
 + 
 +<file patch tools/squashfs/patches/140-gcc-10-fix.patch> 
 +Fixes the following build error with GCC 10: 
 + /usr/bin/ld: read_fs.o:(.bss+0x0): multiple definition of `swap'; mksquashfs.o:(.bss+0x1b2a88): first defined here 
 +And a compile warning. 
 + 
 +--- a/squashfs-tools/read_fs.c 
 ++++ b/squashfs-tools/read_fs.c 
 +@@ -61,7 +61,7 @@ extern int add_file(long long, long long 
 +  fprintf(stderr, s, ## args); \ 
 +  } while(0) 
 +  
 +-int swap; 
 ++static int swap; 
 +  
 + int read_block(int fd, long long start, long long *next, unsigned char *block, squashfs_super_block *sBlk) 
 + { 
 +--- a/squashfs-tools/mksquashfs.c 
 ++++ b/squashfs-tools/mksquashfs.c 
 +@@ -258,6 +258,7 @@ int read_sort_file(char *filename, int s 
 + void sort_files_and_write(struct dir_info *dir); 
 + struct file_info *duplicate(char *(get_next_file_block)(struct duplicate_buffer_handle *, unsigned int), struct duplicate_buffer_handle *file_start, long long bytes, unsigned int **block_list, long long *start, int blocks, struct fragment **fragment, char *frag_data, int frag_bytes); 
 + struct dir_info *dir_scan1(char *, int (_readdir)(char *, char *, struct dir_info *)); 
 ++int dir_scan2(squashfs_inode *inode, struct dir_info *dir_info); 
 +  
 + #define MKINODE(A) ((squashfs_inode)(((squashfs_inode) inode_bytes << 16) + (((char *)A) - data_cache))) 
 +  
 + 
 +</file> 
 + 
 +Meistens fehlt: 
 +  #include <sys/sysmacros.h> 
 + 
 +Mögliche betroffene Dateien:  
 +  * ''make-ext4fs'' 
 +    * ''contents.c'' 
 +  * ''e2fsprogs-1.43.3'' 
 +    * ''lib/ext2fs/ext2fs.h'' 
 +    * ''e2fsck/e2fsck.h'' 
 +    * ''lib/blkid/blkid.h'' 
 +  * ''mtd-utils-1.5.1'' 
 +    * ''mkfs.jffs2.c'' 
 +    * ''ubiutils/libubi.c'' 
 +    * ''mkfs.ubifs/mkfs.ubifs.h''  
 +  * ''squashfs'' 
 +    * ''mksquashfs.c'' 
 +    * ''unsquashfs.c'' 
 + 
 +  * ''findutils'', fix wie bei bison 
 +    * ''freadahead.c'' 
 +    * ''fseeko.c'' 
 + 
 +siehe auch: https://forum.openwrt.org/t/solved-error-undefined-reference-to-major/108258 
 +===== Firmware signieren ===== 
 + 
 +Benötigte Bibliotheken: 
 +  * ''[[libuecc]]'' 
 +  * ''[[ecdsautils]]'' 
 + 
 +<code> 
 +make manifest GLUON_BRANCH=[stable|beta|experimental] 
 +contrib/sign.sh <private_key> output/images/sysupgrade/[stable|beta|experimental].manifest
 </code> </code>
  
firmware.1451044191.txt.gz · Zuletzt geändert: 25.12.2015 12:49 von havelock