PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Miamondo : Framagit est-il un outil réservé aux codeurs?

mardi 10 octobre 2017 à 14:13

 Bonjour,

J’utilise quotidiennement Framagit, que ce soit pour mes projets personnels mais également dans le cadre du collectif Emmabuntüs. Je rappelle que Framagit est une forge, c’est-à-dire une instance d’hébergement de code. Dieu sait combien j’apprécie cet outil notamment pour son interface très agréable même si je pense qu’un mode d’emploi détaillé et pédagogique pour les débutants ne serait pas du superflu.

Framagit sert donc à déposer du code. C’est d’ailleurs ce que j’ai fait avec mon premier projet personnel. Or, il se trouve que  depuis une semaine, je me suis mis en tête de reprendre un modeste roman de science-fiction inachevé, d’une centaine de pages, que j’avais rédigé il y a quelques années. Bon, il vaut ce qu’il vaut… Des écrivains en herbe, il y en a des milliers et mon but n’est pas d’être publié chez Gallimarre ou Grassouillet. Moi ce qui m’intéresse, c’est d’explorer les possibilités d’un outil issu de la culture libre. Bref, je me suis dit :

– Mais pourquoi ne déposerais-tu pas tes chapitres dans ta forge préférée?

Aussitôt dit, aussitôt fait, j’ai créé un nouveau projet intitulé le-message, ce qui correspond au titre de l’oeuvre et j’ai déposé les deux premiers chapitres. Je dois avouer que je suis très content d’avoir eu cette idée car même s’il ne s’agit pas de code, cela me permet de structurer mon travail de manière efficace et de garder une trace de toutes les modifications. Voici donc comment je procède (Je vous invite à cliquer sur les images ci-dessous).

Bildschirmfoto-6

 

Bildschirmfoto-7

 

Bildschirmfoto-8

Bildschirmfoto-9

Peut-on rêver meilleur outil pour s’organiser proprement et ne rien perdre de son travail? Je n’en suis pas sûr. Je me demande si un auteur a déjà utilisé ou utilise actuellement Framagit pour rédiger un roman. Suis-je le premier? Quoi qu’il en soit, j’ai bien envie de tenter l’aventure!

Ce projet est public et sous licence CC-BY-SA, ce qui signifie que tout un chacun est libre d’y contribuer et de modifier ce que bon lui semble parce que (veuillez me pardonner ce langage un peu fleuri) j’en ai fondamentalement rien à foutre : La culture, quelle que soit sa forme, doit être libre.

Bonne journée.


Gravatar de Miamondo
Original post of Miamondo.Votez pour ce billet sur Planet Libre.

Renault : Une erreur… bien cachée

mardi 10 octobre 2017 à 09:45

J'avais dit que je parlerais un peu des systèmes embarqués et de mes aventures dans le milieu. Aujourd'hui je voudrais relater un problème que j'avais dû résoudre au travail et qui n'était pas évident. Le prochain article sera plus générique (et celui d'après à propos d'un autre problème au boulot). Je vais essayer de varier un peu. ;-)

Ce sera sûrement un peu long, et je vais donner mon cheminement intellectuel autour de ce problème. Je respecte la chronologie des éléments dont j'avais connaissance à chaque étape.

Présentation du matériel et contexte

Pour situer un peu, je travaillais sur une plateforme Texas Instrument 8148 qui est un processeur ARM Cortex-A8 couplé avec un processeur M3 et des accélérateurs vidéos / DSP en son sein. Cette plateforme exploitait un noyau Linux 2.6.37 patchée à mort par Texas Instrument pour son processeur.

Le but du jour était d'exploiter le composant TVP5158 de… Texas Instrument encore (ce module a été conçu pour ce processeur en même temps). Pour décrire rapidement, ce composant permet de fusionner jusqu'à 4 flux vidéo analogiques (PAL / NTSC principalement) dans un seul numérisé que le processeur peut exploiter.

