2018年11月24日土曜日

Fedora29/centos-7 Server で KVM (Xeon Phi & AMD RX580 PCI パススルー)


AMDGPU-PRO Driver をアップデートしようとして失敗った。
Xeon Phiの動かなくなった。

やっぱ、仮想環境で分けよう。

VMware vSphere Hypervisor 6.7 だと、初めから Xeon Phi がパススルー設定にあって楽と喜ぶも、
無償だとライセンスでGPUのパススルーPASS THROUGHが使えないやら...と出て不可。

今時だと、KVM なのかな、で、なんとなく、 Fedora7 Server をインストール。
なんか、loginプロンプトの上に、続きはweb的なのが出るが...webでコンソールが使える。さすが今時。

kvmのインストールは以下からで。
https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-virtualization/
fedora:
# dnf install @virtualization
<- fedora="" p="">centos:
<- fedora="" p=""># yum instal @virt* <- centos="" p="">

<- fedora="" p="">
<- fedora="" p="">virt-manager で以下が必要になる。
# dnf install xauth
# dnf install 'ipa-*-fonts'

<- fedora="" p=""><- centos="" p="">fedora:
あとは、virt-manager で...が、Disk Imageが作れない...パーティションが 15Gしかない!?
Linux って / にディスク全部って印象があったが、今どきは知らないまに変わったか、何か間違えたか?、ファイルシステムも ext? でなく、xfs とかになっているし。

以下を参考に、
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/lv#lv_extend
以下で。
# lvextend -r -l +100%FREE /dev/mapper/fedora-root

centos(1810):
virt-manager が以下とか言うので、
SMM is not available with this QEMU binary
以下をする。
# yum install centos-release-qemu-ev
# yum update

ネットワーク設定
eno1はNIC、nmcli で確認できる。
nmcli は以下で動作確認できる。
# dnf install NetworkManager
# systemctl status NetworkManager
enableになっていれば良い。

ネットワークでブリッジ作成は、以下より。...でもwebからので簡単にできた。
https://fedoramagazine.org/build-network-bridge-fedora/
# nmcli connection add ifname br0 type bridge con-name br0
# nmcli connection add type bridge-slave ifname eno1 master br0
# nmcli connection modify br0 ipv4.addresses 192.168.1.10/24 ipv4.method # manual nmcli connection modify br0 ipv4.gateway 192.168.1.1 nmcli # connection modify br0 ipv4.dns 192.168.1.1
STPはいらないから。
# nmcli connection modify br0 bridge.stp no
https://wiki.archlinux.jp/index.php/OVMF_%E3%81%AB%E3%82%88%E3%82%8B_PCI_%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC

PCIパススルー設定は、kvm-managerのハードウェアを追加から、だけではダメで。
/etc/default/grub の GRUB_CMDLINE_LINUX に以下を追加。
intel_iommu=on
AMDの時は intel_iommu -> amd_iommu に。
onでなくptにできるとパフォーマンス上がるとか。

仮想マシンが信頼できるなら、/etc/modprobe.d/適当.conf に以下を追加。
options vfio_iommu_type1 allow_unsafe_interrupts=1

PCIパススルーするPCIのIDを以下で調べる。(? fedoraとcentosか、installの度か変わる気がする)
lspci -nnk

/etc/modprobe.d/適当.conf に以下を記述する。ids=以降は先に調べたお目当のPCIを。
options vfio-pci ids=1002:67df,1002:aaf0,8086:225e

/etc/default/grub の GRUB_CMDLINE_LINUX に以下を追加。
rd.driver.pre=vfio-pci

GPUの場合はホストにドライバが読み込まれないように無効化できる。
/etc/default/grub の GRUB_CMDLINE_LINUX に以下を追加。
nomodeset
こっちがいるのか!?
rd.driver.blacklist=snd_hda_intel,radeon,amdgpu

PCIデバイスを以下で見て、同じグループにあると別VMに割り当てられない。
find /sys/kernel/iommu_groups/ -type l
lspci -nntv のが見やすいかも。
Socket2011(-V3) のCPUは ACSとか分離する機能がある。
Core i5-4460 で以下試すも効果なし。しょうがないからPCIスロットを移した。
ACSは以下の設定を /etc/default/grub の GRUB_CMDLINE_LINUX に以下を追加。
pcie_acs_override=downstream,multifunction
multifunctionは RX580とかVIDEOとSOUNDが2つあるときに設定するとか。

以下でinitrdを再作成した。
/etc/dracut.conf.d/local.conf に以下を記載。
add_drivers+="vfio vfio_iommu_type1 vfio_pci vfio_virqfd" <- centos="" p="" vfio_virqfd="">

dracut -f --kver `uname -r`

以下で grub2の設定を更新する。
grub2-mkconfig -o /boot/grub2/grub.cfg
UEFIだとこっちでないと効果なし。
fedora:
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
centos:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

virt-manager
前は出来たのは何故だか...とにかくpermission deniedで怒られる。
とりあえず NFSあたりは以下をしておく。
setsebool virt_use_nfs on
あとは、適当に ls -Z してみて、chcon -t virt_image_t ファイル する。

うーん、
なんか Xeon-Phi の reset で帰ってこない。
dmesg に "post code 30" とかエラー出ていた気が。
bios PCIe設定を XenPhi を Gen2 に、RX580 を x2 に設定したところ、miccheck は通るようになった。






0 件のコメント:

コメントを投稿