This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
virt:zfs_kvm_debian8 [2016/04/12 09:14] tschulz [Bind PCI device to VFIO] |
virt:zfs_kvm_debian8 [2016/04/20 14:18] (current) tschulz [Important Bits] |
||
---|---|---|---|
Line 22: | Line 22: | ||
==== Blacklist Video Drivers==== | ==== Blacklist Video Drivers==== | ||
+ | * If a driver is using a pci device that you want to passthough you might want to blacklist the driver, although you can try unbinding the driver before you tell vfio to claim the device | ||
* driver name is found be running: <file>lspci -vn | less -p VGA | * driver name is found be running: <file>lspci -vn | less -p VGA | ||
</file> Look for "**Kernel driver in use:**"<file bash /etc/modprobe.d/blacklist.conf> | </file> Look for "**Kernel driver in use:**"<file bash /etc/modprobe.d/blacklist.conf> | ||
Line 42: | Line 43: | ||
</file> | </file> | ||
+ | ===== Install Kernel and updates from Backports ===== | ||
+ | * add the following line to /etc/apt/sources.list<file>deb http://ftp.debian.org/debian jessie-backports main</file> | ||
+ | * Update package list and update packages<file>apt-get update | ||
+ | apt-get -t jessie-backports upgrade</file> | ||
+ | ===== Build and Install ZFS on Linux (deb method) ===== | ||
+ | * Download current release from [[https://github.com/zfsonlinux/zfs/releases]]. You will need **spl-x.x.x.x.tar.gz** and **zfs-x.x.x.x.tar.gz** | ||
+ | * Install dependency packages<file>apt-get install build-essential gawk alien fakeroot linux-headers-$(uname -r) zlib1g-dev uuid-dev libblkid-dev libselinux-dev parted lsscsi | ||
+ | </file> | ||
+ | * Build and install spl <file>tar xvzf spl-x.x.x.x.tar.gz | ||
+ | cd spl-x.x.x.x | ||
+ | ./configure | ||
+ | make deb-utils deb-kmod | ||
+ | dpkg -i *.deb</file> | ||
+ | * Build and install zfs <file>tar xvzf zfs-x.x.x.x.tar.gz | ||
+ | cd zfs-x.x.x.x | ||
+ | ./configure | ||
+ | make deb-utils deb-kmod | ||
+ | dpkg -i *.deb</file> | ||
===== Bind PCI device to VFIO ===== | ===== Bind PCI device to VFIO ===== | ||
- To grab the hexadecimal PCI id. run<file>lspci -nv</file> | - To grab the hexadecimal PCI id. run<file>lspci -nv</file> | ||
Line 53: | Line 72: | ||
echo 102b 0522 > /sys/bus/pci/drivers/vfio-pci/new_id | echo 102b 0522 > /sys/bus/pci/drivers/vfio-pci/new_id | ||
</file> | </file> | ||
+ | |||
+ | ===== USB Passthough ===== | ||
+ | * If you are passing a physical video card to a VM, you will need to also pass usb input devices to the VM since the VM will not have a SDL or Spice virtual display. | ||
+ | * This is done through USB passthrough. | ||
+ | * To find the USB id's to pass through run <file>lsusb | grep -v "root hub"</file> | ||
+ | * This will give you something like this<file>Bus 005 Device 002: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse | ||
+ | Bus 003 Device 003: ID 0557:2205 ATEN International Co., Ltd | ||
+ | Bus 003 Device 002: ID 0451:2046 Texas Instruments, Inc. TUSB2046 Hub</file> | ||
+ | * What we want is the hexadecimal ID **ffff:ffff** | ||
+ | * then this to pass the usb device to the vm<file>-usbdevice host:ffff:ffff</file> | ||
===== Example kvm script ===== | ===== Example kvm script ===== | ||
<file bash> | <file bash> | ||
Line 81: | Line 110: | ||
echo 102b 0522 > /sys/bus/pci/drivers/vfio-pci/new_id</file> | echo 102b 0522 > /sys/bus/pci/drivers/vfio-pci/new_id</file> | ||
* The following passes a video card to the vm and binds it to the pcie bridge<file>-device vfio-pci,host=07:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \</file> | * The following passes a video card to the vm and binds it to the pcie bridge<file>-device vfio-pci,host=07:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \</file> | ||
- | * The following passes a usb hub to the vm so that keyboard and mouse input can be used with the physical display<file>-usb -usbdevice host:0557:2205</file> | + | * The following passes a usb hub to the vm so that keyboard and mouse input can be used with the physical display<file>-usbdevice host:0557:2205</file> |
+ | * Add Spice Display<file>-vga qxl -spice port=5900,addr=127.0.0.1,disable-ticketing</file> |