AlmaLinux9 KVM設定(初期設定+GPUパススルー)
OS設定
ホスト名の変更
# hostnamectl set-hostname AlmaLinux9-kvm-host
SELinuxの無効化
# vi /etc/selinux/config SELINUX=disabled # reboot
firewalldの無効化
# systemctl stop firewalld # systemctl disable firewalld
KVM設定
パッケージインストール
# dnf update # dnf install qemu-kvm libvirt virt-install
ブリッジの作成
# nmcli device # nmcli connection show # nmcli connection add type bridge ifname br0 # nmcli device # nmcli connection show # nmcli connection modify bridge-br0 ipv4.addresses 192.168.0.90/24 ipv4.method manual # nmcli connection modify bridge-br0 ipv4.gateway 192.168.0.1 # nmcli connection modify bridge-br0 ipv4.dns 8.8.8.8 # nmcli connection add type bridge-slave ifname enp4s0 master br0 # nmcli device # nmcli connection show # nmcli connection del enp4s0 ; reboot ブリッジへのインターフェース登録状態の確認 # nmcli c show bridge-slave-enp4s0 | grep master
仮想マシンの作成
OS種別の確認
# osinfo-query os
Windowsのインポート(EFI)
# virt-install \ --boot uefi \ --name Windows10-uefi \ --vcpus=4 \ --cpu host-passthrough,cache.mode=passthrough \ --ram=4096 \ --os-type=windows \ --os-variant=win10 \ --disk=/mnt/storage-2/temp//Windows10-uefi_2.qcow2 \ --import \ --network bridge=br0 \ --graphics vnc,password=foobar,port=5908,listen=0.0.0.0,keymap=en-us
Linuxのインポート
virt-install \ --name Ubuntu16-tuner \ --vcpus=4 \ --cpu host-passthrough,cache.mode=passthrough \ --ram=2048 \ --os-type=linux \ --os-variant=ubuntu16.04 \ --disk=/var/lib/libvirt/images/Ubuntu16-tuner.qcow2 \ --import \ --network bridge=br0 \ --graphics vnc,password=foobar,port=5901,listen=0.0.0.0,keymap=en-us
PCIパススルー設定
BIOS設定
BIOSで「Intel VT-d」「I/O Virtualization Technology」などの名前の設定項目を有効にする。
IOMMU有効化
# vi /etc/default/grub GRUB_CMDLINE_LINUX の末尾に「intel_iommu=on」もしくは「amd_iommu=on」を追加 # grub2-mkconfig -o /boot/grub2/grub.cfg # reboot # dmesg | grep -e DMAR -e IOMMU [ 0.000000] Intel-IOMMU: enabled
ホストのドライバ読み込み無効化設定
・grub に nomodeset を追加
# vi /etc/default/grub GRUB_CMDLINE_LINUX="vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 intel_iommu=on nomodeset" # grub2-mkconfig -o /boot/grub2/grub.cfg ・ドライバをブラックリストに追加 # lspci -v -d 1002:68f9 | grep Kernel Kernel driver in use: radeon # lspci -v -d 1002:aa68 | grep Kernel Kernel driver in use: snd_hda_intel # lsmod | grep radeon drm 297829 2 ttm,drm_kms_helper,radeon # vi /etc/modprobe.d/blacklist.conf blacklist drm blacklist radeon blacklist snd-hda-intel # reboot
NVIDIAグラボをパススルーする場合の error 43 対策
・仮想マシン設定に下記を追加する
<features> <hyperv> ... <vendor_id state='on' value='1234567890ab'/> ... </hyperv> ... <kvm> <hidden state='on'/> </kvm> </features>
PCIパススルー設定
# lspci 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series] 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300 Series] # lspci -n 01:00.0 0300: 1002:68f9 01:00.1 0403: 1002:aa68
<hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0' bus='0' slot='0x1a' function='0'/> </source> </hostdev> ※lspci で追加したいデバイスが 01:00.0 の場合、bus='1' slot='0' function='0' を指定する。