Où est stocké le chargeur de démarrage - en ROM, RAM ou ailleurs?

28

Selon l’entrée Wikipédia, un chargeur de démarrage est un petit programme stocké dans la ROM (une partie de la mémoire principale (RAM), n'est-ce pas?) qui ne peut être lue et non effacée. Je suis un peu perplexe ici. Est-ce que cela signifie que chaque RAM que nous achetons a un chargeur de démarrage installé par défaut? Et aussi, je lis dans un livre qui dit qu’il ya typiquement une zone appelée le MBR (Master Boot Record) sur le disque dur qui inclut un chargeur de démarrage ...

Où se trouve exactement ce bootloader? Est-ce que différents systèmes d'exploitation stockent leur chargeur de démarrage à différents endroits?

    
posée xczzhh 08.08.2012 - 05:27
la source

7 réponses

38

La ROM est une puce séparée de la RAM. Il n’a pas besoin de puissance pour conserver son contenu et, à l’origine, il ne pouvait être modifié par aucun moyen, mais a été câblé en usine. Une mémoire PROM ultérieure ou programmable en lecture seule a remplacé la mémoire ROM réelle. Ces puces venaient de l'usine et pouvaient être écrites une seule fois en utilisant une procédure spéciale qui consistait essentiellement à brûler les bits de la puce et à modifier leur état. Cela 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 étaliez de la lumière ultraviolette, elles pourraient être effacées, ce qui permettrait de les programmer à nouveau. Celles-ci ont ensuite été remplacées par EEPROM ou mémoire programmable effaçable électriquement. Ces puces ont une procédure logicielle spéciale pour les effacer afin de pouvoir les reprogrammer. La ROM est généralement utilisée pour désigner tous ces types de manière générique.

La carte mère possède un type de puce ROM contenant le micrologiciel, qui est généralement appelé BIOS, ou Basic Input Output System, bien qu’il soit remplacé ces jours-ci par le micrologiciel EFI. C'est le logiciel que le processeur commence à exécuter à la mise sous tension. Tous les microprogrammes effectuent l'initialisation du matériel, fournissent généralement une sortie de diagnostic et permettent à l'utilisateur de configurer le matériel, puis de localiser et de charger le chargeur de démarrage, qui à son tour localise et charge le système d'exploitation.

Avec PC BIOS, il charge et exécute simplement le premier secteur du disque sur lequel il décide de démarrer, ce 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 un peu d'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 il est trop difficile de trouver l'emplacement de /boot/grub/core.img dans l'espace très limité disponible dans le MBR.

L'image principale de grub contient le code grub de base, ainsi que tous les modules nécessaires pour accéder à /boot/grub afin de pouvoir y charger des modules supplémentaires, et le fichier de configuration grub qui décrit les systèmes d'exploitation pouvant être démarrés. trouvé.

Le micrologiciel EFI utilisé sur les Mac Intel et disponible en remplacement du BIOS sur la plupart des cartes mères PC récentes nécessite une partition dédiée contenant des fichiers de chargeur de démarrage, et le micrologiciel est suffisamment intelligent pour rechercher ces fichiers et en charger un et exécuter tout ce qui est dans le premier secteur du disque.

    
réponse donnée psusi 08.08.2012 - 06:21
la source
20

Rom n'est pas dans la mémoire principale:

La ROM ne fait pas partie de la mémoire principale. C'est une puce séparée, qui est la plupart du temps intégrée dans un circuit intégré plus grand. Plus exemple, votre PC peut se composer de plusieurs ROM. Ceux-ci sont intégrés à votre carte mère.

Généralement:

  • La mémoire ROM est très petite. Cette mémoire est non volatile, en ce sens que le programme stocké dans la mémoire ROM n’est pas effacé lorsque l’alimentation est coupée.
  • La ROM est utilisée pour stocker des programmes permanents, indispensables pour que votre matériel fonctionne correctement.
  • Un exemple typique de ROM est la puce BIOS. Où sont stockés les programmes d’initialisation et d’initialisation de très bas niveau

Vous avez mentionné cela, vous avez lu un article où l’auteur a dit: "La ROM fait partie de la mémoire principale". Cela est déroutant, car généralement Mémoire principale fait référence à la mémoire de types qui sont volatiles, tels que la RAM. Mais oui, si vous utilisez le terme Mémoire principale pour l’ensemble de l’espace mémoire d’un PC, la ROM fait partie de cet espace mémoire. Vous devriez noter que, généralement, la mémoire principale exclut la mémoire des types en tant que ROM .

Où est stocké le chargeur de démarrage:

Le système moderne utilise le chargement de démarrage en deux étapes. Dans un premier temps, un petit programme est chargé depuis un secteur (appelé plus souvent secteur de démarrage) du disque dur. Ce petit programme charge à son tour un programme à partir de certains endroits du disque, appelé boot-loader. Et enfin, le chargeur de démarrage charge le système d'exploitation

En termes de système Ubuntu, le processus est le suivant:

  1. Après avoir allumé votre PC, le BIOS (stocké dans la ROM) exécute et initialise automatiquement diverses parties du matériel de votre ordinateur. Ensuite, il vérifie un secteur spécifique dans le premier périphérique de démarrage défini (généralement le disque dur). Ce secteur est un secteur de démarrage de 512 octets.

  2. Le programme du secteur de démarrage est chargé en mémoire (1ère étape). Ce minuscule programme contient des informations sur les programmes à charger en mémoire et sur l'emplacement de ce programme dans le périphérique de disque ou de démarrage. Il charge ce programme. Dans Ubuntu, il s'agit de /boot/grub/core.img .

  3. Au cours de la deuxième étape, OS-Loader, GRUB charge Ubuntu en chargeant le noyau et le disque RAM initial dans la mémoire et en transférant le contrôle au noyau. Ensuite, le noyau s'exécute et charge tous les programmes nécessaires, tels que le gestionnaire d'affichage, l'interface graphique, etc.

Donc, nous pouvons clairement dire, Boot-loader ni stocké dans la ROM, ni dans la RAM, il est effectivement stocké sur le disque dur (ou un autre périphérique de démarrage, tel qu'un CD-ROM amorçable, clés USB, etc.) précisément le premier secteur du disque dur, qui est de taille 512 octets et souvent appelé boot-sector . Et ce bootloader charge OS-loader (dans Ubuntu, c'est grub) qui réside également dans le disque dur (i.e /boot/grub/ folder), et sa tâche est de charger le système d'exploitation (disons, Ubuntu).

En guise de test, retirez le disque dur (et tous les autres périphériques d’amorçage) et essayez de démarrer. Vous pouvez aller jusqu'à 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:

  1. lien
  2. lien
réponse donnée Anwar 08.08.2012 - 08:28
la source
15

Un processeur compatible x86 démarre toujours en mode dit "réel", qui est un mode 16 bits avec 1 Mo de mémoire adressable disponible. À partir de cet espace d’adresse, 640 Ko sont disponibles pour les programmes et les adresses ci-dessus mappées sur différents périphériques.

Par exemple, les adresses commençant à 0xA000: 0x0000 sont mappées sur la RAM vidéo, ce qui signifie que l’écriture de données écrivant des données dans la mémoire de l’adaptateur vidéo affiche des pixels à l’écran.

De même, la BIOS ROM démarre à partir de 0xF000: 0000, de sorte que le processeur, à la mise sous tension, 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 un «auto-test à la mise sous tension», ou POST. De Wikipedia:

  

Le logiciel BIOS est intégré au PC et constitue le premier code exécuté par un   PC sous tension ('firmware de démarrage'). Lorsque le PC démarre, le premier   le travail du BIOS est l’auto-test de mise sous tension, qui initialise et   identifie les périphériques système tels que le processeur, la RAM, la carte d’affichage vidéo,   clavier et souris, lecteur de disque dur, lecteur de disque optique et autres   Matériel. Le BIOS localise ensuite le logiciel du chargeur de démarrage qui se trouve sur un   périphérique (désigné comme «périphérique de démarrage»), tel qu'un disque dur   ou un CD / DVD, et charge et exécute ce logiciel, lui donnant le contrôle    2 Ce processus est appelé démarrage ou démarrage.   est un raccourci pour le bootstrap.

Le micrologiciel du BIOS est chargé de lire le premier secteur du disque en mémoire et de passer le contrôle à un petit programme situé à une adresse spécifique. Le chargeur de démarrage MBR peut alors charger directement le système d’exploitation (comme ce fut le cas avec MS-DOS) ou le charger ", qui ne se limite pas aux limites d'un secteur de disque unique.

Les chargeurs de démarrage qui utilisent l’approche multi-étapes peuvent être assez complexes avec une interface texte ou graphique qui permet à l’utilisateur de sélectionner à partir de quel disque ou partition de charger un système d’exploitation.

Donc, si, comme le suggère Uri, vous vous intéressez à la question de savoir si le bootloader Windows et GRUB peuvent coexister, la réponse est la suivante: le MBR réel ne peut contenir qu’un seul bootloader de premier niveau 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 partitions différentes. 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 transmettre 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 à la fois Ubuntu et Windows.

Cependant, si Windows est installé après Ubuntu, GRUB sera remplacé par Windows bootloader et vous devrez réinstaller GRUB pour pouvoir redémarrer Ubuntu.

    
réponse donnée Sergey 08.08.2012 - 05:48
la source
4

Le conflit entre ce que vous dites à propos du chargeur de démarrage en ROM et dans le MBR est peut-être dû au fait que bootloader est utilisé pour tout code déterminant le minimum à charger dans le code pour que l'ordinateur fasse quelque chose d'utile, y compris chaque état dans un démarrage en plusieurs étapes.

Ainsi, l’état initial est de disposer d’un ordinateur, qui est un périphérique programmable, mais ne sait pas comment charger le logiciel à exécuter car aucun logiciel n’est chargé. (Et par conséquent, boot à partir de se sortir de ses bootstraps ).

Historiquement, il y avait quelques solutions différentes à ce problème, mais de nos jours, nous commençons avec du code dans la ROM (probablement strictement EEPROM), ce qui suffit à le faire examiner différents appareils et à les essayer en trouve un qui est amorçable.

(C'est pourquoi de nombreux systèmes démarreront un CD ou un DVD si vous insérez un disque d'installation du système d'exploitation dans et depuis le disque dur, sinon le BIOS [le code de la ROM, y compris le code dont nous parlons et d'autres choses de bas niveau qui font démarrer les choses] est d'abord réglé sur le lecteur de CD / DVD, puis sur un disque dur s'il ne trouve rien, les ajusteurs le définissent souvent pour ignorer le lecteur de CD / DVD demandé de sorte qu'il ne perd pas de temps à tourner un disque non démarrable 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 partions primaires - comment pourriez-vous regarder plus tard / / / boot ou C: / (sur un système Windows) si vous ne l'aviez pas Je ne sais même pas quelle partie du disque était quelle partition, peu importe comment chaque partition était 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 se trouvent dans le MBR et sont les seules informations de partition lues par le chargeur de démarrage. en savoir plus sur les partitions logiques, dans la mesure où elles sont concernées, ces partitions n'existent même pas encore).

Ce code exécutable est également appelé bootloader . Lorsque nous nous efforcerons de faire la distinction entre ceci et ce qui vient ensuite, cela s'appelle un chargeur de démarrage principal (car à moins de créer notre propre BIOS, nous ignorons le bit ROM hors de notre contrôle).

Ce code sera très petit car il n’y a qu’environ 400 octets pour qu’il puisse s’intégrer, donc pour faire quelque chose de réel, il chargera un peu plus de code, ce qui peut être plus important car il n’a pas à gérer cette contrainte.

Ce code est également appelé bootloader . Lorsque nous nous efforçons de faire la distinction entre ceci et ce qui a précédé, cela s'appelle un chargeur de démarrage secondaire .

Ce code pourrait peut-être être la dernière étape du processus. Si vous ne possédez 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 utilisant GRUB, le dernier mis à jour de GRUB peut alors l’amorcer). 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 être chargé en chaîne. Par exemple. Si vous avez Windows et Linux sur le même ordinateur, l'option GRUB pour le chargement de Windows charge en fait un autre chargeur de démarrage qui ne connaît que les installations Windows et y passe. Bien que ce soit une étape tertiaire du processus, on l'appelle toujours un chargeur d'amorçage secondaire , car il ne sait ni ne se soucie du fait qu'un autre chargeur d'amorçage secondaire s'exécute avant lui. Ce serait également le cas avec une installation Linux utilisant un autre type de chargeur de démarrage secondaire.

