C'è una differenza tra i primi 446 byte di diversi MBR di Windows?


5

Dopo aver letto molto sugli algoritmi di installazione per l'installazione di Windows da Linux, per l'installazione di Linux oltre a Windows, .... Mi chiedo un po '.

Da quello che ho letto ad esempio per l'installazione di Windows da Linux, la maggior parte dei metodi crea un MBR di copia (o il proprio) dai primi 446 byte di un MBR di Windows e lo usa per impostare i primi 446 byte dell'MBR sul computer in cui Windows deve essere installato (o per ripristinare quei 446 byte nel caso qualcosa vada storto).

Ora ciò che mi ha incuriosito è che esiste un programma Linux chiamato ms-sys (su sourceforge quindi open source) che può essere usato per win xp, win 7, .... Per creare backup MBR così appropriati.

E dopo aver letto qualcosa in rete che i primi 446 byte sono rimasti da MSDOS (per così dire) mi chiedo quanto segue:

L'MBR (solo i primi 446 byte) per le diverse versioni di Windows (XP, Windows 7, Windows 8, ...) presenta delle differenze? Oppure questi 446 byte di Windows XP possono essere usati per Windows 7 (o viceversa).

Risposte:


3

Penso che probabilmente sono diversi. Alcuni controlli indicano che, sì, sono diversi.

Non mi aspetto molta differenza nel loro comportamento. Il lavoro di base di quei 446 byte è identificare un'altra sezione del disco che ha un codice aggiuntivo da eseguire. Tale codice aggiuntivo viene in genere archiviato in una partizione. Ad alcune persone piace usare un "boot loader", come GAG o quelli installabili con XFDisk o RPM (Ranish Partition Manager) in cui i 446 byte fanno qualcosa di leggermente diverso, come fornire un'interfaccia interattiva in modo che l'utente possa scegliere di passare il controllo a un partizione diversa. Fondamentalmente, questo abilita un "menu di avvio" in modo che una persona possa facilmente scegliere di avviarsi da un diverso sistema operativo, abilitando le opzioni "multiboot" (così una persona può facilmente avviare diversi sistemi operativi).

Quel lavoro di base probabilmente non è cambiato molto da un po 'di tempo. (Tuttavia, sono stati modificati dettagli precisi su come esegue la funzionalità.) Se ci sono stati aggiornamenti utili con i sistemi operativi più recenti, immaginerei quegli aggiornamenti per fare qualcosa di simile a supportare dischi di dimensioni maggiori. È abbastanza probabile che il codice di avvio di tutte le versioni recenti di Windows (incluso XP) possa supportare fino a 2 TB, il limite del formato MBR.

(Devo notare che questa risposta intendeva indirizzare i sistemi che si basano su "MBR" per le informazioni di base sul partizionamento. I sistemi che utilizzano GPT possono anche avere un MBR che deve soddisfare requisiti specifici specificati dallo standard GPT.)

Aggiornare

Devo concludere che diverse versioni di Windows presentano alcune differenze nei primi 446 byte. La documentazione più convincente che ho trovato finora è TechNet: Dettagli di Windows Vista: Opzioni della riga di comando di Bootsect che mostra che l'utente può specificare le opzioni / nt52 o / nt60 per installare diverse versioni del codice di avvio.

Potrebbero essercene anche di più. Sembra MSDN: aggiornamento di compatibilità del disco formato avanzato (4K) "è stato rilasciato per Windows 7 SP1 e Windows Server 2008 R2 SP1. Questo aggiornamento contiene molte nuove informazioni, alcune delle quali sono applicabili solo a Windows 8 e Windows Server 2012." Non ho ancora confermato se i primi 446 byte sono stati modificati anche per queste modifiche, ma la possibilità sembra forte dal momento che sono state apportate modifiche per consentire al processo di avvio di avere una diversa compatibilità hardware.

Se vuoi maggiori dettagli su ciò che è nei 446 byte, ho trovato una documentazione su alcune versioni precedenti. Win2K dettagli del settore di avvio è un documento vecchio, che è più recente di MS KB 140418: settore di avvio per Windows NT 3.x .


