Articles - Fiches récapitulatives

Le BIOS

  |   27624  |   Commentaires (12)  |  Fiches récapitulatives



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. :lol

Keske cé ?



Wikipédia dit :
Le Basic Input Output System (BIOS, en français : « système élémentaire d'entrée/sortie ») est, au sens strict, un ensemble de fonctions, contenu dans la mémoire morte (ROM - Read Only Memory) de la carte mère d'un ordinateur, lui permettant d'effectuer des opérations élémentaires lors de sa mise sous tension, par exemple la lecture d'un secteur sur un disque. Par extension, le terme est souvent utilisé pour décrire l'ensemble du micrologiciel de la carte mère.


C'est l'élément logiciel de base d'un ordinateur de type PC ou compatible PC (à la sauce IBM). C'est lui qui va donner vie au PC en initialisant logiquement ses divers composants et instaurer un système de base, pour ensuite donner la main au système d'exploitation (DOS/Windows/Linux/MacOS). Il fait partie intégrante du processus de "boot" (démarrage) d'un PC.

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).

Le BIOS copié, enfin pas vraiment...



Créé par IBM pour ses machines PC (même si cela existait déjà aussi sur d'autres ordinateurs), il fut rapidement analysé et "copié" par rétro-ingénierie. D'une part, IBM fournissait beaucoup de documentations et de schémas techniques, d'autre part l'architecture étant à base d'Intel x86 : aucun composant de la machine n'est propriétaire IBM : la chose a été un peu facile pour Phoenix & Compaq d'analyser le programme pour mieux le reconstruire. En fait, il ne s'agit pas d'une copie, une vulgaire copie du BIOS codé et compilé par IBM aurait eu pour conséquence, pour l'entreprise qui s'y risquerait, de s'exposer à des poursuites judiciaires, le BIOS étant un logiciel, il est protégé par les lois sur le copyright. Les copieurs ne pourraient donc pas vendre leur "copies".

Par contre, rien n'empêche d'essayer de comprendre comment se comporte un logiciel et de construire un autre logiciel qui ferait la même chose et donnerait le même résultat. C'est comme cela que des "fournisseurs de BIOS" pouvaient se targuer de pouvoir fournir des BIOS 100% compatibles IBM et les revendre à des fabricants de cartes mères "compatible PC" sans problème à l'époque.

L'histoire complète : https://en.wikipedia.org/wiki/Phoenix_Technologies#Cloning_the_IBM_PC_BIOS

Les différents fournisseurs de BIOS ( "BIOS vendors")



Aujourd'hui les entreprises qui fournissent des BIOS sont plus ou moins toujours les mêmes depuis le début de l'histoire :



  • Award Software et son AwardBIOS, rachetée en 1998 par Phoenix, mais la branche BIOS a continué à exister après ce rachat.
  • American Megatrends et son AMIBIOS, toujours vivante.
  • Phoenix Technologies et son....... PhoenixBIOS puis son "TrustedCore BIOS", toujours vivante.
  • Insyde Software et son InsydeH2O "Hardware-2-Operating System", nouveau venu, enfin depuis 1998 quand même. Vraiment populaire depuis le milieu des années 2000.


D'autres constructeurs de PC possèdent leurs propres BIOS, c'est le cas notamment de Intel, Compaq, Dell, HP et IBM évidemment. Dans leurs ordinateurs, selon les modèles, soit ils mettent leur BIOS 100% propriétaire, soit du Award, AMI ou Phoenix qu'ils personnalisent et brident.

Qui fait quoi ?





Ce qu'il faut comprendre c'est que les fournisseurs de BIOS "vendent" leur BIOS aux fabricants de cartes mères. Gigabyte, Asus, MSI et j'en passe, tous, vont acheter un BIOS chez un de ces "BIOS vendors" pour équiper tel futur modèle de carte mère. C'est pour cela d'ailleurs que selon la carte mère le BIOS n'est pas le même. Vous prenez telle carte de chez Gigabyte, elle aura un BIOS Award, puis telle autre carte sortie 2 mois plus tard, sera elle équipée d'un BIOS AMI. Cela dépendra du contrat, du prix négocié par rapport aux fonctionnalités attendues et voulues, etc... Les "BIOS vendors" accordent aux fabricants de cartes mères d'implanter leur BIOS dans tel produit moyennant finance, un peu comme une licence. Ils ne vendent pas le code source qui reste bien gardé.

Par contre, comme vu plus haut, le "BIOS vendor" s'engage à fournir un BIOS compatible IBM PC ainsi qu'un ensemble de logiciels (toolkit) permettant au fabricant de la carte mère ensuite de le personnaliser/modifier, dans une certaine mesure.

La personnalisation du BIOS



Ensuite le fabricant de carte mère "modifie" le BIOS pour sa carte mère et chacun des modèles de carte mère. En fait il le personnalise, le configure et l'enrichit. Les routines et le code "dur" fourni par le "BIOS vendor" est conservé. Mais on y change le logo, puis on lui donne un nom, puis une version, et on y ajoute des tables de configuration, on y injecte des option/expansion ROM's, on choisit ce que l'utilisateur pourra faire ou non avec son BIOS, ce qu'on lui affiche comme options dans l'utilitaire SETUP, on y place les microcodes pour le CPU et le code supplémentaire pour les contrôleurs, le chipset, etc...

Le fabricant se doit de le faire, car certains modèles de cartes mères embarquent des fonctionnalités d'overclocking et d'autres non, selon aussi les chipsets, la PLL, le nombre de ports USB, PCI, AGP, SATA présents physiquement, le choix de la puce Super I/O, le câblage des entrées-sorties et autres choix de "routage" des GPIO font en sorte qu'il faut "personnaliser" le BIOS pour chaque modèle de carte mère créé. Voire même de sortir un BIOS différent pour une nouvelle simple révision hardware (REV. x) de la carte mère elle-même.

Anecdote personnelle : prenez une carte mère Asus CUR-DLS, cette carte (une vieille dual-scoket370 de 2000) est disponible au détail dans le commerce avec un BIOS Award.



Si vous tombez un jour sur un serveur Gateway 6400 ou 7400R, dedans vous aurez la même carte mère mais sans le logo Asus d'imprimé dessus (en version OEM). Et vous vous apercevrez qu'au premier boot elle possède un BIOS Phoenix.

<img src="http://www.skullworks.net/include/6400-350073622i.jpg" alt="6400-350073622i"6400-350073622i />

<img src="http://www.skullworks.net/include/6400-350073601.jpg" alt="6400-350073601"6400-350073601 />



Et je peux vous dire que vous pouvez flasher sur les deux cartes aussi bien le BIOS OEM personnalisé par Gateway (d'origine Phoenix) que l'Award et ce sans aucun problème et tout fonctionne.

Par contre, le BIOS d'une carte mère ne conviendra pas pour une autre carte mère. Et ce même si d'apparence le BIOS/SETUP est similaire avec les mêmes options et que la carte mère est très ressemblante physiquement avec les mêmes chipsets. N'oubliez pas que le fabricant Asus a pu interconnecter les composants, en n'utilisant pas les mêmes ports/interfaces d'entrée/sortie du southbridge ou du northbridge, que le voisin Abit par exemple.

Les nouvelles versions d'un 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.

Les BIOS bugués/pourris (volontairement bien sûr, sinon ce ne serait pas drôle)



Maintenant que vous savez qu'un BIOS peut, soit être propriétaire, soit être modifiable par un fabricant, dans le cas où ce dernier ne saurait pondre son BIOS, soyons machiavélique et imaginatif. En fait c'est du déjà vu, une marque qui volontairement altère le comportement de son BIOS et le rend incompatible ou instable avec un système d'exploitation donné ou un périphérique particulier, c'est aussi en vogue. C'était l'époque des PC tatoués.

Évidemment rien n'est "prouvable", c'est très subtil, mais bizarrement Windows ou Linux ne s'installe pas et bloque sur une erreur et telle marque de carte PCI n'est pas reconnue une fois branchée ou si le disque dur est remplacé, le nouveau n'est pas exploitable pour une raison obscure. Linux ne boot pas de lui-même il faut lui donner des arguments pour que le noyau démarre parce que le BIOS n'est pas codé correctement. Vous me croyez parano ? Que nini. Certains constructeurs mainstream tels que Packard Bell ou Compaq le font.

Fabien a déjà fait une vidéo là-dessus : https://www.youtube.com/watch?v=99MP9EOfrME

En fait ce qu'il faut comprendre, c'est que les constructeurs peuvent faire ce qu'ils veulent avec ça. Ils peuvent très bien ne pas vouloir vous laisser démarrer votre PC car il y a telle carte avec tel couple de Vendor ID/Device ID d'installée par exemple, ou si le disque dur ne correspond pas à la signature de telle marque d'origine, ou si vous avez plus de tant de RAM. C'est rare, mais pas impossible. Exemple concret avec des portables IBM Thinkpad qui refusent de démarrer s'il n'ont pas une carte Wi-fi compatible d'installée.

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.



De quoi est constitué un BIOS ?



Un BIOS est un assemblage binaire de routines de bas niveau, de tables de configuration ainsi que de programmes (Intel ME, etc...).

Le POST



<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/POST_P5KPL.jpg/606px-POST_P5KPL.jpg" alt="606px-POST_P5KPL"606px-POST_P5KPL />



Après un signal RESET général, le BIOS s'initialise en interne et lance la procédure de POST, Power-On Self-Test. Le POST est un bout de code, une procédure logicielle déclenchée à chaque démarrage ou redémarrage. Elle consiste en une succession d'initialisations et de tests.

  • Contrôle du bon fonctionnement du premier mega-octet de la mémoire vive
  • Initialisation de vecteurs d'interruption,
  • Tests de différents éléments bas niveau de la carte mère (DMA, APIC, ...),
  • Vérification de l'état des données de la NVRAM,
  • Application des données de la NVRAM,
  • Initialisation du BIOS vidéo,
  • Décompte & test sommaire de la mémoire vive,
  • Reset, initialisation, configuration et détection des périphériques USB,
  • Reset, initialisation, configuration et détection des périphériques IDE & SATA,
  • Constitution de la liste des périphériques "bootables",
  • Test présence et état du clavier (touche collée),
  • Lancement des différentes Expansion ROMs des cartes SATA/SCSI RAID ou réseau,
  • et de tout un tas d'autres choses...


A noter que l'ordre peut varier selon la criticité.

Apparté : La POST-Card





Le déroulement du POST peut-être surveillé par une POST-Card, une carte additionnelle enfichable sur un port PCI ou ISA, qui affiche l'étape de la dernière routine ou du dernier test appelé. A chaque étape du POST correspond un "code" hexadécimal à 2 caractères. Ce qui peut aider au diagnostic d'un ordinateur qui n'arrive plus à démarrer alors que l'on a toujours pas d'affichage vidéo. Vous en trouverez à la pelle sur eBay pour quelques euros.



Des afficheurs 7 segments peuvent déjà être installés sur les cartes mères haut de gamme comme celles pour les gamers. De quoi provoquer l'hilarité d'abrutis qui ne comprennent rien à ce qu'ils voient.

Remarque sur les POST-card : les codes héxadécimaux varient d'un "BIOS vendor" à l'autre et selon les versions de BIOS. Les séquences de codes ne sont pas les mêmes d'une carte mère à l'autre. Ne vous fiez pas aux tableaux joints sur un papier ou une notice, ils sont en général obsolètes. Vous pouvez tenter quand même votre chance sur www.postcodemaster.com. De plus, il ne faut pas considérer la POST-card comme une carte magique qui vous indique comme par enchantement ce qui ne va pas. Vous vous doutez bien que si les choses étaient aussi simples, vous en auriez déjà entendu parlé et vous en auriez déjà une chez vous. ;) Désolé mais à un moment il faut un peu d'expérience. :lol Plus d'info sur la page Wikipedia.

Une fois les vérifications faites et qu'il n'y a pas d'erreur, le BIOS (selon les variantes) laisse place au tableau récapitulatif et fait un bip court via le buzzer, puis tente de joindre un périphérique amorçable pour démarrer un chargeur de démarrage puis un système d'exploitation.

<img src="https://upload.wikimedia.org/wikipedia/commons/1/1a/POST2.png" alt="POST2"POST2 />



Le SETUP



Le SETUP (ou CMOS Setup / CMOS Configuration) est le nom donné à l'utilitaire de configuration intégré au BIOS. L'utilisateur peut l'appeler pour configurer le BIOS de sa machine. Il existe beaucoup de sortes d'écrans différents. Il s'agit d'un utilitaire graphique manipulable au clavier :



Depuis l'UEFI, les interfaces sont plus jolies, avec prise en charge de la souris :



Le SETUP permet toujours à l'utilisateur :

  • d'ajuster la date et l'heure
  • de régler la séquence de démarrage
  • de sauvegarder les nouveaux réglages (Save & Exit Setup)
  • d'annuler tous les réglages que l'on a touché, sans rien sauvegarder (Exit Without Saving)
  • de restaurer les paramètres par défaut (Load ***** Defaults)


Selon le modèle de la carte mère, les options disponibles dans le SETUP sont plus ou moins fournies et les amateurs d'overclocking y trouvent toujours leurs réglages préférés. Même si ceux-ci sont de nos jours ajustables directement depuis le système d'exploitation, via des logiciels utilitaires d'overclocking divers et variés.

Comment rentrer dans le SETUP de son BIOS ?



Pour rentrer dans le SETUP il suffit généralement de presser une touche (ou une combinaison de touches) du clavier au moment du POST dans un certain intervalle de temps (quelques secondes) :

  • Après que le clavier soit totalement initialisé (clignotement des LEDs)
  • Avant que le timeout ne soit expiré ou que le POST ait terminé son travail


Cette touche n'est pas standardisée. Généralement on croise souvent les touches : SUPPR. (DEL), et les touches de fonction F1 à F12. Au moment du POST en général un message "Press F2/DEL to enter SETUP" vous est indiqué, bien que ce message peut être volontairement masqué (selon la configuration).

Un peu de vocabulaire diantre !



NVRAM



Le sigle NVRAM signifie en anglais Non-Volatile Random Access Memory. On l'appelle aussi la Non-volatile BIOS memory. C'est tout simplement la mémoire (ou l'emplacement mémoire) dans laquelle on va stocker les paramètres du BIOS que l'on sauvegarde via le SETUP.



Cette mémoire n'a rien à voir avec la RAM (mémoire centrale). La RTC (l'horloge) peut aussi l'utiliser pour y stocker l'heure. Il s'agit d'une mémoire de type SRAM de faible capacité (à peine quelques octets). Comme il s'agit de SRAM (et non pas de ROM) elle a besoin constamment d'être alimentée sinon les données stockées sont perdues. Le code (programme) du BIOS n'est pas stocké dans la NVRAM mais dans une ROM/PROM/EPROM/EEPROM/Flash à part.

J'en vois déjà certains venir me dire : "et mais dis donc ça ne rentrerai pas en contradiction avec le fait qu'elle soit non-volatile si il faut l'alimenter ta NVRAM ?". En effet il y aurait de quoi s'y perdre. Il s'agit d'un nom inapproprié, car c'était du temps où les PC étaient équipés des fameuses RTC DALLAS (puce tout en un), mais c'est pourtant très simple : c'est justement parce que on lui ajoute une pile/batterie qu'elle en devient non-volatile. ;) Je vous rappelle que la mémoire flash n'existait pas à l'époque. En résumé :

