Existe uma diferença entre os primeiros 446 bytes de diferentes MBRs do Windows?

6

Depois de ler muito sobre os algoritmos de instalação para instalar o windows a partir do linux, para instalar o linux em adição ao windows, .... estou pensando um pouco.

Pelo que eu li, por exemplo, para instalar janelas do linux, a maioria dos métodos cria uma cópia (ou a sua própria) MBR dos primeiros 446 bytes de um MBR do Windows e usa isso em seguida, para definir os primeiros 446 bytes do MBR no computador em que as janelas devem ser instaladas (ou para restaurar esses 446 bytes, caso algo dê errado).

Agora, o que me intrigou é que existe um programa linux chamado ms-sys (no sourceforge, portanto, código aberto) que pode ser usado para win xp, win 7, .... Para criar backups MBR apropriados.

E depois de ler algo na rede que os primeiros 446 bytes são uma sobra do MSDOS (por assim dizer) eu estou querendo saber o seguinte:

O MBR (somente os primeiros 446 bytes) para as diferentes versões do windows (XP, windows 7, windows 8, ...) tem alguma diferença? Ou esses 446 bytes de um Windows XP podem ser usados para um windows 7 (ou vice-versa).

    
por Thomas 28.12.2015 / 08:46

3 respostas

3

Eu acho que eles provavelmente são diferentes. Algumas verificações indicam que sim, elas são diferentes.

Eu não espero muita diferença no comportamento deles. O trabalho básico desses 446 bytes é identificar outra seção do disco que tenha código adicional para ser executado. Esse código adicional é normalmente armazenado dentro de uma partição. Algumas pessoas gostam de usar um "boot loader", como o GAG ou os que podem ser instalados com o XFDisk ou o RPM (Ranish Partition Manager), onde os 446 bytes faça algo um pouco diferente, como fornecer uma interface interativa para que o usuário possa optar por passar o controle para uma partição diferente. Basicamente, isso permite um "menu de inicialização" para que uma pessoa possa facilmente escolher inicializar a partir de um sistema operacional diferente, ativando opções de "inicialização múltipla" (para que uma pessoa possa inicializar facilmente diferentes sistemas operacionais).

Esse trabalho básico provavelmente não mudou muito em muito tempo. (No entanto, detalhes precisos sobre como ele executa a funcionalidade foram alterados.) Se tiver havido atualizações úteis com sistemas operacionais mais recentes, imagino que essas atualizações façam algo como suportar tamanhos de disco maiores. As chances são muito boas de que o código de inicialização de todos os lançamentos recentes do Windows (incluindo o XP) possa suportar até 2 TB, o limite do formato MBR.

(Devo observar que essa resposta se destinava a abordar sistemas que dependem do "MBR" para informações básicas de particionamento. Sistemas que usam GPT também podem ter um MBR que precisa atender a requisitos específicos especificados pelo padrão GPT.)

Atualizar

Eu tenho que concluir que versões diferentes do Windows têm algumas diferenças nos primeiros 446 bytes. A documentação mais interessante que encontrei até agora é TechNet: detalhes do Windows Vista: Bootsect Opções de linha de comando que mostram que o usuário pode especificar as opções / nt52 ou / nt60 para instalar versões diferentes do código de inicialização.

Pode haver mais também. Parece MSDN: compatibilidade de disco de formato avançado (4K) update "foi lançado para o Windows 7 SP1 eo Windows Server 2008 R2 SP1. Esta atualização contém muitas informações novas, algumas das quais são aplicáveis apenas ao Windows 8 e Windows Server 2012." Ainda não confirmei se os primeiros 446 bytes também foram alterados para essas alterações, mas a possibilidade parece strong, já que foram feitas alterações para permitir que o processo de inicialização tenha compatibilidade de hardware diferente.

Se você quiser mais detalhes sobre o que está nos 446 bytes, eu localizei alguma documentação sobre algumas versões mais antigas. Detalhes do setor de inicialização do Win2K é um documento mais antigo, que é mais recente que MS KB 140418: setor de inicialização para o Win NT 3.x .

    
por 28.12.2015 / 08:53
1

Existem diferenças (menores) no código mbr instalado por diferentes versões do Windows. Todos eles verificam a tabela de partições para descobrir qual é a partição inicializável e, em seguida, transferem o controle para o primeiro setor dessa partição. Portanto, as diferentes versões são amplamente intercambiáveis. Veja, por exemplo, as páginas no link . Não há nada específico para o Windows nesse tipo de código mbr, ele poderia também inicializar qualquer outro sistema operacional. O código MBR instalado por muitos gerenciadores de inicialização do Linux, como o GRUB, é completamente diferente e pode nem mesmo olhar para a tabela de partições, e seria inútil em um sistema que não tenha os arquivos de inicialização do GRUB armazenados em uma partição Linux ou sua própria partição de inicialização especial.

O mais recente procedimento de inicialização do GPT / UEFI é um mundo totalmente diferente.

    
por 28.12.2015 / 09:57
1

A pergunta "Esses dois MBRs são diferentes?" é não equivalente à pergunta "Posso usar um MBR de uma versão do Windows em uma versão diferente do Windows?".

Existem algumas diferenças entre MBRs de diferentes versões do Windows. A referência on-line mais abrangente que eu conheço é a página do Starman na Web .

Em a página sobre o MBR do Win2000 / WinXP é declarado:

The first 300 bytes (000h through 12Bh) of this 512-byte sector are executable code...

enquanto na página sobre o MBR do Windows 7/8 , podemos ler:

The first 355 bytes (000h through 162h) of this 512-byte sector are executable code

e mais tarde:

But this code must first copy itself into another area of Memory. This is necessary because the code must also load the Boot Sector of the Active Partition into the same area of Memory that it occupies just after being loaded! Unlike the Windows 2000/XP MBR, this code copies all 512 of its bytes to the new location, starting at: 0000:0600. Only the first three instructions are the same as the Windows 2000/XP MBR, so keep your eyes sharp if you're comparing the two.

Isso mostra que existem diferenças entre os dois.

Ainda TheStarman afirma (eu nunca tentei isso por conta própria, é por isso que estou simplesmente relatando isso), para ambos os MBRs acima:

Note: Like all other code presented in this series, this MBR code could still be used to boot any OS on an x86 PC if it meets the conditions listed here.

E então:

Even though we're examining code created by a Microsoft Operating System, this MBR can also be used to start the boot process for any operating system's Boot Record on an x86-CPU based (PC) computer as long as that OS is: 1) on the Primary Master hard drive, 2) set to be the only Active partition and 3) it has a boot loader in the first sector of that partition.

Por fim, devo mencionar que as mesmas páginas da Web relatam versões inteiras de todos os MBRs (exceto a tabela de partições, é claro), o que pode, em qualquer caso, ser útil na restauração de um MBR perdido / corrompido. A tabela de partições padrão pode ser reconstruída manualmente ou com instrumentos também fornecidos pelas páginas da Web do TheStarman.

    
por 28.12.2015 / 10:38

Tags