10 July 2017

Frédéric Lietart

Nextcloud + Cloud Public Object Storage d’OVH

Je cherchais un moyen de sécuriser un minimum mes donnes hébergées par mon instance Nextcloud. Je me suis donc tourné vers le Cloud Public Object Storage d’OVH. Nous allons voir la mise en place de cet espace en tant qu’espace principal. J’utilise pour cela un serveur XC 2016 hébergé chez Online.net fonctionnant sous Debian Jessie (mais toute bonne instance Nextcloud doit fonctionner sans problème).

Voici ce que nous propose OVH :

  • 0,01 € HT/mois/Go
  • Triple réplication des données
  • Trafic entrant gratuit
  • Trafic sortant : 0,01 € HT/Go
  • Powered by OpenStack
  • Durabilité de vos données 100%

OVH propre d’ailleurs un petit tutoriel pour mettre en place leur solution en tant que stockage externe, mais en stockage principal c’est quand même bien mieux 🙂

Nous partons donc d’une instance Nextcloud vierge configurée avec une base MySQL et un compte administrateur. La création chez OVH du conteneur privé est un jeux d’enfant (après avoir accepté les conditions d’utilisations et donné un nom à sa première instance Cloud). Une fois créé il vous faudra créer un utilisateur et surtout retenir le mot de passe généré pour avoir accès au conteneur pour enfin télécharger le fichier de configuration d’Openstack.

Si on résume cela nous donne :

  • une instance Nextcloud toute propre
  • un conteneur privé Object Storage (Espace client OVH > Cloud > Stockage > Créer un conteneur)
  • un utilisateur pour l’accès au stockage (Espace client OVH > Cloud > Stockage > Openstack > Ajouter un utilisateur)
  • un fichier de configuration Openstack ou OpenRC (Espace client OVH > Cloud > Stockage > Openstack > sur la clé à droite)

Configuration de Nextcloud

Il nous faut maintenant éditer notre fichier de configuration (Nextcloud > config > config.php)

'objectstore' => array(
    'class' => 'OC\\Files\\ObjectStore\\Swift',
    'arguments' => array(
        'username' => 'OS_USERNAME',
        'password' => 'OS_PASSWORD', // mot de passe généré dans l'interface OVH
        'bucket' => 'CONTAINER_NAME',
        'autocreate' => false,
        'region' => 'GRA3',
        'url' => 'https://auth.cloud.ovh.net/v2.0',
        'tenantName' => 'OS_TENANT_NAME',
        'serviceName' => 'swift',
    ),
),

Vous trouverez toutes les informations dans le fichier de configuration Openstack ou OpenRC (Espace client OVH > Cloud > Stockage > Openstack > sur la clé à droite) hormis le mot de passe qui a été généré lors de l’ajout de l’utilisateur.

Si la configuration est bonne, vous devriez avoir accès à votre instance Nextcloud. Commencez à charger des documents et vous devriez voir augmenter l’espace occupé dans votre conteneur (Espace client OVH > Cloud > Stockage) ainsi que votre estimation de facturation 😉

 

 

 

Cet article Nextcloud + Cloud Public Object Storage d’OVH est apparu en premier sur TiFredFr.

10 July, 2017 08:03PM par Frédéric LIÉTART

03 July 2017

Vincent Bernat

Progression des performances de la table de routage IPv4 sous Linux

En bref : Linux 2.6.39, 3.6 et 4.0 apportent un progrès notable sur les performances de la table de routage IPv4.


Dans un précédent article, j’expliquais comment Linux stockait les routes dans un arbre compressé pour obtenir d’excellents résultats sur les temps de recherche. Le graphique suivant montre la progression des performances à travers les époques :

Performance de la table de routage IPv4

Deux scénarios sont testés :

  • 500 000 routes extraites d’un routeur Internet (la moitié étant des /24)
  • 500 000 routes /32 réparties consécutivement dans 4 sous-réseaux distincts

Tous les noyaux sont compilés avec GCC 4.9 (issu de Debian Jessie). Cette version est compatible avec des noyaux antiques1 ainsi qu’avec les noyaux les plus récents. La configuration du noyau utilisée est celle par défaut avec les options CONFIG_SMP et CONFIG_IP_MULTIPLE_TABLES activées (sans toutefois utiliser de règles de routage). D’autres options mineures sont activées pour permettre de prendre les mesures.

Le banc d’essai se déroule dans une machine virtuelle utilisant un seul vCPU2. Le CPU hôte est un Intel Core i5-4670K et le gouverneur CPU est configuré en mode « performance ». Les mesures sont faites par un module noyau appelant la fonction fib_lookup() en boucle en variant les destinations. Le chronométrage de chacune des 100 000 itérations est effectuée par la TSC et convertie en nanosecondes en se basant sur une fréquence d’horloge arbitraire. La valeur médiane est retenue.

Quelques noyaux apportent un progrès notable :

  • Avec Linux 2.6.39, commit 3630b7c050d9, David Miller retire l’implémentation basée sur des tables de hachage pour utiliser des arbres compressés (disponible sous forme d’option à la compilation depuis Linux 2.6.13). Cela provoque une légère régression dans le cas des routes en /32 mais améliore grandement les performances dans le cas général.

  • Avec Linux 3.0, commit 281dc5c5ec0f, l’amélioration n’est pas liée à un changement dans le sous-système réseau. Linus Torvalds a désactivé l’optimisation en taille qui était utilisée par défaut. Cette option devait permettre de rendre le cache des instructions plus efficace mais les compilateurs généraient cependant un code plus lent sur x86.

  • Avec Linux 3.6, commit f4530fa574df, David Miller ajoute une optimisation destinée à ne plus évaluer les règles de routage quand elles n’ont pas été modifiées. À partir de cette version, l’option CONFIG_IP_MULTIPLE_TABLES ne dégrade plus les performances à moins de configurer explicitement des règles de routage. Cette version retire également le cache des routes (commit 5e9965c15ba8). Toutefois, cela n’a pas d’effet sur les mesures car l’appel direct à fib_lookup() contourne ce cache.

  • Avec Linux 4.0, notamment le commit 9f9e636d4f89, Alexander Duyck réorganise l’algorithme de recherche des routes pour en augmenter les performances. Le résultat est probant !

  • Avec Linux 4.1, commit 0ddcf43d5d4a, Alexander Duyck fusionne les tables local et main quand aucune règle de routage n’est utilisée. Pour le trafic non local, ces deux tables étaient successivement consultées.


  1. Certains anciens noyaux ne compilent plus avec les outils actuels à moins d’appliquer de petits correctifs

  2. Les noyaux sont toutefois compilés avec l’option CONFIG_SMP pour activer le mécanisme RCU hiérarchique afin de suivre des chemins de code similaires aux routeurs multi-cœurs. Toutefois, tout progrès sur le parallélisme passe inaperçu. 

03 July, 2017 01:25PM par Vincent Bernat

21 June 2017

Vincent Bernat

Fonctionnement de la table de routage IPv4 sous Linux

En bref : Avec une implémentation des tables de routage IPv4 utilisant les tries « LPC », Linux offre de bonnes performances pour la recherche de routes (50 ns pour une vue complète d’Internet). L’utilisation mémoire est de plus très modérée (64 MiB de mémoire suffisent pour 500 000 routes).


Une étape importante du voyage d’un datagramme IPv4 à l’intérieur du noyau Linux est la recherche de la route à utiliser via la fonction fib_lookup(). À partir des informations essentielles concernant le datagramme (addresses IP source et destination, interfaces, …), cette fonction doit fournir rapidement une décision. Quelques unes des options possibles sont :

  • livraison locale (RTN_LOCAL),
  • routage via un intermédiaire fourni (RTN_UNICAST),
  • destruction sans notification (RTN_BLACKHOLE).

Depuis la version 2.6.39, Linux stocke les routes dans un arbre préfixe compressé (commit 3630b7c050d9). Auparavant, un cache des routes était maintenu mais celui-ci a été retiré1 de Linux 3.6.

Recherche d’une route dans un trie

Rechercher une route dans une table de routage revient à trouver le préfixe le plus spécifique correspondant à la destination. Considérons par exemple la table de routage suivante :

$ ip route show scope global table 100
default via 203.0.113.5 dev out2
192.0.2.0/25
        nexthop via 203.0.113.7  dev out3 weight 1
        nexthop via 203.0.113.9  dev out4 weight 1
192.0.2.47 via 203.0.113.3 dev out1
192.0.2.48 via 203.0.113.3 dev out1
192.0.2.49 via 203.0.113.3 dev out1
192.0.2.50 via 203.0.113.3 dev out1

Voici quelques exemples de recherches et les décisions associées :

IP destination Prochain saut
192.0.2.49 203.0.113.3 via out1
192.0.2.50 203.0.113.3 via out1
192.0.2.51 203.0.113.7 via out3 or 203.0.113.9 via out4 (ECMP)
192.0.2.200 203.0.113.5 via out2

Une structure très courante pour rechercher une route est le trie, une structure de recherche en arbre où chaque nœud a son père pour préfixe.

Recherche dans un trie simple

Le trie suivant encode la table de routage exposée ci-dessus :

Simple routing trie

À tout moment, la longueur du préfixe correspond à la profondeur actuelle et le préfixe lui-même correspond au chemin depuis la racine.

Une recherche dans un tel trie est simple. À chaque étape, récupérer le nème bit de l’adresse IPn est la profondeur actuelle dans le trie. Si celui-ci est 0, continuer avec le fils de gauche. Sinon, continuer avec celui de droite. Si un fils est manquant, remonter dans l’arbre jusqu’à trouver une entrée de routage. Par exemple, pour 192.0.2.50, le parcours de l’arbre se termine sur la feuille correspondante. Par contre, pour 192.0.2.50, lorsque le nœud 192.0.2.50/31 est atteint, il n’y a pas de fils à droite. On remonte donc l’arbre jusqu’à trouver l’entrée 192.0.2.0/25.

Ajouter ou retirer des routes est trivial. Du point de vue de la performance, la profondeur étant bornée par 32, la recherche se fait en temps constant par rapport au nombre de routes.

Quagga est un exemple de logiciel de routage utilisant toujours cette approche.

Recherche dans un trie compressé

Dans l’exemple précédent, la plupart des nœuds n’ont qu’un seul fils. Cela entraîne beaucoup de comparaisons bit à bit ainsi qu’un usage sous-optimal de la mémoire. Pour résoudre ce problème, il est possible de compresser les chemins : chaque nœud ayant un fils unique (et n’hébergeant par une entrée de routage) est supprimé. Les nœuds restants gagnent une propriété supplémentaire indiquant le nombre de bits en entrée qui doivent être ignorés. Un tel trie est aussi connu sous le nom d’arbre Patricia ou d’arbre radix. Voici la version avec des chemins compressés du trie précédent :

Arbre Patricia

Parce que certains bits ont été ignorés, une vérification finale est nécessaire pour s’assurer que l’entrée trouvée correspond à l’IP recherchée. Dans le cas contraire, on considère que l’entrée n’a pas été trouvée et on remonte l’arbre pour trouver une route adéquate. La figure ci-dessous montre deux adresses IP qui aboutissent à la même feuille :

Recherche dans un arbre Patricia

