área no disco após o MBR e antes do ponto de início da partição

10

Se eu usar um esquema de particionamento MBR e criar uma partição primária ou estendida com fdisk(versão 2.20.1), ele iniciará no setor 2048. Se bem me lembro, as versões anteriores fdiskiniciaram a primeira partição no setor 63. Se o MBR precisar apenas 512 bytes, por que a primeira partição não inicia no setor 2? O que é mantido nesses setores de 2047? Algum estágio do carregador de inicialização?

Martin
fonte
Para sua informação, o alinhamento 1 MiB (setor 2048) foi introduzido no Linux fdiskin util-linux-ng-2.17.1/fdisk/fdisk.c, function update_sector_offset(void), lançado em 22-02-2010. O Windows Vista foi lançado em 2006-11.
pts
Perguntas e respostas relacionadas: superuser.com/q/352572/19956 , superuser.com/q/565577/19956 .
pts

Respostas:

16

O antigo espaço de 32KiB entre o MBR e o primeiro setor do sistema de arquivos é chamado de região de compatibilidade do DOS ou espaço de MBR, porque o DOS exigia que as partições iniciassem nos limites do cilindro (e cada cilindro tivesse 64 setores, ou seja, 64 setores, ou seja, 64 setores * 512 bytes / setor = espaço de 32KiB) .

insira a descrição da imagem aqui

O GRUB herdado (GRUB1) poderia tê-lo usado para instalar o carregador de inicialização do GRUB1 em 1.5 estágios: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation .

Links adicionais:

  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
fonte
1
Ok, obrigado por explicar isso! Parece que o GRUB2 usa a mesma área entre o MBR e a partição anterior ao seu código de inicialização. De acordo com o grub-install -vGRUB2 instalado, e se eu executar dd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4, existem "loading", "Geom", "Read", "Error" nesta área e eles devem pertencer ao GRUB2.
Martin
@ Martin Hm, observação interessante. Eu tenho apenas "^ @" lá, grub2 também. Parece que meu estágio 2 está no sistema de arquivos. :)
Boris Burkov
1
@ Martin: Se você já tinha o GRUB 0.99 instalado, ele ainda pode estar nessa área, mesmo que o seu carregador de inicialização atual seja o GRUB 2.xe não o utilize.
Ben Voigt
6

Essa é uma otimização de desempenho e não está relacionada ao Linux, apenas ao hardware. Os discos modernos (os chamados discos "4K") usam setores físicos de 4096 bytes em vez de 512. Você ainda pode endereçar setores únicos de 512 bytes, mas isso pode afetar seriamente o desempenho se as partições (ou melhor: sistemas de arquivos) não estiverem alinhadas com 4K .

O setor inicial 64 seria suficiente para esse requisito. O aumento para 2048 parece ser preventivo (por exemplo, permitindo colocar uma partição de inicialização UEFI lá se o disco precisar ser convertido para GPT posteriormente).

Hauke ​​Laging
fonte
Com otimização de desempenho, você quer dizer que, se o sistema de arquivos iniciar no meio do setor de 4K, todos os dados nesse sistema de arquivos também estarão desalinhados e isso significa que, se alguém alterar um byte em um arquivo no sistema de arquivos, dois setores físicos de 4K precisam ser lidos e modificados? Se o sistema de arquivos estiver alinhado, apenas um setor de 4K precisará ser modificado desde que todos os bytes estejam no mesmo setor físico de 4K?
Martin
2
@ Martin O problema é que o kernel sempre grava blocos 4K (tamanho da página) no disco (porque as páginas são armazenadas em cache). Ao contrário de um único setor, uma página 4K pode fazer parte de dois setores. Nesse caso, não 4K, mas 8K devem ser escritos. E ainda pior: pode ser que um ou mesmo os dois blocos 4K no disco sejam lidos primeiro.
Hauke ​​Laging