[Kubuntu/Ubuntu] VMware ServerでUSB機器を利用する

2008/08/31PC::VMware

Debianのサーバだけではなく、KubuntuのメインマシンにもVMware Serverを導入しているのだが、KubuntuマシンではどういうわけかUSBが利用できなかったので調べてみた。

環境

VMware Server環境1
Debian GNU/Linux 4.0(etch)
VMware Server環境2
Kubuntu 8.04.1 (Hardy Heron)
VMware Server
1.0.6
VMware Server Console
1.0.6

VMware ServerにおけるUSBデバイスの検出

VMware ServerはホストにUSBデバイス接続された際に、/proc/bus/usb/以下にUSBデバイスファイル*1が作成されることを期待しているようです。Debian etchではVMware Serverが期待するように/proc/bus/usb/以下にデバイスファイルが生成されますが、Kubuntuでは/dev/bus/usb/以下にデバイスファイルが生成され、/proc/bus/usb/以下には生成されません。このため、KubuntuをホストOSとする場合にVMware ServerはUSBデバイスを検出できず、結果としてゲストOSでUSBデバイスを利用できないということが起こっています。

*1 : 正式名称は何というのでしょうか?

解決策

/etc/init.d/mountdevsubfs.shを編集することで、/proc/bus/usb/以下にUSBデバイスファイル?が作成されるようにします。

#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb

上記部分のコメントを外す。

#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb

編集後に以下のコマンドを実行

$ sudo /etc/init.d/mountdevsubfs.sh

これでVMware Server Consoleで接続するとUSBデバイスが利用できるようになっているはずです。

参考

2008/08/30(土)Intel PRO/1000 CT Desktop Adapter

現在Kubuntuを導入し、メインマシンとして利用しているIntelliStation M Pro (6230)にはIntel PRO/1000CT Desktop Adapterがオンボードで実装されています。このIntel PRO/1000CT Desktop Adapterはその名の通り10BASE-T/100BASE-TX/1000BASE-Tとして利用できるのですが、どういうわけか最近GbEでリンクしなくなってしまい、100Mbps接続しか利用できなくなってしまっていました。

Intel PRO/1000CT Desktop Adapterに関連するdmesgは以下の通り。

kaede@reika:~$ dmesg | grep eth0
[   67.532079] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   82.032159] e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[   94.254838] bridge-eth0: enabling the bridge
[   94.254845] bridge-eth0: up
[   94.254848] bridge-eth0: already up
[   94.254852] bridge-eth0: attached

問題の切り分け

ネットワークの問題ですので、OSI参照モデルの下位層から順に調べていきます。

レイヤ1 物理層

スイッチをNETGEAR GS516Tに変更し、その際にケーブルも替えた為ケーブルを疑っていたのですが、CAT.6のケーブルに替えてもGbEで接続できることはなかったのでケーブルが問題ではないようです。

