ジャンル不定の日記です。

SDカードにリンク張るのダメだった

SDカードにリンク張るのダメだった。
ext4のSD上に /data/app 同じ状態でコピーしてリンク張ってみたが、再起動したらアプリが消えてた。

というわけで、ext4のSDだと破損しているとか言われちゃうし、SDカードを内部ストレージにするのは諦めた。
あと、端末届いた状態ではswapは存在しなかったんだが、公式ファームだと最初から400Mほどswapが有効だった。
/enableswap.sh ってスクリプトがやってるのかな?
ファームの容量変わるとサイズ変動するような気がするから、空き領域がswapになるのかな?
リアルメモリも1GBあるわけだし、swapが400MBあれば問題無さそう。
SDをFATにすれば普通に使えるし、SDをext4で使うのはやめるわ。


後、いつの間にかadbが普通に#になってたんだが、
SDのリンク作業でアプリ消えちゃったから再度ファーム作りなおして更新したが、
その際に、ツールで入ったと思われる、
/system/xbin/su
/system/xbin/sugote
を最初から入れといたんだが、
そうしたらツール使わない状況で最初から#になったわ。

怪しいツール使わずroot化出来てだいぶ良い感じになったが、
/system/app に入ってるアプリがほぼ消せないぽいんで、/data/app に入れたら消せないかな?
というわけで、再度ファームのカスタマイズ。
なんだが、/system/appには、.apkだけのと.odexが存在するのがあった。
とりあえず、.apkだけのは移動して平気と思ったんで全部移動。
したら、端末起動しなかったw
移動させたのがまずいのか、userdata.imgのりパックに問題があったのかはわからない。

再度ファーム更新が必要になったが、
今度は、/system/app内にある中華アプリと思われるものをrmして作った。
そしたら中華アプリ無しで起動した。
この方法でいいわ。
/data/appの方は端末上で普通に消せるんで、userdata.imgは公式ファームのものに戻した。

だが、この回のファームカスタマイズの際に、
/system/xbin/su
/system/xbin/sugote
を入れずにやったからだと思うんだが、
adbが$になっちゃった・・・
adbってsuで起動するん?

というわけで、再度更新。
まあ、良い感じになってきたんで、手順書いとく。



boot.imgのカスタマイズ。
公式ファームのboot.imgは、unpack-MTK.plというスクリプトでアンパック、repack-MTK.plでリパックができた。
たぶんここが公式。

./unpack-MTK.pl boot.img
でアンパック。
カーネルが boot.img-kernel.img に出力され、
ファイルシステムが boot.img-ramdisk に展開される。

/default.prop の変更は、
ro.secure=0
ro.allow.mock.location=1
ro.debuggable=1
の3箇所。
変更目的はadbを#にすることだが、この変更意味ないかも・・・

boot.img の変更は以上なのでリパック。
./repack-MTK.pl -boot boot.img-kernel.img boot.img-ramdisk boot.img.new
とすれば、カスタムイメージがboot.img.newに出来上がる。
オリジナルがあった場所に置いて、MTKのFlashToolで書き込める。


system.imgのカスタマイズ。
今度は simg2img でアンパック、 make_ext4fs でリパックできた。
この2つは ext4_utils ってパッケージみたいなんだが、母艦がArchでAURにあったからそれ使った。
だが、AURにあるやつはPKGBUILDがARM専用になってるんで、PKGBUILDを、
arch=("x86_64")
に修正する必要があった。

simg2img system.img system.img.tmp
で、普通にマウントできるext4のイメージが system.img.tmp に出力される。
mount -o loop system.img.tmp mnt
って感じでディレクトリにマウントできる。

マウントポイントが/systemになるわけだが、build.propを、
ro.product.locale.language=ja
ro.product.locale.region=JP
persist.sys.timezone=Asia/Tokyo
の3箇所を修正した。
これで起動時に最初から日本語で日本時間になる。

system.img内のappディレクトリは、ほぼ端末上で消せないアプリなんで、rmで消す。
中華アプリと思われる以下のapkを消した。
ONDA_AnZhi_V5_1_20140124.apk
ONDA_QQ_IME_v42.apk
ONDA_Tudou_v3.1_1223.apk
ONDA_WpsOffice_v59.apk
ONDA_iReader_V2720_20140106.apk
OndaHelp_20140415.apk
UCBrowser_V3.0.0.apk
game.apk
acount.apk
OperaService.apk
userdata.img内にあるapkは端末上で普通に消せるので、それと合わせて不要な中華アプリはほぼ消せたが、まだ若干ありそう・・・
まあ、残りは端末上で無効にするだけにしておく。

system.imgの修正は、他に、
xbinにsuとsugoteを入れた。
adbが#なのか$なのかは、/default.propではなく、suかsugoteの存在な気がする。
いまいち条件がわからないんだが、このバイナリがないと$になっちゃっうぽかった。
この2つのバイナリは怪しいroot化ツール使ったらいつの間にか入ってたんでバックアップしといたやつ。
使ったら入ってたツールは、「SuperOneClick」ってやつじゃないかと思う。

以上でsystem.imgの修正は終わり。
make_ext4fs -l 734003200 system.img.new mnt
って感じで、system.img.new にカスタマイズした system.img が出力される。
-l オプションは出力されるイメージのバイト数だが、小さすぎても大きすぎてもダメだと思う。
simg2imgで出力される生イメージと同じ程度にしとけば良さそう。


ファーム更新ができたら、端末上で普通に消せる中華アプリの駆除。