11 December 2018

Debian France

Rencontre Debian Nantes

Pour bien commencer l'année, une rencontre Debian aura lieu à Nantes le 29 janvier 2019 à 19 heures, dans les locaux de l'entreprise Capensis - 18 Rue Louis Blanc 44200 Nantes

Plus d'informations sur: https://gettogether.community/events/520/recontres-debian-nantes-janvier-2019/

11 December, 2018 09:18PM

14 November 2018

Debian France

Capitole du libre 2018

Debian France tiendra un stand à l'occasion du Capitole du libre, les 17 et 18 novembre 2018 à l'INP-ENSEEIHT, 2 rue Charles Camichel 31000 Toulouse.

Venez nous rencontrer afin d'échanger au sujet de votre distribution favorite.

Des développeurs Debian ainsi que des membres de l'association Debian France seront là pour répondre à vos questions.

Nous serons présents au village associatif parmi les nombreux autres stands.

à très bientôt !

Denis Briand

14 November, 2018 07:27PM

27 October 2018

Vincent Bernat

Haute densité (HiDPI) avec deux écrans 4K sous Linux

J’utilise un portable Lenovo Thinkpad X1 Carbon (210 PPP) depuis quatre ans ainsi qu’un tÊlÊphone Nokia 8 (550 PPP) depuis un an. J’apprÊcie la haute densitÊ de leurs Êcrans respectifs : le rendu du texte est excellent. Pour obtenir des rÊsultats similaires avec ma station de travail, j’ai achetÊ une paire d’Êcrans Dell P2415Q :

Deux Dell P2415Q
Configuration en ĂŠcrans doubles avec deux moniteurs Dell P2415Q

Écrans​

Le Dell P2415Q est un ĂŠcran 24” dotĂŠ d’un panneau IPS d’une rĂŠsolution de 3840Ă—2160 (185 PPP) et une couverture complète de l’espace de couleurs sRGB. Il est sorti en 2015 et son prix est dĂŠsormais sous la barre des 400 ₏. Il a reçu des critiques positives.

L’une des unitÊs est arrivÊ avec un pixel mort. Je pensais qu’il s’agissait d’un problème du passÊ, mais la politique de Dell concernant les pixels morts stipule :

Lors du processus de fabrication des ĂŠcrans LCD, un ou plusieurs pixels se figent parfois dans un ĂŠtat immuable. Un ĂŠcran comportant de 1 Ă  5 sous-pixels figĂŠs est considĂŠrĂŠ comme normal et conforme aux normes industrielles.

Mise Ă  jour (12.2018)

Trois nouveaux pixels morts sont apparus. Aussi, je vous recommande d’Êviter ces Êcrans.

Un deuxième problème est la prÊsence de lignes grises horizontales (difficilement) visibles sur fond blanc. Le problème ne semble pas être rare, mais Dell est peu enthousiaste à ce sujet. Si je m’assois correctement, les lignes deviennent invisibles.

Je suis un peu dÊçu par ces aspects, mais je pense qu’ils restent supportables et que c’est l’occasion de corriger mon obsession pour ces dÊtails.

Carte graphique​

Pour piloter un Êcran 4K à 60 Hz, il faut au moins un connecteur HDMI 2.0 ou DisplayPort 1.2. Le Dell P2415Q a ÊtÊ mis à niveau vers HDMI 2.0 en 2016 et dispose Êgalement d’une entrÊe DP 1.2. Il y a un port pour chaÎner un second Êcran, mais en l’absence de prise en charge de DP 1.3, le taux de rafraÎchissement tomberait à 30 Hz.

Il n’y a actuellement aucune carte Radeon disponible autour de 100 ₏ et capable de piloter deux Êcrans 4K. CôtÊ Nvidia, la GeForce GT 1030 convient avec une consommation de 20 W pour la version GDDR4. J’ai optÊ pour un modèle à refroidissement passif de MSI. Sous Linux, le rÊsultat est assez dÊcevant :

A l’avenir, je remplacerai peut-être cette carte par une Radeon. Il est difficile de dÊterminer si cela amÊliorera les performances,2 mais le pilote amdgpu sera certainement plus stable et utilisable.

Prise en charge de la haute densitÊ avec X11​

Gnome et KDE prennent dÊsormais en charge les affichages à haute densitÊ (HiDPI) sans configuration particulière sous X11. Pour les autres environnements, le paramÊtrage est assez simple, grâce à xsettingsd. Le code suivant doit être invoquÊ à partir de ~/.xsession ou lorsque la densitÊ change :

# DensitĂŠ cible
dpi=192

# Pour les applications supportant XSettings, `Xft/DPI' indique
# l'ĂŠchelle pour les fontes (et parfois pour le reste de l'interface),
# `Gdk/WindowScalingFactor' indique l'ĂŠchelle pour l'interface avec
# GTK 3 et `Gdk/UnscaledDPI' annule l'ĂŠchelle choisie pour les fontes
# pour les applications GTK 3.
> ~/.xsettingsd cat <<EOF
Xft/DPI $(( $dpi*1024 ))
Gdk/WindowScalingFactor $(( $dpi/96 ))
Gdk/UnscaledDPI $(( $dpi*1024/($dpi/96) ))
EOF
pkill -HUP xsettingsd || xsettingsd &

# Pour les applications QT.
export QT_AUTO_SCREEN_SCALE_FACTOR=1

# Pour certaines autres applications.
echo Xft.dpi: $dpi | xrdb -merge