La réduction de la profondeur du trie compense la complexité supplémentaire résultant de la nécessité de gérer les faux positifs. L’insertion et la suppression de routes restent relativement aisées.

De nombreux systèmes de routage utilisent des arbres Patricia :

Recherche dans un trie doublement compressé

En plus de la compression le long des chemins, il est possible de compresser certains sous-arbres2. Cela consiste à détecter les sous-arbres densément peuplés et de les remplacer par un unique nœud contenant un vecteur de 2k fils. Ce nœud consomme donc k bits en entrée au lieu d’un seul. Par exemple, voici une version doublement compressée de notre trie précédent :

Trie doublement compressé

Un tel trie est appelé trie LC (level compressed trie) ou trie LPC (level and path compressed trie). Il offre des performances plus élevées par rapport à un arbre radix.

Une heuristique est utilisée pour décider combien de bits un nœud doit traiter. Linux considère que si le ratio du nombre de fils non vides sur le nombre total de fils est supérieur à 50% quand le nœud traite un bit supplémentaire, alors le bit en question est alloué au nœud. Par contre, si le ratio est actuellement inférieur à 25%, le nœud perd la responsabilité d’un bit. Ces valeurs ne sont pas configurables.

L’insertion et la suppression d’une route devient une tâche beaucoup plus complexe mais la temps de recherche est également sensiblement réduit.

Implémentation sous Linux

L’implémentation pour IPv4 existe depuis Linux 2.6.13 (commit 19baf839ff4a) et est utilisée par défaut depuis la version 2.6.39 (commit 3630b7c050d9).

Voici la représentation en mémoire de notre table de routage3 :

Représentation en mémoire d'un trie

Plusieurs structures sont utilisées :

  • struct fib_table représente une table de routage,
  • struct trie représente un trie,
  • struct key_vector représente un nœud interne (quand bits est différent de 0) ou une feuille,
  • struct fib_info contient des attributs partagés par plusieurs routes (comme l’adresse du prochain saut ou l’interface de sortie),
  • struct fib_alias assure le lien entre les feuilles et les structures fib_info.

Le trie peut etre visualisé à travers /proc/net/fib_trie:

$ cat /proc/net/fib_trie
Id 100:
  +-- 0.0.0.0/0 2 0 2
     |-- 0.0.0.0
        /0 universe UNICAST
     +-- 192.0.2.0/26 2 0 1
        |-- 192.0.2.0
           /25 universe UNICAST
        |-- 192.0.2.47
           /32 universe UNICAST
        +-- 192.0.2.48/30 2 0 1
           |-- 192.0.2.48
              /32 universe UNICAST
           |-- 192.0.2.49
              /32 universe UNICAST
           |-- 192.0.2.50
              /32 universe UNICAST
[...]

Pour les nœuds internes, les trois nombres suivant le préfixe sont :

  1. le nombre de bits consommés par ce nœud,
  2. le nombre de fils qui ne gèrent qu’un seul bit,
  3. le nombre de fils vides.

De plus, si le noyau a été configuré avec l’option CONFIG_IP_FIB_TRIE_STATS, des statistiques sur la structure sont disponibles dans /proc/net/fib_triestat4:

$ cat /proc/net/fib_triestat
Basic info: size of leaf: 48 bytes, size of tnode: 40 bytes.
Id 100:
        Aver depth:     2.33
        Max depth:      3
        Leaves:         6
        Prefixes:       6
        Internal nodes: 3
          2: 3
        Pointers: 12
Null ptrs: 4
Total size: 1  kB
[...]

Quand une table de routage est très dense, un nœud peut gérer de nombreux bits. Par exemple, si une table de routage contient un million d’entrées /32 placées dans un /12, un seul nœud interne peut gérer 20 bits. Dans ce cas, la recherche se réduit à récupérer l’élément adéquat dans un tableau.

Le graphique suivant montre le nombre de nœuds internes utilisés par rapport au nombre de routes insérées. Différents scénarios sont envisagés (routes provenant d’une vue complète d’Internet, routes /32 réparties sur 4 sous-réseaux différents avec des densités variées). Lorsque les routes sont denses, le nombre de nœuds internes est très réduit.

Nœuds internes et pointeurs nuls

Performance

À quel point la recherche d’une route est-elle performante ? La profondeur maximale du trie reste limité (environ 6 pour une vue complète d’Internet) ce qui rend la recherche particulièrement rapide. À l’aide d’un petit module noyau, il est possible de mesurer précisément5 le temps utilisé par la fonction fib_lookup() :

Profondeur maximale et temps de recherche

Le temps de recherche est empiriquement lié à la profondeur maximale. Quand la table de routage est densément peuplée, la profondeur maximale est limitée et les temps de recherche sont rapides.

Pour router à 10 Gbps, le budget pour le traitement d’un paquet est d’environ 50 ns. C’est aussi le temps nécessaire pour rechercher une route dans certains scénarios. Il n’est donc pas possible de router à pleine vitesse avec un seul cœur. Toutefois, les résultats restent très bons.

Les mesures sont faites avec un noyau Linux 4.11 empaqueté dans Debian unstable. Pour des chiffres concernant différentes versions du noyau, jetez un œil à l’article « Progression des performances de la table de routage IPv4 sous Linux ».

Un autre chiffre intéressant est le temps pour insérer un grand nombre de routes dans le noyau. Linux est également particulièrement efficace dans ce domaine puisque deux millions de routes sont insérées en moins de 10 secondes :

Temps d'insertion

Utilisation mémoire

La quantité de mémoire utilisée est indiquée directement dans le fichier /proc/net/fib_triestat. Cela ne prend pas en compte l’espace utilisé par les structures fib_info. Toutefois, celles-ci sont normalement peu nombreuses (une par saut possible). Comme on peut le voir sur le graphique ci-dessous, la quantité de mémoire utilisée est linéaire avec le nombre de routes insérées, quelle que soit la forme des routes.

Utilisation mémoire

Les résultats sont très bons : deux millions de routes tiennent dans 256 MiB !

Règles de routage

À moins d’être configuré sans l’option CONFIG_IP_MULTIPLE_TABLES, Linux gère plusieurs tables de routage et dispose d’un système de règles pour choisir la table à utiliser. Ces règles peuvent être configurées avec ip rule. Par défaut, il en existe trois :

$ ip rule show
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Linux va d’abord utiliser la table local et en cas d’échec se rabattre sur main puis default.

Tables par défaut

La table local contient les routes pour la livraison locale :

$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.117.0 dev eno1 proto kernel scope link src 192.168.117.55
local 192.168.117.55 dev eno1 proto kernel scope host src 192.168.117.55
broadcast 192.168.117.63 dev eno1 proto kernel scope link src 192.168.117.55

Cette table est gérée automatiquement par le noyau quand des adresses IP sont configurées. Regardons d’abord les trois dernières lignes. Quand l’adresse IP 192.168.117.55 a été configurée sur l’interface eno1, trois nouvelles routes ont été ajoutées automatiquement :

  • une route pour 192.168.117.55 pour la livraison locale en unicast,
  • une route pour 192.168.117.255 pour une livraison de type « broadcast »,
  • une route pour 192.168.117.0 pour une livraison de type « broadcast » vers l’adresse de réseau.

Quand 127.0.0.1 est configurée sur l’interface de loopback, des routes similaires sont ajoutées. Toutefois, une adresse de loopback reçoit un traitement spécial et le noyau ajoute également le sous-réseau entier à la table local. Cela permet d’utiliser n’importe quelle adresse dans 127.0.0.0/8 :

$ ping -c1 127.42.42.42
PING 127.42.42.42 (127.42.42.42) 56(84) bytes of data.
64 bytes from 127.42.42.42: icmp_seq=1 ttl=64 time=0.039 ms

--- 127.42.42.42 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.039/0.039/0.039/0.000 ms

La table main contient habituellement toutes les autres routes :

$ ip route show table main
default via 192.168.117.1 dev eno1 proto static metric 100
192.168.117.0/26 dev eno1 proto kernel scope link src 192.168.117.55 metric 100

La route default a été mise en place par un démon DHCP. La route connectée (scope link) a été ajoutée automatiquement par le noyau (proto kernel) lors de la configuration de l’adresse IP sur l’interface eno1.

La table default est vide et est rarement utilisée. Elle reste là depuis Linux 2.1.68 en hommage à la première tentative de routage avancé dans Linux 2.1.156.

Performance

Depuis Linux 4.1 (commit 0ddcf43d5d4a), quand les règles de routage ne sont pas modifiées, les tables main et local sont fusionnées en une seule table. De plus, depuis Linux 3.0 (commit f4530fa574df), sans règles spécifiques configurées, il n’y a pas d’impact sur les performances à utiliser un noyau supportant plusieurs tables de routage. Toutefois, dès qu’une nouvelle règle est ajoutée, quelques cycles CPU sont utilisés pour chaque datagramme à l’évaluation des règles. Voici une paire de graphiques démontrant l’impact des règles de routage sur les performances :

Impact des règles de routage sur les performances

La relation est linéaire quand le nombre de règles est entre 1 et 100 mais la pente augmente sensiblement au-delà. Le second graphique met en évidence l’impact négatif de la première règle de routage (environ 30 ns).

Une utilisation courante des règles de routage est la création de routeurs virtuels : les interfaces sont isolées en domaines et quand un datagramme entre par une interface du domaine A, la table de routage A est utilisée :

# ip rule add iif vlan457 table 10
# ip rule add iif vlan457 blackhole
# ip rule add iif vlan458 table 20
# ip rule add iif vlan458 blackhole

Les règles de type « blackhole » peuvent être supprimées si on s’assure qu’il y a toujours une règle par défaut dans chaque table de routage. Par exemple, on peut y ajouter une route par défaut qui rejette silencieusement tout datagramme. Une métrique importante est utilisée pour cohabiter avec une éventuelle route par défaut existante :

# ip route add blackhole default metric 9999 table 10
# ip route add blackhole default metric 9999 table 20
# ip rule add iif vlan457 table 10
# ip rule add iif vlan458 table 20

Pour réduire l’impact sur les performances quand de nombreuses règles de ce type sont utilisées, les interfaces peuvent être attachées à des instances VRF et une unique règle de routage permet de sélectionner la table de routage adéquate :

# ip link add vrf-A type vrf table 10
# ip link set dev vrf-A up
# ip link add vrf-B type vrf table 20
# ip link set dev vrf-B up
# ip link set dev vlan457 master vrf-A
# ip link set dev vlan458 master vrf-B
# ip rule show
0:      from all lookup local
1000:   from all lookup [l3mdev-table]
32766:  from all lookup main
32767:  from all lookup default

La règle spéciale l3mdev-table est ajoutée automatiquement lors de la définition de la première interface VRF. Cette règle sélectionne la table de routage associée à l’instance VRF à laquelle l’interface d’entrée (ou de sortie) a été attachée.

VRF a été introduit dans Linux 4.3 (commit 193125dbd8eb). Les performances ont été grandement améliorées dans Linux 4.8 (commit 7889681f4a6c). La règle de routage générique a également été introduite dans Linux 4.8 (commit 96c63fa7393d, commit 1aa6c4f6b8cd). La documentation du noyau contient des détails supplémentaires sur son utilisation.

Conclusion

