Sunday, January 04, 2015

Ubuntu で usbのautosuspend を解除

[経緯] 最近USB3.0直結のUSBメモリ(64GB)を買ったので、UbuntuのメインHDD化してみた。
ところが、ノートPCの電源動作を電池に切り替えたあとに、USBメモリのreadが失敗するエラーがでていた。

[問題]Linuxの電源切り替え時に、USBが再認識されていない(USBのデバイスへのIOが失敗する)


[解決]
Linuxでは、USB は電源の切り替えやサスペンドでAutosuspend(自動停止)するらしい。
一部ハードウェアはこの復帰動作が失敗するので、自動停止を解除しておく必要がある。
今回のusbメモリもこの例にもれなかったということになる。
このためusbcoreというモジュールのパラメータであるautosuspendを-1に変更すべきである。
しかし、Ubuntuは少し変であり、/etc/modprobe.dの直下を変更しても反映されない。
そこで、/etc/default/grubに一部変更を加えることで、このモジュールパラメータが自動的に変更されるようにできる。
 http://unix.stackexchange.com/questions/91027/how-to-disable-usb-autosuspend-on-kernel-3-7-10-or-above

[*蛇足]
 USBメモリをメインHDD化して下記を実現したかった。
  • Ubuntu+Android Studio開発環境を手軽に2つのPC間で持ち運びたい(しかもファイルサーバは使わない)
  • そしてホームディレクトリ等も含めてまるごと持ち運びたい
上記環境は構築できたが、たびたびreadが失敗し、OSがクラッシュしており、使い物にならず困っていたのである。

No comments:

Post a Comment