Ensuite, c’est à chaque application de savoir comment effectuer le rendu à la densitÊ choisie. Le tableau ci-dessous donne un aperçu de la prise en charge pour certaines d’entre elles, en utilisant les paramètres ci-dessus.  Échelle du texte  indique si une application est capable d’adapter la taille du texte. C’est gÊnÊralement la fonctionnalitÊ la plus essentielle.  Échelle de l’interface  indique si elle est capable de mettre à l’Êchelle l’ensemble de l’interface, y compris les icônes. IdÊalement, les applications devraient Êgalement être en mesure de changer dynamiquement leurs paramètres lorsqu’elles sont notifiÊes via XSettings, ce qui est utile lors du passage sur un Êcran externe.

Application Échelle du texte Échelle de l’interface Sans redÊmarrage ?
Applications QT 5 âœ”ď¸ âœ”ď¸ âœ”ď¸
Chromium3 âœ”ď¸ âœ”ď¸ âœ”ď¸
Applications Electron4 âœ”ď¸ âœ”ď¸ âœ”ď¸
Firefox âœ”ď¸ âœ”ď¸ ❌
Blender5 âœ”ď¸ âœ”ď¸ ❌
Emacs 26.1 (GTK 3) âœ”ď¸ đŸ˜ âœ”ď¸
Terminaux VTE (GTK 3) âœ”ď¸ đŸ˜ âœ”ď¸
Applications GTK 3 âœ”ď¸ đŸ˜ âœ”ď¸
Gimp (GTK 2) âœ”ď¸ ❌ âœ”ď¸
Inkscape (GTK 2) âœ”ď¸ ❌ âœ”ď¸
Applications GTK 2 âœ”ď¸ ❌ âœ”ď¸
Applications Java6 đŸ™„ đŸ™„ ❌
xterm and rxvt (avec Xft) âœ”ď¸ n/a ❌
Autres applications ❌ ❌ ❌

Les applications QT 5 offrent une excellente prise en charge. Les applications GTK 3 ne peuvent utiliser qu’un coefficient multiplicateur entier pour mettre à l’Êchelle leurs interfaces, ce qui est ennuyeux quand on a besoin d’un facteur 1.5×. Les applications GTK 2 ne savent adapter que la taille du texte. Elles sont toujours assez nombreuses, avec notamment Gimp. Pour plus de dÊtails, jetez un œil sur la page dÊdiÊe au sujet sur ArchWiki. Au-delà de X11, Wayland permet d’utiliser une densitÊ diffÊrente pour chaque Êcran et de mettre à l’Êchelle les applications qui ne savent pas prendre en charge les densitÊs ÊlevÊes.

En conclusion, la situation actuelle dĂŠpend ĂŠnormĂŠment des applications utilisĂŠes. Mes principales applications ĂŠtant Firefox, Emacs et un terminal basĂŠ sur VTE, le rĂŠsultat me satisfait.


  1. Sans ce paramètre, il est impossible de lire une vidÊo HD ou 4K dans Firefox. C’est un peu dommage que nous ne puissions toujours pas obtenir un rendu vidÊo accÊlÊrÊ sous Linux alors que d’autres plates-formes ont cette fonctionnalitÊ depuis longtemps. Pour Chromium, des patchs existent mais ne sont pas acceptÊs. ↊︎

  2. Par rapport à ma configuration prÊcÊdente, le nombre de pixels est quadruplÊ. La carte utilise 4 voies sur PCI 3.0, ce qui correspond à une bande passante de 25 Gbits/s. Cela permet à peine le transfert de 7680×2160 pixels à 60 Hz en 24 bits. Ceci peut expliquer la difficultÊ à lire des vidÊos 4K sans accÊlÊration. ↊︎

  3. Pour dÊtecter les changements, Chromium surveille les Êvènements RandR. Ils peuvent être capturÊs avant d’avoir pu mettre à jour les variables XSettings. ↊︎

  4. Si cela ne fonctionne pas, essayez avec le drapeau --force-device-scale-factor=2. ↊︎

  5. Blender se base sur la valeur de la ressource Xft.dpi. ↊︎

  6. Les applications Java doivent être invoquÊes avec la variable d’environnement GDK_SCALE=2, sans quoi, aucune mise à l’Êchelle n’est effectuÊe. ↊︎

27 October, 2018 09:34PM par Vincent Bernat

21 October 2018

Vincent Bernat

BGP LLGR : sessions BGP fiables et rĂŠactives

Sur un réseau routé via BGP et disposant de multiples chemins redondants, deux objectifs concernant la fiabilité sont souvent recherchés :

  1. Un dysfonctionnement sur un chemin doit rapidement faire tomber la session BGP correspondante. On s’attend généralement à se remettre d’une telle défaillance en moins d’une seconde en déviant le traffic vers les autres chemins disponibles.

  2. Aussi longtemps qu’un chemin est opérationnel, les sessions BGP qui y sont liées doivent rester fonctionnelles, même sous la pression.

Détection rapide des pannes : BFD

Pour détecter rapidement une panne, BGP peut être associé à BFD, un protocole de détection d’anomalies sur les chemins bidirectionnels1, défini dans la RFC 5880 et la RFC 5882. BFD peut réagir sur des délais très courts, de l’ordre de 100 ms.