ちなみにケーブルはほとんど自作しており、どこの家庭にもあるような安物のかしめ工具で作っているのでかしめが甘かったのを疑っていたのですよ。作成自体に問題がなかったのでよかったよかった(笑。

レイヤ2 データリンク層

この層に該当するのはスイッチ(GS516T)とNIC(Intel PRO/1000 CT Desktop Adapter)となります。スイッチ側では他のGbE対応デバイスは当然のことながらGS516Tは無罪だと思われますが、念のため過去に接続していたGbE対応ルータ(MKZ-04G)に接続しても100Mbpsのまま。

ここまでくるとNICしか怪しいものが残らなくなってしまいました(汗。
仕方がないのでそこら辺に転がっていたIntel PRO/1000MT Desktop Adapterを増設して様子を見ることにします。
で、Intel PRO/1000MT Desktop Adapterのdmesgは以下の通り。

kaede@reika:~$ dmesg | grep eth1
[   67.818742] e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
[   80.125706] e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rosi参照モデルX/TX
[   83.474369] e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

……何の問題もなくGbEでリンクしやがったΣ(∵)

第3層以上

あとはドライバの方の問題と考えられますが、Windows環境にてIntel純正ドライバを当ててもGbEでリンクすることは無かったので、NIC自体の問題と判断できる。

結論

  • Intel PRO/1000CT Desktop AdapterがGbEでリンクできなかったのは経年劣化か、その他の理由であるかは不明。
  • Intel PRO/1000CT Desktop AdapterでGbEでリンクしていたときもオートネゴシエーションにより、いつの間にか100Mbpsリンクになっていたことがあった。

上記のことからたまたまハズレを引かされていたのか、PRO/1000CTの性能が悪いのかは不明であるが、安定してGbEで利用するにはPRO/1000MTあたりに換装するのが良さそう。PRO/1000CTで同様の問題が発生している場合は、別のGbE NICを増設すると幸せになれるかもしれません。

おまけ

スイッチに利用しているGS516Tであるが、1つのマシンに2つも3つもNICがあるため早くも16ポート全て埋まりそうです(汗。と、いうか1ポートはノートPC接続用に予約されているし、もう1ポートはカスケード接続用なのでもう空きがありません(激汗

gs516t.jpg

これだけ見たらちょっとした事務所並み(苦笑

[Debian/Apache2] mod_rewriteを有効にする

2008/08/19PC::Linux/BSD

adiaryでmod_rewriteを利用しようとしたところ、mod_rewriteが有効になっていないみたいだったので調べてみた。

環境

  • Debian GNU/Linux 4.0r3 (etch)
  • apache 2.2.3
  • adiary 2.002

mod_rewriteを有効にする

a2enmodを利用しmod_rewriteを有効にする。

# a2enmod rewrite

apache2のDirectoryディレクティブを以下のように設定する

AllowOverride FileInfo

apacheを再起動する。

adiary側の設定(.htaccess)

adiary設置ディレクトリに.htaccessを作成し以下のように記述*1

<IfModule mod_rewrite.c>
    RewriteEngine  On
    RewriteBase    /
    RewriteCond    %{REQUEST_FILENAME}	!-f
    RewriteRule    ^(.*)$	   	adiary.cgi/$1	[L]
</IfModule>

これでadiary.cgiなしでアクセスできるはず。

*1 : RewriteBaseなどの設定は個々の環境に合わせて変更する必要がある

参考

特殊なマウスを使う

2008/08/17PC::Linux/BSD

X環境で以下のポインティングデバイスを利用する方法について調べてみた。

  • 5ボタンマウス
  • トラックポイント

環境

OS
Kubuntu 8.04.1 日本語ローカライズド
Window Manager
KDE 3.5.9
5ボタンマウス
Microsoft Wireless IntelliMouse Explorer 2.0 (USB)
トラックポイント
IBM Space Saver II Keyboard
Firefox
3.0.1 (Ubuntuパッケージ版)

5ボタンマウスを利用する

Kubuntuデフォルトの設定では5ボタンマウスの第4、第5ボタンが機能しません。これらを利用可能とするには/etc/X11/xorg.confをのマウスに関するセクションを以下のように編集します。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "Protocol" "auto"
    Option        "Device" "/dev/psaux"
    Option        "Emulate3Buttons" "no"
    Option        "ZAxisMapping" "4 5"
EndSection

ちなみに、このマウスのセクションはnVidia Settingsが吐き出すものです。

トラックポイントを利用する

トラックポイント4ではセンターボタンを押下時にポインタを動かすことにより、スクロールさせる機能が備わっています。これをLinux上で利用する場合のメモ。

xorg.confの設定

こちらの記事を参考に、5ボタンマウスを利用する場合と同様に以下のように/etc/X11/xorg.confのマウスのセクションを変更します。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "Device" "/dev/input/mice"
    Option        "Protocol" "ImPS/2"
    Option        "Emulate3Buttons" "on"
    Option        "Emulate3Timeout" "50"
    Option        "ZAxisMapping" "4 5"
    # スクロール機能の有効化
    Option        "EmulateWheel" "on"
    # センターボタン押下時にスクロールボタン機能を割り当て
    Option        "EmulateWheelButton" "2"
    Option        "EmulateInertia" "50"
    # 横スクロール機能の有効化
    Option        "XAxisMapping" "6 7"
EndSection

Firefox側の設定

Firefoxにて横スクロール機能を利用する場兄はabout:configにて以下の項目を設定する必要がある。

  • mousewheel.horizscroll.withnokey.action = 0
  • mousewheel.horizscroll.withnokey.numlines = 1

設定の効果

センターボタンをホールド時にはスクロールボタンとして機能することとなり、Windows環境でのトラックポイントのように利用することが出来ます。なお、Windowsのトラックポイントドライバはセンターボタンを常にスクロールボタンとして機能させていますが、上記の設定の場合、センターボタンクリック時には通常のセンターボタンとして動作するため、FirefoxでCtrl+クリックで新しいタブに開いていたところをセンターボタンクリックのみで実現できます。

また、この設定を通常の3ボタンマウス*1に適用することでトラックポイントライクな操作性を実現することが出来ます。

*1 : ホイールではない純粋な3ボタンマウス。いや、ホイールタイプのマウスでも同様に動作しますけど、ホイールタイプなら素直にホイール回せ、と(苦笑

5ボタンマウス+トラックポイントの組み合わせの場合

これまでの設定を参考に、私の環境である5ボタンマウス+トラックポイントの組み合わせの場合を記述してみた。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "CorePointer"
    Option        "Device" "/dev/input/mice"
    Option        "Protocol" "ExplorerPS/2"
    # マウスのボタンの数
    # 5ボタン+上下スクロール+チルトスクロールで9つ
    Option        "Buttons" "9"
    # マウスのボタンのマッピング
    # 第4ボタン: 8(Firefoxで「戻る」ボタン)
    # 第5ボタン: 9(Firefoxで「進む」ボタン)
    Option        "ButtonMapping "1 2 3 8 9"
    Option        "Emulate3Buttons" "false"
    Option        "Emulate3Timeout" "50"
    Option        "ZAxisMapping" "4 5"
    # スクロール機能の有効化
    Option        "EmulateWheel" "on"
    # センターボタン押下時にスクロールボタン機能を割り当て
    Option        "EmulateWheelButton" "2"
    Option        "EmulateInertia" "50"
    # 横スクロール機能の有効化
    Option        "XAxisMapping" "6 7"
EndSection

ちゃんとした設定を行うにはxorg.conf(5)を読まないといけないのだが、日本語化されたものがないのが辛い。そのうち読むつもりはあるが、とりあえず意図した通りに動いているのでよしとする。