NVRAM = SRAM (CMOS) + sa pile/batterie



Depuis les Pentium/Pentium2, la partie SRAM de la NVRAM est située dans le Southbridge. De nos jours elle est remontée dans le PCH.

CMOS





CMOS signifie Complementary metal–oxide–semiconductor, c'est un procédé de fabrication pour les circuits-intégrés (comme le PMOS autre technologie de MOS). Point-barre. L'avantage du CMOS c'est qu'il réclame peu d'énergie. C'est pour cela qu'on a choisi cette technologie pour fabriquer la partie SRAM de la NVRAM. Une simple pile bouton CR2032 permet d'alimenter cette SRAM de type CMOS pendant des années sans souci. Une phrase du genre "vider le CMOS" n'est foncièrement pas fausse, par contre "vider le BIOS" n'est pas correct. Même si par abus de langage on le retrouve souvent.

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.




Certains BIOS "gentils" vous avertirons avec un message au boot pour vous dire "CMOS battery low" ou quelque chose comme cela pour vous prévenir que la pile est bientôt vide.



Mais généralement ce sera trop tard, vous aurez le message "CMOS battery failed" pour dire que c'est trop tard et que les réglages sont perdus.

Puis-je remplacer la pile à chaud ?



Oui et non. Si votre pile est bientôt morte. Comme le rappelle Stéphane Marty dans sa vidéo, le mieux étant de remplacer la pile avant qu'elle ne flanche. Sauf que, si vous débranchez votre PC pour changer la pile vous allez perdre les réglages, la première chose à faire c'est d'aller dans le BIOS et de noter les réglages quelque part avant toute intervention. Tout simplement pour les remettre correctement après plus tard si on les perds.

