Более года назад, я писал о том, как имея 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
- Доходим до пункта выбора диска
- Останавливаемся
Шаг 2. Запускаем консоль
Нажимаем Shift + F10. Откроется обычная консоль cmd (потом между нею и основным окном установщиком можно переключиться обычным Ctrl + Tab)
Шаг 3. Разметка физического диска
- запускаем утилиту Diskpart
- просматриваем список доступных физических дисков
list disk
- выбираем нужный диск (в моем случае с номером 0)
select disk 0
- создаем на диске primary раздел
create partition primary
- форматируем его (можно использовать быстрый режим)
format quick
- и назначаем букву (например, T)
assign letter=T
А если переключиться на окно основного установщика (Ctrl + Tab) и нажать Refresh, то мы увидим:
Шаг 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
В консоли это будет выглядеть примерно так:
Шаг 5. Выбор виртуального диска в качестве целевого для установщика и запуск установки
- переключаемся на главное окно установщика
- нажимаем Refresh
- выбираем только что подключенный диск (на надпись Windows can’t be installed on this drive не обращаем внимания)
- нажимаем Next
Собственно, дальше идет обычная установка и настройка системы. В конце как обычно предложат перезагрузиться, в этот момент уже можно достать установочный диск.
Еще несколько моментов, о которых стоит помнить:
- все загрузочные файлы (т.е. папка \boot) лежат на физическом диске, там же лежит файл подкачки, а сам каталог Windows, Program Files, … – на виртуальном.
- мы создали виртуальный диск как expandable, и поэтому в “неактивном состоянии”, он занимает на физическом диске ровно столько места – сколько есть на нем данных (ну или около того). Однако в момент, когда вы будете с этого диска загружаться, система зарезервирует на диске, где лежит виртуальный файл, место под расширение диска до максимального размера.
В этом смысле, возможно диск типа fixed был бы предпочтительнее. В том числе из-за соображений меньшей фрагментации в процессе работы.
P.S. Кстати, сам эксперимент проводился на виртуальной машине, работавшей, понятное дело с виртуальным диском (т.е. виртуальный диск лежал на виртуальном диске, …)
Доброго времени суток Михаил.
Спасибо за потраченное время,статья очень помогла.
Очень рад.
Если возникнут еще вопросы – заходите. Может ещё чем помогу.
Здравствуйте Михаил ,возник такой вопрос .
Можно ли по этой схеме установить 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. (Тоже, имхо, не самый вероятный сценарий).
Может быть я что-то и упускаю, но пока мне видится это маловероятным 😦
Михаил ,собственно (как мне кажется) нужно ранее созданный VHD фиксированный зааттачить (премонтировать через консоль unix) мне так кажется.
А после того ,в него установиться -выбрав его .На сколько это “реально” покажет опыт.
Неужели UNIX не умеет работать с VHD .
Кстати нашел за 2011 год тему про Ubuntu ,она правда не умеет работать с VHD 😦
Мой блог https://vk.com/club59200980?w=wall-59200980_178 иногда интересно и почитать.
Средства удаленного администрирования сервера для Windows 7 Hyper-V создаем VHD-ставим в него BSD.
в теории после монтирование должно работать ,только мне кажется нужно что б он не отваливался после монтирования при загрузке -проблема ли исправить?.
>> в теории после монтирование должно работать
Монтировать вы где будете? Под BSD? Она умеет работать с VHD вообще?
Под BSD.
Вот в том то и вопрос.
Я работаю над установкой BSD на VHD через Hyper-V в Windows 7
Буквально сегодня попробую дать ответ.
Установка не завершается в VHD вот уж не знаю по чему. После перезагрузки процесс повторяется (прося снова начать установку).
Не завершается установка чего? Windows 8?