Libérer un BIOS/UEFI – Installation de coreboot sur l’ASRock E350M1

Coreboot_full_web

Mes chers lecteurs, bien que majorité d’entre vous utilise un système d’exploitation GNU/Linux ou *BSD, combien d’entre vous peuvent prétendre avoir un ordinateur entièrement libre et donc avoir entièrement le contrôle ?
Comme le dit si bien le site Prism-break pour éviter de participer à un programme de surveillance à votre insu vous devez avoir un accès total au code/matériel.

Au menu de cet article nous allons voir comment libérer profondément un ordinateur en remplaçant un BIOS propriétaire (un UEFI dans cet exemple) par le logiciel libre d’amorçage coreboot.
Coreboot effectue qu’un tout petit peu d’initialisation du matériel, puis exécute une logique d’amorçage supplémentaire, appelée charge utile (payload).

Avec cette séparation de l’initialisation du matériel et le démarrage logique plus tard, coreboot peut évoluer à partir des applications spécialisées qui fonctionnent directement à partir du firmware, exécuter des systèmes d’exploitations dans la mémoire flash, charger des programmes d’amorçages personnalisés, ou mettre en œuvre les normes du firmware, comme les services PC BIOS ou UEFI. Cela permet aux systèmes d’inclure uniquement les fonctions nécessaires à l’application cible, ce qui réduit la quantité de code et de l’espace flash nécessaire.

Avertissement : Bien que simplifié au maximum cet article s’adresse aux personnes expérimentées, consulter préalablement le wiki du projet voir si cette procédure est toujours d’actualité.

Ingrédients nécessaires :

_ Idéalement une distribution 100 % libre supportée par la FSF
_ Une carte mère supporté par coreboot (les modèles récents encore commercialisés sont l’ASUS F2A85-M et l’ASRock E350M1 qui sera utilisé ici pour la suite)
_ Des puces de secours
_ Un extracteur de puce
_ Optionnellement un noyau linux 100% libre (si vous voulez un noyau plus récent que celui de votre distribution).

Préparation de la recette :

Installer votre distribution.
Retirer la puce originale de la carte mère et la garder précieusement (pour la garantie notamment) et y placer l’une de vos puces.

Installer les dépendances pour la construction de coreboot :
sudo apt-get install git build-essential gnat flex bison libncurses5-dev wget zlib1g-dev gdb curl iasl

Récupérer coreboot :
git clone https://review.coreboot.org/coreboot.git
cd coreboot
git submodule update --init --checkout

Pour éviter les erreurs avec la chaine de compilation de nos distributions, taper la commande :
make crossgcc-i386 CPUS=4

Récupérer votre bios vga (depuis le wiki ou de par vous même) puis le placer à la racine du dossier coreboot (et pas ailleurs!).
cp Bios-vga-E350M1.bin coreboot/vgabios.bin

Vérifier la somme md5 du bios vga de l’Asrock E350M1 :
md5sum vgabios.bin

Vous devez absolument avoir retrouvé l’une des 2 sommes de contrôles que j’ai testé (la différence entre les 2 c’est que l’un est coupé en hexa au niveau 0000e200) :
27d5d5b9dbd69dcd9af596de59cadc2a
ou
c6489a495362c09dd591ddb5cf3c5cac

Capture-vgabios.bin - GHex

Configurer coreboot :
make menuconfig

  1. Dans « Mainboard » choisir « ASROCK » en tant que « Mainboard vendor ».
    Selectionner « E350M1 » dans « Mainboard model ».
    Vérifier que le « ROM chip size » correspond bien à la taille de vos chips, pour ma part 4096 KB (4 MB). Coreboot
  2. Dans « Generic Drivers » cocher si besoin la case « PS/2 keyboard init ».
  3. Dans « VGA BIOS » cocher la case « Add a VGA BIOS image ».
  4. Dans « Payload » vérifier que ce soit bien « SeaBIOS » qui est sélectionné.
    Seabios est la charge utile la plus compatible qui fonctionne avec Windows, Linux et BSD car elle implémente les standards des BIOS. C’est également cette charge utile qui est utilisée dans QEMU et KVM.

Passer à la compilation :
make -j4

Si tout c’est bien passé, votre bios « coreboot.rom » est disponible dans le dossier « build« .

Vérifier que votre bios vga soit bien intégré à votre rom coreboot, soit avec un éditeur de fichiers binaires genre « ghex » vous avec cette commande :
grep -a VBIOS build/coreboot.rom

La commande précédente devant vous renvoyer :
AMD Fusion Wrestler generic VBIOS

Mise au four de notre préparation :

Après la création de notre rom coreboot, nous allons utiliser l’utilitaire flashrom pour écrire sur notre puce de mémoire flash.

Pour installer Flashrom des dépôts :
sudo apt-get install flashrom

Sauvegarder le BIOS
sudo flashrom -r sauvegarde-bios.rom

Flasher le BIOS avec votre rom coreboot :
sudo flashrom -w coreboot.rom

Ou si flashrom est récent :
sudo flashrom -p internal -c "MX25L3206E/MX25L3208E" -w coreboot.rom

