Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □Fedora18+QEMU-KVMでのUSBパススルー

□Fedora18+QEMU-KVMでのUSBパススルー

□Fedora18+QEMU-KVMでのUSBパススルー

いやはや悩みましたよまったく…そもそもこの手の需要があんまりないんで
しょうね。自分的には、自宅で数台動かしていたノートパソコンをKVM環境で
なるべく一台にまとめたいということで始めたのですが。

でもって今回は、ライブカメラ用に動かしている一台のLinuxマシンをKVMの
VMにする代わりに、WEBCAMを当然USB2.0接続のままパススルーしたいのです。
USB1.1でのパススルーは意外と簡単で、WEB上にあるUSB-HDDとかPT2関連の
情報で「なんとなく」やっていけばできるのですが、USB2.0でパススルー
したいとなると情報が極端に少なくて、しかもいろいろ入り混じって大変
でした。

というわけで、今回はlivecam-serverというVMであれこれしてみた記録です。

http://fedoraproject.org/wiki/Features/UsbNetworkRedirection
https://github.com/ceph/qemu-kvm/blob/master/docs/usb2.txt

これやってみるか?

virt-install \
–connect qemu:///system \
–name=livecam-server \
–ram=1024 \
–file=/vps/images/livecam-server.img \
–file-size=20 \
–vcpus=1 \
–os-type=linux \
–os-variant=generic26 \
–network bridge=br0 \
–accelerate \
–hvm \
–location http://ftp.jp.debian.org/debian/dists/stable/main/installer-amd64/ \
–graphics vnc,port=5900,listen=0.0.0.0,keymap=ja,password=hogehoge \
–extra-args=’hostname=livecam-server’

mv /etc/libvirt/qemu/livecam-server.xml /vps/conf/
ln -s /vps/conf/livecam-server.xml /etc/libvirt/qemu/livecam-server.xml
と、とりあえずテケトーにインストールしてから

emacs /vps/conf/livecam-server.xml

----------
<domain type=’kvm’ xmlns:qemu=’http://libvirt.org/schemas/domain/qemu/1.0′>
:
:
<qemu:commandline>
<qemu:arg value=’-device’/>
<qemu:arg value=’usb-ehci,id=ehci’/>
</qemu:commandline>
</domain>
----------

として、

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 02:14:43.552+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1

という感じで

「-device usb-ehci,id=ehci」

をつけて起動してくれる。

ゲスト側でも見てみると、

dmesg | grep ehci

> [    0.554672] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
> [    0.554695] ehci_hcd 0000:00:05.0: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11
> [    0.554737] ehci_hcd 0000:00:05.0: setting latency timer to 64
> [    0.554746] ehci_hcd 0000:00:05.0: EHCI Host Controller
> [    0.554765] ehci_hcd 0000:00:05.0: new USB bus registered, assigned bus number 1
> [    0.554962] ehci_hcd 0000:00:05.0: irq 11, io mem 0xfebf2000
> [    0.565318] ehci_hcd 0000:00:05.0: USB 2.0 started, EHCI 1.00
> [    0.565346] usb usb1: Manufacturer: Linux 2.6.32-5-amd64 ehci_hcd

おー、認識してるー!!

で、あとはつなぎたいUSB機器をパススルーしてみようとしたが、やはり
これも直接qemuにオプションとして渡すのがいいみたい。

というのも、

emacs /vps/conf/livecam-server.xml

----------
<devices>
:
:
<hostdev mode=’subsystem’ type=’usb’>
<source startupPolicy=’optional’>
<vendor id=’0x0603’/>
<product id=’0x8122’/>
</source>
</hostdev>
:
:
</devices>
----------

として

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 02:19:44.230+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device usb-host,hostbus=2,hostaddr=2,id=hostdev0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> qemu-kvm: Warning: speed mismatch trying to attach usb device BUFFALO BSWHD01 Webcam to bus usb.0
> qemu-kvm: Warning: speed mismatch trying to attach usb device BUFFALO BSWHD01 Webcam to bus usb.0
> qemu-kvm: Warning: speed mismatch trying to attach usb device BUFFALO BSWHD01 Webcam to bus usb.0

という感じで、起動はするけどスピード違うよ、となる。
まして、ゲストOS(VM)側ではWEBCAMを認識していない。

ホストOS側で

lsusb

で見てみると

> Bus 002 Device 002: ID 0603:8122 Novatek Microelectronics Corp.
> Bus 003 Device 002: ID 045e:00a4 Microsoft Corp. Compact Optical Mouse, model 1016
> Bus 003 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> Bus 003 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 005 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 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
> Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

