[Из песочницы] 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 была зарезервирована неразмеченная область для разного рода экспериментов с осями, её я и отдал под данный раздел
Далее делаем этот разле доступным для виртуальных машин VirtualBox
$ VBoxManage internalcommands createrawvmdk -filename ~/<Путь к файлу>/win7.vdmk -rawdisk /dev/<раздел> то есть создаем виртуальный диск в виде файла-ссылки на раздел реального HDD. Этот диск подключаем к виртуальной машине с Windows 7 Ultimate — она пригодится нам для решения поставленной задачи
2. Создаем VHD-образ с системой Теперь надо создать VHD-образ HDD. Его придется создавать средствами, предоставляемыми Windows 7 Ultimate, ибо диски, создаваемые тем же VirtualBox вызывают последующий вывал загружаемой винды в BSOD.Загружаем вирутальную машину с виндой. Идем в панель Панель управления → Система и безопасность → Администрирование → Управление компьютером → Управление дисками. С правой стороны окна имеется меню, где мы выбираем создание виртуального диска
после чего указываем путь к нему и задаем его параметры
Лучше всё же выбрать фиксированный размер образа — это будет работать быстрее.
Щелкаем ОК и пока идет процесс, выполним
3. Настройка загрузчика bootmgr Сам загрузчик bootmgr и каталог с его конфигом boot банально копируем с установочного DVD Windows 7 в корень раздела NTFS, туда же, где размещается папка с VHD-дисками.
Удаляем файл \boot\bcd, ибо этот контейнер хранит конфигурацию с загрузочного DVD, и создаем новый контейнер. Для этого используем крохотную утилитку bootice. Запускаем её, выбираем вкладку «BCD edit».
Далее жмем «Create new BCD», выбираем путь по которому будет расположен файл конфигурации и создаем его с именем BCD. Далее выбираем этот файл и жмем «Easy mode» — запуск редактора в упрощенном режиме.
Файл конфигурации откроется в режиме редактирования, нажимаем кнопку «Add» и выбираем вариант «New VHD boot entry». Редактор сосздаст шаблон загрузочной записи и нам остается лишь вписать путь к нашему образу.
Путь к VHD-файлу от корня раздела с образами прописываем в поле «File». После этого жмем «Save current system» и выходим из программы.
Дожидаемся пока закончится процесс создания VHD-образа и покидаем виртуальную семерку.
4. Установка Windows 7 Ultimate на VHD-образ Выполнена средствами VirtualBox. Для этого: Смонтирован NTFS-раздел с образом в хост-системе Linux Создана виртуальная машина, причем в качестве образа диска выбран созданный нами образ Установлена винда, стандартно, без ухищрений Однако, надо сказать вот о чем. Мы помним, что наша система инсталирована в ВМ, а поэтому некоторые устройства определены на этапе установки и система подсунула для них соотвествующие драйвера. При запуске на Вашем реальном компьютере с вероятностью в 99% получится BSOD. Это связано с тем, что VirtualBox эмулирует контролер IDE следующим образом
и этот драйвер, работая в загружаемой системе конфликтует с реально установленным на мат. плате контроллером, при попытке системы прочесть файл образа с диска. Решается просто — выбираем «Обновить драйвер», говорим, что не надо искать, а мы сами укажем нужный драйвер и выберем «Стандартный двухканальный контролер IDE»
После этого выключаем нашу виртуальную машину и делаем её «реальной»
5. Настройка загрузчика Grub2 В конфиг Grub2 необходимо добавить загрузочную запись такого вида menuentry «Windows 7 Ultimate SP1″ { set root=«hd0, msdos5′ ntldr /bootmgr } где (hd0, msdos5) — NTFS-раздел, где размещены VHD-образы.
После этого можно перезагружаться и пробовать…
Заключение После загрузки устанавливаем драйвера на наше реальное железо и радуемся жизни:
Изображенное на скринах — это полноценная ОС, работающая на реальном железе. Но они — всего лишь файлы на Вашем жестком диске. Эти файл могут быть скопированы, удалены, перемещены, архивированы и прочее. К тому же, такой метод решает извечную проблему конфликта Windows vs Linux на одном HDD. Теперь они мирно уживаются друг с другом и не портят друг другу жизнь.