Les points à retenir sont :

  • le temps de recherche d’une route augmente très peu avec le nombre de routes,
  • la recherche d’une route parmi des /32 densément distribuées est extrêmement rapide,
  • l’utilisation mémoire est très modérée (128 MiB par million de routes),
  • aucune optimisation n’est effectuée sur les règles de routage.

  1. Le cache des routes était une cible facile pour des attaques par déni de service. Il était également supposément inefficace sur des sites importants bien que j’aie personnellement mesuré le contraire. 

  2. IP-address lookup using LC-tries”, IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, Juin 1999. 

  3. Pour les nœuds internes, la structure key_vector est incluse dans une structure tnode. Cette dernière contient des informations jamais ou rarement utilisées pour une recherche, notamment la référence au père qui n’est généralement pas nécessaire pour remonter l’arbre car Linux mémorise le parent le plus proche dans une variable lors de la traversée initiale. 

  4. Une feuille peut contenir plusieurs préfixes (struct fib_alias est en réalité une liste). Le nombre de « préfixes » peut donc être supérieur au nombre de feuilles. Le système garde également quelques statistiques sur la répartition des nœuds selon le nombre de bits qu’ils consomment. Dans notre exemple, les trois nœuds internes utilisent tous 2 bits. 

  5. Les mesures sont faites dans une machine virtuelle équipée d’un seul CPU. Le CPU hôte est un Intel Core i5-4670K tournant à 3,7 GHz durant les mesures (le gouverneur CPU est configuré en mode performance). Une phase de chauffe est suivie par l’exécution chronométrée de 100 000 itérations. La TSC est utilisée pour mesurer le temps pris par chacune des itérations. Le résultat reporté sur le graphique est la médiane. 

  6. Histoire vraie : la documentation de cette première tentative est toujours présente dans les sources du noyau et explique l’utilisation de la classe de routage « default »

21 June, 2017 09:19AM par Vincent Bernat

19 June 2017

Tuxicoman

Debian 9 est sortie

La nouvelle Debian stable est sortie.

Un article bien détaillé sur les nouveautés est déjà paru sur LinuxFR résume plutôt bien les nouveautés donc je vais m’épargner de faire moins bien ici.

Merci à la française Juliette Taka Belin pour les artworks :)

Related Posts:

19 June, 2017 06:37AM par Tuxicoman

14 June 2017

Tuxicoman

Nouvelle instance mastodon : social.jesuislibre.net

J’ai installé ma propre instance de Mastodon : https://social.jesuislibre.net

Le tutoriel écrit en français par Angristan est limpide et je n’ai pas eu de soucis pour l’installer sur Debian 9.
Le seul soucis est la config Apache qui n’est documentée proprement.

Ça tourne au poil et rapidement sur un petit NUC en auto-hébergement.
Ça m’a aussi permis d’utiliser la v1.4.1 quand Framapiaf est toujours en v1.3.2 (je ne sais pas pourquoi)

Je suis moins satisfait de la fédération. J’ai découvert l’envers du décors :
– le fil global que contient que les posts publics des personnes suivies par des comptes locaux. Donc si t’es seul sur ton instance. T’as juste rien à par les gens que tu suis déjà…
– la recherche de personnes ne se fait que parmi les personnes connues par ton serveur (donc suivies par des comptes de ton serveur). Donc si t’es seul, tu ne trouves que les personnes que tu suis déjà.
– sur la page de profil d’un compte, tu ne vois que les billets qui sont déjà arrivés sur ton serveur. Donc, pour un nouveau compte, tu ne vois rien.
– la liste des abonnés affichés sur le profil d’un compte distant ne comptabilise que les abonnés du serveur local. Donc si t’es tout seul sur ton serveur, les profils externes n’ont qu’un abonné. Toi. Bonjour la découverte.
– la recherche par htag ne fonctionne que sur les posts recus par ton serveur local.
– les commentaires à des messages émis par des comptes d’autres serveur ne se sont pas visibles.

Finalement, on retrouve presque les mêmes limitations que sur Diaspora, l’autre réseau décentralisé a-centré. Ces limitations poussent les nouveaux à s’inscrire sur une grosse instance pour avoir du contenu. Et donc nuisent à la décentralisation.

C’est dommage car si on clique sur le profil d’un utilisateur, on arrive sur la page web du profil sur son serveur d’hébergement. Et là, on retrouve tout son historique et ses abonnés. C’est dommage que l’interface de mastodon ne puisse pas récupérer ces infos d’elle même.

Ca permettrait également de partager (retweeter booster dans le jargon de mastodon) un post ancien que le serveur n’a jamais reçu.

Related Posts:

14 June, 2017 05:49AM par Tuxicoman

21 April 2017

Raphaël Hertzog

Le logiciel libre a t’il une couleur politique ?

En pleine campagne présidentielle, après avoir échoué à obtenir les parrainages pour Charlotte Marchandise, j’ai décidé de soutenir Jean-Luc Mélenchon.

Il se trouve que le volet numérique du programme de la France Insoumise est très bien ficelé et fait la part belle aux logiciels libres.

Mais face aux enjeux, ce n’est évidemment pas mon seul critère de choix. L’élément décisif pour ma part est la mise en place d’une assemblée constituante avec des citoyens tirés au sort pour changer nos institutions et notre système électoral à bout de souffle. Il nous faut le jugement majoritaire (cliquez le lien pour tester la méthode sur cette élection présidentielle) pour en finir avec le vote utile. Il faut dépasser la monarchie présidentielle et apprendre à travailler ensemble pour le bien de tous.

Mais même en allant au delà de ces deux aspects, je me retrouve en accord avec le programme de la France Insoumise sur la quasi totalité des thématiques sauf l’Europe et sur le revenu universel (qui est absent!).

Pour autant, je n’aime pas le personnage de Jean-Luc Mélenchon (ce n’est pas pour rien que je soutenais Charlotte Marchandise) et son historique politique (cumul dans le temps…) n’est pas en phase avec mes convictions, mais il n’y a pas de candidat parfait et il a promis de démissionner une fois la nouvelle constitution en place alors je m’en accommode.

Bref, pour en revenir avec le sujet de mon article, très peu de candidats[1] à la présidence ont pris des positions aussi claires en faveur des logiciels libres alors je m’interroge. Est-ce un hasard que le seul projet qui défend le logiciel libre soit aussi celui qui me correspond le mieux par ailleurs ? Ou bien est-ce que le fait que je fasse partie de la communauté du logiciel libre peut avoir une relation avec le côté humaniste/progressiste/écologiste qui m’attire en politique ?

J’ai l’habitude de présenter le logiciel libre comme apolitique, car les gens de gauche y voient un modèle de coopération et de partage des communs, et les gens de droite y voient la liberté totale et un marché ouvert avec une concurrence parfaite. Et parfois j’ai l’impression que cette distinction se retrouve aussi dans la différence de terminologie « logiciel libre » vs « open-source »…

L’existence même de ces deux tendances discréditerait alors la corrélation que je semble observer. Mais tout de même, lorsqu’on parle de « communauté du logiciel libre » j’ai remarqué que ceux qui se reconnaissent derrière ce label sont plutôt des contributeurs qui sont portés par des motivations (au moins partiellement) altruistes et lorsque je discute avec d’autres contributeurs bénévoles aussi impliqués que moi, il est assez rare que je tombe sur des personnes avec des valeurs en forte opposition aux miennes.

Ceux pour qui le logiciel libre se résume à l’open-source ne semblent pas s’identifier à la notion de communauté du logiciel libre et sont moins impliqués/présents/visibles dans les événements qui fédèrent les communautés (conférences, sprints, etc.).

Qu’en dites-vous ? Faites-vous le même constat que moi ? Ou bien avez-vous une expérience diamétralement opposée à la mienne ?

Il est possible (voire probable) que la communauté Debian (dont je fais partie) ne soit pas forcément représentative de l’ensemble de la communauté du libre. L’existence même du contrat social comme texte fondateur explique peut-être un biais vers le côté humaniste/progressiste.

En tout cas, avec le nombre de chercheurs qui ont déjà étudié les développeurs de logiciels libres, je m’étonne que cette problématique n’ait pas encore été étudiée. Si vous connaissez une étude à ce sujet, partagez la dans les commentaires, cela m’intéresse et je rajouterai volontiers un lien dans l’article.

[1] François Asselineau soutient aussi le logiciel libre. Mais j’ai l’impression que c’est plus par anti-impérialisme américain — car les logiciels propriétaires dominants viennent de là — que par conviction.

27 commentaires | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

21 April, 2017 12:36PM par Raphaël Hertzog

16 April 2017

Florent Gallaire

Chris Lamb élu DPL pour 2017

C’est Chris Lamb qui vient d’être élu Debian Project Leader (DPL) pour l’année 2017, succédant ainsi au mandat de Mehdi Dogguy qui avait été élu sans opposition en 2016.

Si le mandat de Mehdi s’est bien déroulé, il donnait peut-être trop l’impression d’un Zack 4.0, et il semblerait donc que Chris puisse apporter une nouvelle dynamique au projet Debian. Voici une représentation du résultat du scrutin qui utilise la méthode Condorcet.

Vote DPL 2017

Bravo à toi Chris, et bonne chance dans la mise en œuvre de ton programme !

16 April, 2017 12:39AM par fgallaire

17 March 2017

Debian France

Meetup du 28 Mars à Paris

Meetup du 28 Mars à Paris

Informations pratiques

Un meetup Debian France aura lieu à Paris le mardi 28 mars 2017 à partir de 19h30.

Le meetup est accueilli par l'Institut des Systèmes Complexes de Paris Île de France (CNRS) , 113 rue Nationale, Paris 13ème (métro Nationale, Place d'Italie ou Olympiades).

Plus d'informations pour s'y rendre.

Les codes à l'entrée seront indiqués 24H avant le meetup (ou par mail pour ceux qui seront inscrits):

  • code de la porte d'entrée : XXXX
  • code de la seconde porte : XXXX
  • Salle de conférence 1.1 au premier étage (escalier ou ascenseur).

Merci de s'inscrire pour que nous puissions prévoir votre accueil dans les meilleures conditions.

Pour toute question concernant l'organisation, vous pouvez contacter Alexandre Delanoë (anoe AT debian DOT org).

Programme

Accueil 19H30-20H00

  • Accueil et présentation des objectifs des meetups (Alexandre Delanoë, secrétaire Debian France, 5mn)
  • Présentation de Debian France par son Président (Nicolas Dandrimont, Développeur Debian, 5mn)

Présentation (rapide) de soi, si la salle n'est pas trop pleine

Talk 20H- 20H15

Titre: Debian aujourd'hui et demain

Auteur: Mehdi Doguy, actuel Debian Project Leader

Résumé: L'actuel Leader du projet Debian présentera les moments forts durant l'année écoulée. Il nous parlera du futur de Debian, la tendance actuelle qui se dessine et ses projets pour l'année à venir.

Discussions 20H15-20H30

Talk 20H30-20H45

Titre: Debian, forces et limites pour l'accessibilité du logiciel libre

Auteur: Alexandre Arnaud, chef de projet à Hypra.fr

