はじめに
基本的にはPCI Passthrough in Xenserver 7 “Dundee”の補足というか、そんな感じです。
出てくる資料が少ない上に6系のが多かったので個人的なメモを兼ねて。
以下環境
- XenServer 7.0.0を仕様
- XS7004適用済み
- sshでXenServerに接続して作業します
- 間違いとかツッコミ歓迎
- 自己責任でお願いします
オタクはすぐに鯖にWintermuteとかつける
目的のハードウェアを見つける
lspci
いろいろ出てくるだろうけれどgrepなりで目的のデバイスを引っ掛ける
# lspci | grep VGA
01:03.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] ES1000 (rev 02)
01:03.0 の部分があとで必要になるのでメモしておく
元の記事でB:D.fと読んでいるのでここでもそう呼びます。
VMにパラメータを渡す
VMの一覧とUUID取得
xe vm-list
こんな感じでリストが取れるので必要なVMのUUIDをメモ
今回はWS2012R2を使ってみる
uuid ( RO) : d436e5d4-964c-47b1-a8b7-657f6f1cb1e3
name-label ( RW): Control domain on host: Wintermute
power-state ( RO): running
uuid ( RO) : 22eb15fb-169c-ec9b-0ad4-231dc7210376
name-label ( RW): Windows Server 2012 R2
power-state ( RO): running
uuid ( RO) : 5bd4e662-5b08-bd5b-896f-bc39c1f4248c
name-label ( RW): XOA 4.15 Free
power-state ( RO): halted
パラメータをセット 以下が書式
xe vm-param-set other-config:pci=0/0000:[B:D.f] uuid=[対象のUUID]
実際に渡してみる
xe vm-param-set other-config:pci=0/0000:01:03.0 uuid=22eb15fb-169c-ec9b-0ad4-231dc7210376
正常に通ると何も帰ってこないのでパラメータを取得してみる
xe vm-param-list uuid=22eb15fb-169c-ec9b-0ad4-231dc7210376 | grep pci
いろいろ帰ってくるけどこんなのが書かれていればOK
other-config (MRW): vgpu_pci: ; pci-0/0000:01:03.0: ;
PassthroughできるようにXenServerに手を入れる
/boot/grub/grub.cfgに手を入れて上げる必要があるので適当なエディタで編集
EFIな人は
/boot/efi/EFI/xenserver/grub.cfg
らしいよ、うちはEFIで起動していないのでそんなファイルはなかった。
vi /boot/grub/grub.cfg
自分の立ち上げている環境のパラメータを編集
まぁ他のはSafe Modeとか書かれてるし無印を使っている人が多いでしょう、多分。
module2の場所に
xen-pciback.hide=(B:D.f) を追記 複数ある場合は(B:D.f)を連続して書く
menuentry 'XenServer' {
search --label --set root root-cafyeg
multiboot2 /boot/xen.gz dom0_mem=2048M,max:2048M watchdog ucode=scan dom0_max_vcpus=8 crashkernel=128M@256M vga=mode-0x0311
module2 /boot/vmlinuz-3.10-xen root=LABEL=root-cafyeg ro nolvm hpet=disable xencons=hvc console=hvc0 quiet vga=785 splash plymouth.ignore-serial-consoles xen-pciback.hide=(0e:00.0)(01:03.0)
module2 /boot/initrd-3.10-xen.img
}
XenServerの再起動
XenCenterからでもなんでもお好みの方法でXenServerを再起動
reboot
再起動後VMを起動してPassthroughされていればOK されていなかったらパラメータの名前とかを要チェック
Passthroughしたくなくなった時
xe vm-param-remove param-name=other-config param-key=pci uuid=[UUID]
あとは追加時と同じように確認して消えてればOK
おわり
今回オンボードなグラフィックチップをPassthroughさせたけど効果があるのかは謎、なぜなら元からWindowsに突っ込むと「Microsoft 基本ディスプレイ アダプター」と言われてしまうため。
ただまぁ、WS2012R2とか入れた時にCPUが常時50%食われている問題(レンダリング周りでソフトウェアが頑張ってた?)が解決されたのでまぁいいかといった感じ。XenCenterのコンソールはそのまま使えている。