Le BIOS
On appelle BIOS1) le logiciel de démarage du PC.
C'est la premiere chose que le processeur éxecute au démarage du PC.
Il est possible de le configurer pour démarer sur une clef USB par exemple.
Le flash
Le BIOS est stocké sur une puce mémoire flash sur la carte mère d'un PC.
Les puces de mémoire flash sont utilisé pour stocké des données dans plusieurs contexte electroniques. C'est un type de mémoire plutot lent et qui n'est pas fait pour être modifié un grand nombre de fois.
On dit qu'on flashe un puce mémoire quand on modifie son contenu.
Pouquoi ?
Il existe plusieurs cas qui peuvent amener à flasher un BIOS.
Par exemple :
Dans ces cas la, notre but va être de remplacer le contenu de la puce BIOS avec un autre compatible.
Remplacer le BIOS est une opération risqué, si le BIOS n'est pas compatible ou si le flashage ne se passe pas bien, le PC ne pourra plus s'allumer.
Voici les grande ligne de l'opération
Afin de flasher un puce, il va falloir utiliser un appareil spécialisé que l'on branche à un pc et à la puce.
Chaque flasheur fonctionne avec un voltage qui est soit de 5 volt soit de 3.3 volt.
Il existe des puces BIOS qui fonctionne à 5 volt, 3,3 volt ou 1.8 volt. Les plus récente ont tendance à être en 1.8 volt.
Il ne faut pas essayer de flasher une puce avec un voltage supérieur à celui prévu.
Pour baisser le voltage d'un flasheur, on utilise un adaptateur.
On utilise flashrom pour commander au flasheur de flasher.
Installation
Il est possible de l'installer sur des dérivé de debian avec
sudo apt install flashrom
Mais il est préférable de le compiler pour avoir la dernière version du logiciel.
Utilisation
Flashrom est un lgociel qui s'utilise depuis un terminal.
Pour l'utiliser nous allons avoir besoin de préciser le flasheur utilisé ainsi que son nom une fois branché.
Dans le cas d'une raspberry avec pico serprog.
Notre flasheur utilise le module serprog, on précise donc cela aprés avoir indiqué -p.
La documentation de serprog nous indique que l'ont doit indiqué deux paramètre dev et spispeed
spispeed est mis a 1M par défaut ce qui signifie que la communication entre la puce et le flasheur sera cadensé à 1MHz.
dev est le nom que le flasheur a pris une fois connecté au PC ainsi que la vitesse de communication entre le PC et le flasheur.
115200 est la vitesse par défaut et signifie que la quantité d'infoirmation communiqué entre la PC et le flasheur en 1 seconde sera au maximum de 115200 bits.
Ces valeurs devraient fonctionner avec la plupart des puces et flasheurs mais il peux être intéréssant de ralentir ces vitesses si le flash ne fonctionne pas.
Pour trouver le nom du flasheur, il nous faut connecter le flasheur puis entrer la commande suivante
sudo dmesg | more
Cela devrait nous afficher des messages qui indiquent qu'un nouvelle appareil a été connecté et quelque part dans ce texte devrait se trouvé une phrase du type.
Device now attached to ttyACM0
La partie qui nous intéresse est ttyACM0. Sur certain système le nom sera différent.
Avec tout cela voici a quoi ressemble la commande
sudo flashrom -p serprog:dev=/dev/ttyACM0:115200,spispeed=1M
Il ne nous reste plus qu'à indiqué si l'ont a envie de lire ou d'écrire sur la puce.
Pour lire on utilise '-r' :
sudo flashrom -p serprog:dev=/dev/ttyACM0:115200,spispeed=1M -r nom_que_tu_veux.bin
Si la lecture réussi, le contenu de la puce devrait être dans nom_que_tu_veux.bin
Pour écrire on utilise '-w' en indiquant le fichier contenant le code que l'on veut écrire.
sudo flashrom -p serprog:dev=/dev/ttyACM0:115200,spispeed=1M -w le_fichier_qu'on veut écrire.bin
Pour trouver un BIOS compatible, il faut trouver l'identifiant de la carte mère. Il devrait se trouver imprimer sur la carte.
Une fois le modèle trouvé, plusieurs possiblités