Toutefois, lorsque BFD est géré dans un processus au-dessus d’un noyau générique2, notamment lorsque BGP tourne sur l’hôte, il est possible de perdre quelques paquets BFD lorsque le système est sous pression : le démon gérant les sessions BFD peut manquer de CPU pour répondre dans le temps imparti. Dans ce scénario, il n’est pas rare que toutes les sessions BGP terminant sur l’hôte tombent au même moment, créant un incident comme illustré dans le dernier cas du diagramme ci-dessous.

Exemples de dysfonctionnements sur un réseau BGP
Exemples de dysfonctionnements sur un réseau utilisant BGP. Un problème sur un lien est détecté par BFD et le chemin défectueux est retiré de la route ECMP. Toutefois, en cas d'usage intensif du CPU sur le routeur du bas, les paquets BFD ne sont pas traités assez rapidement et tous les chemins disponibles sont disqualifiés.

À ce niveau, nous avons donc deux possibilités apparemment irréconciliables :

  • descendre le temps de détection de BFD pour rendre le réseau plus réactif aux problèmes ;
  • augmenter le temps de détection de BFD pour s’assurer que les sessions BGP restent opérationnelles.

Correction des faux positifs : BGP LLGR

Long-lived BGP Graceful Restart (BGP LLGR) est une nouvelle capacité pour BGP permettant de garder les routes périmées (stale) pendant une certaine période après la fin de la session BGP mais en les traitant avec une préférence inférieure. Une nouvelle communauté « bien connue » permet de partager cette information avec les autres routeurs. BGP LLGR est défini dans le document en cours de discussion draft-uttaro-idr-bgp-persistence-04 et plusieurs implémentations existent déjà :

  • Juniper JunOS (depuis la version 15.1, voir la documentation),
  • Cisco IOS XR (uniquement pour les familles VPN et FlowSpec),
  • BIRD (depuis les versions 1.6.5 and 2.0.3, encore non publiées, parrainé par Exoscale),
  • GoBGP (depuis la version 1.33).

L’illustration ci-dessous montre comment BGP LLGR permet de surmonter certains dysfonctionnements. En ❷, une anomalie sur un lien est détectée par BFD et le chemin correspondant est retiré de la route car il reste deux autres chemins avec une préférence supérieure. Quelques minutes plus tard, le délai de grâce expire et ce chemin ne sera plus utilisé du tout. Peu de temps après, le routeur du bas est victime d’une charge processeur élevée et ne peut plus gérer les paquets BFD dans un délai suffisant. Les sessions BGP tombent et les deux chemins restants sont marqués comme périmés. Toutefois, comme il n’existe plus aucun autre chemin, ils restent utilisés jusqu’à l’expiration du délai de grâce. Cela permet de laisser le temps aux sessions BGP de remonter.

BGP avec LLGR
Exemples de dysfonctionnements sur un réseau utilisant BGP LLGR.

Du point de vue du routeur du haut, le premier chemin a été considéré comme périmé car la session BGP avec R1 a été rompue. Toutefois, lors du second incident, les deux chemins restants ont été marqués comme périmés via la communauté « bien connue » LLGR_STALE (65535:6) par R2 et R3.

Un autre intérêt de BGP LLGR est de pouvoir redémarrer le démon BGP sans impact, tant que les chemins restent stables peu de temps avant et pendant le redémarrage. C’est particulièrement intéressant si BGP tourne sur un hyperviseur3.

BIRD

Voyons comment configurer BIRD 1.6. Comme BGP LLGR se base sur une capacité similaire appelée BGP graceful restart (BGP GR) mais pour laquelle les routes sont gardées avec une préférence inchangée. Le minuteur pour LLGR démarre après expiration du minuteur pour GR. Aussi, il est important de configurer ce dernier à 0.

template bgp BGP_LLGR {
  bfd graceful;
  graceful restart yes;
  graceful restart time 0;
  long lived graceful restart yes;
  long lived stale time 120;
}

Quand un souci survient sur un chemin, la session BGP se termine et le minuteur pour LLGR commence :

$ birdc show protocol R1_1 all
name     proto    table    state  since       info
R1_1     BGP      master   start  11:20:17    Connect
  Preference:     100
  Input filter:   ACCEPT
  Output filter:  ACCEPT
  Routes:         1 imported, 0 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:              2          0          0          0          4
    Import withdraws:            0          0        ---          0          0
    Export updates:             12         10          0        ---          2
    Export withdraws:            1        ---        ---        ---          0
  BGP state:          Connect
    Neighbor address: 2001:db8:104::1
    Neighbor AS:      65000
    Neighbor graceful restart active
    LL stale timer:   112/-

Le chemin lié à cette session est marqué comme périmé (ce qui correspond au s dans 100s) et la communauté LLGR_STALE est ajoutée :

$ birdc show route 2001:db8:10::1/128 all
2001:db8:10::1/128 via 2001:db8:204::1 on eth0.204 [R1_2 10:35:01] * (100) [i]
        Type: BGP unicast univ
        BGP.origin: IGP
        BGP.as_path:
        BGP.next_hop: 2001:db8:204::1 fe80::5254:3300:cc00:5
        BGP.local_pref: 100
                   via 2001:db8:104::1 on eth0.104 [R1_1 11:22:51] (100s) [i]
        Type: BGP unicast univ
        BGP.origin: IGP
        BGP.as_path:
        BGP.next_hop: 2001:db8:104::1 fe80::5254:3300:6800:5
        BGP.local_pref: 100
        BGP.community: (65535,6)

La route transmise au noyau n’est plus composée que du chemin restant :