En soit le composant avait déjà un pilote fonctionnel pour Linux. Mais cela ne nous convenait pas. En effet, nous utilisons le TVP dans une chaîne de traitement vidéo où on faisait des décodages, redimensionnements, des remplacements d'images ou encore des encodages. Pour faire cela, non seulement il faut de la performance mais il faut aussi utiliser une API plutôt unifiée.

La performance est offerte par les accélérateurs vidéos qui sont dans les co-processeurs du système. On peut les exploiter via un firmware (dont le code source est confidentiel, désolé) et on peut communiquer avec ces accélérateurs via le noyau Linux et l'API OpenMax (OMX). Cette API est standard, éditée par le même groupe et dans les mêmes conditions qu'OpenGL, mais plutôt que de s'occuper de la 3D, il s'occupe des codecs vidéos. C'est souvent la référence libre dans ce domaine, avec GStreamer couplé avec libav.

Cette API est disponible dans le firmware de TI, cela tombe bien. Mais là où cela ce corse c'est pour récupérer des informations. En effet, il faut que durant notre traitement vidéo que nous sachions la résolution détectée par TVP du flux vidéo, et s'il existe (sur les 4 flux, des caméras peuvent être en pannes ou absentes pour diverses raisons).

Et TVP se configure via un bus assez standard et typique I2C qui est assez simple à mettre en place et largement suffisant pour lire / écrire des registres sur un composant. Il est par exemple souvent utilisé dans les cartes mères / graphiques de nos ordinateurs pour les capteurs de températures. Le soucis est que ce bus ne peut être géré par le firmware de TI (pour configurer le flux) et par le noyau Linux (pour récupérer les infos sur le flux pour l'application). Si on fait cela, il y aura conflit et le bus sera inutilisable. Modifier le firmware pour renvoyer les informations à l'espace utilisateur ou que le noyau gère la configuration du flux vidéo est plutôt complexe. Le mieux est d'utiliser un canal de communication existant entre le noyau et le firmware pour faire ceci, le firmware a donc la main sur le bus I2C et le noyau fera ses requêtes a travers lui.

On code

Partie intéressant du travail, coder. Et réfléchir à comment faire aller / revenir les informations voulues. Le noyau et le firmware, comme dans la quasi-totalité des systèmes à processeurs asymétriques, communiquent entre eux par mémoire partagée. Une partie de la RAM est allouée pour les messages, une autre pour les buffers vidéos, etc. Ceci est configurable (avec des limites) dans le code des deux côtés. Bien évidemment, les deux doivent être d'accord sur les adresses de base de chaque fonction, sinon ils ne retrouveront plus leurs petits. Cela est plutôt bien pris en charge par l'environnement de compilation fourni par TI. Vous pouvez consulter l'adressage mémoire entre les deux ici.

Dm8148-ezsdk-sw-arch.png

Bon, et le code alors ? La communication entre ces deux modules se faisant par mémoire partagée, il y a un certain protocole qui a été conçu par TI et qui s'exploite à travers une API maison nommée FVID2. Elle est déjà partiellement implémentée mais pas celle concernant le fameux TVP (qui est pourtant décrite dans l'API en question). J'ai donc écrit un pilote Linux pour combler cela. Aspect amusant, TI à la pointe de la technologie fournissait la doc de cette API dans un document .chm, un vieux format propriétaire dont le seul lecteur sous Linux potable est une application de l'ère de KDE3 : Kchmviewer. Quand je vous dis que l'embarqué c'est moderne !

Mais cela reste un peu moche, l'application en espace utilisateur demande au firmware HDVPSS de configurer le TVP. Mais, pour faire cela, il instancie le pilote interne de TVP du firmware qui ne doit pas être instancié deux fois et dont on ne peut récupérer la référence pour notre API FVID2… J'utilise donc une référence d'un autre composant dont le noyau a la référence (car il l'instancie) et j'envoie mes messages avec, le firmware a été modifié pour comprendre la situation et rediriger le message ensuite à bon port. Je n'avais pas trouvé mieux dans le délai imparti.