Pour un PC ATX : pour éviter de perdre les réglages lorsque l'on remplace la pile on peut le faire avec la tension +5V standby de présente, c'est à dire PC branché au secteur mais éteint. Le hic c'est qu'une pile qui tombe sur la carte mère ça peut faire des court-circuits. Oui on peut le faire sans crainte mais avec du tact, si vous pouvez le faire sans balader la pile sur la carte mère lors de vos manipulations. Ne le faites pas PC allumé, cela ne sert à rien et aggrave les risques en cas de mauvaise manipulation.

Procéder à un vidage du CMOS



C'est l'action liée au BIOS la plus connue du grand public : "faire un reset du CMOS". L'action consiste à vider le contenu de la NVRAM. Comme on vient de le voir plus haut : lorsque la pile est morte les réglages de la NVRAM sont perdus. Dès lors si on veut volontairement que son ordinateur perde ces réglages il n'y a qu'a couper l'alimentation de la NVRAM : c'est à dire enlever sa pile pendant quelques secondes (voire une minute pour être sûr).

Mais pourquoi vouloir faire cela ?

Généralement lorsque son PC ne démarre plus et que l'on se trouve devant un écran noir. Les programmes des BIOS d'une certaine époque étaient "bêtes". Comme vu avant, lors du démarrage de la machine : le BIOS fait une vérification des données du CMOS par somme de contrôle. Le BIOS lit l'intégralité de la NVRAM et en calcule une somme de contrôle (checksum). Ensuite il compare celle-ci avec la somme déjà inscrite quelque part lors du dernier passage de l'utilisateur dans le SETUP. Si les deux sommes de contrôles ne sont pas identiques alors le BIOS charge des valeurs par défaut, n'applique pas les données issues de la NVRAM et vous affiche le message CMOS Checksum bad" ou "CMOS Checksum error". Si par contre les deux sommes de contrôle étaient les mêmes alors c'est que les données du CMOS ne sont pas corrompues, elles sont intègres. Dès lors le BIOS les appliquaient.

Sauf que si l'utilisateur avait mis des paramètres erronés dans le SETUP comme des fréquences trop hautes pour le CPU ou des mauvais timing pour la mémoire, le BIOS appliquera les réglages souhaités (à chaque démarrage) et demande alors au CPU ou à la RAM de tourner trop vite ce qui fait planter l'ordinateur avant même d'avoir une image à l'écran. L'ordinateur ne démarre pas.

La seule solution est de vider les réglages de la NVRAM : pour cela soit on peut retirer la pile/batterie de la carte mère, soit déplacer ou installer un cavalier (jumper) sur la carte mère. Consultez le mode d'emploi de la carte mère. En général la cavalier se nomme CLEARCMOS, JCMS ou CLRMOS.




N'oubliez pas de débrancher le cordon d'alimentation du PC avant de déplacer le cavalier et de bien le remettre à sa place AVANT de rebrancher le cordon d'alimentation du PC. Vous pourriez endommager votre carte mère.

Par la suite au prochain reboot les réglages par défaut seront appliqués. Vous devrez par contre tout remettre les paramètres.

Pour en savoir plus



Reprise automatique sur incident



Depuis quelques années les BIOS sont plus intelligents, avec un système de fanion (ou de flag), ils sont capables de s'apercevoir que les réglages utilisateurs ne sont pas bons et sont capables de redémarrer lorsqu'ils échouent à appliquer la configuration utilisateur laissée dans la NVRAM. Plus besoin de "vider la NVRAM" manuellement même si c'est toujours possible de la faire.

Exemple simplifié : Lorsque le BIOS tente de démarrer, il place la valeur 1 (KO - NOK) quelque part en NVRAM. Puis ensuite il charge la configuration utilisateur et l'applique, si le PC est toujours fonctionnel après cette étape, il place la valeur 2 (OK) et l'utilisateur peut rentrer dans le SETUP ou démarrer sous Windows/Linux normalement.
Si le PC n'est pas fonctionnel après application des réglages utilisateurs, la valeur 2 n'est pas placée en NVRAM car le PC est planté. Si l'utilisateur redémarrage sa machine le BIOS va lire la NVRAM et tomber sur la valeur 1 : cela va indiquer au BIOS que le démarrage précédent ne s'est pas bien passé, puisque dans un cas nominal il devrait trouver la valeur 2 (OK) laissé la fois d'avant.

Dans ce cas le BIOS chargera d'office des valeurs "safe" par défaut et ignorera les réglages utilisateurs. Il pourra en plus indiquer un message à l'écran pour inviter l'utilisateur à les contrôler et les modifier du genre "Previous Boot Failed. Defaults values used. Please run SETUP to check parameters.".



C'est un peu le même mécanisme avec les fonctions d'overclocking automatique dans les BIOS : le BIOS procède pas à pas et applique à chaud la nouvelle fréquence (200Mhz puis 201, 202, 203, 204, etc...) et inscrit après 2 secondes de validation la valeur dans le CMOS jusqu'à une fréquence fatidique où le CPU/RAM perdra la boule. La dernière valeur du FSB inscrite en NVRAM correspondra donc à la dernière bonne valeur supportée, avant celle supérieure qui fait tout planter. L'utilisateur à juste à rebooter sa machine pour retrouver un PC fonctionnel avec la plus haute fréquence du FSB supportée qui a été déterminée.

Les différents types de "piles" utilisées



