tune2fs

eugene373さんが最近リリースした[Kernel 3.1.6-ICUP] For ICS OTA 12/30 ( Speedy-1 Update )のupdate-scriptを読むと、speedyというスクリプトを呼んでいる箇所があります。中身は

#!/sbin/busybox sh
#

tune2fs -c 100 -i 30d -m 0 -o journal_data_writeback -O ^has_journal /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs -c 100 -i 30d -m 0 -o journal_data_writeback -O ^has_journal /dev/block/platform/s3c-sdhci.0/by-name/userdata

# do a filesystem check
fsck.ext4 -pf /dev/block/platform/s3c-sdhci.0/by-name/system
fsck.ext4 -pf /dev/block/platform/s3c-sdhci.0/by-name/userdata

exit 0

となっており、ファイルシステムの設定を変更するものとなっています。また、インストール時のみに実行することから、この設定はkernelを変更してもファイルシステム上に残ります。標準の設定に戻すには、tune2fsをキーワードに調べ物をしなければなりません。tune2fsによる/systemへのアクセスはCWM Recoveryを立ち上げ、/systemパーティションをマウントすることで実行できます。

Nexus Sのsystemパーティションの状態をtune2fsで取得すると、標準(のはず)状態では

# tune2fs -l /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs -l /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs 1.41.6 (30-May-2009)
Filesystem volume name:   <none>
Last mounted on:          /system
Filesystem UUID:          57f8f4bc-abf4-0000-675f-946fc0f9f25b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal resize_inode filetype needs_recovery extent sparse_super large_file
Filesystem flags:         unsigned_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Remount read-only
Filesystem OS type:       Linux
Inode count:              32768
Block count:              131072
Reserved block count:     0
Free blocks:              53997
Free inodes:              31568
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      31
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Last mount time:          Sat Dec 31 02:22:21 2011
Last write time:          Sat Dec 31 02:22:21 2011
Mount count:              20
Maximum mount count:      -1
Last checked:             Thu Jan  1 00:00:00 1970
Check interval:           0 (<none>)
Lifetime writes:          291 MB
Reserved blocks uid:      0 (user unknown)
Reserved blocks gid:      0 (group unknown)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   tea
Journal backup:           inode blocks

前述のスクリプトが走った後

# tune2fs -l /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs -l /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs 1.41.6 (30-May-2009)
Filesystem volume name:   <none>
Last mounted on:          /system
Filesystem UUID:          57f8f4bc-abf4-0000-675f-946fc0f9f25b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      resize_inode filetype extent sparse_super large_file
Filesystem flags:         unsigned_directory_hash
Default mount options:    journal_data_writeback
Filesystem state:         not clean
Errors behavior:          Remount read-only
Filesystem OS type:       Linux
Inode count:              32768
Block count:              131072
Reserved block count:     0
Free blocks:              56867
Free inodes:              31817
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      31
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Last mount time:          Sat Dec 31 03:30:19 2011
Last write time:          Sat Dec 31 03:30:19 2011
Mount count:              8
Maximum mount count:      100
Last checked:             Thu Jan  1 00:00:00 1970
Check interval:           2592000 (1 month)
Next check after:         Sat Jan 31 00:00:00 1970
Lifetime writes:          284 MB
Reserved blocks uid:      0 (user unknown)
Reserved blocks gid:      0 (group unknown)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   tea
Journal backup:           inode blocks

両者の違いは、

Filesystem features:      has_journal resize_inode filetype needs_recovery extent sparse_super large_file

Filesystem features:      resize_inode filetype extent sparse_super large_file
Default mount options:    (none)
Filesystem state:         clean

Default mount options:    journal_data_writeback
Filesystem state:         not clean
Free blocks:              53997
Free inodes:              31568

Free blocks:              56867
Free inodes:              31817
Maximum mount count:      -1
Check interval:           0 (<none>)
Journal inode:            8

Maximum mount count:      100
Check interval:           2592000 (1 month)
無し

このあたりを調べて行けば、標準に戻すことが出来るはず。

Man page of tune2fsとspeedyスクリプト、tune2fs -lの結果を眺めながら、標準の設定に戻せそうなスクリプトを下記に示します(まだ試していません)

tune2fs-default

#!/sbin/busybox sh
#

tune2fs -c 20 -i 0 -m 5 -o ^journal_data_writeback -O has_journal /dev/block/platform/s3c-sdhci.0/by-name/system
tune2fs -c 20 -i 0 -m 5 -o ^journal_data_writeback -O has_journal /dev/block/platform/s3c-sdhci.0/by-name/userdata

# do a filesystem check
fsck.ext4 -pf /dev/block/platform/s3c-sdhci.0/by-name/system
fsck.ext4 -pf /dev/block/platform/s3c-sdhci.0/by-name/userdata

exit 0