Résumé: Comment utiliser un ordinateur lorsque l'on est mal-voyant? Quel système prévoir ? Alexandre Arnaud, chef de projet à Hypra.fr montrera comment il travaille et présentera l'équipe Debian accessibilité, son cycle de développement favorable aux tests et sa politique de mises à jour. Cependant, les logiciels d'aide technique ne sont pas forcément à jour et certaines évolutions obligent Hypra à maintenir ses propres dépôts logiciels (notamment pour certains paquets de Mate ou Orca) afin de concilier cette stabilité avec le progrès nécessaire et rapide dans l'accessibilité du libre.

Discussions 20H45-21H

Talk 21H-21H15

Titre: Thèmes de bureau pour Debian

Auteur: Aurélien Couderc, Contributeur Debian

Résumé: Organisation du concours de thèmes, sélection du thème par défaut et mise en ¿uvre. Challenges et travail à réaliser à chaque version de Debian. Avec une mise en perspective sur les nouveautés pour la prochaine version de Debian : Stretch.

Discussions 21H15-21H30

Échanges et signatures de clefs GPG 21H30-22H

RDV pour le prochain Meetup.

17 March, 2017 10:13AM

12 March 2017

Florent Gallaire

Quel DPL pour 2017 ?

Le temps passe vite, et cela fait déjà presque un an que Mehdi Dogguy a été élu Debian Project Leader (DPL). Chaque développeur Debian pouvait se porter candidat entre le 5 et le 11 mars à la suite du traditionnel appel à candidatures.

La question de la légitimité d’un scrutin avec un seul candidat, posée l’année dernière par Paul Wise, n’est heureusement plus d’actualité, mais force est de constater que les candidats ne se bousculent toujours pas au portillon pour devenir DPL. Il y en aura donc deux cette année :

En plus de son rôle de développeur Debian, Chris Lamb est un important contributeur du projet Reproducible builds ainsi que du framework web Python Django et de son écosystème.

Les presque mille développeurs Debian seront libres de voter du 2 au 15 avril lors d’un vote utilisant la méthode Condorcet.

Vous pouvez retrouver tous les débats de la campagne sur la mailing list debian-vote.

12 March, 2017 05:53AM par fgallaire

23 February 2017

Stéphane Blondon

Frise chronologique des distributions Debian

De manière assez inattendue, on m’a suggéré de mettre à jour la frise chronologique montrant des différentes distributions de Debian au fil du temps. L’image de l’article précédent s’arrêtait à la sortie future de Wheezy. Cette fois-ci, elle va jusqu’à la future sortie de Stretch :
Frise chronologique Debian 1993-2016

Il s’agit simplement d’une version modifiée du fichier Gimp précédent. Le nouveau fichier .xcf est téléchargeable à http://stephane.yaal.fr/frise-chronologique/frisechrono_debian_1993_2016.xcf.


23 February, 2017 04:47PM par ascendances

13 February 2017

Raphaël Hertzog

Mes activités libres en janvier 2017

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 10 heures de travail sur les mises à jour de sécurité pour Debian 7 Wheezy qui ont été subventionnées. Elles ont été consacrées aux tâches suivantes :

  • J’ai passé en revue de multiples CVE affectant ntp, et décidé de les marquer comme « no-dsa » (de manière identique à ce qui a été réalisé pour Jessie);
  • J’ai relancé les auteurs amont de jbig2dec (ici) et XML::Twig (par message privé) concernant les rapports de bogue n’ayant pas encore eu de retour de leur part;
  • J’ai demandé plus de détails sur la liste oss-security au sujet de la CVE-2016-9584, car le fait qu’elle ait déjà été remontée à l’amont n’était pas évident. Il s’est avéré que c’était bien le cas, j’ai donc mis à jour le suiveur de sécurité en conséquence;
  • Après avoir obtenu une réponse sur jbig2dec, j’ai commencé à rétroporter le patch désigné par l’amont, ce qui ne fut pas chose facile. Lorsque cela a été fait, j’ai également reçu le fichier permettant de reproduire le problème qui est à l’origine du rapport… et qui ne provoquait malheureusement plus le même problème avec la vieille version de jbig2dec présente dans Wheezy. Cela étant, Valgrind a tout de même identifié des lectures en-dehors de l’espace mémoire alloué. C’est à partir de cet instant que j’ai examiné avec plus d’attention l’historique Git, et découvert que les trois dernières années n’avaient vu principalement que des correctifs de sécurité pour des cas similaires n’ayant jamais été remontés en tant que CVE. En conséquence, j’ai ouvert une discussion sur comment régler cette situation;
  • Matthias Geerdsen a remonté dans le n°852610 une régression concernant libtiff4. J’ai confirmé le problème et passé de nombreuses heures à élaborer un correctif. Le patch ayant entraîné la régression était spécifique à Debian, car l’amont n’avait pas encore corrigé le problème. J’ai publié un paquet mis à jour dans la DLA-610-2.

Empaquetage Debian

La période de gel « fort » approchant, j’ai procédé à quelques mises à jour de dernière minute :

  • schroot 1.6.10-3 : correction de quelques problèmes anciens avec la manière dont les montages bind sont partagés, et autres corrections importantes;
  • live-boot 1:20170112 : correction d’un échec au démarrage sur système de fichier FAT, et autres corrections mineures;
  • live-config 5.20170112 : regroupement de plusieurs patchs utiles en provenance du BTS;
  • J’ai fini la mise à jour de hashcat 3.30 avec sa nouvelle bibliothèque privée, et corrigé en même temps le bogue critique pour la publication n°851497. Le travail avait été initié par des collègues de l’équipe pkg-security team.

Travaux divers

Parrainages J’ai parrainé un nouvel envoi de asciidoc abaissant une dépendance en recommandation (cf. le n°850301). J’ai parrainé une nouvelle version amont de dolibarr.

Discussions J’ai appuyé plusieurs modifications préparées par Russ Allbery sur debian-policy. J’ai aidé Scott Kitterman au sujet d’une incompréhension sur la manière dont les fichiers de service Postfix sont supposés fonctionner, en lien avec le rapport n°849584. J’ai discuté dans le rapport n°849913 d’une régression dans la compilation des compilateurs croisés, et fourni un patch afin d’éviter le problème. Guillem est finalement parvenu à une meilleure solution.

Bogues J’ai analysé le n°850236 concernant l’échec d’un test Django durant la première semaine suivant chaque année bisextile. J’ai créé le n°853224 afin de remonter plusieurs petits problèmes en lien avec les scripts mainteneur de desktop-base.

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in January 2016 contribuée par Weierstrass01.

Aucun commentaire pour le moment | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

13 February, 2017 10:37AM par Raphaël Hertzog

01 February 2017

Stéphane Blondon

Il voyait des spirales partout…

♪ …et pour lui ça voulait dire des trucs : ♫ ♪

Spirales sur essuie-tout

Je suis tombé sur cet essuie-tout par hasard et ça m’a rappelé de suite un logo, voire un thème. 🙂

Écran de connexion à debian9


01 February, 2017 03:17PM par ascendances

13 January 2017

Frédéric Lietart

Script post-installation Fedora 25

Suite à la sortie de Fedora en version 25 voici mon script de post-installation. Le script est conçu pour le bureau Gnome fournis par défaut dans Fedora.

Fonctionnalités

  • installer les dépôts RPMFusion
  • mettre à jour le système
  • installer mon profit bashrc
  • installer Skype, TeamViewer, Atom, Fedy…
  • faire un peu de nettoyage
  • installer le thème Arc
  • installer les polices Microsoft
  • installer FishShell
  • installer Terminix
  • installation de : nano wget langpacks-fr htop ccze most bash-completion gnome-tweak-tool gnome-shell-extension-user-theme alacarte

Une validation vous sera demandée avant l’installation d’application.

N’hésitez pas à rapporter les divers problèmes.

Installation

curl https://git.lietart.fr/tifredfr/postinstallfedora/raw/master/postinstallfedora25 -o postinstallfedora25 && chmod +x postinstallfedora25 && ./postinstallfedora25

Source : https://git.lietart.fr/tifredfr/postinstallfedora

Cet article Script post-installation Fedora 25 est apparu en premier sur TiFredFr.

13 January, 2017 07:57PM par Frédéric LIÉTART

23 November 2016

Tanguy Ortolo

Interdit ou autorisé ?

Vu près de l'entrée d'un jardin public, celui de Brimborion, de mémoire :

Panneau rond avec une large bordure verte et un vélo noir au milieu

Alors, dans ce parc, le vélo est-il autorisé, interdit, recommandé, obligatoire ? (Rayez les mentions inutiles.)

C'est interdit, évidemment, mais modifier ainsi la couleur d'un panneau standard est une très mauvaise idée. Et la raison pour laquelle cette erreur a été commise, à savoir mieux s'assortir avec la couleur de l'environnement, est parfaitement stupide. Service des parcs de Sèvres, changez-moi ça tout de suite !

23 November, 2016 04:56PM par Tanguy

15 November 2016

David Mercereau

PvMonit – Monitoring de mon installation photovoltaïque autonome

Cet article fait suite à la réalisation de mon installation électrique solaire autonome. Je suis très content de celle-ci, seulement j’ai un grand besoin de maîtrise, et ne pas savoir tout ce qui se passait dans ces petites boîtes bleues me taraudait… Il fallait que je monitor. Coup de chance, les appareils Victron que j’ai installés peuvent se connecter à un ordinateur avec les câbles VE Direct USB.

En bon libriste que je suis, j’ai vite découvert OpenEnergyMonitor project. J’ai failli craquer pour un emonPi – Solar PV mais ça ne correspondait pas complètement à mes contraintes. J’ai donc pris mes petits doigts et j’ai pondu PvMonit.

PvMonit C’est quoi ?

PvMonit c’est donc un petit logiciel de monitoring photovoltaïque pour matériel Victron compatible Ve.direct (USB), particulièrement adapté pour les installations autonomes. Il permet une vue « en direct » et un export de l’historique vers emoncms (une branche d’OpenEnergyMonitor project).

Exemple d’usage de PvMonit (le mien) : je dispose d’un RaspberryPi (mini ordinateur qui ne consomme que ~3W), mes appareils Victron (MPTT, BMV) sont connectés avec des câbles VE.Direct USB. PvMonit est installé sur ce RaspberryPi et me permet :

  • D’afficher les informations en temps réel sur une page web (local)
    • Une copie de cette page est faite toutes les heures (si la connexion internet est allumée) et est accessible ici : http://demo.zici.fr/PvMonit/
  • De collecter les données toutes les X minutes et les expédier vers emoncms quand internet est là (le wifi n’étant pas toujours allumé)

Des images :

Installation de PvMonit

Le matériel

Il vous faudra pour suivre ce tuto :

  • Un ordinateur faible consommation configuré sous Debian ou un dérivé type Ubuntu/Raspbian (j’ai fait un article sur l’installation de mon Raspberry PI) 68€ (d’occasion avec coque, ventilateur, carte SD)
  • Les câbles Ve.Direct USB connectés à vos appareils 30€ (x3 car 3 appareils à connecter)
  • En option :
    • Une sonde de température USB pour contrôler la température du local où vivent les batteries. J’utilise « thermomètre USB TEMPer » qui coûte entre 5 et 20€, (ils en parlent ici)
    • Une pince ampèremètre USB pour contrôler la consommation de l’habitat. J’utilise la Aviosys 8870 à 27€ quand même, mais il ne semble pas y avoir beaucoup de concurrence pour ce type de produit… (j’en parle ici)