Enfin et uniquement si flashrom n’a pas détecté d’erreurs, vous pouvez redémarrer votre machine.

Si vous avez une erreur aller faire un tour sur l’IRC de flashrom pour demander de l’aide ou essayez de rattraper votre puce avec une version récente de flashrom provenant de branche AMD :
sudo dpkg --purge flashrom
sudo apt-get install libpci-dev zlib1g-dev pciutils
cd ~
git clone https://github.com/stefanct/flashrom.git
cd flashrom/
git checkout -b amd origin/amd
make
sudo make install

Puis re-flasher (la syntaxe peut-être différente entre la version des dépôts et la dernière version disponible) :
flashrom -p internal -c modèle-de-votre-puce -w coreboot.rom

coreboot-boot

Sur le wiki il y a également un fichier de configuration pour fancontrol afin ajuster la vitesse du ventilateur du CPU de manière dynamique. Pour cela installer fancontrol :
sudo apt-get install fancontrol

Copier le fichier de configuration au bon emplacement :
sudo cp fancontrol /etc/fancontrol

Charger le module nécessaire maintenant et redémarrer le service fancontrol :
sudo modprobe w83627ehf
sudo /etc/init.d/fancontrol restart

Puis pour charger automatiquement le module à chaque démarrage :
echo "w83627ehf" >> /etc/modules

A consommer tout de suite et sans modération. Admirer la vitesse, 2 seconde top chrono entre le démarrage et grub 😉 (et encore c’est juste l’histoire d’appuyer sur F12 pour démarrer sur un autre support mdr)

Je tiens à remercier le projet Coreboot et Flasrom pour leur travail et à remercier spécialement Alien, Rluett, Openvoid pour avoir répondu à mes questions, à GNUtoo pour son choix de carte mère, à stefanct pour sa branche git amd flasrom.

EDIT: Cet article de 2013 a été actualisé et testé en juin 2020 mais veuillez prendre en compte ceci

