2010-12-12 KVMでPT2
PT2をPCIパススルーしてKVMのWindowsXPゲストで使う
もうだいぶの前ことなんだけど、忘れないうちにメモ。
必要なもの
- VT-d Enableなマシン
- PT2
- SCR3310-NTTCom
カードリーダーはWindowsで使えればなんでもいいと思う。
BonCasProxyとかでもいいんじゃないかな。
ホスト(Fedora 14)でロードされている不要なドライバをアンロードする。
ゲストで使うPCIデバイスにホスト側でドライバがロードされているとゲスト側で認識できてもうまく動作しません。
最近のカーネルだとDVB版のPT2ドライバがカーネルに統合されてます。
ゲストで使うには邪魔なのでrmmodします。
ここで注意点がひとつ。
PT2はPCIのカードなので最近のマザーだとPCIe-PCIブリッジの下にぶら下がっています。
私の使っているマザーだと以下のような感じ。
lspci -tv -[0000:00]-+-00.0 Intel Corporation 82Q35 Express DRAM Controller +-02.0 Intel Corporation 82Q35 Express Integrated Graphics Controller +-1a.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 +-1a.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 +-1a.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 +-1b.0 Intel Corporation 82801I (ICH9 Family) HD Audio Controller +-1c.0-[05]----00.0 Adaptec AAC-RAID +-1c.4-[0d]----00.0 Intel Corporation 82573V Gigabit Ethernet Controller (Copper) +-1c.5-[0f]----00.0 Intel Corporation 82573L Gigabit Ethernet Controller +-1d.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 +-1d.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 +-1d.2 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 +-1d.3 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 +-1d.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 +-1e.0-[11]--+-08.0 Integrated Technology Express, Inc. IT8213 IDE Controller | \-09.0 Xilinx Corporation Device 222a +-1f.0 Intel Corporation 82801IR (ICH9R) LPC Interface Controller +-1f.2 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller +-1f.3 Intel Corporation 82801I (ICH9 Family) SMBus Controller \-1f.6 Intel Corporation 82801I (ICH9 Family) Thermal Subsystem
"Xilinx Corporation Device 222a"がPT2です。11:09.0がゲスト起動時に指定するIDです。
ツリー形式で見るとIT8213というIDEコントローラが同じブリッジにぶら下がっているのがわかります。
こいつのドライバもアンロードしてやらないと使えません。
で、何をアンロードするかを見ます。
lspci -vv -s 11:08.0 11:08.0 IDE interface: Integrated Technology Express, Inc. IT8213 IDE Controller (prog-if 85 [Master SecO PriO]) Subsystem: Integrated Technology Express, Inc. IT8213 IDE Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-</pp> Latency: 64 (2000ns min, 2000ns max) Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at 4020 [size=8] Region 1: I/O ports at 4014 [size=4] Region 2: I/O ports at 4018 [size=8] Region 3: I/O ports at 4010 [size=4] Region 4: I/O ports at 4000 [size=16] Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel modules: ata_generic, pata_acpi, pata_it8213
ata_generic, pata_acpi, pata_it8213が該当のドライバになるのでこいつらもrmmodしてやります。
ここは使っているマザーによりけりなので該当するものをアンロードしてやってください。
しかし起動時に毎回読まれてしまうものなので毎度rmmodするのも面倒ですしblacklistに追加。
/etc/modprobe.d/blacklist.conf
blacklist pata_it8213
blacklist pata_acpi
blacklist ata_generic
blacklist earth-pt1
ただし、この手のIDEコントローラーのドライバはinitrdに含まれているのでinitrdを作り直してやらないと起動時に毎回読まれてしまいます。
ちなみにblacklistに追加した後であればカーネルの更新時には勝手にinitrdからは削除してくれます。
以上でPT2の準備は終わり。
ICカードリーダーの準備
まずpcscdが動いていたら止めます。
/etc/init.d/pcscd stop
chkconfig pcscd off
これをやっておかないとゲスト起動時にホスト側でpcscdのエラーが大量に吐かれて/varがものすごい勢いで埋まります。
USBデバイスの確認
lsusb Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 003: ID 04e6:511a SCM Microsystems, Inc. Bus 007 Device 002: ID 046d:c041 Logitech, Inc. G5 Laser Mouse Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
"SCM Microsystems, Inc."がSCR3310-NTTComです。
04e6:511aがゲスト起動時に指定するIDになります。
ゲスト起動
/usr/bin/qemu-kvm -enable-kvm -rtc base=localtime -name recpt2 -cpu qemu32 -smp 1,sockets=1,cores=1,threads=1 -m 1024 -drive file=/kvmfs/recpt2/recpt2.raw,if=none,id=drive-virtio-disk0,format=raw,cache=none,boot=on -device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=/kvmfs/recpt2/recdata.raw,if=none,id=drive-virtio-disk1,format=raw,cache=none -device virtio-blk-pci,bus=pci.0,addr=0x8,drive=drive-virtio-disk1,id=virtio-disk1 -device virtio-net-pci,vlan=20,id=net0,mac=52:54:00:ff:00:01,bus=pci.0,addr=0x3 -net tap,vlan=20,ifname=tap01,name=hostnet0,vhost=on -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -k ja -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -vga qxl -spice port=5901,disable-ticketing -device virtio-serial,bus=pci.0,addr=0x7 -device spicevmc,subtype=vdagent -device AC97,id=sound0,bus=pci.0,addr=0x5 -boot c -daemonize -chardev socket,id=monitor,host=127.0.0.1,port=4001,server,nowait -mon chardev=monitor,mode=readline -pidfile /var/run/qemu/recpt2.pid -pcidevice host=11:09.0,name=pci-pt2 -usbdevice host:04e6:511a
相変わらず長ったらしいですが大事なのは以下
-pcidevice host=11:09.0,name=pci-pt2
-usbdevice host:04e6:511a
これでゲストでPT2とICカードリーダーが使えるようになります。
- 6 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=SPICE fedora14&aq=f&aqi=&aql=&oq=&gs_rfai=
- 6 http://www.google.co.jp/search?q=spice+fedora&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 3 http://www.google.co.jp/search?hl=ja&lr=&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&channel=s&q=linux pt2+fedora14&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://pipes.yahoo.com/pipes/pipe.info?_id=12e453e301454b799b3ac6642aa089b5
- 2 http://www.google.co.jp/hws/search?hl=ja&client=fenrir-sub&channel=selection&adsafe=off&safe=off&lr=lang_ja&q=System+Center+Configuration+Manager
- 2 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja-JP-mac:official&channel=s&hl=ja&source=hp&q=linux kvm pt2&lr=&btnG=Google+検索
- 2 http://www.google.co.jp/search?hl=ja&biw=1449&bih=931&q=fedora+14+kvm+&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&biw=994&bih=527&tbs=lr:lang_1ja&q=fedora+14+音&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&rlz=1G1GGLQ_JAJP358&tbs=lr:lang_1ja&q=fedora+vlan+kvm&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://www.google.co.jp/search?q=パススルー pci&hl=ja&biw=1227&bih=719&prmd=iv&ei=DBAHTcnVBof3rQeQuo2lDg&start=10&sa=N
- 2010-12-15 hiraku_wfsの日記 4/47 8%
- 2010-12-13 forester3の日記 6/97 6%
- 2010-12-12 IGINブルネイ/syasudaの日記 4/64 6%