Установка Windows 8 на VHD-диск на “пустом” компьютере

imageБолее года назад, я писал о том, как имея VHD с установленной Windows 8 (например, если этот диск был создан под виртуальной машиной – тем же Hyper-V), настроить загрузку с него.

К той записи набралось уже несколько комментариев. В одном из последних Сергей поинтересовался как можно настроить загрузку только с виртуальных дисков. Т.е.

иметь жесткий диск с разделами, на которых не будет установлено никакой ОС, а будут только лежать VHD-диски, с которых и будет происходить загрузка.

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

Сразу же предупрежу, для тех, кто читал статью Скотта Хансельмана Guide to Installing and Booting Windows 8 Developer Preview off a VHD (Virtual Hard Disk) я не расскажу ничего принципиально нового. Ну разве что он ставил вторую ОС в дополнение к уже имеющейся и потому часть операций делал из-под уже установленной системы (ну и сама первая система у него уже стояла на физическом диске).

Итак, исходные данные (что нам понадобится):

  • чистый компьютер, без установленных систем
  • загрузочный диск Windows 8.1 (в теории, можно использовать так же загрузку с Flash. В приведенной выше статье Скотта, для создания загрузочной флэшки из загрузочного ISO используется утилита Windows 7 USB/DVD Download Tool, но я лично ею не пользовался сам)

Шаг 1. Загружаемся с установочного диска (flash)

  • Запускаем установку.
  • Выбираем вариант Install Windows only

image

  • Доходим до пункта выбора диска

image

  • Останавливаемся

Шаг 2. Запускаем консоль

Нажимаем Shift + F10. Откроется обычная консоль cmd (потом между нею и основным окном установщиком можно переключиться обычным Ctrl + Tab)

image

Шаг 3. Разметка физического диска

  • запускаем утилиту Diskpart
  • просматриваем список доступных физических дисков
list disk
image
  • выбираем нужный диск (в моем случае с номером 0)
select disk 0

 

  • создаем на диске primary раздел
create partition primary

 

  • форматируем его (можно использовать быстрый режим)
format quick

 

  • и назначаем букву (например, T)
assign letter=T
В результате мы увидим в консоли приблизительно следующее:
image

А если переключиться на окно основного установщика (Ctrl + Tab) и нажать Refresh, то мы увидим:

image

Шаг 4. Создание и подключение виртуального диска

Возвращаемся в консоль (тоже Ctrl + Tab) – утилита diskpart все еще запущена.

  • создаем виртуальный диск (для простоты будем создавать прямо в корне диска T:, который мы создали на предыдущем шаге). В качестве параметров укажем размер – 60 Gb и тип – expandable
create vdisk file="T:\win_81.vhd" maximum=60000 type=expandable

 

  • выберем этот диск
select vdisk file="T:\win_81.vhd"

 

  • и подключим его
attach vdisk

 

В консоли это будет выглядеть примерно так:

image

Шаг 5. Выбор виртуального диска в качестве целевого для установщика и запуск установки

  • переключаемся на главное окно установщика
  • нажимаем Refresh
  • выбираем только что подключенный диск (на надпись Windows can’t be installed on this drive не обращаем внимания)

image

  • нажимаем Next

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

Еще несколько моментов, о которых стоит помнить:

  • все загрузочные файлы (т.е. папка \boot) лежат на физическом диске, там же лежит файл подкачки, а сам каталог Windows, Program Files, … – на виртуальном.
  • мы создали виртуальный диск как expandable, и поэтому в “неактивном состоянии”, он занимает на физическом диске ровно столько места – сколько есть на нем данных (ну или около того). Однако в момент, когда вы будете с этого диска загружаться, система зарезервирует на диске, где лежит виртуальный файл, место под расширение диска до максимального размера.

В этом смысле, возможно диск типа fixed был бы предпочтительнее. В том числе из-за соображений меньшей фрагментации в процессе работы.

