www/projets-commissions/asus-coreboot/index.stl

101 lines
6.5 KiB
Plaintext
Raw Normal View History

title: Support des cartes-mères ASUS KGPE-D16 et KCMA-D8 dans coreboot
about: Support des cartes-mères ASUS KGPE-D16 et KCMA-D8 dans coreboot
author: neox
tags: Logiciels Libres,Services,coreboot,libreboot,Libre en communs,a-lec
date: 2022-11-29
link: Commission Infrastructures : /projets-commissions/cominfra/
link: Respect Your Freedom : https://ryf.fsf.org/
link: coreboot : https://coreboot.org/
link: NLnet : https://nlnet.nl/
link: Free Software Foundation : https://www.fsf.org/
link: ASUS KGPE-D16 : https://www.asus.com/commercial-servers-workstations/kgped16/
link: KGPE-D16 : https://www.asus.com/commercial-servers-workstations/kgped16/
link: KCMA-D8 : https://www.asus.com/commercial-servers-workstations/kcmad8/
link: RowHammer : https://en.wikipedia.org/wiki/Row_hammer/
link: Management Engine : https://en.wikipedia.org/wiki/Intel_Management_Engine#Security_vulnerabilities/
link: PSP : https://en.wikipedia.org/wiki/AMD_Secure_Technology?lang=en
link: Spectre : https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)/
link: microcode : www.syssec.rub.de/media/emma/veroeffentlichungen/2017/08/16/usenix17-microcode.pdf
link: GNU Guix : https://guix.gnu.org/
link: GNU : https://gnu.org/
link: FSFLA : https://fsfla.org/
link: FSF : https://www.fsf.org/blogs/sysadmin/the-fsf-tech-team-doing-more-for-free-software/
link: KDE : https://kde.org/
link: SugarLabs : https://www.sugarlabs.org/
link: Replicant : https://replicant.us/
link: Raptor Engineering : https://www.raptorengineering.com/coreboot/kgpe-d16-status.php
link: Parabola : https://wiki.parabola.nu/Hacking:Servers/Beefcake/
image: 1 : coreboot.png : Logo coreboot
image: 2 : kgpe.jpeg : Carte-mère ASUS KGPE-D16
image: 3 : kcma.png : Carte-mère ASUS KCMA-D8
-----
#1 Support des cartes-mères ASUS KGPE-D16 et KCMA-D8 dans coreboot
(
+_Libre en Communs_+, au sein de sa _Commission Infrastructures, a fait dès sa création le choix d'héberger ses propres serveurs dans ses locaux et chez ses adhérents volontaires. Ce choix fut complété par celui de n'utiliser que du matériel certifié _Respect Your Freedom par la _Free Software Foundation et en n'exécutant que du logiciel libre sur ses processeurs principaux du +_BIOS_+ jusqu'au dernier programme applicatif. Cette certification indique que le matériel vendu respecte certain critères afin que la liberté des utilisatrices et utilisateurs soit respectée.
)
(
Les cartes-mères de serveurs qui ont été choisies par la _Commission Infrastructures sont les _ASUS KGPE-D16, des cartes puissantes certifiées _Respect Your Freedom et exécutant un BIOS libre dérivé de _coreboot.
)
( images_center
_image:2 h=125
_image:1 h=125
_image:3 h=125
)
#2 Qu'est-ce que le BIOS ?
(
Un BIOS, comme son nom l'indique, était initialement un ensemble de fonctions bas niveau
contenu dans la mémoire morte de la carte mère d'un ordinateur et lui permettant d'effectuer des opérations
de base lors de sa mise sous tension. Cependant, la définition d'un BIOS a
fortement évolué pour désigner également ce qu'on appelait par le passé le +_POST_+ : test de la présence de
périphériques et allocation de ressources pour ces derniers de façon à éviter tout conflit, et ensuite passer la
main à un chargeur de démarrage de système d'exploitation. On considère que le plus gros du travail effectué
par un BIOS aujourd'hui est l'+_initialisation et l'entraînement de la mémoire vive_+. En effet, il faut, par exemple, initialiser le
contrôleur mémoire et optimiser le timing et la tension de lecture/écriture pour des performances optimales.
Le code dans le BIOS qui gère cela est complexe puisque son rôle est d'optimiser plusieurs bus parallèles
fonctionnant avec des débits élevés et de les faire agir comme un ensemble homogène.
)
(
Le projet _coreboot, débuté sous le nom de LinuxBIOS, est un logiciel libre d'amorçage lancé par le Laboratoire Universitaire de Los Alamos en 1999 qui avait pour premier objectif de remplacer les BIOS privateurs des constructeurs souvent peu performants voire limités en fonctionnalités. Le but recherché était d'abord d'obtenir un logiciel plus rapide que les BIOS privateurs.
)
#2 Notre projet
(
Les cartes-mères _KGPE-D16 et _KCMA-D8 sont les seules cartes de serveurs qui étaient supportées par _coreboot sans besoin d'aucun logiciel privateur, mais elles ont été supprimées après la version 4.11. Elles avaient été portées initialement par _Raptor Engineering.
)
(
Elles peuvent être utilisées avec 100 % de logiciels libres, afin de continuer à obtenir des correctifs de sécurité contre les bogues exploitables à distance dans le BIOS (comme _RowHammer). Il n'y a pas de _Management Engine/_PSP sur ces cartes.
)
(
Certains processeurs compatibles avec ces cartes ne sont pas affectés par les bogues de la classe _Spectre, et il y a même du code source et une documentation pour la mise à jour du _microcode.
)
(
Ces cartes-mères sont utilisées pour l'hébergement par le projet _GNU (y compris _GNU Guix), la
_FSF, _KDE, _SugarLabs, _Replicant, la _FSFLA, +_Libre en Communs_+, ou encore _Parabola.
)
#3 Les objectifs du projet
(
L'objectif est que Libre en Communs, recrute une ou des personne(s) pour faire en sorte que coreboot supporte à nouveau ces cartes-mères.
Cette ou ces personne(s) serai(en)t embauchée(s) pour, +_au total_+, un équivalent temps plein de 12 mois, avec un salaire de 16.42 €/h. Cela signifie un budget de 48 095 € pour +_Libre en Communs_+. C'est la raison pour laquelle nous faisons une demande de financement à _NLnet pour parvenir à mettre en oeuvre ce projet.
)
(
Le travail à effectuer consiste à rebaser le support de ces cartes sur la version actuelle de coreboot (4.18), à corriger tous les bugs et les problèmes de stabilité et en amont ce travail, et à le maintenir jusqu'à ce qu'il soit complètement intégré à Coreboot.
)
(
Il y a donc un certain nombre d'étapes à franchir (liste non-exhaustive) :
<<
= trouver des outils de débogage pour travailler efficacement et valider les étapes : JTAG, gdbstub ... ;
= séparer le code du processeur/chipset du code spécifique à la carte ;
= supporter RELOCATABLE_RAMSTAGE ;
= prendre en charge de POSTCAR_STAGE ;
= supporter C_ENVIRONMENT_BOOTBLOCK ;
= gérer la sauvegarde des paramètres d'entraînement de la mémoire (parce que ce n'est pas fait du tout) et vérification que les tensions choisies ont un sens (parce que dans le code il y a des commentaires qui semblent dire "nous ne savons pas ce que nous faisons") ;
= initialiser les cœurs du CPU en parallèle.
>>
)