Lorsque je déplace une partition NTFS amorçable avec Windows sur un décalage de bloc différent, que faut-il mettre à jour pour la rendre amorçable?
Contexte: Je prévois d’écrire un programme qui effectue les actions nécessaires . C’est pourquoi je ne cherche pas de guides sur l’utilisation des outils de Microsoft en démarrant à partir d’un DVD Windows. Au lieu de cela, j'ai besoin de modifier moi-même ces éléments pour pouvoir écrire une solution plus facile pour un utilisateur de PC moyen lorsqu'il souhaite déplacer son système Windows sur un disque dur plus grand.
En particulier, voici ce que j'ai essayé:
J'ai un disque avec plusieurs partitions, dont l'une est la partition NTFS avec Windows, et le disque utilise l'ancien bloc 0 du MBR, tout simplement, pour la disposition des partitions (pas plus de 4 partitions).
Maintenant, je formate et partitionne un nouveau disque plus grand. J'y fais de la place pour la partition NTFS et copie le contenu de la partition Windows NTFS de l'ancien disque dans. Et je rends la partition "active".
Cependant, lorsque j'essaie de démarrer à partir de ce disque, un message d'erreur de lecture apparaît immédiatement et le démarrage s'arrête. Le texte exact est le suivant:
A disk read error occurred
Press Ctrl+Alt+Del to restart
J'ai vérifié que les deux disques ont le même code de secteur de démarrage au bloc 0.
Il me semble que quelque chose d'autre pourrait nécessiter une mise à jour. Je suppose qu’il ya quelque part une référence de bloc absolue à mettre à jour, qui pointe probablement vers le chargeur de niveau supérieur ou vers le noyau NT.
Mise à jour: j'ai trouvé cet article qui va au fond de ce que je veux savoir. Cependant, il est dit de modifier le fichier boot.ini, mais Windows 7 est installé ici, où de telles choses semblent avoir changé: Pas de fichier boot.ini, mais un dossier appelé Informations de volume système avec GUID et autres données qui semblent liées à mon problème. . Va continuer à creuser ...
Mise à jour 2: Grâce au site Web à la recherche terrible mais très informatif de starman , j'ai pu comprendre la première étape: le secteur de démarrage NTFS dispose d'un champ pour les secteurs "cachés". Ce champ doit contenir le numéro de secteur du secteur de démarrage. Cela résout le message "erreur de lecture". Maintenant, cependant, je reçois à la place l'erreur "BOOTMGR is missing". On dirait qu'il y a un autre endroit où un numéro de bloc doit être ajusté, mais je ne trouve rien dans la liste de codes à ce sujet.
Je trouve beaucoup de sites d’aide suggérant des outils Windows pour résoudre ce problème "BOOTMGR est manquant", mais aucun ne semble savoir ce qui se passe dans les coulisses. Un peu comme suggérant de réinstaller Windows quand il y a un petit problème avec cela. Au moins, ces correctifs semblent fonctionner, impliquant principalement les outils Bcdedit et Bootrec. Maintenant, qui sait ce qu'ils font, en particulier ces derniers, en ce qui concerne une partition déplacée?
Mise à jour 3: après de nombreuses tentatives d’essais et d’erreur, je pense maintenant que la solution réside dans le fichier de registre BCD-Template , qui réside généralement dans \ Windows \ System32 \ config. Si je reçois cette mise à jour à l'aide de la commande "bcdboot", Windows démarre à partir de celle-ci. Je suis maintenant en train de déterminer les informations que ce registre contient concernant la question ci-dessus. Tous les pointeurs sur le contenu de ce registre sont les bienvenus.
Mise à jour 4: il s'avère que le fichier BCD-Template est réécrit et que son contenu binaire diffère de celui de son prédécesseur, mais que les valeurs qu'il contient ne changent pas. Donc, ce doit être quelque chose d'autre que bcdboot.exe écrit. J'avais déjà vérifié si cela modifiait les 32 premiers blocs de démarrage de la partition, mais ils semblent rester inchangés. La carte de parititon ne change pas non plus. Alors qu'est-ce que bcdboot modifie en plus du registre BCD? Des conseils sur la façon dont je peux retracer cela? Existe-t-il des outils de bas niveau qui m'indiquent quels fichiers un programme écrit?
Mise à jour 5: la réponse semble être la suivante: c: \ Boot \ BCD a également été modifié, ce qui semble être le fichier de clé du processus du gestionnaire de démarrage. Je vais enquêter plus tard ...
Mise à jour 6: Il semble être un détail important que j’avais initialement créé deux partitions lors de l’installation de Windows 7: une petite partition de 204800 secteurs qui semble être une partition d’amorçage, suivie de la grande partition contenant le système Windows ( lecteur C :). Lorsque j'ai essayé de transférer cette installation sur un nouveau disque plus volumineux, j'avais conservé les deux mêmes partitions intactes sur le nouveau disque, bien qu'elles se soient retrouvées à un décalage différent. Cela seul a conduit au message "BOOTMGR is missing". Depuis lors, j’utilise bcdboot.exe uniquement sur la partition Windows, qui a ajoutéle fichier \ Boot \ BCD sur cette partition. Ce fichier (et ce dossier) n'existait à l'origine que sur la plus petite partition. Par conséquent, ce problème peut être plus compliqué dans mon cas, car une partition (le strapper de démarrage) fait référence à une autre partition (celle contenant le système d'exploitation), alors que d'autres personnes peuvent n'avoir à gérer qu'une partition contenant les deux et peut-être la solution. est plus simple.
Mise à jour 7: Un dernier détail trouvé: le fichier \ Boot \ BCD enregistre le numéro de série du MBR. Si ce nombre ne correspond pas, le système ne démarrera pas. Ensuite, je vérifierai s’il existe également une référence de bloc absolue.
\BCD\Boot
, et vous les éditeriez normalement avec bcdedit.exe
, pas bcdboot
. Et oui, la partition séparée pour amorcer le démarrage (qui est requise uniquement lorsque vous utilisez la fonctionnalité de chiffrement de disque complet, car le code de déchiffrement doit ensuite être stocké en dehors de la partition Windows principale) contrôle le processus de démarrage, s'il existe.