Différences entre les pages « UserModeLinux » et « OpenRésultat »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
 
imported>SylvainBeucler
 
Ligne 1 : Ligne 1 :
== Compilation du noyau utilisateur ==
+
Logiciel de gestion d'élections.
  
C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
+
Documentation de base:
 +
* Configuration initiale: http://adullact.net/docman/view.php/322/683/initialisation_election.pdf (sauter la partie initialisation SQL)
 +
* Quelques détails de configuration pour scrutins municipaux: http://adullact.net/docman/view.php/322/836/liste_municipale.pdf
 +
* Une vidéo de présentation (nécessite Java): http://demo.openmairie.org/openvideo/openresultat_presentation.html
  
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
+
== Déroulement d'une élection avec OpenRésultat ==
tar xjf linux-2.6.17.13.tar.bz2
 
cd linux-2.6.17.13
 
  
make defconfig ARCH=um
+
* Fonctionne pour une et une seule collectivité
make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
+
** La collectivité peut s'étendre sur un ou plusieurs cantons
make ARCH=um
+
** Chaque canton dispose de bureaux de vote rattachés à la collectivité
strip linux
+
* Les élections sont créées au moment où commence l'élection officielle
make modules_install ARCH=um INSTALL_MOD_PATH=uml-modules/
+
** À la création, une copie de la configuration (candidats, bureaux de vote...) est effectuée - plus de changement possible! (Cela est nécessaire pour pouvoir archiver l'élection.)
 +
** On remplit d'une part la participation par tranche horaire
 +
** On remplit d'autre part les résultats du scrutin
 +
*** La première centaine peut être saisie à part pour des premières statistiques
 +
* Pendant la saisie, un module de visualisation affiche les statistiques en cours
 +
** La page web de visualisation est conçue pour être rétro-projetée
  
Cf. [http://user-mode-linux.sourceforge.net/new/source.html Building from source] chez UML.
+
== Élection municipale ==
  
Des options que j'active:
+
== Les champs à saisir ==
* MAGIC_SYSRQ: active l'équivalent de Alt+ImprÉcr, utilisable depuis uml_mconsole
 
* HOST_2G_2G: contourne un problème de certains noyaux hôte (cf. plus bas)
 
* HOSTFS: possibilité de monter des répertoires de la machine hôte - attention à la sécurité)
 
* STATIC_LINK: compiler le noyau en statique (pas de dépendance sur des bibliothèques partagées .so)
 
  
Il y a également des patches à essayer [http://www.user-mode-linux.org/~blaisorblade/patches/]:
+
Une élection:
* hôte/host:
+
* contient des bureaux de votes
** skas3 - meilleures performances (dossier skas3-2.6)
+
** répartis sur des cantons
* invité/guest:
+
* présente des choix de votes ("candidats")
** exec support: permet de lancer des commandes shell avec uml_mconsole (ex: [http://www.user-mode-linux.org/~blaisorblade/patches/guest/uml-2.6.18.1-bb2/broken-out/uml-mconsole-exec.diff])
+
** attachés à un parti
 +
** attachés à un groupe
 +
** les listes municipales ont un age moyen
 +
* a un nombre fixé choix de votes / candidats
 +
* contient des regroupements (pour comparer avec d'autres villes)
  
== Construction du système de base ==
+
=== Ordre de saisie ===
  
On se propose de construire et de lancer un système UML sans aucun accès root.
+
Il faut donc entrer dans l'ordre:
 +
* Nom de la collectivité (Paramétrage -> Collectivité)
 +
* Les cantons (Paramétrage -> Cantons)
 +
* Les bureaux de vote (Paramétrage -> Bureaux de vote)
 +
* Les partis (Paramétrage -> Partis politiques)
 +
* Les groupes (Paramétrage -> Groupes politiques)
 +
* Les listes (Paramétrage -> Candidats)
 +
* L'age moyen des listes (Paramétrage -> Listes municipales) (facultatif)
 +
* Les autre villes ("regroupements") (facultatif)
  
Vraisemblablement, ce n'est pas possible facilement. Cela est dû au manque d'outil en mode utilisateur pour travailler directement sur des systèmes de fichiers ext3.
+
Une fois cela fait, et pas avant, vous pouvez lancer une élection (Configuration -> Config Election)
  
=== Tentative 1 ===
+
== Du point de vue de l'installateur ==
  
Essayons de créer un système complet, sans faire d'image, et en possédant tous les fichiers:
+
=== Installation automatique ===
  
La dernière version de debootstrap propose une variante ''fakechroot'' qui permet de l'utiliser sans accès root:
+
* Version 1.06 + patches 1&2
export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH # pour trouver la commande 'chroot'
+
* Réalisée sous Debian GNU/Linux, version Etch (4.0)
fakechroot /usr/sbin/debootstrap --variant=fakechroot sarge sarge-uml/ http://localhost/mirrors/debian
 
/usr/src/linux-2.6.17.13/linux  root=/dev/root rootflags=/home/sylvain/tests/uml/debian/sarge-uml/ rootfstype=hostfs
 
  
Résultat: cela ne fonctionne pas, à mon avis parce que dans ce cas précis sarge-uml/dev est un lien symbolique vers /dev.
+
<pre>
 +
## Installation des fichiers OpenRésultat
 +
wget http://adullact.net/frs/download.php/2373/openmairie_resultat_1.06.zip
 +
wget http://adullact.net/frs/download.php/2429/patch_1.06-1.zip
 +
wget http://adullact.net/frs/download.php/2436/patch_1.06_2.zip
  
=== Tentative 2 ===
+
unzip openmairie_resultat_1.06.zip
 +
unzip patch_1.06-1.zip
 +
unzip patch_1.06_2.zip
  
Essayons à partir d'une image UML déjà opérationnelle. Le principe est de monter le système de fichier hôte avec ''hostfs'', puis de faire un <code>mount -o loop</code> depuis le UML sur l'image disque à bootstrap-per. Cela permet de monter l'image sans avoir de privilèges super-utilisateur.
+
cp patch_1.06-1/sieges_elu.php openmairie_resultat/trt/sieges_elu.php
 +
cp patch_1.06-1/dbform_saisie.class.php openmairie_resultat/obj/dbform_saisie.class.php
 +
cp patch_1.06-1/var.inc openmairie_resultat/aff/dyn/var.inc
 +
cp patch_1.06-1/mysql/init.sql openmairie_resultat/data/mysql/
 +
cp patch_1.06-1/pgsql/liste.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/liste.form.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/regroupement_en_cours.reqmo.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/regroupement.form.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/saisie_regroupement.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/collectivite.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/collectivite.form.inc openmairie_resultat/sql/pgsql/
 +
cp patch_1.06-1/pgsql/init.sql openmairie_resultat/data/pgsql/
 +
cp patch_1.06-1/pgsql/ver1.06.sql openmairie_resultat/data/pgsql/
  
mount none host/ -t hostfs -o /home/sylvain/tests/uml/debian
+
cp patch_1.06_2/commune.inc openmairie_resultat/sql/pgsql/
cd host/
+
cp patch_1.06_2/commune.form.inc openmairie_resultat/sql/pgsql/
mkdir loop/
 
mount image -o loop loop/
 
ls loop/ # -> bin  boot  dev  etc  ...
 
  
[http://packages.debian.org/unstable/utils/rootstrap rootstrap] fonctionne apparemment sur ce principe.
+
# (ouf)
Je n'ai pas réussi mais je n'ai pas beaucoup cherché.
 
  
=== En mode root ===
 
  
Faute de mieux, utilisons sudo:
+
# Donner des droits d'écriture à Apache pour enregistrer certains fichiers (photos, plans...)
 +
chgrp www-data aff/ trs/ web/ trs/ pdf/
 +
chmod 775 aff/ trs/ web/ trs/ pdf/
  
mkdir loop/
 
# image de 1Go, à trous (espace disque progressif)
 
dd if=/dev/null of=image count=0 bs=1G seek=1
 
# on formatte en ext3
 
/sbin/mkfs.ext3 -F image
 
 
sudo mount image loop/ -o loop
 
sudo debootstrap sarge loop/ http://192.168.1.60/mirrors/debian
 
 
# configuration de la console:
 
sudo grep -v tty loop/etc/inittab > inittab.work
 
sudo echo "1:2345:respawn:/sbin/getty 38400 console linux" >> inittab.work
 
sudo mv inittab.work loop/etc/inittab
 
 
# configuration réseau:
 
cat <<'EOF' > interfaces.work
 
auto lo
 
iface lo inet loopback
 
EOF
 
sudo mv interfaces.work loop/etc/network/interfaces
 
 
# fake mtab and fstab
 
cat <<'EOF' > fstab.work
 
proc            /proc          proc    defaults        0 0
 
/dev/ubda      /              auto    defaults,errors=remount-ro 0 1
 
EOF
 
sudo mv fstab.work loop/etc/fstab
 
 
sudo umount loop/
 
 
=== Optimiser la taille de l'image pour la distribuer ===
 
 
Une image UML contient souvent des zones vides, où il n'y a pas encore de fichiers.
 
 
L'image ci-dessus réserve 1Go mais n'en occupe que 230Mo grâce à la création d'image "à trous" (''sparse'' en anglais).
 
 
$ ls -lh image
 
-rw-r--r--  1 sylvain sylvain 1,0G 2006-09-18 15:55 image
 
$ du -sh image
 
234M    image
 
 
D'autres méthodes (dd sur /dev/zero par exemple) n'en tiennent pas compte.
 
  
<code>df -h</code> dans UML indique une utilisation de 178Mo, donc on doit pouvoir encore améliorer (comment?). Éviter <code>e2defrag</code>, qui est obsolète et corrompt les systèmes de fichier. Piste: copier les fichiers dans une nouvelle image et supprimer l'ancienne - défragmentation à la volée; inconvénient: les secteurs d'amorçages dont perdus (si vous les utilisez avec qemu, sinon aucune importance).
+
## Dépendences
 +
aptitude install php-db
 +
# Installe le paquet Debian php-fpdf, en forçant php5 (et non pas php4):
 +
aptitude install php5 php-fpdf
  
 +
mkdir /var/www/libs
 +
pushd /var/www/libs
  
Pour optimiser une image "pleine":
+
# OpenMairie:
cp --sparse=always image image.sparse
+
wget http://adullact.net/frs/download.php/2369/openmairie_1.19.zip
 +
unzip openmairie_1.19.zip
 +
ln -s openmairie_1.19 openmairie
  
Pour envoyer une image par le réseau en respectant les trous:
+
# Artichow:
tar cSf image.tar image # S pour "sparse"
+
wget http://www.artichow.org/data/Artichow-1.1.0-php4+5.tar.gz
 +
tar xzf Artichow-1.1.0-php4+5.tar.gz
 +
# TODO: patch Artichow comme expliqué dans la doc OpenRésultat
 +
ln -s Artichow-php4+5 artichow
 +
popd
  
== Réseau ==
+
# Dire à PHP où les trouver:
 +
cat <<EOF > /etc/php5/conf.d/openresultat.ini
 +
include_path = ".:/usr/share/php:/var/www/libs/openmairie:/usr/share/php/fpdf:/var/www/libs/artichow"
 +
EOF
  
Imaginez un câble virtuel qui relie la machine hôte et la machine UML, une carte carte réseau virtuelle à chaque bout. Chaque carte a une adresse IP, mais comme sur un réseau classique, les deux cartes ne doivent pas avoir la même adresse.
 
  
=== Mode root avec tuntap ===
+
## Base de données
 +
mysqladmin create openresultat
 +
mysql openresultat < data/mysql/init.sql
 +
# Each entry in '$conn' will be shown in the frontpage
 +
pass=`pwgen -s1`
 +
mysql -e "GRANT ALL PRIVILEGES ON openresultat.* TO 'openresultat' IDENTIFIED BY '$pass';"
 +
cat <<'EOF' > dyn/base.php
 +
<?php
 +
$conn[1] = array (  'OpenResultat sur MySQL', // Titre sur la page index.php
 +
                    'mysql', // Phptype
 +
                    '', // Dbsyntax
 +
                    'openresultat', // Utilisateur
 +
                    'CHANGETHEPASSWORD', // Mot de passe
 +
                    '', // Protocole
 +
                    'localhost', // Hote
 +
                    '', // Port
 +
                    '', // Socket
 +
                    'openresultat', // Nom de la base de données
 +
                    'AAAA-MM-JJ' // Format date de la base
 +
                );
 +
EOF
 +
sed -i -e "s/CHANGETHEPASSWORD/$pass/" dyn/base.php
 +
</pre>
  
  host# sudo /usr/src/linux ubda=sarge-debootstrap eth0=tuntap,,,192.168.1.101
+
Apache config (forcer l'encodage latin-1):
 +
<VirtualHost ...>
 +
  AddDefaultCharset ISO-8859-1
 +
  ...
 +
  </VirtualHost ...>
  
Notez les messages d'UML indiquant la mise en place d'une interface tuntap <code>tap0</code>, une route pour accéder à la machine virtuelle, et un partage de connexion pour que la machine virtuelle puisse accéder au réseau extérieur.
+
=== Notes sur la version CVS ===
  
Puis dans UML:
+
La version CVS ne contient pas les patches patch_1.06-1.zip et
 +
patch_1.06-2.zip mais contient également d'autres modifications plus
 +
récentes.
  
  uml# ifconfig eth0 192.168.1.201
+
  cvs -d:pserver:anonymous@cvs.adullact.net:/cvsroot/openresultat co openmairie_resultat
 
   
 
   
=== Mode semi-root avec tuntap ===
+
Pour faire un diff avec la version CVS (c'est à dire convertir la version en téléchargement en copie de travail CVS à peu près correcte):
 
+
  find -name "Root" | while read file; do echo ":pserver:anonymous@cvs.adullact.net:/cvsroot/openresultat" > $file; done
Pour utiliser tuntap, il faut créer à l'avance (et en mode root) une interface tap0 et lui assigner une adresse IP.
+
  find -name "Repository" | xargs dos2unix
 
+
  find -name "*.php" -o -name "*.inc" -o -name "*.css" -o -name "*.sql" -o -name "*.html" -o -name "*.js" | xargs dos2unix
  # tunctl -u sylvain
 
  Set 'tap0' persistent and owned by uid 1000
 
 
 
Puis il faut donner des droits aux utilisateurs non-privilégiés d'utiliser tuntap (en mode root aussi):
 
 
 
  chmod 666 /dev/net/tun
 
 
 
ou bien ajouter l'utilisateur au groupe "uml-net" (uniquement sous Debian?)
 
  
$ sudo adduser sylvain uml-net
 
Adding user `sylvain' to group `uml-net' ...
 
Done.
 
 
C'est une solution efficace mais qui nécessite plusieurs étapes de préconfiguration en mode root.
 
 
Pour accéder au réseau ''et'' en être accessible, configuration manuelle (cf. uml_net pour l'automatisation):
 
# Côté invité:
 
ifconfig eth0 192.168.1.200
 
# Même config routeur que l'hôte:
 
route add default 192.168.1.1 eth0
 
# Même config DNS que l'hôte:
 
echo "nameserver 192.168.1.1" > /etc/resolv.conf
 
 
# Côté hôte:
 
/sbin/ifconfig tap0 192.168.1.150 netmask 255.255.255.255
 
# Autoriser le routage des paquets
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# Exception: cette adresse ne passe pas par eth0:
 
route add -host 192.168.1.200 dev tap0
 
 
# Pour être visible du réseau, il faut annoncer cette IP sur la carte physique:
 
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp
 
arp -Ds 192.168.1.200 eth0 pub
 
 
# Au moment de partir, on enlève l'annonce ARP:
 
arp -d 192.168.1.200 dev eth0
 
 
Cela ne fonctionne que si l'on utilise le même réseau que l'hôte. Dans le cas contraire (ex: 172.20.0.0/16), il faudrait ajouter des routes sur toutes les machines du réseau physique pour savoir comment accéder à ce réseau différent (ou alors utiliser l'hôte comme routeur et (D)NATer le traffic).
 
 
Autre solution similaire: avec un pont (bridge).
 
brctl addbr br0
 
ifconfig eth0 0.0.0.0 promisc
 
brctl addif br0 eth0
 
dhclient br0
 
 
tunctl -u sylvain
 
brctl addif br0 tap0
 
# invité: ifconfig eth0 192.168.1.200
 
 
Le pont se chargera d'écouter les paquets sur le réseau à destination de l'adresse du tap0 côté invité, et de les lui envoyer (pas besoin de <code>ip_forward</code>, ni de <code>arp</code>, ni d'une route spéciale pour contacter l'invité, ni d'une IP côté hôte pour tap0). Un inconvénient: la reconfiguration du réseau de la machine hôte. Le super-avantage étant de pouvoir configurer l'invité via le DHCP du réseau physique!
 
 
=== Mode semi-root avec tuntap (2) ===
 
 
Mettre l'utilisateur concerné dans le groupe <code>uml-net</code>. Ce groupe a accès au programme setuid <code>/usr/lib/uml/uml_net</code>, qui peut lancer et configurer des interfaces tuntap. La sécurité du procédé n'est pas grande (l'utilisateur peut créer de nouvelles interfaces réseau et perturber iptables par exemple), mais est facile à mettre en place.
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=tuntap,,,10.10.10.10
 
uml# ifconfig eth0 10.10.10.11
 
uml# route add default gw 10.10.10.10
 
 
Note: la configuration automatique côté hôte nécessite [http://packages.debian.org/unstable/otherosfs/uml-utilities uml_net] (partage de connexion, route vers la machine UML...).
 
 
=== Mode utilisateur avec slirp ===
 
 
Lancer UML avec une interface slirp, en utilisant le binaire 'fullbolt' (qui s'affranchit de la limitation débit de 10ko/s dans slirp 'classique'):
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=slirp,,/usr/bin/slirp-fullbolt
 
 
Dans UML, quelques étapes spécifiques à slirp sont nécessaires:
 
 
# Configurer l'interface sur 10.2.0.15 (IP de choix pour slirp d'après la doc?)
 
ifconfig eth0 10.2.0.15
 
# Utiliser la redirection DNS 10.0.2.3
 
echo "nameserver 10.0.2.3" > /etc/resolv.conf
 
# Ajouter une route par défaut vers eth0:
 
route add default dev eth0
 
 
Note: <code>ping</code> ne fonctionne pas, car il nécessite un accès root (sur l'hôte, ping est d'ailleurs souvent setuid).
 
 
Note 2: dans QEMU, l'IP assignée est 10.0.2.15. Le DNS est également 10.0.2.3. La configuration se fait automatiquement via un serveur DHCP intégré.
 
 
* Cf. [http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html#ss6.11 Slirp] dans le UML HOWTO.
 
 
=== /etc/network/interfaces ===
 
 
Voici comment configurer automatiquement le réseau au démarrage d'UML, dans son fichier <code>interfaces</code>:
 
 
auto lo
 
iface lo inet loopback
 
 
auto eth0
 
iface eth0 inet static
 
 
# eth0=tuntap,,,10.10.10.1
 
#  address 10.10.10.10
 
#  netmask 255.0.0.0
 
#  gateway 10.10.10.1
 
 
# eth0=slirp,,/usr/bin/slirp-fullbolt
 
  address 10.2.0.15
 
  netmask 255.0.0.0
 
  dns-nameservers 10.0.2.3
 
  up route add default eth0
 
 
(dns-nameservers nécessite le paquet ''resolvconf'')
 
 
Autre solution pour gérer automatiquement les DNS: installez un serveur DNS dans l'UML, et évitez ainsi de vous faire suer à déterminer ceux de l'hôte. In-dé-pen-dan-ce ;) À moins que vous n'ayez besoin du serveur DNS de votre réseau interne.
 
 
== Lancer un UML en tâche fond ==
 
 
./linux ubda=... con=null &
 
 
 
== Versions ==
 
 
La version officielle est vraisemblablement celle intégrée au noyau kernel.org.
 
 
Aucune version de développement n'est vraisemblablement accessible.
 
 
La version kernel.org ne compile pas nécessairement ([http://www.gossamer-threads.com/lists/linux/kernel/706384 ex.]).
 
 
Jeff Dyke publie de temps à autre un combo précompilé noyau + image FC5 sur la page d'accueil du site.
 
 
=== Patches ===
 
 
Cf. http://www.user-mode-linux.org/~blaisorblade/
 
 
Clarifions un peu:
 
* skas3+sysemu: patch pour le noyau hôte pour gagner en rapidité,
 
* -bb: patch pour le noyau invité, fonctionnalités supplémentaires en test. À utiliser en bloc, ou en choissant une fonctionnalité en particulier parmi un jeu de patches séparés (''splitout''/''broken-out''). Il y a un jeu de patches correspondants pour les uml-utilities.
 
 
C'est un peu confus sur le site, mais c'est tout.
 
  
 
== Liens ==
 
== Liens ==
  
* [http://user-mode-linux.sourceforge.net/new/ The User-mode Linux Kernel Home Page]: lien direct vers la nouvelle version du site - on s'y retrouve mieux
+
* [http://www.openmairie.org/demonstration/openresultat Présentation sur openMairie]
* [http://eggdrop.ch/texts/uml/ Running Debian inside of Debian with User-Mode Linux]
+
* [http://adullact.net/projects/openresultat/ Page projet]
* [http://www.metz.supelec.fr/metz/personnel/galtier/PagesPerso/TutorielUML/index.html Tutoriel User Mode Linux]: avec introduction à SKAS et réseau
+
* [http://www.openmairie.org/demonstration/openresultat Documentation officielle]
* [http://www.phptr.com/bookstore/product.asp?isbn=0131865056&rl=1 Livre] [http://www.eyrolles.com/Informatique/Livre/9780131865051/livre-user-mode-linux.php officiel]: écrit par l'auteur, ce livre est sous licence 'Open Publication' et n'en utilise visiblement aucune des options non-libres. C'est donc un livre libre que l'on peut recommander d'acheter :) La page de présentation indique que les livres de la série "Bruce Perens' Open Source" sont tous sous cette licence et sont publiés au format électronique au bout de 6 mois (il y a retard ici, et l'auteur, contacté via IRC, n'était vraisemblablement pas au courant du caractère libre de la publication - à suivre. Le contenu reste libre quoi qu'il en soit.). J'ai personnellement récupéré un exemplaire au format .chm mais je ne connais pas son origine - je l'ai acheté au format papier aussi. Le livre couvre le réseau, les applications, semble une bonne référence. Il risque cependant de devenir obsolète rapidement. J'ai demandé à l'auteur s'il comptait mettre le livre en ligne par la suite, pour une mise à jour continue: il n'y a pas encore réfléchi.
+
* [http://adullact.net/docman/index.php?group_id=322&selected_doc_group_id=502&language_id=1 Autre page de documentation officielle] (sur la forge)
* [http://testape.com/webtty_sample.php WebTTY]: lancez une instance UML sur le serveur distant et tapez du Bash intéractivement dans un navigateur web :)
 
* [http://linuxfr.org/2006/08/20/21216.html ShaKe, un défragmenteur pour GNU/Linux] + liens
 
* [[Émulation]] sur doc.cliss21.com
 
* Réseau virtuel
 
** [http://jungla.dit.upm.es/~vnuml/ VNUML]: Virtual Network User Mode Linux, simulation de réseaux complexes
 
** [http://puzzle.dl.sourceforge.net/sourceforge/vnuml/vnuml-livecd-1.0.iso VIMINAL]: Live-CD alternatif pour VNUML ([http://sourceforge.net/project/showfiles.php?group_id=113582&package_id=203946 download])
 
** [http://www.strongswan.org/uml/index.htm strongSwan - UML testing]: tests de non-regression de strongSwan avec un réseau virtuel d'UML.
 
** [http://www.freeswan.org/freeswan_snaps/CURRENT-SNAP/doc/umltesting.html FreeS/WAN User-Mode-Linux Testing guide]: même chose chez FreeS/WAN (projet abandonné), donc plus ancien (noyau 2.4...). Qu'est-ce que uml_netjig??
 
** [http://www.samag.com/documents/s=8997/sam0401a/0401a.htm Emulating Networks Using User-Mode Linux]: mise en place de IPSec sur une configuration (A<->Routeur)<->Hôte<->(Routeur<->B).
 
* UML-Utilities: pour changer, le lien est [http://user-mode-linux.sourceforge.net/new/minis.html#utils perdu] au milieu du site. Lien direct: http://user-mode-linux.sourceforge.net/new/uml_utilities_20060622.tar.bz2
 
 
 
== Dépannage ==
 
 
 
Kernel panic - not syncing: start_userspace : expected SIGSTOP, got status = 256
 
 
 
Cf. http://www.mail-archive.com/user-mode-linux-devel@lists.sourceforge.net/msg03414.html
 
 
 
Votre noyau (hôte) est, si j'ai bien compris, mal configuré. Recompilez-le ou utilisez-en un autre.
 
 
 
Vous pouvez également activer CONFIG_HOST_2G_2G dans la configuration du noyau UM.
 

Version du 3 mars 2008 à 11:36

Logiciel de gestion d'élections.

Documentation de base:

Déroulement d'une élection avec OpenRésultat

  • Fonctionne pour une et une seule collectivité
    • La collectivité peut s'étendre sur un ou plusieurs cantons
    • Chaque canton dispose de bureaux de vote rattachés à la collectivité
  • Les élections sont créées au moment où commence l'élection officielle
    • À la création, une copie de la configuration (candidats, bureaux de vote...) est effectuée - plus de changement possible! (Cela est nécessaire pour pouvoir archiver l'élection.)
    • On remplit d'une part la participation par tranche horaire
    • On remplit d'autre part les résultats du scrutin
      • La première centaine peut être saisie à part pour des premières statistiques
  • Pendant la saisie, un module de visualisation affiche les statistiques en cours
    • La page web de visualisation est conçue pour être rétro-projetée

Élection municipale

Les champs à saisir

Une élection:

  • contient des bureaux de votes
    • répartis sur des cantons
  • présente des choix de votes ("candidats")
    • attachés à un parti
    • attachés à un groupe
    • les listes municipales ont un age moyen
  • a un nombre fixé choix de votes / candidats
  • contient des regroupements (pour comparer avec d'autres villes)

Ordre de saisie

Il faut donc entrer dans l'ordre:

  • Nom de la collectivité (Paramétrage -> Collectivité)
  • Les cantons (Paramétrage -> Cantons)
  • Les bureaux de vote (Paramétrage -> Bureaux de vote)
  • Les partis (Paramétrage -> Partis politiques)
  • Les groupes (Paramétrage -> Groupes politiques)
  • Les listes (Paramétrage -> Candidats)
  • L'age moyen des listes (Paramétrage -> Listes municipales) (facultatif)
  • Les autre villes ("regroupements") (facultatif)

Une fois cela fait, et pas avant, vous pouvez lancer une élection (Configuration -> Config Election)

Du point de vue de l'installateur

Installation automatique

  • Version 1.06 + patches 1&2
  • Réalisée sous Debian GNU/Linux, version Etch (4.0)
## Installation des fichiers OpenRésultat
wget http://adullact.net/frs/download.php/2373/openmairie_resultat_1.06.zip
wget http://adullact.net/frs/download.php/2429/patch_1.06-1.zip
wget http://adullact.net/frs/download.php/2436/patch_1.06_2.zip

unzip openmairie_resultat_1.06.zip
unzip patch_1.06-1.zip
unzip patch_1.06_2.zip

cp patch_1.06-1/sieges_elu.php openmairie_resultat/trt/sieges_elu.php
cp patch_1.06-1/dbform_saisie.class.php openmairie_resultat/obj/dbform_saisie.class.php
cp patch_1.06-1/var.inc openmairie_resultat/aff/dyn/var.inc
cp patch_1.06-1/mysql/init.sql openmairie_resultat/data/mysql/
cp patch_1.06-1/pgsql/liste.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/liste.form.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/regroupement_en_cours.reqmo.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/regroupement.form.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/saisie_regroupement.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/collectivite.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/collectivite.form.inc openmairie_resultat/sql/pgsql/
cp patch_1.06-1/pgsql/init.sql openmairie_resultat/data/pgsql/
cp patch_1.06-1/pgsql/ver1.06.sql openmairie_resultat/data/pgsql/

cp patch_1.06_2/commune.inc openmairie_resultat/sql/pgsql/
cp patch_1.06_2/commune.form.inc openmairie_resultat/sql/pgsql/

# (ouf)


# Donner des droits d'écriture à Apache pour enregistrer certains fichiers (photos, plans...)
chgrp www-data aff/ trs/ web/ trs/ pdf/
chmod 775 aff/ trs/ web/ trs/ pdf/


## Dépendences
aptitude install php-db
# Installe le paquet Debian php-fpdf, en forçant php5 (et non pas php4):
aptitude install php5 php-fpdf

mkdir /var/www/libs
pushd /var/www/libs

# OpenMairie:
wget http://adullact.net/frs/download.php/2369/openmairie_1.19.zip
unzip openmairie_1.19.zip
ln -s openmairie_1.19 openmairie

# Artichow:
wget http://www.artichow.org/data/Artichow-1.1.0-php4+5.tar.gz
tar xzf Artichow-1.1.0-php4+5.tar.gz
# TODO: patch Artichow comme expliqué dans la doc OpenRésultat
ln -s Artichow-php4+5 artichow
popd

# Dire à PHP où les trouver:
cat <<EOF > /etc/php5/conf.d/openresultat.ini
include_path = ".:/usr/share/php:/var/www/libs/openmairie:/usr/share/php/fpdf:/var/www/libs/artichow"
EOF


## Base de données
mysqladmin create openresultat
mysql openresultat < data/mysql/init.sql
# Each entry in '$conn' will be shown in the frontpage
pass=`pwgen -s1`
mysql -e "GRANT ALL PRIVILEGES ON openresultat.* TO 'openresultat' IDENTIFIED BY '$pass';"
cat <<'EOF' > dyn/base.php
<?php
$conn[1] = array (  'OpenResultat sur MySQL', // Titre sur la page index.php
                    'mysql', // Phptype
                    '', // Dbsyntax
                    'openresultat', // Utilisateur
                    'CHANGETHEPASSWORD', // Mot de passe
                    '', // Protocole
                    'localhost', // Hote
                    '', // Port
                    '', // Socket
                    'openresultat', // Nom de la base de données
                    'AAAA-MM-JJ' // Format date de la base
                 );
EOF
sed -i -e "s/CHANGETHEPASSWORD/$pass/" dyn/base.php

Apache config (forcer l'encodage latin-1):

<VirtualHost ...>
  AddDefaultCharset ISO-8859-1
  ...
</VirtualHost ...>

Notes sur la version CVS

La version CVS ne contient pas les patches patch_1.06-1.zip et patch_1.06-2.zip mais contient également d'autres modifications plus récentes.

cvs -d:pserver:anonymous@cvs.adullact.net:/cvsroot/openresultat co openmairie_resultat

Pour faire un diff avec la version CVS (c'est à dire convertir la version en téléchargement en copie de travail CVS à peu près correcte):

find -name "Root" | while read file; do echo ":pserver:anonymous@cvs.adullact.net:/cvsroot/openresultat" > $file; done
find -name "Repository" | xargs dos2unix
find -name "*.php" -o -name "*.inc" -o -name "*.css" -o -name "*.sql" -o -name "*.html" -o -name "*.js" | xargs dos2unix


Liens