я пытаюсь использовать PCI-Passthrough для подключения старой видеокарты (Radeon 4770) к виртуальной машине. Я использую Linux-KVM для запуска моих виртуальных машин на хосте Debian Linux (Wheezy, 3.2.0-4-amd64).
вопрос
чтобы уточнить, я не уверен, что правильный "путь" для внедрения PCI-Passthrough с Linux KVM. На этом этапе я подозреваю, что правильное действие заключается в добавить CONFIG_DMAR
,CONFIG_DMAR_DEFAULT_ON
и CONFIG_PCI_STUB
к "вариантам шины (PCI etc.)" раздел исходного кода ядра и перекомпиляции.
но я не уверен если это исчерпывающий список необходимых дополнений до recompliling. или если перекомпиляция ядра необходима--возможно, есть более простой способ?
из гидов, на которые я ссылался, толькоlinux-kvm.org явно упоминает, что компиляция необходима. Linux-KVM уже установлен и функционирует как гипервизор.
исследования
на данный момент я думаю, что моя проблема связана с моим ядром. Мой основной ресурс был гидом в linux-kvm.org (http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM). Однако, я нашел другие ресурсы, которые показывают несколько различных методов, которые (казалось бы) специфическое распределение:
SUSE-- "openSUSE: виртуализация с помощью KVM" (ссылка опущена из-за низкой релевантности и ограничения в 2 ссылки)
руководство Fedora работает до ссылки setsebool
, который, как представляется, RedHat конкретных. Руководство SUSE указывает, что назначение видеокарты не поддерживается SUSE, однако я также ссылаюсь на него потому что это означало, что я должен найти CONFIG_DMAR_DEFAULT_ON
строка в /boot / config - ' uname-r`. Thelinux-kvm.org сайт также ссылки CONFIG_DMAR_DEFAULT_ON
, так что это общий и необходимый компонент.
Примечание: я не нашел ограничений для видеокарт в руководствах для Fedora или Debian. Указанный документ SUSE датирован 2006-2013 годами.
я не могу найти CONFIG_DMAR_DEFAULT_ON
в /boot / config-`uname-r` в моей системе. Дальнейший исследования показывают, что CONFIG_DMAR
,CONFIG_DMAR_DEFAULT_ON
и CONFIG_PCI_STUB
являются ли элементы конфигурации ядра Linux, которые имеют отношение к инструкциям наlinux-kvm.org. Поэтому я считаю, что мне нужно перекомпилировать ядро моего хоста с этими 3 (по крайней мере) элементами конфигурации ядра. Загрузка с intel_iommu=on
в качестве параметра ядра для моей host-OS кажется недостаточным.
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
подтверждение поддержки VT-d/IOMMU/KVM
мои исследования показывают, что PCI-Passthrough требует как процессор, так и материнская плата поддерживают VT-d.
VT-d
я подтвердил, что мой процессор, a non-k INTEL i7-3770 (per ark.intel.com/products/65719), поддерживает VT-d:
технология виртуализации Intel® для направленного ввода/вывода (VT-d и) ‡
Да
моя материнская плата ASRock Z77 Extreme4 также поддерживает VT-d (на странице 62 руководства пользователя):
VT-d
Используйте это для включения или отключить Intel
®
Технология VT-d (Intel
®
Виртуализация
Технология направленного ввода / вывода). Значение этой функции по умолчанию - [Disabled].
IOMMU
я проверил, что моя система имеет поддержку IOMMU:
dmesg | grep -e DMAR -e IOMMU | grep -e "DRHD base" -e "enabled"
[ 0.000000] Intel-IOMMU: enabled
KVM
KVM установлен и функционален, кроме поддержки PCI-Passthrough:
lsmod | grep kvm
kvm_intel 121968 0
kvm 287749 1 kvm_intel
я убедился, что VT-d включен через BIOS моей материнской платы. Как таковой, я не подозреваю аппаратную и BIOS проблемы, препятствующие использованию VT-d. Несмотря ни на что,я не могу успешно отсоединить видеокарту от хоста и переназначить ее виртуальной машине.
Закрытие Мысли
наконец, я хотел бы упомянуть, что я также пробовал тестирование:
echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id
echo "0000:01:00.0" > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/bind
echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/remove_id
kvm -m 512 -boot c -net none -hda debian-7.1.0-amd64-netinst.iso -device pci-assign,host=01:00.0
и получил следующую ошибку после попытки создать целевую виртуальную машину:
Failed to assign device "(null)" : Device or resource busy
*** The driver 'pci-stub' is occupying your device 0000:01:00.0.
***
*** You can try the following commands to free it:
***
*** $ echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id
*** $ echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/unbind
*** $ echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/bind
*** $ echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/remove_id
***
kvm: -device pci-assign,host=01:00.0: Device 'pci-assign' could not be initialized
я предполагаю, что это потому, что хозяин до сих пор не откажется от контроля над видео вероятно, из-за того, что ядро не компилируется с соответствующими элементами конфигурации.
это новая территория для меня, поэтому, пожалуйста, простите мою неопытность. Я бы значительно ценю любую обратную связь вообще, даже если это просто подтверждение того, что я на правильном пути. Пожалуйста, дайте мне знать, если я сделал вопиющий надзор или я слишком много думаю. Конструктивная критика моего вопроса также приветствуется. Дайте мне знать, если я не предоставил достаточно информация, чтобы "помочь вам помочь мне" (или если я включил слишком много!). Я был бы более чем счастлив помочь сделать мой вопрос более ясным или легче ответить.
спасибо заранее,