となっているので、先ほどの「vendor/products」での設定を削除して、
別途QEMUに直接オプションを渡す。

emacs /vps/conf/livecam-server.xml

----------
<domain type=’kvm’ xmlns:qemu=’http://libvirt.org/schemas/domain/qemu/1.0′>
:
:
<qemu:commandline>
<qemu:arg value=’-device’/>
<qemu:arg value=’usb-ehci,id=ehci’/>
<qemu:arg value=’-device’/>
<qemu:arg value=’usb-host,bus=ehci.0,hostbus=2,hostport=2,id=webcam’/>
</qemu:commandline>
</domain>
----------

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 02:55:43.370+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,hostbus=2,hostport=2,id=webcam
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> husb: open /dev/bus/usb/002/001: Permission denied

となってなんかアレな感じで蹴っ飛ばされているというか…だめ。

むむう…Permission deniedか…

https://bugzilla.redhat.com/show_bug.cgi?id=573850

ああ、これこれ。

emacs /etc/libvirt/qemu.conf

----------
:
# The user ID for QEMU processes run by the system instance.
user = “root”

# The group ID for QEMU processes run by the system instance.
group = “root”
:
----------

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 03:00:01.395+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,hostbus=2,hostport=2,id=webcam
> Domain id=1 is tainted: high-privileges
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> husb: open /dev/bus/usb/002/001: Operation not permitted

となり、

> husb: open /dev/bus/usb/002/001: Permission denied

から

> husb: open /dev/bus/usb/002/002: Operation not permitted

になった。

rootで動かしても「Operation not permitted」だからなぁ…

と、ここで詰まりつつ数日もがいてると、

https://www.centos.org/modules/newbb/viewtopic.php?topic_id=32889&forum=38

…ふむふむ、な、なんだと?

> I added my USB device path to the whitelist in /etc/libvirt/qemu.conf.
>
> BEFORE
>
> #cgroup_device_acl = [
> # “/dev/null”, “/dev/full”, “/dev/zero”,
> # “/dev/random”, “/dev/urandom”,
> # “/dev/ptmx”, “/dev/kvm”, “/dev/kqemu”,
> # “/dev/rtc”, “/dev/hpet”, “/dev/net/tun”,
> #]
>
>
> AFTER
>
> cgroup_device_acl = [
> “/dev/null”, “/dev/full”, “/dev/zero”,
> “/dev/random”, “/dev/urandom”,
> “/dev/ptmx”, “/dev/kvm”, “/dev/kqemu”,
> “/dev/rtc”, “/dev/hpet”, “/dev/net/tun”,
> “/dev/bus/usb/008/001”,
> ]
>
> Then restart libvirtd.
>
> service libvirtd restart
>
> Note, I did not change the user, group, and dynamic values from the defaults in the qemu.conf file.

ほほう、というわけで、

emacs /etc/libvirt/qemu.conf

----------
:
# This is the basic set of devices allowed / required by
# all virtual machines.
#
# As well as this, any configured block backed disks,
# all sound device, and all PTY devices are allowed.
#
# This will only need setting if newer QEMU suddenly
# wants some device we don’t already know about.
#
#cgroup_device_acl = [
#    “/dev/null”, “/dev/full”, “/dev/zero”,
#    “/dev/random”, “/dev/urandom”,
#    “/dev/ptmx”, “/dev/kvm”, “/dev/kqemu”,
#    “/dev/rtc”,”/dev/hpet”
#]
cgroup_device_acl = [
“/dev/null”, “/dev/full”, “/dev/zero”,
“/dev/random”, “/dev/urandom”,
“/dev/ptmx”, “/dev/kvm”, “/dev/kqemu”,
“/dev/rtc”,”/dev/hpet”,
“/dev/bus/usb/002/002”
]
:
----------

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 03:01:23.519+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,hostbus=2,hostport=2,id=webcam
> Domain id=1 is tainted: high-privileges
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> husb: open /dev/bus/usb/002/001: Operation not permitted

…ありゃおなじだ。

実は、WEBCAMは

> Bus 002 Device 002: ID 0603:8122 Novatek Microelectronics Corp.

ではなくて、

dmesg | grep webcam -i

> [    2.796664] usb 2-5: Product: BUFFALO BSWHD01 Webcam
> [    8.133352] uvcvideo: Found UVC 1.00 device BUFFALO BSWHD01 Webcam (0603:8122)
> [    8.155895] input: BUFFALO BSWHD01 Webcam as /devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/input/input5

で見るとわかるが、2-5につながっている…ので、qemuのcgroupの方はそのままだけど、VMのxmlの方は

emacs /vps/conf/livecam-server.xml

