mise à jour - 19/06/2011
====== BIOS ======
* Objet : Bios, (Basic Input/Output System / Système de gestion élémentaire des entrées/sorties).
* Niveau requis :{{tag>débutant avisé}}.
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Commentaires : //Système de gestion élémentaire des entrées/sorties//.
* Suivi : {{tag>à-placer}}
* Création par [[user>smolski]] le 15/08/2010.
* Testé par .... le ....
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=2879 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
Le **BIOS** (Basic Input/Output System / Système de gestion élémentaire des entrées/sorties) permet le contrôle des éléments matériels.
Le BIOS est un petit logiciel dont :
- une partie est dans une **ROM** (mémoire morte, c'est-à-dire une mémoire qui ne peut pas être modifiée),
- et une autre partie est dans un composant mémoire de type **EEPROM** (**E**lectrically **E**rasable **P**rogrammable **R**ead-**O**nly **M**emory)qui est modifiable par impulsions électriques, d'où le terme de //flasher// pour désigner l'action de modifier le contenu de l'EEPROM.
===== Le POST =====
Lorsque le système est mis sous tension ou réamorcé (//Reset//), le **BIOS** fait __l'inventaire du matériel présent dans l'ordinateur__ et effectue un test appelé **POST** ("Power-On Self Test) afin de vérifier son bon fonctionnement, et le configurer.
- Effectuer un test du processeur (CPU)
- Vérifier le BIOS
- Vérifier la configuration du CMOS
- Initialiser le timer (l'horloge interne)
- Initialiser le contrôleur DMA
- Vérifier la mémoire vive et la mémoire cache
- Installer toutes les fonctions du BIOS
- Vérifier toutes les configurations (clavier, disquettes, disques durs ...)
Si le POST rencontre une erreur, il va essayer de continuer le démarrage de l'ordinateur :
* vous informant, avec un humour sans pareil, que vous avez oublié de connecter un clavier en affichant le message suivant : ''No keyboard detected. Press F1 to continue.''
Si l'erreur est grave, le BIOS va arrêter le système et :
* afficher un message à l'écran si possible ;
* émettre un signal sonore, sous forme d'une séquence de bips (beeps en anglais) permettant de diagnostiquer l'origine de la panne ;
* envoyer un code (appelé code POST) sur le port série de l'ordinateur, pouvant être récupéré à l'aide d'un matériel spécifique de diagnostic.
===== Processus détaillé =====
==== BIOS ====
Le BIOS est le premier élément à être lancé, si on excepte l'appui sur le bouton ON et quelques autres détails. Celui-ci initialise le processeur ainsi qu'une partie du matériel, comme la carte vidéo ou le clavier.
Le BIOS est constitué d'une mémoire (rom ou flash) placée sur la carte mère.
Notez que quasiment tous les BIOS étant maintenant des flash, il est possible de les mettre à jour, voire de les remplacer. Et justement un projet existe pour remplacer les BIOS propriétaires par des BIOS libres (comme Max) : coreboot de son ancien nom linuxbios.
Le BIOS est configuré pour choisir un périphérique sur lequel booter. En général, c'est le premier disque dur, mais cela peut aussi être une clé usb ou un lecteur disquette. Il est même possible de choisir au moment du boot.
Sur le périphérique en question, et à l'exception du lecteur CD qui a son protocole (el torito), le BIOS charge le premier secteur (512 octets), le met en RAM, et le lance.
Notez que le BIOS est spécifique aux PC, d'autres architectures ont des firmware EFI (Apple) ou des OpenBoot (Sun).
==== Bootloader ====
Dans ce premier secteur se trouve le bootloader (grub, lilo, silo, syslinux, mbr dos...).
Le bootloader est découpé en plusieurs morceaux à cause de la limite des 512 octets. Sa première activité est de réussir à se charger complètement.
Celui de Windows est assez simpliste, mais sous Linux on en trouve avec plein de fonctionnalités sympas.
Une fois qu'il est prêt, il lit sa configuration, puis choisit un périphérique et une partition où lire le noyau et éventuellement un initrd. Et enfin il passe la main au noyau en lui donnant quelques paramètres.
Noyau
Le noyau est déjà chargé, il n'a "presque" plus rien à faire. Si ce n'est tout initialiser : les interruptions, le mode du processeur, les périphériques...
Une fois qu'il a fini (ou même un peu avant), il monte la racine (/) à partir de ce qui lui a été spécifié en ligne de commande.
Et enfin, il lance init en lui passant quelques paramètres provenant de sa propre ligne de commande.
Si un initrd est chargé, il l'utilise comme racine et prend l'init s'y trouvant. Dans ce cas, il ne cherche pas à monter la racine. Sinon GoTo init.
==== Initrd ====
**Initrd** (INITial RamDisk) est un intermédiaire qui a été rajouté au processus de boot pour permettre le chargement dynamique de driver ainsi que la configuration de certains éléments comme le réseau ou le NFS.
Initrd est un ancien nom. En pratique, c'est maintenant un **initramfs** qui est chargé (c'est la même chose mais en mieux, le premier est un block device et le second une archive) avant le montage de la racine. Celui-ci est monté à la racine. Son boulot : rendre la vraie racine accessible. NFS, driver manquant, LVM, toutes les raisons sont bonnes pour utiliser un initrd.
Et enfin, celui-ci charge le vrai init pour l'étape suivante.
==== Init ====
Init est cette fois un vrai processus unix lancé par le noyau, et comme c'est le premier il a pour pid 1. Il prend sa configuration dans /etc/inittab. Dans sa configuration il y a quelques processus à lancer et à surveiller, il s'agit essentiellement des terminaux locaux.
Mais surtout il lance /etc/init.d/rc en lui passant en paramètre le runlevel dans lequel on est sensé fonctionner.
==== rc ====
rc est un simple script qui a pour pour seul objectif de lancer les différents démons grâce aux liens se trouvant dans /etc/rcX.d (où X est un runlevel).
ex. : lien du service Gnome : S19gdm3 -> ../init.d/gdm3
Et voilà ! À partir de là on peut considérer que le système est lancé.
Notez que sous certains systèmes comme Ubuntu, on trouve des outils comme upstart qui remplacent à la fois init et rc pour faire à peu près la même chose.
===== Lien =====
* http://linux-attitude.fr/post/processus-de-boot
//Merci à ce site très bien détaillé et avec des explications claires pour les débutants.// ;-)
===== BIP (Le code) =====
Si tout est correct, le BIOS émettra généralement un bip bref, signalant qu'il n'y a pas d'erreur.
==== BIOS Award récents ====
^Nb_de_bips ^ Signification ^ Résolution du problème |
|1 bip court |Le PC démarre normalement | |
|2 bips courts |Problème CMOS |Réinitialiser le CMOS en enlevant la pile du BIOS et en la remettant ou en déplaçant le cavalier JP4 |
|1 bip long / 1 bip court |Problème de carte mère ou de mémoire vive |Enficher correctement les modules de mémoire vive, tester sa RAM ou les changer|
|1 bip long / 2 bips courts |Problème lié à la carte graphique |Vérifier que la carte graphique est bien enfichée. Éventuellement, tester avec une autre carte vidéo |
|1 bip long / 3 bips courts |Problème lié au clavier |Vérifier que le clavier est bien enfiché et qu'aucune touche n'est enfoncée. Éventuellement, tester avec un autre clavier |
|1 bip long / 9 bips courts |Problème du BIOS |Le BIOS est invalide, flasher le BIOS avec une version plus récente |
|3 bips |Problème dans les 64 premiers Ko de la RAM |La mémoire vive contient des erreurs. Essayer de la réinsérer correctement ou en changer |
|4 bips |Problème de rafraîchissement |La mémoire vive n'est pas rafraîchie correctement. Remettre des valeurs de rafraîchissement correctes dans le BIOS ou faire un //reset// du BIOS. |
|5 bips |Problème de processeur |Vérifier que le processeur est correctement branché, que son ventilateur fonctionne. Éventuellement, en changer. |
|6 bips |Problème lié au clavier |Vérifier que le clavier est bien enfiché et qu'aucune touche n'est enfoncée. Éventuellement, tester avec un autre clavier |
|8 bips |Problème lié à la carte graphique |Vérifier que la carte graphique est bien enfichée. Éventuellement, tester avec une autre carte vidéo |
|Bips longs incessants |Problème de mémoire vive |Enficher correctement les modules de mémoire vive, tester sa RAM ou les changer |
|Bips courts incessants |Problème d'alimentation |Vérifier que tous les câbles d'alimentation sont bien reliés à la carte mère, tester avec une autre alimentation ou bien en changer |
Pour le //BIOS Award//, seules les erreurs relatives à la vidéo font l'objet de signaux sonores, les autres erreurs sont envoyées sous forme de codes POST et sont affichées à l'écran.
Ainsi :
Un long bip, suivi de deux bips courts indiquent une erreur due aux périphériques vidéo (carte graphique). \\
Dans ce cas, il est nécessaire d'essayer d'enficher correctement la carte vidéo, voire d'en changer.
Tout autre bip indique une erreur due à la mémoire.
==== BIOS AMI (AMIBIOS) ====
^Nb_de_bips ^ Signification ^ Résolution du problème |
|1 |Refresh failure(erreur lors du rafraîchissement de la mémoire) |La mémoire vive n'est pas rafraîchie correctement. Remettre des valeurs de rafraîchissement correctes dans le BIOS ou faire un reset du BIOS. Enficher correctement les modules de mémoire vive ou les changer. |
|2 |Parity Error(erreur de parité) |Enficher correctement les modules de mémoire vive ou les changer. Tester sa mémoire vive. |
|3 |Base 64K RAM failure(erreur dans les 64 premiers Ko de la mémoire vive) |Enficher correctement les modules de mémoire vive ou les changer. Eventuellement, flasher le BIOS. |
|4 |System timer not operational |La carte mère doit être envoyée en réparation |
|5 |Processor Error(erreur du processeur) |Vérifier que le processeur est correctement branché, que son ventilateur fonctionne. Eventuellement, en changer. |
|6 |Gate A20 failure(échec clavier) |Vérifier que le clavier est bien enfiché et qu'aucune touche n'est enfoncée. Eventuellement, tester avec un autre clavier. |
|7 |Processor exception interrupt error(erreur d'interruption du processeur) |La carte mère doit être envoyée en réparation |
|8 |Display memory read/write failure(erreur de mémoire vidéo) |Vérifier que la carte graphique est bien enfichée. Eventuellement, tester avec une autre carte vidéo. |
|9 |ROM checksum error(erreur de la somme de contrôle de la mémoire morte) |La puce du BIOS doit être changée ou flashée. |
|10 |CMOS shutdown register read/write error(erreur de lecture/écriture lors de l'enregistrement dans le CMOS) |La carte mère doit être envoyée en réparation |
|11 |Cache memory problem(problème de mémoire cache) |Vérifier que le processeur est correctement branché, que son ventilateur fonctionne. Eventuellement, en changer. Enficher correctement les modules de mémoire vive ou les changer |
==== BIOS Phoenix ====
^Nb_de_bips ^ Signification ^ Résolution du problème |
|1-3-1-1 |DRAM Refresh error(erreur lors du rafraîchissement de la mémoire) |Enficher correctement les modules de mémoire vive ou les changer |
|1-2-2-3 |ROM checksum error(erreur de la somme de contrôle de la mémoire morte) |Enficher correctement les modules de mémoire vive ou les changer |
|1-3-1-3 |Keyboard Controller Error(erreur du contrôleur de clavier) |Enficher correctement le clavier ou le changer |
|1-3-4-1 |RAM error(erreur dans la mémoire) |Enficher correctement les modules de mémoire vive ou les changer |
|1-3-4-3 |RAM error(erreur dans la mémoire) |Enficher correctement les modules de mémoire vive ou les changer |
|1-4-1-1 |RAM error(erreur dans la mémoire) |Enficher correctement les modules de mémoire vive ou les changer |
|2-2-3-1 |Unexpected interrupt(interruption inattendue) | |
===== Le setup du BIOS =====
La plupart des **BIOS** ont un //setup// (programme de configuration) qui permet de modifier la configuration basique du système. \\
Ce type d'information est stocké dans une mémoire auto-alimentée (à l'aide d'une pile) afin que l'information soit conservée même lorsque le système est hors tension (la mémoire vive est réinitialisée à chaque redémarrage).
Il existe de nombreux BIOS dans chaque machine :
* Le BIOS de la carte mère.
* Le BIOS qui contrôle le clavier.
* Le BIOS de la carte vidéo.
Et éventuellement :
* Le BIOS de contrôleurs SCSI qui permettent de booter sur le périphérique SCSI, qui communique alors avec le DOS sans pilote supplémentaire.
* (Le BIOS de cartes réseau qui permettent de booter sur le réseau.)
Lorsque le système est mis sous tension, le **BIOS** affiche un message de //copyright// à l'écran, puis il effectue les tests de diagnostic et d'initialisation.
Lorsque tous les tests ont été effectués, le **BIOS** affiche un message invitant l'utilisateur à appuyer sur une ou plusieurs touches afin d'entrer dans le setup du BIOS.
Selon la marque du BIOS il peut s'agir :
* de la touche F2
* de la touche F10
* de la touche Suppr
ou bien d'une des séquences de touche suivantes :
* Ctrl + Alt + S
* Ctrl + Alt + Echap
* Ctrl + Alt + Inser
===== Réinitialiser le BIOS =====
==== Avec un démarrage du BIOS ====
Dans la mesure où le **setup du BIOS** permet de modifier des paramètres matériels, il peut arriver que le système devienne instable, voire ne redémarre plus. \\
Lorsque cela arrive, il devient nécessaire d'annuler les modifications apportées au **BIOS** et de remettre __les paramètres par défaut__.
Si l'ordinateur démarre et que l'accès au setup du **BIOS** est possible, celui-ci offre généralement la possibilité de rétablir les paramètres par défaut.
Sur les BIOS de type PhoenixBIOS, l'appui sur la touche F9 permet de rétablir les paramètres par défaut du constructeur. \\
Sur les BIOS de type AwardBIOS :
* l'appui sur la touche F5 rétablit les paramètres précédents,
* l'appui sur F6 rétablit les valeurs par défaut du BIOS Award,
* l'appui sur F7 permet de rétablir les paramètres par défaut fournis par le constructeur de la carte mère.
==== Sans démarrage du BIOS ====
Il est fortement conseillé de procéder à ces manipulations en ayant préalablement mis l'ordinateur hors tension.
Si l'accès au **BIOS** est impossible par la procédure standard, la plupart des cartes mères sont dotées d'un cavalier (//jumper//) leur permettant de rétablir les valeurs par défaut. \\
Il suffit de changer la position du cavalier et de le laisser maintenu dans cette nouvelle position pendant une dizaine de secondes.
Pour toutes ces manipulations, référez-vous au manuel fourni avec votre carte mère !
===== Mais quelle est ma version de BIOS ?=====
**dmidecode** vous permettra de le savoir très simplement.
==== Un peu, beaucoup...====
dmidecode -s bios-vendor
American Megatrends Inc.
dmidecode -s bios-version
G53SW.203
dmidecode -s bios-release-date
02/15/2011
==== Et plus si affinité ====
dmidecode -t bios
# dmidecode 2.11
SMBIOS 2.6 present.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: G53SW.203
Release Date: 02/15/2011
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 2560 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
Smart battery is supported
BIOS boot specification is supported
Targeted content distribution is supported
BIOS Revision: 4.6
Handle 0x004F, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Abbreviated
Installable Languages: 1
eng
Currently Installed Language: eng
===== Liens utiles sur le forum =====
* https://debian-facile.org/viewtopic.php?pid=279638#p279638 :)
===== Liens et Sources =====
* http://www.erenumerique.fr/le_bios_explique-art-1042-1.html
* http://www.commentcamarche.net/contents/pc/bios.php3 - Un site extrêmement sympa et fourmillant d'indications diverses.
* //À mettre dans ses favoris absolument !//