Почему клонированный BCD Windows 7 содержит неполные данные (и, следовательно, предотвращает загрузку)?

Я имел несчастье нужно клонировать двойной загрузки Windows XP/7 окно, чтобы заменить его жесткий диск с меньшим. У меня были большие проблемы с загрузкой, и я хотел бы понять, что происходит, и если бы я мог сделать что-нибудь лучше.

Background: машина имеет диск 750 Гб с 3 разделами на нем:

  • Windows XP
  • Windows 7
  • Data

первоначальная установка была сделана в таких способ, что нет отдельного раздела восстановления Windows 7. Надеюсь, этот факт несколько упрощает ситуацию.

я заменяю его на диск 80 ГБ. Разделы уже были сжаты из Windows 7, чтобы они поместились на меньший диск.

Я GParted (от PartedMagic Linux LiveCD) для копирования разделов. Я отмечаю раздел Windows XP как активный раздел (такой же, как на исходном диске).

Я не смог использовать CloneZilla или сделайте всю копию диска из-за перехода от большего к меньшему диску.

после копирования разделов, я вручную скопировал загрузчик на (не копия таблицы разделов):

$ dd if=/dev/sda of=/dev/sdb bs=446 count=1

Я удалил исходный диск, установил новый, чтобы он физически был подключен так же, как и исходный (IDE channel 1 master), и попытался загрузиться. Это успешно представил меню загрузки, но не при выборе любой из вариантов (есть два: один для XP и один для Win7).

Я сделал справедливое немного исследований, которые позволяют мне понять, Данные конфигурации загрузки Windows 7 не содержит все, что он должен. Я сравнил вывод BCD с оригинального и нового дисков и отметил, что записи устройства на последнем были unknown. Поэтому я вручную изменил их, чтобы они соответствовали оригиналу-вот так:

$ bcdedit /set {ntldr} device partition=C:
$ bcdedit /set {default} device partition=D:
$ bcdedit /set {default} osdevice partition=D:

и перезагружается. На этот раз я мог загрузить как XP, так и Win7. Мне нужно сделать больше тестирования, потому что, похоже, есть другие различия между двумя BCDs, но внесение вышеуказанных изменений по крайней мере позволило выполнить загрузку.

Итак, мой вопрос в том, чтобы спросить, почему BCD на клонированном разделе будет отличаться от оригинала и достаточно, чтобы предотвратить загрузку ?

и вслед за этим можно было бы спросить, должен ли я делать это по-другому?

11
задан starfry
30.03.2023 6:02 Количество просмотров материала 2791
Распечатать страницу

2 ответа

после клонирования разделов, содержащих операционные системы Windows, необходимо исправить данные конфигурации загрузки, если клонированные разделы не находятся в том же положении на клонированном диске, что и на оригинале.

механизм загрузки Windows, начиная с Windows Vista, сохраняет свою конфигурацию как "Данные конфигурации загрузки" (BCD), и это относится к разделам, а не по номерам разделов, но по сигнатуре диска и смещению сектора. Подпись диска является 32-разрядной значение, встроенное в основную загрузочную запись. При копировании первых 446 байт сектора 0 будет скопирована подпись диска.

если клонирование приводит к тому, что клонированные разделы диска имеют разные адреса начальных секторов, то исходные (весьма вероятно, если клон всего диска не был использован), то клон, скорее всего, не загрузится, пока эти средства не будут применены.

по существу, смещения участка нужно быть уточненным и, для этого, вам будет нужно использовать а консоль восстановления (доступна на установочном DVD-диске Windows 7). Убедитесь, что только клонированный диск подключен и загружается с установочного DVD-диска Windows 7. На первом экране сделайте выбор языка и нажмите "Далее". На следующем экране (где отображается "установить сейчас") нажмите SHIFT+F10, чтобы получить командную строку.

во-первых, подтвердите буквы дисков, которые на месте и разделы, к которым они относятся:

diskpart
list volume
exit

также, если необходимо, повторно подтвердить раздел:

diskpart
select disk 0
select part 1
detail part
select part 2
detail part
... and so-on
exit

в системе BIOS BCD хранится в файле X:\Boot\BCD здесь X - это буква диска активного раздела (для UEFI он находится в системном разделе EFI). Нормально спрятанный, он может будьте замечены с

dir /AH X:\Boot

это может быть подкреплены такой:

bcdedit /export X:\path\to\bcd\backup

и восстановлен

bcdedit /import X:\path\to\bcd\backup

если на диске несколько операционных систем, может быть несколько BCDs. Активное BCD одно внутри на \Boot\BCD на раздел, помеченный как активный элемент активный раздел. Перечислить его содержание (в порядке возрастания многословия:)

bcdedit
bcdedit /enum
bcdedit /enum ALL
bcdedit /enum ALL /v

чтобы исправить активный BCD, установите буквы дисков для правильных разделов и сделайте:

bcdedit /set {default} osdevice partition=X:
bcdedit /set {default} device partition=X:
bcdedit /set {bootmgr} device partition=X:
bcdedit /set {memdiag} device partition=X:
bcdedit /set {ntldr} device partition=X:

или, исправить вверх по другому BCD (на "X:\boot\bcd в этих примерах):

bcdedit /store X:\boot\bcd /set {default} osdevice partition=X:
bcdedit /store X:\boot\bcd /set {default} device partition=X:
bcdedit /store X:\boot\bcd /set {bootmgr} device partition=X:
bcdedit /store X:\boot\bcd /set {memdiag} device partition=X:
bcdedit /store X:\boot\bcd /set {ntldr} device partition=X:

например, моя система, которая имеет XP и 7, и они показывают XP как на C: и 7, находясь на D: и активная раздел C:. тогда активный BCD будет в c:\boot\BCD. Менеджер загрузки находится по адресу C:\bootmgr и диагностика памяти будет в C:\boot\memtest.exe, необходимые команды будут:

bcdedit /set {ntldr} device partition=C:
bcdedit /set {memdiag} device partition=C:
bcdedit /set {bootmgr} device partition=C:
bcdedit /set {default} device partition=D:
bcdedit /set {default} osdevice partition=D:

С этими изменениями перезагрузка компьютера (нажатие Alt-F4 достигнет этого) и удаление DVD позволило системе успешно загрузиться.

далее Чтение:

(клон целого диска не должен страдать эти проблемы, потому что разметка разделов на копии должна быть точно такой же, как и оригинал)

13
отвечен starfry 2023-03-31 13:50

по данным это неофициальная документация по BCD internals, разделы в хранилище BCD фактически идентифицируются по сигнатуре диска и смещению раздела. Вы скопировали подпись диска (MBR байт 440-443), но, скорее всего, изменили смещения разделов при размещении разделов на меньшем диске, поэтому BOOTMGR больше не смог найти эти разделы.

7
отвечен Sergey Vlasov 2023-03-31 16:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх