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

Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
firmware [06.12.2015 19:46] – angelegt havelockfirmware [28.01.2023 17:39] – [Fehlerbehebung] havelock
Zeile 1: Zeile 1:
 ====== Firmware ====== ====== Firmware ======
  
-** Stub **+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:
 +
 +  * stable - Das sollte normalerweise installiert werden
 +  * beta - die nächste, kommende Version z.B. 2017.1
 +  * experimental - hier werden neue Versionen und Features ausprobiert
 +
 +===== Pinneberger Versionen =====
 +
 +  * 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.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 =====
 +
 +Voraussetzungen
 <code> <code>
-make clean GLUON_TARGET=ar71xx-generic+aptitude install build-essential git subversion python gawk unzip libssl-dev zlib1g-dev libncurses5-dev 
 +</code>
  
 +<code bash>
 +git clone https://github.com/freifunk-gluon/gluon.git
 +cd gluon
 +git clone git://github.com/thooge/ffpi-site.git site
 +cd site
 +git checkout [master|beta|experimental]
 +cd ..
 +
 +git checkout v2015.1.2
 make update make update
 +make -j10 GLUON_TARGET=ar71xx-generic GLUON_BRANCH=[stable|beta|experimental]
  
-make -j10 GLUON_TARGET=ar71xx-generic +# Falls die Versin < 2017 ist, muß die Datei modules angepaßt werden: 
-make -j10 GLUON_TARGET=mpc85xx-generic +# Das Reporitory muß von openwrt auf chaos_calmer umgestellt werden
-make -j10 GLUON_TARGET=ar71xx-nand +
-make -j10 GLUON_TARGET=x86-generic +
-make -j10 GLUON_TARGET=x86-kvm_guest+
  
-make manifest GLUON_BRANCH=stable+make update 
 + 
 +make manifest GLUON_BRANCH=[stable|beta|experimental] 
 +</code> 
 + 
 +Weitere Targets 
 +  * ''mpc85xx-generic'' - TLWDR4900 
 +  * ''ar71xx-nand'' - WNDR4300 
 +  * ''x86-generic'' 
 +  * ''x86-64'' 
 +  * ''x86-kvm_guest'' 
 + 
 +==== Erstellen  wiederholen ==== 
 + 
 +<code bash> 
 +cd gluon 
 +git pull 
 +make clean GLUON_TARGET=ar71xx-generic GLUON_BRANCH=[stable|beta|experimental] 
 +make update 
 +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'' 
 + 
 +  * ''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.txt · Zuletzt geändert: 12.05.2023 11:41 von havelock