Le BIOS

https://www.latavernedejohnjohn.fr/articles/42-le-pc-fonctionnement-technique/105-le-bios/

Le BIOS (prononcez “biausse”) est un très vaste sujet en informatique, tout le monde le manipule à tâtons mais personne ne sait vraiment comment il fonctionne. Voici une petite fiche sur lui, histoire de ne pas mourir trop bête, pas comme Bob Morris.

Matériel ou logiciel ?

Le BIOS est un firmware, c’est un micro-logiciel, donc de bas niveau codé en assembleur. Mais un firmware particulier, car il est (en partie) “normalisé” dans le but est de démarrer logiciellement un PC. Il se charge puis réside en mémoire centrale et régit/contrôle le “matériel” et les périphériques au travers de routines internes jusqu’à ce que le système d’exploitation (Windows ou Linux peu importe) les remplace par les siennes (et ses pilotes/modules). Il joue le rôle d’interface entre le système d’exploitation et le matériel.

Le BIOS se présente sous la forme matérielle uniquement sous la forme d’une puce, implantée sur la carte mère, qui contient le logiciel. La puce du BIOS n’est qu’une simple mémoire morte, ce n’est pas un microcontrôleur. Le BIOS est exécuté en mémoire vive (RAM) par le processeur central (CPU).

Et pour les cartes graphiques, elles aussi ont un BIOS, à savoir le VBIOS (Video BIOS).

Les “BIOS vendors” n’assurent pas de support directement avec vous, pauvre utilisateur final, mais uniquement avec ses clients directs (les fabricants de cartes mères). C’est pour cela que lorsqu’une nouvelle version du BIOS de votre carte mère est disponible, c’est bien que Asus, Abit, MSI et consorts, vous la mets gracieusement à votre disposition, de leur proche chef sur leur site en section “support”. Car eux seuls connaissent le hardware que vous avez entre les mains, et peuvent patcher le BIOS pour corriger son comportement selon tel ou tel souci rencontré. C’est à eux de faire la modification.

D’ailleurs les constructeurs de cartes mères ne fournissent généralement plus de “mises à jour” du BIOS pour un modèle qui commence à dater de quelques années. C’est juste que, d’une part le BIOS étant maintenant mature, les problèmes restants sont mineurs et souvent contournables. Et d’autre part c’est une question de modèle économique, les marques préfèrent se concentrer sur les soucis des modèles en cours de production et encore vendus dans le commerce.

Un BIOS libre ça existe ?

Oui, coreBoot, LibreBoot, OpenBIOS ou seaBIOS sont des projets de la sorte.

Ces BIOS alternatifs et génériques sont principalement utilisés par les libristes “extrémistes” qui refusent le moindre logiciel commercial, patenté ou aux sources fermés sur leur ordinateur. Il faut dire que certaines failles de sécurité peuvent être présentes très tôt dans le démarrage du PC y compris depuis le BIOS donc… en effet ce n’est pas un fantasme. Mais rares sont les ordinateurs à être compatibles et la chose n’est pas facile à mettre en place. Je n’ai jamais essayé ces BIOS libres, je ne pourrai vous en dire plus. Je vous laisse approfondir par vous-même sur les sites ci-dessous.

La “pile du BIOS” et son rôle (pile de sauvegarde)

C’est un terme que j’entends souvent “la pile du BIOS”, c’est bien sûr un abus de langage aussi, ladite pile ne sert pas pour le BIOS à proprement parler mais pour la NVRAM (en rapport avec le BIOS). Le BIOS étant stocké dans une mémoire morte (Mask ROM, PROM, EPROM, EEPROM, Flash), pas besoin qu’une pile l’alimente pour que le programme soit conservé. Par contre la NVRAM a constamment besoin d’être alimentée pour conserver les réglages. On devrait donc parler de “pile de la NVRAM”.

La puce qui contient le BIOS ne contient que le programme logiciel, les réglages du BIOS, eux, sont stockés ailleurs. Selon la génération de la carte mère, il sont soit stockés dans la fameuse puce DALLAS qui intègre sa propre pile, soit dans le southbridge du chipset de la carte mère. Si vous retirez la puce du BIOS (ROM) de la carte mère (si elle se trouve sur un support amovible/socket) vous ne perdrez jamais vos réglages. En revanche vous les perdrez si vous retirez la pile.

