David Madore's WebLog: 2016-09

This WebLog is bilingual, some entries are in English and others are in French. A few of them have a version in either language. Other than that, the French entries are not translations of the English ones or vice versa. Of course, if you understand only English, the English entries ought to be quite understandable without reading the French ones.

Ce WebLog est bilingue, certaines entrées sont en anglais et d'autres sont en français. Quelques-unes ont une version dans chaque langue. À part ça, les entrées en français ne sont pas des traductions de celles en anglais ou vice versa. Bien sûr, si vous ne comprenez que le français, les entrées en français devraient être assez compréhensibles sans lire celles en anglais.

Note that the first entry comes last! / Notez que la première entrée vient en dernier !

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entries published in September 2016 / Entrées publiées en septembre 2016:

(jeudi)

Donald Trump me terrifie vraiment

Je ne nie pas que je suis chaque élection présidentielle américaine avec un certain intérêt, mais cette fois-ci, ce n'est pas juste de l'intérêt : la possibilité bien réelle que Donald Trump devienne le prochain président des États-Unis me terrifie complètement. C'est loin d'être une certitude, bien sûr, malgré les gaffes, les scandales et les doutes sur la santé de sa principale adversaire (je vais y revenir) ; peut-être que Trump a moins de 50% de chances d'être élu, peut-être même seulement 40% (ou 30% si on est carrément optimiste), mais cette perspective est tellement épouvantable que, fût-elle pondérée par 30%, elle reste alarmante : si je dois jouer à la roulette russe avec seulement deux balles dans le chargeur, je vais peut-être être content de savoir qu'il n'y en a pas trois, quatre ou cinq (ou six !), mais je préférerais ne pas jouer du tout. Et rien ne dit que la probabilité soit aussi faible (sans entrer dans la question philosophique oiseuse de ce qu'une probabilité signifie au juste) : elle se base sur une lecture éduquée de sondages, mais même pour des statisticiens avertis (voir par exemple ici et , et si on croit aux forces du marché, ), manipuler tant d'inconnues est délicat, et Trump a déjà donné tort aux experts[#] qui ne lui donnaient aucune chance lors de la primaire.

[#] Il est vrai que, à ce niveau, les sondages avaient justement raison contre les experts qui disaient les sondages se trompent forcément, Trump ne peut pas être aussi haut. Maintenant, les experts se méfient. Mais les sondages peuvent quand même se tromper énormément, surtout face à quelqu'un d'aussi imprévisible et dans une campagne aussi bizarre.

Ce n'est pas seulement que je croie que les idées de Trump soient mauvaises et dangereuses : ce serait déjà beaucoup s'il avait un programme, si on savait à quoi s'attendre. Mais ce qu'on a vu pour l'instant, dans cette campagne, montre simplement que Trump est totalement impulsif et instable, capable de dire tout et son contraire et de faire n'importe quoi, et que personne, ni ses alliés ni ses ennemis, ne peut prévoir ses réactions ; tout suggère qu'il a le contrôle de soi et la tempérance d'un enfant de cinq ans caractériel ; que ses capacités d'attention ou de prévoyance sont nulles, et que les quelques facultés mentales qu'il a sont tout entières tournées vers la satisfaction de sa mégalomanie égocentrique. D'autres personnes cherchent à se faire élire à une fonction publique pour réaliser un programme plus ou moins bon, mais Trump semble n'avoir tout simplement pas d'idées politiques : la fonction présidentielle est simplement une médaille dorée qu'il veut ajouter à sa collection.

Je pourrais tenter de faire une liste de quelques unes des pires ignominies qu'il a vomies, que ce soit en matière de racisme, de misogynie, ou simplement de haine aveugle. Je pourrais étayer le fait qu'il n'est pas seulement menteur, mais ostensiblement fier de ce que la vérité n'ait qu'une connexion extrêmement ténue à ses discours (à ce stade-là, ce n'est même plus la peine). Je pourrais citer certaines de ses contradictions si nombreuses qu'on ne peut plus lui attribuer la moindre position (admettons que cet échantillon est amusant à regarder). Je pourrais évoquer la copieuse panoplie de scandales, de fraudes et de malversations qui l'entourent (je vais me contenter de renvoyer au dernier épisode de Last Week Tonight [épisode 3:23 du 2016-09-25]). Et je pourrais mentionner quelques uns des indices qui font craindre quant à sa santé mentale ou en tout cas ses facultés émotionnelles et intellectuelles (voir par exemple ceci ou cela pour une discussion). Je pourrais remarquer que même comme homme d'affaire, quand on regarde de près, on trouve surtout des signes de son incompétence. Mais toutes ces démonstrations n'auraient qu'un intérêt assez médiocre : quiconque a suivi, même de loin, cette campagne, ne peut pas accorder encore le moindre bénéfice du doute à Donald Trump sauf à être d'une mauvaise foi telle qu'aucun argument ou aucune preuve ne le convaincra jamais : pour penser du bien de cet homme, il faut s'être entouré d'une armure impénétrable de fausseté [← je ne trouve pas de mot français pour delusion], et je pense que ce n'est pas le cas de mes lecteurs.

En fait, le problème, ce ne sont pas tant les irrécupérables qui soutiennent Donald Trump que ceux qui pensent que les maux de son adversaire (et incontestablement, il y en a) sont comparables. Ou qui par principe refusent de se boucher le nez et de choisir le moindre mal : et qui, du coup, ne vont pas voter, ou vont voter pour Gary Johnson ou Jill Stein, lesquels n'ont aucune chance[#2][#3] d'être élus. Or comme le dit une citation célèbre (dont personne ne connaît l'origine exacte, d'ailleurs), tout ce qu'il faut pour que le Mal triomphe est que les gens de Bien ne fassent rien. Même Noam Chomsky, qui n'est certainement pas du genre à appeler à voter utile en toute circonstance ou à soutenir les démocrates en général (il qualifie Barack Obama, par exemple, de criminel de guerre à cause des exécutions à distance par drones), a écrit un texte appelant à faire barrage à Trump à cette élection-ci.