$ ip route show 2001:db8:10::1
2001:db8:10::1 via 2001:db8:204::1 dev eth0.204 proto bird metric 1024 pref medium

Pour mettre à jour BIRD sans impact, il faut qu’il soit démarré avec le drapeau -R et la directive graceful restart yes pour les protocoles kernel. Avant la mise à jour, il faut arrêter BIRD avec SIGKILL plutôt que SIGTERM pour ne pas lui laisser l’occasion de fermer proprement les sessions BGP.

Juniper JunOS

Avec JunOS, si BFD est déjà activé, il suffit d’activer BGP LLGR pour chaque famille :

# Enable BGP LLGR
edit protocols bgp group peers family inet6 unicast
set graceful-restart long-lived restarter stale-time 2m

Une fois qu’une erreur survient sur un chemin, la session BGP associée se termine et le minuteur BGP LLGR commence :

> show bgp neighbor 2001:db8:104::4
Peer: 2001:db8:104::4+179 AS 65000 Local: 2001:db8:104::1+57667 AS 65000
  Group: peers                 Routing-Instance: master
  Forwarding routing-instance: master
  Type: Internal    State: Connect        Flags: <>
  Last State: Active        Last Event: ConnectRetry
  Last Error: None
  Export: [ LOOPBACK NOTHING ]
  Options: <Preference HoldTime Ttl AddressFamily Multipath Refresh>
  Options: <BfdEnabled LLGR>
  Address families configured: inet6-unicast
  Holdtime: 6 Preference: 170
  NLRI inet6-unicast:
  Number of flaps: 2
  Last flap event: Restart
  Time until long-lived stale routes deleted: inet6-unicast 00:01:05
  Table inet6.0 Bit: 20000
    RIB State: BGP restart is complete
    Send state: not advertising
    Active prefixes:              0
    Received prefixes:            1
    Accepted prefixes:            1
    Suppressed due to damping:    0
    LLGR-stale prefixes:          1

Le chemin défectueux est marqué comme périmé et devient inactif car il existe de meilleurs chemins disponibles :

> show route 2001:db8:10::4 extensive
[…]
BGP    Preference: 170/-101
       Source: 2001:db8:104::4
       Next hop type: Router, Next hop index: 778
       Next hop: 2001:db8:104::4 via em1.104, selected
       Protocol next hop: 2001:db8:104::4
       Indirect next hop: 0xb1d27c0 1048578 INH Session ID: 0x15c
       State: <Int Ext>
       Inactive reason: LLGR stale
       Local AS: 65000 Peer AS: 65000
       Age: 4  Metric2: 0
       Communities: llgr-stale
       Accepted LongLivedStale
       Localpref: 100
       Router ID: 1.0.0.4
[…]

Jetez un œil au dépôt GitHub pour les configurations complètes ainsi que les sorties des différentes commandes pour vérifier que tout fonctionne. Il existe aussi une variante qui utilise des réflecteurs de routes. Maintenant que FRR implémente BFD, j’espère qu’il supportera également LLGR.


  1. Avec des connexions point à point, BGP peut détecter immédiatement un problème sans s’aider de BFD. Toutefois, sur une paire de fibres, le souci peut être unidirectionnel et rester invisible d’un des deux pairs pendant plusieurs secondes. ↩︎

  2. Sur un Juniper MX, BFD est généralement géré directement par le micro-noyau temps réel attaché aux cartes poussant les paquets. Le datagramme BFD contient un bit indiquant si la gestion se fait au plus bas niveau ou non. tcpdump permet de vérifier la valeur de ce bit. Voici un exemple où 10.71.7.1 est un hôte Linux avec BIRD et 10.71.0.3 est un Juniper MX :

    $ sudo tcpdump -pni vlan181 port 3784
    IP 10.71.7.1 > 10.71.0.3: BFDv1, Control, State Up, Flags: [none]
    IP 10.71.0.3 > 10.71.7.1: BFDv1, Control, State Up, Flags: [Control Plane Independent]
    

    ↩︎

  3. Une telle fonctionnalité est l’apanage de BGP graceful restart. Toutefois, sans LLGR, les chemins non fonctionnels sont gardés avec la même préférence et ne sont pas retirés des routes ECMP↩︎

21 October, 2018 07:44PM par Vincent Bernat

27 September 2018

Stéphane Blondon

Accéder à une console lorsque gdm plante

S’il est impossible d’avoir un terminal en appuyant simultanément sur ctrl+alt+F6 , il est possible de paramétrer Grub pour démarrer Linux avec un environnement multi-utilisateur mais sans interface graphique (runlevel 3) :

Lorsque le menu de Grub s’affiche, appuyer sur e pour modifier temporairement la configuration.
Puis ajouter 3 à la fin de la ligne :
linux /boot/vmlinuz-… root=UUID=12345678-… ro quiet 3
Puis appuyer sur la/les touches indiquées par Grub pour exécuter cette entrée.

J’ai trouvé plusieurs explications indiquant d’utiliser text à la place de 3 mais ça ne fonctionne pas avec la version avec laquelle j’ai subi ce problème (2.02+dfsg1-6).

La solution vient de https://superuser.com/a/974809, possibilité 5.

…Et Grub était innocent : c’était un problème de paquets mis-à-jour mais non configurés.

27 September, 2018 06:39AM par ascendances

20 August 2018

Tuxicoman

Debian a 25 ans

La distribution Debian a 25 ans cette année.

