Androidの/extsdと/sdcard

 私の携帯電話はAndroidなので、携帯電話→(なぜか)趣味→趣味とスポーツカテゴリで、Android Padの話もこのカテゴリで書いてみるが…いや、違和感ありすぎ。別のカテゴリに移すかも。
 
 随分間が空いてしまった。まあ、ブログを始めるのもやめるのも何回もできる。禁煙と一緒である。
 
 昨年末からの仕事でドタバタしてこの連休でようやく一息ついたところ。ストレスを発散するために購入したアンドロイドタブレットのTips.

私が使っているのはTeclast P85なる画面のサイズ(8インチで1024x768)以外取り柄の無い中華タブレット。Android 4.0にアップデートしたらroot権限も取れちゃって電話機のHTC Desire HDに比べるとたいへんお気軽である。以下はrootが取れているのが前提の記事です。
 
 最近のタブレットはSDカードを
/mnt/extsd
などに(名前は機種によって異なる)マウントするようで、AdobeのReaderが認識しない。これではドキュメントリーダーとしてこの中華Padの勿体が著しくスポイルされることになる。他のリーダーも試したが、やっぱり本家最高(PCならFoxIt)で、これを使いたい。
 中華Padメーカーのデフォルトは内蔵メモリをシステム用の1GBとデータ用の残り部分(私のは約15GB)に分割し、後者を/sdcardとしてマウントするのが流行りのようだ。(だから、内蔵15GB領域にデータを入れれば良いのだが)
現バージョンのAdobe Readerは、「文書」をタッチすると/sdcardの下をスキャンしてPDFを一覧表示する。なので、外部SDカードを/mnt/sdcard以下のディレクトリとしてシンボリックリンクを張れば解決するはず。(/sdcardと/mnt/sdcardは最初からリンクされているようで、同じ。)
 
 これがうまくいかなくて三日くらい悩んで、先ほどようやく内蔵の15GBがFAT32なことに気付いた。orz
シンボリックリンクはFAT(多分FAT32も)には張れない。

市販のSDカードはFAT32でフォーマットしてある。なので中身を一旦PCにコピーしてNTFSで再フォーマットし、中身を戻す。(これで4GB以上のファイルも入るようになる。)
次にタブレットをUSBディスクとしてマウントし、分割された15GBの中身をPCにコピーし、NTFSでフォーマットし、中身を書き戻す。
 
追記1:こんな面倒なことをしなくても、FATであればWindowsの内蔵機能でNTFS変換ができた。まあ、バックアップを取っていた方が安全なのは変わらないけど。

PCとタブレットを切り離し、従来通り起動するのを確認する。最近のLinuxはFATだろうがNTFSだろうが対応しているので大方大丈夫だろう。exFATは知らない。凝り性ならext3でも4でも好きにして良いが、不可視属性のファイル・フォルダには気をつけよう。
そして最後に何かしらのターミナルソフト、私の場合は「端末エミュレータ」を起動し、
su
cd /mnt/sdcard
ln -s /mnt/extsd extra
と(懐かしい)コマンドを入れてやると
/mnt/sdcard/extra/
以下に外部SDカードの中身が見られるようになる。これをやる前にディレクトリのpermissionを変えなくてはならないかも知れない。
 
追記2:コマンドが苦手な場合、Root Explorerを使うと簡単にリンクが張れる。デバイスのroマウント属性もボタン一つでrwにできるし。
 
 これでAdobe Readerを立ち上げ、一番上の「文書」をタッチすると外部SDカード上のPDFもリストアップされるようになった。
 
 ググってみると /etc/voId.fstab を弄るとsdcardとextsdが入れ替えられるよ、という記事が多いけど、内蔵15GB領域のアクセス頻度落ちそうだし、既にかなりのアプリを/sdcardに移動してきているし、内蔵メモリはアプリ、外部SDはデータと使い分けたいので私のお勧めは上記。これなら外部SDを抜いても全アプリ動くしね。
 
 一応Adobeにも外部SDに対応して、と要求は出した。まあ、過渡期のTipです。
追記3:この方法の難点は、この後CWRを使ってROMを入れ替えようとしてもリカバリカーネル?がzipを格納したsdcardのディスク形式を読めない可能性がある。うーん。