Surtout quand on parle de bootloader en termes de Linux, nous ne parlons généralement pas du code ROM (il ne fait pas partie de Linux, ou a été modifié en installant Linux). Lorsque nous 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 faisons install-grub , nous le modifions, ainsi que le chargeur de démarrage principal dans le MBR, de sorte qu'il ait suffisamment de code pour savoir où / boot est (peut-être démarrer un RAID logiciel au fur et à mesure) lui-même est exécuté.

En résumé, vous étiez incorrect lorsque vous avez dit que la ROM faisait partie de la mémoire principale * car elle était séparée. (En effet, RAM est considéré comme antonyme de ROM ). Vous avez eu raison à la fois de dire qu’il y avait un chargeur de démarrage dans le MBR, car ils sont en deux étapes et sont parfois appelés par ce nom. Et la réponse à "Est-ce que différents systèmes d'exploitation stockent leur chargeur de démarrage à différents endroits?"est" la plupart du temps ", car si des chargeurs de démarrage secondaires incompatibles masquent les autres chargeurs de démarrage (si vous installez Windows après l’installation de Linux), Les systèmes d'exploitation peuvent partager un chargeur d'amorçage secondaire s'ils sont compatibles (si vous installez Linux après un autre Linux utilisant le même type de chargeur d'amorçage secondaire, et qu'il peut voir l'autre Linux), le RAID logiciel rend le chargement en chaîne nécessaire. >

