Сделать Windows загрузочной после копирования с одного раздела на другой

Сделать Windows загрузочной после копирования с одного раздела на другой

Я восстановил Windows7 с DVD-диска восстановления, который был в комплекте с моим ноутбуком. Восстановление переразбивает SSD-диск на заводские настройки, но я хотел бы это изменить. Точнее, после завершения восстановления разделы следующие:

root@ubuntu:~# fdisk -l /dev/sda

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200   27  Hidden NTFS WinRE
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

Комментарии:

  • /dev/sda2небольшой раздел, который имеет bootmgrи Boot.
  • На нем установлена ​​Windows7 /dev/sda3, на которой нет bootmgrэтого раздела.

Теперь я хотел бы скопировать Windows7 с /dev/sda3на /dev/sda1и сделать его загрузочным. Поскольку разделы имеют одинаковый размер, это очень просто в Linux:

root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096

После этого я изменил тип раздела:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

Затем я перезагрузился. Windows7 загружается из /dev/sda3(который становится C:) и /dev/sda1становится D:. Теперь я делаю копию Windows7 загрузочной (см.Переключение загрузочного диска Windows 7 с D на C с помощью BCDBootиМожно ли скопировать все файлы Windows 7 с одного жесткого диска на другой?):

C:\> bcdboot d:\windows /s d:
Boot files successfully created.

C:\> bootsect /nt60 d: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
F: (\\?\Volume{b6e65e71-6179-11e5-82c7-806e6f6e6963})
Successfully updated NTFS filesystem bootcode.
\??\PhysicalDrive0
Successfully updated disk bootcode.
Bootcode was successfully updated on all targeted volumes.

Двойная проверка:

C:\> bcdedit

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {0b9ac060-6182-11e5-b742-8dbb81fd6d74}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
nx                      OptIn

C:\> bcdedit /store D:\Boot\BCD

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=D:
description             Windows Boot Manager
locale                  en-us
inherit                 {globalsettings}
default                 {default}
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {default}
device                  partition=D:
path                    \windows\system32\winload.exe
description             Windows 7
locale                  en-us
inherit                 {bootloadersettings}
osdevice                partition=D:
systemroot              \windows
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
nx                      OptIn
detecthal               Yes

После того, как я загрузил Linux и пометил раздел как загрузочный (это можно сделать и в Windows, но я использую знакомые мне инструменты):

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2       419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200   27  Hidden NTFS WinRE

Содержимое /dev/sda1следующее (перепроверьте еще раз):

root@ubuntu:~# ls -l /mnt/sda1
total 10749077
drwxrwxrwx 1 root root       4096 Sep 25 06:11 Boot
-rwxrwxrwx 1 root root     383786 Nov 20  2010 bootmgr
drwxrwxrwx 1 root root          0 Sep 23 21:50 Config.Msi
lrwxrwxrwx 2 root root         60 Jul 14  2009 Documents and Settings -> /mnt/sda1/Users
-rwxrwxrwx 1 root root 4717092864 Sep 23 21:50 hiberfil.sys
-rwxrwxrwx 1 root root 6289461248 Sep 23 21:50 pagefile.sys
drwxrwxrwx 1 root root          0 Jul 14  2009 PerfLogs
drwxrwxrwx 1 root root       4096 Sep 23 20:35 ProgramData
drwxrwxrwx 1 root root       8192 Sep 23 21:26 Program Files
drwxrwxrwx 1 root root      12288 Sep 23 21:12 Program Files (x86)
drwxrwxrwx 1 root root       4096 Sep 22 22:00 $Recycle.Bin
drwxrwxrwx 1 root root      20480 Sep 23 21:50 System Volume Information
drwxrwxrwx 1 root root       4096 Sep 23 21:05 Temp
drwxrwxrwx 1 root root          0 Sep 23 21:50 Update
drwxrwxrwx 1 root root       4096 Sep 22 21:58 Users
-rwxrwxrwx 1 root root       4112 Jul 19  2011 version
drwxrwxrwx 1 root root      24576 Sep 23 21:02 Windows

Выглядит хорошо. К сожалению, когда я загружаюсь, я получаюBootmgr is missing. Press Ctrl+Alt+Del to restart.

Я установил Grub /dev/sda1(перезаписывает загрузчик по умолчанию):

grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1

со следующим /mnt/sda1/Boot/grub/grub.cfg:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/bootmgr
}

Grub правильно передал управление bootmgr, но он упорно загружается с /dev/sda3. Когда я удаляю раздел/dev/sda3 ,начальный загрузочный экранотображается, но затем ничего не происходит (загрузка просто зависает).

Далее я установил ntldr( /dev/sda1скопировал NTDETECT.COM,NTLDR из64ntfile.zip) с «родным» загрузочным сектором:

C:\> bootsect /nt52 d:

и это boot.ini:

[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows 7 (boot.ini)" /fastdetect

После загрузки выдает "Произошла ошибка чтения диска". Конечно, SSD-накопитель вряд ли выйдет из строя таким образом, поэтому я думаю, что проблема в загрузочном байт-коде/логике, которая не может правильно обрабатывать адресацию/разметку диска. Я установил Grub (как указано выше) с такой конфигурацией:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/ntldr
}

и затем я мог видеть свое меню, как boot.iniуказано выше. Когда я продолжаю, компьютер перезагружается без каких-либо сообщений об ошибках (так что я вошел в колею).

Как исправить проблему? Любое решение по загрузке Windows с 1-го раздела приветствуется.

Другие публикации по теме, которые я просмотрел:

PS: Во время тестирования к ноутбуку не подключались никакие другие диски или USB-накопители.

решение1

После копирования sda3 в sda1 в реестре Windows на sda1 все еще есть некоторые "указатели", указывающие на sda3. Проверьте содержимое HKLM\SYSTEM\MountedDevices\DosDevices\C: и D:, указывают ли они на правильный раздел. (Значение \DosDevices\C: — это подпись раздела — должна быть подпись для sda1)

Чтобы создать загрузочные файлы для sda1: (при загрузке с sda3, сопоставленного с c:, sda1, сопоставленного с d:)

  1. bootsect /nt60 d: /mbr - для установки загрузочного кода раздела sda1 (не помешает записать загрузочный код Windows в MBR)

  2. bcdboot d:\windows /sd: - для создания BCD на sda1

Вам не нужно редактировать существующие системные BCD на sda2 и BCD на sda1!!!

Наконец, измените активный раздел на sda1.

Перезагрузить.

ВидетьКак переместить загрузочные файлы Windows 7 на другой диск/разделдля помощи.

решение2

Я описал некоторые шаги, которые я предпринял для решения этой проблемы, и они сработали для меня, поэтому я надеюсь, что они помогут и будущим читателям, и, возможно, даже автору поста, хотя прошло уже много времени.


