Как запустить установленную копию Windows в виртуальной машине не теряя возможности загружать ее физически?
Я хотел бы подчеркнуть, что в задаче присутствует термин физически установленную. Виртуалку установить может любой дурак, как и конвертировать физически установленную ОС в виртуальную машину. Моя же задача, чтобы одна и та же Windows могла одновременно грузиться как native, так и виртуально. А потом мы еще и усложним задачу – заставим на одном компьютере работать две копии Windows одновременно? Зачем всё это надо я расскажу в конце видео, а пока хотелось бы сказать, что несмотря на утверждения на некоторых форумах что запуск одной и той же копии Windows физически и в виртуалке невозможен, данное видео призвано доказать что это возможно. Инструкция рассчитана на продвинутых пользователей, которые умеют создавать разделы, форматировать диски, работать с загрузочными секторами. Лично я считаю что это должен уметь делать любой пользователь компьютера, и не собираюсь по полчаса разжевывать как же именно создать раздел на диске. Итак, поехали. Для начала нам конечно же нужен компьютер с процессором, поддерживающим виртуализацию – то есть практически любой современный процессор. Кроме того эту самую виртуализацию надо включить в BIOS. Местонахождение настройки может быть самым разным – на Lenovo она здесь, на ноуте Asus здесь, а на десктопе с пафосным UEFI биосом – здесь. У меня на компьютере, на MBR диск установлена Windows 7. Я хочу чтобы иметь возможность загружаться в нее обычным способом, и загружать ее же в виртуальной машине. Первый кандидат для этого – конечно же Linux. Это мой ответ на вопрос, зачем же мне Линукс. Под Linux есть три основных инструмента виртуализации – это XEN, VirtualBox и KVM. Самый интересный это – XEN очень мощный и удобный инструмент, но к сожалению заточен под работу с *Nix системами, и c Windows работает плохо. Второй кандидат – VirtualBox. VirtualBox как раз с Windows работает отлично, а вот с *nix не очень. В документации к VirtualBox есть пункт, где рассказывается как сделать псевдо-виртуальный диск, который на самом деле считывает данные с физического раздела, а не из виртуального контейнера. Следуя этим инструкциям, создаете такой псевдо-диск и и конфигурируете виртуальную машину. Подробно рассказывать не буду, скажу лишь что у меня получилось загрузившись с внешнего диска в Ubuntu, запустить под ней в VirtaulBox физически установленную на внутреннем жестком диске Win7. Под KVM мне также удалось запустить физическую копию Windows в виртуальной машине, так как загрузку виртуалок с физических дисков она поддерживает без всяких трюков. Поэтому я решил усложнить задачу – установить на один и тот же внутренний жесткий диск две копии Windows, каждую из которых можно было бы загрузить физически по отдельности, либо же загрузить одну в другой – то есть первую загружаем физически, в ней поднимаем виртуальную машину и загружаем вторую, или наоборот. Таким образом можно получить на одном компьютере сразу две одновременно работающих копии Windows. К сожалению, VirtualBox для этого не подходит. Несмотря на все ухищрения, загрузка физической копии Windows из-под Windows в ней повисает. А KVM под Windows нет. Поэтому обращаемся к гиганту – VMware Workstation. Как и KVM, VMware также поддерживает загрузку с физических дисков. Для своих задач я на этом самом диске выделил еще один раздел, отформатировал его в NTFS, создал там файл виртуального диска VHD, установил на этот виртуальный диск еще одну копию Windows, прописал ее в BCD store и загрузился в нее. К виртуализации это не имеет никакого отношения – виндуз загружается нативно, просто из виртуального диска, с которым лично мне гораздо проще работать. Подробнее об этом можно почитать, погуглив Windows VHD boot. То есть и первая на диске C:, и вторая на диске D: инсталляции Windows находятся на одном и том же жестком диске и используют один и тот же бутсектор и один и тот же бутлоадер. Если теперь запустить VMware под второй системой и попробовать оттуда загрузить первую, то VMware ругнется что физический диск уже используется и грузится с него откажется.
The physical disk is already in use.
Cannot open the disk or one of the snapshot disks it depends on.
Module DiskEarly power on failed.
Failed to start the virtual machine.
Причем проблема повторяется, даже если полностью отключить раздел с первым Windows в диспетчере дисков, отобрав у него букву. Я долго бился с этой проблемой, и мне кажется именно в нее упёрлись отрицатели с форумов, которые утверждают что так работать ничего не будет. Мне удалось победить проблему. Сама проблема очень проста – второй Windows и первый используют один и тот же раздел с бутсектором. Я решил не мучиться, и просто взял установочный образ Windows 7, вычистил оттуда все что не относится к загрузчику, и прописал в BCD store местонахождение Windows на диске C: и заново собрал образ. В итоге получился ISO файл размером всего 2 мегабайта, который я подключил к виртуальной машине как CD-диск и выбрал загрузку с него. Проблема решилась. Теперь виртуальная машина грузит бутсектор из этого образа, после чего начинает грузить физическую копию Windows с диска C: Если у вас возникают какие-то ошибки, не забудьте отключить диск с первой Windows во второй. То есть если допустим вы грузите Windows с диска D: то надо в Disk Management вообще убрать диск C:. Если система на D: грузится из виртуального VHD то возможно понадобится еще и перенастроить место хранения swap файла подкачки в реестре и в настройках. Также рекомендую вам использовать MBR разделы, с ними виртуалки работают. А вот о EFI в мире виртуализации пока практически не слышали. Если все сделали правильно, то обе системы можно будет загружать одновременно. Что касается лицензирования, то у Microsoft на эту тему как-то очень мутно написано – вроде бы допускается использование той же лицензии при конвертировании физической Windows в виртуалку, но для каждой виртуалки должна быть куплена своя лицензия. И ничего не сказано про случай, когда ты прыгаешь с виртуалки на физическую и обратно, используя одну и ту же лицензию. Но в моем случае VMware справилась с этой задачей, и за полгода никаких проблем с лицензией не было. Одна и та же копия использует одну и ту же лицензию. Видимо, самое главное не запускать одновременно и виртуальную и физическую машину с одной лицензией, а вот поочередно можно. Так зачем же всё это нужно? Ну во-первых, это очень удобно. Слева у меня рабочая машина под виртуалкой, справа личная запущенная физически, но при этом одна мышка и клавиатура, не надо использовать KVM-переключатель и даже копи-паст работает. Когда я ухожу с работы, я перезагружаю компьютер и левая машина загружается физически. Это выход, если на работе или на учебе у вас все ограничено, и хочется свободы, но при этом иметь возможность мониторить что там происходит на рабочем компьютере. Можно конечно купить себе ноутбук, но в этом случае все коллеги буду знать когда и сколько вы работаете, а сколько рабочего времени тупите в личный ноут. А так у вас допустим на одном мониторе рабочая ОС, которая сидит в домене с отключенным USB, отслеживаемым интернетом и прочими радостями параноиков, а справа у вас своя ОС, где вы хозяин и можете делать все что угодно, например подключать 4g модем для доступа в интернет без ограничений. Но я хочу предупредить, что всё это очень легко вычисляется, причем не покидая кресла – достаточно удаленно посмотреть на конфигурацию вашей машины где будет одно только виртуальное железо, ну и еще масса есть систем обнаружения, в том числе автоматических. Поэтому если в вашей организации мощная служба электронной безопасности и серьезно относятся к сохранности данных, то лучше не рисковать, иначе можете получить себе нехилый геморрой с выговорами и даже увольнением с записью в трудовую. Сидите на попе ровно.