La CR2032





De nos jours la pile au lithium CR2032 semble être la référence, mais aucun standard en la matière n'est défini à ma connaissance, rien n’empêche un constructeur de mettre autre chose. Rappel : une CR2032 est une pile, pas un accu, elle ne se recharge pas. Une fois morte il faut la remplacer. Sa durée de vie très est variable, mais généralement c'est de l'ordre de quelques années (3-10 ans). Elle est installée dans un socket et est facilement remplaçable.

Les piles conventionnelles (LR6/LR3)



Déjà croisées dans ma vidéo sur le Tulip, elles étaient utilisées autrefois.

Les accus Ni-Cd & Ni-Mh






D'une forme cylindrique, ce fut une calamité ces machins en 3.6V, sur le long terme ils coulent et ruinent la carte mère. Vous trouverez beaucoup d'articles qui parlent de cela sur le net car elles ont été installées dans des flippers, des bornes d'arcade, des Amiga, et plein d'autres choses. Vous les trouverez pas mal dans les PC de génération i386/i486.



On peut remplacer ces accus par une pile CR2032 mais il faut mettre une diode. En effet la pile ne se recharge pas donc il faut bloquer le courant de la recharge mais le laisser passer dans l'autre sens.

Les RTC DALLAS



<img src="/images/articles/dallas/dallas13.jpg" alt="dallas13"dallas13 />



Une RTC c'est une Real Time Clock. Dorénavant en partie incluse dans les southbridge/platform controller hub des cartes mères modernes, elles constituait avant une pièce à part entière.

Avec l'ère des 486/Pentium, la firme DALLAS a produit plusieurs modèles de la forme d'un rectangle. Dans cette puce DIP-24 se trouve le circuit-intégré avec la circuiterie d'horloge et de la SRAM mais aussi un quartz ainsi qu'une pile, donnée pour servir pendant 10 ans. Le module est donc quasi-complètement autonome.

Au bout de quelques décennies, évidemment la pile interne est morte et le module ne retient plus ni l'heure, ni les réglages du SETUP fait par l'utilisateur. Le problème étant qu'ici la pile est interne et ne peut être remplacée. Il faut donc remplacer le module DALLAS au complet. Ces modules sont obsolètes, DALLAS fourni encore des modèles "compatibles" avec les plus anciens. Sinon vous en trouverez des "compatibles" sur le marché chinois. Seulement le module est souvent soudé directement sur la carte mère ce qui implique du matériel pour le retirer (comme une station de dessoudage). Des fois les constructeurs l'auront placé sur un socket, dans ce cas le module DALLAS peut être facilement retiré.



Pour éviter de le remplacer on peut toujours greffer une pile CR2032 si on est un peu calé en soudure et avec un DREMEL.



Aller plus loin



Très bon site : http://pc-restorer.com/replacing-cmos-batteries-in-old-pcs/

Les fonctionnalités



Depuis l'IBM PC de 1981, le BIOS n'a cessé de grossir pour devenir obèse. D'une taille minuscule de 4Ko on en est arrivé à 1Mo avant l'UEFI qui a pris sa place. Le BIOS s'est vu greffer de nouvelles fonctionnalités au fil des ans. On a demandé au BIOS d'être plus "user-friendly" et de s'occuper de plus de choses, mais tout ce nouveau code prend de la place. En plus on lui demande de se cacher derrière des logos pour ne pas brusquer l'utilisateur. :whistle

ACPI



Apparue en 1996, l'ACPI pour Advanced Configuration and Power Interface, est un standard logiciel documenté, multiplate-forme et ouvert utilisé par les systèmes d'exploitation pour :
  • la découverte,
  • la configuration,
  • la gestion des états d'alimentation,
  • et la supervision des composants matériels de l'ordinateur (CPU/chipset/contrôleurs)


Le BIOS embarque donc à la fois des fonctions logicielles, c'est à dire des bibliothèques de fonctions (API) ainsi que des tables de configuration fixes ou dynamiques, sur lesquelles le système d'exploitation peut s'appuyer pour contrôler le matériel. Typiquement, cela permet de mettre en sommeil des périphériques et de les réveiller, que ce soit sur un PC portable, un PC de bureau ou un serveur. Il fut destiné à remplacer les anciennes normes APM, MPS et PlugAndPlay. Tout ceci se retrouve combiné et étendu dans l'ACPI.

Depuis Windows Vista, le BIOS doit supporter l'ACPI.

APM



L'APM signifie Advanced Power Management. Il s'agit d'une API développée par Microsoft et Intel qui est apparue en 1992, elle permet à un système d'exploitation d'avoir une politique de gestion d'énergie pour les composants et des périphériques d'un ordinateur de type PC. Ceci afin d'économiser de l'énergie, l'ordinateur et des périphériques pouvant être mis en veille et réveillés. La vitesse de fonctionnement du processeur peut-être régulée également. Et enfin, elle apporte aussi la gestion logicielle des évènements liés à la batterie pour un ordinateur portable. L'APM fût la première norme en ce sens. Des routines sont implantées dans le BIOS, qui encore une fois, font la passerelle entre le matériel et le système d'exploitation :



L'APM est aujourd'hui obsolète et a été remplacée par l'ACPI qui est beaucoup plus complète. L'APM n'est plus utilisée (supportée) depuis Windows Vista.

e820



e820 est une abréviation pour désigner une méthode, par laquelle le BIOS d'un ordinateur de type x86, rapporte la cartographie de la mémoire centrale (RAM) utilisable par un système d'exploitation. Le logiciel (S.E.) y accède avec l'interruption 15h en ayant placé la valeur e820 (hexadécimal) dans le registre AX du processeur. En retour le S.E. récupère la liste des plages mémoires, celles utilisables (libres) et celles réservées par le BIOS pour le matériel. Vous pouvez retrouver cela furtivement sous Linux lorsqu'il démarre, ou plus au calme via la commande dmesg. Il existe aussi les méthodes e801 et e88 pour les vieux ordinateurs.

Code TEXT :
 
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-358.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org)
....
KERNEL supported cpus:
  Intel GenuineIntel
  AMD AuthenticAMD
  Centaur CentaurHauls
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
 BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 0000000020000000 (usable)
 BIOS-e820: 0000000020000000 - 0000000020200000 (reserved)
 BIOS-e820: 0000000020200000 - 0000000040004000 (usable)
 BIOS-e820: 0000000040004000 - 0000000040005000 (reserved)
 BIOS-e820: 0000000040005000 - 00000000d55d8000 (usable)
 BIOS-e820: 00000000d55d8000 - 00000000d5678000 (reserved)
 BIOS-e820: 00000000d5678000 - 00000000d5897000 (usable)
 BIOS-e820: 00000000d5897000 - 00000000d5f3b000 (ACPI NVS)
 BIOS-e820: 00000000d5f3b000 - 00000000d659b000 (reserved)
 BIOS-e820: 00000000d659b000 - 00000000d65de000 (ACPI NVS)
 BIOS-e820: 00000000d65de000 - 00000000d6d9b000 (usable)
 BIOS-e820: 00000000d6d9b000 - 00000000d6ff1000 (reserved)
 BIOS-e820: 00000000d6ff1000 - 00000000d7000000 (usable)
 BIOS-e820: 00000000d7800000 - 00000000dfa00000 (reserved)
 BIOS-e820: 00000000f8000000 - 00000000fc000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
 BIOS-e820: 00000000fed00000 - 00000000fed04000 (reserved)
 BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 000000011f600000 (usable)
