TuxOnIce + hibernate-scriptとUSBキーボード/マウス
TuxOnIceによる休止状態からの復帰時にUSBのキーボードとマウスが利かなくなる場合がある。これはTuxOnIceとhibernate-scriptのバージョンによって起きたり起きなかったりする。また、全てのUSBキーボード/マウスにこの記事の内容が当てはまるという保証はできない。
関連デバイスドライバをモジュールにして、復帰前後にモジュールの処理をして対処
最も確実な対処法は、USB関係とHID関係のデバイスドライバをモジュールにした上で、hibernate-scriptにモジュールの休止時の削除と復帰時の読み込みの設定をすること。しかし、手元の環境では、(2007/11/30)hibernate-script 1.97(1.97-r3)の時点ではevdevでも動作したが、確実に動作するかは怪しく、しばらくこれで運用して様子を見る。
(2007/12/1)一度キーボードが利かなくなり、結局、evdevでは復帰後に確実に動作するとは言えないようだ。
以下はカーネル(2.6.23)での設定例。OHCIとUHCIは、使用しているUSBコントローラ(のメーカー)によってどちらか一方が使われる。
Device Drivers ---> [*] HID Devices ---> [CONFIG_HID_SUPPORT] <M> USB Human Interface Device (full HID) support [CONFIG_USB_HID] [*] USB support ---> [CONFIG_USB_SUPPORT] <M> Support for Host-side USB [CONFIG_USB] <M> EHCI HCD (USB 2.0) support [CONFIG_USB_EHCI_HCD] <M> OHCI HCD support [CONFIG_USB_OHCI_HCD] < > UHCI HCD (most Intel and VIA) support [CONFIG_USB_UHCI_HCD]
hibernate-scriptの設定例。
(2007/11/30)hibernate-script 1.97(1.97-r3)の時点では以前書いた設定ではうまくいかず、UnloadModulesを使用することで動作することを確認したため、設定を修正。
ファイル名: /etc/hibernate/common.conf
UnloadModules usbhid ehci_hcd ohci_hcd usbcore LoadModules auto
「ohci_hcd」の部分は、UHCIの環境では「uhci_hcd」。
下は、X.orgのkeyboardドライバとmouseドライバを使用する設定の例。
ファイル名: /etc/X11/xorg.conf
Section "InputDevice" Identifier "Generic Keyboard" Driver "keyboard" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" EndSection
Identifierの値は「Section "ServerLayout"」の中の名前と合わせておく。
バージョンによっては組み込みでも大丈夫?
「Linux 2.6.23/TuxOnIce 3.0-rc1/hibernate-scipt 1.97」の環境では、上で挙げたUSB関連のデバイスドライバを全て組み込みにしてマウスにevdevを使用しても復帰時に問題が出ないことが多く、カーネル組み込みでも大丈夫なのか、様子を見ているところ。*2過去の「Linux 2.6.19/Suspend2 2.2.9/hibernate-script 1.94」という組み合わせでは、組み込みで問題なく安定動作していたが、その後しばらくうまく動いていなかったのでモジュールにしていた。下はHID関係のデバイスドライバを組み込みにして、マウスにevdevを使用するカーネル設定の例。
Device Drivers ---> [*] HID Devices ---> [CONFIG_HID_SUPPORT] <*> USB Human Interface Device (full HID) support [CONFIG_USB_HID] [*] USB support ---> [CONFIG_USB_SUPPORT] <*> Support for Host-side USB [CONFIG_USB] <*> EHCI HCD (USB 2.0) support [CONFIG_USB_EHCI_HCD] <*> OHCI HCD support [CONFIG_USB_OHCI_HCD] < > UHCI HCD (most Intel and VIA) support [CONFIG_USB_UHCI_HCD] Input device support ---> <*> Event interface [CONFIG_INPUT_EVDEV]
hibernate-scriptの設定の中の以下の部分は一時的にコメントアウトしている。
ファイル名: /etc/hibernate/common.conf
# UnloadModules usbhid ehci_hcd ohci_hcd usbcore
LoadModules auto
キーボードにevdevを使用すると何故か配列がおかしくなるので、マウスのみevdevにしている。Xの設定は「man evdev」のものをコピペしてあるだけ。
ファイル名: /etc/X11/xorg.conf
Section "InputDevice" Identifier "Generic Keyboard" Driver "keyboard" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "evdev" Option "evBits" "+1-2" Option "keyBits" "~272-287" Option "relBits" "~0-2 ~6 ~8" Option "Pass" "3" EndSection
(2007/11/30)その後、何度か復帰後にキーボードが利かなくなることが出たため、USB関連はモジュールにした。
(2008/5/14)「Linux 2.6.25/TuxOnIce 3.0-rc7/hibernate-script 1.97-r4」の組み合わせで、USB関連はカーネル組み込みにしているが、復帰時に操作が利かなくなることはなく動作している。