Le projet Debian fut officiellement fondé par Ian Murdock le 16 août 1993. À cette époque, le concept de « distribution » Linux était totalement nouveau. Ian avait l’intention de faire de Debian une distribution qui serait réalisée de manière ouverte, dans l’esprit de Linux et de GNU (pour plus de détails, lisez son manifeste disponible en annexe de ce document). La création de Debian a été sponsorisée par le projet GNU de la FSF pendant un an (de novembre 1994 à novembre 1995).

Debian voulait être élaborée soigneusement et consciencieusement, maintenue et gérée avec autant d’attention. Cela a commencé par un petit groupe de hackers du logiciel libre qui grandit pour devenir une grande communauté organisée de développeurs et d’utilisateurs.

À ses débuts, Debian était la seule distribution ouverte aux contributions de tout développeur ou utilisateur. C’est toujours le seul distributeur Linux majeur qui ne soit pas une entité commerciale. C’est le seul projet important disposant d’une constitution, d’un contrat social et de chartes pour organiser le projet. Debian est également la seule distribution « microempaquetée » utilisant des informations détaillées sur les dépendances entre les paquets, afin d’assurer la cohérence du système lors des mises à jour.

Pour atteindre et maintenir de hauts standards de qualité, Debian a adopté un vaste ensemble de chartes et de procédures pour l’empaquetage et la mise à disposition des logiciels. Ces standards sont soutenus par des outils, de l’automatisation et de la documentation qui implémentent tous les éléments clés de Debian d’une manière ouverte et transparente.

Le nom « Debian » tire son origine des prénoms du créateur de Debian, Ian Murdock, et de son épouse, Debra.

Sa dernière version majeure, Debian 9 sortie en juin 2017, contient 51’687 paquets logiciels. Chapeau aux mainteneurs qui la font vivre !

Source : Manuel de Debian


Related Posts:

20 August, 2018 08:36PM par Tuxicoman

13 June 2018

Philippe Latu

Nouvelle édition de l'antisèche réseau

En plus de la révision des commandes pour la version Stretch, cette nouvelle édition inclut les instructions de gestion d'un espace de noms réseau (Network namespaces).

antisèche réseau

L'exercice consiste toujours à se limiter au recto d'une feuille. Il est donc nécessaire de faire un tri. Aussi, j'ai choisi de faire apparaître les commandes utiles aux supports de travaux pratiques du site.

Addendum ! Les exemples de résolution des noms de domaines font maintenant référence au service Quad9 au lieu de Google.

13 June, 2018 07:13AM par Philippe Latu

10 June 2018

Tuxicoman

Swap to RAM

Si votre ordi est lent avec de nombreux accès disque, il est possible que ce soit parce que les données auxquelles vous voulez accéder sont en Swap (sur disque dur) et non en RAM. Le temps d’accès au disque dur pouvant être horriblement long (sur un disque 2.5″ de portable ou une carte SD par exemple)

On peut avoir des information sur l’usage de la RAM et du Swap avec la commande :

free -h

Mais ca ne vous dit pas quels processus utilisent le Swap. Pour avoir cette info, vous pouvez regarder manuellement dans les fichiers /proc/PID/status. Mais cette commande fait le travail pour vous et vous donne l’info pour tous les processus par ordre croissant :

for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | sort -k 3 -n

Vous pouvez forcer Linux à bouger les données du Swap en RAM. L’astuce consiste à désactiver le Swap en live (assurez vous donc d’avoir assez d’espace libre en RAM avant) et à le réactiver:

swapoff -a

On peut ensuite le réactiver si on veut :

swapon -a

Related Posts:

10 June, 2018 08:00PM par Tuxicoman

01 June 2018

Stéphane Blondon

Installer Matomo sur Debian 9

Imaginons qu’Airgan, une plateforme communautaire payante de location et de réservation d’organes, veuille améliorer le suivi des visites sur son site web. Matomo est une réponse possible à ce besoin.

Matomo, anciennement Piwik, est un service web pour collecter des statistiques de visites. L’entreprise propose une version libre, auto-hébergeable et une version hébergée uniquement par Matomo qui inclut des fonctions non disponibles dans la version libre.

Matomo fournit un fichier .deb, permettant d’installer le service facilement sur une machine Debian. Cet article présente quelques éléments à prendre en compte.

Le changement de nom de Piwik à Matomo date de Janvier 2018. Tout n’a pas été transféré et la documentation ou les variables laissent parfois encore apparaître l’ancien nom.

Installation du paquet piwik

Le paquet n’est pas inclus dans la distribution mais est fourni dans un dépôt tiers géré par Matomo.
La documentation pour installer le paquet fourni par Matomo est disponible à http://debian.piwik.org/. Il suffit de la suivre.

Installation du paquet php-mbstring

Le fonctionnement du service nécessite que le paquet php-mbstring soit installé. Si ce n’est pas le cas, une erreur lors de la configuration de Matomo (dans quelques étapes, patientez !) sera affichée :

Capture d'écran de l'erreur

Une pull-request sur Github a été faite pour ajouter php-mbstring aux dépendances. Cette étape ne sera peut-être plus nécessaire dans la prochaine version ?

Configuration du service web

Le paquet ne dépend pas d’un serveur web en particulier. Le code d’example suivant suppose que c’est Apache2 qui est installé. N’importe quel autre serveur web fonctionnerait aussi.

