[Из песочницы] Grub 2 + VHD: установка и загрузка ОС Windows 7 Ultimate

Введение Ни для кого уже не секрет, что начиная с версии Windows 7 Ultimate, операционные системы от Майкрософт умеют загружаться будучи установленными на образ жесткого диска формата VHD. Однако, данная возможность «из коробки» доступна только пользователям этой самой Windows 7 Ultimate.У меня же, убежденного пользователя Arch Linux, потребность в применении этой технологии возникла из-за необходимости иметь винду под рукой в дуалбуте и именно в реальном окружении. 90% процентов задач, для которых нужен Windows, разумеется решаются путем виртуализации, и мощности современного железа, и возможности виртуальных машин, позволяют даже в игры играть в виртуальной среде. Однако, возникла необходимость в использовании пакета «Универсальный механизм», который под вайном работает криво (допускаю и что руки у меня кривые)б, а в виртуальной среде, понятное дело, безбожно теряет прыть. В общем понадобилась Windows, но таскать разделы на винте и менять его разметку страшно не хотелось ради установки одной программы под винду.

Решение нашлось в реализации загрузки из VHD-образа с использованием загрузчика Grub2, ставшего стандартом де-факто во многих популярных дистрибутивах Linux. Об этом собственно и пойдет речь.

1. Подготовка почвы Для хранения образов нам таки потребуется NTFS-раздел, который может быть как первичным, так и логическим, и не обязательно активным. Его можно создать с помощью gparted, там же и отформатировав в NTFS. У меня на НDD была зарезервирована неразмеченная область для разного рода экспериментов с осями, её я и отдал под данный раздел069e32020d63b7ba4219db6e787a12f0.png

Далее делаем этот разле доступным для виртуальных машин VirtualBox

$ VBoxManage internalcommands createrawvmdk -filename ~/<Путь к файлу>/win7.vdmk -rawdisk /dev/<раздел> то есть создаем виртуальный диск в виде файла-ссылки на раздел реального HDD. Этот диск подключаем к виртуальной машине с Windows 7 Ultimate — она пригодится нам для решения поставленной задачи

2f0e65787859e45d566e3be4afc3e783.png

2. Создаем VHD-образ с системой Теперь надо создать VHD-образ HDD. Его придется создавать средствами, предоставляемыми Windows 7 Ultimate, ибо диски, создаваемые тем же VirtualBox вызывают последующий вывал загружаемой винды в BSOD.Загружаем вирутальную машину с виндой. Идем в панель Панель управления → Система и безопасность → Администрирование → Управление компьютером → Управление дисками. С правой стороны окна имеется меню, где мы выбираем создание виртуального диска

37d5ab4f954a082907fc350a924ecd1a.png

после чего указываем путь к нему и задаем его параметры

c4dbf983a3b92456d348245d14e42fca.png

Лучше всё же выбрать фиксированный размер образа — это будет работать быстрее.

Щелкаем ОК и пока идет процесс, выполним

3. Настройка загрузчика bootmgr Сам загрузчик bootmgr и каталог с его конфигом boot банально копируем с установочного DVD Windows 7 в корень раздела NTFS, туда же, где размещается папка с VHD-дисками.58502894999b691eaeb3ee443d67a712.png

Удаляем файл \boot\bcd, ибо этот контейнер хранит конфигурацию с загрузочного DVD, и создаем новый контейнер. Для этого используем крохотную утилитку bootice. Запускаем её, выбираем вкладку «BCD edit».

10905257fa68ab521e70c9d834ace478.png

Далее жмем «Create new BCD», выбираем путь по которому будет расположен файл конфигурации и создаем его с именем BCD. Далее выбираем этот файл и жмем «Easy mode» — запуск редактора в упрощенном режиме.

20270d0466a266f05a66804ea9455cf8.png

Файл конфигурации откроется в режиме редактирования, нажимаем кнопку «Add» и выбираем вариант «New VHD boot entry». Редактор сосздаст шаблон загрузочной записи и нам остается лишь вписать путь к нашему образу.

ead5bca47362236b04ad589ff093da8b.png

Путь к VHD-файлу от корня раздела с образами прописываем в поле «File». После этого жмем «Save current system» и выходим из программы.

Дожидаемся пока закончится процесс создания VHD-образа и покидаем виртуальную семерку.

4. Установка Windows 7 Ultimate на VHD-образ Выполнена средствами VirtualBox. Для этого: Смонтирован NTFS-раздел с образом в хост-системе Linux Создана виртуальная машина, причем в качестве образа диска выбран созданный нами образ Установлена винда, стандартно, без ухищрений Однако, надо сказать вот о чем. Мы помним, что наша система инсталирована в ВМ, а поэтому некоторые устройства определены на этапе установки и система подсунула для них соотвествующие драйвера. При запуске на Вашем реальном компьютере с вероятностью в 99% получится BSOD. Это связано с тем, что VirtualBox эмулирует контролер IDE следующим образом

4b5f812821e6ba04f25098772f429a35.png

и этот драйвер, работая в загружаемой системе конфликтует с реально установленным на мат. плате контроллером, при попытке системы прочесть файл образа с диска. Решается просто — выбираем «Обновить драйвер», говорим, что не надо искать, а мы сами укажем нужный драйвер и выберем «Стандартный двухканальный контролер IDE»

ba7d861500709251d1defd2446bb0f75.png

После этого выключаем нашу виртуальную машину и делаем её «реальной»

5. Настройка загрузчика Grub2 В конфиг Grub2 необходимо добавить загрузочную запись такого вида menuentry «Windows 7 Ultimate SP1″ { set root=«hd0, msdos5′ ntldr /bootmgr } где (hd0, msdos5) — NTFS-раздел, где размещены VHD-образы.

После этого можно перезагружаться и пробовать…

Заключение После загрузки устанавливаем драйвера на наше реальное железо и радуемся жизни: a2bfbae7b6e975728b9d72e322e2f18c.jpg

Изображенное на скринах — это полноценная ОС, работающая на реальном железе. Но они — всего лишь файлы на Вашем жестком диске. Эти файл могут быть скопированы, удалены, перемещены, архивированы и прочее. К тому же, такой метод решает извечную проблему конфликта Windows vs Linux на одном HDD. Теперь они мирно уживаются друг с другом и не портят друг другу жизнь.

© Habrahabr.ru