Outils pour utilisateurs

Outils du site


gnu:totemfon

Le TotemFon

Pour à peine 80 euros, moins cher qu'un NSLU2 aujourd'hui, la Fonera 2.0n devient LA plateforme intéressante qu'on peut utiliser sous un système GNU/Linux comme OpenWRT. Elle à un switch 4 ports, un chipset WIFI et même si son CPU ne tourne qu'à 300MHz? c'est déja le top !

  • RT3052 Chipset (Ralink 300mhz)
  • 64mb SRAM, 8MB Flash,
  • 4 10/100Mbit netwerk poorten
  • 300Mbit Wifi/N
  • USB 1.1/2.0 port
  • 12V dc PSU

Les logiciels de base sur le firmware sont fait pour permettre à la communauté société Fon de vivre. Ce n'est pas notre but, non pas que nous travaillons contre, tout au contraire, mais nous recherchons autre chose: bâtir nos propres communautés et permettre à qui veut de le faire. Au lieu d'avoir besoin de serveur distant pour s'organiser, pour s'exprimer et échanger, nous prônons ici l'autonomie et l'auto-organisation.

Nous ne pouvons pas compter aujourd'hui sur les institutions pour organiser la vie numérique des citoyens (expérience de l'association CMS et de nantes-wireless), elles n'ont plus les capacités techniques, enlisées dans le besoin de contrôle, et se sont tournées vers une gestion identique à celle de l'entreprise, vers des visions à cours termes, dans d'unique souci de rentabilité, voir spéculatives. Ou elles sont bloquées par la peur d'une législation obscure et mal adaptée aux grand changement sociaux. Il y a des moyens de connexions partout en ville mais aucun partage autorisé, c'est la distopie d'Orwell qui se réalise.

Le temps des data-centers, du cloud computing à la microsoft est celui des dinosaures, lourds, immobilisant, anti-écologique, voir dangereux pour la liberté du citoyen.

Pensez que si vous faites héberger votre site sur une machine d'une ferme de site, non seulement vous participez à l'existence de milliers de Km de câbles, de routeurs, d'ordinateurs, de systèmes de climatisations, d'infra-structures utiles au seul fonctionnement, mais vous n'avez aucun mot à dire sur leurs installations et la pollution engendrée, voir sur l'éthique, le social, le profit. Bien sur l'ordinateur d'une ferme héberge souvent à lui seul plusieurs centaines voir milliers de sites, sont impacte ramené à votre usage est minime, mais quand même supérieur à celui d'un micro-tout-petit serveur à la maison.

Bien souvent les visites des sites qui participent à la vie locale sont…locales et la fréquentation ne dépasse pas 20000 visites par mois, c'est plutôt 1000/mois. Et dans le monde virtuel, point de distance… Utilisez des outils comme traceroute ou xtraceroute pour vous rendre compte du gâchis. De toute manière vous utilisez déjà une machine pour rester connecter, profitez de sa présence pour lui confier tout l'interfaçage à l'espace numérique et la gestion de vos données personnelles ou collectives, chez vous. On est jamais si bien servi que par soi même ;-)

Il y aura plusieurs niveau d'accès au TotemFon, un privé local, un ou plusieurs groupes (famille,potes etc), un publique. Chaque niveau privé/groupes/publique est étanches aux autres.

Voici donc nos perspectives

Destinations Internet:

  • Se connecter à Internet derrière un modem ou modem routeur ADSL sur nos FAI préférés
  • Gérer un point d'accès Wifi et un mesh
  • Héberger un ou plusieurs sites web publiques
  • Gérer un serveur BootPXE pour distribuer des systèmes GNU/Linux sur le réseau
  • Héberger un ou plusieurs sites web privés (F2F)
  • Héberger sa propre messagerie , publique
  • Partager des ressources locales, disques par exemple, mais aussi proxy/VPN?
  • Permettre le partage de fichier avec d'autres amis, autentifiés, criptés (F2F)
  • Gérer une messagerie instantanée sur le réseau privé
  • Accéder à un moteur de recherche collectif
  • Bien contrôler la séparation des différents réseaux
  • Utilisez l'outil comme source de convivialité, faire des sessions entre amis, au sein des quartiers. Cela sera étudier dans une partie installation, mise en place / organisation

