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

vi10のROMカスタマイズうまく行かないー

vi10のROMを変更せずにunpack・repackを試したが、LiveSuitで焼く時にエラー発生する・・・
Arch LinuxのLiveSuitはイメージの読み込みが成功しなかったんで、LiveSuitは結局Windows使った。
UbuntuでLiveSuitはうまく行くようなんだが、VirtualboxだとUSBシリアル?の認識が無理ぽかった


やった手順は、

展開・マウント領域の作成
mkdir mnt
mkdir mnt/system
mkdir mnt/root
userdataもいじりたかったが、生のfexファイルが存在しないような・・・。

LiveSuit用イメージファイルの展開
./awimage -r Vi10_JB_v0.4rc1.img fex
fexディレクトリに.fexファイル等にバラされる。
awimageはawutilsをmakeしたらできあがった。

system.fexをマウント可能にしてマウント → そして戻す
simg2img fex/system.fex system.img
sudo mount -o loop system.img mnt/system
sudo make_ext4fs -s -l 1048576000 system.fex mnt/system
system.fexは生imageでは無いようで、v719のROMと同じくsimg2imgを使うとマウント可能になった。
simg2imgはv719の時にAURから入れたが、PKGBUILDがARM専用になってるのでmakepkgの前に母艦用に変更する必要があった。
make_ext4fsのオプションは、-lでsimg2img後のsystem.imgと同じサイズを指定するが、-sをつけると空き領域分圧縮される。

boot.fexをバラしてrootfsを展開 → そして戻す
unmkbootimg /fex/boot.fex
initramfs.cpio.gz
zImage
cd mnt/root
sudo gunzip -c ../../initramfs.cpio.gz | cpio -i
sudo find . | cpio -o -H newc | gzip > ../../initramfs.cpio.gz.new
sudo ./mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz.new --base 0x40000000 --cmdline 'console=ttyS0,115200 rw init=/init loglevel=5' -o boot.fex
unmkbootimgは新たにAURから入れた。
mkbootimgはv719の時に使ってたんで流用した。
zImageがkernelと思うんで、kernelの取り出しは可能ぽいね。
unmkbootimgするとmkbootimgコマンドのオプション教えてくれるので、ファイル名以外はその通りに使った。

元の.imgに戻す
cp -r fex new
cp boot.fex new
cp system.fex new
export MALLOC_CHECK_=0
./awimage -r new new.img
環境変数MALLOC_CHECK_を設定しないとawimageでのrepackでエラーが出る。
これでnew.imgにLiveSuit用のイメージファイルができると思ったんだが、ROM焼きの際にエラーで止まる。
ROM焼き始まってから途中でエラーするからたちが悪い。
ROM焼き失敗するとLiveSuitでの焼き直しの際になかなかUSB接続を認識しないようなんだが、何度もやってると認識して公式ファームで焼き直せるぽい。


boot.fexとsystem.fexは元と同じサイズになってるんだが、
完成した.imgが元のサイズと微妙に違う。
awimagでのrepackに問題があるのかなあ・・・