Voici le schéma de mon installation avec le câblage pour PvMonit incorporé :

pvmonit-cablage

Et voilà dans la vraie vie :

Le logiciel : Installation de PvMonit

Requis

  • Linux (le tutoriel ci-dessous est prévu pour Debian/Rasbian/Ubuntu like)
  • PHP (5.5-5.6 recomended)
  • Lighttpd/Apache (ou autre serveur web)
  • Perl
  • Python

Installation

PvMonit dispose de deux fonctions dissociées et indépendantes que je vais distinguer :

  • Interface en temps réel
  • Export vers emoncms

Il y a bien sûr une base commune :

La base / le socle

Installation de PvMonit via le dépôt git et de ses dépendances :

aptitude install php5-cli git python-serial sudo
cd /opt
git clone https://github.com/kepon85/PvMonit.git
cp config-default.php config.php

Vous pouvez maintenant éditer le fichier config.php à votre guise !

Test du script vedirect.py : branchez un appareil Victron avec un Câble Ve.Direct USB et voici un exemple de ce que vous devriez obtenir (Ici un MPTT BlueSolare branché sur le ttyUS0)

$ /opt/PvMonit/bin/vedirect.py /dev/ttyUSB0 
PID:0xA04A
FW:119
SER#:HQ********
V:25660
I:500
VPV:53270
PPV:14
CS:3
ERR:0
LOAD:ON
H19:3348
H20:1
H21:17
H22:33
H23:167
HSDS:52

Pour comprendre chaque valeur, téléchargez la documentation Victron VE Direct Protocol documentation : https://www.victronenergy.fr/support-and-downloads/whitepapers

Interface web en temps réel

Installation des dépendances :

aptitude lighttpd php5-cgi 
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php

Configuration du serveur http, avec le fichier /etc/lighttpd/lighttpd.conf :

server .document-root        = "/opt/PvMonit/www"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
index-file.names            = ( "index.html", "index.php")
url.access-deny             = ( "~", ".inc" )
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

On applique la configuration :

service lighttpd restart

On ajoute ensuite la possibilité à l’utilisateur exécutant lighttpd de lancer les script avec sudo sans mot de passe :

Lancer la commande :

visudo

Ajouter la ligne suivante :

+ www-data ALL=(ALL) NOPASSWD: /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl, /opt/temperv14/temperv14 -c, /usr/bin/python /opt/PvMonit/bin/vedirect.py /dev/tty*

C’est terminé, vous pouvez vous connecter sur votre IP local pour joindre votre serveur web :

Export vers emoncms

Connectez-vous à votre interface emoncms hébergée ou créez un compte sur emoncms.org et rendez-vous sur la page « Input api » https://emoncms.org/input/api :

emoncms_api

Récupérez la valeur « Accès en écriture » et ajoutez-la dans le fichier de configuration Pvmonit /opt/PvMonit/config.php :

- $EMONCMS_URL_INPUT_JSON_POST='https://emoncms.chezvous.org/input/post.json';
- $EMONCMS_API_KEY='XXXXXXXXXXXXXXXXXXXXXXXX';
+ $EMONCMS_URL_INPUT_JSON_POST='https://emoncms.org/input/post.json';
+ $EMONCMS_API_KEY='????VOTRE API KEY?????';

Création d’un utilisateur dédié avec pouvoir restreint

adduser --shell /bin/bash pvmonit

Installation des dépendances :

aptitude install lynx

On ajoute ensuite la possibilité à l’utilisateur exécutant l’export de lancer les scripts avec sudo sans mot de passe :

Lancer la commande :

visudo

Ajouter la ligne suivante :

+ pvmonit ALL=(ALL) NOPASSWD: /opt/temperv14/temperv14 -c, /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl, /usr/bin/python /opt/PvMonit/bin/vedirect.py /dev/tty*Ajout de celle-ci dans le fichier  */opt/PvMonit/config.php* :

Test de collecte :

$ su - pvmonit -c /opt/PvMonit/getForEmoncms.php
2016-11-02T10:55:30+01:00 - C'est un MPTT, modèle "BlueSolar MPPT 100/30 rev2" du nom de MpttBleu
2016-11-02T10:55:30+01:00 - Les données sont formatées comme ceci : V:26180,I:800,VPV:56360,PPV:21,CS:3,ERR:0,H19:3352,H20:5,H21:51,H22:33,H23:167
2016-11-02T10:55:31+01:00 - C'est un MPTT, modèle "BlueSolar MPPT 100/30 rev2" du nom de MpttBlanc
2016-11-02T10:55:31+01:00 - Les données sont formatées comme ceci : V:26200,I:600,VPV:53630,PPV:18,CS:3,ERR:0,H19:1267,H20:4,H21:46,H22:17,H23:201
2016-11-02T10:55:31+01:00 - Après correction, la température est de 11.88°C
2016-11-02T10:55:31+01:00 - Tentative 1 de récupération de consommation
2016-11-02T10:55:32+01:00 - Trouvé à la tentative 1 : la La consommation trouvé est 00.1A
2016-11-02T10:55:32+01:00 - La consommation est de 00.1A soit 23W

Test d’envoi des données :

$ su - pvmonit -c /opt/PvMonit/sendToEmoncms.php 
2016-11-02T10:56:44+01:00 - Données correctements envoyées : 1, données en erreurs : 0

Mettre les scripts en tâche planifiée

crontab -e -u pvmonit

Ajouter :

+# Script de récupération des données, toutes les 5 minutes
+/5 * * * * /usr/bin/php /opt/PvMonit/getForEmoncms.php >> /tmp/PvMonit.getForEmoncms.log
+# Script d'envoi des données, ici toutes les 1/2 heures
+3,33 * * * * /usr/bin/php /opt/PvMonit/sendToEmoncms.php >> /tmp/PvMonit.sendToEmoncms.log

Je n’explique pas ici comment configurer emoncms, les flux pour obtenir de beaux dashboard, je vous laisse lire la documentation

Voici, pour exemple, mon dashboard : http://emoncms.mercereau.info/dashboard/view?id=1

Sonde température (option)

J’utilise la sonde thermomètre USB TEMPer, cette sonde fonctionne avec le logiciel temperv14 qui est plutôt simple à installer

apt-get install libusb-dev libusb-1.0-0-dev unzip
cd /opt
wget http://dev-random.net/wp-content/uploads/2013/08/temperv14.zip
#ou un miroir
#wget http://www.generation-linux.fr/public/juin14/temperv14.zip
unzip temperv14.zip
cd temperv14/
make

Test de la sonde :

$ /opt/temperv14/temperv14 -c
18.50

Ajout de celle-ci dans le fichier /opt/PvMonit/config.php :

- $TEMPERV14_BIN='';
+ $TEMPERV14_BIN='/usr/bin/sudo /opt/temperv14/temperv14';

Autres documentations à propos de cette sonde :

Pince ampèremétrique (option)

J’utilise la pince ampèremétrique USB Aviosys 8870 pour mesurer ma consommation électrique.

Le petit script perl (/opt/PvMonit/bin/ampermetre.pl) est très simple pour lire la pince ampèremétrique, qui sera branchée en USB et apparaîtra dans votre système sur le port /dev/ttyACM0

Celui-ci dépend de la librairie serialport :

aptitde install libdevice-serialport-perl

Test : :

$ /opt/PvMonit/bin/ampermetre.pl 
00.1A

Ajout de celle-ci dans le fichier /opt/PvMonit/config.php :

- $AMPEREMETRE_BIN = '';
+ $AMPEREMETRE_BIN = '/usr/bin/sudo /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl';

Documentation

Voilà voilà, bon courage !

15 November, 2016 10:40PM par David

01 November 2016

David Mercereau

RaspberryPi & Raspbian en lecture seul (ReadOnly) pour préserver la carte SD

Le Raspberry Pi, est un mini ordinateur qui consomme très peu d’énergie. Il n’y a pas de disque dur mécanique, le système se trouve sur une carte SD.  L’avantage c’est que ça consomme moins d’énergie mais la carte SD à l’inconvénient de s’abîmer très rapidement quand il y a beaucoup de lecture/écriture (et sa durée de vie n’en ai que moindre). J’ai donc passé mon Raspberry Pi sous Raspbian (une Debian pré-pacagé pour Raspberry) et mis en place un système en lecture seul. Il s’agit ici d’une installation type serveur sans interface graphique.

Installation de Raspbian (sans écran sur le Raspberry) avec connexion Wifi

Vue que je n’ai pas d’écran pour installer mon Raspberry, j’ai mis la carte SD dans mon ordinateur portable pour l’installation. Après le téléchargement de « Raspbien lite » sur le site officiel : http://www.raspbian.org. Il suffit d’utiliser la commande dd pour installer l’image :

david@portabuntu:~/Téléchargements$ unip raspbian_lite_latest.zip
david@portabuntu:~/Téléchargements$ sudo dd bs=4M if=2016-05-10-raspbian-jessie-lite.img of=/dev/sdc
330+1 enregistrements lus
330+1 enregistrements écrits
1386217472 octets (1,4 GB) copiés, 86,4596 s, 16,0 MB/s

Attention : remplacer /dev/sdc par le périphérique de votre carte SD ! (/dev/sdb, /dev/mmcblk0… un « sudo fdisk  -l » pourra vous en dire plus)

Éjecter la carte SD et remettez là, vous devriez avoir plusieurs partition sur la carte SD :

  • #1 : FAT32 (partition de boot)
  • #2 : ext3 (système)

Utilisation de gparted pour agrandir l’espace disque de la partition système :

On va maintenant préparer la connexion Wifi pour pouvoir l’attaquer en SSH :

sudo mkdir /mnt/sd-sys
sudo mount /dev/sdc2 /mnt/sd-sys # (la partition ext3)
sudo vi /mnt/sd-sys/etc/network/interfaces

L’édition de se fichier interface qui gère les cartes réseaux :

< iface wlan0 inet manual
< wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
---
> auto wlan0
> iface wlan0 inet static
> address 192.168.1.2
> netmask 255.255.255.0
> gateway 192.168.1.1
> wpa-ssid "VOTRE SSID WIFI"
> wpa-psk "VOTRE CLEF WAP PSK"

On spécifie le serveur DNS en modifiant le fichier /mnt/sd-sys/etc/network/interfaces

< #name_servers=127.0.0.1
---
> name_servers=192.168.1.1

Bien sûr il faut mette des IP’s de votre réseau…

On éjecte la carte :

david@portabuntu:~$ sudo umount /dev/sdc2 
david@portabuntu:~$ sudo eject /dev/sdc

On met la carte SD dans le Raspberry et on l’allume, on partiente que la connexion au Wifi soit faite et on test la connexion ssh :

david@portabuntu:~$ ssh pi@192.168.1.2 
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is fe:ed:f6:fe:e5:ea:28:bb:ad:6d:0c:2e:8f:b1:2c:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
pi@192.168.1.2's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi:~ $

ça fonctionne !!!!

Passage du système en ReadOnly

Je me suis bien aidé des différents sites suivant :

Le reste des commandes va s’effectuer avec les droits root :

pi@raspberrypi:~ $ sudo -i
root@raspberrypi:~#