Solutions envisagées:

  • OpenWRT Kamikaze 8.09 pour le système d'exploitation voir de simple modification du firmware de la fonera, qui est deja un openwrt
  • tftpboot fonctionne déjà sous openwrt cf le totemtaz
  • des éléments de OpenMesh, wifidog, ChilliSpot
  • lighthttpd, php5, ( mysql? ) ,
  • site oueb : un moteur dokuwiki ou plook portix2
  • des éléments de OpenVPN
  • Squirrelmail?
  • smb, proxy thor?, GnuNet
  • GnuNet , OneSwarm ?
  • serveur Jaber et clients qui vont bien , openSIP

Ainsi soit la page sur le TotemFon alpha, soit à la suite de notre petit atelier de fonosfera, montrant notre progression et nos problèmes avant de commencer la version alpha.

Premier contact

J'ai une fonera 2303a (2.0n) depuis ce matin.

On connecte la fiche internet au serveur de la maison qui lui est connecté à Internet, et un pc sur le switch, le dhcp de la fonera lui attribu l'ip 192.168.10.156

En suivant la documentation, laisser faire, repondre skip partout et aller dans Dashboard»Settings» System : Firmware Update

Je récupere sur mon pc le firmware DEV ici http://download.fonosfera.org/LATEST/fonera2.0n-FON2303/ afin d'avoir plus d'entrée sur la fon : un ssh ;-)

après 5 min j'ai un nouveau dashboard et un accès ssh par 192.168.10.1 :)))

ssh 192.168.10.1

Host '192.168.10.1' is not in the trusted hosts file.
(fingerprint md5 75:02:64:77:3a:37:65:13:28:7a:c1:04:25:06:7a:98)
Do you want to continue connecting? (y/n) yes
root@192.168.10.1's password: 

