- Вопрос или проблема
- Ответ или решение
- Как сделать физический диск доступным для существующей Виртуальной Машины Windows
- Введение
- Вопрос 1: Как сделать /dev/sdc доступным для виртуальной машины?
- Вопрос 2: Не усложняю ли я жизнь себе? Есть ли более простое решение?
- Вопрос 3: Можно ли импортировать вашу конфигурацию в format .xml для virt-manager?
- Заключение
Вопрос или проблема
Проблема: У меня есть новый SATA диск, который я хочу подготовить с помощью установки Windows. У меня есть Windows только в виртуализированном виде на моем ПК. Мое решение: Подключить (прямо) весь диск к виртуальной машине Windows и подготовить, как обычно.
Это мой скрипт для VGA/Passthrough:
#!/bin/bash
#1Я ЧАСТЬ
configfile=/etc/vfio-pci.cfg
vfiobind() {
dev="$1"
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
#2Я ЧАСТЬ
xrandr --output DVI-D-0 --off
/usr/bin/synergys --config /home/%username%/.synergy.conf
export QEMU_ALSA_DAC_BUFFER_SIZE=512 QEMU_ALSA_DAC_PERIOD_SIZE=170 QEMU_AUDIO_DRV=alsa
sudo qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 8192 \
-cpu host,kvm=off,migratable=off,+invtsc,enforce \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /usr/share/seabios/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=06:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=06:00.1,bus=root.1,addr=00.1 \
-soundhw all \
-drive if=none,file=/media/VM/windows1.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-net tap,vlan=0 \
-boot menu=on
sudo killall synergys
xrandr --output DVI-D-0 --auto
xrandr --output DVI-D-0 --right-of HDMI-0
exit 0
Вопрос 1): Я хочу сделать /dev/sdc доступным для виртуальной машины. Какой параметр -option позволит это сделать. (Чтобы повторить, новый диск, sdc, в данный момент не имеет содержимого, разделов или формата.)
Вопрос 2): Я усложняю себе жизнь или есть гораздо более простое решение.
Вопрос 3): Я знаю, что это можно сделать, используя .xml скрипт, который использует virt-manager, но, как вы видите, я не использую virt-manager для запуска виртуальной машины (из-за VGA Passthrough), возможно ли конвертировать/импортировать этот стартовый скрипт в формат .xml virt-manager и затем добавить что-то вроде:
<disk type="block" device="disk">
<driver name="qemu" type="raw" cache="none" />
<source dev="/dev/sda" />
<target dev="vdb" bus="virtio" />
</disk>
…в секцию <devices>
?
Большое спасибо только за то, что прочитали до конца, если вы справились с этим.
Я использую libvirt и передаю блочные устройства в виртуальные машины. Это приводит к параметрам qemu
, подобным этим:
-drive file=/dev/mapper/storage-profiles,if=none,id=drive-virtio-disk4,format=raw,serial=KVM-profiles,cache=writeback
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xc,drive=drive-virtio-disk4,id=virtio-disk4,bootindex=6
Ответ или решение
Как сделать физический диск доступным для существующей Виртуальной Машины Windows
Введение
Если вы хотите сделать новый SATA-диск доступным для вашей виртуальной машины Windows и выполнить на нём установку с последующей подготовкой (sysprep), вам потребуется правильно его подключить и настроить. В этом ответе мы разберем несколько ключевых вопросов, связанных с этой задачей.
Вопрос 1: Как сделать /dev/sdc доступным для виртуальной машины?
Для использования физического диска в качестве хранилища для виртуальной машины с помощью QEMU/KVM, необходимо указать опцию -drive
. Поскольку ваш диск (например, /dev/sdc) не содержит данных, его можно использовать напрямую в качестве исходного хранилища. Используйте следующую команду:
-drive file=/dev/sdc,if=none,id=disk,format=raw
Это позволит вашему виртуальному окружению напрямую взаимодействовать с указанным физическим диском. Обратите внимание, что format=raw
уточняет формат хранилища на случай, если диск не отформатирован, как в вашем случае. Убедитесь, что диск не используется другими процессами и что на нём нет данных, которые могут быть потеряны.
Вопрос 2: Не усложняю ли я жизнь себе? Есть ли более простое решение?
На первый взгляд, процедура связывания физического диска с виртуальной машиной через пасс-техники (passthrough) может показаться сложной. Однако, это наиболее распространенный метод для достижения ваших целей, особенно когда требуется использование аппаратного ускорения и полной производительности оборудования.
Возможно, вы могли бы воспользоваться инструментами управления виртуальными машинами, такими как virt-manager
, которые предоставляют графический интерфейс для настройки. Это может сократить количество командной строки и автоматизировать большую часть настройки. Однако, с учетом использования VGA-пасс-техники, лучше всего управлять параметрами через сценарии или команду запуска.
Вопрос 3: Можно ли импортировать вашу конфигурацию в format .xml для virt-manager?
Да, вы можете преобразовать ваш Bash-скрипт в формат XML для использования в virt-manager
. Если вы хотите добавить новый блок-устройство в вашу виртуальную машину, необходимо будет создать элемент с дискoм внутри секции <devices>
. Ваш код будет выглядеть следующим образом:
<disk type="block" device="disk">
<driver name="qemu" type="raw" cache="none"/>
<source dev="/dev/sdc"/>
<target dev="vdb" bus="virtio"/>
</disk>
Если вы уже имеете .xml-файл для вашей виртуальной машины, просто добавьте этот блок в <devices>
. Однако, если вы используете аппаратное ускорение и масштабирование вашей виртуальной системы с помощью VGA-пасс-техники и напрямую из командной строки, вам все равно нужно будет запускать виртуальную машину с помощью используемой вами конфигурации скриптов. В некоторых случаях, интеграция .xml в вашу архитектуру требует дополнительной настройки.
Заключение
Использование физического диска в виртуальной машине — это довольно сложный процесс, но следуя приведенным выше рекомендациям, вы сможете успешно подключить и использовать его. Использование команды -drive
с правильными параметрами и настройками дискoв позволит вам легко создать инсталляцию Windows с нуля и подготовить вашу систему к дальнейшему использованию.
Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.