16 réponses à “Libérer un BIOS/UEFI – Installation de coreboot sur l’ASRock E350M1

  1. Bonjour Hackurx,

    La question de votre article est bien posé :  » …combien d’entre vous peuvent prétendre avoir un ordinateur entièrement libre et donc avoir entièrement le contrôle ? « .

    Oui, en effet, plusieurs d’entre nous utilisons des ordinateurs encore propriétaires. Du moins, 90% des Libristes. Pourtant, il existe un ordinateur 100% Libre, Free et Open Source ! C’est Lemote : http://www.tekmote.nl/epages/61504599.sf/en_GB/?ObjectPath=/Shops/61504599/Categories/%22Lemote%20linux%20PC%20and%20Linux%20laptops%22

    Par ailleurs, Richard M. Stallman n’a pas honte de le faire figurer sur son site. Lui, au moins, il va jusqu’au bout de sa philosophie : http://richard.stallman.usesthis.com/
    Combien en font autant ? 2, 10 ou 100 ? Je ne sais pas… Il n’en demeure pas moins qu’on est très peu nombreux à le suivre. C’est dommage… Beaucoup d’appellé et très peu d’élus.
    Toutefois, dès que possible, je vais le suivre avant la fin du mois de juin sur cette voie. Car, après le scandale de Prism et autres intrusion de la NSA, je ne me vois plus dans Gmail, Google et autres services des Géants Américains.

    Seulement, je ne sais pas pourquoi Amazon propose le même ordinateur pour un prix de départ à $1.500 ! C’est carrément démentiel, non ? Est-ce une erreur ? Est-ce intentionnel ? Chi lo sa ?

    Sinon, je te souhaite bonne continuation…

    A plus !

    • Bonjour,

      Les Lemote sont bien sauf les rapports prix/architecture/puissance qui à mon gout ne sont pas très séduisant pour l’instant. Oui en effet il doit s’agir d’une erreur sur amazon, dans tout les cas je ne peux que conseiller le site officiel ou partenaire pour une commande.

      De mon coté c’est pour cela que j’ai préféré prendre du matériel classique compatible (et c’est plus amusant ^^), d’ailleur également conseillé par la FSF :
      http://www.fsf.org/resources/hw/systems

      Sur le lien on peut voir « This information is currently being updated, but still provides an insight into many of the desktop machines used at the FSF. »
      tradution: « Cette information est en cours de mise à jour, mais donne encore un aperçu de la plupart des ordinateurs de bureau utilisés à la FSF. »

      Dans la liste figure l’ASUS F2A85-M (que je citais ci-dessus) un modèle de carte mère très intérressant pour un pc de bureau 😉

      @ bientôt, bonne contination.

      Librement,

  2. Bonjour,

    En cherchant des infos sur flashrom et coreboot je suis arrivé sur votre article.
    Je voulais vous demander conseil pour utiliser ces outils.
    J’ai acheté ce pc (https://www.lesnumeriques.com/ordinateur-portable/schneider-scl141ctp-p42763/test.html) pour lequel je n’arrive pas à booter sur une distribution linux. Le mieux que j’ai pu obtenir c’est en désactivant le secureboot, le mode uefi et d’installer mint de façon classique.
    Pour autant, après redémarrage, j’arrive directement sur le bios, le pc ne trouve pas grub et ne peux pas booter sur mint.

    En conséquence, pensez-vous que je pourrai utiliser coreboot sur ce pc portable ?

    • Bonjour,

      Hélas non car rare sont les PC portable compatible avec coreboot (à part quelques Lenovo et Chromebooks).

      Il faudrait selon moi, tester une distribution en mode UEFI (installation avec table de partition GUID/GPT) et avec secure boot actif (idéalement ubuntu > 17.10) car je ne suis pas sur que Mint à une signature de démarrage UEFI.

      • Merci pour ta réponse, c’est bien ce que je pensais

        j’ai suivi tes conseils mais en mode uefi j’ai tjrs le même message d’erreur :
        Error: grub-efi-amd64-signed failed to install into /target/

        En plus j’ai fait une connerie, j’ai modifié une option dans le bios et maintenant je n’ai plus accès au bios, j’ai beau appuyer sur la touche « suppr » comme avant mais rien ne se passe, l’écran reste noir.

        Tu ne saurais pas comment faire un clear cmos ? j’ai laissé la batterie débranché pendant 24h mais ça n’a pas fonctionné.

      • 1] Error: grub-efi-amd64-signed failed to install into /target/
        Tu avais coché la case « télécharger les mises à jours pendant l’installation » ? Car les dernières MàJ peuvent corriger cela.

        2] Aie… Mais quoi comme option? Il s’allume quand même au niveau des voyants?

        3] La technique du « 24 heure sans batterie et sans pile 3V » sur les PC portable moderne fonctionne rarement. J’ai déjà effectué avec succès la technique du court circuit (voir si le modèle est connu sur youtube ou bien trouver le schéma technique de la carte mère pour voir où il faut procéder).
        Éventuellement, contact quelqu’un qui à un programmateur universel SPI, ou si tu es courageux :
        https://github.com/bibanon/Coreboot-ThinkPads/wiki/Hardware-Flashing-with-Raspberry-Pi

        Sinon voir avec le S.A.V du constructeur.

      • merci de tes réponses, j’ai essayé pas mal de chose depuis

        le wifi n’était pas détecté à l’installation, ça aurait peut-être fonctionné du coup

        je ne me souviens plus du nom mais ça me donnait le choix entre windows 8 et android, windows 8 était par défaut

        J’ai démonté le pc et je n’ai trouvé ni pile, ni cavalier et aucune indication me permettant de créer un contact entre deux point poiur faire une tension et donc un clear cmos.

        heu merci mais je n’ai pas tous ce matériel 😦

        voici la carte mère

  3. Voici la référence qui est inscrit sur la puce :

    uP6010Q T6F5A2

    le peu que j’ai comme info sur le net c’est que c’est un chip micro power intellect

  4. Comment peut t’on rajoute une carte mère serveur ASUS? La Z9PR-D12. J’aurais besoin dans le pire des cas, voulu contacter le staff pour savoir si ils pourraient le rajouter car c’est une carte mère pro, utiliser dans l’industrie.

    • Cette carte mère n’est pas référencée :
      https://doc.coreboot.org/mainboard/index.html

      Il ne semble pas y avoir de modèle relativement proche dans coreboot pour créer un hack et ainsi forcer le modèle.
      Par conséquent, il faut obtenir la documentation constructeur (ASUS, Intel etc.) des composants ou faire du reverse engineering afin de créer le code nécessaire pour la faire fonctionner avec coreboot… Les développeurs ne le feront pas si ils n’ont pas d’intérêt à le faire, il faudra au minimum leurs acheter la même carte mère et/ou les rémunérer.

      • bah laissons faire d’abord. C’est contraire au principe du libre GNU. Sachant que tout le monde pourrait en profiter si ce type de MB sortait en bios libre. Je suis decu.

      • Ce n’est pas contraire au principe de la GPL et du projet GNU, libre n’est pas forcément gratuit (exemple Red Hat Enterprise Linux). Il faut se mettre à la place du développeur qui ne va pas faire le travail des autres systématiquement.
        Après seul les utilisateurs libres qui disposent de cette carte mère (qui n’est plus commercialisée) pourraient en profiter et cela en admettant qu’ils disposent des compétences techniques et du courage pour jouer à ce niveau 😉

        Je peux comprendre votre déception, mais parfois il est intéressant de mettre les mains dans le cambouis. Sinon la solution la plus simple est d’acheter un modèle déjà compatible 😉

      • Oui enfin, si tu regardes Ubuntu qui est une compagnie. Et Debian qui est benevole. Les deux restes gratuit et suivi. Red Hat est comment dire.. Une boite a cash! Autant prendre CentOS qui est la meme chose sauf que le support tient de la communauté au lieu d’un centre d’expert qui te vend une licence digne d’un Windows.

        Ensuite mettre les mains dans le cambouis comme vous dites, oui est interessant mais dangereux egalement. Car on peut tout foutre en l’air en quelques secondes et dans dans mon cas, je laisse faire. Mais merci d’avoir pris le temps de me repondre. C’est tres apprécié.

Répondre à olivyeahh Annuler la réponse.