----------
<domain type=’kvm’ xmlns:qemu=’http://libvirt.org/schemas/domain/qemu/1.0′>
:
:
<qemu:commandline>
<qemu:arg value=’-device’/>
<qemu:arg value=’usb-ehci,id=ehci’/>
<qemu:arg value=’-device’/>
<qemu:arg value=’usb-host,bus=ehci.0,hostbus=2,hostport=5,id=webcam’/>
</qemu:commandline>
</domain>
----------

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 03:06:11.353+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,hostbus=2,hostport=5,id=webcam
> Domain id=1 is tainted: high-privileges
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> husb: open /dev/bus/usb/002/001: Operation not permitted

あら?かわらないし、ゲストOS側でも認識していない。

…実はこれは、ホストOS側でuvcvideoがWEBCAMをがっちりと握ってしまっているから。

lsmod | grep uvc

> uvcvideo               80924  0
> videobuf2_vmalloc      13163  1 uvcvideo
> videobuf2_core         38816  1 uvcvideo
> videodev              120947  2 uvcvideo,videobuf2_core
> media                  20444  2 uvcvideo,videodev

なので、ホストOS側で

emacs /etc/modprobe.d/blacklist.conf

----------
:
# Webcam not Catch
blacklist uvcvideo
----------

を追記するなりして握らないようにしてから、

service libvirtd restart; tail -f /var/log/messages

してからVMを再起動すると?

virsh start livecam-server ; tail -f /var/log/libvirt/qemu/livecam-server.log

> 2013-04-03 03:08:56.539+0000: starting up
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name livecam-server -S -M pc-1.2 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid 298b8f1e-d32e-110e-f47a-1ba92345615b -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/livecam-server.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/vps/images/livecam-server.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=23,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:5d:b0,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:19,password -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,hostbus=2,hostport=5,id=webcam
> Domain id=1 is tainted: high-privileges
> Domain id=1 is tainted: custom-argv
> char device redirected to /dev/pts/1
> husb: open /dev/bus/usb/002/001: Operation not permitted

と、あんまり見たくないメッセージだけど…

ゲストOS(VM)側で

lsusb

とすると、

> Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
> Bus 001 Device 002: ID 0603:8122 Novatek Microelectronics Corp.
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ついでに

dmesg

> [    3.170635] Linux video capture interface: v2.00
> [    3.200426] uvcvideo: Found UVC 1.00 device BUFFALO BSWHD01 Webcam (0603:8122)
> [    3.230386] input: BUFFALO BSWHD01 Webcam as /devices/pci0000:00/0000:00:05.0/usb1/1-1/1-1:1.0/input/input4
> [    3.230449] usbcore: registered new interface driver uvcvideo
> [    3.230545] USB Video Class driver (v0.1.0)

キタ――(゜∀゜)――!!

ちなみに、qemuの動作権限をrootでなくすと、やっぱり「Permission denied」になる。

まぁこれは

/dev/bus/usb/002/001
/dev/bus/usb/002/002

とかのパーミッションを664から666にするか、それともrootのままでいくか、
どっちにしてもどっちかがセキュリティレベルが変化するのであれかなぁ?

で、ちゃんと

□RaspberryPiというかRaspbianで動くWebCAM監視カメラ(ライブカメラ)

を参考にfswebcamとかで写真を撮ったら、ばっちりでした。

apt-cache search vlgothic
apt-get -y install ttf-vlgothic
apt-get -y install fswebcam

インストールできたら早速キャプチャしてみる。

fswebcam -d /dev/video0 \
-p YUYV -D 2 -S 16 -r 640×480 \
–jpeg 75 –line-colour ‘#FF000000’ \
–text-colour ‘#40FFFFFF’ –banner-colour ‘#FF000000’ \
–title “漢字も打てますよ” \
–font “/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf:12” \
/var/tmp/output.jpg

わーい。

今回のUSB2.0のパススルーをするポイントは

・カーネルオプションintel_iommu=onは関係ない(なくてもOK)
・QEMU-KVMのバージョンは1.xに(Fedora18は現時点で1.2.0)
・VMのdomainタグにはオプションが必要
・EHCIの認識はQEMUのコマンドラインオプションとして渡す
・USB2.0デバイスのhostbus/hostportはlsusbでなくdmesgで
・QEMUはroot/rootで動かすこと
・ホストOS側でそのデバイスを握っていてはいけない

でした。

さて、自宅サーバーをVM化して一台にまとめようっと。

以下余談…

DELL Optiplex 780(SFF)にまとめる予定ですが、これ4GB-DIMMモジュールが
刺さりますので、メーカーは最大8GBといってますけど、16GBまでいけます。

 

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です