内部のmicroSDを交換して復活したStreakですが、そのときに2GB以上のmicroSDを使えば余剰部分をユーザ領域として使えることがわかりました。そんなわけで、クラス10な16GBのmicroSDを購入したので再度分解、microSDを交換しました。
分解方法は先日紹介した動画の通り。左右のパーツは両面テープで張り付いてるだけなので端っこから根気よくはがしましょう。その下にねじが在りますが外すにはトルクスドライバーが必要です。
既存のmicroSDを外したら、とりあえずLinux上でddコマンドでバックアップをとり、新しいmicroSDにそれを上書きます。こうすることで、streakを初期化することなく内部のmicroSDが交換可能です。SDが使えるLinux機が手元になかったので、ubuntuをLive CDで起動して作業しました。
既存のmicroSDをバックアップ
$ sudo dd if=/dev/mmcblk0 of=/media/anywhere/sd.img
新しいmicroSDに差し替えてイメージを復元
$ sudo dd if=/media/anywhere/sd.img of=/dev/mmcblk0
この状態で、
/dev/mmcblk0p1 拡張パーティション
/dev/mmcblk0p5 (/cache) 約240MB
/dev.mmcblk0p6 (/data) 約1.7GB
の3つのパーティションが出来ているはずです。streak上でも作業はできますが、ついでなので残りの約14GB分の領域もパーティションを作ってext3でフォーマットしておきます。
$ sudo fdisk /dev/mmcblk0
コマンド(mでヘルプ): n
l logical(5 or over)
p primary partition (1-4)
p(入力)
Partition number (1-4): 2
コマンド(mでヘルプ): w
$ sudo mke2fs -j /dev/mmcblk0p2
これでとりあえず、14GB(実行値は約13GB程度)の領域が確保できました。
あとはこのmicroSDをstreakに戻して、作成した領域をマウントすればいいだけですが、起動時に自動的にマウントする方法がわかりませんでした。「init.dにスクリプトを置いておけばいい」という情報がいくつかありましたが、そもそもinit.dがありません。なので、gscriptでスクリプトを書いてショートカットから実行できるようにしました。
まず新しく作成した領域を/intsdにマウントします。
mount -o remount,rw /
mkdir /intsd
chmod 0755
chown system
mount -t ext3 -w /dev/block/innersd0p2 /intsd
mount -o remount,ro /
streak起動時にこのスクリプトを実行すれば、/intsdとしてmicroSD上の領域が使用できますが、アプリによって/sdcard以下しか使えないものもあるので、こちらにリンクを張ります。が、ユーザが使うmicroSDはFAT32フォーマットなのでシンボリックリンクが使えません。なので、mountのbindオプションを使います。
mount -o bind /intsd /mnt/sdcard/intsd
/mnt/sdcard/intsdはあらかじめ作成しておく必要がありますが、上記のスクリプトで/sdcard/intsdとして約13GBの領域が使えるようになりました。通常のmicroSD(約15GB)とあわせて約28GBの領域が確保できたことになります(容量はstreak上の端末エミュレータでの値。わかりやすく書くなら、内部microSD 16GB-2GB=14GB、外部microSD 16GBで30GBの領域確保です)。といっても、/sdcard/intsdはUSB接続した場合には使えないので、ここにファイルを置くにはstreak上でファイルマネージャを使うなどの手間が必要になります。なのでこちらには常に参照したい資料とか写真なんかを入れておくのがいいのかなぁ?
なお、クラス10に変更した恩恵だと思いますが、アプリの起動がかなり早くなりました。ezPDFReaderとか比較的起動が遅かったアプリが一瞬で起動するのはちょっと感動です。