Et le bogue arrive… parfois

Et après le code, on teste. Après plusieurs essais difficiles, cela fini par passer. Youhou. Champomy dans les bureaux.

Mais, quand mes collègues vont tester leur application avec mon travail, cela ne fonctionne pas toujours. Le module noyau qui fait les échanges avec le coprocesseur nous signifie que certaines requêtes, en quantité variables, mettent trop de temps à revenir. On était à une moyenne de 1 à 10 échecs par minute (pour 24 requêtes). Mais il arrivait malgré tout que sur 30 minutes / 1 heure cela n'arrive pas, avant de revenir. C'est beaucoup trop problématique, et ce qui est étonnant c'est que mes tests ne présentaient aucune erreur.

Du coup, comme pour toute chaine de communication, on va déboguer étape par étape pour identifier où cela coince. Je précise que la seule section dont je pouvais difficilement déboguer c'est l'échange des messages entre Linux et le firmware qui est assez mal documenté et le code assez obscur en plus d'être gros.

Matériel

Le plus simple à tester, c'est le matériel (recompiler le firmware vidéo pour y ajouter du débogue c'est 40 minutes de compilation, c'est pénible et long, on évite au maximum de le faire). Je vérifie donc que le TVP reçoit les bonnes requêtes et y répond. Le bus I2C étant très simple, un petit oscilloscope sur un fil et on peut rapidement conclure que les signaux sont bons dans les deux sens que la requête échoue ou non à la fin.

Mais je me dis que le temps d'attente côté Linux pour recevoir ce message est trop court, je l'allonge volontairement à un délai absurde comme 30 secondes, cela ne change rien. Soit ça réussi vite, soit au bout des 30 secondes j'ai l'erreur. Pas d'entre deux, pas de hausse ou baisse de ces erreurs.

Du coup on sait que la chaîne d'envoi est bonne, et le matériel aussi, le soucis se situe bien au retour.

Firmware vidéo

Donc forcément je remonte un peu la chaîne côté firmware vidéo et à chaque étape en son sein, l'information est correcte à tous les coups. Comme le soucis n'est pas côté Linux après l'API FVID2, le soucis se situe forcément dans le transfert des messages entre les deux mondes comme on dit. Côté retour uniquement.

Plongeons au cœur de la mémoire

À ce stade là, cela devient assez étrange. Comment cela peut planter de cette manière là ? J’émets quelques hypothèses, manque de place pour l'échange de messages (il y a d'autres messages que ceux du TVP là dedans) ou éventuellement un conflit de lecture / écriture simultanée par les deux sur un même message.

Pendant que je cherchais comment l'ensemble fonctionnait, des collègues m'ont rapporté des informations pertinentes (bah oui, ils continuent de testeur leur travail de leur côté et disent ce qui est pertinent quand ils constatent le problème). Il y a une corrélation entre le nombre de caméras branchées au TVP (et exploitées par notre programme) et la fréquence du bogue. Plus il y a avait de caméras, moins cela plantait. Cela paraît contre intuitif.

J'ai maintenant une idée plus claire de ce qui semble être le cas, mais je dois vérifier. J'essaye de voir donc comment l'échange de message fonctionne, et la fonction que j'appelle a quelques lignes intrigantes dont je copie la boucle intéressante :

while (fctrl->fctrlprms->returnvalue == VPS_FVID2_M3_INIT_VALUE) {
       usleep_range(100, 300);
       if (vps_timeout) {
              do_gettimeofday(&etime);
              td = time_diff(stime, etime);
              if (vps_timeout < td) {
                    VPSSERR("contrl event 0x%x timeout\\n",  cmd);
                     return -ETIMEDOUT;
               }
        }
}