<VirtualHost 19.84.19.84:80>
    ServerName matomo.airgan.tld

    # ce sera bien pratique quand on aura des problèmes
    ErrorLog /srv/airgan/logs/matomo-http-error.log
    CustomLog /srv/airgan/logs/matomo-http-access.log combined
    LogLevel info

    # les deux lignes importantes
    DocumentRoot /usr/share/piwik
    DirectoryIndex index.php
</VirtualHost>

Ensuite, il faut activer le virtualhost :
sudo a2ensite matomo.conf
sudo systemctl reload apache2

Ajouter un utilisateur pour la base de données

Un serveur de base de données MySQL ou MariaDB doit être installé. Ensuite, il faut se connecter sur ce serveur pour créer un utilisateur qui pourra créer la base de données et les tables nécessaires lors de la configuration de Matomo (c’est juste après cette étape, vous avez bien fait de patienter !).

#Créer un utilisateur nommé matomo :
CREATE USER matomo@'localhost';
SET PASSWORD FOR matomo@'localhost' = PASSWORD('secret');
#Lui donner les droits pour créer la base de données nécessaire au service :
GRANT CREATE, ALTER, SELECT, INSERT, UPDATE, DELETE, DROP, CREATE TEMPORARY TABLES on *.* to matomo@'localhost';

Configurer le service Matomo

Avec un navigateur web, allez sur le domaine paramétré dans la configuration du serveur web (matomo.airgan.tld dans notre exemple). Il suffit de suivre les étapes de l’interface pour finir l’installation. Elle correspond à l’étape « The 5-minute Matomo Installation » sur https://matomo.org/docs/installation/.

Une fois cette étape terminée, l’installtion est terminée et aller sur le domaine permet de voir l’interface de connexion pour accéder aux statistiques de visite.

Versions utilisées

L’installation ayant servie à écrire l’article a été faite sur
Debian GNU/Linux 9.3 (stretch) avec les versions suivantes des paquets :

apache2
2.4.25-3+deb9u4
mariadb-server
10.1.26-0+deb9u1
piwik
3.2.1-1

Dans le futur, il est possible que la livraison des organes se fasse à vélo. À étudier dans un prochain business plan.

01 June, 2018 03:51PM par ascendances

22 May 2018

Olivier Berger (pro)

Recrutement ingénieur·e DevOps pour conteneurs de Travaux Pratiques en informatique/réseaux

MAJ : nous avons trouvé le candidat. Le poste n’est plus disponible.

Nous recrutons un·e ingénieur·e en informatique pour travailler à l’application des concepts et technologies DevOps (conteneurs Docker, Git, Linux, libre, …) pour la mise au point et l’hébergement de dispositifs de Travaux Pratiques virtualisés, qui seront utilisés pour des enseignements d’informatique et de réseaux, sur un CDD de 1 an, à Télécom SudParis, à Évry (91).

Pour en savoir plus, voir le descriptif du poste que j’ai mis en ligne.

22 May, 2018 07:25AM par Olivier Berger

18 May 2018

Olivier Berger (pro)

Prochaine conférence MiNET sur les systèmes d’exploitation 24/05 Évry (France)

La prochaine conférence MiNET, le 24/05/2018 après-midi, promet d’être très intéressante sur le sujet des systèmes d’exploitation, avec 4 intervenants pointus :

  • Julia Lawall : “Introduction to Coccinelle and its usage in the Linux Kernel
  • Sebastien Valat : “Memory management and OS paging for high performance computing
  • Pierre Pronchery : “DeforaOS: Un voyage dans le développement de système d’exploitation
  • Cyril Brulebois : “Maintenir et développer la distribution Debian

Plus de détails sur https://conference.minet.net/#conf2018

N’hésitez pas à nous rejoindre à Évry pour participer à cette conférence, ou à suivre la retransmission sur la chaîne Youtube de MiNET.

 

 

18 May, 2018 08:06AM par Olivier Berger

22 January 2018

Philippe Latu

Configuration d'une interface réseau Ethernet

Une nouvelle édition du support de travaux pratiques Configuration d'une interface réseau Ethernet est disponible. La présentation des outils est maintenant «double pile IPv4 & IPv6».

Comme ce document est utilisé avec des étudiants de 2ème année GE2I, il s'agit essentiellement de manipulations de lecture d'une configuration réseau déjà en place avec la commande ip. On remonte la modélisation réseau en partant de l'identification des ressources matérielles au niveau de la couche physique pour aller jusqu'aux requêtes DNS au niveau application.

Une version imprimable est disponible au format PDF. Si vous avez des remarques ou des demandes de correction, n'hésitez pas. Le dépôt GitHub est là pour ça !

22 January, 2018 11:44AM par Philippe Latu

20 December 2017

David Mercereau

Firewall : Mon script iptables

Je partage ici mon script de firewall iptable. C’est un script « à l’ancienne », dans du bash… ça fait le taf, mais rien de bien transsudant. En gros :

  • On ferme tout les ports sauf ceux qui nous intéresse (80, 25, icmp…)
  • Petite fonction pour ouvrir les ports mis en écoute sur Portsentry. Portsentry c’est un petit logiciel de sécurité en mode « pot de miel ». On met des ports en écoute mais il n’y a rien derrière. Dès que quelqu’un tente de s’y connecter (un robot ou quelqu’un de malveillant), ça bloque son IP dans le firewall pour un temps donnée. C’est radical si vous déplacez le port SSH du 22 vers autre chose et que vous mettez Portsentry à écouter (entre autre) sur le 22…
  • Mode maintenance du serveur web (lancé via ./iptables.sh maintenance). Il permet de mettre une page de maintenance pour tout le monde sauf pour vous (j’explique en détail dans cet article)