Процедура, которую я использовал для переноса Windows 7 с одного раздела на меньшем и медленном жестком диске на более быстрый раздел жесткого диска в Dell OptiPlex 780 MT

  1. Получите USB-флеш-накопитель(и)
    • рекомендуется 32 ГБ+
    • Я использовал Amazon Smiles, чтобы он мог генерировать пожертвования на благотворительность, пока я делаю покупки
  2. Создайте системный диск восстановления на одном из загрузочных USB-накопителей.
    • Он стал ОГРОМНЫМ с тех пор, как я им последний раз пользовался, требуя более 16 ГБ
    • Следуйте инструкциям SysResc CD из Windows с помощью Rufus
  3. Уменьшите тома до минимальных размеров, оставив около 40 ГБ свободного места на разделах ОС.
    • Цель состоит в том, чтобы иметь достаточно нераспределенного пространства на новом жестком диске, чтобы оно соответствовало или превышало размер исходного раздела Windows 7.
    • Резервное копирование/перемещение данных из разделов на USB-флеш-накопитель или другой внешний диск
    • Запустить очистку диска и дефрагментацию
    • DiskMgmt.MSC в W7 теперь можно использовать для расширения/сжатия томов
  4. Загрузитесь с компакт-диска восстановления системы
    • Предостережение: если у вас есть системный и администраторский пароли BIOS, которые используют заглавные буквы, то System Rescue CD будет думать, что вы пытаетесь выполнить индивидуальную загрузку. Он оставит вас в режиме LILO Boot: без каких-либо инструкций, справки, команд и т. д. для загрузки. Я очистил системный пароль BIOS, чтобы он попал в меню загрузки по умолчанию
    • После успешной загрузки запустите, startxчтобы войти в графический интерфейс.
      • Запустить GPartEd
        • Перейдите на старый, более медленный диск с текущей установкой Windows 7 и скопируйте раздел Windows.
        • Перейдите на новый более быстрый диск с нераспределенным пространством и вставьте скопированный раздел.
        • Операция может занять несколько минут в зависимости от вашего оборудования, но будет отображаться индикатор выполнения.
        • Отметьте скопированный раздел Windows 7 как активный.
      • Перейдите в окно терминала/командной строки.
        • Запустите testdiskи создайте/сбросьте загрузочный сектор нового раздела Windows 7 (не знаю, необходим ли этот шаг, но я просто так сделал)
          • Google Использование testdisk для восстановления загрузочного сектора на разделе
        • Создайте папки /mnt/Dell и /mnt/Win7, используяmkdir
          • Они исчезнут при следующей загрузке с компакт-диска/USB-накопителя System Rescue.
        • Смонтируйте старый раздел Dell Recovery в /mnt/Dell с помощью mountкоманды
          • mount /dev/hdb1 /mnt/Dell
        • Смонтируйте новый раздел Windows 7 в /mnt/Win7
          • mount /dev/hda4 /mnt/Win7
        • Скопируйте файлы загрузчика Windows в новый раздел Windows 7.
          • Создайте папку /mnt/Win7/Boot, используяmkdir
          • Скопируйте /mnt/Dell/bootmgr в /mnt/Win7/ с помощью cpкоманды
          • cp /mnt/Dell/boot.sdi /mnt/Win7/
          • cp /mnt/Dell/Boot/BCD /mnt/Win7/Boot/
          • Вы также можете скопировать файл /Boot/BCD.LOG, но не уверен, что это необходимо.
          • Имейте в виду, что эта конфигурация загрузки по-прежнему указывает на старые загрузочные и системные разделы Windows 7. Ее нужно будет отредактировать, чтобы она указывала на новые загрузочные и системные разделы Windows 7 (в моем случае те же самые)
  5. Загрузитесь в BIOS
    • Измените загрузочное устройство со старого диска на новый.
    • В качестве альтернативы вы можете использовать меню загрузки. Загрузитесь с нового раздела Windows 7 успешно.
  6. Загрузите Windows 7
    • Поскольку он указывает на старые загрузочный и системный разделы, он по-прежнему работает со старым жестким диском.
    • Диск C: — это старая система.
    • Откройте командную строку Cmd от имени администратора.
      • Запустить DiskMgmt.MSC
        • Присвойте новому разделу Windows 7 букву диска, если она ему еще не назначена (в моем случае — G:).
      • Перейдите в каталог G:\Boot.
        • G:
        • cd Boot
      • Покажите конфигурацию загрузки на новом разделе, используяbcedit /store BCD
        • Запишите текущий старый загрузочный GUID (в моем случае {d57db94d-450e-11e5-a383-b8ac6f1ac098})
      • Отредактируйте новую скопированную конфигурацию загрузки, чтобы добавить новый раздел Windows 7.
        • СсылкаДобавление загрузочных записей
        • bcdedit /store /copy {d57db94d-450e-11e5-a383-b8ac6f1ac098} /d "Win7 Debug"
          • Новый GUID раздела W7 теперь {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
        • bcdedit /store BCD /enum /v(Чтобы просмотреть GUID для справки)
        • СсылкаКак перенести загрузочные файлы Windows 7 bootmgr на другой диск(Большая благодарность red.october за публикацию своего вопроса и ответа на этом сайте!)
        • bcdedit /store BCD /set {bootmgr} device partition=G:
        • Дополнительные шаги в моем случае
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} device partition=G:
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} osdevice partition=G:
          • bcdedit /store BCD /displayorder {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} {d57db94d-450e-11e5-a383-b8ac6f1ac098}
          • При желании можно сделать новый загрузочный раздел разделом по умолчанию.
            • bcdedit /default {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
  7. Перезагрузитесь с помощью System Rescue CD/USB
    • Используйте GPartEd, чтобы пометить старый раздел Windows 7 как Скрытый
    • Снимите флажок загрузки на старом разделе Dell System Recovery.
  8. Перезагрузите Windows 7 на новом диске.

Если вы не допустили ошибок и не столкнулись ни с какими трудностями или ошибками при выполнении любого из шагов, то вы, как и я, успешно перенесли и раздел Windows 7, и менеджер загрузки Windows 7 с одного раздела на исходном жестком диске на новый раздел на другом жестком диске, не используя диск восстановления Windows 7 (который OEM-реселлеры не выдают вместе с ПК) и не используя сомнительные сторонние приложения. Приятным сюрпризом является то, что если у вас были какие-либо файлы или папки, зашифрованные EFS до миграции, то они по-прежнему будут доступны на новом разделе без необходимости предварительной расшифровки. DiskMgmt.MSC теперь отображает новый раздел Windows 7 как C:, а старый раздел Windows 7 без буквы диска.

После загрузки на новый раздел Windows 7, полностью независимый от исходного жесткого диска, вы можете изучить, как очистить загрузчик на этом разделе, чтобы указать все на него, а не на старый раздел Windows 7. Если у вас есть раздел Windows XP на новом диске, как у меня, то вы можете добавить запись для его загрузки с помощью bcdedit. После того, как вы убедитесь, что все стабильно, вы можете стереть старый раздел и использовать его для других целей. Я искренне надеюсь, что это поможет кому-то еще в достижении подобных целей.


Управление дисками W7 после миграции:

Управление дисками W7 после миграции

Связанный контент