結論
qemuを使う
確認環境
fedora 40
必要なもの
Windows OSのライセンス
手順
ホスト-ゲスト間のIP通信
tapデバイスの起動
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up
sudo ip addr add 10.0.2.10/24 dev tap0
QEMUの起動
USBパススルー(PCIの場合は別途)
lsusbでUSBバスとデバイスを確認
$ lsusb
...
Bus 001 Device 018: ID 0411:037d BUFFALO INC. (formerly MelCo., Inc.) 802.11n NIC
...
Qemuの起動
WindowsをQemuで起動する。
Windows用qcow2の作成は空のqcow2を用意し、
WindowsのISOを指定してcdrom boot、インストールするだけなので詳細は省略
コマンド例
sudo qemu-system-x86_64 -M q35,smm=on -smp 2 -m 8G /opt/vdisk/win11.qcow2 -net nic -net tap,ifname=tap0,script=no,downscript=no -net user,smb=/opt/share -enable-kvm -device qemu-xhci -device usb-host,hostbus=1,hostaddr=18
必要なのは以下
- tapの指定
-net tap,ifname=tap0,script=no,downscript=no
- USBパススルー
-device qemu-xhci -device usb-host,hostbus=1,hostaddr=18
ここの1
と18
がBus 001 Device 018
に該当する。
Windows側の設定
ゲスト-インターネット間
USBパススルーが正常にできていればデバイスマネージャで見える。
ドライバのインストールをWindows内で行う。
インストールが終わればWifi経由でゲストからインターネットにつながるはず。
インターネット共有
インターネット共有を行うとLAN側IPが固定されるため、
その回避を行う必要がある。
レジストリエディタを起動し、
HKLM > SYSTEM > CurrentControlSet > services > SharedAccess > Parameters > ScopeAddress
を10.0.2.15
に変更する。
コントロールパネル -> ネットワークとインターネット -> アダプターの設定の変更
で Wifiを選択する。
プロパティー -> 共有 -> ネットワークのほかのユーザーに、このコンピュータ-のインターネット接続をとおしての接続を許可する
にチェックを入れる。
ホストマシン(Linux)
DNSの設定は各自で
$ ping -w1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=27.6 ms
PCIの場合
PCIの場合はLinuxのドライバを上書きする必要がある。
lspciで該当のデバイスを確認します。
以降アドレスが0000:02:00.0
として説明します。
$ lspci
...
0000:02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter
...
sudo -i
modprobe vfio-pci
echo vfio-pci > /sys/bus/pci/devices/0000:02:00.0/driver_override
echo 0000:02:00.0 > /sys/bus/pci/drivers_probe
qemu起動時にvfio-pciを指定する。
-device vfio-pci,host=0000:02:00.0
戻し方
sudo -i
echo -n "0000:02:00.0" > /sys/bus/pci/drivers/vfio-pci/unbind
echo "" > /sys/bus/pci/devices/0000:02:00.0/driver_override
echo -n "0000:02:00.0" > /sys/bus/pci/drivers_probe