* Dans les jours où l'on utilisait de manière systématique la ROM et la RAM, c'était différent. Sur un ZX Spectrum, par exemple, la ROM serait 16kiB et inclurait un interpréteur BASIC. Ainsi, en plus de vous donner le point de départ pour charger quelque chose dans son 48kiB ou 128Ki (paged) ou sa RAM (dans ce cas, cet interpréteur BASIC puis en utilisant cela pour démarrer 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 lorsque l'ordinateur en a déjà une à une position connue) ? surtout quand vous avez seulement 48kiB pour tout votre propre code à exécuter). Cette ROM était également visible de la même manière que la RAM, à différentes adresses. Dans un tel cas, la ROM faisait autant partie de la mémoire principale que la RAM, mais ne pouvait pas être écrite. Ces jours-ci, vous ignorez à peu près la ROM une fois que vous avez dépassé la première étape du démarrage.

    
réponse donnée Jon Hanna 08.08.2012 - 14:55
la source
0

Créez un exemple de travail minimal et exécutez-le sur un émulateur pour comprendre ces concepts:

printf '4%509s52' > main.img
qemu-system-x86_64 -hda main.img

Ceci est un "bootloader" super simple qui fait une seule instruction hlt . Plus d'infos sur: lien

Vous pouvez ensuite l'exécuter sur du matériel réel avec:

sudo dd if=main.img of=/dev/sdX

et brancher la clé USB sur votre ordinateur et démarrer à partir de celle-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 des clés USB ou des disques durs.

Ce qui vit sur la ROM est le code qui démarre le chargeur de démarrage pour nous, appelé firmware (ou moins précisément le BIOS). .

    
la source
0

Dans le passé, le programme de démarrage se trouvait sur une bande de papier perforée similaire à celle utilisée par les télégraphes ou les supports de cartes perforées («ne les voyez plus tous les deux autour de vous»). Auparavant, le processus s'appelait IPL, abréviation de Initial Program Load. Parfois, si une bande de papier ou un lecteur de carte n'était pas disponible, il faudrait entrer le code IPL binaire directement dans le processeur via une console située sur le panneau avant. whew!

De nos jours, le code IPL réside dans les pROM qui, une fois exécutées, chargent et exécutent à leur tour les chargeurs de démarrage secondaires conçus pour charger (démarrer) le système d’exploitation souhaité. le chargeur secondaire peut être sur n'importe quel support de n'importe quelle partie de la configuration connue ou adressable par le code IPL.

    
réponse donnée Loi 08.12.2017 - 07:02
la source
-1

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.

Cheers

    
réponse donnée j0N45 08.08.2012 - 10:11
la source

Lire d'autres questions sur les étiquettes