割と今更なネタ。
1.6の時もやろうと思ったけど、sdカードのパーティション分割が面倒だったので。
やっとEASEUS Partition MasterのHome Editionが64bitに対応したのでやってみた。
XDAのスレッドにあったものを自分用に解釈した覚え書き。 要ROOT。
/data/appと/data/app-privateをSDカードのext2パーティションにリンクするだけなんだけど、
mountのタイミングが面倒なのだそうだ。
0.準備
これ(mount_sd.shとsh.sh)をダウンロードして、解凍後にSDカードのルートに配置しておく。
1.SDカードのパーティション分割
microSDにext2パーティーションの作成する。 方法についてはここ→XDA
3GBで作成するとクラッシュするらしく、最大1.4GBを推奨とのこと。
そんなわけで、1.0GBのext2パーティーションの作成した。
2.busyboxの配置とインストール
z4rootあたりでrootedなら、/system/binにbusybixがあると思うので、
> adb shell
$ su
# mount -o remount,rw /dev/block/mtdblock0 /system
# busybox –install -s /system/xbin
3.app2sdのインストール
# mkdir /system/sd; chmod 777 /system/sd
# mount -t ext2 -o noatime,nodiratime /dev/block//vold/179:2 /system/sd
# cp -a /data/app /system/sd/app
# cp -a /data/app-private /system/sd/app-private
# mv /data/app /data/appbak; ln -s /data/appbak /data/app
# mv /data/app-private /data/app-privatebak; ln -s /data/app-privatebak /data/app-private;
# mv /system/bin/sh /system/bin/sh_bak; cp /sdcard/sh.sh /system/bin/sh; chmod 755 /system/bin/sh
# cp /sdcard/mount_sd.sh /etc/mount_sd.sh
# chmod 644 /etc/mount_sd.sh
# sync
# reboot
以上。
再起動後に、
ls –l /data/app
としてやって、
app –> /system/sd/app
と表示されていれば成功。
アンインストールは面倒なので再Flashを推奨
XDAのapp2sdには/data/app-private が無かったけど、一応リンクの対象に追加してみた。
app-privateもリンクしてやらないとプロテクトなアプリをインストール時に失敗してしまうからだ。
たぶん、プロテクトなアプリは/data/appにzip、/data/app-privateにapkがあるのから判断して、
圧縮後のmv時にcross-device linkになって失敗してるんだろうな。
mount_sd.shに書き加えれば起動時に実行してくれるようだから、swapしてみようかな。
非常に参考になりました。
おかげさまで、xperiaにapp2sd環境を設定できました。
ありがとうございます!
うまくいかないんですけど、どこのSDカード使っていますか?
ピンバック: ソニエリXperia X10 miniでApp2SDが動いたと思ったら、無限再起動ループ | 心にうつりゆくよしなしごと