Journal Le logiciel libre au-delà de x86

Posté par . Licence CC by-sa
Tags : aucun
81
27
août
2016
Ce journal a été promu en dépêche : Le logiciel libre au-delà de x86.

Sommaire

Toute personne qui essayé de libérer son ordinateur de bureau jusqu'au firmware de la carte mère, ou qui s'est intéressée à l'évolution du projet Coreboot ces dernières années le sait : la situation des quatre libertés sur nos stations de travail est actuellement très mauvaise.

La situation actuelle

État des firmwares

Le wiki du projet Coreboot (projet visant à analyser le fonctionnement des firmwares non-libres embarqués sur les cartes mères et à les remplacer, totalement ou en partie, par un firmware libre) détaille cette situation dans un article listant les programmes non-libres que Coreboot peut être amené à charger pour permettre le fonctionnement correct de la carte mère. Le site du projet Libreboot (modification de Coreboot visant à se passer totalement de l'exécution de code non-libre, sur un nombre de modèles évidemment beaucoup plus restreint) donne des détails sur certains firmwares. Selon le cas, le programme en question peut être optionnel ou absolument nécessaire, son remplacement difficile ou complètement impossible, son potentiel de contrôle sur l'informatique de l'utilisateur négligeable, gigantesque ou simplement inconnu. Rappelons que la conception de la carte mère dépend principalement du CPU qui y est rattaché, et que le marché du CPU sur les ordinateurs de bureau est en gros partagé entre deux géants : Intel et AMD. Aperçu de la situation :

Sur les plateformes Intel :

  • le firmware GBE (Gigabit Ethernet) : c'est un petit binaire de 8 Ko, qui contient des informations d'initialisation du chipset Ethernet intégré à la carte mère. Il ne contient pas de code exécutable, et il est possible de s'en passer si on n'utilise pas le port Ethernet intégré à la carte. Sur les plateformes GM45/GS45 (génération de processeurs Penryn, chez Lenovo cela correspond à la génération "*00" : X200, T400, T500, etc, apparus aux alentours de 2008), le GbE a été libéré par rétro-ingénierie grâce aux efforts du projet Libreboot.

  • le VBIOS (VGA BIOS, ou VGA Option ROM) : c'est un firmware de quelques dizaines de Ko qui s'exécute sur le processeur principal et permet d'initialiser l'affichage vidéo lors des premières étapes du démarrage de l'ordinateur. Il est possible de s'en passer sous GNU/Linux, l'OS initialisant lui-même l'affichage vidéo lors du chargement du noyau. Cependant, l'écran restera noir durant les premières secondes du boot, avant que le noyau ne prenne le relais. Il est possible de contenir l'exécution du VBIOS avec coreboot, au moins en partie (celui-ci peut encore accéder à des sections arbitraires de la RAM directement). Comme pour le contrôleur Ethernet, il n'est pas utilisé si on utilise un autre GPU que celui intégré à la carte mère : dans ce cas c'est un autre VBIOS, présent dans la carte graphique, et probablement lui aussi non-libre, qui sera utilisé. Sur les ordinateurs Thinkpad T60 (plateformes i945, génération de processeurs Yonah et Merom, apparus aux alentours de 2006) utilisant les GPU Intel GMA 950, le VBIOS a été libéré par rétro-ingénierie grâce aux efforts du projet Libreboot.

  • le microcode CPU : c'est un petit firmware qui sert à mettre à jour le microcode interne du CPU. En effet, les microprocesseurs Intel embarquent une ROM contenant un microcode nécessaire au bon fonctionnement du CPU. Ce microcode est historiquement considéré comme acceptable par la FSF, car en lecture seule et non mis à jour, il peut être considéré comme du hardware. Depuis la fin des années 1990 cependant, Intel distribue des mises à jour de ces microcodes pour résoudre des défauts dans les microcodes embarqués. Ces mises à jour sont placées dans les BIOS par les constructeurs de cartes mères. Depuis quelques années, on commence même à voir des mises à jour distribuées au niveau du système d'exploitation lui-même (si vous utilisez Debian par exemple vous avez peut-être constaté qu'on vous recommandait d'installer un paquet non-libre avec un nom du style 'intel-microcode'), car les mises à jour du constructeur via le BIOS ne sont plus toujours suffisantes. On pense qu'il est possible de se passer des mises à jour du microcode CPU si on exclut les générations de CPU les plus récentes. Il est difficile cependant de donner une date précise, car cela dépend de la génération, des bugs que le microcode est supposé corriger, peut-être aussi du numéro de série. Des gens ont reportés des bugs mineurs sur certains processeurs de 2008, alors que d'autres ont dit n'avoir pas constaté de bug avec des CPU de générations plus récentes. Il est donc théoriquement possible de se passer de ce microcode, mais il est généralement admis que les microcodes embarqués dans les CPU au sortir de l'usine sont de plus en plus buggués au fil des générations, et que la probabilité d'être dépendant d'une mise à jour de microcode est de plus en plus grande. Notons que les microcodes Intel sont signés avec une signature RSA 2048 bits, et ne seront donc probablement jamais libérés. Notons aussi que ce microcode effectue des tâches extrêmement basiques (décomposer des instructions en sous-instructions plus simples à traiter par le matériel), et la probabilité qu'il contienne des fonctionnalités pouvant compromettre le système est extrêmement faible (elles seraient trop difficiles à mettre en place à ce niveau).

  • le ME (Management Engine) : la bête noire des développeurs de Coreboot. C'est un très gros firmware pouvant aller jusqu'à 5 Mo, s'exécutant sur un processeur ARC situé dans le PCH (Platform Controller Hub, équivalent moderne du northbridge) des chipsets Intel et séparé du processeur principal. Ce firmware est constamment en fonctionnement lorsque l'ordinateur est allumé. Le but annoncé de ce firmware est d'implémenter la technologie AMT (Intel Active Management Technology), qui permet notamment de retrouver son ordinateur lorsqu'on se l'est fait voler, en permettant d'effectuer toutes sortes d'opérations dessus, à distance, indépendamment du système d'exploitation, pour peu que celui-ci soit branché au réseau au moins une fois. On peut par exemple éteindre/rebooter/réveiller la machine à distance, capturer les paquets du réseau, lire les fichiers ouverts, accéder aux programmes en cours d'exécution, faire des captures d'écran, enregistrer la frappe au clavier, utiliser la webcam et le micro, rendre l'ordinateur définitivement inopérant, etc. Une liste un peu plus étoffée des fonctionnalités et des applications possibles est disponible ici. Pour ce faire, le ME doit bien évidemment avoir un accès aux adaptateurs réseau, à la gestion de l'énergie, au contenu de la RAM en lecture et en écriture, et ce sans que les système d'exploitation hôte ne puisse le savoir. C'est grosso-modo un petit système d'exploitation, totalement sous le contrôle d'Intel, tournant à côté du système d'exploitation principal, de façon totalement transparente. Le ME serait aussi le siège de la technologie Intel Boot Guard introduite plus récemment, dont le but est d'empêcher toute modification des firmwares embarqués en vérifiant leur signature au boot, rendant impossible le remplacement de l'UEFI par un firmware non-approuvé par Intel. Boot Guard n'est apparemment pas activé par défaut sur les plateformes actuelles. Les emmerdes volant toujours en escadrille, c'est aussi dans le ME qu'on trouve la technologie PAVP (Protected Audio-Video Path), un équivalent de HDCP, mais plus robuste (en gros les flux vidéo et audio déchiffrés sont transmis directement au GPU sans que le CPU n'ait connaissance de quoi que ce soit, rendant impuissant les applications de capture audio/vidéo). Ce petit bout de BIOS génère tant d'inquiétudes sur le plan des libertés numériques que certains développeurs lui ont créé un site dédié. Bien évidemment, ce firmware est signé depuis la génération Penryn (~2008), et nécessaire au fonctionnement du système depuis les ordinateurs de la génération Nehalem (fin 2008-début 2009), pour lesquels le système freeze 30 minutes après le boot si le ME n'est pas présent. Sur les générations post-Nehalem (Sandy Bridge et postérieures), l'ordinateur ne boote simplement pas. Sur les plateformes i945 (Yonah et Merom, ~2006), il n'y avait pas de PCH, le ME était donc présent dans le contrôleur Ethernet. Il était non-signé, optionnel, plus petit (1,5 Mo) et ne contenait probablement que des données d'initialisation (le hardware n'étant pas capable de charger du code exécutable depuis le contrôleur). Sur les plateformes Penryn, les développeurs de Libreboot ont pu désactiver le chargement du ME, bien que celui-ci soit signé, via une bidouille du descripteur de fichiers du BIOS. Bien que certains passionnés essayent cependant d'en faire une rétro-ingénierie partielle afin de connaître son fonctionnement, il est pratiquement sûr que le ME ne sera jamais libéré.

  • le MRC (Memory Reference Code) : c'est un firmware présent dans les UEFI des plateformes Intel à partir de la génération Sandy Bridge (~2011). Il tourne sur le CPU principal, et permet d'initialiser la RAM et l'USB. Apparemment ce blob est non-signé, et pourrait potentiellement être remplacé un jour par rétro-ingénierie.

Sur les plateformes AMD :

  • NIC firmware : c'est le firmware du chip Ethernet (Network Interface Controller) embarqué, équivalent du GBE chez Intel. Apparemment ce blob ne concernerait que les chips Broadcom intégrés, relativement rares. Il pourrait en théorie être remplacé assez facilement.

  • VBIOS (VGA BIOS/VGA Option ROM) : Mêmes caractéristiques que sur les plateformes Intel. Notons que celui-ci n'a pas été libéré sur les Thinkpad dotés d'un GPU AMD : les modèles T60p et assimilés présentent donc des soucis d'initialisation vidéo au niveau du BIOS à l'heure actuelle. Notons aussi que AMD ne fabriquant pas que des GPU embarqués, le VBIOS d'AMD est également présent dans des cartes graphiques. Une tentative de libération de ceux-ci par rétro-ingénierie avait d'ailleurs été tentée il y a quelques années dans le projet "open radeonbios", mais celui-ci n'était pas allé très loin (juste une initialisation du port VGA et de la 2D sur certaines vieilles cartes).

  • le microcode CPU : Mêmes fonctions et mêmes caractéristiques que celui d'Intel. Dans Debian, on a pu voir arriver le paquet amd-microcode quelques mois après le paquet intel-microcode. Là aussi, des utilisateurs rapportent des bugs nécessitant d'appliquer les mises à jour du microcode sur des plateformes récentes. Comme pour Intel, il est signé en RSA 2048 bits et ne sera probablement jamais libéré.

  • AMD IMC (Integrated Microcontroller) : Il s'agit d'une sorte d'EC (Embedded Controller) présent dans le southbridge des cartes mères AMD depuis au moins 2007 (et peut-être même bien avant). Pour rappel, l'EC est un petit firmware présent sur les cartes mères (mais généralement en-dehors du BIOS, sur une puce dédiée) et prenant en charge les fonctions basiques de gestion de l'énergie. Il est possible de s'en passer au moins sur certaines cartes (qui utilisent l'EC classique à la place). Il est possible que l'IMC soit libéré par rétro-ingénierie dans un futur proche.

  • AMD XHCI (eXtensible Host Controller Interface) : c'est le firmware du contrôleur USB 3.0. Il est apparu lorsque AMD a commencé à implémenter l'USB 3.0 dans ses cartes mères (probablement au moment de la sortie de la plateforme Bulldozer/Fam15h et du chipset AM3+, donc aux alentours de 2011). Il est possible de s'en passer, mais alors il faut accepter de perdre les fonctionnalités USB 3.0 de la carte mère. Non-signé, il est théoriquement possible de le remplacer par rétro-ingénierie.

  • SMU (System Management Unit) : Le SMU se présente comme un EC subsidiaire présent dans le northbridge des cartes de la génération Fam15h et postérieures, prenant en charge la gestion de l'énergie des composants PCI et notamment des GPU, et gérant peut-être d'autres choses essentielles au système (avec un accès au moins partiel à la RAM). Il implémente notamment un petit processeur tournant par-dessus le processeur principal, les fonctions du SMU étant exécutées sur ce processeur secondaire. Le SMU est un blob signé, mais une faille de sécurité y a été découverte en 2014, permettant d'injecter du code dans une petite section non concernée par la signature. AMD a corrigé la faille dans une mise à jour du SMU, mais la clé de chiffrement (symétrique, HMAC) reste la même. Il a ensuite été découvert qu'on pouvait récupérer la clé HMAC du SMU sur des plateformes non mises à jour via cette faille, ce qui a été fait, et il est désormais théoriquement possible de libérer le SMU sur les plateformes AMD actuelles. Il est fort probable que la clé de chiffrement soit changée sur les futures plateformes.

Note : Cette architecture à base de processeurs virtuels tournant sur le processeur principal est en fait une architecture assez courante des blobs du BIOS (c'est apparemment aussi comme ça que sont implémentés l'IMC, le XHCI, le ME d'Intel et le PSP d'AMD), et le hacker Rudolf Marek qui a présenté une analyse du firmware SMU au 31ème Chaos Communication Congress en 2014 a proposé de les baptiser "matroshka processors" (processeurs-poupées russes).

  • PSP (Platform Security Processor) : L'équivalent du Management Engine, mais côté AMD. Il est apparu dans les cartes AMD Fam15h 4ème génération, correspondant à la plateforme Excavator/Carrizo, sorties en 2015. Comme le ME, il implémente son propre microprocesseur (un Cortex A8) et fait tourner un petit système d'exploitation par-dessus, indépendamment du système hôte et de façon totalement transparente. On n'a pour l'instant pas beaucoup d'informations précises sur ce qu'il fait : probablement des choses liées aux DRM, à l'image de PAVP chez Intel, et à la sécurité (TPM, accélération crypto, RNG). Les fonctionnalités du ME non-liée à la sécurité seraient absentes du PSP pour le moment, mais il n'est pas exclu qu'elles y soient intégrées un jour. Apparemment il aurait accès à la RAM, comme le ME. La carte mère ne boote pas si le PSP est absent. Le PSP est un peu plus documenté que le ME (on connaît l'algo de compression), et AMD fournit au projet coreboot un PSP "minimaliste" qui ne ferait qu'initialiser les composants de la carte mère au démarrage. On suppose que les futures versions du PSP intègreront des fonctionnalités actuellement gérées par d'autres parties du BIOS/EFI (comme initialiser la mémoire).

Pour résumer : Si vous avez un ordinateur Intel acheté entre 2005 et 2008, vous ferez face face à un GBE, un VBIOS, un petit ME "passif" et non-signé, et peut-être un microcode CPU. Pour un ordinateur post-2008, vous aurez un GBE, un VBIOS, un ME signé désactivable et peut-être un microcode. Après 2009, vous aurez un GBE, un VBIOS, un ME signé non-désactivable et peut-être un microcode. À partir de 2011, vous devrez faire face un GBE, un VBIOS, un ME signé nécessaire au boot, un MRC et très probablement un microcode. Si vous avez un ordinateur AMD acheté avant 2007, vous ferez face à un VBIOS, et peut-être un microcode et un firmware NIC. Après 2007, vous aurez un VBIOS, un IMC, peut-être un microcode et un firmware NIC. À partir de 2011, vous aurez un VBIOS, un IMC, un XHCI, un SMU signé et peut-être un microcode et un firmware NIC. Après 2015, vous devrez faire face à un VBIOS, un IMC, un XHCI, un SMU signé, un PSP signé, peut-être un firmware NIC, et probablement un microcode.

Au fil des années et des générations de processeurs, on observe bien une tendance : le nombre de blobs non-libres dans nos cartes mères augmente, leur taille augmente, la probabilité qu'ils soient nécessaires au fonctionnement du système augmente également, de même que la probabilité qu'ils soient signés et donc irremplaçables, et enfin le nombre de choses qu'ils sont capables de faire sur le système s'étend également. Les ordinateurs Intel qui donnent à l'utilisateur un degré de liberté raisonnable, et validés RYF par la FSF datent, au mieux, de 2008. On constate aussi qu'AMD finit toujours plus ou moins par faire les mêmes bêtises qu'Intel, avec quelques années de retard. Le comportement d'AMD vis à vis d'Intel fait un peu penser à celui du Parlement Européen vis à vis du Sénat Américain sur les lois liées au numérique : il suffit que le second décide de faire une connerie pour que le premier lui emboîte le pas quelque temps après.

La situation de la liberté de l'utilisateur sur les stations de travail modernes n'est donc guère radieuse, et on a de bonnes raisons de penser qu'elle sera de pire en pire dans les années qui viennent.

État du marché

Se pose alors logiquement la question suivante : Comment en est-on arrivé-là ?

Difficile de répondre objectivement à cette question sans avoir une connaissance exhaustive de l'histoire des ordinateurs personnels au cours du dernier quart de siècle, mais on peut déjà avoir des éléments de réponse en observant le marché actuel.

D'abord, il faut savoir que lorsqu'on parle des ordinateurs personnels, on parle presque exclusivement de plateformes x86. x86 est un jeu d'instructions (ISA : Instruction Set Architecture) mis au point par Intel à la fin des années 70, qui est peu à peu devenu le standard de fait dans les ordinateurs personnels, les serveurs et même plus récemment les supercalculateurs. Cette architecture est presque totalement contrôlée par Intel : tous les développements faits par Intel sur l'architecture x86 depuis la sortie de l'Intel 80486 en 1989 sont la propriété exclusive du fabricant. L'autre gros fabricant de processeurs compatibles x86, AMD, fait figure d'exception puisqu'il a obtenu d'Intel une licence x86 sur les processeurs 8086 et 8088, en 1982, à une époque ou Intel en accordait à ses concurrents. Il a tout de même fallu une bataille juridique pour qu'AMD puisse, en 1995, continuer à faire concurrence à Intel en développant ses propres améliorations sur x86. Malgré cela, Intel garde un contrôle très fort sur le marché, avec une supériorité technologique reconnue (le rapport performances/consommation fait qu'Intel possède une quasi-exclusivité sur le laptop) et une part dominante tournant autour de 80%.

En théorie, le BIOS ou UEFI est indépendant du microprocesseur, car il est situé sur la carte mère et est développé par le fabricant de la carte. Cependant, la carte mère est conçue pour accueillir un CPU d'une certaine marque et d'une certaine génération, et doit donc disposer un socket et d'un chipset compatibles, dépendants du fabricant du CPU, qui est alors en mesure de dicter ses conditions au fabricant de la carte mère. Dans le cas d'Intel et AMD, ces conditions incluent l'intégration obligatoire au sein du BIOS d'un package logiciel contenant les firmwares décrits plus haut. Ce package s'appelle FSP dans le cas d'Intel (Firmware Support Package) et AGESA dans le cas d'AMD (AMD Generic Encapsulated Software Architecture).

Note : Au moment où j'écris ces lignes, AMD essayerait de sous-licencier sa licence x86 à un constructeur chinois, ce qui laisserait a priori espérer qu'un nouveau concurrent puisse apparaître sur le marché du x86 dans les prochaines années. Cependant, il n'y a pas grand chose à espérer de cette tentative : clarifier la situation ne serait-ce que sur le plan juridique va prendre énormément de temps, il y a fort à parier qu'Intel ne laissera pas un nouveau concurrent émerger aussi facilement, que l'État américain mettra tout son poids dans la balance pour que la souveraineté américaine sur le marché des ordinateurs personnels et serveurs ne soit pas mise à mal, et, même si AMD réussit, on ne sait pas du tout sous quelles conditions cette licence sera vendue, ni si ce concurrent vendra des produits conçus dans l'intérêt de l'utilisateur (peut-être qu'ils seront simplement limités au marché chinois et assortis d'un package logiciel PRC-compliant).

Il existe d'autres architectures que x86 utilisées dans les ordinateurs personnels. Richard Stallman est connu pour avoir longtemps utilisé un netbook Lemote Yeeloong dépourvu de BIOS afin de ne pas dépendre de logiciels non-libres. Cet ordinateur utilisait un processeur Loongson utilisant l'architecture MIPS, aux performances médiocres, mais visiblement assez puissant pour permettre à Richard d'y faire tourner GNU/Linux-libre et sans doute EMACS. Certains constructeurs commencent à vendre des ordinateurs portables utilisant l'architecture ARM et donc non soumis aux conditions d'Intel et d'AMD. Certains Google Chromebook notamment utilisent un processeur ARM et sont vendus avec un BIOS Coreboot au moins partiellement libre. Bien que nettement plus puissants que les ordinateurs MIPS, les ordinateurs ARM restent significativement limités au niveau du matériel et en terme de puissance, comparativement aux ordinateurs x86 de génération équivalente.

On le voit, la situation en terme de concurrence sur le marché des ordinateurs personnels est elle aussi très mauvaise. Le marché est soumis à un quasi-monopole d'Intel, ou un oligopole Intel-AMD, suivant comment on voit les choses. Il n'y a grosso-modo pas de concurrence et la situation sur x86 est complètement bloquée. Cette situation génère beaucoup d'inquiétudes, tant en termes de conséquences sur les droits du consommateur qu'en termes d'évolution du marché.

Proposition n°1 : le matériel libre

Un nouveau regard

Le concept de matériel libre est difficile à définir. Théoriquement, il s'agit d'appliquer au matériel électronique, et par extension, aux autres objets physiques, les quatre libertés fondamentales du logiciel libre. Aujourd'hui, ce concept se heurte encore aux limites de notre technologie : il n'existe pas actuellement de moyen abordable, rapide et peu coûteux de copier du matériel électronique et donc d'assurer la liberté n°2. Pour cette raison, Richard Stallman et la FSF ne reconnaissent pas le concept de matériel libre et ont longtemps refusé de donner une analyse détaillée de la question. Pourtant, le matériel libre constitue pour certains libristes l'ultime espoir face à l'écueil principal du logiciel libre : la compatibilité avec le matériel. En effet, si le matériel est libre, on sait comment il fonctionne, et on peut donc facilement écrire des logiciels pouvant l'exploiter.

Les années 2000 et 2010 ont vu se développer de nombreux projets de matériel électronique pouvant s'apparenter, du moins en partie, au concept de matériel libre, et regroupés sous la bannière de l'"open hardware".
Le terme open hardware n'a lui non plus pas de définition précise. Selon les projets, il désigne tantôt du matériel libre, tantôt des circuits imprimés (PCB) libres sur lesquels se greffent des composants pas nécessairement libres. À l'heure actuelle, la très vaste majorité des projets dits open hardware appartiennent à la deuxième catégorie. Ce sont des PCB, dont les schémas sont publiés sous licence libre, reliant entre eux des composants (microprocesseurs, contrôleurs, puces diverses) non-libres. Pire encore, ces composants non-libres ne sont pas nécessairement documentés, et les projets pouvant se vanter de n'intégrer que du matériel parfaitement documenté se comptent sur les doigts d'une main.

En mars 2015, Richard Stallman a finalement publié un article détaillant ses réflexions sur le sujet, et définissant les positions officielles de la FSF concernant le matériel libre. Dans cet article, il réaffirme son rejet du terme "open hardware" ainsi que son scepticisme quand à la possibilité factuelle d'exercer la liberté n°2. Mais il introduit également quelques points nouveaux dans son discours :

  • on ne peut pas copier le matériel pour l'instant, mais on peut copier les fichiers qui le décrivent : il faut donc parler de "schémas de conception libres" (Free Hardware Designs)

  • les schémas de conception libre pourraient un jour devenir le seul moyen pour un utilisateur de faire son informatique librement

  • pour l'instant, il n'est pas nécessaire de rejeter le matériel non-libre, mais un jour, cela le sera peut-être. En attendant, les schémas de conception libres doivent être soutenus et encouragés.

  • il existe différents niveaux de conception pour le matériel. Les circuits électroniques des PCB sont un premier niveau, les circuits des puces embarquées sur ces PCB sont un second niveau, les cellules internes d'un FPGA en sont un troisième, etc. Il est probable qu'un jour on ait à libérer tout le matériel pour pouvoir faire son informatique librement, mais dans l'état où progressent les choses, nous devrons probablement libérer le matériel un niveau après l'autre.

  • avec des schémas de conception libres, on reste dépendant du fabriquant du matériel. Pour que la liberté sur le matériel soit effective, il faudra une démocratisation des moyens de production correspondant à ce niveau de conception de matériel.

Cet article a également fait l'objet d'un journal de whygee sur linuxfr, introduisant un site récapitulatif de certains projets de schémas de conception libres. L'occasion de jeter un œil sur les efforts entrepris dans le domaine jusqu'à maintenant.

La situation actuelle

On l'a bien vu et les contributeurs du projet Purism s'en sont mordus les doigts : dans l'état actuel des choses, il n'est pas possible de faire un ordinateur dépourvu de logiciels non-libres basé sur x86.

Le projet Purism, décrit dans une dépêche de 2015 dont les fondateurs ont tenté de faire croire à qui voulait les entendre qu'ils fabriqueraient un ordinateur portable doté d'un processeur Intel x86 dernière génération, et dépourvu de blobs signés et autres firmwares non-libres, a bien évidemment échoué, pour toutes les raisons décrites plus haut.

Malgré tout, il existe quantité de projets de schémas de matériel libres sérieux. La plupart sont des PCB basées sur des processeurs ARM ou MIPS, intégrant quelques contrôleurs (Ethernet, USB…) documentés, et une ou deux puces non documentées ne présentant pas ou peu d'alternatives, comme un GPU et parfois une puce Wifi. La situation déplorable des GPU embarqués sur ARM a été décrite dans une dépêche en 2013, et n'a pas vraiment changé depuis. Quelques projets cependant essayent ou ont essayé de rester aussi loin que possible du matériel nécessitant des logiciels non-libres, comme le défunt Ben Nanonote, basé sur un processeur MIPS, et le Novena Laptop, utilisant un processeur ARM et un GPU Vivante dont le firmware non-libre peut être désactivé. Ceux-ci sont bien évidemment bien en-dessous des Thinkpad x86 certifiés RYF par la FSF en terme de performances.

À un niveau de conception plus haut, on a les projets de microprocesseurs. Les projets cités par whygee dans son journal sont F-CPU et YASEP, mais il en existe d'autres, notamment le fameux projet OpenCores (qui semble maintenant être remplacé par LibreCores ), dont le sous-projet le plus avancé semble être OpenRISC, un microprocesseur basé sur l'architecture libre RISC-V. Les communautés de concepteurs de schémas de microprocesseurs libres semblent s'orienter dans deux principales directions, les FPGA, qui offriraient de grandes possibilités techniques, mais auraient des performances encore médiocres, et l'architecture RISC-V. Dans les deux cas, la communauté se heurte au problème de la dépendance au fabricant évoqué précédemment. Il est bien beau de concevoir des microprocesseurs, encore faut-il trouver quelqu'un prêt à les fabriquer, et qui plus est à les fabriquer en respectant la spec. De ce côté la situation est au point mort depuis toujours, même si un mince espoir commence à affleurer.

La question "Comment faire fonctionner aujourd'hui un système totalement libre sur une machine répondant aux exigences d'une station de travail moderne, notamment en terme de performances ?" reste en suspend.

Une solution à court terme

Situation de différentes architectures

Timothy Pearson (tpearson) est un important contributeur du projet Coreboot. Par le biais de son entreprise Raptor Engineering, il a aidé à porter Coreboot sur des cartes mères AMD pour serveurs, et a développé un logiciel d'automatisation de tests de la version de développement de Coreboot sur ces cibles.

En avril 2016, il publie sur la mailing list de la FSFE un e-mail intitulé Uncorrectable freedom and security issues on x86 platforms, dans lequel il détaille les problèmes de liberté des plateformes x86 rencontrés par les développeurs de Coreboot et de Libreboot, et donne un aperçu de la situation des différentes architectures non-x86 comme alternatives possibles pour des stations de travail utilisant un système libre, dans un futur immédiat. Les architectures possibles sont :

  • ARM : L'ISA ARM est la propriété d'ARM Holdings, une compagnie britannique qui conçoit des microprocesseurs et en vend des licences d'exploitation, mais n'en produit pas. Actuellement plus d'une quinzaine de fabricants disposeraient d'une licence ARM, ce qui témoigne d'un marché relativement ouvert. Le nombre de projets open hardware utilisant des processeurs ARM laisse penser que ces processeurs sont ensuite vendu sous des termes relativement libéraux. Les processeurs ARM courants sont généralement peu puissants, avec une puissance comparable aux x86 bas de gamme, très peu chers, presque imbattables en terme d'efficacité énergétique, et atrophiés de beaucoup des fonctionnalités importantes de x86 (support d'hyperviseur, ECC, SATA, PCIe…). Pour cette dernière raison les ARM courants sont inenvisageables pour une station de travail digne de ce nom. Il existe cependant des processeurs ARM haut de gamme qui ont une puissance comparable aux milieu de gamme x86 et disposent des fonctionnalités de ces derniers, mais qui sont très chers.

  • MIPS : L'ISA MIPS est développée par MIPS Technologies, qui comme ARM vendait des licences d'exploitations à différents fabricants. MIPS Technologies appartient depuis 2013 à Imagination Technologies (qui n'est pas vraiment l'ami du logiciel libre), mais quelques compagnies continuent à produire des processeurs MIPS. La plus connue est sûrement le chinois Lemote. Les processeurs MIPS sont généralement peu chers, bien en-dessous des ARM en terme de puissance, et d'une efficacité énergétique légèrement supérieure. Théoriquement suffisants pour faire fonctionner un netbook bas de gamme, ils sont surtout utilisés dans l'embarqué et ne sont pas vraiment envisageables pour une station de travail libre.

  • POWER : L'ISA POWER est développée par IBM, qui vend des licences d'exploitations à quelques fabricants. En 2013 IBM fonde l'OpenPOWER Foundation avec quelques autres acteurs, et propose ses nouveaux processeurs milieu et bas de gamme POWER8 sous des termes très libéraux, allant même jusqu'à fournir un package de firmwares libres pour faire fonctionner les cartes embarquant ces processeurs. Les processeurs POWER8 haut de gamme ne sont pas concernés mais ceux-ci sont avant tout destinés au marché des serveurs haute fiabilité et ne sont pas pertinents pour un ordinateur personnel. Les POWER8 milieu et bas de gamme, en revanche, offrent des performances équivalentes aux processeurs de dernière génération x86, offrent toutes les fonctionnalités qu'on peut attendre d'une station de travail, consomment beaucoup d'énergie et sont encore très chers.

  • RISC-V : L'ISA RISC-V ("risc-five") est développée par l'Université de Berkeley, et est librement disponible sous licence BSD. Personne ne fabrique de processeurs RISC-V actuellement. Les processeurs RISC-V sont théoriquement peu puissants et peu efficaces énergétiquement, selon les sources ils pourraient être légèrement inférieurs ou légèrement supérieurs aux actuels MIPS en terme de performances. Cette architecture n'est pour l'instant pas envisageable pour une station de travail libre, mais comme elle est entièrement libre, elle pourrait devenir une solution pour le logiciel libre à très long terme.

  • SPARC : L'ISA SPARC est développée par Sun Microsystems, qui appartient depuis 2010 à Oracle (pas vraiment ami du libre lui non plus). L'architecture du processeur SPARC T2 a été libérée sous licence GPL en 2007 et a vu naître quelques modifications libres, mais n'a pas vraiment évolué depuis et n'est pour l'instant pas envisageable pour une station de travail libre (elle n'est même pas mentionnée dans le mail de tpearson).

En résumé, les seules ISA constituant pour l'instant de bons candidats pour une alternative à x86 à court et moyen terme sont les haut de gamme ARM et les bas de gamme POWER8.

ARM

Regardons un peu plus attentivement les opportunités du côté des processeurs ARM haut de gamme. Ceux-ci, on l'a vu, possèdent toutes les fonctionnalités qu'on peut attendre d'un processeur équipant un ordinateur personnel moderne (PCIe, ECC, SATA, USB3, support d'hyperviseur, etc.). Parmi les acteurs développant des plateformes ARM haut de gamme, on trouve NXP Semiconductors, surtout connu sous son ancien nom : Freescale. Leur LS2085A NPU (Network Processing Unit) est probablement ce qui se rapproche le plus d'une station de travail moderne dans le monde ARM haut de gamme.

Le NXP LS2085A est une carte mère équipée de 8 cœurs ARM 64 bits Cortex-A57, avec slots de RAM DDR4, connecteurs PCIe, SATA3, USB3, GigabitEthernet, etc. La carte utilise un facteur de forme inhabituel, peut-être BTX, et est apparemment pensée pour équiper des boitiers horizontaux rackables.

Côté inconvénients, les processeurs n'ont pas de cache L3, elle embarque au moins un firmware non-libre dont l'élimination désactive les ports Ethernet intégrés (mais il est possible d'utiliser une carte réseau PCI), et bien évidemment, elle sera très chère (apparemment elle n'est pas encore disponible à la vente au moment où j'écris ces lignes).

POWER

Jetons maintenant un œil du côté des opportunités concernant les processeurs POWER8 milieu et bas de gamme. Les processeurs POWER8 sont une gamme de processeurs basés sur la spécification Power ISA v2.07 d'IBM. Comme les ARM haut de gamme, ils proposent toutes les fonctionnalités intéressantes qu'on retrouve chez les processeurs x86 modernes. Les POWER8 bas de gamme actuels affichent des performances supérieures aux ARM haut de gamme actuels.

Contrairement aux x86, qui sont little-endian (petit-boutistes), les processeurs POWER sont historiquement big-endian (gros-boutistes), mais les générations actuelles comme POWER8 sont bi-endian (biboutistes).

Les processeurs POWER8 mettent l'accent sur la bande passante : contrairement à l'ARM A57 ils possèdent des caches L3, et même des caches L4 pour certains modèles, offrent une importante bande passante pour les entrées/sorties et la mémoire, et proposent une interface additionnelle à PCIe appelée CAPI (Coherent Accelerator Processor Interface) supposée plus avantageuse en terme de latence.

IBM fournit, via l'OpenPOWER foundation, des firmwares libres pour faire fonctionner les cartes mères à base de POWER8. Contrairement aux ordinateurs sous ARM, les firmwares relatifs aux contrôleurs NIC et GPU intégrés sont libres, la seule exception étant le microcode du CPU. Cependant ce microcode est très différent de celui présent dans les processeurs d'Intel et d'AMD : il fait beaucoup moins de choses, effectue des tâches bien plus basiques, est stocké sur un module du processeur et n'est pas chargé depuis l'OS, et pourrait même être considéré comme acceptable par la FSF. IBM ne publie pas le code pour des raisons techniques, mais prévoit de résoudre ces problèmes et de libérer le microcode CPU de la prochaine génération de microprocesseurs (POWER9).

Bien évidemment, aucun des binaires nécessaires au fonctionnement de la carte mère n'est signé. Il existe cependant un mécanisme de signature dans les plateformes POWER8, mais celui-ci est totalement sous le contrôle de l'utilisateur : l'utilisateur peut ajouter sa propre clé, signer ses binaires et faire en sorte que l'ordinateur vérifie les signatures au boot. C'est un système de sécurité similaire à celui présent dans les Chromebook ARM de Google.

Du côté des inconvénients, rappelons que les processeurs POWER8 bas et milieu de gamme sont chers, et qu'ils ont une consommation entre 130 et 190W, ce qui exclut toute possibilité de les utiliser pour remplacer les x86 dans des ordinateurs portables. Cependant, ils restent de bons candidats pour des stations de travail fixes.

Malheureusement, les constructeurs de machines POWER ne proposent en général pas de produits pouvant faire office d'ordinateur personnel pour libristes : les cartes mères haut de gamme sont excessivement chères, les cartes mères bas de gamme n'utilisent pas les firmwares OpenPOWER mais de vieux firmwares non-libres, et généralement leur facteur de forme les rend inadaptées aux stations de travail.

C'est pourquoi Raptor Engineering a décidé de produire une carte mère ATX bas de gamme basée sur POWER8, appelée Talos. Celle-ci aurait un socket POWER8 pouvant accueillir un processeur 130W ou 190W au choix, et serait dotée d'une connectique impressionnante : 8 slots de RAM DDR3 (jusqu'à 256GB), 8 connecteurs SATA3, 1 slot PCI, 4 slots PCIe 8x, 2 slots CAPI/PCIe 16x, 1 slot mPCIe, 2 connecteurs USB 3.0 internes, 4 ports USB 3.0 externes, 2 ports eSATA externes, 1 port HDMI, 2 connecteurs RS232 externes, 1 connecteur GPIO, 2 ports Gigabit Ethernet. La carte mère devrait également intégrer des interrupteurs physiques pour activer/désactiver le NIC intégré et l'écriture des puces hébergeant les firmwares du BIOS et les clés de sécurité. Le GPU intégré sera un ASpeed AST2400 BMC, un simple contrôleur vidéo 2D sans accélération graphique. Pour tout usage allant au-delà de la simple bureautique (jeux, rendu 3D, etc), Raptor Engineering recommande une carte graphique, par exemple une Nvidia GK104 de la génération Kepler, qui, couplée avec le pilote nouveau, constitue une des dernières cartes de Nvidia pouvant fonctionner sans binaire signé. Ainsi, Il serait possible de constituer un ordinateur personnel capable de faire tourner des jeux comme Xonotic, sur un système totalement libre (si on exclut le VBIOS de la carte graphique, le microcode CPU et sans doute aussi le firmware du disque de stockage).

Actuellement la carte mère Talos est en développement, et Raptor Engineering essaye actuellement d'évaluer la demande pour ce produit. Pour un prix attendu d'environ 3700$, Raptor Engineering proposera la carte mère Talos, un CPU POWER8 octocore 130W, et la quasi-totalité des schémas des circuits de la carte mère. Ces derniers ne seront pas sous licence libre.

Il est probable que seuls les plus riches des libristes poilus achèteront une carte mère POWER8 Talos, mais il est aussi probable que cette initiative amorce l'émergence d'un nouveau marché de niche dans le monde des processeurs POWER, et fasse naître un nouvel espoir chez ceux qui voudraient utiliser une station de travail moderne, puissante et ouverte, pour programmer, travailler, créer, jouer librement, ou tout simplement faire leur informatique loin de la surveillance des états ou des entreprises, au cours des 5 à 10 prochaines années.

Update : Même si POWER8 semble être le meilleur candidat pour une station de travail fixe, il fait peu de doute qu'on devra lui préférer ARM sur les ordinateurs portables. Ceux qui suivent le blog de la FSF ou la newsletter de ThinkPenguin ont été notifiés de l'existence d'un nouveau projet : le dispositif EOMA68 de Rhombus Tech. Je n'ai pas regardé en détail, mais apparemment ce serait une carte mère à base d'ARM embarquée dans un boîtier, qui pourrait ensuite être couplé à d'autres éléments pour former soit un ordinateur fixe, soit un laptop, soit un routeur, etc, au choix de l'utilisateur. Je n'ai pas regardé ce projet très en détail et j'ai quelques doutes sur les possibilités techniques de faire un truc puissant et moderne avec un tel objectif de modularité, mais le fait que le projet soit déjà bien avancé et que la certification RYF fasse partie des objectifs mérite qu'on y jette un œil.

  • # Dépêche !

    Posté par . Évalué à 10.

    Non mais, tout ça est beaucoup, beaucoup trop intéressant pour ne pas être converti en dépêche !

    Merci beaucoup !

    • [^] # Re: Dépêche !

      Posté par . Évalué à 5.

      J'ai juste un soucis avec le titre : je ne le comprends pas.

      Sinon +1 pour la dépêche !

  • # Hello

    Posté par . Évalué à -6.

    Merci pour cette nouvelle pleine d'intérêt à lire à tête reposée.

    Est il possible de savoir qu'elle machine as-tu choisis pour nous écrire depuis la plage ?

    • [^] # Re: Hello

      Posté par . Évalué à 4.

      Un Lenovo post-2008, doté hélas de l'affreux ME :/

      splash!

    • [^] # Re: Hello

      Posté par . Évalué à 4. Dernière modification le 29/08/16 à 19:31.

      Une excellente machine est le ACER ChromeBook C720P.
      Nous n'avions jamais eu une machine comme cela.

      Grosso modo, et en très résumé qui mériterai d'être étoffé et sourcé : Google fait plus et mieux que tout les autres sur ce sujet. C'est à ire qu'il sécurise mieux cette pile initiale, par défaut. Tout en laissant la possibilité de le faire soi-même. La différence entre les deux se résume à une vis physique. C'est réellement très très bien fait.

      Le ACER C720P ne peut pas se passer de l'IME (il s'arrête électriquement au bout de 30mn d'usage sans) mais on peut remplacer la version par défaut (~5Mo) par la version pesant 1,7Mo. Tout le reste, absolument tout, est libre, code source livré et compilable soi-même (y compris le code de contrôle de la puce EC, on peut injecter son propre code avec un bus-pirate ou tout autre matériel destiné à cela) C'est une machine particulièrement agréable à utiliser, avec coreboot, sans perdre aucune fonctionnalité (acpi, S2/S3, tactile, …)

  • # Lien supplémentaire

    Posté par . Évalué à 6.

    Pour ceux qui voudraient avoir plus de détail techniques sur le fonctionnement des binaires des cartes mères Intel et AMD, le site de Libreboot a publié un excellent récapitulatif (en anglais) : https://libreboot.org/faq/#intel

    splash!

    • [^] # et une petite correction

      Posté par . Évalué à 4.

      Ainsi, Il serait possible de constituer un ordinateur personnel capable de faire tourner des jeux comme Xonotic, sur un système totalement libre (si on exclut le VBIOS de la carte graphique, le microcode CPU et sans doute aussi le firmware du disque de stockage).

      En fait les systèmes OpenPOWER n'ont pas besoin de charger le VBIOS de la carte graphique pour l'initialiser, celle-ci peut être initialisée directement avec le pilote nouveau sous linux.

      splash!

  • # fuites?

    Posté par . Évalué à 3.

    Est-ce qu'une analyse réseau ou autre montre des fuites quelconque de ou tentatives d'accès à ces fameuses puces même si le contenu est chiffré, les entêtes réseau ne peuvent l'être?

    • [^] # Re: fuites?

      Posté par . Évalué à 5.

      Tentatives d'accès je ne sais pas, par contre des développeurs Coreboot ont observé du trafic DHCP provenant du ME. Apparemment la façon dont le ME utilise le réseau est assez complexe, il peut générer sa propre adresse MAC ou utiliser l'adresse MAC principale de la machine et mélanger son trafic dans celui de l'OS hôte, intercepter le trafic à destination de l'hôte et répondre à certaines requêtes sur certains ports, avec des mécanismes similaires au port knocking.

      Après j'ai du mal à imaginer comment on pourrait utiliser le ME pour de la surveillance de masse, si j'étais la NSA je l'utiliserais plutôt pour de la surveillance ciblée, mais qui sait.

      splash!

      • [^] # Re: fuites?

        Posté par . Évalué à -10. Dernière modification le 27/08/16 à 20:30.

        La NSA a surement un accès total ! Peut-être même les plan de construction de ARM à IBM!

  • # Intel AMT , précision

    Posté par . Évalué à 4. Dernière modification le 27/08/16 à 22:56.

    Intel AMT n'est implémentée que dans les configurations vPro (il faut la carte mère ET le cpu qui vont bien), ton journal laisse penser que c'est le cas pour tous les cpus.

    • [^] # Re: Intel AMT , précision

      Posté par . Évalué à 4.

      Effectivement.

      Sur mon laptop je vois un autocollant vPro. Sur mes cartes mères Intel ATX, pas de mention de vPro, mais une mention de Intel SBA, qui apparemment nécessiterait un PCH doté de vPro et un CPU de chipset compatible, avec ou sans vPro.

      splash!

  • # Risc v

    Posté par (page perso) . Évalué à 5.

    Personne ne fabrique de processeurs RISC-V

    Il semblerait que NVIDIA va utiliser ce processeur comme contrôleur dans ses nouvelles cartes graphiques (ils ne vont pas le vendre)

    https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-RISC-V-Next-Gen-Falcon

    PS: excellent journal.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # excellent point !

    Posté par . Évalué à 6.

    Très bonne article, et ca vaudrait une dépêche ! Juste dans la liste des architectures sur lesquels il faut garder un oeil en temps que libriste, j-core, aka super Hitachi.

    Aujourd'hui, seule le j2 est disponible. C'est un coeur super Hitachi 2 avec le support du smp. Il est disponible sous licence bsd en forme vhdl et fonctionne d'emblée sur un fpga. Il n'a aucun brevet qui s'applique dessus et à une densité d'instruction proche du x86. Il y a eu un premier batch d'asic. Bon, clairement, ca fonctionne à 60MHz et on ne fera pas une work station avec ca.mais avec la fin des brevets sur le sh4 en 2017, il y a de quoi espéré une base très intéressante.surtout que contrairement au risc-v, le code libérée est du code de production avec un véritable objectif de performance et de coup. Voilà, je te conseille de garder un oeil sur j-core.org.

    • [^] # Re: excellent point !

      Posté par (page perso) . Évalué à 3.

      Très bonne article, et ca vaudrait une dépêche

      Ce journal a été promu en dépêche

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Je pense qu'il y a une erreur sur la description du RISC-V

    Posté par . Évalué à 2.

    Les processeurs RISC-V sont théoriquement peu puissants et peu efficaces énergétiquement

    Peu puissants oui, mais "peu efficaces énergétiquement"?
    Je pense qu'il s'agit d'une erreur: ils ont même pas de CCR pour améliorer leur efficacité énergétique.

    Après ça dépend si tu parles de l'ISA ou des implémentations: l'ISA a été conçue pour être efficace énergétiquement mais les implémentations c'est autre chose..

    • [^] # Re: Je pense qu'il y a une erreur sur la description du RISC-V

      Posté par . Évalué à 2.

      C'est ce qui est dit dans le mail de tpearson, je pense qu'il parle des implémentations. C'est valable aussi pour la puissance, puisqu'il a l'air de dire que théoriquement il est possible de faire des CPU très puissants quelle que soit l'ISA.

      splash!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.