zone sur le disque après le MBR et avant le point de départ de la partition

10

Si j'utilise un schéma de partitionnement MBR et que je crée une partition principale ou étendue avec fdisk(version 2.20.1), cela démarre sur le secteur 2048. Si je me souviens bien, les anciennes versions de ont fdiskdémarré la première partition sur le secteur 63. Si MBR n'a besoin que de 512 octets, alors pourquoi la première partition ne démarre-t-elle pas sur le secteur 2? Que garde-t-on sur ces 2047 secteurs? Une étape du chargeur de démarrage?

Martin
la source
Pour votre information, l'alignement de 1 Mio (secteur 2048) a été introduit dans Linux fdiskdans util-linux-ng-2.17.1/fdisk/fdisk.c, fonction update_sector_offset(void), publié le 22/02/2010. Windows Vista est sorti en 2006-11.
pts
Questions et réponses connexes: superuser.com/q/352572/19956 , superuser.com/q/565577/19956 .
pts

Réponses:

16

L'ancien écart de 32 Ko entre le MBR et le premier secteur du système de fichiers est appelé région de compatibilité DOS ou écart MBR, car DOS exigeait que les partitions commencent aux limites des cylindres (et chaque cylindre comportait 64 secteurs, soit 64 secteurs * 512 octets / secteur = 32 Ko d'espace). .

entrez la description de l'image ici

Legacy GRUB (GRUB1) aurait pu l'utiliser pour installer le chargeur de démarrage GRUB1 1.5-stage là: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation .

Liens supplémentaires:

  1. http://www.pixelbeat.org/docs/disk/
  2. /superuser/107235/how-do-boot-sectors-and-multiple-drives-works/108152#108152
  3. http://www.dedoimedo.com/computers/grub.html
Boris Burkov
la source
1
Ok, merci d'avoir expliqué ça! On dirait que GRUB2 utilise la même zone entre le MBR et avant la partition pour son code de démarrage. Selon que grub-install -vj'ai installé GRUB2 et si j'exécute, dd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4il y a "chargement", "Geom", "Lecture", "Erreur" dans cette zone et ils devraient appartenir à GRUB2.
Martin
@Martin Hm, observation intéressante. Je n'ai que "^ @", grub2 aussi. Il semble que mon étape 2 se trouve dans le système de fichiers. :)
Boris Burkov
1
@Martin: Si vous aviez précédemment installé GRUB 0.99, il se peut qu'il soit toujours dans cette zone, même si votre chargeur de démarrage actuel est GRUB 2.x et ne l'utilise pas.
Ben Voigt
6

Il s'agit d'une optimisation des performances et pas du tout liée à Linux, juste au matériel. Les disques modernes (appelés disques "4K") utilisent des secteurs physiques de 4096 octets au lieu de 512. Vous pouvez toujours adresser des secteurs uniques de 512 octets mais cela peut gravement affecter les performances si les partitions (ou plutôt: les systèmes de fichiers) ne sont pas alignées sur 4K .

Le secteur de démarrage 64 serait suffisant pour cette exigence. L'augmentation à 2048 semble préventive (par exemple, permettre d'y placer une partition de démarrage UEFI si le disque doit être converti en GPT ultérieurement).

Hauke ​​Laging
la source
Par optimisation des performances, vous voulez dire que si le système de fichiers démarre au milieu du secteur 4K, toutes les données de ce système de fichiers sont également mal alignées, ce qui signifie que si l'on change même un octet dans un fichier sur le système de fichiers, alors deux secteurs physiques 4K doivent être lus et modifiés? Si le système de fichiers est aligné, alors un seul secteur 4K doit être modifié tant que tous les octets sont sur le même secteur physique 4K?
Martin
2
@Martin Le problème est que le noyau écrit toujours des blocs 4K (taille de page) sur le disque (car les pages sont mises en cache). Contrairement à un seul secteur, une page 4K peut faire partie de deux secteurs. Dans ce cas, il ne faut pas écrire 4K mais 8K. Et pire encore: il se peut qu'un ou même les deux blocs 4K sur le disque doivent être lus en premier.
Hauke ​​Laging