Premièrement, je suppose que les lecteurs et/ou les partitions ont une adresse linéaire du début à la fin. Cela doit être le cas, sinon des programmes tels que dd
ne seraient pas en mesure de fonctionner comme mécanisme de copie.
Le secteur de démarrage est-il à peu près tout à fait d'adresse 0 dans cet ensemble d'octets? Je suppose que cela dépend du système de fichiers utilisé sur ce lecteur?
Désolé je ne suis vraiment pas bien informé de ces choses de bas niveau et que je veux apprendre!
Oui, le secteur de démarrage est toujours dans le secteur 0 pour MBR. Le disque dur est divisé en secteurs qui sont traditionnellement 512 octets, mais les lecteurs 4TB + commencent à utiliser 4096 secteurs d'octets.
Vous devez lire ou écrire un secteur complet.
Aujourd'hui, LBA, allocation de bloc logique, a une progression standard de secteurs de 0 à la capacité du lecteur.
Les anciens disques durs utilisent réellement des cylindres, des têtes et des secteurs. Dans lequel chaque tête maintenait tant de secteurs et chaque cylindre a maintenu autant de têtes.
Le système de fichiers ne démarre pas dans le secteur 0 à la place, la table de partition indiquait le début de la partition, de sorte que les systèmes de fichiers ne jouent aucune pièce à cet égard.
De plus, GPT a commencé à remplacer MBR lorsque MBR a une limite d'environ 2.2TB et a une manière compliquée de représenter plus de 4 partitions primaires. Vous avez besoin de partitions logiques et chaque partition étendue peut contenir de nombreuses partitions logiques.
GPT a fait de nombreuses complexités et des choses actualisées et simplifiées.
Voici plus de détails.
Premièrement, nous devrons spécifier le système de partitionnement utilisé. Le classique pour PC est le MBR, qui partage le nom avec le tout premier bloc du disque (adresse logique n ° 0) dans ce schéma de partitionnement: enregistrement de démarrage principal . Donc, la réponse au titre de la question pour la partition de MBR est Oui .
L'enregistrement de démarrage principal contient un maximum de 446 octets de code de démarrage, la table de partition des partitions primaires (seulement 16 octets par partition) et une signature de démarrage (2 octets). De chaque entrée de partition de 16 octets, seuls 4 octets sont réellement utilisables pour spécifier le premier bloc d'une partition sur des disques modernes et seulement 4 octets pour spécifier le nombre de blocs dans une partition. En conséquence, le point de départ d'une partition MBR doit être dans des blocs (2 ^ 32 - 1) du début du disque et la taille d'une partition de MBR doit être (2 ^ 32 - 1) des blocs ou moins. En pratique, cela limite l'utilité de la partition MBR aux disques de 2 TB ou moins.
Traditionnellement, le code de démarrage MBR identifierait simplement la partition principale active, chargez le premier bloc de cette partition (parfois appelé enregistrement de démarrage de partition, ou PBR) et l'exécuter. Le PBR contiendrait alors un programme de démarrage spécifique au système d'exploitation. Mais les chargeurs de démarrage modernes, tels que GRUB pour Linux ou certaines solutions de cryptage de disque, peuvent souhaiter faire des choses plus complexes et donc ne conviendront pas dans un seul bloc.
Dans un ancien disque, en arrière lorsque les valeurs de la géométrie cylindre/tête/secteur avaient effectivement une signification réelle, toute la première piste de la première tête du disque était réservée au bloc de MBR uniquement: la convention devait démarrer chaque partition au début. d'une piste, alors que la piste n ° 0 avait son premier bloc occupé par le MBR, la piste entière a été ignorée et la première partition commencerait à la piste n ° 1 à la place. En conséquence, les secteurs sur la piste n ° 0 Une fois que le bloc MBR était disponible pour une utilisation par des chargeurs de démarrage plus avancés. Sur un disque partitionné MBR, le GRUB bootloader incorpora généralement au moins certaines parties de lui-même.
Sur les disques modernes, où l'adressage LBA est la norme, une nouvelle convention a été établie: la première partition commencerait normalement à l'adresse logique n ° 2048, ou exactement 1 mib du début du disque. Cela garantirait que même si le disque gérerait à l'intérieur de l'intérieur des blocs en groupes d'une puissance de deux, le début de la première partition serait toujours aligné sur le début d'un groupe de blocs. Sur les matrices RAID et d'autres systèmes de stockage plus grands, tels Alignement des données Peut être un élément important pour obtenir une performance complète hors de la mémoire. En effet secondaire, cette nouvelle convention était susceptible de causer un espace encore plus "gaspillé" entre le bloc MBR et le début de la première partition.
En 2011, lorsque la microarchitecture d'Intel Sandy Bridge a été relâchée, le nouveau firmware UEFI a été introduit dans les masses, pour remplacer éventuellement le BIOS traditionnel. Avec cela, est venu un nouveau schéma de partitionnement: Table de partition GUID ou GPT pour le court-circuit. Étant donné que la MBR a eu une limite maximale maximale assez fondamentale de 2 téraoctets (en supposant la taille de bloc standard de 512 octets), un nouveau système était nécessaire.
Le schéma de partitionnement GPT contient en fait un "MBR de protection": le tout premier bloc (LBA n ° 0) d'un disque partitionné GPT contient un bloc de MBR valide qui indique essentiellement "Ce disque a été entièrement attribué à un type de partition que vous ne faites pas Connaissez-vous, ne touchez pas "sur les systèmes qui ne comprennent que le partitionnement de style MBR. À partir de LBA N ° 1, est alors les données de la table de partition réelles du GPT. Il permet aux tailles de la partition de se développer dans la plage de Zettabytes - qui devrait être suffisante pour un avenir prévisible.
Le système de partitionnement GPT s'éloigne les restrictions de MBR:
Le firmware UEFI spécifie également un nouveau schéma de démarrage. Le chargeur de démarrage n'a plus d'emplacement fixe sur le disque. Au lieu de cela, le micrologiciel aura une capacité intégrée à lire des fichiers à partir d'un système de fichiers de type FAT32 et d'un chargeur de démarrage ne sera qu'un fichier régulier sur une partition FAT32 marquée d'un GUID de type de partition spécifique. Une telle partition s'appelle ESP ou la partition système EFI. (La norme du micrologiciel de l'UEFI a été développée à partir du micrologiciel EFI, qui existait principalement sur Intel Itanium Systems, et le nom et la structure de la partition de bootLoader ont été hérités de là.)
Ainsi, pour d'autres schémas de partitionnement, y compris GPT, vous ne pouvez pas supposer que le secteur de démarrage est le premier bloc du lecteur - en fait, vous ne pouvez pas supposer que le concept de Secteur de démarrage Même existe!
Je suppose que cela dépend du système de fichiers utilisé sur ce lecteur?
Non. Au moins sur un ordinateur compatible PC, il ne peut pas dépendre du système de fichiers utilisé.
Pourquoi?
Le BIOS est responsable du chargement du secteur de démarrage à partir du disque dur. Parce qu'il ne sait pas sur le système de fichiers utilisé, il fera toujours de même. Et cela signifie: le secteur du chargement # 0.
Sur les systèmes non compatibles PC, le secteur de démarrage peut être situé ailleurs.
Sur les systèmes avec UEFI, le démarrage fonctionne également différemment.
D'ailleurs:
Lors du démarrage du CD-ROM, le BIOS recherche un secteur spécial qui peut être situé quelque part après le secteur n ° 16 (pas sûr de 100%). Ce secteur contiendra des informations sur l'emplacement du secteur de la démarrage. Le BIOS doit comprendre ces informations pour pouvoir charger le secteur de démarrage à partir du CD-ROM.
Donc, sur CD-ROM, l'emplacement du secteur de démarrage n'est en effet pas un secteur n ° 0 du CD-ROM.
Les lecteurs sont divisés en secteurs logiques (qui peuvent ne pas être identiques à ceux physiques), normalement de 512 octets. Certaines API peuvent présenter un lecteur comme une séquence linéaire d'octets, mais le protocole d'interface réel fonctionne en termes de secteurs entiers.
Dans le secteur traditionnel du BIOS PC 0 du lecteur était/est appelé enregistrement de démarrage principal et contient à la fois le code de démarrage initial et la table de partition. Les partitions individuelles ont également eu secteur 0 comme secteur de démarrage. Traditionnellement sous DOS/Windows, le code de la MBR identifierait la partition active et transmettrait le code du code de démarrage de la partition active.
Les systèmes Linux fonctionnant sur les bioses traditionnelles PC font généralement des choses un peu différemment. Généralement, un grub "étape 1" est installé dans le MBR. Cette charge "Stage 1.5" de l'espace vide entre le MBR et la première partition. L'étape 1.5 a suffisamment de capacités pour comprendre les systèmes de fichiers et charger "Stade 2" à partir d'un système de fichiers sur l'une des partitions. L'étape 2 continue ensuite à présenter le menu de démarrage et chargez le noyau.
UEFI et sa partition Table de table Type GPT Poignez les choses plutôt différemment. Secteur 0 contient désormais un "MBR de protection" qui, espérons-le, réduit le risque d'outils de souci de non-EFI détruisant accidentellement la structure de partition GPT. La table de partition GPT elle-même est stockée à partir du secteur 1. Le micrologiciel est conscient du système de fichiers et charge le chargeur de démarrage d'une partition.
Les systèmes non-PC peuvent être à nouveau différents. Les systèmes de bras en particulier peuvent être surtout sur la carte en termes de processus de démarrage. IIRC Les bottes IMX6 d'un disque dur en lisant le code de démarrage du secteur 1, laissant le secteur 0 gratuit pour la table de partition. La Raspberry PI d'autre part s'attend à trouver une table de partition de style MBR avec une partition de graisse contenant son code de démarrage.