понедельник, 26 декабря 2016 г.

[VHD] Делаем запуск чистой системы с VHD-образа Windows

Я не буду подробно рассказывать, как создать VHD-образ (или VHDX-образ) системы. Лично я "поднимаю виртуалку" на сервере Hyper-V, накатываю на нее обновления, устанавливаю нужный софт, делаю необходимые настройки и запускаю Sysprep.

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

Итак, чистая система, один физический жесткий диск.

1. Копируем на флэшку VHD-образ и загружаемся с любого загрузочного диска Windows/WinPE.
2. Открываем командную строку (Shift+F10) и вводим последовательно команды:

diskpart
  select disk 0
  clean
  create partition primary
  active
  format fs=ntfs label=HDD quick
  assign letter=K
  exit

copy /y /z E:\Win81.vhdx K:\Win81.vhdx
diskpart
  select vdisk file=K:\Win81.vhdx
  attach vdisk
  select partition 1 (2, если у вас образ со скрытым разделом загрузки)
  assign letter=L
  exit
bcdboot L:\Windows /s K:\
wpeutil reboot

Теперь по порядку: что же произошло?

1. Первый блок команд diskpart создал на нашем диске единственный загрузочный раздел для нашей системы (можно также создать скрытый раздел для файлов загрузки) и назначил метку K: логическому диску.
2. Копирование VHD-образа на вновь созданный логический диск.
3. Второй блок команд diskpart монтирует VHD-образ и назначает метку L: виртуальному тому.
4. Копирование загрузочных файлов с помощью утилиты bcdboot с виртуального тома L: на логический загрузочный диск K:.
5. Перезагрузка установщика Windows/WinPE.

Блоки diskpart можно оформить в файлы сценариев (создать текстовый файл с блоками командам) и запускать с помощью diskpart /s script_name.

Таким образом, можно автоматизировать процесс, что я и сделал, написав простейший bat-файл:

diskpart /s win81_1.txt
copy /y /z E:\Win81.vhdx K:\Win81.vhdx
diskpart /s win81_2.txt
bcdboot L:\Windows /s K:\
wpeutil reboot

где win81_1.txt и win81_2.txt - сценарии diskpart 

P.S. В процессе установки я столкнулся с ошибкой VHD_BOOT_HOST_VOLUME_NOT_ENOUGH_SPACE, возникающей тогда, когда на физическом диске (разделе) меньше пространства, чем раздел виртуального образа VHD. Для решения нужно уменьшить (shrink) размер VHD-образа в Hyper-V Manager или сторонних утилитах. Учтите, вы не сможете этого сделать, если размер раздела установленной системы в VHD-образе превышает раздел физического жесткого диска. Т.е. нужно:
1. подмонтировать VHD-образ
2. открыть оснастку Управление дисками (diskmgmt.msc)
3. проверить размер раздела, при необходимости сжать
4. отмонтировать VHD-образ
5. открыть Hyper-V Manager и сделать уменьшение диска

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

Отправить комментарий