2009-12-03 13 views
0

J'essaie de comprendre le processus d'auto-amorçage. Certaines questions ne sont pas claires pour moi. L'un d'entre eux est: Comment le code d'amorçage dans l'enregistrement de démarrage de volume sait-il l'adresse LBA absolue du secteur 0 de patition où réside l'enregistrement de démarrage de volume?Processus d'amorçage OS

+1

Y a-t-il quelque chose que http://en.wikipedia.org/wiki/Master_boot_record n'explique pas de façon satisfaisante? Peut-être pourriez-vous être plus précis? – Stu

+0

Voulez-vous dire 'enregistrement de démarrage maître savoir à propos de l'adresse LBA absolue de 0 secteur de la partition où réside l'enregistrement de démarrage de volume »? – EFraim

+0

EFraim, je savais que le code MBR recherche dans la table de partition adresse LBA de 0 secteur de la partition amorçable et charger et exécuter le code Volume Boot Record. Mais le code d'enregistrement de démarrage de volume doit trouver le fichier osloader dans le répertoire racine du système de fichiers de volume. Mais pour charger un fichier en mémoire et l'exécuter, vous devez connaître l'adresse LBA absolue. FAT BPB stocke seulement le nombre de secteurs, et toutes les structures ont des adresses relatives, comme je sais. –

Répondre

0

Dans le VBR est une structure appelée BIOS Parameter Block, nommée d'après le BIOS, la moitié inférieure de la structure de noyau MS-DOS traditionnelle. Dans le bloc de paramètres du BIOS se trouve a field denoting the number of hidden sectors entre la partition et l'entrée de la table de partition (style MBR) qui l'entoure. Le code VBR lit simplement ce champ hors de lui-même et l'ajoute à l'adresse de bloc relative au volume pour produire le LBA à lire à partir du disque. C'est pourquoi il est impossible de démarrer des systèmes d'exploitation tels que Windows NT, MS/PC/DR-DOS et OS/2 à partir de partitions secondaires directement, sans assistance. Dans les partitions primaires, le champ BPB est simplement le LBA de début du début du volume, car la table de partition à laquelle il est relatif est le MBR principal dans le bloC# 0 du disque, et tout fonctionne. Dans les partitions secondaires, en raison d'une anomalie de la version 3 de MS-DOS avec laquelle tout le monde doit rester compatible depuis, le champ BPB est uniquement le décalage du "lecteur logique" dans la "partition étendue" qui le contient et le démarrage le code ne fonctionne pas car il cherche le reste de l'boot volume dans le mauvais endroit sur le disque.

Boot managers fournir une assistance en fixant le BPB à la volée. Le code VBR lit bien sûr la copie en mémoire de lui-même, pas la copie sur disque. Ainsi, les gestionnaires de démarrage ajustent simplement le champ du BPB pour les partitions secondaires à la valeur absolue correcte, car ils chargent le VBR en mémoire. Alors tout fonctionne.