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がクラッシュしており、使い物にならず困っていたのである。

Friday, January 02, 2015

[Android] Eclipse から Android Studio に移行

Android StudioがAndroidの正式な開発環境に指定された。
それを受けて、従来のEclipseの環境からAndroid Studioに移行したので備忘録。

環境:Ubuntu 14.10 amd64

<Eclipse から Android Studioへの移行時の注意点>
公式サイトの通りにやれば難なくプロジェクトを移行することはできたが、自動作成されたbuild.gradleを少し改変する必要がある。
[公式サイト] https://developer.android.com/sdk/installing/migrate.html
  1. Android Studioインストール時には最新版のSDKをフェッチする。これと、Eclipseから移行した設定が違うので、buildSdkVersionが古くておかしい旨のエラーが出る。Tools->Android->SDK Managerを選択し、実際にインストールされているSDKバージョンを確認する。その番号("21.1.2"など)をbuild.gradleのbuildSdkVersionに記入。
  2.  ライブラリへの参照(support-v4など)がなくなってしまう。下記を参照にbuild.gradleを更新する。
    http://qiita.com/sugoi_wada/items/fc5f624d1d9da3136dd7
  3. aaptというファイルがない、というエラーが出る。
    Cannot run program "xxxx/android-studio/sdk/build-tools/android- x/aapt": error=2, No such file or directory
    これは下記サイトによると64bit環境で32bitバイナリを起動できないからだということ。サイトに記載の通り、32bitライブラリをインストールして解決。
    http://qiita.com/twittarsan/items/3fa0e595d8bb2bf22b1d