Da come ho capito Windows ha la parte di partizione dopo quei primi 446 byte. Quindi le informazioni sul partizionamento non dovrebbero essere un problema (o fare la differenza). La domanda è tuttavia se quei 446 byte sono diversi per ciascuna versione di Windows (supponendo però che C sia l'unità di sistema ciascuno).
Thomas,

@Thomas: Come ho accennato nella versione precedente della mia risposta, "Dovrei fare qualche ulteriore controllo per essere sicuro". Ora ho fatto abbastanza controlli per confermare che ci sono alcune differenze note, come mostrato nel testo che ora ho aggiornato in quella risposta.
TOOGAM,

1

Esistono differenze (minori) nel codice mbr installato da diverse versioni di Windows. Tutti controllano la tabella delle partizioni per trovare qual è la partizione avviabile e quindi trasferiscono il controllo al primo settore di quella partizione. Quindi le diverse versioni sono in gran parte intercambiabili. Vedi ad esempio le pagine su http://thestarman.narod.ru/asm/mbr/VistaMBR.htm#INTRO . Non c'è niente di particolare in Windows in quel tipo di codice mbr, potrebbe anche avviare qualsiasi altro sistema operativo. Il codice MBR installato da molti boot manager di Linux, come GRUB, è completamente diverso, e potrebbe anche non guardare affatto la tabella delle partizioni e sarebbe inutile in un sistema che non ha i file di avvio di GRUB memorizzati in una partizione Linux o la sua partizione di avvio speciale.

La nuova procedura di avvio GPT / UEFI è un mondo completamente diverso.


Quindi i 446 byte sono diversi tra le diverse versioni di Windows e quindi non sarebbe saggio usare un win xp one per win 7 e viceversa?
Thomas,

1

La domanda "Questi due MBR sono diversi?" è non è equivalente alla domanda "Posso usare un MBR di una versione di Windows su una versione diversa di Windows?".

Ci sono alcune differenze tra MBR di diverse versioni di Windows. Il riferimento online più esteso che conosco è la pagina Web di Starman .

Nella pagina relativa all'MBR di Win2000 / WinXP è indicato:

I primi 300 byte (da 000h a 12Bh) di questo settore da 512 byte sono codici eseguibili ...

mentre nella pagina sull'MBR di Windows 7/8 possiamo leggere:

I primi 355 byte (da 000 a 162 ore) di questo settore a 512 byte sono codici eseguibili

e più tardi:

Ma questo codice deve prima copiarsi in un'altra area di memoria. Ciò è necessario perché il codice deve anche caricare il settore di avvio della partizione attiva nella stessa area di memoria che occupa subito dopo il caricamento! A differenza dell'MBR di Windows 2000 / XP, questo codice copia tutti i 512 byte nella nuova posizione, a partire da: 0000: 0600. Solo le prime tre istruzioni sono le stesse dell'MBR di Windows 2000 / XP, quindi tieni gli occhi aperti se stai confrontando le due.

Questo dimostra che ci sono differenze tra i due.

Eppure TheStarman afferma (non l'ho mai provato da solo, ecco perché sto semplicemente segnalando questo), per entrambi gli MBR sopra:

Nota : Come tutti gli altri codici presentati in questa serie, questo codice MBR potrebbe comunque essere utilizzato per avviare qualsiasi sistema operativo su un PC x86 se soddisfa le condizioni elencate qui .

E poi:

Anche se stiamo esaminando il codice creato da un sistema operativo Microsoft, questo MBR può anche essere utilizzato per avviare il processo di avvio per qualsiasi record di avvio di qualsiasi sistema operativo su un computer basato su CPU x86 (PC) purché tale sistema operativo sia: 1) sul disco rigido principale primario, 2) impostato come unica partizione attiva e 3) ha un caricatore di avvio nel primo settore di quella partizione.

Infine, dovrei menzionare che le stesse pagine Web riportano intere versioni di tutti gli MBR (ad eccezione della tabella delle partizioni, ovviamente), che possono in ogni caso essere utili per ripristinare un MBR perso / danneggiato. La tabella delle partizioni standard può essere ricostruita a mano o con strumenti forniti anche dalle pagine Web di TheStarman.


Hai ottenuto +1 da me in quanto è un buon punto con i due che sono diversi non essendo gli stessi che possono essere usati in modo intercambiabile. Inoltre interessanti informazioni aggiuntive lì!
Thomas,

"Posso usare un MBR di una versione di Windows su un'altra versione di Windows?" - nel contesto di tale domanda, vale la pena ripetere che, a parte il codice mbr, questo settore da 512 byte contiene anche parte della tabella delle partizioni (il resto è distribuito tra gli spazi tra le partizioni come un elenco collegato di altri settori da 512 byte simili struttura), scambiando così l'intero settore (come farebbero molti strumenti) può avere effetti collaterali interessanti.
Rackandboneman,

@rackandboneman Ecco perché ho detto: tranne che per la tabella delle partizioni, ovviamente . Dubito che avrei potuto essere più esplicito.
MariusMatutiae,

Inoltre, la tabella delle partizioni inizia apparentemente DOPO i 446 byte e occupa il resto del settore di avvio. (almeno da quello che avevo letto 446 era tutto a parte la parte della tabella delle partizioni e che 446 byte è ciò di cui ero confuso)
Thomas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.