Переносим Windows в виртуалку
Sergey, 24 January 2019
Всем привет! В связи с этим тредом я решил вернуться к своей давней идее отказаться от Windows в дуалбуте и перенести её в виртуальную машину. Но на пути решения этой задачи возникло несколько проблем, связанных с тем, что я пользуюсь ноутбуком, не совсем предназначенным, для подобных задач:
- Объём диска составляет 256 Гб, большая часть из которых занята виндой.
- Памяти тоже не шибко много много, только 8 Гб, поэтому бывало, что при запуске виртуалки система начинала подвисать, если виртуалке выделить слишком много памяти.
- Ну и самое худшее - только интегрированная видеопамять, что, казалось бы, ставило крест на использовании аппаратной виртуализации. В связи со всем этим, было решено создать виртуалку, использующую реальный жёсткий диск. Для ускорения виртуализации мне всё в том же треде посоветовали попробовать технологию Intel GVT-g. По итогам поисков в гугле и попыток разобраться с документацией я пришёл к алгоритму, похожему на описанный в этом посте (мой перевод этого поста на Хабре). Здесь я выделю отличия моего случая от случая в блоге и расскажу о них подробнее.
Перенос существующей системы в ВМ
Снимать образ с раздела мне было некуда, поэтому я решил “виртуализировать” уже установленную систему. Это привело к двум особенностям установки: мне нужно было использовать физический жёсткий диск, и виртуалка должна была быть создана с поддержкой UEFI. Первая проблема решилась весьма просто: нужно было при импорте образа диска указать физический диск:
С UEFI всё несколько сложнее. Сперва нужно установить OVMF - открытую реализацию UEFI для KVM:
$ sudo pacman -S ovmf
Дальше нужно прописать путь к образу OVMF в конфиг libvirt, для чего нужно добавить в /etc/libvirt/qemu.conf
:
nvram = [
"/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd"
]
После чего нужно (пере-)запустить libvirt
:
$ sudo systemctl restart libvirtd
Для того, чтобы иметь возможность дополнительно настроить конфигурацию системы, стоит отметить чекбокс “Проверить конфигурацию перед установкой”:
При проверке конфигурации видим, что можно выбрать UEFI:
В принципе, с этим набором уже можно продолжать установку, как описано в посте, но в виртуальной машине не будет сети, если вдруг ваш компьютер использует беспроводной адаптер.
Настройка сети
Приведу инструкцию по настройке сети в виртуальной машине, взятую со Stack Exchange:
- Создадим подсеть локальной сети хоста в virt-manager:
- Проверим с помощью
ip route
, что беспроводной интерфейс и bridge имеют разный destination IP:$ ip route default via 192.168.0.1 dev wlp2s0 proto dhcp src 192.168.0.101 metric 302 192.168.0.160/27 dev virbr1 proto kernel scope link src 192.168.0.161 linkdown
- Включим проксирование ARP на интерфейсах:
$ echo 1 | sudo tee /proc/sys/net/ipv4/conf/wlp2s0/proxy_arp $ echo 1 | sudo tee /proc/sys/net/ipv4/conf/virbr1/proxy_arp
Для того, чтобы изменения не пропали при перезагрузке, можно использовать добавить в файл
/etc/sysctl.d/90-vm.conf
строку:net.ipv4.conf.wlp2s0.proxy_arp=1
Итоги
К сожалению, у меня так и не получилось довести решение до конца, поскольку Windows, установленная на диске, уже имела драйвера от производителя ноутбука, поэтому драйвера от Intel мне поставить не удалось. Установленные драйвера не хотели работать в виртуалке, вызывая тёмный экран, поэтому я отложил свою затею до лучших времён.