#!/bin/bash

## IP :
# Chez moi
MOI="A.A.A.A" 
# Mon serveur
SRV1="X.X.X.X"

IPT="/sbin/iptables"
PORTSENTRYCONF="/etc/portsentry/portsentry.conf"

export IPT PORTSENTRYCONF

function portsentryOpen() {
	. ${PORTSENTRYCONF}
	IFS=',' read -ra TCP_PORTS_SPLIT <<< "${TCP_PORTS}"
	for TCP_PORT in "${TCP_PORTS_SPLIT[@]}"; do 
		${IPT} -A INPUT -p tcp --dport ${TCP_PORT} -j ACCEPT
	done
	IFS=',' read -ra UDP_PORTS_SPLIT <<< "${UDP_PORTS}"
	for UDP_PORT in "${UDP_PORTS_SPLIT[@]}"; do 
		${IPT} -A INPUT -p udp --dport ${UDP_PORT} -j ACCEPT
	done
}

# Remise a 0
${IPT} -F
${IPT} -t nat -F

# Les connexions entrantes sont bloquées par défaut
${IPT} -P INPUT DROP
# Les connexions destinées à être routées sont acceptées par défaut
${IPT} -P FORWARD ACCEPT
# Les connexions sortantes sont acceptées par défaut
${IPT} -P OUTPUT ACCEPT


######################
# Règles de filtrage #
######################
# Nous précisons ici des règles spécifiques pour les paquets vérifiant
# certaines conditions.
 
# Pas de filtrage sur l'interface de "loopback"
${IPT} -A INPUT -i lo -j ACCEPT
 
# Accepter le protocole ICMP (notamment le ping)
${IPT} -A INPUT -p icmp -j ACCEPT
  
# Accepter les packets entrants relatifs à des connexions déjà
# établies : cela va plus vite que de devoir réexaminer toutes
# les règles pour chaque paquet.
${IPT} -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# ftp 
${IPT} -A INPUT -p tcp --dport 20 -j ACCEPT 
${IPT} -A INPUT -p tcp --dport 21 -j ACCEPT
# Préalabielemnt, pour pure-ftpd : echo "29700 29750" > /etc/pure-ftpd/conf/PassivePortRange ${IPT} -A INPUT -p tcp --dport 29700:29750 -j ACCEPT
# SSH
${IPT} -A INPUT -p tcp --dport 222 -j ACCEPT
# NTP
${IPT} -A INPUT -p udp --dport 123 -j ACCEPT
# smtp
${IPT} -A INPUT -p tcp --dport smtp -j ACCEPT
# Pour test bricolage smtp
${IPT} -A INPUT -p tcp --dport 587 -j ACCEPT
# imap(s)
${IPT} -A INPUT -p tcp --dport 143 -j ACCEPT
${IPT} -A INPUT -p tcp --dport 993 -j ACCEPT
# sieve
${IPT} -A INPUT -p tcp --dport 4190 -j ACCEPT
# dns
${IPT} -A INPUT -p tcp --dport domain -j ACCEPT
${IPT} -A INPUT -p udp --dport domain -j ACCEPT
# http
${IPT} -A INPUT -p tcp --dport http -j ACCEPT
# https
${IPT} -A INPUT -p tcp --dport https -j ACCEPT

# Maintenance 
if [ "$1" == "maintenance" ] ; then
	echo "Maintenance On"
	/usr/sbin/service lighttpd start
	${IPT} -A INPUT -p tcp --dport 81 -j ACCEPT
	${IPT} -t nat -A PREROUTING \! -s ${MOI} -p tcp --dport 80 -j DNAT --to-destination ${SRV1}:81
	${IPT} -t nat -A POSTROUTING -j MASQUERADE
elif [ -f "/var/run/lighttpd.pid" ] ; then
	echo "Maintenance Off"
	/usr/sbin/service lighttpd stop
fi

# Portsentry 
if [ -f ${PORTSENTRYCONF} ] ; then
	portsentryOpen ${IPT} ${PORTSENTRYCONF}
fi

# End
${IPT} -A INPUT -j LOG --log-prefix "iptables denied: "  --log-level 4
${IPT} -A INPUT -j REJECT

# Si vous utilisez fail2ban, relancé à la fin du script :
#/usr/sbin/service fail2ban restart

 

 

 

20 December, 2017 01:16PM par David

10 October 2017

Ulrich L.

Manipuler des JSON en ligne de commande grace à JQ exemple avec cURL

Je n'utilise quasiment plus que la ligne de commande pour faire des appels sur des APIs en utilisant cURL. C'est pratique et rapide, facilement scriptable si besoin et l'historique du bash me permet de gagner du temps. Seulement la réponse fournie par cURL n'est pas toujours très lisible surtout quand il s'agit de JSON. Dans cet article je vais donc vous présenter JQ que j'utilise pour afficher un JSON facilement lisible et plus encore.

10 October, 2017 10:00PM

Manipuler des JSON en ligne de commande grace à JQ exemple avec cURL