DMI 2.7 present.
SMBIOS version 2.7 @ 0xF04C0
DMI: Acer Veriton X2611G/Veriton X2611G, BIOS P21-A0                  12/03/2012
e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved)
e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
...


Cette notion de e820 vous la trouverez si vous lancez Memtest86(+) sur un PC x86 dans la zone "MemMap" :



ESCD



Encore un acronyme anglais qui signifie Extended System Configuration Data. On pourrait le traduire par Données de Configuration Système Supplémentaires. Vous le trouverez au démarrage d'un vieux PC avec le message "Updating ESCD... Success". L'ESCD était utilisé à l'ère des vieilles cartes ISA qui supportaient le Plug-and-Play. C'est la partie logicielle de la mémoire NVRAM dans laquelle le BIOS y stocke/enregistre la configuration des cartes ISA PnP installées telles que les IRQ assignées, les canaux DMA ainsi que les adresses d'Entrée-Sortie mémoire. Le BIOS s'en sert pour conserver les mêmes ressources pour un même périphérique sans devoir à se poser la question à chaque démarrage. Elle reflète donc l'état de la dernière configuration depuis le dernier boot. Une partie de la configuration PCI peut aussi y être stockée. Le BIOS mets à jour ces tables ESCD au boot dès qu'il détecte un changement de matériel (carte rajoutée ou retirée) et qu'il aura décidé d'attribuer telle ressource à telle carte.

On peut vider cette table de configuration pour faire en sorte que le BIOS ré-attribue-redistribue les ressources aux périphériques, avec l'option "Reset Configuration Data" dans le SETUP. Placez-le à "Enabled", la table sera ainsi vidée et re-remplie par le BIOS au prochain reboot. Il est normal que le paramètre se remette à "Disabled" par la suite. ;)



Le système d'exploitation (notamment Windows 95-98-ME) peut aussi lire et écrire les données ESCD.

Plus d'infos : 1, 2, 3



Plug and Play/PnP (ou Plug and PRAY à une époque)



A ne par confondre avec UPnp !

