Que faut-il mettre à jour lors du déplacement d’une partition Windows 7 (ou Vista) démarrable?


9

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.


Vous vous demandez si vous êtes assuré que la partition système cachée a été déplacée correctement?
Colum

De quelle partition cachée parlez-vous? Je viens d'ajouter la mise à jour # 6 qui parle de la partition de démarrage supplémentaire, et oui, je l'ai également déplacée. Il y avait aussi une autre zone "cachée" entre le MBR et le début de la partition Windows, mais cela ne devrait avoir aucune pertinence - c'est juste une goutte de données (dans mon cas: une partition HFS + au moment où je me déplace une installation Boot Camp ici). Les seules choses impliquées devraient être: la carte de partition (MBR plus carte de partition schématisée GUID par la suite) et les deux partitions Windows impliquées (le petit amorçage et la partition C:). J'ai mis à jour tous correctement, bien sûr. :)
SuperTempel

Très certainement, les éléments importants sont stockés dans \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.
Ben Voigt

@Ben: oui, je connais bcdedit - mais je ne veux rien éditer, autant que je sache, car je ne veux changer aucune de ses options telles qu'elles étaient en place avant de déplacer les partitions sur un nouveau disque. . Tout ce que je souhaite mettre à jour est un numéro de bloc fixe et des références d’ID de disque, sans utilisation d’exécutables Windows, si possible.
SuperTempel

1
Pas une question de programmation. Ceci est la connaissance du domaine sur le chargeur de démarrage Windows.
Andrew Medico

Réponses:


1

Le moyen le plus simple?

Insérez le disque d'installation de Windows Vista ou Windows 7 dans le lecteur, puis démarrez l'ordinateur.
Appuyez sur une touche lorsque vous y êtes invité.
Sélectionnez une langue, une heure, une devise, un clavier ou une méthode de saisie, puis cliquez sur Suivant.
Cliquez sur Réparer votre ordinateur.
Cliquez sur le système d'exploitation que vous souhaitez réparer, puis cliquez sur Suivant.
Dans la boîte de dialogue Options de récupération système, cliquez sur Invite de commandes.
Tapez Bootrec.exe, puis appuyez sur Entrée.

Options Bootrec.exe
L'outil Bootrec.exe prend en charge les options suivantes. Utilisez l'option qui convient à votre situation.

Remarque Si la reconstruction du BCD ne résout pas le problème de démarrage, vous pouvez exporter et supprimer le BCD, puis réexécuter cette option. Ce faisant, vous vous assurez que le BCD est complètement reconstruit.

Pour ce faire, tapez les commandes suivantes à l'invite de commande Windows RE:
bcdedit / export C: \ BCD_Backup
c:
cd boot
attrib DCB shr
ren c: \ boot \ bcd bcd.old
bootrec / RebuildBcd

ou / FixMbr ou / FixBoot ou / ScanOs ou / RebuildBcd selon la situation.

Voir: Support.Microsoft.com pour plus de détails.


1
Merci d'essayer d'aider, mais ce que vous dites est une connaissance standard, comme vous le soulignez. J'ai spécifiquement besoin des informations sur "ce qui se passe" pour accomplir cela dans mon propre programme écrit, et non en utilisant le logiciel Microsoft, qui est toujours difficile à gérer pour un utilisateur trivial. Je souhaite pouvoir fournir une solution à un utilisateur de Mac avec une installation Boot Camp, au cas où il aurait besoin de la déplacer sur un autre disque. Et comme effet secondaire, cela aiderait également tout autre utilisateur Windows, car les tâches seraient les mêmes.
SuperTempel

Si j'essayais de le faire ... je dd le disque avant et après et ferais une comparaison binaire entre les deux. Bonne chance.
Essobi

Je suis en avance sur vous, encore. Vous voyez, je suis l'auteur d'iBored, alors je sais comment faire des choses comme ça, et croyez-moi, j'ai essayé. Le nouveau format est trop crypté pour moi, cependant, et c'est pourquoi je pose cette question ici.
SuperTempel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.