En gros, Linux initialise une valeur précise à une adresse précise dans la RAM. Quand le firmware a fini son boulot et renvoie les infos demandés, il signifie au noyau qu'il a fini en changeant la valeur initialisée précédemment. Le noyau regarde sa valeur régulièrement par tranches de 100 à 300 microsecondes pendant 2 secondes maximum.

Et comme par hasard, si je mets dans la boucle un printk de débogue (l'équivalent de printf pour le noyau, pour afficher des chaînes de caractères visibles en espace utilisateur, cette fonction est plutôt grosse), le bogue disparaît. Quelques soient les conditions.

Cela me renforce dans mon hypothèse : nous sommes face à un soucis d'accès à la valeur de cette variable. Le noyau Linux relit la variable depuis le cache ou le registre du processeur qui bien sûr ne change pas (car le processeur n'a pas changé cette valeur, c'est au coprocesseur de le faire !), du coup il voit éternellement la variable comme au départ et il croit que le firmware vidéo ne fout rien. Le printk ou l'activité du système (plus il y a de caméras, moins cela arrive, n'oublions pas) permettant à Linux de bien voir la véritable valeur en la rechargeant depuis la RAM.

Le problème vient du fait que ce genre de vérification ne doit pas se faire directement, surtout que la zone mémoire concernée a été allouée avec "ioremap()".

Il suffit donc de remplacer la ligne

 while (fctrl->fctrlprms->returnvalue == VPS_FVID2_M3_INIT_VALUE) {

Par

 while (ioread32(&fctrl->fctrlprms->returnvalue) == VPS_FVID2_M3_INIT_VALUE) {

Les accès par "ioread*()" mettent des barrières mémoires et indiquent que la variable peut être modifiée de l'extérieur. Obligeant donc une nouvelle lecture de la valeur en toute circonstance.

Conclusion

Je suis tombé sur ce bogue après quelques mois dans la vie active seulement. C'était un défi intéressant, je n'avais pas trouvé cela évident. C'est vraiment le genre de choses que l'on a tendance à oublier, on accorde trop de confiances aux couches d'en dessous (matériel / noyau / compilateur / bibliothèque / langage) qu'on en oublie qu'ils peuvent présenter des problèmes et qu'on doit faire attention en les utilisant.

Après, cela met en évidence un énième bogue / oubli stupide de la part de Texas Instrument (ils en font du code horrible, je vous le dis) qui aurait pu être évité s'ils travaillaient un peu plus avec le noyau officiel. Nul doute qu'avec plus de relecteurs de leur code, quelqu'un l'aurait vu. Mais bon, tant pis, je me suis bien amusé. :-)

Gravatar de Renault
Original post of Renault.Votez pour ce billet sur Planet Libre.

Articles similaires

Framablog : Explorons le monde des services de Contributopia

mardi 10 octobre 2017 à 09:09

L’aventure Contributopia a pour but de poursuivre et d’approfondir le travail entamé lors de la campagne « Dégooglisons Internet ». Pour la première année de cette campagne, nous comptons donc continuer à ouvrir des services web alternatifs… mais en nous y prenant un poil différemment.

Faire avec vous, pour faire mieux

Hors de question de reprendre le rythme effréné des années de campagne « Dégooglisons Internet » où nous avons sorti près de 10 services par an (vous pouvez vérifier, on a compté !). Durant cette première année de Contributopia, nous voulons prendre le temps dans l’élaboration et l’évolution de quatre services majeurs :

Cliquez pour découvrir le monde des services de Contributopia.
Illustration de David Revoy – Licence : CC-By 4.0

Prendre le temps pour mettre en ligne ces services nous permettra de mieux nous impliquer. Sauf exceptions (Framadate, Framaestro, etc.), Framasoft ne développe pas les logiciels libres qui permettent d’ouvrir les services répertoriés par Dégooglisons Internet. La plupart du temps, nous y contribuons (développement de fonctionnalités, documentation, bidouilles esthétiques, traductions, etc.) puis nous les hébergeons, les tenons à jour et nous facilitons leur adoption.

Cette fois-ci, nous voulons investir encore plus de temps professionnel, et donc de l’argent qui provient de vos dons, dans la création et l’évolution de ces projets. Nous pourrons ainsi contribuer à une réflexion plus poussée autour d’outils numériques qui sont franchement sensibles. Nous pourrons aussi et surtout prendre le temps d’être à votre écoute, de vous exposer les points d’étapes et de vous impliquer dans l’évolution de ces logiciels… S’ils sont faits pour vous, autant les faire avec vous, non ?

Quatre services Contributopistes !

 

Entrons dans le vif du sujet, avec les quatre services sur lesquels nous vous proposons de contribuer cette année…

Framasite, créer des sites web aisément

 

Framasite, illustré par David Revoy – Licence : CC-By 4.0

Première action de cette Contributopia, Framasite est d’ores et déjà ouvert : il suffit d’aller sur Frama.site pour contribuer à la phase de test ! Vous pouvez donc vous y créer un compte afin de produire un (ou plusieurs !) sites internet, pages web, blog, et même des wiki (ces fameux outils pour partager des connaissances de manière collaborative).

Nous reviendrons dessus en détail cette semaine sur le Framablog, mais l’idée est simple : offrir à la fois un espace d’hébergement et des outils pour faciliter l’expression de chacun·e sur la toile. Nous nous engageons à un hébergement éthique : vos contenus publiés sur Framasite vous appartiennent et les données des personnes qui les visiteront ne seront ni épiées, ni transmises, ni monétisées (c’est dans nos conditions d’utilisation !)

Basé sur les logiciels libres Dokuwiki (pour les wiki) et Grav (pour les sites, pages web, blogs…) nous savons qu’à ce jour, Framasite n’atteint pas encore son but : permettre de créer un site web aisément, même quand on ne s’y connaît pas trop. C’est normal, il est en phase de test.

Durant les semaines qui arrivent, nous allons travailler à sa simplification, tout en produisant des tutoriels selon des exemples précis (CV en ligne, blog, etc.). Ensuite, nous souhaitons faciliter le choix des noms de domaine (l’adresse web de votre Framasite). Enfin, fort·e·s des retours et suggestions que vous nous ferez, un⋅e stagiaire nous aidera à contribuer au logiciel Grav afin qu’il soit encore plus facile et pratique d’utilisation.

Framameet, se regrouper sans se faire pister

Framameet, illustré par David Revoy – Licence : CC-By 4.0

Aujourd’hui, les personnes souhaitant se rencontrer de visu autour de ce qui les rassemble utilisent soit des produits Facebook (les groupes, les pages et les événements), soit MeetUp, dont la création de groupes est devenue payante. Cela signifie, au choix : forcer les gens à être sur Facebook et lui donner encore plus d’informations personnelles et collectives, ou confier à MeetUp toutes les données des personnes intéressées par une activité de groupe.

Il existe des projets dans le logiciel libre qui souhaitent se poser en alternative à MeetUp, mais nous n’en avons pas (encore) vu qui offrent toutes les fonctionnalités attendues et qui sont d’ores et déjà utilisables par le grand public. Qu’à cela ne tienne, c’est une grande devise libriste : « juste fais-le ! » Nous verrons donc qui veut nous suivre dans cette aventure pour créer ensemble une alternative libre à MeetUp qui n’exploite ni les données ni les vies numériques des personnes souhaitant se regrouper.

 

Framapetitions, s’exprimer en toute confiance

Framapetitions, illustré par David Revoy – Licence : CC-By 4.0

Ah ça fait un moment qu’on en rêve, de celui-là, hein ? Déjà pendant l’été 2016, nous traduisions l’article inquiétant d’une journaliste italienne, Stephania Maurizi, sur l’exploitation financière des signataires de pétitions faites sur Change.org. Nos opinions sur le monde qui nous entoure (qui sont donc, littéralement, politiques) représentent des données sensibles. Elles valent mieux qu’une exploitation financière ou qu’un code obscur dont on ignore ce qu’il fait, non ?

Lorsque nous avons créé le service de formulaires en ligne Framaforms, nous savions qu’en bidouillant et retravaillant ce code, nous pourrions proposer un service Framapetitions, une alternative à Avaaz ou Change.org. Sauf que la différence entre un formulaire en ligne et une pétition, c’est que cette dernière peut être rejointe par des millions de personnes !

Ayant vu sur plus d’un an comment les serveurs de Framaforms tenaient la charge que représentent vos questionnaires et leurs réponses, nous sommes désormais assez confiant·e·s pour nous lancer dans la production de Framapetitions… mais nous aurons grand besoin de votre aide pour tester massivement ce service ensemble avant de le publier !

Framatube, briser l’hégémonie de YouTube

Framatube, illustré par David Revoy – Licence : CC-By 4.0

C’est un gros morceau : comment faire pour que YouTube ne soit plus aussi incontournable ? Ce réseau social de vidéos bénéficie de toute la puissance de Google… et autant vous dire qu’il en faut, des sous, des fibres et des serveurs, pour centraliser des milliards de vidéos dont certaines sont vues par des milliers (millions ?) de personnes en même temps.

Et si la solution c’était de faire autrement… ? De faire non pas un énième hébergement alternatif (un « Framatube » centralisateur) mais une fédération d’hébergements vidéos, où chacun peut communiquer avec les autres ? Mastodon (une alternative à Twitter libre et fédérée) nous a montré qu’un réseau fédéré peut permettre à chaque hébergeur de choisir ses propres règles du jeu (modération, monétisation, conditions générales) tout en offrant aux utilisateur·trice·s un accès à l’ensemble du réseau.

Peertube est un logiciel libre en cours de développement, qui permet de faire la même chose pour l’hébergement de vidéos. Et il offre un gros plus : la diffusion vidéo en pair à pair. Il fait en sorte que le navigateur web de chaque spectateur·trice d’une vidéo la partage avec les autres personnes qui sont en train de la regarder, soulageant ainsi et le réseau et les serveurs qui hébergent ces vidéos.

Nous prenons le pari de financer le salaire du développeur de ce logiciel, qui jusqu’à présent menait le projet sur son temps libre, afin qu’il parvienne à une version qu’on puisse déployer à grande échelle. C’est un pari fort car nous pensons sincèrement que, une fois cette brique logicielle construite, Peetube peut révolutionner notre monde numérique, et que d’autres pourront construire par dessus.

Ainsi, Framatube ne sera pas un endroit où déposer des vidéos, mais bien le petit maillon d’une grande chaîne que nous espérons composée d’artistes, associations, collectifs, organisations et médias qui hébergeront et diffuseront leurs vidéos.

Faire mieux que dégoogliser, oui, mais ensemble !

Alors oui : « seulement » quatre services en une année, nous vous avions habitué·e·s à plus. Mais, nous espérons que vous l’aurez compris, le but de cette année n’est pas de répondre à une urgence qui pousse vers la quantité de services, mais bien à une exigence de penser ensemble des services différemment. Sans compter qu’en parallèle, nous devons prendre le temps de poser les fondations qui nous permettront de consacrer les années suivantes à l’essaimage, puis à l’éducation populaire.

Cette année est aussi une année de transition, pour nous comme pour tou·te·s celles et ceux d’entre vous qui choisiront de nous suivre dans cette aventure. Cette transition veut tendre vers la contribution. Nous devons trouver ensemble comment commencer à ouvrir les espaces nous permettant de collaborer sur les actions présentes et à venir.

Contribuons ensemble vers cette Contributopia.
Illustration de David Revoy – Licence : CC-By 4.0

Quitte à avoir moins d’annonces-surprises fracassantes sur le Framablog, nous essaierons de vous tenir informé·e·s des points d’étapes de chaque projet. Cela pourra se passer ici, mais aussi sur nos réseaux sociaux (Diaspora*, Mastodon, Twitter et même Facebook -_-  !) ainsi que via notre lettre d’information, afin que vous ayez l’opportunité de prendre part à cette aventure.

Le maintien des projets existants et la naissance des actions à venir restent financés par les dons. Plus de deux mille personnes nous permettent de travailler. Nous tenons à vous remercier de cet engagement nécessaire à nos côtés, et de ce soutien qui fait chaud au cœur.

Vous désirez embarquer avec nous dans ce voyage en Contributopia ?

Ça tombe bien : la voie est libre !

Pour aller plus loin

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

Thuban : Les cryptomonnaies expliquées à ma fille

mardi 10 octobre 2017 à 08:08

Lorsque j'ai parlé de miner du monero, j'ai reçu quelques commentaires et des mails indiquant que les cryptomonnaies, on n'y comprends rien, on est méfiants, c'est bizarre...
Les cryptomonnaies, de quoi s'agit-il en guelques mots?
Dans cet article, je vais essayer de décortiquer tout ça et d'expliquer à ma petite maman l'intérêt de ces concepts. Nous allons parler de plusieurs monnaies afin d'en étudier les intérêts éventuels, mais pas toutes car il y en a trop.

Les intérêts des cryptomonnaies

Un peu de vocabulaire
Quelques mots qui seront utilisés ensuite :

Bitcoin

Notre histoire commence avec le bitcoin, sans doute la plus connu à l'heure actuelle. C'est en 2008, sois près de 10 ans qu'un développeur dont l'identité réelle est inconnue publie du code open-source permettant d'utiliser cette nouvelle monnaie qui a pour principales caractéristiques :

Malheureusement...

Litecoin

Le Litecoin ressemble beaucoup au Bitcoin. On peut noter quand même quelques différences intéressantes :

Et c'est à peu près tout. Pourtant , cette monnaie a eu et a encore beaucoup de succès.

Ethereum

Ethereum est la seconde cryptomonnaie la plus utilisée actuellement. C'est aussi celle qui a le plus souvent été "piratée". Comparé au Bitcoin, Ethereum ajoute l'idée de "contrat" qui sont des scripts permettant d'échanger des richesse en échange d'ether : la monnaie.
Il n'y a pas grand chose de nouveau par rapport aux monnaies précédentes point de vue concept, mis à part peut être le fait qu'une personne minant de l'ether peut choisir combien elle doit recevoir en échange de l'effort fourni.

Monero

Monero est aussi une monnaie OpenSource qui reprend les idées du Bitcoin mais corrige plusieurs points :

Duniter

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Thuban : Guide de Migration 6.1 => 6.2

mardi 10 octobre 2017 à 00:01

Ou, comment migrer d'OpenBSD 6.1 vers 6.2 ?!

Avant la mise-à-niveau

Comme d'habitude, la première action est de supprimer les manpages obsolètes :

# rm -rf /usr/share/man

Une autre étape, utile mais accessoire, est relative à la gestion du fichier ''history'' qui passe d'un format binaire à un format texte. Si vous voulez garder votre historique actuel, tapez la commande suivante :

$ fc -ln 1 | cut -f2- > ~/ksh_hist.txt

Changement de configuration

Il y a des changements dans certains fichiers de configuration à tenir compte.

Ainsi, si vous utilisez déjà IPv6, et la configuration automatique, le mot-clé ''rtsol'' est déprécié ; dorénavant, il faut utiliser : ''inet6 autoconf''.

Il y a d'autres changements relatifs aux fichiers de configuration d'ifconfig, des scripts d'installation ''install.site'', à ksh, à la gestion d'IPv6 dans PF, et de smptd.conf...
Veuillez lire le Guide de Migration traduit par nos soins, pour de plus amples informations, à ces propos, dont vous trouverez l'url en bas d'article.

Changements spécifiques

Certains binaires changent dans leur fonctionnement, en étant mis-à-jour.
C'est principalement le cas de ''beat'', ''borgmatic'', ''cups'', et ''zarafa''.

À-propos de Cups, ces binaires - que sont ''lpq'', ''lpr'', et ''lprm'' - ne sont plus liés symboliquement à ''/usr/bin''. Il est nécessaire de les préfixer en utilisant le chemin absolu ''/usr/local/bin/''.
L'astuce, afin de ne pas se fouler le poigné, est de modifier votre fichier ~/.kshrc, pour gèrer des aliases, tel que :

for i in lpq lpr lprm; do alias $i=/usr/local/bin/$i; done

Pour en savoir plus sur les autres changements induits par ces mises-à-niveau, veuillez lire le Guide de Migration...

Conseils pratiques

Avant de faire la mise-à-niveau, si vous utilisez Gnome3, pensez à désactiver gdm : # rcctl disable gdm
Lors du redémarrage, vous vous retrouverez en terminal texte, mais cela permettra de ne pas avoir de soucis avec l'interface graphique.

Vous pouvez faire de même pour xenodm...

Idem, pour les services serveurs, il est recommandé de les désactiver !

Téléchargement

Maintenant que les précautions d'usage ont été exécutées - n'est-ce pas ?! - occupons-nous de télécharger le nécessaire !

Pour cela, positionnons-nous à la racine du système et téléchargeons le binaire ''bsd.rd'', puis les fichiers de sommes de contrôle, et de signature, pour les vérifier :

$ cd /
# ftp -n -m -C "https://ftp.fr.openbsd.org/pub/OpenBSD/6.2/amd64/bsd.rd"
# ftp -n -m -C "https://ftp.fr.openbsd.org/pub/OpenBSD/6.2/amd64/SHA256.sig"
$ sha256 -c SHA256.sig 2>&1 | awk '/bsd.rd/ {print $3}'
OK
$ signify -Cp /etc/signify/openbsd-62-base.pub -x SHA256.sig bsd.rd
Signature Verified
bsd.rd: OK

Bien-sûr, il est possible de télécharger une image d'installation pour clé USB, ou pour CD ; si vous préférez cette solution, merci de lire notre tutoriel.

Quoiqu'il en soit la phase d'installation est la même ;)

Installations

(Re)démarrons la machine informatique, et lors de l'invite 'boot>', tapez : boot bsd.rd

Laissez faire, jusqu'à ce que le processus vous demande le choix d'(I)nstaller, d'(U)pgrader, etc … choisissez : ''U''

Puis, tapez ''http'' si vous voulez la faire en étant connecté à Internet...
ou si vous avez le CD ou une clé USB, tapez ''cd'' !

Ensuite, répondez aux questions, tout comme lors de votre première installation… pour finir par redémarrer, si tout s'est bien passé : reboot

Normalement, OpenBSD met-à-jour automatiquement les firmwares, et essaye de fusionner correctement les nouveaux fichiers de configuration avec ceux que vous auriez pu modifier...
au cas où, utilisez ''fw_update'', puis ''sysmerge''.

Puis terminez par la mise-à-niveau des packages !

# pkg_add -iuv

Laissez faire, et une fois effectuée - étape qui peut être très longue, selon le nombre de paquets que vous aviez précédemment installés pour votre usage - exécutez : # pkg_check

Parfois, il peut être nécessaire de répèter ces deux dernières commandes...

Ceci étant dit, étant fait, pensez à réactiver les services que vous auriez désactivé, lors de la phase de préparation de la mise-à-niveau, puis une fois fait, redémarrez votre machine...

Une fois que vous êtes dans votre session, pensez à lire les fichiers pkg-readmes préparés dans ''/usr/local/share/doc/pkg-readmes/''.

Documentation

La traduction anglais->français (in)officielle du Guide de migration OpenBSD 6.2 est prête !


N'hésitez pas à venir en discuter sur notre forum ;)

 

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.