web-dev-qa-db-fra.com

Pourquoi avons-nous besoin d'un chargeur de démarrage?

Après le BIOS ou quelque chose de similaire qui sert de firmware, est démarré, le contrôle est transmis au chargeur de démarrage, autant que je sache.

Pourquoi le BIOS ne peut-il pas charger directement le noyau du système d'exploitation?

En outre, le GRUB manuel dit: Brièvement, un chargeur de démarrage est le premier logiciel qui fonctionne lorsqu'un ordinateur démarre. Le BIOS n'est-ce pas le premier programme qui fonctionne ?

28
aoeui

Un BIOS aurait besoin de savoir comment charger un noyau, ce qui rendrait le BIOS trop compliqué: imaginez un BIOS qui doit savoir comment charger les nombreux systèmes d'exploitation disponibles, comment transmettre des paramètres de noyau, etc. ...

Ainsi, il initialise uniquement le matériel et saute à un endroit connu où le chargeur de démarrage est stocké; Ensuite, le contrôle est transmis.

De les fondamentaux UNIX et Internet HOWTO :

Vous pouvez vous demander pourquoi le BIOS ne charge pas directement le noyau - pourquoi le processus en deux étapes avec le chargeur de démarrage? Eh bien, le BIOS n'est pas très intelligent. En fait, c'est très stupide et Linux ne l'utilise pas du tout après le démarrage. Il a été écrit à l'origine pour les PC primitifs de 8 bits avec de minuscules disques et ne peut littéralement pas accéder à suffisamment du disque pour charger directement le noyau. L'étape du chargeur de démarrage vous permet également de démarrer l'un des différents systèmes d'exploitation sur différents endroits de votre disque, dans l'événement improbable que UNIX n'est pas suffisant pour vous.

Quant au BIOS étant le premier programme qui fonctionne: (de - Wikipedia )

Le logiciel BIOS est intégré au PC et est le premier code exécuté par un PC lorsqu'il est alimenté sur ("micrologiciel de démarrage").

Mais un micrologiciel est logiciel. Donc je supposerais que le GRUB manuel est au moins déroutant sur cette partie; le chargeur de démarrage peut être vu comme le premier défini par l'utilisateur Pièce de logiciel qui fonctionne sur l'ordinateur.

28
Renan

La raison est la flexibilité. Vous pouvez avoir plusieurs OSES différents sur un disque dur (Windows, Linux, etc.), ou plusieurs versions différentes du même système d'exploitation. Par conséquent, il est préférable d'avoir un morceau de code indépendant indépendant du système d'exploitation qui sait où chaque système d'exploitation installé sur le disque dur réside, comment charger chacun d'eux, lequel à charger, que ce soit pour présenter un menu ou non, etc. C'est un chargeur de démarrage.

BIOS Charge et exécute le code situé dans un emplacement prédéfini sur un disque dur (premier secteur). Nous appelons ce code un chargeur de démarrage, mais techniquement, si vous avez installé Windows sur un disque dur vide, ce code est également installé par Windows, de sorte que vous pouvez appeler la partie de Windows, en particulier depuis que Windows Bootloader ne peut pas charger d'autres OS en plus de Windows.

En ce qui concerne le premier logiciel qui fonctionne lorsqu'un ordinateur démarre: la distinction du micrologiciel/logiciel est assez mince et le processus de démarrage de l'ordinateur moderne est très compliqué. Le BIOS en soi n'est pas non plus un programme monolithique, mais plusieurs stades distincts enchaînés ensemble. Cependant, le chargeur de démarrage est le premier tilisateur-changeable code qui fonctionne. Il s'agit de la première partie de code que l'utilisateur peut endommager, effacer, infecter avec un virus, etc. Je suppose donc que le BIOS techniquement est le premier logiciel qui fonctionne, le chargeur de démarrage est d'abord dans un sens que si l'ordinateur ne démarre pas les besoins de l'utilisateur. vérifier si c'est ok.

10
haimg

Pourquoi le BIOS ne peut-il pas charger directement le noyau du système d'exploitation?

Trois raisons:

  • Le BIOS sur la plate-forme PC d'origine lorsqu'il a été introduit en 1981 visait à fonctionner au même rôle que dans le système d'exploitation CP/M, à savoir une mince couche d'abstraction pour quelques périphériques et un simple chargeur de démarrage de disque. CP/M avait une autre couche appelée "BDO" qui gérait le système de fichiers. Dos était similaire à cp/m à de nombreux égards, car il s'agissait du système d'exploitation en vogue à l'époque et était structuré de la même manière. Le BIOS était destiné à gérer des aspects spécifiques au matériel de la plate-forme, un rôle que les pilotes dans OSES remplissent maintenant.

  • La notion d'un système de fichiers comme distincte du système d'exploitation n'a pas encore été prise.

  • A ce moment-là, RAM et ROM étaient des ressources coûteuses et rares. Le PC d'origine IBM 5150 pourrait être obtenu avec aussi peu que 16K de RAM ( Référence ). Le ROM taille de ce système était de 48k et qui comprenait un interprète de base. Il n'y avait pas une telle chose comme une norme Système de fichiers à cette époque non plus.

Étant donné que DOS est devenu le système d'exploitation le plus populaire pour cette plate-forme, et Windows par la suite, qui a fonctionné avec cette configuration, personne ne pense étendre le BIOS de cette manière pour inclure une capacité de chargement de démarrage réelle.

Je ne suis pas sûr des capacités de l'UEFI - il peut avoir une véritable capacité de chargement de démarrage qui n'est pas utilisée par Windows pour une raison ou une autre (Windows insiste sur l'utilisation de son propre gestionnaire de démarrage lorsque vous l'installez). Les autres firmwares non bios comme U-Boot et celles de nombreux téléphones et routeurs chargent et courent directement des noyaux. Il n'y a pas eu de raison technique pour cela puisque quand les bioses ont commencé à avoir de la place ROM pour faire plus de choses.

2
LawrenceC