Littéralement "Branchez & Jouez" ou "Branchez & Utilisez", est un terme à la fois technique et commercial pour désigner les équipements informatiques ayant la faculté d'être facilement "reconnus" et exploitables rapidement par l'ordinateur (le BIOS et son système d'exploitation).
Tu branches, tout se fait tout seul, et hop tu t'en sers. C'était l'idée. Si aujourd'hui installer une carte son ou une carte graphique s'avère facile, Windows/Linux trouve le nouveau périphérique tout seul, il n'y a plus qu'a installer le pilote ou charger le module, et hop roule ma poule, sachez qu'à une époque, c'était loin d'être le cas ! :D

En fait, le PnP a été quelque chose de révolutionnaire en informatique. Pour bien comprendre son utilité il faut remonter très loin. Comme on l'a vu plus haut avec l'ESCD, les cartes ISA d'un ordinateur AT utilisent des adresse d'I/O et des IRQ/DMA pour communiquer avec le reste de l'architecture du PC, à l'époque tout était configuré par des cavaliers ou interrupteurs sur les cartes elles-mêmes comme ici sur une carte réseau ISA et une carte IDE/Floppy VLB :




Le but étant que les cartes n'utilisent pas les mêmes ressources et donc il fallait jongler avec les petits cavaliers pour que chaque carte ne rentre pas en conflit avec une autre. Évidemment ces histoires de ressources étaient bien trop compliquées pour le quidam, il fallait que les ordinateurs soient simples dans une optique de démocratisation. Donc le PnP est apparu pour que le BIOS détecte tout seul les cartes et dirige les opérations : chaque carte se voit dorénavant dicter les ressources qu'elle doit prendre. Il n'y a plus de cavaliers qui tienne ! Voici la photo d'une boite de carte son PCI où le PnP apparait comme mis en avant :



Pour que cela fonctionne il faut bien sûr que le BIOS du PC soit PnP et que la carte ISA/PCI supporte elle aussi le PnP. Il reste toutefois possible pour les BIOS PnP, de réserver des ressources pour les cartes qui ne comprendraient pas le PnP, qu'on appelle alors les cartes "Legacy". Dans ce cas au lieu d'attribuer l'IRQ au système PnP automatique on là force à être réservée, car l'IRQ est réservée (utilisée) par une carte configurée en dur avec ses cavaliers (Idem pour le canal DMA).



SMBIOS



Comme l'ACPI vu plus haut, le SMBIOS est une "fonctionnalité" offerte par le BIOS. Sauf que là où l'ACPI sert pour l'économie d'énergie, le SMBIOS sert pour que le système d'exploitation (Linux/Windows) ait connaissance d'informations concernant le BIOS et le matériel du PC sur lequel il tourne. Lors du démarrage (au POST) le BIOS rend accessible en mémoire pour l'O.S. une table avec toutes les informations. Cela va du fabricant de la carte mère aux emplacements mémoire et PCI disponibles.



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.



Concernant Windows, Microsoft préfère que l'on utilise son API WMI pour avoir accès à ces informations (le problème c'est qu'elles sont filtrées). Les applications ont un accès plus bas niveau avec d'autres API mais c'est plus trivial. Bref, CPU-Z, AIDA64 et autres Speecy savent très bien vous afficher ces informations. Sinon il y a le vulgaire utilitaire d'informations systèmes de Microsoft :



Plus d'infos : Lien 1, Lien 2.

La licence Windows liée au BIOS



Pirater Windows, c'est une chose à laquelle beaucoup de geeks s'adonnent (ou s'adonnaient). Une grande partie des installations de Windows dans le monde des particuliers est illégale. Depuis la copie de CD rendue possible fin des 90's, les isos et clés de produit de Windows 95/98/ME/2000/XP sont disponibles sur le web. Si on avait un code (CD-key) obtenu on ne sait où, l'installation depuis le CD (gravé) pouvait se faire sans problème, aucun blocage. Microsoft a commencé à rendre la chose plus difficile avec Windows XP et son processus d'activation. Non seulement il faut une clé mais en plus, selon les versions (corporate ou pas, OEM ou non) l'activation n'était pas necessaire. A l'heure du haut-débit et du THD, il fallait trouver une nouvelle parade pour Microsoft pour à la fois contrer les pirates mais aussi permettre aux marques d'installer en masse des licences Windows OEM sur toutes les bécanes de supermarché. Et ce sans pour autant pouvoir les faire fuiter le parc de machines "de monteur" (Hors circuit OEM - Dell, HP, Toshiba, etc...).

Viens ensuite l'histoire du CD d'installation. Il fût une époque (elle est révolue), où les CD de Windows XP vendus avec les machines OEM étaient limités. Les disques étaient personalisés pour chaque fabriquant. Un CD de XP provonant d'un ordinateur Dell, ne pouvait pas s'installer sur un PC autre que Dell. Une vérification était faite à l'installation et elle échouait si ça ne matchait pas. Rajoutez à cela que Microsoft à pris soin de séparer les clés OEM et les clés dites "retail" pour les Windows vendus au détail (en version boite). Une clé OEM ne pouvant être utilisée avec un CD provenant d'une version boite et vice-versa.

Pour Microsoft, une licence OEM est liée à la carte mère, et si cet élément du PC a été choisi ce n'est pas un hasard. Depuis Windows Vista, Microsoft utilise le "System Locked Preinstallation" : la clé OEM se trouve dans le BIOS dans la partie ACPI (qu'on a vu avant). Lorsque le processus d'activation de Windows se mets en route il va consulter la table SLIC (Software Licensing Description Table) et vérifier si ces informations sont les bonnes via KMS. Si la table SLIC contient les infos d'un portable Asus et que le certificat Asus est installé, alors il n'y a pas besoin d'activation en ligne, le SLP considère que la carte mère est légitime et active Windows sans Internet. Cette clé peut être récupérée avec quelques outils.

La plupart des Windows Vista & 7 AiO qui traînent fonctionnent comme cela. Windows est modifié pour charger en mémoire une fausse table SLIC avant le lancement de Windows et ensuite on installe un certificat. L'activation est réussie.

Pour Windows 10, voici un site qui explique très bien. Mais grosso-modo seules les versions Windows VL sont "piratables" via le service KMS. Un utilitaire KMSpico tourne sur la toile et simule un serveur KMS local ce qui accorde 180 jours et ainsi de suite...

Les types de puces



La carte mère embarque forcément quelque part une puce pour y loger le BIOS. Voici quelques formes les plus courantes. Elles sont de différentes formes selon la génération de la carte mère et elles n'ont pas le même protocole de lecture-écriture.

L'époque DIP-32 (Parallel)



Une puce de BIOS avant les cartes-mères des années 2000 ça ressemblait à cela, un boitier DIP32 (Dual In-line Package, 32 broches, 2x16).




L'époque PLCC32 (FWH-LPC)



Par la suite il fallait gagner en compacité, les DIL32 énormes ont été remplacées par des puces au format PLCC32 (Plastic Leaded Chip Carrier, 32 broches, 4x8).




L'époque DIL-8/SO-8/SOIC-8 (SPI)



En remplaçant les anciens protocoles FWH (Firmware Hub) & LCP (Low Pin Count) par le protocle SPI (Serial Peripheral Interface), les puces ont ensuite diminué en nombre de broches, plus besoin de 28 broches. Seulement 8 suffisent. Il existe donc des puces de BIOS au format DIP-8 (Dual In-line Package, 8 broches, 2x4).



Mais aussi des variantes miniatures qui sont généralement plus courantes de nos jours (SO-8/SOIC-8) :



Pour plus d'informations et d'illustrations, voici un très bon lien à consulter : https://www.flashrom.org/Technology

Soudée ou sur socket



Notez également que les puces peuvent être soudées directement sur la carte mère ou bien être installées dans un connecteur (socket) et c'est donc seulement le socket qui est soudé. Dans ce cas la puce devient extractible. Que la puce soit installée ou non dans un socket relève du choix du constructeur de la carte mère et n'a aucune incidence sur son fonctionnement.



Dessouder une puce de BIOS est un exercice complexe qui réclame dextérité et quelques bons outils, notamment une station à air chaud.

Configurez votre BIOS putain !



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. De nos jours nous n'avons plus à y aller autant qu'avant, surtout depuis l’apparition des menu de boot sélectifs que l'on peut appeler via une touche comme ceux-ci :




De plus Windows sachant faire du NTP, il met à jour l'heure tout seul comme un grand, même pas besoin d'aller mettre la bonne heure dans le BIOS. Toutefois, je conseille quand même d'aller y faire un tour histoire de "checker" que tous les paramètres soient OK. Malheureusement il faut "s'y connaitre" un peu pour savoir quel réglage influence quoi, à quelle valeur correspond quoi et si tout est correctement paramétré. Et cela, ben ça s'apprend avec l'expérience, dans les livres et autres vidéos de formation, à moins d'avoir la science infuse. En fait la plupart de ces vidéos justement vous disent que ce n'est pas nécessaire, ce qui n'est pas totalement faux. En réalité, c'est surtout parce-qu'ils ne peuvent pas le faire car :

  • tout le monde n'ayant pas les mêmes cartes mères, la diversité des modèles fait qu'ils devraient s'en tenir à des choses généralistes pas valables chez tout le monde.
  • il faudrait détailler les réglages et donc les expliquer ce qui prendrait trop de temps et rallongerai leur vidéo qu'ils veulent absolument au format court.
  • il faudrait détailler les réglages et donc les expliquer ce qu'ils ne sauraient pas faire :whistle


Or, ne pas savoir manipuler son BIOS c'est aussi ne pas savoir maitriser un outil qui pourrait vous permettre de sortir de certaines emmerdes lorsque le PC déraille.

Flasher (mettre à jour) son BIOS



Pourquoi mettre à jour son BIOS ?



Une mise à jour du BIOS peut-être nécessaire afin de corriger certains bugs (surtout de compatibilité) et aussi pour pouvoir supporter de nouveaux processeurs.

Quels sont les risques ?



Mettre à jour son BIOS est une opération "risquée" dans le sens où si l'opération foire, le logiciel inscrit dans la puce flash se retrouve altéré, dans un état incohérent, et il ne peut démarrer. Ce qui mène à un ordinateur qui démarre électriquement mais qui reste sur un écran noir, inerte, ou qui reboote en boucle (selon les cartes mères). Dans ce cas la post-CARD dont je parle maintes fois dans mes vidéos permet de voir certaines choses.

Comment procéder ?



Il existe des utilitaires permettant de flasher le BIOS directement sur l'ordinateur lui-même. Les plus anciens sont à utiliser sous MS-DOS ou FreeDOS. Il fallait alors sortir la disquette de boot de Windows 98/ME ou utiliser le CD bootable. Depuis près d'une décennie, il est bien sûr possible de le faire sous Windows 32/64 bits via des executables WinPE (.exe) directement, ou même dans le BIOS via une clé USB. Les constructeurs essayent de rendre la chose la plus facile possible avec des programmes de plus en plus automatiques du genre MSI LiveUpdate par exemple.

Les BIOS moddés (modding)



Il existe sur une le net une large communeauté de bidouilleurs et d'experts qui sont capables (avec les outils adéquats) de modifier les BIOS originaux donnés par les constructeurs (Asus, MSI, Gigabyte, etc...), et on trouve de vrais maîtres en la matière. Les modifications apportées permettent de modifier la largeur LBA pour faire reconnaitre des disques plus gros (LOL c'est vieux ça), d'activer certains fonctions d'overclocking qui étaient cachées/bridées, de modifier les tables SLIC pour l'activation de Windows, prendre en charge des nouveaux processeurs (microcode), intégrer des Option ROMs (= Expansion ROMs) supplémentaires, ajouter un logo personnalisé, etc...
Ces BIOS sont à utiliser à vos risques même si rares sont les plaisantins qui fournissent des BIOS pourris (volontairement corrompus) juste pour le plaisir de vous voir ruiner votre carte mère. Après il existe dans le même cadre la modification de BIOS pour carte graphique, de cartes RAID, etc...
Si cela vous interesse consultez le site bios-mods.com.
Pour les plus vaillants trouvez le livre BIOS DISASSEMBLY NINJUTSU UNCOVERED – THE BOOK.

Comment cela fonctionne ?



L'opération de flashage réalisée par l'utilitaire consiste en plusieurs étapes successives :

  • 1 - l'effacement de la puce (la rendre vierge)
  • 2 - la reprogrammation de la puce (inscription nouvelle version)
  • 3 - le contrôle (vérification par relecture : contenu de la puce = contenu du fichier programmé ?)
  • 4 - (facultatif) effacement des données dans la NVRAM
  • 4 - (facultatif) Mise à jour/reprogrammation du BootBlock


Les logiciels peuvent fonctionner de deux façons, soit ils procèdent en faisant la puce complète (Méthode 1) ou par sections/pages (Méthode 2).



Dans tous les cas, un reboot sera nécessaire pour placer en mémoire et exécuter le nouveau BIOS fraîchement programmé.