BusyBox v1.11.1 (2009-08-24 09:46:24 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

                                      _.--"""--,    
                                    .'          `\  
  .-""""""-.                      .'              | 
 /          '.                   /            .-._/ 
|             `.                |             |     
 \              \          .-._ |          _   \    
  `""'-.         \_.-.     \   `          ( \__/    
        |             )     '=.       .,   \        
       /             (         \     /  \  /        
     /`               `\        |   /    `'         
     '..-`\        _.-. `\ _.__/   .=.              
          |  _    / \  '.-`    `-.'  /              
          \_/ |  |   './ _     _  \.'               
               '-'    | /       \ |                 
                      |  .-. .-.  |                 
                      \ / o| |o \ /                 
                       |   / \   |                  
                      / `"`   `"` \                 
                     /             \                
                    | '._.'         \               
                    |  /             |              
                     \ |             |              
                      ||    _    _   /              
                      /|\  (_\  /_) /               
              jgs     \ \'._  ` '_.'                
                       `""` `"""`                   
                                                    
                       Elan the Elk                 
                                                    
--------  Fonera 20n Firmware (v2.3.0.0) -----------
      * Based on OpenWrt - http://openwrt.org       
      * Powered by FON - http://www.fon.com         
----------------------------------------------------
root@Fonera:~# 

Bon ,maintenant je fais le point et je vais parcourir http://trac.fonosfera.org/fon-ng

  • Il y a déjà un openwrt sur la fon :) kamikaze 8.09.1 ?
  • ce routeur permet d'avoir deux réseaux WIFI séparés. Un pour FON (“FON_AP”) et un autre privé utilisant du WPA (“MyPlace”).
  • Il y a un QoS pour configurer la quantité de bande passante allouée à Fon
  • opkg pourait gerer les paquets

Premières modifications

  • Avoir un gestionnaire de paquet pour installer sans trop de compilation ;-)
mkdir /usr/lib/opkg
cp /etc/opkg.conf /etc/opkg.conf.origin
echo "
src snapshots http://flash.fonera.be/FON2303/packages/mipsel/
src snapshots2 http://downloads.openwrt.org/kamikaze/8.09.2/rb532/packages/
src snapshots3 http://downloads.x-wrt.org/xwrt/kamikaze/8.09/rb532/packages/

dest root /
dest ram /tmp
dest usb /opt                
lists_dir ext /var/opkg-lists
" > /etc/opkg.conf
opkg update
opkg list
  • mettre en place de la place, une cleUSB avec une swap(/dev/sda1),une partition /opt(/dev/sda2), et autre pour le stockage(/dev/sda3)
mv /etc/config/fstab /config/fstab.std
echo "
config mount
	option target	/opt
	option device	/dev/sda2
	option fstype	ext3
	option options	rw,sync
	option enabled	0

config swap
	option device	/dev/sda1
	option enabled	0
" > /etc/config/fstab
echo "#!/bin/sh /etc/rc.common
START=99
start() {
# fstab, /etc/config/fstab => /dev/sda2	/opt ext noauto,rw,sync 0 0
	mount /opt
}">/etc/init.d/fini
ln -s /etc/init.d/fini /etc/rc.d/S99fini
  • Installation de lighthttpd sur la cleUSB (/opt)
opkg install lighttpd lighttpd-mod-simple_vhost lighttpd-mod-status lighttpd-mod-cgi -d usb 
ln -s /opt/etc/default /etc/
ln -s /opt/etc/init.d/lighttpd /etc/init.d/
ln -s /opt/etc/lighttpd.conf /etc/
ln -s /etc/init.d/lighttpd /etc/rc.d/S99lighttpd
mkdir -p /opt/www
ln -s /opt/www /www
echo "
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/opt/usr/lib
export PATH=$PATH:/opt/usr/sbin:/opt/usr/bin              
" >> /etc/profile
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/opt/usr/lib
export PATH=$PATH:/opt/usr/sbin:/opt/usr/bin
  • modification /etc/lighttpd.conf
server.modules = (
#       "mod_rewrite",
#       "mod_redirect",
#       "mod_alias",
        "mod_auth",
        "mod_status",
#       "mod_setenv",
#       "mod_fastcgi",
#       "mod_proxy",
        "mod_simple_vhost",
        "mod_cgi",
#       "mod_ssi",
#       "mod_usertrack",
#       "mod_expire"
)
  • racine des pages server.document-root = “/opt/www/”
  • status module status.status-url = “/status” et status.config-url = “/config”
  • CGI module cgi.assign = ( “.php” ⇒ “/bin/php” )

OK jusque la ça roule

  • Installation de php5
opkg install -d usb php5-cgi
opkg install -d usb php5-mod-gd php5-mod php5-mod-session php5-mod-pcre php5-mod-auth
opkg install -d usb lighttpd-mod-fastcgi  
opkg install -d usb  php5-mod-sockets # ?
#php5-mod-mysql # vers mysql non , pas de server !
  • modification de /opt/etc/php.ini, ajout de extension=gd.so;extension=pcre.so
  • et aussi si mysql extension=session.so;extention=mysql.so non
  • passer l'interface oueb de la fonera sur le port 81 afin de liberer le port 80 pour lighthttpd. C'estmodifier lucid: list address 81 , lucittpd: option port 81 et qos: option 'ports' '20,21,25,80,81,110,443,993,995' ;reboot ok ; l'interface est maintenant sur http://fonera:81
  • Installation de postgres à la place de mysql ?
opkg install -d usb php5-mod-pgsql pgsql-server pgsql-cli
  • modification de /opt/etc/php.ini extension= ?? manque le morceau !

Resultats

  • lighttpd fonctionne , reste a tester le mod fastcgi
  • dokuwiki fonctionne bien avec une gestion des permissions acl
  • je tente de faire l'install d'un mysql , pour le moment il manque pas mal de chose .. le moteur :(
  • impossible non plus de faire avec postgres,manque l'extention php5
  • le routage/firewall acces externe vers le service web interne,le site dokuwiki , ne se fait pas . il faut r-eecrire les regles iptable
  1. il faut passer par la phase de cross-compilation si on veut faire l'installation d'un blog genre dotclear ou autre bidule utilisant une base de donnée.
  2. garde ton le firmware fon ?
  3. pour une utilisation simple pas de pb c'est openwrt…
  4. pour creer un mesh, des sites etc.. ca fait beaucoup de modif avec le fait d'enlever ce qui ne sert pas selon notre ethique: acces youtube,facebook,twitter,flickrs; du coup il ne reste pas grand chose de la fon,
  5. ⇒ autant refaire un firmware entier 8-)

test de cross-compilation

Recuperation de gcc4.4, il semble que ce soit le 4.2 qui soit utilise sur ma machine?

Et cf http://trac.fonosfera.org/fon-ng/wiki/build

  • ne pas être sous root !
 svn co http://svn.fonosfera.org/fon-ng/trunk/ 
# defile le téléchargement
# réponse en fin : Révision 1519 extraite.
cd trunk
chmod +x install.sh
./install.sh
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
  • mettre à 1 l'option dev dans le fichier fon-ng/trunk/fon/fonbase/files/etc/config/registered afin d'avoir le ssh ouvert. ou ./fon/fonbase/files/etc/config/registered

j'ai trouve ça http://vivekian2.wordpress.com/2007/03/28/building-your-own-package-for-openwrt

1. Write the OpenWRT makefile : This is a special makefile which OpenWRT uses. The Makefile is listed and explained at the end of this post. Understanding how to write this makefile is the key to building packages on OpenWRT.

2. Copy this makefile in the appropriate folder : This should be package/<packageName>/Makefile within your buildroot system.

3. make menuconfig : Once the makefile has been placed in the appropriate directory, calling make menuconfig in the buildroot system should show the package in the appropriate section. The package should be selected.

4. make package/<package name>-compile V=99 : This does two things — downloads your package from the URL you specified and compiles the package as well. By default the compilation is done as per the “normal” makefile. You should be able to see the package source code in the dl folder and the compiled images in build_i386/<package-name>.
5. make package/<package name>-install V=99 : This should create the appropriate ipkg package in /bin/packages. Now you can go ahead and port the ipkg to your wrap board and install it using ipkg install <package name>

Faire attention à la documentation, le passage d'openwrt à la version 8 est aussi un changement de syntaxe des Makefile !!

Si vous lancer le make comme ça, prévoyez une occupation pour les prochains jours…

le lendemain :-\

cà marche pô.. pb de compilation

meilleurs test de cross-compilation

Tentative d'obtenir une base sans ajout ou modifications des modules

Revenir au fichier fonosfera_GPL, trouvé par là :http://download.fonosfera.org/Elan/20090921_fonosfera_GPL_tar.bz2 voici par ICI

La première fois j'ai fais une fois decompresse qlq modifs ;-)

  1. lien symbolique ln -sf /usr/src/fonosfera_2.3.0.0_GPL/openwrt/staging_dir/host/bin/mksquashfs-lzma /opt/buildroot-gcc342/bin/mksquashfs_lzma-3.2 sinon la generation du kernel se plante, relocaliser le lien en fonction de votre repertoire.
  2. enlever -Werrors dans mon fichier /usr/src/fonosfera_2.3.0.0_GPL/openwrt/build_dir/mipsel/uci-0.7.4/Makefile.inc sinon il y a arret sur erreur de cc1.
  3. mettre à 1 l'option dev dans le fichier fon-ng/trunk/fon/fonbase/files/etc/config/registered afin d'avoir le ssh ouvert.

La 2eme fois pour la même manip ( apparemment …) ça a fonctionner directement . ensuite

./install.sh
cd openwrt
make menuconfig
  1. mettre Target System (La Fonera2.0N [2.6])
  2. cocher SDK
  3. RIEN D'AUTRE ! juste Exit Save .
  4. lancez la compilation par un make V=99

C'est passé !, plus de 1 h de compilation sur ma petite jetway 1GHz 8-).

J'ai une image bin/openwrt-fonera2n-squashfs.img et toute une floppé de paquets .ipk dans bin/packages :-D

Modifications, ajouter/enlever des modules

  1. ./scripts/feeds update -a
    ./scripts/feeds install -a

Puis j'ai suivi la doc http://wiki.fon.com/wiki/Fonera_Development poru compiler des paquets séparément

si ensuite le menumakeconfig donne :

tmp/.config-package.in:26106: invalid option
tmp/.config-package.in:30136: invalid option
tmp/.config-package.in:30238: invalid option
tmp/.config-package.in:30240: invalid option
tmp/.config-package.in:30374: invalid option

Il faut modifier le fichier tmp/.config-package.in aux lignes désignées et bricoler . J'y ai collé: select PACKAGE_libmysqlclient, select PACKAGE_libffi, select PACKAGE_pycairo, select PACKAGE_python-gtk, select PACKAGE_python-gtk en espérant ne pas en avoir besoin . Et pour que ca ne recommence plus les fichiers feeds/packages/hippo-canvas/Makefile

  1. ajout dans la section lang de tout php5 pour test et make V=99 a suivre …
  2. ajout de mysql, qui va servir pour pas mal de services ?
  3. il manque libreadline …je copie des sources de kamikaze
cd /usr/src
cp -a openwrt-dev/kamikaze_8.09/package/libreadline fonosfera_2.3.0.0_GPL/openwrt/package/ 
cd fonosfera_2.3.0.0_GPL/openwrt
./scripts/feeds install libreadline
make package/libreadline/compile V=99
  1. compilation de mysql-5.0.18, qui marche du coup par make package/mysql/compile V=99, il faut toujours passer par le make menuconfig … avec une modif du Makefile enlever with_embedded_server=no –without-server –> ca marche pas ! touours des problemes, même apres de nombreuses corrections .. et postgres ? il y a un paquet serveur 8-)
  2. modif du fichier feeds/packages/lang/php5/Makefile –enable-mbstring au lieu du disable

comme j'ai déjà la toolchain teste export PATH=$PATH:/usr/src/fonosfera_2.3.0.0_GPL/openwrt/staging_dir/toolchain-mips_gcc4.1.2/bin pour lancer mipsel-linux-uclibc-gcc avec le make ?

bon aujourd'hui j'ai un php5 avec les lib qui vont et du coup fastcgi fonctionne, a tester dotclear …demain.

Un peu laborieux le machin, vient une idée: Le but est non pas d'utiliser absolument la fonera, mais d'avoir un système portable,ouvert,libre et tout, qu'on utilisera dans un premier lieu sur la fonera ensuite sur autre chose genre NSLU2 ou autre … Donc il semblerait plus logique de partir d'openwrt pour ajouter les spécificités selon le matériel. Ne pas partir du fonera…GPL mais s'en inspirer pour rester sur une base openwrt et utiliser le programme openwrt scripts/env

D'openwrt vers l'environnement fonerera 2.0n

https://forum.openwrt.org/viewtopic.php?id=9180

  • Nous travaillons a partir d'une ubuntu, avec gcc-4.3.3 venant de karmic
  • tout se lance sous l'utilisateur de base, pas root
  1. make prepare met tout d'aplomb pour commencer
  2. Il y a un répertoire openwrt/target/linux qui contient tout ce qu'il faut pour les fonera dans l'archive 20090921_fonosfera_GPL_tar.bz2, on récupère son contenu dans openwrt/target/linux pour avoir le choix de la fon dans le menuconfig ( make menuconfig )
  3. un autre répertoire fon dans la racine, on le copie dans notre racine aussi
  4. ajout echo “src-link fon ${PWD}/fon” » openwrt/feeds.conf
  5. un dernier répertoire different luci à copier sir on veut garder cette interface utilisateur ?? en principe non ?
  6. recherche des différences dans l'arbre des paquets
    • madwifi/patches semble la plus importante, ajouts.
    • 371-wds_sta_separation.patch
    • 400-changeset_r3402.patch
    • 450-new_hal.patch
    • 500-bssid_incr.patch
    • 500-noderef_test.patch
  7. on choisi de laisser faire les scripts scripts/feeds update et install en concidérant que pour cette plateforme cible(target) fon le fichier openwrt/feeds.conf a été modifié, dans le cas d'une autre cible matérielle , nous aviserons . donc ici option pour feeds= -p fon .
  8.  ./scripts/feeds update -a ; ./scripts/feeds install -a -p fon 
  9. make menuconfig, on choisi fonera 2.0n dans target pour voir
  10. make V=99 pour voir

autre piste : vers une simplification sans cross-compilation

On constate que la fonera est assez rapide, que l'environnement de cross compilation est aussi un environnement de complication…, nécessaire pour de petit processeurs, mais peut être plus pour la fon.

L'idée est d'installer un compilateur,make, autoconfig, etc directement sur la cleUSB sur la fonera.

Ainsi : plus de problème liée à la lourdeur de la cross-compilation, on retrouve une compilation plus simple et directe. tar configure make .

Ce sera un peu plus lent mais le jeu en vaut la chandelle ;-)

1ère constatation : il n'y a pas de paquet gcc. Doit on l'extraire de la chaîne de compilation ? ou le refaire ?

j'ai trouvé le fichier Makefile : https://dev.openwrt.org/browser/packages/devel/gcc/Makefile

On le colle dans le répertoire packages/gcc du SDK pour faire un make V=99

continuation avec la création d'une image système

Revenons au 'classique' outil fonosfera gpl. but: installer et tester un serveur postegres avec dotclear.

  • Modifier busybox pour avoir le su pour un autre utilisateur que root, ce qui est nécéssaire pour le paquet postgres-serveur
  • ou modifier le postgres serveur pour accepter de travailler sous root … Cela prendra moins de place ?

On commence par la première solution. un make menuconfig en cochant dans base/busybox/ su, sudo,adduser,deluser,addgroup,delgroup,shadow passwd et ensuite make V=99 pour générer une image complète. et recuperer busybox dans le repertoire bin/package

d'un coté : scp busybox_1.11.1-1_mipsel.ipk root@192.168.10.1:/opt/tmp

de l'autre :

cd /opt/tmp
opkg install ./busybox_1.11.1-1_mipsel.ipk
opkg install -d usb pgsql-cli pgsql-server
adduser postgres
mkdir -p /opt/postgresql/data
chown postgres /opt/postgresql/data
su - postgres
LC_COLLATE="C" initdb --pwprompt -D /opt/postgresql/data
/etc/init.d/postgresql start
/etc/init.d/postgresql enable

Le serveur postgres fonctionne, mais un top me dit que 3 processus occupent plus de 55% du CPU… a vide … peut être que l'idée de gérer une base de donnée n'est pas bonne :-(

Nous pourrions nous contenter de dokuwiki avec quelques thèmes bien choisis et communiquer sur komposer ou amaya pour des pages statiques ;-)

gnu/totemfon.txt · Dernière modification: 2017/04/11 15:13 (modification externe)