- Вопрос или проблема
- Обновление 1
- Как клонировать Windows 10 на другой раздел на том же диске в системе двойной загрузки EFI
- Подготовка системы к клонированию
- Клонирование системы Windows 10
- Клонирование в Ubuntu
- Использование команды RE cmd для исправления загрузки с использованием DISKPART и команд загрузки
- Исправление клонированной Windows 10 черный экран / sihost.exe Неизвестная критическая ошибка
- Ответ или решение
- Решение проблемы: Клонированный Windows 10 не загружается
- Причина
- Решения
- Превентивные меры и рекомендации
- Заключение
Вопрос или проблема
Проблема: Windows 10 клонируется на тот же диск/другой SSD, но не запускается.
Почему: У меня есть M.2 NVMe со следующей структурой:
- 300 МБ Раздел восстановления
- 100 МБ Раздел системы EFI
- Windows 8.1
- Не распределено пространство
- Windows 10 (источник клонирования)
Я хочу расширить установку Windows 10 влево, и, насколько я знаю, это можно сделать только клонированием/переустановкой.
Попытки: Я загрузился с USB-накопителя с Linux и сделал dd клон на новый раздел в нераспределенном пространстве на том же диске. Затем я использовал режим восстановления Windows для создания записи для нового раздела.
Он не загружается, экран остается черным. Попытка bootrec, копирование bcdboot, удаление и восстановление всего не работает. Я попытался удалить запись, указывающую на источник Windows 10, и переименовать ее папку Windows, чтобы в загрузке остался только клон, но это тоже не помогло.
Затем я попробовал клонировать источник на другой SSD с новым разметкой EFI, указывающей только на этот новый клон Windows 10, также удалив раздел EFI из NVMe, чтобы загружаться можно было только из одного возможного раздела системы EFI, но это тоже не сработало, и я получил синий экран на этот раз.
Я знаю, что мне следовало бы удалить NVMe на этом этапе, но это потребовало бы разборки всего компьютера, так как он находится внизу материнской платы в очень тесном корпусе mini-itx.
Спасение в том, что отменить изменения bcd довольно просто, так что оригинальные установки 8.1 и 10 загружаются нормально.
Вопросы: Я подозреваю, что это один из тех случаев, когда Windows расползается везде и путается, что мешает ему исправлять какие-либо проблемы или создавать правильные записи, пока он не потеряет доступ к установкам, которые не должен был трогать изначально.
Есть ли способ сделать исходную установку Windows 10 невидимой для режима восстановления/клонированной установки без физического удаления диска или удаления раздела? Я хотел бы удалить источник, только когда буду уверен, что клон работает.
Обновление 1
Оказывается, проблема с клонированным Windows 10 не связана с bcd или не только с ним. Попытка загрузиться в безопасном режиме продвигается до экрана входа (!!!). Затем все становится странным.
-
Попытка войти приводит к “Неизвестной критической ошибке” от Sihost.exe. Курсор будет продолжать мигать и вращаться. Ctrl+Shift+Esc вызывает Диспетчер задач, и оттуда я могу открыть cmd, explorer и т.д.
-
Просмотр журнала событий показывает бесконечный список ошибок “DCOM получил ошибку “1084” при попытке запустить службу ShellHWDetection с аргументами “Недоступно” для запуска сервера”, которые, как я подозреваю, являются причиной мерцающего курсора.
-
Sfc и dism /online не находят ошибок для исправления. Также chkdsk.
-
Обычная загрузка, с другой стороны, приводит к экрану, который даже не показывает экран входа, не отвечает на все попытки сочетаний клавиш (Crtl+Shift+Esc, Win+P, Win+L, Win+Ctrl+Shift+B, Crtl+Alt+Del), не отображает контекстное меню при нажатиях правой кнопкой и вообще “съедает” курсор (он не виден, пока вы его не двигаете, и исчезает после секунды простоя, без спиннингового значка вообще).
P.s.: До описанной вещи с gparted я также пытался выполнить свежую установку в новый раздел, затем клонировать исходный Win 10 на него. Не сработало и дало мне понять, что дело не в BCD.
Клон не загружался должным образом, потому что его ключи реестра указывали на старый раздел.
Прошло много лет с тех пор, как я в последний раз клонировал Windows (на другой диск), но, если я правильно понимаю, клонированный Windows способен исправить себя при первой загрузке. Это не происходит, когда вы клонируете систему на другой раздел на том же диске, потому что он все еще может видеть старый раздел с оригинальной буквой и всем остальным, поэтому у клона нет причин думать, что он не может получить доступ к этим файлам, пока он не может и не застревает в цикле ошибок.
Понимание происходящего делает эту проблему очень исправимой!
Чтобы получить рабочий клон Windows на том же диске, вам потребуется:
- USB-накопитель с Ubuntu
- Рабочая среда восстановления (RE) или USB-накопитель с образом Windows, созданным с помощью инструмента создания медиа Windows (предпочтительно)
В интернете полно руководств о том, как подготовить эти USB, если вам нужно.
Это руководство охватывает загрузку GPT/EFI, и в рассматриваемом случае имеется одна установка Windows 8.1 и одна установка Windows 10, которая будет клонирована. Я никогда не видел ни одного руководства о клонировании на тот же диск (все они говорят вам удалить диск с источником), так что это решение было проверено ровно одним (01) человеком до сих пор, привет там _o/, так что действуйте с осторожностью.
Точное решение проблемы, поднятой в вопросе, находится в конце этого ответа.
Как клонировать Windows 10 на другой раздел на том же диске в системе двойной загрузки EFI
Подготовка системы к клонированию
-
(Опционально, но хорошая идея) Обновите ваш Windows и создайте точку восстановления системы перед продолжением.
-
(Опциональная мера безопасности) Проверьте резервную копию ключей реестра в
\Windows\System32\config\RegBack
. Эта папка должна содержать 5 файлов: DEFAULT, SAM, SECURITY, SOFTWARE и SYSTEM, но начиная с Windows 10, версии 1803, это больше не делается автоматически. Проверьте эту статью для подробностей.Если она пустая или содержит файлы с нулевыми байтами, вам потребуется запустить задачу Windows или сделать их резервное копирование вручную, скопировав их с помощью командной строки в RE или при входе в другую систему. Я просто воспользовался случаем, чтобы скопировать их при входе в другую систему.
-
Выключите режим гибернации. Вы хотите быть уверены, что ваш источник клонирования Windows 10 полностью выключен при копировании.
-
Убедитесь, что все ваши операционные системы загружаются без проблем.
(Опциональная мера безопасности) Сделайте резервное копирование файлов BCD перед началом, потому что ваша загрузка, вероятно, будет повреждена в процессе. Вы, вероятно, перестроите их вместо использования резервных копий, но не повредит их иметь. Каждая установка Windows будет иметь свои собственные загрузочные файлы в
\Windows\System32\Boot
.Также на вашем диске находятся фактические загрузочные файлы, найденные в скрытом разделе EFI. Он обычно составляет 100 МБ и будет идентифицирован как “Системный раздел EFI“. Вам потребуется использовать и повысить командную строку в RE/другой системе, которая не использует ту же загрузку, чтобы это сделать.
Сначала вы назначите букву, используя Diskpart. В руководстве есть объяснение, как продолжить с этого момента. Затем вы используете xcopy
:
xcopy S:\ D:\EFI_Boot_BK /s /e
Где S:\
— это раздел EFI, а D:\EFI_Boot_BK
— это место назначения резервной копии.
Клонирование системы Windows 10
Клонирование в Ubuntu
- Загрузитесь с USB-накопителя Ubuntu и выберите “Попробовать Ubuntu”.
- Откройте
Gparted
. Перейдите к диску, содержащему исходный клон, отформатируйте новый раздел, где будет размещен клон, если вы еще этого не сделали, и запомните название разделов, содержащих источник клона и целевой раздел. - Откройте
Terminal
.
Введите следующую команду, чтобы клонировать Windows 10 на новый раздел:
sudo dd if=/dev/SOURCE of=/dev/TARGET status=progress bs=64K
bs
— это размер блока (64k — это хорошее значение), status=progress
покажет сообщение с прогрессом клонирования.
SOURCE
— это раздел Windows, который вы копируете, а TARGET
— это то, куда вы его разместите. ПРОВЕРЬТЕ ИМЕНА РАЗДЕЛОВ ПЕРЕД КЛОНИРОВАНИЕМ. Этот процесс нельзя отменить; клонирование в неправильный целевой раздел перезапишет его данные.
Пример из моей системы:
(игнорируйте беспорядок с разделами и свежий Win 10, они были сделаны для проверки того, что оказалось плохим советом)
По завершении клон будет иметь те же самые ярлыки, что и исходная система. Вы можете использовать Gparted
, чтобы переименовать их во что-то другое. В этом случае я переименовал источник в “Win 10 (BK)”. Примените изменения.
Более подробное объяснение использования dd:
Использование команды RE cmd для исправления загрузки с использованием DISKPART и команд загрузки
-
Перезагрузитесь либо в одну из оригинальных Windows и откройте командную строку с повышенными привилегиями, либо в RE, либо в Windows 10 с USB-накопителя. Я предпочитаю последнее, чтобы избежать случайного запуска автоматического ремонта, который на этом этапе может испортить загрузку на ваши ранее работающие установки Windows.
Если вы используете USB-инструмент, выберите
Далее
, затемВосстановление компьютера
, чтобы получить доступ к экрану восстановления, затемУстранение неполадок > Командная строка
. В RE это будет что-то вродеУстранение неполадок > Дополнительные параметры > Командная строка
. -
Используйте DISKPART, чтобы назначить букву разделу EFI. Используйте возможность, чтобы запомнить буквы, присвоенные вашим разделам Windows.
В моем случае команды, которые использовались, были следующими:
> diskpart
> list disk
(определите, какой диск содержит ваши установки по их характеристикам)
> sel disk 2
(мой диск Windows)
> detail disk
(получите информацию, чтобы узнать буквы установки и найти загрузочный раздел)
>sel vol 9
(номер тома моего загрузочного раздела)
> assign letter=S
(вы можете назначить любую свободную букву)
> exit
- Исправьте главный загрузочный код клонированного раздела.
Введите:
bootsect /nt60 C: /force
C:
— это буква, присвоенная клонированному разделу здесь. Замените на любую букву, присвоенную вашему разделу.
-
(опциональная мера безопасности). Введите
bcdedit
и сфотографируйте все записи, чтобы полностью воссоздать флаги позже. Windows делает очень хорошую работу по перестройке записей, но может назначить неправильный язык или оставить некоторое количество оригинальных флагов, что не является проблемой, но не является идеальным. -
Воссоздайте запись BCD для клонированного раздела. Эта процедура аналогична
bootrec /rebuildbcd
, но с преимуществом воссоздания записи даже в случаях, когда /rebuildbcd завершается с “не удалось найти указанный путь”.
Введите:
bcdboot C:\Windows /s S: /f UEFI
C:\Windows
— это источник, используемый для воссоздания этой записи; в этом случае клонированный раздел. S:
— это место назначения, раздел загрузки EFI. Эта процедура должна восстановить только клонированную запись. /f UEFI
следует использовать в данном случае, для диска GPT, EFI.
- (возможно, опционально) Теперь почти каждое руководство, с которым я сталкивался по исправлению проблем BCD, рекомендует использовать следующие команды. Тем не менее, они, кажется, применяются для MBR загрузок, а не для EFI. Они не повредят системе загрузки EFI, но могут быть так же полезны, как сыпание соли через плечо. Делайте для удачи!
Введите:
> bootrec /fixmbr
> bootrec /fixboot
(не беспокойтесь, если говорит "Доступ запрещен")
> bootrec /rebuildbcd
(Вероятно, вернет 0 найденных установок ¯\_(ツ)_/¯ )
-
Введите
bcdedit
, чтобы убедиться, что все установленные системы Windows имеют запись Windows Boot Loader. Вы можете использоватьbcdedit /set {идентификатор} флаг значениефлага
, чтобы отредактировать или добавить флаги к записям. Это хорошая возможность изменить описание исходной и клонированной Windows, чтобы вы легко могли их отличить при загрузке.
Скорее всего, клонированная Windows теперь будет основной ОС. Мне нравится менять её на безопасную, загружаемую Windows на всякий случай. Это можно сделать на экране выбора ОС при загрузке или сейчас, используя
bcdedit /default {идентификатор}
. Вы можете использоватьshutdown -r
, чтобы перезагрузиться после завершения.Чтобы скопировать идентификатор записи (или любое другое значение), выделите его, щелкнув и перетаскивая курсор, а затем щелкните правой кнопкой мыши. Вы можете вставить, щелкнув правой кнопкой мыши еще раз. Это будет выглядеть так:
СОВЕТ: Есть вероятность, что вы случайно запустили автоматическое восстановление, и один из ваших оригинальных разделов Windows не загружается, вы не можете использовать клавиатуру для выбора ОС или что-то еще странное. Вы можете использовать bootsect /nt60 all /force
, чтобы исправить все сектора разделов, с последующей процедурой bcdboot
, чтобы скопировать BCD из поврежденной установки в раздел загрузки.
Разнообразные полезные ресурсы о загрузке и BCD:
- Как восстановить загрузчик EFI/GPT на Windows 10 или 11? (Как воссоздать BCD с нуля в случае, если частичные исправления выше не работают)
- bcdedit /set флаги (Статья MS, описывающая параметры)
- Цикл ошибок загрузки -> /rebuildbcd ошибка и не удается установить активный том (SE, ремонт DISM из источника образа Windows USB)
- Как исправить исправление запуска в Windows 10 (YouTube, пример bootsect)
- Как исправить цикл автоматического восстановления в Windows 10 – Автоматическое восстановление не смогло исправить ваш ПК (YouTube, как использовать резервную копию ключей реестра)
Исправление клонированной Windows 10 черный экран / sihost.exe Неизвестная критическая ошибка
На этом этапе я застрял, когда задал вопрос.
На данный момент не предполагается, чтобы вы пытались войти в клонированную Windows. Если вы это сделаете, вы не сможете достичь страницы входа. Вы увидите черный экран с курсором, который продолжает исчезать, когда вы прекращаете его движение. Windows не будет реагировать на какие-либо сочетания клавиш, которые вы используете. Я не советую пытаться это сделать, проще подтвердить и исправить проблему сразу, выполнив следующее:
- Вы можете использовать
bcdedit /set {идентификатор} safebootalternateshell Yes
, чтобы установить клон в безопасный режим, или загрузиться в одну из оригинальных установок Windows и использоватьWin+R
, чтобы вызвать окно Выполнить, введяmsconfig
для изменения настроек оттуда.
Выберите клон и установите галочку напротив Безопасная загрузка
. Если вы находитесь в исходной установке Windows 10, вы сможете увидеть букву, которую клон получил при использовании самой установки клона, помимо буквы, присвоенной исходной Windows. Запомните их.
Вы также можете использовать этот экран для установки другой установки Windows по умолчанию, если вы еще этого не сделали.
- Загрузитесь в клонированную Windows 10. Вы должны быть в состоянии достичь экрана входа без проблем. После входа в систему вы увидите что-то вроде этого (извините за ужасное фото!):
Дождитесь, пока экран станет черным. Ваш курсор должен мигать и загружаться бешено, окно ошибки останется там.
-
Нажмите “ОК” в окне. Используйте
Ctrl+Shift+Esc
, чтобы открыть диспетчер задач. Перейдите вФайл > Запустить новую задачу
и введитеcmd
, установив галочку “Создать эту задачу с административными привилегиями”, если есть такая возможность.Вам придется быстро вводить текст, потому что состояние ошибки, в которое попадает Windows, вызывает потерю фокуса всех вводов. Сверните диспетчер задач, это смягчит проблему потери фокуса при вводе текста в командной строке по крайней мере.
-
(опционально) Вы можете еще раз подтвердить, что ваша проблема точно такая же, как у меня, проверив журнал событий и управление дисками.
Для проверки событий введите
eventvwr
и перейдите вЖурналы Windows > Система
. Вы должны увидеть множество ошибок DistributedCOM 10005, которые появляются каждую секунду, говоря такие вещи, как “DCOM получил ошибку “1084”, пытаясь запустить службу ShellHWDetection с аргументами “Недоступно” для запуска сервера”.Для подтверждения, что клон имеет доступ к исходному разделу Windows, введите
diskmgmt
в командной строке. Вы увидитеФайл подкачки
и, возможно, другие флаги, которых там не должно быть в исходном разделе. Клон будет текущей загруженной системой, но у него не будет файла подкачки.Это означает, что клон знает, что он находится в другом разделе с буквой, отличной от той, которую имела исходная система, это текущая загруженная система, и его реестр используется, но эти ключи все еще указывают на исходную систему. Вероятно, это вызывает отказ в доступе, вызывая черный экран и все те ошибки.
Чтобы это исправить, вам нужно будет изменить букву старой системы и присвоить ее оригинальную букву клону, в то время как вы вошли в клон. НЕ ДЕЛАЙТЕ ЭТО ЧЕРЕЗ УПРАВЛЕНИЕ ДИСКАМИ. Это попытается исправить реестр (который уже будет исправным, если буквы поменяются местами) и все сломает. Вам придется переклонировать систему.
В этом примере исходная исходная Windows 10, в разделе Win 10 (BK) имеет букву C:. Клон имеет букву F:. Вы хотите, чтобы источник имел любую другую букву, а клон — C:.
-
Для исправления букв минимизируйте все, вернитесь к командной строке и введите
regedit
, чтобы открыть редактор реестра. Перейдите вHKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
. Вы должны увидеть что-то вроде этого:
Вернитесь к командной строке и введите \DosDevices\(ЛЮБАЯ НЕИСПОЛЬЗУЕМАЯ БУКВА):
. Пример: \DosDevices\X:
. Выделите это, затем щелкните правой кнопкой мыши, чтобы скопировать. Не нажимайте Enter. Причина, по которой вы это делаете, заключается в том, что приглашение теряет фокус меньше раз, чем любые другие окна. Попытка ввести это напрямую в ключ реестра — ад, но вставка проста!
-
Вернитесь к окну Редактора реестра, щелкните правой кнопкой мыши запись с буквой исходной установки Windows 10. В моем случае это C:. Выберите
Переименовать
и вставьте строку, которую вы только что подготовили в командной строке. -
Повторите фокус с командной строкой, введите букву, которую вы хотите присвоить клонированному разделу, которая должна быть той, которую имела оригинальная система и которую вы только что освободили. В моем случае это
\DosDevices\C:
. Скопируйте, щелкните правой кнопкой мыши и переименуйте ключ, указывающий на клонированную систему (\DosDevices\F:
), вставьте новое значение. -
Поздравляем, вы сделали это! Вы можете открыть
msconfig
, отключить безопасную загрузку и перезагрузиться в клонированную систему. Сейчас она должна работать без каких-либо проблем.
Статья MS о смене буквы загрузочного диска через regedit:
@Рэйнис, отличная статья. Мне нужна была только часть про реестр, которая, поразительно, нигде больше не находится.
Вы можете видеть реестр клонированного раздела, загружаясь из источника.
Этот гайд поможет, если вы не знаете, как загрузить с Hive: Редактирование реестра другой установки Windows
Реестр – Загрузка Hive
Место расположения реестров Windows Файлы реестра в этих реестрах находятся по следующим путям:
HKEY_LOCAL_MACHINE\SYSTEM : БукваДискаУстановки\windows\system32\config\system
Столбец данных значений в крайнем правом углу покажет вам, если C: в клонированной системе указывает на тот же раздел, что и C: в источнике.)
Реестр – Установленные устройства
Вы также можете внести изменения из regedit.exe в источнике легче, так как у вас не будет ошибок ввода и т.д.
Работает чудесным образом и позволяет избежать попытки загрузиться в вылетающий клонированный раздел в безопасном режиме и может быть выполнено в случаях, когда клонированный раздел непереносим.
.
Ответ или решение
Решение проблемы: Клонированный Windows 10 не загружается
При клонировании Windows 10 на тот же диск или другой SSD возможно возникновение проблем с загрузкой клонированной системы. Часто это происходит из-за неправильных настроек загрузки или конфликтов с существующими системами на диске. Давайте разберем возможные причины и решения для данной ситуации.
Причина
Из описания проблемы видно, что на диске установлено несколько операционных систем, включая Windows 8.1 и Windows 10, и выполнена попытка клонирования Windows 10 на другое место на том же диске, а также на другой SSD. Основная проблема может заключаться в том, что при клонировании на тот же диск сохраняются старые записи реестра и загрузчика, которые указывают на исходный раздел, что приводит к путанице и некорректной загрузке.
Решения
-
Использование DISKPART и BCD для корректировки загрузчика:
-
Назначение букв разделам: Используйте DISKPART для назначения букв нового загрузочного раздела и клонированной системы. Это позволит Windows корректно определить местоположение клонированных данных.
-
Исправление загрузчика:
- Запустите систему с установочного носителя Windows или из среды восстановления (RE).
- Используйте
bcdedit
иbcdboot
для воссоздания записей загрузки для новой клонированной системы. Например, командаbcdboot C:\Windows /s S: /f UEFI
поможет скопировать загрузочные файлы в EFI-раздел.
-
-
Изменение букв разделов в реестре:
Восстановление правильных букв дисков в реестре может быть важным шагом. Для этого:
- Загрузитесь в систему в безопасном режиме с помощью
msconfig
, или измените настройки загрузки через реестр. - Откройте Regedit и перейдите в
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
. - Измените буквы таким образом, чтобы клонированная система использовала те же буквы, что и оригинал.
- Загрузитесь в систему в безопасном режиме с помощью
-
Обнаружение и исправление ошибок с помощью безопасного режима:
Если безопасный режим позволяет войти, обратите внимание на ошибки в Event Viewer, особенно на ошибки DCOM, которые могут указывать на конфликты и неверно настроенные службы.
Превентивные меры и рекомендации
- Создание резервных копий: Оформите резервные копии всех критически важных данных, включая записи BCD и системный реестр, прежде чем предпринимать какие-либо изменения.
- Тестирование на отдельном диске: При возможности тестируйте клонированные системы на отдельном физическом диске, чтобы избежать путаницы и конфликтов.
- Проверяйте наличие обновлений: Регулярно обновляйте вашу систему и используйте точку восстановления до начала процедур клонирования в случае, если что-то пойдет не так.
Заключение
Клонирование Windows на тот же диск сопряжено с определенными рисками, такими как ошибки конфигурации загрузчика и путаница в реестре. Это требует внимательного подхода и точного следования процедурам для корректировки параметров загрузки и реестра. Если вы следовали данным шагам, клонированная система должна загрузиться успешно. В последующих ситуациях, возможно, стоит рассмотреть специализированные программы для клонирования, которые могут автоматизировать часть этих процессов.