[#2] Pour qu'on ne me fasse pas dire ce que je n'ai pas dit : il n'y a rien de scandaleux en soi à voter pour quelqu'un qui n'a aucune chance d'être élu (surtout que ce concept de n'avoir aucune chance doit être pris avec des pincettes, sous peine de devenir une prophétie auto-réalisatrice). Ce qui est scandaleux à mes yeux, c'est de le faire par principe et sans tenir compte des autres circonstances (notamment, la différence de programme entre les candidats qui ont une chance, et à quel point l'écart est serré entre eux). Je renvoie au texte de Chomsky pour une argumentation un peu plus précise des facteurs à prendre en compte. Je ne me prononce pas au sujet du vote pour des candidats de tiers partis sur l'une des nombreuses autres élections qui ont lieu en même temps que la présidentielle américaine et qui peuvent avoir beaucoup d'importance aussi (et de fait, des candidats indépendants sont effectivement élus, y compris jusqu'au Sénat).

[#3] En plus de quoi, Gary Johnson semble à peu près aussi ignorant et incompétent que Donald Trump, donc ce n'est pas comme si c'était tellement mieux de voter pour celui-là que pour celui-ci, quand bien même il aurait une chance sérieuse.

Il y a, en fait, énormément d'électeurs qui estiment qu'il leur est impensable de voter pour Trump comme pour Clinton, tant l'impopularité de cette dernière est énorme. Cette impopularité est assez difficile à comprendre : les scandales qui l'affectent (cf. l'extrait de Last Week Tonight lié ci-dessus), l'opacité autour de son état de santé[#4], tout cela devrait paraître assez insignifiant par rapport aux abjections que l'autre étale fièrement chaque jour. Le nombre de déçus de Bernie Sanders (et fâchés de l'opacité du système des primaires démocrates) ne suffit pas non plus à expliquer que Clinton et Trump soient presque à égalité dans les sondages ; pas plus que l'impression d'insincérité ou d'appartenance dynastique que peut dégager celle qui a été première dame, sénatrice et secrétaire d'État. Même une personne totalement dégoûtée de la politique ou repoussée par les programmes des deux grands partis[#5] devrait au moins admettre qu'il vaut globalement mieux avoir un président compétent, intelligent et sain d'esprit (et personne ne conteste que Clinton soit tout ceci) que le contraire. En vérité, le fait même qu'il puisse y avoir une chance que Trump soit élu, et a fortiori le fait qu'elle soit aussi énorme, suffit à me faire désespérer de l'humanité.

[#4] Difficile de faire la part de l'inquiétude légitime et de la théorie du complot. Mais ce genre de préoccupation souligne surtout l'absurdité du système présidentiel, qui fait que la santé d'une seule personne devient un enjeu aussi considérable.

[#5] En fait, le programme des Démocrates a assez peu d'importance vu qu'ils ne disposeront pas de majorité à la Chambre des Représentants pour faire quoi que ce soit. Les Républicains, eux, risquent d'avoir effectivement le pouvoir de faire des choses.

Je crois qu'un phénomène important qui explique que ce soit aussi serré est la fausse équivalence sous laquelle les médias américains présentent les deux candidats : par peur de paraître trop biaisés, ils tendent donc à accorder autant de temps ou d'importance aux reproches faits à un candidat et à l'autre, ce qui accentue l'effet « Trump est certes horrible, mais Clinton aussi », bref, l'impopularité de son adversaire déteint sur elle (et même les médias qui ne font pas ça provoquent quand même cet effet, parce qu'on s'attend à ce que les médias cherchent cette sorte d'équilibre artificiel, et du coup, ceux qui ne le font pas passent pour biaisés en faveur de Clinton).

La notion même de vérité semble d'ailleurs avoir totalement disparu de la campagne, ce qui, indépendamment de la figure de Trump, est effrayant : ce qui compte n'est plus ce qui est vrai, plus personne n'en a cure (et Mme Clinton se fatigue pour rien à dire globalement la vérité aux électeurs), ce qui compte est ce que les gens ressentent. (J'ai le souvenir, par exemple, sur la question de l'insécurité, à je ne sais quel journaliste qui signalait qu'elle était plutôt en baisse, qu'un ténor du parti Républicain a rétorqué que ça n'avait pas d'importance parce que les électeurs ne le sentaient pas comme ça.) La blague que truth has a liberal bias n'a jamais sonné plus juste. (Voir aussi ici ; et voir ce que je disais dans une entrée précédente.)

Il y a peut-être un effet cyclique dans l'électorat qui fait que si Donald Trump dépasse Hillary Clinton dans les sondages, les gens se réveillent en se rendant compte qu'il a des vraies chances de devenir président, et reconsidèrent leur décision de ne pas voter, ou de voter pour un tiers parti ; mais dès que Clinton remonte, ils reviennent sur cette décision, comme si les sondages étaient quelque chose de fiable et que l'avance de epsilon pour cent qu'elle a sur lui signifiait que le danger était écarté. Et au moment où j'écris, on est peut-être bien bloqué dans un état où Clinton a, effectivement, une avance epsilonesque sur son adversaire, suffisante pour que beaucoup de gens se disent qu'elle va le battre et que ce n'est donc pas la peine de se mobiliser, mais insuffisante pour écarter vraiment le danger.

Mais j'en reviens à moi-même.

Je ne suis pas Américain. La décision ne dépend donc pas de moi. Mais suis-je pour autant concerné ? Certainement. Quand Rodrigo Duterte (qui a beaucoup de points en commun avec Trump) a été élu à la présidence des Philippines, j'étais affligé pour les Philippines, mais je ne me sentais pas moi-même directement menacé ; la perspective que Trump soit élu président des États-Unis, en revanche, menace le monde entier.

J'ai tendance à penser des dirigeants qu'ils sont souvent dans la position où il est quasiment impossible pour eux de faire du bien, mais extrêmement facile de faire du mal. Lorsqu'il s'agit du président des États-Unis, ce mal s'exerce sur la planète tout entière. Et quand il s'agit d'un fou qui n'a aucune notion du bien ou du mal ou de capacité intellectuelle à juger les conséquences de actions, le risque est immense. Je ne mentionnerai que trois points.

D'abord, il y a le changement climatique. L'accord de Paris sur la limitation des gaz à effet de serre est faible et insuffisant, mais je faisais partie de ceux qui pensaient que rien n'allait sortir de cette conférence et j'ai été très agréablement surpris qu'elle accouche d'un accord, fût-il minimal, laissant espérer qu'on ait peut-être une chance de réussir à infléchir la trajectoire dans laquelle nous sommes partis. D'un autre côté, cette chance est unique : si elle échoue, cela confortera l'idée qu'il est impossible de parvenir à un accord, et plus personne ne voudra réessayer. Or si Donald Trump est élu président des États-Unis, l'accord de Paris est mort : il a clairement dit qu'il s'en retirerait (il a peut-être aussi dit le contraire, vu qu'il dit tout et son contraire, mais sur ce point-là, on sait à quoi s'en tenir avec lui), et de surcroît, il nommera certainement quelqu'un à la Cour Suprême qui complètera une majorité conservatrice certainement encline à frapper cet accord quand bien même un président ultérieur voudrait le réinstaurer (surtout s'il passe par voie exécutive et sans confirmation par le Sénat). Ce point à lui tout seul suffit à me faire craindre, si Trump est élu, pour l'avenir de l'humanité.

Ensuite, il y a la géopolitique, et les risques d'une guerre mondiale, ou atomique, ou les deux. Je ne vais pas prétendre que ça me semble hautement probable, même si Trump est élu, mais le risque est tellement colossal que même en regard d'une probabilité faible, il demeure terrifiant. Je ne pense pas que Trump enverra une bombe atomique en Europe pour le simple plaisir d'appuyer sur le bouton rouge ou de montrer son pouvoir, mais je n'en suis pas certain non plus, tant il semble dépourvu de la moindre graine de conscience (et je ne crois pas qu'il existe un quelconque garde-fou pour l'en empêcher s'il lui en prend l'envie) ; et de toute façon, il n'est pas nécessaire qu'il rase Paris pour que cela m'affecte directement : on a tendance à l'oublier, mais l'équilibre de la terreur demeure hautement précaire, et avoir un fou à la Maison Blanche est un danger imminent pour l'humanité.

Enfin, il y a l'économie. En mettant de côté toutes les critiques de fond qu'on peut faire au capitalisme libre-échangiste mondialisé, il y a une chose qui me frappe particulièrement, c'est à quel point il est instable, et à quel point les boucles de rétroaction toujours plus complexes et plus rapides qui se mettent en place au fur et à mesure que les services s'intègrent les uns aux autres au niveau mondial, tendent à devenir autant de facteurs d'instabilité et de propagation des crises. Les uns diront que c'est une caractéristique intrinsèque de l'économie de marché (un peu comme elle l'est de l'écologie des populations), les autres diront que c'est un effet des tentatives pour contrarier le libre-échange qui empêchent les effets stabilisateurs de s'exercier correctement, toujours est-il que l'économie mondiale semble une construction tout aussi instable que la relative paix sur le plan géopolitique. Si Donald Trump fait ce qu'il sait faire, c'est-à-dire n'importe quoi, c'est exactement le genre d'instabilité qui peut faire plonger l'économie bien plus bas que la crisounette de 2008. (Même The Economist, qui n'est pas vraiment suspect de critique systématique contre le capitalisme, avertit de ces risques. Certes, leur analyse diffère de la mienne, parce qu'ils craignent avant tout son hostilité contre le libre-échange, mais sur point central nous sommes d'accord : il peut faire n'importe quoi et il est totalement imprévisible.)

Ce ne sont que des exemples de ce pourquoi Trump me fait peur, et de nouveau, en ignorant totalement son racisme, sa misogynie et le reste de son programme répugnant qui peut faire tant de mal aux États-Unis, et en me concentrant simplement sur sa personnalité et ce qui peut faire du mal au monde entier. Même si je n'avais pas ces peurs précises en tête, le fait que quelqu'un d'instable reçoive des pouvoirs immenses est terrifiant. Quand je dis que Trump me fait peur, évidemment, c'est une forme d'imprécision : ce n'est pas Trump lui-même qui me fait peur, c'est la possibilité qu'il devienne président ; je n'ai pas peur non plus d'un enfant de cinq ans, mais si on me dit que cet enfant de cinq ans va recevoir le pouvoir d'envoyer des bombes atomiques n'importe où sur la planète quand il en a envie, alors là je pisse dans mon froc.

Le plus ironique, c'est que Trump lui-même n'a probablement pas envie de devenir président, ou en tout cas, il n'a probablement pas envie de gouverner. Ce qu'il voulait en se lançant dans la campagne, c'était attirer l'attention, être un gagnant et gratifier son ego, mais l'idée de gouverner le fait chier ; il semble qu'il ait proposé à John Kasich (un de ses rivaux malheureux lors de la primaire républicaine, le plus sensé d'entre eux d'ailleurs) d'être son vice-président et de s'occuper de tout à sa place (la phrase exacte était in charge of domestic and foreign policy, ce à quoi l'aide de Kasich a logiquement demandé ce qui restait et la campagne de Trump a répondu making America great again) : cette histoire est peut-être déformée mais elle colle prafaitement avec la manière dont on perçoit la personnalité du bonhomme. (Je vais aussi devoir de nouveau faire une référence à Last Week Tonight : voir ici pour son message à Trump [extrait de l'épisode 3:22 du 2016-08-21 ; il ne semble pas qu'il y ait de vidéo officielle de ce segment sur YouTube, ce qui est bien dommage].)

Un autre point ironique, c'est qu'un des arguments que Trump utilise pour essayer de se faire élire est la peur du terrorisme. Mais il faut être vraiment déconnecté de la réalité pour se sentir plus menacé par des terroristes qui font à tout casser quelques morts par an et par million d'habitant dans les pays occidentaux, probablement même moins que 1 par an et par million aux États-Unis, que par Donald Trump dont on pourrait s'estimer très réconforté si on avait la garantie que ses politiques ne causaient que quelques centaines de morts.

Toujours est-il qu'en ce moment, dès que je me lève, je regarde si Clinton a fait une gaffe (ou a eu une quinte de toux) qui pourrait lui coûter l'élection. (Trump, lui, ne peut pas faire de gaffe, bien sûr : tout ce qu'il dit est du niveau de ce qui serait considéré inadmissible pour n'importe quel autre candidat.) Le lendemain de chaque débat est un moment d'anxiété particulière (a-t-elle dit un mot de travers ? s'est-elle trouvée mal ? va-t-on tous mourir à cause de ça ?), et le jour de l'élection je suppose que je ne dormirai pas de la nuit.

(jeudi)

Le problème des gadgets électroniques qu'on peut bricker (briquer ? pétrifier ?)

Il faut d'abord que je commente le mot bricker dans le titre de cette entrée. C'est un anglicisme (l'anglais est to brick, c'est-à-dire que le nom commun brick a été sauvagement verbé), mais je ne crois pas qu'il existe de mot français : on peut écrire bricker en important le mot anglais, ou bien briquer en reproduisant la même construction qu'en anglais (ce verbe existe déjà en français avec un sens différent — frotter pour faire briller — mais je ne trouve pas que la confusion soit problématique, et à la limite ça peut marcher de façon humoristique). Quelqu'un m'a proposé pétrifier, ce qui est effectivement astucieux pour rendre le sens de ce dont je veux parler ici, et du coup je vais l'utiliser dans la suite.

De quoi s'agit-il ? Je définirais ce mot de la manière suivante : rentre, généralement par accident, un appareil électronique inutilisable (aussi utile qu'une brique, donc), en abîmant non pas le matériel lui-même, mais le logiciel qui sert à démarrer.

Expliquons un peu, pour ceux qui ont besoin de plus de précisions. De nos jours, énormément de gadgets électroniques (en gros, tout ce qui est plus complexe qu'une télécommande) sont, en fait, de petits ordinateurs dédiés, dits aussi « embarqué ». Autrefois, un téléviseur (par exemple), c'était de l'électronique spécialisée, maintenant c'est un ordinateur embarqué qui sait décoder la TNT et parle à l'écran LCD ; il en va de même, par exemple, des voitures (et d'ailleurs ça me fait très peur vu le niveau général catastrophique de la sécurité informatique et vu que les constructeurs n'auront aucune obligation à maintenir ad vitam æternam le logiciel). Énormément d'entre ces gadgets, soit dit en passant, tournent sous Linux (tous les téléphones ou tablettes Android, bien sûr, mais aussi les MachinBox qui servent de modem-routeur ADSL ou fibre, et je soupçonne, beaucoup de télévisions, de magnétoscopes, etc.), vu que Linux est très commode pour avoir rapidement un système standardisé sur un matériel à peu près quelconque. Je pense que Madame Michu serait très étonnée de savoir combien de systèmes Linux elle a chez elle.

Certains appareils (montres, frigos, fours, machines à laver) sont encore dans une phase où coexistent plusieurs versions sur le marché : purement électroniques, les véritables ordinateurs embarqués, et quelque chose d'intermédiaire comme un microcontrôleur. Mais avec l'Internet of Things (également appelé, la catastrophe de sécurité informatique qui va nous fondre dessus), les frigos, fours et machines à laver seront aussi de plus en plus souvent de véritables ordinateurs, capables de parler au réseau (et de se faire attaquer par lui). Ironiquement, maintenant, même les périphérique des ordinateurs sont souvent des ordinateurs eux-mêmes : les disques durs modernes, par exemple, ont un véritable ordinateur à l'intérieur (typiquement un processeur ARM), pour pouvoir mener toutes les choses complexes qu'un disque dur est censé faire (positionner les tête, contrôler les sommes de contrôle sur les données lues, analyser sa propre santé et la rapporter à l'ordinateur hôte, etc.).

L'avantage des ordinateurs par rapport à l'électronique pure (par électronique, je veux dire qu'il n'y a pas de puce généraliste, microprocesseur ou microcontrôleur, même si évidemment les frontières ne sont pas parfaitement bien définies), c'est qu'ils permettent de faire des choses beaucoup plus complexes de façon plus simple, et globalement ils sont plus flexibles. L'inconvénient, le pendant du généralisme, c'est qu'un microprocesseur seul ne sait rien faire : il lui faut un logiciel, un programme, également appelé du « code », pour faire quoi que ce soit, et notamment quoi que ce soit d'utile. Dans le cadre d'un ordinateur embarqué ou de périphériques d'un ordinateur, ce logiciel s'appelle souvent firmware (intermédiaire entre hardware, le matériel, et software, le logiciel sous-entendu de plus haut niveau).

On peut imaginer que ce firmware soit fixé une fois pour toutes : stocké en ROM (mémoire en lecture seule), gravé dans le marbre pour toute la vie de l'appareil. On se rapproche de l'électronique (une fois que l'électronique est câblée, plus moyen de changer). Mais cela signifie qu'en cas de problème, il sera impossible de corriger le bug ou le trou de sécurité. Du coup, ces appareils prévoient souvent un moyen de mettre à jour leur firmware : on utilise souvent le terme de flasher le firmware, parce qu'il est typiquement contenu dans une mémoire persistante appelée mémoire flash. Et c'est là que les ennuis commencent : parce que la mise à jour du firmware est à la fois une réponse à toutes sortes de problèmes (comme des trous de sécurité) et la cause de toutes sortes de problèmes (comme des trous de sécurité ! car si un attaquant modifie le firmware, il prend durablement contrôle de l'appareil, c'est plus grave que si le firmware n'était pas modifiable).

La modification du firmware est elle-même une opération qui nécessite l'éxcution de code, ce faisant partie du firmware, et c'est là qu'on comprend que les ennuis commencent vraiment. Parce que si l'opération échoue pour une raison ou une autre (bug, fausse manip', coupure de courant au mauvais moment) et qu'on se retrouve avec du firmware qui ne marche plus, on n'a plus de moyen de remettre en état le firmware : on se retrouve avec une brique : l'appareil ne marche plus, faute de firmware, et il n'y a pas de moyen, ou en tout cas pas de moyen simple, de remettre le firmware en état.

On peut bien sûr imaginer toutes sortes de façons de régler quand même le problème, et de rendre une machine impossible à pétrifier. Discutons un peu ces différentes approches.

La façon la plus évidente, comme je l'ai dit, c'est que le firmware ne soit pas du tout modifiable. Sur certains appareils (mais ce n'est pas courant), il faut actionner un interrupteur mécanique, ou décaler un jumper, ou quelque chose comme ça, avant de pouvoir flasher le firmware (si on ne le fait pas, la mémoire n'est pas modifiable) : ceci évite au moins les modifications malencontreuses dues à un bug ou une attaque, mais ça n'empêche pas qu'on puisse pétrifier la machine en cas de problème lors d'une mise à jour légitime (l'interrupteur étant donc actionné). Une autre solution consiste à avoir deux versions du firmware sur l'appareil, l'une dans une mémoire flash qu'on peut mettre à jour, l'autre dans une ROM inaltérable (en fait, probablement, une mémoire flash dont les pattes servant à réécrire le contenu n'ont pas été câblées) : un petit interrupteur permet de choisir — au niveau purement électronique — la version utilisée, on choisira normalement la première, mais en cas de problème on pourra démarrer sur la seconde, qui est capable de reflasher la première. Ceci permet bien d'avoir un appareil « impétrifiable » dont le firmware peut cependant être mis à jour. Astucieux. Je crois que ma carte mère a quelque chose du genre (un firmware/BIOS alternatif, non modifiable, du moins j'espère, accessible en appuyant sur un bouton, et qui est simplement capable d'aller lire un fichier sur une clé USB qui doit être branchée sur un port précis, et de reflasher le firmware/BIOS principal avec son contenu), mais les explications du manuel ne sont pas un modèle de clarté donc je ne suis pas sûr.

On peut imaginer d'autres moyens de rendre un appareil impétrifiable. Par exemple, si le firmware est flashable depuis un autre ordinateur, on pourra ranimer la brique tant qu'on dispose d'un ordinateur fonctionnel. Une idée serait d'avoir un firmware contenu dans une simple clé USB : pour le flasher, il suffirait de mettre un fichier différent sur cette clé USB. Malheureusement, la simple opération de lire une clé USB nécessite elle-même du code, donc un firmware, et on a un problème de bootstrap si on veut mettre le firmware sur clé USB (bootstrap fait référence à un épisode où le baron de Münchhausen se sort de l'eau en tirant sur les languettes de ses bottes). Mais on peut contourner ce problème de différentes façons. Par exemple, avoir un firmware zéro qui sait simplement lire un firmware sur clé USB, puis l'exécuter et décider que ce firmware zéro sera gravé en ROM donc impossible à modifier (c'est une solution raisonnable, et elle se rapproche de ce que je raconte ci-dessus à propos de ma carte mère). À défaut de clé USB, le firmware peut être contenu dans une puce détachable et on peut vendre un gadget (USB par exemple) permettant d'en modifier le contenu depuis un autre ordinateur. Ou encore, il peut y avoir un tel gadget intégré dans l'appareil lui-même : si on branche une connexion USB et qu'on allume l'appareil d'une certaine manière (peut-être en appuyant sur un bouton), on pourra flasher le firmware depuis un autre ordinateur, par pure électronique.

Les petits systèmes embarqués que j'utilise comme routeurs chez moi et chez mes parents, des DreamPlugs (ce sont des ordinateurs ARM), ont une petite mémoire flash (NOR) de 2Mo qui suffit à stocker un code de démarrage (bootloader, en l'occurrence U-Boot) capable de charger autre chose par Ethernet, USB ou eSATA, en ce qui me concerne un noyau Linux. On peut reflasher la mémoire NOR en passant par Linux ou depuis le bootloader U-Boot lui-même ; mais si l'opération échoue pour une raison ou une autre et que le DreamPlug est pétrifié ? Alors il faut utiliser une autre approche, qui consiste à prendre le contrôle du processeur et de la mémoire du DreamPlug depuis un autre ordinateur, en passant par une interface JTAG côté DreamPlug (et reliée de l'autre côté à un petit boîtier lui-même relié par USB à l'ordinateur qui contrôle) : de cette manière, on peut utiliser le programme OpenOCD pour mettre un U-Boot frais quelque part dans la mémoire du DreamPlug, démarrer dessus, et s'en servir pour reflasher la mémoire NOR. En théorie, c'est très bien. En pratique, il y a quantité de problèmes : la connexion JTAG n'est pas très stable, parfois elle ne marche pas du tout, parfois il faut réessayer plusieurs fois avant qu'elle marche ; en plus, OpenOCD version ≥0.8.0 ne fonctionne plus avec mon boîtier de contrôle JTAG, bref, ce n'est pas la joie. Mais au moins sur le principe, mes DreamPlugs sont « impétrifiables ». On ne peut pas en dire autant de la plupart des téléphones mobiles.

Beaucoup de fabricants de gadgets électroniques ont essayé l'approche suivante, qui ne sert pas seulement à éviter que le gadget soit pétrifié, mais aussi à ce que le le fabricant garde un contrôle sur le code qui tourne dessus : avant que le firmware accepte de flasher un nouveau firmware, il vérifie que celui-ci est acceptable, généralement au sens où il a été signé (par une signature électronique) par le fabricant. Malheureusement, cette approche est condamnée à l'échec pour toutes sortes de raisons, elle n'empêche pas la pétrification et elle pose toutes sortes de problèmes, ce qui n'empêche pas les fabricants de l'aimer. Une raison pour laquelle cette approche n'empêche pas la pétrification, c'est qu'il n'y a rien de magique dans le firmware de démarrage : s'il est capable de flasher la mémoire persistante, un autre bout de code en est aussi capable, donc dès que l'appareil présente un trou de sécurité quelque part (i.e., toujours), l'attaquant risque de pouvoir s'en servir pour reflasher le firmware, et l'approche choisie rend alors quasiment impossible de remettre les choses en état. (The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair. — Douglas Adams, Mostly Harmless) Une autre raison qui fait que l'approche ne marche pas, c'est que la crypto est souvent mauvaise, par exemple au lieu d'utiliser une signature à clé publique, ce qui est possiblement lourd sur un appareil embarqué, on va parfois utiliser un MAC, dont la clé (symétrique) est alors forcément contenue dans le firmware, et qui va donc forcément fuiter. Encore une autre raison est qu'il y a un intervalle de temps entre le moment où le firmware vérifie la signature et le moment où il se reflashe, et il est parfois possible d'exploiter astucieusement cet intervalle pour changer le contenu sous ses pieds (on lui fait croire que la signature est bonne en vérifiant un « bon » nouveau firmware, mais au moment où il flashe la mémoire, c'est autre chose qui se présente). Toutes ces attaques sont menées soit par des attaquants malicieux qui veulent prendre le contrôle de l'appareil à l'insu de son propriétaire, soit par les propriétaires eux-mêmes qui veulent prendre le contrôle de leur propre gadget dont le fabricant essaie de limiter l'usage. Dans les deux cas, la pétrification est un résultat accidentel, mais qui se produit néanmoins dans une certaine proportion des cas.

Pourquoi les fabricants ont-ils si souvent recours à la méthode « vérification du firmware avant de le flasher » (dont je viens de parler) si elle ne marche pas vraiment ? Parce que cette méthode leur garantit — dans la mesure où elle marche, tant qu'elle marche — un certain contrôle sur l'appareil, à l'encontre de son propriétaire/utilisateur. On pourra l'empêcher d'utiliser cet appareil pour autre chose que ce pour quoi il a été prévu, et ce peut être le départ d'une chaîne de sécurité qui interdit certaines choses à l'utilisateur (qui, même s'il est censé être propriétaire de l'appareil, ne l'est alors jamais vraiment), par exemple de copier certaines données dans un sens ou dans l'autre. A contrario, certains des dispositifs qui empêchent la pétrification empêchent le fabricant de se réserver ce contrôle sur l'appareil.

Toujours est-il qu'il existe bien des moyens pour rendre un appareil impétrifiable. Je trouve que cela devrait être une obligation du fabricant de s'assurer qu'un de ces moyens existe (par exemple : si l'appareil est pétrifié, le fabricant aurait l'obligation légale de le rembourser au prix du neuf — une telle mesure augmenterait énormément la motivation à mettre en place des moyens pour éviter cet écueil). Un autre problème est qu'il n'est pas toujours évident de savoir ce qu'il en est, avant d'acheter l'appareil, ou même une fois qu'on l'a. Est-ce que mon téléphone Nexus 5 est pétrifiable, par exemple ? Je ne sais pas vraiment, je pense que oui, mais je n'ai pas franchement envie d'essayer pour vérifier ma sécurité de ce point de vue-là.

Je raconte tout ça parce que j'ai récemment mis à jour le noyau sur mes routeurs DreamPlugs (j'étais coincé depuis une éternité sur la branche 3.2.x du noyau Linux, avec toute une série de patchs, et pour la quitter j'ai dû mettre à jour U-Boot pour pouvoir passer au noyau un device tree, et avant de faire tout ça j'ai dû réapprendre la manière de réparer les choses en cas de pétrification accidentelle — dont je ne pouvais pas négliger les risques, même si au final tout s'est bien passé ; ceux qui veulent en savoir plus peuvent consulter cette page, récemment mise à jour, où je raconte les détails). J'envisage d'acheter d'autres gadgets pour remplacer ces DreamPlugs, par exemple ce truc-là, et une des choses que je cherche systématiquement à savoir c'est qu'elle garantie d'impétrificabilité(?) j'aurai (sur le produit précis que je viens de mentionner, il semble que ce soit bon, mais c'est rarement parfaitement clair).

(lundi)

Un mot pour dire du bien de la multiprise EnerGenie EG-PMS2

Comme je consacre l'essentiel de mes entrées de blog parlant de matériel informatique à dire à quel point tout est mal fait et pourri et impossible à trouver et cher et nul, bref, à me plaindre, je vais raconter pour une fois que je suis content.

Comme je l'ai raconté récemment, j'ai un problème avec le watchdog matériel de ma nouvelle carte mère (ou plutôt avec le BIOS), le composant qui est censé redémarrer l'ordinateur automatiquement en cas de plantage : le support technique d'Asus est prévenu, on verra s'il en ressort quelque chose, mais en attendant, ou à défaut, histoire de pouvoir redémarrer l'ordinateur à distance en cas de besoin, j'ai acheté une multiprise commandable par USB, la EnerGenie EG-PMS2. J'avais entendu dire qu'elle était utilisable sous Linux, et je peux confirmer que c'est le cas, et le programme qui le fait (sispmctl) est plutôt commode. Je n'ai pas encore mis la multiprise en place (dans la position où elle servira), mais je peux confirmer qu'elle fonctionne.

C'est une multiprise à 6 prises (numérotées de 0 à 5), protégée contre les surtensions (ce qui n'est pas plus mal), et donc quatre des six prises (les 1 à 4) sont programmables, et peuvent être allumées ou éteintes par la connexion USB. (Il y a aussi un bouton mécanique qui permet de tout couper, et une fois que tout est coupé, de tout réinitialiser sur la position marche.) L'allumage ou l'extinction des prises semble fonctionner par un relai électromécanique — enfin, je n'y connais rien, mais il y a un « clic » audible quand une prise passe de l'état allumé à l'état éteint ou vice versa.

Ce qui est particulièrement agréable, c'est que la multiprise a un petit programmateur : on peut lui envoyer des commandes comme éteindre la prise 3 dans 1 minute, et la rallumer 2 minutes après (sispmctl -A 3 --Aafter 1 --Ado off --Aafter 2 --Ado on ; la granularité, au moins au niveau du programme sispmctl, semble être la minute). Une fois que le programmateur a reçu les commandes, celles-ci ne nécessitent ensuite plus d'intervention de l'ordinateur contrôleur, ni que la connexion USB subsiste.

Ajout : Si on a un ordinateur non-Intel (par exemple mes DreamPlugs ARM), il faudra prendre garde au fait que la version de sispmctl packagée par Debian comporte un bug causant un comportement bizarre (au moins dans l'affichage de la date, peut-être plus) sur à peu près toute architecture non-Intel. Voir ce bug-report où je fournis un patch.

Du coup, même sans l'aide d'un autre ordinateur, cette multiprise peut servir de watchdog primitif : il suffit qu'un programme s'exécute toutes les minutes et envoie à la prise les commandes annuler toutes les commandes précédentes, et, dans cinq minutes, éteindre la prise numéro tant, puis la rallumer une minute après : tant que l'ordinateur ne plante pas, la commande sera sans cesse annulée et reportée d'une minute, mais s'il plante, la commande s'exécutera cinq minutes plus tard, et éteindra l'ordinateur pour une minute. (Les cinq minutes de délai servent à ce que, si l'ordinateur redémarre inopinément, indépendamment de l'action de la prise, il ait le temps de redémarrer complètement et de relancer le programme qui annulera la commande d'extinction. Ce n'est pas parfait, mais c'est raisonnable.) Ceci fournit donc bien la fonctionnalité d'un watchdog, et fonctionnera sur essentiellement n'importe quel ordinateur (sans batterie autonome, bien sûr : sur un portable, ça ne marchera pas, mais bon, un watchdog est rarement utile sur un portable). Je ne sais pas si je procéderai de la sorte, mais c'est agréable, au moins, de savoir que c'est possible.

Plus généralement, je suis sûr que ce genre de gadget peut trouver une grande utilité en domotique, donc je pense que ça peut intéresser des gens.

La prise existe aussi en version Ethernet : le protocole a l'air assez simple, ça a l'avantage de permettre de contrôler la prise depuis plusieurs ordinateurs plutôt qu'un seul, mais je n'aime pas trop l'idée qu'il y ait un serveur HTTP dans ma multiprise (j'aurais préféré une interface à bien plus bas niveau, où on doit envoyer un paquet à une certaine adresse MAC, sans empiler IP, TCP et HTTP dessus). Enfin, il y a une version wifi, mais là je trouve que ça devient vraiment n'importe quoi.

(lundi)

À la recherche d'une trackball à molette avec fil

J'aime bien avoir à disposition de ma main droite, quand j'utilise mon ordinateur, à la fois une souris et une trackball. (S'il y a des gens qui ignorent ce que c'est, une trackball est une souris en quelque sorte inversée : on tourne avec les doigts une grosse boule pour déplacer le curseur.) C'est que ma dextérité n'est pas tout à fait la même avec les deux, et je les utilise alternativement, selon mes besoins. (Les deux commandent le même curseur sur l'écran : il est aussi possible de configurer X11 pour afficher deux curseurs différents, mais je trouve ça plus confusant qu'autre chose.) Le principal avantage de la trackball, c'est qu'une fois posée quelque part, elle ne bouge pas, et la mémoire gestuelle arrive beaucoup mieux à la retrouver qu'une souris qui, par définition, change tout le temps d'endroit.

Malheureusement, ma trackball vient de casser. Ou plutôt, la molette de défilement qui était dessus vient de cesser de fonctionner, mais du coup je me retrouvais sans arrêt à essayer de défiler avec la trackball, à me rendre compte que ça ne marche pas, et à passer à la souris, ce qui est encore pire que de ne pas avoir de trackball du tout.

Du coup, je voudrais la remplacer. Mais ce n'est pas si facile. Idéalement, j'aimerais exactement le même produit : c'était une Logitech Trackman Wheel Optical (couleur silver, mais ça je n'y tiens pas des masses). Ce produit n'est plus vendu par Logitech (j'ai déjà dû râler plusieurs fois contre les produits qui cessent d'être disponibles et dont on ne sait jamais pourquoi ni s'ils reviendront un jour). On le trouve certes sur Amazon.fr, mais au prix totalement délirant de 530€ (ou 120€ pour un exemplaire d'occasion), ce qui est quand même hallucinant — et le signe que Logitech devrait peut-être reconsidérer sa décision de ne plus le produire.

À défaut, qu'est-ce que je peux acheter ? Logitech a un produit appelé TrackMan Marble, mais il a l'air de ne pas avoir de molette, et l'utilité de remplacer une trackball dont la molette est cassée par une trackball qui n'a pas de molette est un peu incertain. (Ceci dit, elle a un certain nombre de boutons, et je peux évidemment configurer deux des boutons latéraux pour faire un défilement ; mais je ne sais pas si c'est une bonne idée.) Sinon, il y a la Wireless Trackball M570 dont le design est quasi identique à ma trackball qui s'est cassée, mais elle souffre d'un énorme défaut : elle est sans fil.

Je n'ai jamais compris la manie de la technologie sans fil. Avoir un clavier ou une souris sans fil, ça veut dire qu'il doit avoir ses propres batteries, qu'il va falloir changer régulièrement, et ça veut dire aussi qu'on va avoir des problèmes de connexion initiale (convaincre le truc sans fil de commencer à parler à son récepteur), de perte de connexion, d'interférences (si plusieurs personnes utilisent le même modèle dans la même pièce) ; et évidemment, si on est modérément parano, on se dit que ça signifie aussi que tous les voisins savent exactement[#] ce qu'on fait avec le clavier ou la souris (franchement, taper un mot de passe, ou cliquer sur un code secret, avec un périphérique sans fil, c'est très con), ou, pire, peuvent en prendre contrôle à volonté. À la limite, une souris sans fil, je conçois un peu l'intérêt, vu qu'une souris ça bouge beaucoup. Un clavier, en faisant un effort, j'imagine aussi (on peut le mettre sur les genoux, c'est peut-être pratique). Mais une trackball ??? Tout l'intérêt de la trackball, c'est de la garder au même endroit !

[#] (Ajout) Bien sûr, il est possible que les choses soient bien faites et qu'il y ait de la crypto correcte. En l'occurrence, le mieux serait que chaque couple clavier-ou-souris + dongle récepteur vienne avec une clé symétrique — par exemple AES — préinstallée et impossible à changer, et qu'ils communiquent avec cette clé. Ceci impliquerait aussi, du coup, que si le dongle casse, il n'y a plus qu'à jeter l'autre partie puisque rien ne pourrait communiquer avec. Mais connaissant la tendance impressionnante de l'industrie à mal faire sa crypto, je crains le pire. Le document qu'on trouve ici ne dit rien de clair, et ne suggère rien de bon (manifestement, la clé commune n'est pas préenregistrée dans les deux moitiés ; dans le meilleur des cas, on peut espérer qu'elle soit négociée par Diffie-Hellman, ce qui ne présenterait « que » un risque d'attaque man-in-the-middle lors de l'association : mais je soupçonne que la vérité est encore plus pourrie que ça, et que l'association est passivement espionnable). De toute façon, le fait que Logitech ne documente pas clairement son protocole oblige, selon les standards en vigueur en cryptographie, à considérer qu'il est troué.

Bon, alors rien ne m'oblige à rester chez Logitech. J'aime bien le design de leurs produits, mais je n'y suis pas sentimentalement attaché. Mais en cherchant chez d'autres fabricants, je ne trouve pas vraiment mieux. Keningston fait plusieurs trackballs, dont certaines avec fil, mais soit elles n'ont pas de molette, soit elles remplacent la molette par une « roulette » de défilement, en couronne autour de la trackball, et cette idée me laisse assez perplexe. En plus de ça, j'ai besoin d'une trackball trois boutons (ou à molette cliquable), vu que j'utilise énormément le bouton du milieu pour le copier-coller. Le plus proche de ce que je veux semble être la Kensington Expert Mouse Optical, qui a strictement plus que de boutons et qui a une roulette de défilemnt, mais la disposition des boutons me semble malheureuse (il n'y a pas de bouton « du milieu »), il doit être difficile de défiler sans cliquer par accident, et le prix est quand même élevé.

Finalement, je vais peut-être prendre ce produit par Sanwa (expédié depuis le Japon !), même si ça a l'air d'être de la camelote : le problème, là, est que je n'ai pas de certitude que la molette soit cliquable (pour pouvoir servir de bouton du milieu).

Je raconte tout ça un peu parce que dès que je parle de problèmes informatiques j'ai droit à un florilège de commentaires me racontant que c'est parce que je m'y prends mal (je devrais ne pas utiliser Linux, je devrais commander un ordinateur pré-assemblé, je devrais ceci, je devrais cela), j'ai déjà expliqué le problème avec ce genre de choses. Du coup, je me demande un peu ce qu'on va me dire cette fois-ci : quelqu'un va-t-il dénicher une trackball filaire avec molette et trois boutons (ou deux boutons + molette clickable), ou bien va-t-on m'expliquer que j'ai tort de vouloir quelque chose comme ça ?

(samedi)

Comment perdre beaucoup de temps à monter un ordinateur

Une tragédie en cinq actes (qui respecte l'unité de lieu — l'appartement de Ruxor et du pousinet — et d'action — beaucoup d'énervement —, mais certainement pas de temps) :

Acte I. Présentation du nouvel ordinateur

(Scène 1.) Lundi 29 août, j'ai reçu les trois quarts des pièces de mon nouvel ordinateur (la carte mère, la mémoire, et l'alimentation).

(Scène 2.) Mardi 30, j'ai reçu le quatrième quart (le processeur). J'ai ressorti de ma cave un ordinateur qui y traînait, pour en récupérer le boîtier, et j'ai commencé à monter le tout. Mais les difficultés qu'on rencontre ne sont pas toujours celles qu'on croit : j'ai perdu beaucoup de temps, par exemple, parce que je n'avais que six des neuf vis (je ne sais pas comment appeler ça au juste : ce sont des choses qui sont une vis d'un côté et un écrou — enfin trou à vis — de l'autre) qui servent à relier la carte mère à la plaque arrière du boîtier, et il me fallait donc trouver une solution. Finalement, mon poussinet m'a trouvé les trois vis manquantes.

(Scène 3.) Ensuite, j'ai dû comprendre pourquoi la machine ne bootait pas : elle émettait une série de bips (et montrait un code sur son petit panneau lumineux interne) signifiant qu'elle ne trouvait pas de carte graphique. De fait, je n'avais pas mis de carte graphique, mais je pensais que cette carte mère avait un chipset graphique basique[#] intégré puisqu'elle avait des sorties VGA, DVI et HDMI : la vérité est simplement que cette carte mère est prévue pour accepter les processeurs ayant un coprocesseur graphique intégré (ce qui n'est pas le cas du Xeon E3-1230v5 que j'ai acheté). (Scène 4.) Ce malentendu dissipé (ce qui m'a pris un certain temps, quand même), la machine démarre correctement sur une Ubuntu live.

[#] Ce qui ferait sens pour une carte mère destinée à un serveur (lequel a rarement besoin de quelque chose de très performant en la matière, et un chipset graphique intégré sur la carte mère conviendra donc).

Acte II. De petites complications apparaissent

Mon projet était le suivant : monter une configuration minimale, dans le boîtier que j'ai sorti de ma cave, avec ma nouvelle carte mère (plus processeur et mémoire), et un disque dur de récupération, le temps de vérifier que tout fonctionne, et de préparer une configuration de noyau Linux qui marche bien sur ce matériel, et seulement ensuite déplacer les disques (que je garde) vers ce boîtier. Mon poussinet me dit que mon idée était idiote, que j'aurais dû monter directement la nouvelle carte mère dans le boîtier que j'utilisais déjà (et qui contenait les disques, donc), et régler les problèmes au fur et à mesure qu'ils apparaissaient. Mais je savais que ça pouvait être long, et je préférais ne pas me passer d'ordinateur pendant ce temps.

Bref, mardi 30 au soir, j'avais cette configuration minimale qui marchait : comme expliqué à l'acte I, j'avais dû y mettre une carte graphique elle aussi de récupération. Pour afficher la sortie sur ma télé (faute d'autre écran d'ordinateur qui marche), j'avais aussi dû acheter un adaptateur DVIHDMI. (Scène 1.) Seulement, mercredi 31, je me suis rendu compte que le ventilateur de cette carte graphique de récupération ne tournait pas, et qu'elle surchauffait : j'ai dû acheter une carte graphique premier prix (30€ environ). Heureusement, ce n'est pas encore complètement impossible d'acheter du matériel informatique à Paris, mais j'ai quand même perdu un peu de temps avec ça (et mon adpatateur DVIHDMI ne me servait finalement à rien, vu que la carte graphique en question a une sortie HDMI contrairement à celle qui traînait dans ma cave).

(Scènes 2 et 3.) Jeudi 1er septembre et samedi 3 (vendredi, j'avais vraiment autre chose à faire), je me suis occupé de préparer mes disques durs à pouvoir démarrer en mode UEFI (parce que la nouvelle carte mère n'a pas de BIOS traditionnel) ; ceci implique de changer le type de table des partitions (vers GPT). J'ai surtout passé mon temps à comprendre ce que tout ceci signifie, et à mettre au point un plan[#2] pour avoir un système qui peut démarrer, indifféremment, sur n'importe quel disque, que ce soit en mode BIOS traditionnel ou en mode UEFI.

Mais là aussi, les difficultés ne sont pas toujours celles qu'on prévoit : j'ai passé un temps fou à comprendre, par exemple, pourquoi la Ubuntu live, que j'utilisais sur mon (ancien) ordinateur pour faire les manipulations, ne voyait[#3] pas mon disque externe (non concerné par les manipulations, mais sur lequel j'avais stocké des données destinées à les aider).

(Scène 4.) En parallèle de tout ça, je peaufine une configuration de noyau Linux prête à tourner proprement sur la nouvelle machine (et qui continue aussi à tourner sur l'ancienne).

[#2] Pour ceux qui veulent plus de détails : j'ai à la fois un Grub dans le MBR et une partition de type 21686148-6449-6e6f-744e-656564454649 (qui sert à démarrer en mode traditionnel), et un autre dans une partition EFI que j'ai créée après être passage en GPT. Une difficulté était que j'utilisais un vieux Grub, qui ne comprend pas les partitions GPT, donc j'ai dû changer sa version en même temps (et comprendre comment le nouveau fonctionne). Par ailleurs, il est heureux que j'aie l'habitude de laisser plein de place inoccupé entre mes partitions, et au début et à la fin du disque, parce que la création de la table des partitions GPT, et aussi de la partition spéciale pour Grub, ont utilisé une partie de cet espace. J'ai donc évité d'avoir à faire des déplacements sur quelques téra-octets de donnés.

[#3] La solution consistait à ajouter modprobe.blacklist=pata_marvell ahci.marvell_enable=1 dans la ligne de commande du noyau Linux, le genre de choses qui font que les non-linuxiens se moquent des linuxiens et de leurs incantations arcanes. J'avais dû trouver ça autrefois quand j'avais commencé à faire fonctionner cette carte mère, mais j'avais complètement oublié depuis, et la réponse était cachée dans la configuration de mon noyau. Non franchement, je me demande pourquoi le module ahci a une option marvell_enable dont le défaut est à 0 : il faut lui dire explicitement de faire fonctionner ce chipset particulier, c'est un peu absurde (il est vrai que ce chipset a cette bizarrerie qu'il peut gérer soit un port SATA soit un port PATA, mais pas les deux à la fois, donc si on active le SATA, ça désactive le PATA et vice versa ; dans mon cas, cependant, le port PATA n'existe même pas, tout ceci est un reliquat d'une époque un peu ancienne).

Acte III. Le coup de tonnerre

(Scène 1.) Nous arrivons donc le dimanche 4 : je vérifie que tout est prêt au niveau logiciel (je supprime, par exemple, dans la configuration du routeur tout ce qui fixe l'adresse MAC de mon PC) ; je vais profiter d'une absence du poussinet (donc d'une possibilité d'étaler mon matériel informatique dans tout le salon) pour déplacer les disques durs.

(Scène 2.) Je sors les disques de l'ancienne machine. L'opération est un peu longue et compliquée (environ une heure), parce qu'il y en a quatre, et surtout parce qu'il y en a un qui est dans un berceau (pour le mettre sur un emplacement 5″¼ et ainsi gagner de l'espace), et pour le faire sortir du boîtier sans taper dans quelque chose, il faut démonter les barrettes de RAM, déconnecter l'alimentation, et jouer à chercher le chemin qui passe sans taper dans quelque chose d'important.

(Scène 3.) Je refais l'opération à l'envers pour monter les disques dans le nouveau boîtier. De nouveau environ une heure passe.

(Scène 4.) Enfin, tout est prêt. J'appuie sur le bouton d'alimentation.

Rien ne se passe.

Je me dis que j'ai dû défaire les connexions entre le bouton et la carte mère en montant les disques. Je vérifie. Pas d'amélioration. Bon, la carte mère a un bouton d'alimentation directement sur la carte (c'est une excellent idée, soit dit en passant, et je félicite Asus de l'avoir eue). J'appuie dessus. Pas mieux.

(Scène 5.) Je commence à paniquer.

C'est peut-être l'alimentation qui est morte : après tout, il ne se passe rien, pas un ventilo qui tourne, même pas celui de l'alim elle-même. (Il y a des LEDs sur la carte mère qui s'allument quand on branche l'alim, mais rien ne change quand on appuie sur le bouton d'alimentation.) Je vérifie avec l'ancienne carte mère et l'ancienne alim : la nouvelle alim parvient à démarrer l'ancienne carte mère, mais l'ancienne alim ne parvient pas non plus à démarrer la nouvelle carte mère. C'est donc bien la carte mère qui est morte.

La carte mère que j'ai reçu il y a moins d'une semaine est donc morte !

(Scène 6.) Dépité, je mets l'ancienne carte mère dans le boîtier où j'ai transféré les disques. Heureusement, elle n'a pas été abîmée par toutes ces opérations. Il n'y a que la pile CMOS qui est morte, rien de grave. (Bilan de la journée : j'ai simplement déplacé tout le contenu de mon ordinateur d'un boîtier à un autre, pour rien.)

Entracte

Qu'est-ce qui a bien pu se passer pour que cette carte mère meure ? Je n'en sais rien. Je sais à ce stade que c'est forcément la carte mère (si c'était le processeur, les ventilateurs au moins démarreraient ; si c'était la mémoire, il y aurait une série de bips ; pour que rien ne se passe, c'est forcément la carte mère qui est morte — peut-être un condensateur défectueux ou abîmé).

Une possibilité : cette carte mère était défectueuse, elle n'aura tenu que deux ou trois allumages (après tout, je ne l'ai que très peu allumée et éteinte, un défaut peut ne pas se manifester tout de suite). Une autre : je l'ai cassée sans m'en rendre compte en montant les disques. Ça pourrait venir d'un choc électrostatique ou d'un choc mécanique. Mais je ne me suis aperçu de rien, mes observations attentives ne m'ont pas permis de trouver le moindre composant d'apparence suspecte, et un choc électrostatique aurait eu plus de chances d'endommager la mémoire (or je sais qu'elle ne l'a pas été).

Acte IV. Vers un dénouement ?

(Scène 1.) Je commande une nouvelle nouvelle carte mère, identique, et je prépare le retour de celle qui est cassée (vus les délais, il semble que les conditions d'Amazon me permettent d'obtenir un remboursement, et je n'ai certainement pas envie d'attendre un retour). Cette fois avec livraison express.

(Scène 2.) Nous sommes maintenant mercredi 7 septembre. Je reçois la (nouvelle nouvelle) carte mère. Je déplace le processeur dessus. Doute : que faut-il faire pour la pâte thermique ? Pour l'installation initiale, le radiateur fourni par Intel venait avec de la pâte thermique préappliquée. Forcément, cette pâte thermique a été chauffée et s'est dispersée. Quand je retire le radiateur pour déplacer le processeur, avant de le remettre en place, est-ce que je dois réappliquer de la pâte thermique ? réétaler celle qui est déjà là ? J'ai choisi d'en rajouter un petit peu, et j'ai passé un temps fou à essayer de faire un niveau bien plat et mince, mais je crois que j'ai quand même un moins bon contact thermique maintenant que lors de la première installation.

(Scène 3.) Je sors l'ancienne carte mère du boîtier, je mets la nouvelle (nouvelle) à la place. Moralité : mon poussinet avait sans doute raison, c'est plus facile et moins risqué de changer une carte mère que de changer quatre disques.

(Scène 4.) Mercredi soir, l'ordinateur démarre correctement sur une Ubuntu live (comme à la fin de l'acte I, quoi…), mais toujours pas sur mes anciens disques, malgré le noyau spécialement prévu pour. Ou plus exactement, elle démarre, mais je n'ai ni clavier, ni souris, ni réseau. J'ai fini par comprendre qu'il fallait charger le module xhci-pci (ceci expliquait que l'USB ne fonctionnait pas), et que j'avais branché le câble Ethernet dans la mauvaise prise réseau. Rien de compliqué à résoudre, mais trouver le problème exact n'a pas été facile (quand on a un ordinateur qui démarre sans périphérique d'entrée et qu'on ne peut débugguer qu'en modifiant les scripts de démarrage, ça prend forcément un certain temps).

(Scène 5.) Enfin, tout semble marcher. La fin de l'histoire ?

Roulement de tambour…

Acte V. Happy end ou pas ?

(Scène 1.) Mon nouvel ordinateur marche, au moins dans les grandes lignes. (Et avoir 32Go de mémoire au lieu de 8Go rend certaines choses beaucoup plus confortables, c'est incontestable.)

Il est maintenant temps de vérifier un peu plus dans les détails, et notamment les choses pour lesquelles j'ai tenu à acheter une carte mère de serveur.

(Scène 2.) La mémoire ECC semble fonctionner. (Elle fonctionne, bien sûr, mais la question est de savoir si elle fonctionne bien en tant que mémoire ECC.) Évidemment, c'est difficile à tester, parce que les erreurs mémoires sont quand même très (très) rares. Je devrais peut-être monter une attaque rowhammer pour tester. Mais au moins, j'ai un utilitaire Linux (edac-util, couplé au module ie31200-edac) qui prétend lire le nombre d'erreurs par barrette, et qui me signale 0 erreurs sur chaque barrette : j'imagine (j'espère) que si la mémoire n'était pas ECC, il renverrait une erreur. Mais j'avoue que j'aimerais voir dans les réglages du BIOS une indication quelconque du fait que la mémoire est en mode ECC, ce qu'il n'y a pas (ou alors, je ne l'ai pas trouvée).

(Scène 3.) Je crois que je suis censé avoir sur cette carte mère une technologie Intel qui, selon la phase de la Lune et l'humeur d'Intel, s'appelle Active Management Technology (AMT) ou Management Engine (ME), ou encore vPro. (En gros, il y a un second processeur sur la carte mère, qui écoute sur le réseau, et sait répondre à des commantes du genre, allumer ou éteindre la machine, la redémarrer, simuler un clavier et un écran par réseau, et quelques choses de ce genre.)

Cette technologie est certainement un trou de sécurité monstrueux, et un cauchemar pour les paranoïaques (genre, il est certain que grâce à elle, la NSA a un back door complet vers ma machine), mais elle présente aussi des fonctions qui pourraient m'intéresser, notamment le fait de redémarrer à distance. Mais je n'ai absolument rien compris à la façon de m'en servir. On doit sans doute pouvoir l'activer depuis le BIOS, mais je n'ai rien trouvé de la sorte. Linux détecte bien un truc (il crée un device /dev/mei quand on charge le module mei-me, et il a l'air de détecter plein de choses), mais je n'ai rien compris à la manière de m'en servir. Il y a du vieux code fourni avec le noyau, qui ne marche pas (il me renvoie ENOTTY, en fait parce qu'il essaie de passer des commandes avec un UUID qui n'est pas bon). Il y a plein de doc chez Intel, mais elles se contredisent, datent de plein d'époques différentes, et finalement je n'y comprends rien.

Je me demande si je ne suis pas censé payer à Intel une licence pour avoir le droit d'administrer ma machine, ce qui est quand même un peu fort de café. Mais bon, je n'ai rien compris. En tout cas, pas compris comment faire quoi que ce soit d'utile de cette technologie (ni même comment l'activer, ou au contraire comment être sûr qu'elle est désactivée).

(Scène 4.) Je veux vérifier que mon watchdog matériel marche bien (je répète, pour ceux qui n'ont pas suivi, que le watchdog est un composant matériel qui sert à redémarrer la machine automatiquement en cas de plantage : une fois qu'on l'a activé, il doit recevoir un signal à intervalles réguliers, faute de quoi il provoque un reset). Cette scène se déroule elle-même en plusieurs saynettes.

(Scène 4a.) D'abord, j'ai eu peur, parce que Linux ne semblait pas le détecter du tout (le chargement du module iTCO-wdt n'avait aucun effet). J'ai fouillé dans les docs d'Intel, j'ai eu la confirmation que ce watchdog devait bien être présent dans le chipset C236 que j'ai. Je me suis dit que peut-être le noyau ne connaissait pas cette variante et qu'il fallait ajouter un identifiant PCI ou quelque chose de ce genre. Après des heures passées à éplucher des sources illisibles, j'ai fini par avoir une illumination : il faut charger le module i2c-smbus (en plus de i2c-i801), parce que le watchdog est sur un bus dit SMBus, une variante de I²C (je ne comprends pas du tout pourquoi il est nécessaire de savoir ça, alors que ces bus sont essentiellement des détails matériels, en quoi le logiciel arrive à les « voir », mais bon, c'est un fait). Avec ça, le watchdog est détecté.

(Scène 4b.) Maintenant que mon watchdog matériel est reconnu par Linux, je m'apprête à tester qu'il fonctionne bien. J'active le watchdog et je cesse de lui parler, au bout de quelques minutes le système doit redémarrer.

Mais il ne redémarre pas : il plante complètement.

Plus de réaction. Plus de clavier, plus d'écran, plus rien. J'appuie sur le bouton reset : pas d'effet. J'appuie sur le bouton d'alimentation, la machine s'éteint, je réappuie, ja machine se rallume…

…mais ne redémarre pas.

Sueur froide. Est-ce que j'aurais cassé une deuxième carte mère en à peine dix jours ?

(Scène 5.) Non : en éteignant au niveau de l'alimentation et en attendant assez longtemps pour que la carte mère soit totalement hors tension, si je rallume, la machine redémarre bien. Ouf !

Mais l'effet est reproductible : j'ai un watchdog qui, au lieu de redémarrer l'ordinateur, sert à le planter complètement, au point qu'il faut couper l'alimentation complètement pour qu'il remarche. Voilà qui est merveilleusement utile !

Vu que j'ai acheté cette carte mère précise essentiellement pour deux fonctions cruciales, la mémoire ECC et le watchdog, je suis quand même vert de rage.

Rideau.

Épilogue (ou teaser pour la suite ?)

Je suis absolument furieux de cette histoire de watchdog. J'hésite à acheter une nouvelle nouvelle nouvelle(!) carte mère, mais encore faudrait-il être absolument certain qu'elle a un watchdog qui marche.

Sinon, deux possibilités :

(1) Comprendre l'origine du problème et peut-être le résoudre. En fait, j'ai une petite idée de l'origine : ce n'est pas que le watchdog ne provoque pas de reset, c'est que ce reset échoue. Asus a eu la bonne idée de mettre un petit afficheur LCD sur la carte mère qui, lors du démarrage, montre différents codes correspondant aux différentes étapes de l'initialisation. Lorsque le watchdog s'active, cet afficheur passe par la même suite de nombres que lors d'un démarrage « normal » (19, 41, 50(?), 4c, 28, 31, 4b, 34, 3e, 3a, 46, 32, 35, 45, 36, 37, 3b, 3c, 38, 39, 3f, 5c, 55, 69(?), 3b, 32, 35, 60, 61, 9a, 62, 72 — tout ça en un tout petit peu plus que 11 secondes) ; mais ensuite, alors que l'initialisation normale continue (79, 96, b2, 9c, 64, 99, b2, a2, 99, ad), le reboot par watchdog revient au code 62 et y reste bloqué. La signification de ces codes est donnée dans le manuel de la carte mère, le code 62 se traduit par Initialization of the PCH Runtime Services (je sais que PCH signifie Platform Controller Hub, c'est essentiellement synonyme de chipset, en l'occurrence le Intel C236 ; mais je ne sais pas ce que sont ces runtime services).

Ceci ressemble à un bug du BIOS[#4] : j'imagine que le reset provoqué par le watchdog laisse je ne sais quel composant ou périphérique dans un état tel que le BIOS ne sait pas l'initialiser, et qu'il plante. (Peut-être la carte graphique ? Quand on cherche Initialization of the PCH Runtime Services dans Google, les gens se font souvent diriger vers un problème de carte graphique. Je ne sais pas. Peut-être que le BIOS n'a été testé complètement qu'avec des processeurs ayant un coprocesseur graphique intégré.)

Mais bon, la magie du logiciel propriétaire et opaque, c'est que s'il y a un bug dans mon BIOS, je ne peux pas le corriger, quand bien même j'en serais capable. J'ai écrit au support technique d'Asus. J'ai reçu une réponse qui n'était pas terrible (ils me demandent de faire toutes sortes de tests basiques comme vérifier que le processeur et les barrettes mémoires ne sont pas défectueux, dont certains tests que je ne peux pas vraiment faire), on va voir si je peux accéder à un niveau supérieur.

J'ai aussi lancé différents appels à l'aide (ici et ) pour savoir si des gens ayant des cartes mères semblables (ou pas, justement) peuvent reproduire le problème. Je n'ai reçu jusqu'à présent essentiellement qu'une réponse. ☹ Mais quelqu'un me dit avoir le même problème sur une carte mère d'Asrock (qui a un chipset Intel différent mais qui, comme la mienne, a un BIOS écrit par AMI), ce qui suggérerait que le problème peut venir de là.

Évidemment, mes chances d'arriver à faire remonter l'information jusqu'aux programmeurs qui ont écrit le BIOS, et à plus forte raison de leur faire corriger le problème, sont très minces. Je n'ai pas de carnet d'adresses, et je ne peux vraiment pas faire passer le message (pourtant hautement précis) il y a un problème dans le code d'initialisation des services runtime des PCH des chipsets Intel récents lorsqu'ils sont provoqués suite à un reboot initiié par le watchdog TCO à la bonne personne. C'est rageant. D'ailleurs, je n'arrive même pas à trouver plus qu'une personne prête à faire l'expérience que je demande, alors qu'il y a des milliers de fois plus de gens qui pourraient (des gens ayant une carte mère récente avec chipset Intel, ce n'est pas super rare).

Mise à jour () : J'ai écrit des instructions pour tester le problème à partir d'une Ubuntu live (donc sans avoir à installer Linux) ici. Si des gens veulent tester sur différentes cartes mères à chipset Intel, je suis intéressé par les résultats. (Par exemple, Simon, dans les commentaires, m'apprend que le problème se produit aussi avec une carte mère Gigabyte Gaming 7 de chipset Z170, ce qui, en plus de l'exemple sur une carte mère Asrock H110M-HDS de chipset H110, porte encore plus les soupçons sur les BIOS AMI.) • Par ailleurs, le support technique d'ASUS, à qui j'ai transmis le lien précédent, m'a affirmé avoir remonté le problème à leur cellule d'expertise, on verra s'il en ressort quelque chose.

[#4] Enfin, du firmware : il paraît qu'en UEFI il ne faut plus dire BIOS — mais comme les auteurs du firmware eux-mêmes le disent, je vais le dire aussi.

(2) Trouver une autre solution pour redémarrer la machine quand elle plante. La technologie AMT mentionnée ci-dessus devrait être une solution, mais je n'arrive décidément pas à savoir si ma carte mère la gère, ou, dans ce cas, comment l'activer (ou vérifier si elle est active) ou comment en faire quoi que ce soit (ou comment parler au /dev/mei que Linux peut faire apparaître sur mon système).

Reste la solution bricolée (mais je déteste le principe) : une prise électrique commandée par USB : je brancherais la commande sur mon routeur (qui lui, a un watchdog qui fonctionne), et je me servirais du routeur comme watchdog pour le PC (mais ce serait très malcommode, donc peut-être simplement que je garderais la possibilité de me connecter au routeur pour éteindre et allumer le PC). Même comme ça, trouver une prise électrique commandée par USB et qui fonctionne sous Linux, ce n'est pas franchement gagné. Je suis tombé sur essentiellement deux produits :

Si je dois acheter un de ces produits, je préférerais que ce soit à des gens qui ont fait l'effort, sinon d'écrire un driver libre, au moins de publier les spécifications techniques (qui doivent être franchement assez triviales s'agissant d'une bête prise qu'on peut allumer ou éteindre)[#5]. Pour le premier, ce n'est clairement pas le cas ; pour le second, je ne sais pas bien. Il y a peut-être des produits plus ouverts.

[#5] J'ai toujours du mal à comprendre comment on peut être un connard au point de vendre un produit qui est une simple prise commandée par USB et de refuser d'en publier les spécifications techniques qui permettraient d'écrire un pilote pour un pilote pour un autre système d'exploitation que Windows. J'aimerais pouvoir avoir une conversation en face à face avec un décideur de ce genre, et arriver à comprendre ce qui lui passe par la tête.

Continue to older entries. / Continuer à lire les entrées plus anciennes.


Entries by month / Entrées par mois:

2017 Jan 2017 Feb 2017 Mar 2017 Apr 2017 May 2017 Jun 2017 Jul 2017 Aug 2017 Sep 2017
2016 Jan 2016 Feb 2016 Mar 2016 Apr 2016 May 2016 Jun 2016 Jul 2016 Aug 2016 Sep 2016 Oct 2016 Nov 2016 Dec 2016
2015 Jan 2015 Feb 2015 Mar 2015 Apr 2015 May 2015 Jun 2015 Jul 2015 Aug 2015 Sep 2015 Oct 2015 Nov 2015 Dec 2015
2014 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014 Jul 2014 Aug 2014 Sep 2014 Oct 2014 Nov 2014 Dec 2014
2013 Jan 2013 Feb 2013 Mar 2013 Apr 2013 May 2013 Jun 2013 Jul 2013 Aug 2013 Sep 2013 Oct 2013 Nov 2013 Dec 2013
2012 Jan 2012 Feb 2012 Mar 2012 Apr 2012 May 2012 Jun 2012 Jul 2012 Aug 2012 Sep 2012 Oct 2012 Nov 2012 Dec 2012
2011 Jan 2011 Feb 2011 Mar 2011 Apr 2011 May 2011 Jun 2011 Jul 2011 Aug 2011 Sep 2011 Oct 2011 Nov 2011 Dec 2011
2010 Jan 2010 Feb 2010 Mar 2010 Apr 2010 May 2010 Jun 2010 Jul 2010 Aug 2010 Sep 2010 Oct 2010 Nov 2010 Dec 2010
2009 Jan 2009 Feb 2009 Mar 2009 Apr 2009 May 2009 Jun 2009 Jul 2009 Aug 2009 Sep 2009 Oct 2009 Nov 2009 Dec 2009
2008 Jan 2008 Feb 2008 Mar 2008 Apr 2008 May 2008 Jun 2008 Jul 2008 Aug 2008 Sep 2008 Oct 2008 Nov 2008 Dec 2008
2007 Jan 2007 Feb 2007 Mar 2007 Apr 2007 May 2007 Jun 2007 Jul 2007 Aug 2007 Sep 2007 Oct 2007 Nov 2007 Dec 2007
2006 Jan 2006 Feb 2006 Mar 2006 Apr 2006 May 2006 Jun 2006 Jul 2006 Aug 2006 Sep 2006 Oct 2006 Nov 2006 Dec 2006
2005 Jan 2005 Feb 2005 Mar 2005 Apr 2005 May 2005 Jun 2005 Jul 2005 Aug 2005 Sep 2005 Oct 2005 Nov 2005 Dec 2005
2004 Jan 2004 Feb 2004 Mar 2004 Apr 2004 May 2004 Jun 2004 Jul 2004 Aug 2004 Sep 2004 Oct 2004 Nov 2004 Dec 2004
2003 May 2003 Jun 2003 Jul 2003 Aug 2003 Sep 2003 Oct 2003 Nov 2003 Dec 2003