La ROM est une puce distincte de la RAM. Il ne nécessite pas d'alimentation pour conserver son contenu, et à l'origine ne pouvait être modifié par aucun moyen, mais était câblé en usine. Une PROM ultérieure ou une mémoire morte programmable a remplacé la véritable ROM. Ces puces sont vides de l'usine et peuvent être écrites une seule fois à l'aide d'une procédure spéciale qui a essentiellement brûlé des morceaux de la puce provoquant un changement d'état. Celui-ci a ensuite été remplacé par EPROM ou mémoire programmable effaçable. Ces puces avaient une petite fenêtre sur elles et si vous y dirigiez une lumière ultraviolette, elles pourraient être effacées, ce qui permettrait de les programmer à nouveau. Ceux-ci ont ensuite été remplacés par EEPROM, ou mémoire programmable effaçable électriquement. Ces puces ont une procédure logicielle spéciale pour les effacer afin qu'elles puissent être reprogrammées.
La carte mère possède un type de puce ROM contenant le firmware, qui dans le langage PC est généralement appelé BIOS, ou Basic Input Output System, bien qu'il soit remplacé de nos jours par le firmware EFI. Il s'agit du logiciel que le CPU commence par exécuter au démarrage. Tous les micrologiciels effectuent l'initialisation du matériel, fournissent généralement une sortie de diagnostic et permettent à l'utilisateur de configurer le matériel, puis localise et charge le chargeur de démarrage, qui à son tour localise et charge le système d'exploitation.
Avec le BIOS du PC, il charge et exécute simplement le premier secteur du disque à partir duquel il décide de démarrer, qui est généralement le premier disque dur détecté. Par convention, le premier secteur d'un disque dur, appelé Master Boot Record, contient une table de partition DOS répertoriant les emplacements des partitions sur le disque et laisse de l'espace pour le chargeur de démarrage. Ubuntu utilise le chargeur de démarrage GRUB, qui place suffisamment de code dans le MBR pour charger et exécuter /boot/grub/core.img
. Normalement, une copie de ce fichier est placée dans les secteurs suivant le MBR, mais avant la première partition, et c'est en fait ce que charge le MBR, car trouver l'emplacement de /boot/grub/core.img
est trop difficile à faire correctement dans l'espace très limité disponible dans le MBR .
L'image principale de grub contient le code grub de base, plus tous les modules nécessaires pour y accéder /boot/grub
afin de pouvoir y charger des modules supplémentaires, ainsi que le fichier de configuration grub qui décrit les systèmes d'exploitation qui peuvent être démarrés et où ils peuvent être trouvés.
Le firmware EFI utilisé sur les Mac Intel et devenant disponible en remplacement du BIOS sur les cartes mères PC les plus récentes nécessite une partition dédiée qui contient les fichiers du chargeur de démarrage, et le firmware est suffisamment intelligent pour trouver ces fichiers et en charger un au lieu de simplement charger et exécuter quoi que ce soit est dans le premier secteur du disque.
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
D'après lui. La mémoire principale est composée de deux parties, RAM et ROM. Je veux juste savoir si le soi-disant bootloader est installé sur la partie ROM de la mémoire principale ... @SergeyLa ROM n'est pas dans la mémoire principale:
La ROM ne fait pas partie de la mémoire principale. Il s'agit d'une puce séparée, qui est la plupart du temps intégrée à un CI plus grand. Plus d'exemple, Votre PC peut se compose de plusieurs ROM. Ceux-ci sont intégrés à votre carte mère.
Généralement :
Vous avez mentionné cela, vous avez lu un article où l'auteur disait: "La ROM fait partie de la mémoire principale". C'est déroutant, car généralement, la mémoire principale fait référence à la mémoire de types volatils, comme la RAM. Mais oui, si vous utilisez le terme de mémoire principale pour tout l'espace mémoire d'un PC, alors la ROM fait partie de cet espace mémoire. Vous devez noter que, généralement, la mémoire principale exclut la mémoire de types comme ROM .
Où est stocké Bootloader:
Le système moderne utilise un chargement de démarrage en deux étapes. Dans la première étape, un petit programme est chargé à partir d'un secteur (appelé plus souvent secteur d'amorçage) du disque dur. Ce petit programme charge à son tour un programme à partir de certains endroits du disque, appelé bootloader. Et enfin, le chargeur de démarrage charge le système d'exploitation.
En termes de système Ubuntu, le processus est le suivant:
Après avoir allumé votre PC, le BIOS (qui est stocké dans la ROM) s'exécute automatiquement et initialise diverses parties du matériel du PC. Il vérifie ensuite un secteur spécifique dans le premier périphérique de démarrage défini (généralement le disque dur). Ce secteur est le secteur de démarrage, qui fait 512 octets.
Le programme dans le secteur de démarrage est chargé en mémoire (1ère étape). Ce petit programme contient des informations sur les programmes à charger ensuite en mémoire et sur l'emplacement de ce programme sur le disque ou le périphérique de démarrage. Il charge ce programme. Dans Ubuntu, c'est le cas
/boot/grub/core.img
.Dans la deuxième étape, le chargeur OS, GRUB, charge Ubuntu en chargeant le noyau et le disque RAM initial dans la mémoire et le contrôle de transfert au noyau. Ensuite, le noyau s'exécute et charge tous les programmes nécessaires tels que le gestionnaire d'affichage, Gui, etc.
Donc, nous pouvons clairement dire que le chargeur de démarrage n'est ni stocké dans la ROM, ni dans la RAM, il est en fait stocké sur le disque dur (ou un autre périphérique de démarrage, tel qu'un CD-ROM de démarrage, des lecteurs USB, etc.), en parlant précisément du premier secteur du disque dur, d'une taille de 512 octets et souvent appelé secteur d'amorçage . Et ce chargeur de démarrage charge le chargeur du système d'exploitation (dans Ubuntu, c'est grub) qui réside également dans le disque dur (c'est-à-dire le
/boot/grub/
dossier), et sa tâche consiste à charger le système d'exploitation (disons, Ubuntu).À titre de test, retirez le disque dur (et tous les autres périphériques de démarrage) et essayez de démarrer. Vous pouvez passer à l'étape du BIOS, mais après cette étape, vous ne pouvez rien démarrer. Très probablement, le BIOS dira " Aucun périphérique de démarrage trouvé " ou " Aucun système d'exploitation trouvé " ou quelque chose de similaire.
J'espère que cette réponse vous aidera.
Pour plus d'informations, vous pouvez visiter ces liens:
la source
Un processeur compatible x86 démarre toujours en mode dit "réel", qui est un mode 16 bits avec 1 mégaoctet de mémoire adressable disponible. À partir de cet espace d'adressage, 640 Ko sont disponibles pour les programmes et les adresses ci-dessus qui sont mappées à différents appareils.
Par exemple, les adresses commençant par 0xA000: 0x0000 sont mappées à la RAM vidéo, ainsi, l'écriture de données là-bas écrirait en fait des données dans la mémoire de la carte vidéo affichant des pixels à l'écran.
De même, la ROM du BIOS commence à partir de 0xF000: 0000 de sorte que le processeur, lorsqu'il est allumé, commence simplement à exécuter les instructions une par une à partir de cette adresse prédéfinie. La ROM du BIOS contient le programme initial qui commence par effectuer un "auto-test de mise sous tension", ou POST. De Wikipédia:
Le micrologiciel du BIOS est chargé de lire le premier secteur du disque dans la mémoire et de passer le contrôle à un petit programme qui se trouve, là encore, à une adresse spécifique. Le chargeur de démarrage MBR peut alors commencer à charger le système d'exploitation directement (comme c'était le cas avec MS-DOS) ou à charger la «deuxième étape», ce qui n'est pas limité aux limites d'un seul secteur de disque.
Les chargeurs de démarrage qui utilisent l'approche à plusieurs étapes peuvent être assez complexes avec du texte ou une interface graphique qui permet à l'utilisateur de sélectionner à partir de quel disque ou partition charger un système d'exploitation.
Donc, si, comme le suggère Uri, vous souhaitez savoir si le chargeur de démarrage Windows et GRUB peuvent coexister ensemble, la réponse est: le MBR réel ne peut contenir qu'un seul chargeur de démarrage de premier étage (allez, tout le secteur ne fait que 512 octets) , mais la deuxième étape d'un chargeur de démarrage peut être capable de "charger en chaîne" des systèmes d'exploitation à partir de différentes partitions. Le chargeur de démarrage Windows est uniquement capable de reconnaître et de charger Windows, tandis que GRUB est capable de charger Linux ou de passer le contrôle à un autre chargeur de démarrage stocké dans un enregistrement de démarrage de volume de l'une des partitions, ce qui permet de démarrer Windows ou un autre système d'exploitation. Ce dernier processus est appelé chargement en chaîne.
Lorsque vous installez Ubuntu sur un ordinateur équipé de Windows, GRUB sera installé dans MBR et vous pourrez démarrer Ubuntu et Windows.
Cependant, si Windows est installé après Ubuntu, GRUB sera remplacé par le chargeur de démarrage Windows et vous devrez réinstaller GRUB pour pouvoir redémarrer Ubuntu.
la source
Le conflit entre ce que vous dites sur le chargeur de démarrage se trouvant dans la ROM et dans le MBR est peut-être dû au fait que le chargeur de démarrage est utilisé pour tout code qui explique comment faire le minimum pour charger du code afin que l'ordinateur fasse quelque chose d'utile, y compris chaque dans un démarrage en plusieurs étapes.
Donc, l'état de départ est d'avoir un ordinateur, qui est un appareil programmable, mais ne sait pas comment charger le logiciel à exécuter car il n'a pas de logiciel chargé. (Et donc boot de se tirer de ses bootstraps ).
Historiquement, il y avait quelques solutions différentes à ce problème, mais ces jours-ci, nous commençons avec du code dans la ROM (principalement probablement strictement EEPROM), ce qui est suffisant pour lui permettre de regarder différents appareils et de les essayer à tour de rôle jusqu'à ce qu'il en trouve un qui soit amorçable.
(C'est pourquoi de nombreux systèmes démarrent à partir d'un CD ou d'un DVD si vous placez un disque d'installation du système d'exploitation dans et à partir du disque dur sinon, le BIOS [le code sur la ROM, y compris le code dont nous parlons et certains autres bas de niveau supérieur qui fait démarrer les choses] est configuré pour regarder d'abord le lecteur de CD / DVD, puis sur un disque dur s'il ne trouve rien, les tweakers le configurent souvent pour ignorer le lecteur de CD / DVD, sauf demande manuelle pour qu'il ne perd pas de temps à faire tourner un disque non amorçable qui a été laissé dans le lecteur).
Ce code dans la ROM est parfois appelé chargeur de démarrage .
Quand il sait quel lecteur regarder, il va alors regarder le MBR, qui contient des informations sur les partitions primaires - comment pourriez-vous regarder plus tard / ou / boot ou C: / (sur un système Windows) si vous ne l'avez même pas savez quelle partie du disque était quelle partition, peu importe comment chaque partition a été montée? - et du code avec des instructions supplémentaires à exécuter. (Incidemment, cela explique pourquoi certains systèmes d'exploitation - comme Windows - ne peuvent être installés que sur une partition principale, les détails de ces partitions sont dans le MBR et c'est la seule information de partition que leur chargeur de démarrage a lue, et il ne charge pas l'EBR sur en savoir plus sur les partitions logiques, en ce qui concerne ces partitions n'existent même pas encore).
Ce code exécutable est également appelé chargeur de démarrage . Lorsque nous souhaitons faire la distinction entre cela et ce qui vient ensuite, cela s'appelle un chargeur de démarrage principal (car à moins que nous ne fabriquions notre propre BIOS, nous ignorons le bit ROM comme hors de notre contrôle).
Ce code sera très petit car il ne contient que 400 octets environ, donc pour faire quoi que ce soit de réel, il chargera un peu plus de code, qui peut être plus grand car il n'a pas à gérer cette contrainte.
Ce code est également appelé chargeur de démarrage . Lorsque nous voulons distinguer ce qui précède, ce qu'on appelle un chargeur de démarrage secondaire .
Ce code pourrait peut-être être la dernière étape du processus. Ce serait le cas si vous n'avez qu'un seul système d'exploitation, ou si tous les systèmes d'exploitation de votre système utilisent des chargeurs de démarrage compatibles (par exemple, deux installations Linux qui utilisent toutes les deux GRUB, de sorte que celui qui a été mis à jour le dernier peut proposer de démarrer dans l'un ou l'autre), alors il présente les menus (si vous le souhaitez) charge dans un noyau, et passe le contrôle sur le système d'exploitation.
Dans le cas où vous avez un système d'exploitation qui n'est pas compatible avec ce chargeur de démarrage, il peut charger en chaîne. Par exemple, si vous avez Windows et Linux sur la même machine, l'option GRUB pour le chargement de Windows chargera en fait un autre chargeur de démarrage qui ne connaît que les installations Windows et y passera. Bien qu'il s'agissait d'une étape tertiaire dans le processus, il est toujours appelé chargeur de démarrage secondaire , car il ne sait ni ne se soucie qu'un autre chargeur de démarrage secondaire fonctionne avant. Ce serait également le cas avec une installation Linux utilisant un autre type de chargeur de démarrage secondaire.
Généralement, lorsque nous parlons du chargeur de démarrage en termes de Linux, nous ne parlons généralement pas du code ROM (il ne fait pas partie de Linux ou n'est pas modifié en installant Linux). Lorsque nous le faisons,
update-grub
nous modifions le chargeur de démarrage secondaire, qui se trouve généralement dans / boot d'une installation particulière. Lorsque nous le faisons,install-grub
nous le modifions ainsi que le chargeur de démarrage principal dans le MBR afin qu'il ait suffisamment de code pour savoir où / boot se trouve (peut-être en démarrant un RAID logiciel au fur et à mesure) et le chargera et l'exécutera lorsqu'il sera lui-même exécuté .Donc, en résumé, vous aviez tort lorsque vous avez dit que la ROM faisait partie de la mémoire principale * car elle est distincte. (En effet, la RAM est considérée comme antonyme de la ROM). Vous aviez raison à la fois de dire qu'il y avait un chargeur de démarrage là-bas et dans le MBR, car ce sont deux étapes du processus et les deux sont parfois appelés par ce nom. Et la réponse à "Différents systèmes d'exploitation stockent-ils leur chargeur de démarrage à différents endroits?" est "la plupart du temps", car si vos chargeurs de démarrage secondaires incompatibles masquent d'autres chargeurs de démarrage (si vous installez Windows après avoir installé Linux) ou chargent en chaîne dans l'autre si demandé (si vous corrigez cette situation, ou installez Linux après Windows), mais un système d'exploitation peut partager un chargeur de démarrage secondaire s'ils sont compatibles (si vous installez Linux après un autre Linux qui utilise le même type de chargeur de démarrage secondaire et qu'il peut voir l'autre Linux [parfois le RAID logiciel confond les choses et rend le chargement de chaîne nécessaire).
* À une époque où l'on utilisait par programme à la fois la ROM et la RAM, c'était différent. Sur un ZX Spectrum par exemple, la ROM serait de 16 Ko et inclurait un interpréteur BASIC, de sorte qu'il vous donnerait également le point de départ pour charger quelque chose dans ses 48 Ko ou 128 Ko (paginés) ou RAM (dans ce cas, il s'agit essentiellement de démarrer dans cet interpréteur BASIC et ensuite l'utiliser pour démarrer dans ce qui était sur la bande), il y avait tout un tas de fonctions de l'interpréteur BASIC que les programmes en RAM pouvaient utiliser (pourquoi écrire une fonction trig alors que l'ordinateur en a déjà une à une position connue) ? Surtout quand vous n'avez que 48 Ko pour que tout votre propre code puisse s'exécuter). Cette ROM était également visible de la même manière que la RAM, juste à différentes adresses. Dans un tel cas, la ROM faisait autant partie de la mémoire principale que la RAM, mais pas en écriture.
la source
Faites un exemple de travail minimal et exécutez-le sur un émulateur pour comprendre ces concepts:
Il s'agit d'un "bootloader" super simple qui exécute une seule
hlt
instruction. Plus d'informations sur: https://stackoverflow.com/a/32483545/895245Vous pouvez ensuite l'exécuter sur du matériel réel avec:
et brancher l'USB sur votre ordinateur, et démarrer à partir de celui-ci.
Lorsque vous faites cela, il devient clair que le chargeur de démarrage est quelque chose qui vit sur un disque de stockage permanent comme les clés USB ou les disques durs.
Ce qui vit sur la ROM, c'est le code qui démarre le chargeur de démarrage pour nous, appelé firmware (ou moins précisément BIOS).
la source
Autrefois, le programme de démarrage résidait sur du ruban de papier perforé similaire à ceux utilisés par les télégraphes ou les supports de cartes perforées (`` ne les voyez plus tous les deux). le processus s'appelait auparavant IPL, abréviation de Initial Program Load. Parfois, si un lecteur de bande ou de carte papier n'était pas disponible, il faudrait entrer le code IPL binaire directement dans le processeur via une console sur le panneau avant. ouf!
De nos jours, le code IPL réside dans des pROM qui, lorsqu'ils sont exécutés à leur tour, chargent et exécutent tous les chargeurs de démarrage secondaires adaptés pour charger (démarrer) le système d'exploitation souhaité. le chargeur secondaire peut être sur n'importe quel support sur n'importe quelle partie de la configuration connue ou adressable par le code IPL.
la source
Le chargeur de démarrage se trouve généralement dans le premier secteur du disque dur, généralement appelé enregistrement de démarrage principal.
À votre santé
la source