26 November 2013

Xperia M:sdcard1をsdcard0下のディレクトリにマウント、大容量HDD接続時のメディアスキャン無効化 など

Xperia Mのディスク関連カスタマイズ

■ sdcard1(外部SD Card)をsdcard0内の指定ディレクトリにマウントする

アプリによっては、データ格納フォルダなどが/sdcard以下のディレクトリのみに限定されているものがある。Xperia Mでは/sdcard/storage/sdcard0のリンクであり、内部ストレージとなっている。

外部SD Cardがマウントされている/ext_card、つまり/storage/sdcard1/sdcard以下の適当なディレクトリにマウントしてやる(リンクを張ってやる)方法を説明する。

20131126-strage-mount.png

外部ストレージ(MicroSD Card)を/storage/sdcard0/ext_cardにマウントする、上の図で赤線の部分を実現するスクリプトをまず作成する。

/sdcard/link_sdcard1.sh
#!/system/bin/sh
mount -o bind /storage/sdcard1 /storage/sdcard0/ext_card

このスクリプトを、ルート権限で簡単に実行するために『Script Manager - SManager』をインストールしてもよい。 もちろん、『Android Terminal Emulator』で、suに移ってシェルコマンドを直接実行しても…

20131126-smanager-exec.jpg

赤矢印で示した、「ルート実行」チェックをONにして、『Run』ボタンを押してスクリプトを実行する。

■ メディアスキャン無効化

大容量ハードディスクをマウントした場合、メディアスキャンが延々と続く場合がある。topコマンドで確認したところandroid.process.mediaがCPUリソースを食っており、試しにこれを止めたところHDDへのアクセスが止まった。

本当に他に影響がないのかよく分からないが、ひたすらHDDにアクセスしまくられるのも困るので、このプロセスを止めるためのスクリプトを作成した。

/sdcard/kill_proc_media.sh
#!/system/bin/sh
ps | grep -e 'android.process.media' | awk '{print $2}' | xargs kill

※ このスクリプトは『Busybox Free』をあらかじめインストールしておく必要がある。

■ ntfsディスクのマウント

USB OTG Helper [root]』を使ってマウントすることが出来る。マウントポイントは、プログラムの画面上に表示されるが、/storage/sdcard0/UsbOtgDrives以下になる。

20131126-ntfs-mount.jpg