2011年6月18日土曜日

Sidekick4G rfs to ext4



Sidekick4GはGalaxyS同様/system、/data、/cacheがrfsなのでこれをext4にしてみる…rfsのままでも別にストレス感じないですけど…

ext4対応kernel作成


initramfsイジるだけなんでそんなに大変じゃないけど説明するの大変なので細かいところは書かない

1)jbd2.koとext4.ko用意する…epic4gのカスタムROMとかから引っこ抜いてくるのが楽か
2)init.rc編集
kernel moduleをinsmodしてやる

insmod /lib/modules/jbd2.ko
insmod /lib/modules/ext4.ko


3)rfsで/systemとかマウントしてるところの上にext4でマウントするためのコマンド追加
これでext4とrfsの両方に対応できる

mount ext4 /dev/block/stl9 /system noatime nodiratime errors=continue nobh data=writeback barrier=0 noauto_da_alloc
mount rfs /dev/block/stl9 /system ro check=no

mount ext4 /dev/block/stl10 /data nosuid nodev noatime nodiratime errors=continue nobh data=writeback barrier=0 noauto_da_alloc
mount rfs /dev/block/stl10 /data nosuid nodev check=no

mount ext4 /dev/block/stl11 /cache nosuid nodev noatime nodiratime errors=continue nobh data=writeback barrier=0 noauto_da_alloc
mount rfs /dev/block/stl11 /cache nosuid nodev check=no


recovery.rcとかも同じ感じで編集…まぁしなくてもいいんですけど…

4)CWMRecoveryのadbでsuになれなかったのでdefault.propをro.secure=0な感じにしておいた。

5)ext4対応なinitramfs使ってカーネルビルドする…んでheimdall使って焼く

/systemと/dataをext4に変換


1)[ROM][CWM] Stock Deodexed KD1ここにあるCWM3XX.zipつかってCWMRecoveryに入る

2)/systemと/dataをバックアップ

busybox tar cf /sdcard/system.tar /system || halt
busybox tar cf /sdcard/data.tar /data || halt


3)/system、/data、/cacheをext4でフォーマットする

adb push jbd2.ko /tmp
adb push ext4.ko /tmp
adb shell insmod /tmp/jbd2.ko
adb shell insmod /tmp/ext4.ko
adb shell umount /system
adb shell umount /data
adb shell umount /cache
adb push fsck.ext4 /tmp
adb push mkfs.ext4 /tmp
adb push mke2fs.conf /etc
adb push tune2fs /tmp
adb shell chmod 0755 /tmp -R
adb shell chmod 0755 /etc -R
adb shell /tmp/mkfs.ext4 -L /system -b 4096 -m 0 -F /dev/block/stl9
adb shell /tmp/tune2fs -c 100 -i 30d -m 0 /dev/block/stl9
adb shell /sbin/mount -t ext4 /dev/block/stl9 /system
adb shell /tmp/mkfs.ext4 -L /data -b 4096 -m 0 -F /dev/block/stl10
adb shell /tmp/tune2fs -c 100 -i 30d -m 0 /dev/block/stl10
adb shell /sbin/mount -t ext4 /dev/block/stl10 /data
adb shell /tmp/mkfs.ext4 -L /cache -b 4096 -m 0 -F /dev/block/stl11
adb shell /tmp/tune2fs -c 100 -i 30d -m 0 /dev/block/stl11
adb shell /sbin/mount -t ext4 /dev/block/stl11 /cache

umountうまく出来ねーとかの場合はCWMRecovery再立ち上げするとうまくいったりする
元ネタはEpic4GのDameon87さん作One Click EXT4 Installer

4)バックアップしてた/systemと/dataを元に戻す

busybox tar xf /sdcard/system.tar -C /
busybox tar xf /sdcard/data.tar -C /


5)リブート

ざっとこんな感じ…