La pile est utilisée lorsque le PC n’est pas sous-tension. Pour un PC avec une alimentation ATX (avec soft-power), la NVRAM est alimentée par le +5V standby tant que l’alimentation est sur secteur, ensuite c’est la pile qui est appelée et qui se vide. Par contre conservez à l’esprit que la pile elle-même s’auto-décharge et que même sur un serveur alimenté H24 pendant 15 ans, la pile sera également morte au bout de cette période, même si elle n’a pas été utilisée, le serveur étant constamment branché.

Sur un vieux PC type AT, où le secteur est coupé par l’interrupteur en face avant (grosso modo avant 1997-1998) : la pile sert dès l’arrêt électrique.

Comment savoir si ma pile est morte ?

Lorsque la pile est à bout, elle ne fournit plus l’énergie nécessaire à la NVRAM pour conserver les données, les données de la configuration du BIOS sont perdues. Au prochain boot, le BIOS vérifiera l’intégrité des données de la configuration du BIOS depuis la NVRAM et trouvera une anomalie (par comparaison de checksum - somme de contrôle). Il ne chargera pas les données, qui pour lui sont altérées, il utilisera une configuration minimale “par défaut” et vous affichera le message “CMOS Checksum bad” ou “CMOS Checksum error”. Accompagné aussi d’un message en anglais comme quoi l’heure et la date sont perdues et ne sont pas configurées.

Il vous faudra donc reconfigurer les paramètres de votre BIOS ainsi que la date en entrant dans le SETUP, et sortir du SETUP pour inscrire les paramètres en NVRAM. Le PC va rebooter (ou continuer) pour les prendre en compte. Et puis bien sûr il faudra aussi remplacer la/les pile(s) ou accumulateur(s) pour que les données soient conservées à nouveau les prochaines fois que vous éteindrez/débranchez votre machine.

Anticiper le changement de la pile, c’est possible ?

Certaines carte-mères peuvent “monitorer” la tension actuelle provenant de la pile et vous afficheront donc l’information dans le SETUP sous l’appellation VBAT.

Sous Linux, vous pouvez accéder à la commande “dmidecode” pour avoir accès à toutes ces informations. La présentation est sous forme d’arboresence mais vous trouverez l’information que vous cherchez.

On vous dira souvent qu’un BIOS mal configuré se traduit par un ordinateur plus lent que ce qu’il pourrait faire. Si cette affirmation a été pendant longtemps fortement valable, ceci est de moins en moins vrai de nos jours. En effet, maintenant les BIOS sont 100% automatiques, ça détecte tout, ça s’auto-configure un max, il n’y a plus rien à faire pour que le newbie soit tranquille. A tel point que dans les 365874 vidéos youtube qui vous expliquent comment assembler/monter votre PC vous-même, on passe souvent directement de l’allumage de la machine à l’installation de Windows sans passer par la case “BIOS”. Sacrilège ! Chose qui était impossible à une époque.

L’UEFI est donc le BIOS nouvelle génération, moins “bête”, rafraîchi, avec des fonctionnalités en plus, il est plus beau et plus gros aussi, on est loin des BIOS de 256 ou 512Ko voire de même 1Mo. En réalité il s’agit toujours d’un firmware normalisé qui joue exactement le même rôle que le BIOS (d’avant), à savoir démarrer un PC, mais son architecture est différente : on peut le résumer à un mini-BIOS invisible (routines de bases) plus une nouvelle couche logicielle supérieure intermédiaire avancée avant le système d’exploitation. L’UEFI est écrit en C ce qui le rend plus maintenable. Il est composé d’API et non plus d’interruptions logicielles.

Les avantages de l’UEFI sont nombreux : axé multi-architecture, reconnaissance native du réseau (plus besoin d’OptionROM externe pour faire du PXE), gestion des disques de grosse capacité (GPT), apparition du Secure Boot pour “valider la sécurité” depuis le démarrage (TMP du pauvre), un Shell intégré, des interfaces graphiques personalisables…

L’UEFI permet de lancer des application UEFI (.efi) sans avoir à lancer de système d’exploitation, on pourrait donc le qualifier de mini-OS à lui tout seul car il fait bien plus que les petites routines bas-niveau du BIOS ancestral qui va chercher et éxecuter une MBR de manière bête et méchante.

L’UEFI peut toutefois émuler le fonctionnement d’un BIOS via le module CSM (Compatiblity Support Module). J’en avais déjà parlé dans une vidéo.