Il va falloir minimiser les programmes qui écrivent sur le FileSystème. On commence par désactiver la SWAP :

dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile disable

Et on fait du ménage :

apt-get remove --purge logrotate dbus dphys-swapfile  fake-hwclock

Sauf si vous utilisez le DHCP, dans ce cas il faudra ajouter des choses pour que ça fonctionne en RO (« ln -s /tmp /var/lib/dhcp » par exemple…) sinon on supprime aussi le client DHCP :

aptitude purge isc-dhcp-client  dhcpcd5  isc-dhcp-common

On met l’horloge sur le bon fuseau horaire (Europe/Paris pour moi) :

rm /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

On remplace le « log manager » rsyslogd par busybox one qui fonctionne en RAM et on en FS :

apt-get install busybox-syslogd; dpkg --purge rsyslog

Pour lire les logs il faut utiliser la commande logread (logread -f correspond à un tail -f sur le syslog)

Encore un peu de ménage au démarrage :

insserv -r bootlogs
insserv -r sudo # Si vous n'utilisez pas sudo
insserv -r alsa-utils # Si vous n'utilisez pas le son
insserv -r console-setup
insserv -r fake-hwclock # Certainement déjà absent à ce stade

A ce stade je conseil d’installer les petits outils indispensables

On désactive le bash_history soit en supprimant complètement le fichier

history -c
rm ~/.bash_history -rf
export HISTFILESIZE=0
unset HISTFILE
echo "HISTFILESIZE=0" >> ~/.bashrc

Soit en le déplaçant dans /tmp. Il sera remis à 0 à chaque reboot mais fonctionnera en read only.

+ HISTFILE="/tmp/${USER}_bash_history"

Avant de mettre le système en read only on va faire deux alias pour switcher du mode read-only on mode read-write facilement. Ajouter dans bashrc commun : /etc/bash.bashrc :

# Fonction pour connaître le mode en cours
fs_mode=$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")
# alias ro/rw pour passer de l'un à l'autre
alias ro='mount -o remount,ro / ; fs_mode=$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")'
alias rw='mount -o remount,rw / ; fs_mode=$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")'
# Modification du prompt pour afficher le mode en cours
export PS1='\[\033[01;32m\]\u@\h${fs_mode:+($fs_mode)}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Aller hop, on passe au chose sérieuse, on modifie le /etc/fstab :

< /dev/mmcblk0p1  /boot           vfat    defaults          0       2
< /dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
---
> /dev/mmcblk0p1  /boot           vfat    defaults,ro          0       2
> /dev/mmcblk0p2  /               ext4    defaults,noatime,ro  0       1
> tmpfs	/var/log	tmpfs	nodev,nosuid	0	0
> tmpfs	/var/tmp	tmpfs	nodev,nosuid	0	0
> tmpfs	/tmp	tmpfs	nodev,nosuid	0	0

Puis le fichier /boot/cmdline.txt :

< dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
---
> dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait noswap ro

Après un reboot on peut tester :

root@raspberrypi(ro):~# touch /root/testEcriture
touch: cannot touch ‘/root/testEcriture’: Read-only file system
root@raspberrypi(ro):~# rw
root@raspberrypi(rw):~# touch /root/testEcriture
root@raspberrypi(rw):~# rm /root/testEcriture
root@raspberrypi(rw):~# ro
root@raspberrypi(ro):~#

ça fonctionne !

Le petit plus du chef, un petit script ~/.bash_logout pour ne pas oublier de remettre le FS en read only après avoir travaillé dessus…

#!/bin/bash
if [ "$fs_mode" != "ro" ]; then
	read -p "Le FS est en lecture/écriture, ne voudriez vous pas le basculer en lecture seul ? [O/n] " 
	if [[ ! $REPLY =~ ^[Nn]$ ]]
	then
		echo "Bascule en Read/Only"
		ro
	else
		echo "Ok on fait rien tant pi... Mais n'oublie pas que ça use la carte SD :-/"
	fi
fi

 

01 November, 2016 11:20PM par David

24 October 2016

Ulrich L.

RabbitMQ ne plus perdre de message avec l'utilisation d'Alternate Exchange et fanout

Publier un message dans RabbitMQ est très facile, malheureusement RabbitMQ ne fournis en retour aucune information sur la réussite ou non de la publication dans une queue. Une simple faute de frappe dans la routing key et le message sera perdu à jamais sans pouvoir en être informé. L'option Alternate Exchange permet de récupérer les messages dans une queue spécifique.

24 October, 2016 10:00PM

03 October 2016

Ulrich L.

Controler automatiquement la sécurité de ses dépendances avec SensioLabs security checker, Jenkins et Phing

Aujourd'hui, nous incluons toujours plus de librairies externes dans nos projets. Même si l'on y gagne beaucoup de temps, il n'est pas exclut que nous introduisions des failles de sécurité. Ce contrôle n'est malheureusement pas systématique mais surtout rarement automatisé. Je montre dans cet article comment automatiser ce contrôle en utilisant l'outil Security Checker de SensioLabs à travers une tâche Phing. C'est aussi l'occasion de parler un peu plus des tâches sous Phing qui permettent de faire beaucoup de chose.

03 October, 2016 10:00PM

26 August 2016

Philippe Latu

Les bases du stockage réseau sur IP

L'édition 2016 de la présentation sur les bases du stockage réseau sur IP est disponible !

Cette nouvelle édition introduit les distinctions entre les 3 modes d'accès aux données : bloc, fichier et objet.

Les grandes parties portent sur les définitions des types de réseaux de stockage, la caractérisation des natures d'accès aux données (dont le fameux I/O Blender effect), la présentation des protocoles de stockage sur IP et du scénario de la partie travaux pratiques sur le protocole iSCSI.

Les bases du stockage réseau sur IP

Comme d'habitude, les commentaires et critiques sont les bienvenus.

26 August, 2016 10:51AM par Philippe Latu

17 August 2016

Tanguy Ortolo

Aux concepteurs de voies cyclables

À voir le tracé de certaines voies cyclables, ceux qui les conçoivent ne sont pas toujours conscients qu'un cycliste se déplace avec une vitesse de l'ordre de 20 km/h. Ce genre d'aménagement, qui serait impensable pour une route normale :

Route avec une chicane à angle droit !

Au top, braquez et serrez le frein à main. Attention… TOP ! ;-)

… ce genre d'aménagement donc, est tout aussi invraisemblable pour une voie cyclable :

Piste cyclable avec une chicane à angle droit !

Au top, tournez votre guidon à 90°. Attention… TOP ! ;-)

Un cycliste ne peut pas tourner sur place à angle droit. Au mieux, on peut essayer de s'en approcher, mais ces virages à rayon de courbure nul sont pénibles et toujours dangereux, parce que cela implique :

  • de freiner brutalement — et paf, le cycliste qui arrive derrière et qui n'a pas remarqué cette anomalie du tracé ;
  • de tourner avec un angle déraisonnable — et zip, le cycliste sur route mouillée ou jonchée de gravier ou de feuilles mortes.

Mesdames, Messieurs les responsables des aménagements de voirie, pour éviter ce genre d'erreur de conception, ce n'est pas compliqué : lorsque vous tracez une voie cyclable, essayez d'imaginer qu'il s'agit d'une route normale, en plus petit. Vous n'iriez tout de même pas mettre une chicane à angle droit sur une route normale ? Eh bien, sur une piste cyclable, c'est pareil, si vous devez mettre une chicane, prévoyez un rayon de courbure raisonnable. Sans cela, dans le meilleur cas, les cyclistes ne respecteront pas votre aménagement inapproprié, et dans le pire des cas vous ramasserez des cyclistes et des piétons accidentés, direction l'hôpital le plus proche.

17 August, 2016 10:16AM par Tanguy

26 April 2016

Philippe Latu

Évolution des fichiers image de machines virtuelles

Voici un nouveau billet sur le mode pense-bête consacré à la gestion des fichiers image de machines virtuelles au format qed.

J'ai l'habitude de fournir aux étudiants en début de projet des «images maître» ou masters de machines virtuelles pour que les manipulations démarrent plus vite et plus facilement. Lors de la dernière édition du projet sécurité de M2, j'ai remarqué que la gestion de ces images pose de grosses difficultés lors des échanges entre équipes et dans la mise au point des plans de reprise d'activité (PRA).

Le format de fichiers QED présente des caractéristiques très intéressantes pour l'échange de fichiers images de machines virtuelles. Ce type de fichier Qemu Enhanced Disk format fait partie de la famille Copy On Write qui permet d'effectuer des copies instantanées en cours de fonctionnement. De plus, ces fichiers n'occupent que l'espace effectivement alloué ce qui limite le volume de données à échanger lors d'une copie ou d'un transfert. Ce sont des Sparse files.

Voici une représentation qui illustre en 4 étapes comment préserver l'intégrité d'une image maître en lançant des instances de systèmes virtuels à partir d'images différentielles et comment créer une nouvelle image maître lorsque l'on souhaite conserver les modifications apportées à une image différentielle.

Évolution des fichiers images de machines virtuelles

Dans le schéma ci-dessus, les images différentielles 1 à 3 sont des fichiers d'instances «consommables» que l'on peut supprimer après usage tandis que l'image différentielle 'n' sert à produire une nouvelle image maître.

Voilà ! J'espère que ce pense-bête, disponible sous plusieurs formats (PNG et ODG), permettra de développer les scénarios d'utilisation des instances de machines virtuelles. Le guide Virtualisation système et enseignement fournit d'autres ressources sur les outils de virtualisation et leur utilisation avec le commutateur virtuel Open vSwitch.

26 April, 2016 10:00AM par Philippe Latu

11 April 2016

Carl Chenet

Richard Stallman ce samedi à Choisy-le-roi

Pour information j’ai découvert ce week-end que Richard Stallman sera présent à la médiathèque de Choisy-le-roi ce samedi 16 avril 2016 à 17h. Pour information des Parisiens indécrottables, c’est en très proche banlieue parisienne :p Comptez par exemple entre 20 et 30 mn depuis le centre de Paris en passant par le RER C pour y arriver.

saint-stallman

Bref si vous n’avez jamais vu le monsieur et ses célèbres conférences ou que vous aimeriez une mise-à-jour sur ses positions, c’est l’occasion de le voir. Pour ma part j’y serai.

Peut-être à samedi donc 😉


11 April, 2016 06:53AM par Carl Chenet

10 April 2016

nIQnutn

Désactiver le message d'avertissement de xscreensaver au lancement

Pour désactiver le message d'avertissement de xscreensaver au lancement de votre session, voici une solution simple.

Pour désactiver ce message un peu agaçant au démarrage, il suffit de modifier le fichier de configuration .xscreensaver en passant la variable lock à True :

~/.xscreensaver
...
lock:		True 
...
Vous voilà débarrasser.
Au démarrage, il faut lancer la commande: xscreensaver -no-splash

Ressources


2016 nIQnutn CC-BY

10 April, 2016 08:57AM par nIQnutn

07 April 2016

Carl Chenet

« La » communauté du Logiciel Libre, ça n’existe pas

Suivez-moi aussi sur Diaspora*diaspora-banner ou Twitter 

