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

195 lines
7.2 KiB
Plaintext

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
authors: 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
https://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: pic_coreboot
coreboot.png
Logo coreboot
image: pic_kgpe
kgpe.jpeg
Carte-mère ASUS KGPE-D16
image: pic_kcma
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.
))
#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.
))
(( images_center
::pic_kgpe "h=280",
::pic_coreboot "h=280",
::pic_kcma "h=280",
))
#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&nbsp% 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&nbsp€/h. Cela signifie un
budget de +`48&nbsp095&nbsp€`+ 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.
)=
))