P.S. Кстати, сам эксперимент проводился на виртуальной машине, работавшей, понятное дело с виртуальным диском (т.е. виртуальный диск лежал на виртуальном диске, …)

This entry was posted in Разработка ПО and tagged , , . Bookmark the permalink.

11 Responses to Установка Windows 8 на VHD-диск на “пустом” компьютере

  1. Сергей says:

    Доброго времени суток Михаил.
    Спасибо за потраченное время,статья очень помогла.

  2. RoyalSaleGold says:

    Здравствуйте Михаил ,возник такой вопрос .
    Можно ли по этой схеме установить BSD на VHD который создан с помощью вышеописанной схемы. Например :создаем с помощью схемы VHD он обнаружился и подключен .Далее изымаем диск или USB носитель с Windows и вставляем BSD.iso или BSD.usb образ ,грузимся ,по идее диск VHD мы должны увидеть в примонтированных или его придется смонтировать самому,(если до то нужно знать его имя!.)и команду для монтирования .Далее следует установка .
    Попробуем разобраться ?…

    • Добрый день
      Под BSD вы имеете в виду ОС (http://en.wikipedia.org/wiki/Berkeley_Software_Distribution)?

      Увы, тут я ничего подсказать не могу, но из общих соображений – основной камень преткновения, это поддержка VHD/VHDX в той ОС, которую хотите загружать. Причем поддержка должна быть именно в загрузчике!

      Т.е. схема загрузки с VHD такая (очень упрощенно):
      – компьютер стартует, отрабатывает стартовая процедура BIOS, которая находит на диске код загрузчика Windows (на самом деле он может быть не обязательно на диске, но для нас это не существенно).
      – загрузчик перечитывает таблицу конфигураций, находит там запись о разделе с которого нужно грузиться,
      – выясняет, что это VHD, подключает его и считывает образ ядра, стартовые драйверы, …
      – после этого инициализирует ядро.

      (Более подробно все описано в книге Русиновича)

      Так вот, в этой схеме получается, что
      1. Либо загрузчик Windows должен уметь стартовать ядро другой ОС (что сомнительно – даже загрузчик 7-ки не смог запустить 8-ку из-за чего пришлось делать то шаманство, которое описано в предыдущей статье)
      2. Либо загрузчик Windows должен быть заменен на загрузчик той ОС, что лежит на VHD, но тогда тот загрузчик должен уметь читать VHD, а за одно и ту ФС на которой лежит VHD. (Тоже, имхо, не самый вероятный сценарий).

      Может быть я что-то и упускаю, но пока мне видится это маловероятным 😦

  3. RoyalSaleGold says:

    Михаил ,собственно (как мне кажется) нужно ранее созданный VHD фиксированный зааттачить (премонтировать через консоль unix) мне так кажется.
    А после того ,в него установиться -выбрав его .На сколько это “реально” покажет опыт.
    Неужели UNIX не умеет работать с VHD .

  4. RoyalSaleGold says:

    Кстати нашел за 2011 год тему про Ubuntu ,она правда не умеет работать с VHD 😦

  5. RoyalSaleGold says:

    Мой блог https://vk.com/club59200980?w=wall-59200980_178 иногда интересно и почитать.
    Средства удаленного администрирования сервера для Windows 7 Hyper-V создаем VHD-ставим в него BSD.
    в теории после монтирование должно работать ,только мне кажется нужно что б он не отваливался после монтирования при загрузке -проблема ли исправить?.

    • >> в теории после монтирование должно работать
      Монтировать вы где будете? Под BSD? Она умеет работать с VHD вообще?

  6. RoyalSaleGold says:

    Под BSD.
    Вот в том то и вопрос.
    Я работаю над установкой BSD на VHD через Hyper-V в Windows 7
    Буквально сегодня попробую дать ответ.

  7. RoyalSaleGold says:

    Установка не завершается в VHD вот уж не знаю по чему. После перезагрузки процесс повторяется (прося снова начать установку).

Leave a reply to Михаил Романов Cancel reply