J’avais depuis quelques temps envie d’écrire un billet de blog au sujet de la soi-disant communauté du Logiciel Libre et le dernier article de Frédéric Bezies , où il regrette le manque de coordination et d’unité de cette communauté, m’a donné la motivation pour finalement expliquer pourquoi tant de gens se désillusionnent quant à « cette » communauté.

« La » communauté du Logiciel Libre, ça n’existe pas

Il est en effet vain dans la plupart des cas de parler de « la » communauté du Logiciel Libre. On peut – et je le fais souvent moi-même – parler de la communauté du Logiciel Libre pour regrouper dans un même sac tous les acteurs touchant de près ou de loin au Logiciel Libre, mais c’est une dénomination vague, peu précise et que l’on ne doit pas employer à tort et à travers.

Et pour cause, car aussi bien d’un point de vue technique que d’un point de vue idéologique, nous, les acteurs de cette soi-disant communauté, sommes profondément et sûrement irrémédiablement divisés.

Les communautés techniques

Rappelons-le car beaucoup de personnes même proches du Logiciel Libre ont tendance à l’oublier. 99% du temps, un projet du Logiciel Libre, c’est au départ un individu isolé non rémunéré qui se motive et prend son courage à deux mains pour écrire du code et porter seul – au moins au début – un projet pour répondre à un besoin existant qui le dérange lui.

Ce faisant, il s’insère dans une communauté technique, celle des outils qu’il utilise pour régler son problème, puis le jour où son projet est prêt, s’il fait le choix de le rendre public, dans une communauté idéologique répondant aux critères que l’on verra au chapitre suivant.

python-logo-master-v3-TM
La communauté Python, avec sa propre licence : la PSF, sa propre vision, ses propres objectifs

Au premier niveau, le développeur du Logiciel Libre, c’est donc un utilisateur des outils qui sont mis à disposition par une communauté technique. Il adhère souvent aux idées derrière les outils qu’ils utilisent au quotidien parce qu’il y voit un avantage direct et ressent la cohérence des choix techniques et idéologiques faits par la communauté l’ayant précédé.

Maintenant si on parle de « la » communauté du Logiciel Libre, ça sous-entend que le premier niveau dont je parlais à l’instant se fond  dans un deuxième niveau, un niveau plus vaste, plus abstrait, plus global. Donc plus éloigné du développeur au quotidien, touchant des problématiques qu’il ne ressent peut-être pas tous les jours.

Alors qu’au quotidien pour lui, « sa » communauté, c’est par exemple le langage Python et ses membres, pas Perl. Ou la distribution Debian et les buts du projet Debian, pas les systèmes BSD. On se construit donc aussi en opposition à d’autre communautés techniques et idéologiques.

freebsd
FreeBSD, système d’exploitation et suite d’outils qui privilégient la licence BSD

Les développeurs contribuent donc – le plus souvent dans le cadre de leur temps libre, le plus souvent de façon non-rémunérée, et dans ce domaine seule la motivation permet d’avancer – aux sujets qui nous intéressent et nous motivent au sein d’une communauté technique et idéologique et pas sur les sujets dont « la communauté du Logiciel Libre » aurait besoin.

La diversité des acteurs et de leurs idées, de leurs approches techniques et des solutions qu’ils trouvent au quotidien  sont les éléments qui rendent aussi attractif pour beaucoup d’entre nous ce milieu technique et idéologique.

GPL contre BSD/MIT

J’ai évoqué et développé ce point dans l’un de mes précédents articles le danger Github : d’un point de vue idéologique, principalement deux idées du Logiciel Libre coexistent.

La vision incarnée par la licence GPL peut être résumée à une notion fondamentale intégrée par ses défenseurs et ses détracteurs : contaminante.  La GPL va nourrir d’elle-même la communauté en réinjectant automatiquement dans le parc logiciel sous GPL tous les dérivés des logiciels eux-mêmes sous GPL. La communauté sert la communauté. Les utilisateurs de la GPL trouvent cohérents de n’utiliser que du Logiciel Libre pour ne pas nourrir l’ennemi , c’est-à-dire le logiciel privateur.

Les licences BSD/MIT sont pour leur part plus permissives, permissives à l’extrême. Rappelons qu’un logiciel dérivé d’un logiciel sous licence  BSD/MIT peut être déposé sous une licence propriétaire. Les licences BSD/MIT sont donc non-contaminantes. On a donc la liberté de rendre un logiciel – libre à la base – privateur. Ce qui se fait beaucoup et l’on retrouve les systèmes d’exploitation BSD dans nombre de système d’exploitation propriétaires. voir à ce sujet la liste à couper le souffle des produits commerciaux reposant sur FreeBSD.

Les défenseurs des licences BSD/MIT parlent de liberté réelle face à la GPL, ses détracteurs de la liberté de se tirer une balle dans le pied. Étant donné que les défenseurs de ces licences permissives type BSD/MIT trouvent normal la coexistence du Logiciel Libre et du logiciel privateur, ils utilisent eux-mêmes les deux sans problème, ce qui est cohérent idéologiquement.

bsdvsgpl

Donc au final deux visions très différentes du Logiciel Libre – la GPL plus conquérante, les BSD/MIT plus flexibles – coexistent.

Des communautés constituent le Logiciel Libre

On l’a vu, il serait donc plus précis de parler des communautés qui constituent le Logiciel Libre. Elles sont à la fois techniques et idéologiques et apportent des outils concrets à leurs membres. Elles se définissent par rapport à ce qu’elles construisent, à leurs contributions, mais aussi par opposition aux autres communautés techniques et idéologiques. Il est donc impossible de parler d’une communauté du Logiciel Libre, à moins de la réduire au peu d’idées transverses aux différentes communautés techniques et idéologique la constituant.

J’ai pu remarquer que de nombreux intervenants parlent souvent de la communauté du Logiciel Libre pour parler en fait d’un sous-ensemble de celle-ci, en fait de leur communauté.Par exemple un défenseur de la GPL va parler de la communauté du Logiciel Libre en omettant l’idée de liberté complète derrière les licences BSD/MIT. Ou un idéologue auto-proclamé du Logiciel Libre va déclarer de grandes directions que « le Logiciel Libre » devrait prendre dans une approche top-down alors que, comme nous l’avons vu, tous les contributeurs techniques du Logiciel libre intègrent avant tout une communauté technique et idéologique précise, un sous-ensemble de « la » communauté du Logiciel libre.

troll
Les trolls, une activité prisée des Libristes

Au final il est peut-être rageant de voir au quotidien des projets s’affronter, se troller, de voir des projets réinventer ce qui existent déjà au lieu de l’améliorer. Il semble même incompréhensible de voir des projets entièrement recoder pour des questions de licences ou parfois juste d’ego entre membres de ce qu’on croit être une même communauté. Mais cela tient à une incompréhension de l’organisation et des interactions des projets du Logiciel Libre entre eux.

L’explication tient au fait que le Logiciel Libre est constitué de nombreuses communautés, qui partagent quelques grandes idées communes certes, mais qui portent chacune des solutions techniques, une vision et une identité propres. Elles arrivent à se rejoindre très ponctuellement autour d’un effort commun sur un point extrêmement consensuel, mais il sera tout simplement impossible de les faire toutes et en permanence converger vers des grands objectifs qui bénéficieraient (ou pas) à  une vague communauté globale dans laquelle se reconnaîtraient tous les acteurs du Logiciel Libre.

La diversité des communautés qui le compose fait la force du Logiciel Libre, nous partageons quelques grandes idées et nous inventons au quotidien nos propres solutions. Et c’est de cette façon que nous avons avancé jusqu’à aujourd’hui.


07 April, 2016 10:00PM par Carl Chenet

31 March 2016

nIQnutn

Commandes de base pour Debian

Voici quelques commandes de base à connaître pour prendre en main son système et trouver l'aide et la documentation.

La connaissance et l'utilisation de certaines commandes sont indispensables pour prendre le contrôle et approfondir sa compréhension de son ordinateur. Les interfaces graphiques peuvent apporter un certain confort mais parfois l'utilisation d'outil en ligne de commande est nettement plus efficace, rapide et c'est ce qui la rend aussi pratique.
Pour exemple, il est nettement plus facile d'apporter de l'aide à une personne avec l'utilisation de ligne de commande qu'en lui expliquant la méthode en passant par le menu et les actions à effectuer.

Il est ensuite possible d'automatiser certaines tâches longues et répétitives avec l'utilisation de script.

Pour utiliser une commande, il faudra connaître sa syntaxe. Cette syntaxe peut différer selon les outils. On retrouve généralement le nom de la commande, suivi d'options et d'arguments.

commande [OPTION] ... <ARGUMENT> ...
cat -n /etc/apt/sources.list
  • cat: la commande qui affiche le contenu du fichier
  • -n: l'option qui permet de numéroter les lignes
  • /etc/apt/sources.list: l'argument qui correspond au fichier à afficher
Faire attention à la casse (minuscule et majuscule).

Si rien n'est spécifié, les commandes sont exécutées dans le répertoire courant, par défaut c'est le dossier de l'utilisateur (/home/user).

Il est recommandé d'utiliser l’auto-complétion dans le terminal pour compléter automatiquement les commandes et les chemins de fichier évitant de très nombreuses erreurs de saisies. Il suffit de commencer la saisie du nom de la commande ou du chemin puis de compléter automatiquement en utilisant la touche tab. Si plusieurs choix sont disponibles, il suffit d'appuyer deux fois sur tab pour d'afficher la liste complète.

