Lorsque l'ordinateur est démarré, le BIOS est lancé avant que le système d'exploitation ne soit chargé. Les BIOS modernes sont PnP et peuvent configurer la plupart des périphériques PnP. Quelques anciens BIOS PCI vont seulement configurer le bus PCI. Voici quelques choix qui pourraient exister dans le menu CMOS de votre BIOS :
Quelle que soit votre réponse au BIOS, le BIOS PnP utilisera PnP pour paramétrer le disque dur, le lecteur de disquette, la carte vidéo et le clavier, afin de permettre au système de démarrer. Si vous dites avoir un système d'exploitation PnP, il laissera la fin de la configuration au système d'exploitation (ou aux pilotes de périphériques). Si vous dites ne pas avoir de système d'exploitation PnP, alors le BIOS devra tout configurer.
Comment répondre à cette question de votre BIOS ? Si vous avez au moins un noyau 2.4, vous pourriez répondre ce que vous voulez et Linux fonctionnera habituellement correctement. Même si vous avez Windows 2000 ou XP sur le même PC, cela devrait fonctionner de toute façon tout simplement parce que Windows et Linux sont tous les deux à priori des systèmes d'exploitation PnP et que si le système d'exploitation est PnP, il devrait être capable de gérer le cas où le BIOS a tout configuré lui-même (si vous avez répondu que le système d'exploitation n'est pas PnP). Mais, je continue à suggèrer de répondre qu'il n'est pas PnP sauf si une raison valable vous oblige à faire autrement.
La réponse n'est pas souvent claire dans ce cas. Si isapnp était utilisé par Linux, alors Linux fera la configuration et il était indiqué qu'il est mieux de dire qu'il s'agit d'un système d'exploitation PnP. La raison pour laquelle isapnp aurait des problèmes en présence de périphériques déjà configurés par le BIOS n'est pas claire mais de tels problèmes arrivent quelquefois et sont corrigés en stoppant la configuration du BIOS (en répondant oui, c'est un système d'exploitation PnP). Il existe quelques cas où dire non résolvait un problème. Donc, si isapnp n'est pas utilisé, non est généralement mieux. Les pilotes Linux de périphériques PCI devraient configurer correctement ces périphériques. Mais pour le cas où les périphériques PCI pilotés par des pilotes non PCI, alors vous pourriez dire que le système d'exploitation n'est pas PnP pour obtenir du BIOS qu'il les configure directement.
Si vous utilisez aussi des systèmes d'exploitation Windows sur le même PC, vous pourriez dire que vous n'avez pas un système d'exploitation PnP. C'est ce que MS vous suggère de faire. Peut-être que MS souhaite que le BIOS fasse un meilleur travail pour la configuration que Windows ne le fera. Ceci est sensé parce que le BIOS devrait être conçu pour les particularités spécifiques de la carte mère, et tout spécialement de nos jours où beaucoup de périphériques sont intégrés à celle-ci. Dire non devrait aussi être bon pour les noyaux Linux 2.4 et ultérieurs. Mais pour les noyaux précédents, ce n'est pas si clair (voir la section ci-dessous). Donc, si vous avez des problèmes avec Linux, vous pourriez essayer de dire que vous avez un système d'exploitation Linux mais ceci va contre ce que raconte MS (mais fonctionnera probablement bien de toute façon).
Lorsque le BIOS configure un périphérique différemment de ce qui est stocké dans la base de registres de Windows, celui-ci vous dira qu'il a découvert un nouveau matériel. Ce qu'il est réellement en train de faire est de trouver l'ancien matériel qui a été configuré différemment. De toute façon, il enregistre la configuration que le BIOS a utilisée dans ses registres et le périphérique devrait bien fonctionner à partir de ce moment.
Pour Windows9x, MS suggère de dire au BIOS que vous avez un système d'exploitation PnP (l'opposé complet du cas pour Windows 2000 et XP). Ceci devrait être bon pour Linux si vous disposez d'un noyau 2.4 ou ultérieur. Mais si vous avez un noyau Linux précédent le 2.4, alors il est mieux pour Linux de dire qu'il ne s'agit pas d'un système d'exploitation PnP. Une façon de résoudre ce dilemme est de le configurer pour le système d'exploitation que vous utilisez le plus fréquemment. Ensuite, au démarrage de l'autre système d'exploitation, modifiez manuellement la configuration du BIOS. C'est très ennuyant mais c'est faisable si vous n'utilisez pratiquement jamais l'autre système d'exploitation. Sinon, il existe de meilleurs façons de résoudre ce dilemme.
La deuxième façon de résoudre ce dilemme est de faire en sorte que Linux configure toutes les ressources. Voir la section intitulée « Linux avant le noyau 2.4 ». Ensuite, vous dites au BIOS qu'il s'agit d'un système d'exploitation PnP.
La troisième façon de résoudre ce dilemme est de dire au BIOS qu'il ne s'agit pas d'un système d'exploitation PnP. Ceci va à l'encontre de ce que dit MS mais il est possible d'obtenir un bon fonctionnement de MS Windows9x si vous comprenez ce que vous faites (et pourquoi). Si vous dites au BIOS qu'il ne s'agit pas d'un système d'exploitation PnP, MS Windows ne devrait-il pas détecter la façon dont le BIOS a configuré les périphériques et modifier cela s'il n'aime pas ce que le BIOS a fait ? Cela devrait, mais malheureusement, cela ne semble pas fonctionner de cette façon.
Ce que Windows 9x semble faire lorsqu'il trouve un matériel déjà configuré par le BIOS est de le laisser seul et de ne pas le reconfigurer. Maintenant, Windows 9x garde une trace de la configuration des ressources bus dans sa base de registres. Si la configuration du BIOS est différent, il devrait soit corriger ce qui se trouve dans sa base de registres soit tout reconfigurer suivant les indications de cette même base. Mauvaise nouvelle : il semble ne rien faire et pense que la configuration actuelle est la même que celle de la base de registres alors qu'en fait elles sont différentes.
Mais si la base de registre contient une configuration des ressources bus identique à celle du BIOS, alors tout fonctionnera bien. Un périphérique fonctionnera bien si le BIOS l'a configuré de la même façon que ce qui est enregistré dans la base de registres. Donc, le moyen de faire fonctionner correctement MS Windows est d'obtenir que la base de registres soit synchronisée avec la configuration du BIOS. Comme mentionné précédemment, le BIOS configure les éléments suivant son ESCD (qui est quelque chose comme la base de registres mais pour le BIOS). Voir la section intitulée « La base de données ESCD du BIOS ». Donc, nous avons besoin d'obtenir la synchronisation des registres avec l'ESCD du BIOS pour que la base de registres et ESCD contiennent la même configuration. Dans certains cas, ces deux arrivent à être synchrones et vous n'avez pas besoin de faire quoi que ce soit.
Une question à laquelle vous pourriez penser est : comment l'ESCD du BIOS et la base de registres Windows peuvent-ils se désynchroniser ? Voici un scénario. Vous installez Windows avec le BIOS configuré pour un système d'exploitation PnP. Alors, Windows configure la plupart des éléments et sauvegarde sa configuration dans sa base de registres. Puis, plus tard, vous changez la configuration du BIOS en précisant qu'il ne s'agit pas d'un système d'exploitation PnP. Ensuite, après un redémarrage, le BIOS configure tout et il ne fait pas exactement ce que Windows a fait. Donc, la configuration actuelle du matériel et ce que Windows dispose dans sa base de registres sont maintenant différents.
Une façon d'essayer d'obtenir que la base de registres et l'ESCD disposent des mêmes informations est d'installer (ou de réinstaller) Windows lorsque le BIOS est configuré pour un système d'exploitation non PnP. De cette façon, Windows disposera du matériel configuré par le BIOS. Si cette configuration est faite sans conflit, Windows n'en changera pas et la sauvegardera dans sa base de registres. Et dans ce cas, l'ESCD et la base de registres seront synchronisés.
Une autre méthode est de supprimer les périphériques causant problèmes à Windows en cliquant « Supprimer » dans le gestionnaire des périphériques. Puis redémarrez avec « OS non PnP » (enregistré dans la mémoire CMOS du BIOS lorsque vous redémarrez). Windows va alors réinstaller les périphériques, en utilisant, on l'espère, les ressources bus configurées par le BIOS. Faites attention que Windows vous demandera d'insérer le CD d'installation de Windows car il peut ne pas trouver les fichiers du pilote de périphériques, même s'il sont bien là. Un contournement est de sélectionner « skip file » ce qui évitera l'installation du fichier à partir du CD. Si le fichier est toujours sur le disque dur, avec un peu de chance, le pilote et tout ira bien, même si le programme d'installation de Windows vous a demandé de l'installer à partir du CD (ce que vous avez passé).
Comme test, j'ai « supprimé » une carte réseau qui utilisait un pilote compatible Novell. Au redémarrage, Windows l'a réinstallé avec le Réseaux Microsoft plutôt qu'avec Novell. Ceci signifie que le client Novell a dû être réinstallé, un gros travail inutile. Donc, il serait mieux de ne pas continuer avec Windows 95/98 mais laisser Linux configurer les ressources bus.
Lors de l'utilisation d'un PC Window-Linux (dual boot), vous pouvez noter un changement dans la façon dont le BIOS configure à cause de Windows9x (et des autres versions de Windows ??) en modifiant l'ESCD. Il fait cela seulement si vous « forcez » une configuration ou une installation d'un périphérique propriétaire. Voir la section intitulée « Utiliser Windows pour configurer l'ESCD ». Les pilotes de périphériques réalisant la configuration pourraient modifier ce que le BIOS a fait comme le font les outils PCI et isapnp.
Les BIOS modernes vous permettent d'allouer manuellement des ressources, principalement des IRQ. Il existe normalement une option pour configurer l'allocation à « auto » de façon à ce que le BIOS décide de l'allocation des ressources. « Auto » est souvent un bon choix sauf si vous avez d'anciennes cartes ISA propriétaires non PnP.
Si vous avez de telles cartes non PnP, alors il peut être important de réserver les ressources (telles que les IRQ) pour celles-ci dans le BIOS. Sinon, le BIOS pourrait utiliser ces ressources pour d'autres périphériques et créer ainsi des conflits. Une exception concerne quelques périphériques propriétaires communs, comme les ports parallèle et séries, les disques durs. Le BIOS pourrait les trouver (jetez un œil à l'écran au démarrage) pour que vous n'ayez pas besoin de réserver les ressources pour eux. Si vous avez utilisé Windows sur votre PC, Windows pourrait déjà avoir renseigné le BIOS en utilisant l'outil ICU (ou un outil identique) sous Windows.
Pour le PCI, le BIOS devrait aussi vous permettre d'affecter les IRQ aux emplacements de cartes 1, 2, 3, 4, et cætera. Si vous le faites, vous devez connaître les emplacements où se trouvent les cartes. En fait, chaque emplacement dispose de quatre IRQ PCI : A, B, C et D. Si le menu du BIOS ne vous dit pas laquelle (A, B, C, D) est affectée à un numéro d'IRQ, il est probable qu'il affecte seulement le numéro d'IRQ à l'IRQ PCI A. Mais, beaucoup de cartes utilisent seulement l'IRQ A donc il s'agit surtout d'affecter une IRQ à un emplacement. Voir les interruptions PCI.
C'est aussi un peu risqué. Ceci va écraser les données du BIOS contenues dans l'ESCD indiquant la façon dont vos périphériques PnP ont été configurés et comment les périphériques non PnP ont été configurés manuellement. Ne faites jamais ceci à moins que vous ne soyez convaincu que la base de données est mauvaise et a besoin d'être reconstruite. Il était indiqué quelque part que vous deviez faire ceci seulement lorsque vous n'arrivez plus à démarrer. Si le BIOS perd les données sur les périphériques ISA non PnP, alors vous devrez relancer ICA une nouvelle fois sous DOS/Windows pour ré-enregistrer les données.