Les techniques pour récupérer un flash loupé (bad flash)



Flasher son BIOS (pour généralement le mettre à jour) peut se solder par une mésaventure. Si à 50 ans tu n'a connu aucun "bad flash" c'est que tu as loupé ta vie d'informaticien. De nos jours cela arrive moins, car les utilitaires de flash vérifient que le nouveau BIOS téléchargé est bien pour la carte mère en question, et il y a des contrôles de checksums automatiques, ce qui évite certaines étourderies et autres transferts de fichiers corrompus, mais il y a d'autres facteurs qui font que ça peut foirer.

Déjà, on vous l'a déjà dit certainement mais, lorsqu'on met à jour son BIOS il ne faut pas couper l'alimentation de l'ordinateur, au risque de se retrouver avec un BIOS partiellement programmé et effacé. Le BIOS est donc logiquement dans les choux et le PC refuse de démarrer, cela se solde par un écran noir. On évitera donc de programmer son BIOS quand il y a de l'orage. Et pour un PC portable on le mettra sur secteur, flasher un BIOS alors que l'on tourne sur la batterie est une mauvaise idée (d'ailleurs certains utilitaires de flash le repère et vous empêchent). Même chose pour les ROM de smartphone, on met le chargeur.

On peut se retrouver dans la panade lorsque on a choisit le mauvais BIOS pour sa carte mère. Déjà non seulement il faut s'assurer du bon modèle mais aussi de la révision de la carte lors du téléchargement sur le site. Certaines cartes un bon BIOS particulier par révision (REV/VER) de la carte et d'autres non, c'est au cas par cas.



Et enfin quand on a vraiment pas de chance, on peut aussi tomber sur une puce Flash moisie. La programmation se passe mal car les cellules de la puce sont physiquement altérées en interne (cas déjà arrivé personnellement). Il faut donc remplacer la puce par une neuve qui fonctionne bien et recommencer.

La récupération via le BootBlock



Vous ne le saviez peut-être pas, mais en réalité Award, AMI et consorts ont déjà prévu ces avaries et ont constitué leur BIOS "en deux parties" pour parrer à la chose. Une partie qu'on va qualifier de "critique" et l'autre un peu moins (le reste, le MainBlock). Toutes les cartes mère n'ont pas cela. Il s'agit d'un morceau de code (ou une zone) tout rikiki qu'on appele le BootBlock.



Lorsqu'un BIOS démarre, une de ses premières tâches et de se vérifier lui-même, il se lit intégralement et fait une somme de contrôle, si cette somme de contrôle n'est pas la même que celle calculée et placée à un endroit précis lors du dernier flash, cela signifie que le BIOS est corrompu. Si la carte mère peut le faire, la procédure de récupération via ce BootBlock s'active. Selon les BIOS vous aurez droit à un affichage vidéo clair et limpide :



ou alors à un écran noir, la procédure se faisant sans IHM dans le flou total (normalement il faudrait une carte vidéo ISA pour voir quelque chose). Rappel : ici on parle bien du BIOS et non pas du CMOS/NVRAM. Nuance.

La procédure de BootBlock va enchainer (selon les générations et variantes) les étapes suivantes :

  • 1 - Aller chercher un fichier ROM/BIN en urgence sur un périphérique bootable FAT (lecteur de disquettes, clé USB, CDROM). Ce fichier doit être nommé d'une certaine manière comme par exemple AMIBOOT.ROM pour les BIOS AMI. Evidemment un deuxième PC relié à Internet à coté sera nécessaire pour télécharger le BIOS et placer le fichier sur le support... (si vous avez encore un lecteur de disquettes celui-ci doit faire du bruit).
  • 2 – Une fois le fichier trouvé celui-ci est lu et la puce est reprogrammée (il faut attendre quelques secondes).
  • 3 – Un reboot final (normalement le PC reboot tout seul)


Et tout rentre dans l'ordre, desfois ça marche, mais desfois ça ne marche pas.

Lors de la procédure de flash via un logiciel, vous pouvez généralement demander à programmer ou non le BootBlock en plus du MainBlock via des arguments ou commutateurs en ligne de commandes.



Ou des cases à cocher :




Si ces options ne sont pas disponibles dans votre utilitaire de flash, cela est laissé à la discrétion de l'outil. :) Evidemment vous comprendrez de suite que vous prennez plus de risques lorsque vous décidez de reprogrammer le BootBlock en plus du MainBlock classique. D'autant qu'en général cette section ne bénéficie d'aucune amélioration au fil des versions. Cela est inutile.



On peut aussi demander à ne pas vider la NVRAM non plus si besoin. Sur cette image les 3 sections sont mises en évidence. On retrouve à chaque fois le trio : erase, write, verify.

La récupération via une méthode similaire



Le BootBlock peut être en quelque sorte "caché", par exemple avec le "BIOS Flashback" d'Asus où il faut faire une manipulation spéciale pour l'activer.

La récupération via un jumper de "Recovery"



Certaines rares cartes mères, généralement sur les PC OEM d'entreprises ou les serveurs, comportent un jumper (ou un switch) pour manuellement déclencher la procédure de "Recovery" (= procédure de BootBlock).



Je le précise ce cavalier n'a rien à voir avec le classique vidage du CMOS/NVRAM (le fameux CLEAR CMOS) et il n'a rien a voir non plus avec la récupération ou l'effacement du mot de passe du BIOS (cavalier nommé PASSWORD RECOVERY ou CLEAR PASSWD).



Consultez le manuel de la carte mère.

La méthode du Hot-Swap



La technique du Hot-Swap (dite de l'échange à chaud) est malheureusement de moins en moins possible de nos jours, mais il est bien de la citer. Pour pouvoir le faire il avoir sous la main une carte mère fonctionnelle en plus de celle qu'on veut dépanner. Le Hot-Swap se déroule en plusieurs étapes. C'est quoi le principe ? L'idée c'est de se servir d'une carte mère fonctionnelle, qui démarre elle, de la faire démarrer et une fois arrivé sous Windows ou DOS (amis Linuxiens bonjour !), on retire l'EEPROM fonctionnelle installée et ce à chaud, PC allumé. Pour la remplacer par l'EEPROM malade et ensuite de la flasher via l'outil awdflash, amiflash, uniflash ou autre... Une fois le flash terminé, on éteint tout et on remets les puces sur leurs cartes d'origine.

Evidemment ce n'est pas sans risque si vous faites n'importe quoi avec le PC allumé..., du genre laisser tomber les puces sur le PCB durant vos manipulations, gare aux C/C ! Des outils comme le kit "RD1 BIOS SAVIOR" peut vous faciliter la vie. En fait c'est surtout facile lorsqu'on a une deuxième carte mère identique à celle que l'on veut sauver. Lorsque les cartes sont différentes c'est nettement plus hardu.

Il y a beaucoup de limitations :

  • Déjà évidemment si la puce est soudée sur l'une ou l'autre des cartes mères c'est mort. A moins de déssouder et d'y placer des sockets à la place. Les cartes mères modernes équipées en SPI ont toutes leurs EEPROM soudées, sauf quelques rares encore en DIP8. D'où la présence de broches JSPI pas loin généralement.
  • Vérifiez les tensions des puces, certaines EEPROM sont en 12V, d'autres en 5V ou 3V pour les plus récentes, selon les cartes mères c'est différent selon ce qui a été installé, bien contrôler avant d'invertir les puces. Sur les plus vieilles cartes mère vous trouverez éventuellement un cavalier pour sélectionner la bonne tension. De plus toutes les puces ne sont pas compatibles entre-elles
  • Une fois la puce malade en place, prête à être flashée, il n'est pas sûr que les programmes de flash la reconnaissent, vous allez peut-être buter sur des vérifications et autres messages d'erreur car la carte mère est différente, et vous allez devoir passer outre en activant des modes/options de "forcing" pour contourner.


La reprogrammation "externe"





Quand on n'a pas le choix, et bien il faut retirer la puce de la carte mère et aller la placer dans un programmeur externe (USB ou parallèle) et via un logiciel et ensuite la replacer sur la carte mère. Vous trouverez tout ce qu'il faut comme matériel sur eBay et consorts provenant de Chine pour pas cher. Il en existe des tonnes et je ne saurais vraiment vous conseiller un modèle en particulier. Cherchez avec les mots-clés "universal bios programmer kit". Malheureusement cela devient de plus en plus compliqué à réaliser car les nouveaux BIOS dits UEFI (voir plus bas) sont tellement morcelés que de flasher le contenu d'une traite par une image ROM/BIN générique qui serait valide pour tout le monde n'est pas possible. Et ce en raison des données variables que certains UEFI contiennent (notamment pour les PC OEM). Il faut souvent la modifier via des logiciels spéciaux afin de la personaliser (voire même bidouiller), refaire les sommes de contrôles et ensuite dans un second temps procéder au flashage. D'autant plus que les fichiers ROM/BIN ne sont plus systématiquement fournis par certains fabriquants de cartes mère, la mise à jour passe par un simple fichier exécutable Windows d'on on ne peut pas extraire l'image binaire...

Le dual-BIOS





Bien conscient des risques liés au BIOS et surtout pour éviter des retours SAV lié à cela, Gigabyte est le premier constructeur qui a eu l'idée de mettre deux puces de BIOS séparées sur certaines de ces cartes mères. Une puce dite "principale" (toujours utilisée) et l'autre en mode "backup" (en secours). L'idée est simple : si l'utilisateur fout en l'air le BIOS et que l'ordinateur est dans l'incapacité de démarrer alors la deuxième puce de BIOS non altérée prends le relais automatiquement au prochain démarrage. Pour retrouver un système fonctionnel et aussi pour reflasher et ainsi stopper vos bêtises. Sachez que ces systèmes sont brevetés et se basent finalement sur un vulgaire mécanisme de commutation soit hardware soit logique (translation d'adresse).

Il existe deux implémentations possibles : le premier avec une seule puce flash, et le deuxième avec deux. Dans le premier cas : une unique puce de 4MB (par exemple) est découpée en deux zones de 2MB chacunes. Le programme BIOS d'une taille de 2MB est donc stocké en double dans la puce, une première fois dans la section 0-2MB et une seconde fois dans la section 2-4MB. Dans le deuxième cas : les deux puces de BIOS de 2MB sont connectées ensemble sur le même bus mais seule une est sélectionnée à la fois sur le bus.

Grosso-modo après le signal RESET général au démarrage du PC, le BIOS principal, s'il est en état de le faire, doit déclencher l'envoi d'un signal après le POST vers un port GPIO du southbrige (ou du PCH), s'il ne le fait pas après une temporisation de quelques secondes, parce qu"il est corrompu suite à un bad flash par exemple, un circuit annexe spécial de commutation se charge alors de basculer vers la seconde puce et de reprovoquer un RESET général. La deuxième puce avec un BIOS sain est active et démarre le système normalement jusqu'au POST et envoie son signal BIOS_READY à temps. L'utilisateur a la main.

Il existe différents mécanismes avec des temporatisations ou des FPGA, consultez les brevets pour plus de détails.

Acheter une puce de BIOS sur eBay



Attention à bien faire la distinction entre les puces vendues chez les vendeurs de composants électroniques qui sont vierges et celles vendues prête à l'emploi avec le service "programmation" qui va avec, c'est à dire flashée avec le BIOS pour votre carte mère.

Si vous n'avez pas de programmateur Willem et si votre EEPROM est sur un socket, vous pouvez vous procurer la puce pré-programmée pour votre carte mère sur eBay. Par contre niveau prix à voir si le jeu en vaut la chandelle...

Les failles du BIOS



Déjà le fait que l'on puisse flasher le BIOS par logiciel est déjà une faille en soit. Cela apporte un réel confort pusiqu'il n'y a plus besoin d'ouvrir l'ordinateur pour mettre à jour le BIOS sauf que le contenu de l'EEPROM est donc modifiable depuis Windows/Linux ce qui a interessé les virus à une époque et notamment le plus connu d'entre eux : CIH alias Tchernobyl. Ce dernier pouvait sur certaines cartes mère, reflasher le BIOS avec des données aléatoires, en sacageant la MBR du disque dur au passage. Un cavalier "WRITE PROTECT" boquant l'accès en écriture à l'EEPROM pouvait éventuellement limiter les dégats lorsque la carte mère en était équipé.

Comme Windows et Linux sont de plus en plus fiables au fil des mises à jour, on trouve des moyens de plus en plus ingénieux pour corrompre un système. Comme on ne peut plus installer un driver ou un service Windows discret qui pourrait sniffer de manière totalement transparente sans que l'utilisateur ne se prenne une popup suspecte UAC (autorisez-vous une modification de votre système ?) dans la trouche, on n'essaye plus de corrompre l'OS mais carrément le firmware qui le fait démarrer. Certains (NSA entre autres) se creusent la tête (depuis belle lurette) afin de trouver des solutions pour compromettre le PC depuis ses couches logiques les plus basses, à tel point que l'OS ne se rend même plus compte que le BIOS lui-même possède un malware.

Pour éviter cela diverses solutions ont été trouvées pour vérifier l'intégrité de toute la chaîne de démarrage sur une plateforme (machine) et ainsi s'assurer que rien n'a été modifié (comme des rootkits), comme le Trusted Platform Module (lien 2) ou le Secure Boot (lien 2) depuis l'UEFI, à coup de certificat et de chiffrement. Pour autant des failles existent même si elles sont pas faciles à mettre en place. Le problème vient sourtout de l'UEFI qui offre plus de "portes ouvertes" diront nous.

Bref des malware dans un BIOS ce n'est pas nouveau.

UEFI : le BIOS modernisé !





L'EFI a été développé par Intel pour son architecture (et serveurs) IA-64, à savoir le processeur Itanium. Face aux différentes limitations que connait le BIOS d'antant tel qu'il est toujours utilisé de nos jours (2008/2009) et qui posaient de nombreux problèmes, il fallait le remplacer. D'autant plus qu'il n'était pas facile à maintenir et peu flexible pour nos usages contemporains. Un consorcium s'est créé et l'UEFI est né sur la base des travaux d'Intel avec encore quelques adaptations et améliorations pour devenir une norme adoptée par tous les fabricants.

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. Le graphique de Wikipedia est explicite :



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.

Pour connaitre plus en profondeur la différence entre un BIOS legacy et l'UEFI vous pouvez regarder cette vidéo sur Youtube.

Conclusion : Le BIOS et le progrès



A force de mettre de plus en plus de chose directement dans le BIOS/UEFI qui est physiquement présent dans une puce de la carte mère, on rend le matériel de plus en plus dépendant du software. Sur certains aspects il y a du bon car cela rend les choses plus pratiques, moins figées, plus versatiles au niveau bidouillages et le confort que cela apporte est non négligeable. Mais il y a également les risques que cela provoque (incompatibilités, obsolescence programmée, et quelques failles de sécurité par-ci, par-là). L'avenir nous le dira...

Les bons liens