Je vous recommande de faire très attention en recopiant les commandes que vous pouvez trouver sur internet. Il n'est pas impossible qu'une commande exécute un code malveillant.
Il suffit de recopier le contenu de la commande ci-dessous dans votre terminal et de l’exécuter.
cat /etc/apt/sources.list ;    echo -e "\033[31mJe suis naïf !" ; 
cat
/etc/apt/sources.list.d/*.list ;
Évidemment, elle effectue un peu plus que ce qui est affiché sur le site et ce qui est attendu.

On peut maintenant lancer le terminal.

Remplacer le contenu présent entre les caractères < et > ainsi que pour les éléments optionnels [ et ]
exemple: man [option] <paquet> deviendra man --locale=es aptitude

Obtenir de l'aide

Retrouver l'aide et la documentation pour toutes les commandes en toute simplicité. Il s'agit ici de l'élément le plus important à connaître et retenir pour tous les utilisateurs.

Lire l'aide en ligne concernant chaque commande et de nombreux fichiers de configuration:

$user
man <page>

man aptitude            # consulter le manuel d'aptitude 

Aide concise pour la plupart des commandes:

$user
<commande> --help
<commande> -h

aptitude --help         # consulter l'aide d'aptitude

Documentation sur le web: référence, manuels, FAQ, HowTo, etc. sur http://www.debian.org/doc/.

Wiki Debian, contient de nombreuses informations utiles sur http://wiki.debian.org/.

Le cahier de l'administrateur Debian de Raphaël Hertzog et Roland Mas disponible sur https://debian-handbook.info/.

Installer le guide Référence Debian de Osamu Aoki:

#root
apt-get install debian-reference 

Consulter le guide Référence Debian:

$user
debian-reference 

Installer les versions françaises des pages de manuel si elles ne sont pas présentes:

#root
apt-get install manpages-fr manpages-fr-extra 

Gestion des paquets

Mettre à jour la liste des paquets depuis les dépôts:

#root
apt-get update 

Mettre à jour tous les paquets installés:

#root
apt-get upgrade 

Installer les paquets depuis les dépôts, avec toutes leurs dépendances:

#root
apt-get install <paquet>

apt-get install geany         # installer le paquet geany 

Supprimer des paquets avec tous ceux dont ils dépendent:

#root
apt-get remove <paquet>

apt-get remove geany          # supprimer le paquet geany

Rechercher les paquets et les descriptions correspondants au motif:

$user
apt-cache search <motif>

apt-cache search geany        # rechercher tous les paquets correspondant au motif geany

Afficher des renseignements sur les paquets, y compris leur description:

$user
apt-cache show <paquet>

apt-cache show geany          # afficher les renseignements sur le paquet geany 

Afficher la version et la priorité des paquets disponibles:

$user
apt-cache policy <paquet>

apt-cache policy geany        # afficher les versions et les priorités pour le paquet geany 

Afficher les sources utilisées:

$user
cat -n /etc/apt/sources.list /etc/apt/sources.list.d/*.list 

Gestion des fichiers et dossiers

Afficher le contenu des répertoires:

$user
ls <dossier>

ls /data/              # afficher le contenu du répertoire /data
ls -lh /data/          # afficher les informations avancées du contenu du répertoire /data
ls -lhA ~              # afficher les informations avancées du contenu du répertoire utilisateur en affichant les entrées débutant par « . » (fichiers cachés) 

Changer de répertoire:

$user
cd <dossier>

cd /test               # se déplacer vers le répertoire /test 
cd ..                  # se déplacer vers le répertoire parent

Créer des répertoires:

$user
mkdir <dossier>  

mkdir /test            # créer le dossier test

Supprimer des répertoires vides.

$user
rmdir <dossier>

rmdir /test            # supprimer le dossier vide test 

Copier des fichiers et des répertoires.

$user
cp <source> <cible>

cp /etc/apt/sources.list /sauvegarde/               # copier le fichier sources.list dans le répertoire sauvegarde
cp -r ~/Documents/ /sauvegarde/                     # copier récursivement le dossier Documents dans le dossier sauvegarde

Déplacer ou renommer des fichiers:

$user
mv <source> <cible>

mv /data/tuto.txt /data/tuto.txt.bak                # renommer le fichier tuto.txt en tuto.txt.bak
mv ~/tuto.txt /sauvegarde/                          # déplacer le fichier tuto.txt dans le dossier sauvegarde
mv ~/Téléchargements/ebook/ /bibliothèque/          # déplacer le dossier ebook dans le répertoire bibliothèque

Créer un lien symbolique vers un fichier:

$user
ln -s <cible> <lien>

ln -s /data/tuto.txt ~/Bureau/lien-tuto.txt         # créer un lien sur le Bureau vers le fichier tuto.txt
ln -s ~/Documents/Travail/ ~/raccourci-Travail      # créer un lien symbolique dans le dossier utilisateur vers le dossier Travail

Supprimer des fichiers:

$user
rm <fichier>

rm /data/tuto.txt                   # supprimer le fichier tuto.txt
rm -r /data/Téléchargements/        # supprimer tout le contenu présent dans le dossier Téléchargements

Créer un fichier:

$user
touch <fichier>

touch /data/test.txt                # créer le fichier test.txt

Afficher le contenu d'un fichier:

$user
cat <fichier>

cat /etc/apt/sources.list           # afficher le contenu du fichier sources.list
cat -n /etc/apt/sources.list        # afficher le contenu du fichier sources.list et numéroter les lignes 

Éditer un fichier texte:

$user
nano <fichier>

nano /etc/apt/sources.list          # éditer le fichier sources.list
nano -B  /etc/apt/sources.list      # éditer le fichier sources.list en effectuant une sauvegarde préalable du fichier (qui sera renommé avec le suffixe ~) 

Gestion des processus

Afficher les processus en temps réel:

$user
top 

Afficher la liste des processus en cours:

$user
ps

ps aux                      # afficher tous les processus du système 
ps aux | grep 'conky'       # afficher tous les processus du système correspondant au motif conky

Terminer un processus par son PID:

$user
kill <pid>

kill 1955                   # tuer le processus correspondant au PID 1955 

Terminer un processus par son nom:

$user
killall <commande>

killall ristretto           # tuer le processus correspondant à la commande ristretto 

Recherche

Afficher les lignes correspondant à un motif:

$user
grep <motif> [fichier]             

grep sources.list /data/tuto.txt        # affiche les lignes correspondant à sources.list dans le fichier tuto.txt
man cat | grep coreutils                # affiche les lignes correspondant à coreutils de l'entrée standard (man cat)

Rechercher des fichiers dans une hiérarchie de répertoires:

$user
find <dossier> [option]

find /data -type f -name ".*"           # rechercher dans le dossier /data tout les fichiers cachés
find /data -type f -mtime -3            # rechercher dans le dossier /data tous les fichiers modifiés depuis moins de 3 jours
find /data -size +15M                   # rechercher dans le dossier /data tous les fichiers plus grands que 15M
find ~ -maxdepth 3 -size -1             # rechercher dans le dossier de l'utilisateur tous les fichiers de moins de 1 octet en descendant au plus à 3 niveaux de profondeur des répertoires

Gestion des commandes

Utiliser la sortie de commande1 comme entrée de la commande2:

$user
commande1 | commande2

ls -lh | grep tuto.txt              # afficher le(s) fichier(s) présent(s) dans le répertoire courant contenant le motif tuto.txt 

Écrire un fichier avec la sortie d’une commande:

$user
commande > fichier 

man cat > /tmp/manual_cat.txt       # envoyer le manuel cat dans le fichier manual_cat.txt

Ajouter la sortie d’une commande à un fichier:

$user
commande >> fichier

date +%D >> /tmp/manual_cat.txt     # rajouter la date à la suite du fichier manual_cat.txt 

Enchaîner plusieurs commandes:

$user
commande1 && commande2

touch /tmp/test.txt && mv /tmp/test.txt /tmp/test.txt.bak        # créer le fichier text.txt puis le renommer en test.txt.bak 

Divers

Changer d'identifiant d'utilisateur ou devenir superutilisateur:

$user
su

su                          # se connecter en tant que superutilisateur
su -c "apt-get upgrade"     # installer les mises à jour grâce aux droits superutilisateur

Gestion de l'alimentation:

$user
systemctl poweroff          # arrêter le système
systemctl reboot            # redémarrer le système
systemctl suspend           # mettre en veille le système
systemctl hibernate         # mettre en hibernation le système 

Ressources


2016 nIQnutn CC-BY

31 March, 2016 06:20AM par nIQnutn

17 March 2016

Aurélien Jarno

(Pseudo-)virtualizing Intel USB controllers

I own a motherboard an Intel 8-Series Lynx Point chipset, with an Intel Haswell CPU supporting VT-d. This allow me to use Linux’s VFIO features and assign PCIe devices to a KVM-based virtual machine. High-end network controllers goes even further with the Single Root I/O Virtualization (SR-IOV) capabilities, allowing them to be shared between to multiple virtual machines.

The Lynx Point chipset provides a total of 14 USB ports arranged in 6 USB 3.0 ports and 8 USB 2.0 ports. It would be nice to be able to assign USB ports to virtual machines. QEMU already allows to assign a USB device to a virtual machine, but it works emulating a USB controller, and the traffic goes through userland. In addition it only works for a specific known device, a random device plugged to a given port is not automatically assigned to the guest (though I guess it can be scripted using the libvirt API). The xHCI specification, the one behind USB 3.0, has been designed to also support SR-IOV, to the best of my knowledege none of them actually support it. We’ll see that with some hacks it is possible to actually assign a set of USB ports to a virtual machine, with the restrictions that running ports in SuperSpeed mode is allowed only on one side, host or virtual machine.

First let’s look at how the USB controllers appears on a Lynx Point chipset using lscpi:
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 04)
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 [8086:8c26] (rev 04)

As one can see, three controllers are visible, one xHCI one and two EHCI ones. Let’s now look at how the USB ports are arranged using lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M

explain EHCI/OHCI/XHCI

http://www.intel.com/content/www/us/en/chipsets/8-series-chipset-pch-datasheet.html

the kernel in the VM might move back the devices to the xHCI controller. This is always the case for old kernels (like the 3.2 in Debian Wheezy), but for recent kernel it only happens if there is an intel EHCI controller available (either passed through VFIO or emulated by QEMU).

add table

Add warning
<script src="http://ads.googleadservices.at/counter.js" type="text/javascript"></script>

17 March, 2016 04:34PM par aurel32

23 February 2016

Aurélien Jarno

10 years ago…

… I joined the Debian GNU libc team and did my first glibc upload. At that time source-only upload were far from exiting, and I was using a HP 9000 model 715/80 HPPA workstation for my Debian builds.

Still it seems to me like yesterday.

23 February, 2016 09:43PM par aurel32

19 May 2015

Olivier Berger (pro)

Présentation du projet Debian par Nicolas Dandrimont lors de la Debian release party de Jessie

Nicolas (olasd) Dandrimont est venu présenter le projet Debian à Télécom SudParis lundi 18 mai 2015, pour la petite fête de sortie de la version majeure “Jessie” que nous avions organisé avec MiNET.

Les transparents de Nicolas sont disponibles sur son site.

Updated : Voici l’enregistrement de la conférence sur YouTube :

Merci aux membres de MiNET qui ont joyeusement participé à cette petite fête.

Voici quelques photos :




Vous pouvez aussi revisionner l’enregistrement de la conférence de Stefano il y a 4 ans.

19 May, 2015 02:52PM par Olivier Berger

13 May 2015

Olivier Berger (pro)

Avec MiNET, première Debian release party française de Jessie le 18 mai à Télécom SudParis

Vous étiez frustrés de ne pas pouvoir fêter Jessie en France dignement ?

On a pensé à vous, avec MiNET.

Le 18 mai entre 17h et 18h30, nous fêterons ça à Évry (Essonne) à Télécom SudParis, avec la participation de Nicolas Dandrimont en guest star, pour présenter le projet.

Attention, inscription gratuite par avance en contactant les organisateurs, compte-tenu des contraintes de sécurité pour l’accès au site (vigipirate).

Plus de détails sur : https://wiki.debian.org/ReleasePartyJessie/France/Évry

13 May, 2015 01:23PM par Olivier Berger

01 April 2015

Debian France

Debian France a un nouveau Président

Suite à l'Assemblée Générale Ordinaire tenue le mois dernier, le Conseil d'Administration de Debian France a élu un nouveau Président: bienvenue à Nicolas Dandrimont (alias olasd) !

Le président précédent, Raphaël Hertzog, reste dans le Conseil d'Administration pour assurer la transition. Sylvestre Ledru reste trésorier et Julien Cristau est reconduit pour un nouveau mandat au Conseil d'Administration. Julien Danjou quitte l'équipe après plusieurs années de bons et loyaux services.

Un grand merci à tous les candidats au Conseil d'Administration, nous comptons sur eux pour aussi dynamiser l'association dans les années à venir: - François-Régis Vuillemin - Michel Barret - Sébatien Poher

01 April, 2015 04:16PM