1. 确定硬件是否支持iommu
这是一个硬件的功能,intel架构上叫vt-d。
从BIOS上可以看出来, 不同版本放的位置不一样。
我的是在 Security->Virtualization->VT-d
2. 检查CPU是否支持 #egrep "vmx|svm" /proc/cpuinfo
3. 安装软件qemu-1.5.3.tar.bz2(可以在configure时只指定x86)
4. 在host上unbind设备加载pci_stub模块, modprobe pci_stub
选中某个设备, lspci -s 03:00.0 -n, 03:00.0 0280: 8086:0085 (rev 34)
bind/unbind
-
echo "8086 0085" > /sys/bus/pci/drivers/pci-stub/new_id
-
echo 0000:03:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
-
echo 0000:03:00.0 > /sys/bus/pci/drivers/pci-stub/bind
5. 启动一个配置好的img文件
如下写的脚本
#!/bin/bash
ID="8086 0443"
PCI="0000:06:01"
IMG="/root/test_image/sles11sp2.img"
HOST=" -vnc 172.16.200.166:1 "
PCIX=" -device pci-assign,host="${PCI}
CDROM=" -cdrom /root/QAT/driver.iso "
CMD="qemu-system-x86_64 -m 2048 -smp 4 -hda "${IMG}${HOST}" -enable-kvm "
#ADD CCK
if [ 1 -eq 0 ];then
echo $ID > /sys/bus/pci/drivers/pci-stub/new_id
for i in 0 1 2 3
do
echo ${PCI}"."$i > /sys/bus/pci/devices/${PCI}"."$i/driver/unbind
echo ${PCI}"."$i > /sys/bus/pci/drivers/pci-stub/bind
CMD=${CMD}${PCIX}.$i
done
fi
#ADD ETH
PCI_eth="0000:02:00.1"
ID_eth="8086 1521"
PCIX_eth=" -device pci-assign,host="${PCI_eth}
echo $ID_eth > /sys/bus/pci/drivers/pci-stub/new_id
echo ${PCI_eth} > /sys/bus/pci/devices/${PCI_eth}/driver/unbind
echo ${PCI_eth} > /sys/bus/pci/drivers/pci-stub/bind
CMD=${CMD}${PCIX_eth}
#ADD CDROM
CMD=${CMD}${CDROM}
echo $CMD
rmmod kvm_intel
rmmod kvm
modprobe kvm
modprobe kvm_intel
$CMD