Устраняем конфликт подписей дисков
Клонирование дисков получило большое распространение с тех пор, как ИТ-профессионалы для виртуализации физических серверов стали использовать такие инструменты, как
Я получил несколько электронных писем от людей, которые столкнулись с проблемой конфликта подписей дисков, и, после небольших поисков в сети, я нашел очень мало информации о том, как можно решить эту проблему. Поэтому в этой статье я опишу для вас несколько простых шагов, которые вы можете проделать, если ваша система не загружается из-за возникшего конфликта дисков. Я также объясню, где хранится подпись диска, как Windows ее использует, и почему такие коллизии делают невозможной загрузку Windows.
Подписи дисков
Подпись диска - это четырехбайтный идентификатор
Windows использует подписи дисков для отображения таких объектов, как тома, на их диски-источники, а также, начиная с Windows Vista, подписи дисков используются Windows в ее базе данных Boot Configuration Database (BCD), в которой хранится информация, используемая процессом загрузки для нахождения загрузочных файлов и настроек. Если вы посмотрите на содержимое BCD с помощью встроенной утилиты Bcdedit, вы увидите три элемента, которые ссылаются на подпись диска:
Фактически в BCD есть дополнительные ссылки на подпись диска в альтернативных конфигурациях загрузки, таких как Windows Recovery Environment, возвращение из режима гибернации и загрузки Windows Memory Diagnostic, которые не отображаются в основном выводе утилиты Bcdedit. Исправление конфликта подписей требует некоторых знаний о структуре BCD, которая фактически является файлом куста реестра, который загружается Windows в HKEY_LOCAL_MACHINE\BCD00000:
Дисковые подписи появляются в смещении в значении реестра Element в ключах под названием 0x11000001 (
Вот элемент, соответствующий одной из этих записей в выходе команды Bcdedit, где вы можете видеть такую же подпись диска, как и та, что хранится в MBR моего диска:
Конфликт подписей дисков
Windows требует, чтобы подписи были уникальны, так что, когда вы подключаете диск, имеющий подпись, идентичную таковой у уже подключенного диска, Windows переводит этот диск в режим "offline" и не считывает его таблицу разделов и не монтирует его тома. На следующем скриншоте показано, как утилита администрирования Windows Disk Management представляет диск, находящийся в режиме "offline", что произошло после того, как я подключил VHD, созданный с помощью Disk2vhd на моей системе для разработки, в данную систему:
Если вы щелкните правой кнопкой мыши на диске, утилиты предложит вам команду "Online", которая укажет Windows проанализировать таблицу разделов диска и смонтировать его тома:
После того, как вы выберете опцию Online, Windows без предупреждения сгенерирует новую случайную подпись диска и назначит ее этому диску, записав ее в MBR. После этого система сможет обработать MBR и смонтировать присутствующие на диске тома, однако, когда Windows обновляет подпись диска, записи BCD становятся некорректными, указывая на предыдущую подпись диска, а не на новую. При загрузке с этого диска, загрузчик не сможет найти указанный диск и загрузить файлы, в результате чего будет показана следующая ошибка:
Восстановление подписи диска
Один из способов исправить конфликт подписей дисков включает в себя определение новой подписи диска, назначаемой ему Windows, загрузку куста BCD диска и ручную правку всех значений реестра, которые хранят старую подпись диска. Однако, это не так просто и при таком подходе легко совершить ошибку. В некоторых случаях вы можете использовать команды Bcdedit для указания элементам устройства на новую подпись диска, но этот метод не работает на подключенных VHD, поэтому он также ненадежен. К счастью, есть более легкий путь. Вместо того, чтобы обновлять BCD, вы можете вернуть диску его первоначальную подпись.
Для начала вам нужно определить первоначальную подпись, и в этом вам могут пригодиться небольшие знания о BCD. Подключите восстанавливаемый диск к запущенной системе Windows. Он будет работать в режиме online и Windows назначит буквы дисков для томов этого диска, поскольку не будет никаких коллизий подписей дисков. Загрузите BCD с этого диска, запустив Regedit, выбрав HKEY_LOCAL_MACHINE и нажав Load Hive в меню File:
В диалоговом окне выбора файла перейдите к скрытой директории диска \Boot, которая находится в корневой директории одного из томов диска, и выберите файл с именем "BCD". Если на диске есть несколько томов, найдите директорию Boot, введя x:\boot\bcd, где вместо "x:" нужно подставить букву диска каждого тома по очереди. Когда вы найдете BCD, выберите имя ключа, в который она загружается, и найдите "Windows Boot Manager". Вы найдете эту строчку в ключе с именем "12000004", как на этом скриншоте:
Выберите ключ с именем 11000001 в том же родительском ключе Elements и выпишите четырехбайтную подпись ключа, расположенную в смещении 0x38 (не забудьте об обратном порядке байтов).
С подписью диска под рукой, откройте командную строку с правами администратора и запустите Diskpart, утилиту управления дисками. Введите "select disk 2", заменив "2" на идентификатор диска, который утилита Disk Management показывает для нашего диска. Теперь вы готовы к заключительному шагу - установке подписи диска в ее первоначальное значение с помощью команды "uniqueid disk id=e9eb3aa5", заменив ID на тот, что вы посмотрели в BCD:
Когда вы запускаете эту команду, Windows немедленно переводит диск и все соответствующие тома в режим offline, чтобы избежать конфликта подписей. Не переводите диск снова в режим online, или вы испортите всю свою работу. Теперь вы можете отключить ваш диск и, поскольку его подпись снова соответствует BCD, установки Windows на этом диске будут успешно загружаться. Вы можете оказаться в ситуации, когда у вас не будет другого выбора, кроме как вызвать конфликт и дать Windows обновить подпись диска, но теперь вы, по крайней мере, знаете, как ее можно восстановить.
Дополнительную информацию о Disk2vhd вы можете получить из книги
Источник:
Перевод: Dazila
По теме
- Дело о загадочных звуках
- Дело об ооооочень долгом входе в систему
- Дело об ошибке службы установки
- Дело о загадочных перезагрузках
- Дело о зависшей программе запуска игры
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.3)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.2)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.1)
- Дело о нерабочей системе
- Дело о блокировке утилит Sysinternals вредоносным ПО