既存のWindows VMに物理ディスクを提供する

既存のWindows VMに物理ディスクを提供する

Q:新しいSATAドライブがあり、それをWindowsインストールでsysprepしたいと思います。私のPCにはWindowsのみが仮想化されています。私の解決策:通常どおり、ドライブ全体をWindows VMとsysprepに接続(通過)します。

私のVGA /パススルースクリプトは次のとおりです。

#!/bin/bash

#1st PART
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

#2nd PART
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を使用できるようにしたいです。 What-options形式がこれを可能にします。 (繰り返しますと、新しいディスクsdcにいいえ現在のコンテンツ、パーティション、またはフォーマット。 )

質問2):私は私の人生を愚かに苦労していますか?より簡単な解決策はありますか?

質問3)virt-managerで使用されている.xmlスクリプトを使用するとこれを行うことができることがわかりますが、ご覧のようにVGAパススルーのため、仮想マシンの起動にvirt-managerを使用しません。可能ですか?この起動スクリプト/ Importをvirt-manager .xml形式に変換し、次のコンテンツを追加します。

<disk type="block" device="disk">
    <driver name="qemu" type="raw" cache="none" />
    <source dev="/dev/sda" />
    <target dev="vdb" bus="virtio" />
</disk>

...その<devices>部分まで?

作られたら最後まで読んでくれてありがとう。

答え1

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

関連情報