Je n'utilise quasiment plus que la ligne de commande pour faire des appels sur des APIs en utilisant cURL. C'est pratique et rapide, facilement scriptable si besoin et l'historique du bash me permet de gagner du temps. Seulement la réponse fournie par cURL n'est pas toujours très lisible surtout quand il s'agit de JSON. Dans cet article je vais donc vous présenter JQ que j'utilise pour afficher un JSON facilement lisible et plus encore.

10 October, 2017 10:00PM

26 August 2017

nIQnutn

Nintendo 64: rejouer à de vrais jeux

C'est l'occasion de ressortir les manettes et de recommencer des jeux mythiques. C'est probablement sur la Nintendo 64 que j'ai le plus de souvenirs de jeux, du moins les plus marquants. La 3D, le multijoueur à 4 et des parties sans fin. Les réussites sont nombreuses et ont marqué les esprits en commençant par Super Mario 64, Golden Eye et Mario Kart 64 (je vais pas tous les citer). De nos jours, le jeu vidéo a changé, certains vendent des jeux pas fini et bugués et on croule sous la quantité de jeux disponibles (souvent ils manquent cruellement d'inspiration). C'est de plus en plus rare pour moi d'accrocher, avec le temps on se lasse mais je trouve que les jeux de cette époque avait une véritable identité et à part quelques patates payé à prix d'or (500 Francs de l'époque) je les ai tous terminé.

Tout ça parce que l'autre jour, j'ai eu envie de commencer un nouveau jeu mais ma liste de jeux sur Steam était beaucoup trop longue. Découragé, j'ai préféré revenir à des valeurs sûres.

Installation

Pour installer Mupen64Plus et son interface graphique:


#root
apt install mupen64plus-ui-console mupen64plus-qt

Pour lancer Mupen64Plus, aller dans le menu: Jeux > Mupen64Plus-Qt
ou directement depuis le terminal: mupen64plus-qt

Configuration

On commencer par mettre l'interface en français depuis le menu: Paramètres > Autre et on sélectionne le Français.

Ensuite, on indique le dossier des roms: Paramètres > Chemin et on ajoute notre dossier dans "Dossiers des ROMS"
Puis on actualise la liste des jeux dans le menu: Fichier > Recharger la liste
Pour finir, il faut aller dans: Paramètres > Disposition et sélectionner la vue. Sinon, on reste face à un écran vide :/

Il est possible de récupérer les infos depuis TheGamesDB.net.
Pour l'activer, aller dans le menu: Paramètres > Autre et cocher la case "Télécharger les informations sur les jeux"
On retourne dans le menu: Fichier > Recharger la liste

Il est possible de modifier les information d'une Rom. Il suffit de la sélectionner et dans le menu: Fichier > Télécharger/Mettre à jour les infos...

Si la miniature ne se met pas à jour, faut passer par le dossier ~/.local/share/mupen64plus-qt/cache et supprimer les miniatures.
Il y a visiblement un problème dans la gestion des miniatures et les fichiers .png peuvent ne pas s'afficher s'il y a un déjà un fichier .jpg

Et voilà, c'est prêt !

Ressources

https://wiki.debian.org/Mupen64Plus
https://github.com/dh4/mupen64plus-qt


nIQnutn CC-BY

26 August, 2017 11:49AM par nIQnutn

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

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

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

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.6 minimum)
  • 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 php-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 php-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*

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

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

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 :

[codeFile fichier="~/.xscreensaver"]... lock: True ...[/codeFile]

Vous voilà débarrasser.

[info]Au démarrage, il faut lancer la commande: xscreensaver -no-splash[/info]

Ressources


By nIQnutn

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

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

10 December 2014

Olivier Berger (perso)

Réparé les hauts-parleurs d'un portable HP dv6000 en échangeant deux nappes internes

Les hauts-parleurs internes du portable HP de mes parents, un dv6000, ne marchaient plus : plus de son sans devoir mettre des enceintes ou un casque :-(

En fait, il semble que ce soit un problème classique, qui semble causé par des nappes de connexion internes deffectueuses.

La réparation n'est pas trop compliquée, si on achète une nappe de remplacement, mais on peut aussi trouver un contournement.

J'ai réussi à échanger les deux nappes qui connectent la carte mère à la partie qui contient les boutons et les hauts-parleurs, au dessus du clavier, et même si maintenant, les boutons de cette rangée supérieure ne marchent plus, ce n'est pas trop grave, car le son est revenu.

Pour voir une vidéo (en anglais) qui explique comment faire, voir : Hp Pavilion Dv6000 power button and speaker fix!

Content d'avoir récupéré le son :-)

10 December, 2014 10:10PM par obergix

Réparé les hauts-parleurs d'un portable HP dv6000 en échangeant deux nappes internes

Les hauts-parleurs internes du portable HP de mes parents, un dv6000, ne marchaient plus : plus de son sans devoir mettre des enceintes ou un casque :-(

En fait, il semble que ce soit un problème classique, qui semble causé par des nappes de connexion internes deffectueuses.

La réparation n'est pas trop compliquée, si on achète une nappe de remplacement, mais on peut aussi trouver un contournement.

J'ai réussi à échanger les deux nappes qui connectent la carte mère à la partie qui contient les boutons et les hauts-parleurs, au dessus du clavier, et même si maintenant, les boutons de cette rangée supérieure ne marchent plus, ce n'est pas trop grave, car le son est revenu.

Pour voir une vidéo (en anglais) qui explique comment faire, voir : Hp Pavilion Dv6000 power button and speaker fix!

Content d'avoir récupéré le son :-)

10 December, 2014 10:10PM par Olivier Berger