kvmのゲストOSでUSBデバイスを使う- USBホストコントローラーをPCIパススルー

AMDならAMD-Vi、IntelならVT-dをBIOSで有効にする必要がある。

 

    1. BIOS設定

vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=“intel_iommu=on nomdmonddf nomdmonisw” GRUB_CMDLINE_LINUX=“intel_iommu=on”

※AMDの場合は「amd_iommu=on」

    1. 設定更新

update-grub

 

    1. 再起動

reboot

    1. 設定確認

以下のようなメッセージが出ていればOK
dmesg | grep IOMMU
[ 0.000000] Intel-IOMMU: enabled

    1. USBデバイス確認

lspci -D | grep USB
0000:00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
0000:00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

    1. ゲスト設定

virsh edit VM

<device>

<hostdev mode=‘subsystem’ type=‘pci’ managed=‘yes’>

<source>

<address domain=‘0x0000’ bus=‘0x00’ slot=‘0x1a’ function=‘0x0’/>

</source>

</hostdev>

</device>

 

 

amd64のOSなのにapt-getで「Unable to find expected entry ‘contrib/binary-i386/Packages’ in Release file」と言われる場合の対処

apt-get updateで以下のメッセージが出てしまう場合の対処。

たとえばこう。

W: Failed to fetch http://packages.treasuredata.com/2/debian/wheezy/dists/wheezy/Release Unable to find expected entry ‘contrib/binary-i386/Packages’ in Release file (Wrong sources.list entry or malformed file)

対象のsource-listに[arch=amd64]を書く。

例えばこんな感じ。

deb [arch=amd64] http://packages.treasuredata.com/2/debian/wheezy/ wheezy contrib

brctlでlinuxをhubに

単純にブリッジ設定しただけだとNG。

以下のようにすることでMACアドレスを学習した結果を保持する期間が0になり実質的にMACアドレスの学習機能が働かなくなります。それによりリピータHUBのように振る舞うようになります。

brctl setageing 0 ブリッジ名