[Galaxy S] Galaxy S のプチフリ対策(外部SDカード利用)

[更新] プチフリに関して検索でこのページを訪れる方が多いので、更新しておきます。

現在、プチフリ対策として、SDカード利用は古いです。また、キーワードとしては、LagFix を使ってみてください。

CFLagFix や、OnClickLagFix apk Voodoo LagFix があります。
[Galaxy S] CFLagFix v1.70 for SGSをやってみた

本ブログでも最新の LagFix を試しているのでそちらも参照してみてください。


Galaxy S は、内部のデータファイルを置いてあるパーティションが遅くアプリケーションの切替時や日本語入力時に一瞬止まるプチフリが起こります。

ファームのバージョンアップでかなり改善されて来ていますが、日本語入力時に止まるのは、やはり辛いです。

アプリケーションのデータを別のパーティションに移動して対処する方法がいくつかあり、特に高速化が期待出来るのが /dbdata にデータを移動する方法です。

しかし、/dbdata パーティションは容量が少なく大きなアプリケーションをダウンロードしてインストールする場合に問題が出たりします。

別の方法として、速度の速いタイプのSD カードに別パーティションを作成しデータを置く方法を考えていました。

外部のSDカードは、FAT32でフォーマットされ /sdcard/sd にマウントされますが、マウントされるのは1番目のパーティションだけで2番目以降のパーティションは自動ではマウントされません。

この2番目のパーティションを  ext3/ext4 でフォーマットし利用する方法です。

SDカード上のパーティションをマウントするには、

  • kernel でのファイルタイプのサポート
  • /init.rc での mount 指定

が必要になり、Custom ROM を作る必要があります。

Custom ROM を作る為に情報を集めていたところすでにやっている方がいました。

UPDATED : Real fix for the “stalling/lagging” problem (Android @ MoDaCo)

ext3, ext4 対応の kernel と mount 設定した /init.rc を作成し、イメージを公開しています。

早速導入してみました。
Galaxy S は rooted してrootが取れている必要があります。

※ Linuxの操作知識が必要になります、自己責任で実施してください

パーティションを作るだけなら、Galaxy S でも可能ですが ext3/ext4のフォーマットが出来ないため、Linuxかツールを使ってパーティション作成とフォーマットを行います。

ツールについては、フォーラムに記載してある、gparted か paragon hard disk manager が使えるようです。
(このblogで紹介しているLiveCD から ブートUSBを作成する方法でも可能です)

私は、KURO-SHEEVA を使ってパーティション作成とフォーマットを行いました。

MicroSDカードは、Transced の Class6 8GB microSDHC カードを使っています。


Transcend microSDHCカード Class6 (amazon.co.jp)

KURO-SHEEVA に USBアダプター(amazon.co.jp)で接続します。

KURO-SHEEVA に接続すると、/dev/sda として認識されます。
USBブートした場合などは、/dev/sdb 等になりますので、dmesg などでログを確認してください。

# fdisk -l /dev/sda

Disk /dev/sda: 8017 MB, 8017412096 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes
Disk identifier: 0x00000000

パーティションを作成します。1番目をFAT32で約6.8Gにし、残りを2番目としてext4で約1.2G割り当てます。
(ext4の方が若干早いらしいです。)

# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 8017 MB, 8017412096 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1  <-- 1番目のパーティション作成
First cylinder (1-1022, default 1): <リターン>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1022, default 1022): +6800M

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 2 <-- 2番目のパーティション作成
First cylinder (869-1022, default 869): <リターン>
Using default value 869
Last cylinder or +size or +sizeM or +sizeK (869-1022, default 1022): <リターン>
Using default value 1022

Command (m for help): t <-- 1番目のパーティションタイプをLinux -> FAT32に変更
Partition number (1-4): 1
Hex code (type L to list codes): L <-- パーティションタイプの確認(知っていれば不要)

0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes): c <-- W95 FAT32 (LBA) を指定
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): w <-- パーティション情報の書き込み
The partition table has been altered!

Calling ioctl() to re-read partition table.
sd 2:0:0:0: [sda] Assuming drive cache: write through
sda: sda1 sda2
sd 2:0:0:0: [sda] Assuming drive cache: write through
sda: sda1 sda2

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
# fdisk -l /dev/sda <-- パーティション情報の確認

Disk /dev/sda: 8017 MB, 8017412096 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         868     6646245    c  W95 FAT32 (LBA)
/dev/sda2             869        1022     1179178   83  Linux
#
# mkfs.vfat /dev/sda1 <-- 1番目のパーティションをvfatでフォーマット
mkfs.vfat 3.0.1 (23 Nov 2008)
# mkfs.ext4 /dev/sda2 <-- 2番目のパーティションをext4でフォーマット
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
73728 inodes, 294794 blocks
14739 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=301989888
9 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#

USBアダプターをKURO-SHEEVAから取り外してパーティションの作成は完了です。

パーティション変更前のSDカードの状態(Total space 7.46GB)

パーティション変更後のSDカードの状態(Total space 6.34GB)

次に、Galaxy S で SDカードの2番目のパーティションの ext4 のマウントを出来るようにします。

フォーラムから、Download v4 (ext4) support: からファイルをダウンロードします。

ダウンロードしたファイル(Kernel_GalaxyS_mimo_ext4_v4.tar)を、odin3を使ってGalaxy Sに書込みます。

手順は、Galaxy Sのファームアップデートの手順と同じです。

Odin3を起動して、PDAにダウンロードしたKernel_GalaxyS_mimo_ext4_v4.tar だけ を指定します。
Galaxy Sのボリューム下+HOME+電源ボタンを押してダウンロードモードにしPCに接続します。

Odin3の “Start” ボタンを押して書込みます。

書込みが完了すると、Galaxy Sが再起動してきます。

About Phone を見ると Kernel versionが2.6.29 root@ubuntu #1 になっています。

パーティションを確認するとSDカードの2番目のパーティション(/dev/block/mmcblk1p2)が/diskにext4でマウントされています。

# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
/dev/block/stl6 /mnt/.lfs j4fs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/stl9 /system rfs rw,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk1p2 /disk ext4 rw,noatime,nodiratime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p2 /data rfs rw,nosuid,nodev,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl10 /dbdata rfs rw,nosuid,nodev,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl11 /cache rfs rw,nosuid,nodev,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl3 /efs rfs rw,nosuid,nodev,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0102,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block//vold/179:9 /sdcard/sd vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# df
df
/dev: 166704K total, 0K used, 166704K available (block size 4096)
/mnt/.lfs: Function not implemented
/sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size 4096)
/system: 282432K total, 255072K used, 27360K available (block size 4096)
/disk: 1160632K total, 34212K used, 1126420K available (block size 4096)
/data: 1963952K total, 159760K used, 1804192K available (block size 16384)
/dbdata: 130280K total, 13176K used, 117104K available (block size 4096)
/cache: 30792K total, 44K used, 30748K available (block size 4096)
/efs: 6064K total, 4103K used, 1961K available (block size 1024)
/sdcard: 6060544K total, 12096K used, 6048448K available (block size 32768)
/sdcard/sd: 6644576K total, 32K used, 6644544K available (block size 32768)

次は、SDカードの2番目のパーティションにアプリケーションの data をコピーします。(フォーラムに書いてあります)

adb shell
su -
busybox cp -rp /data/data /disk/
busybox mv /data/data /data/data.bak
busybox ln -s /disk/data /data/data

marketの問題を修正するために行う手順です。
busybox mv /system/media /disk/
busybox ln -s /disk/media /system/media

設定が終わったらGalaxy Sを再起動します。
reboot

これで、アプリケーションデータが外付けSDカードを参照するようになりました。

使ってみたところ、日本語入力時のプチフリが無くなり快適に入力出来るようになりました。

手順としては、SDカードのフォーマットが大変ですが、ツールを使うなりすれば出来るかと思います。

Galaxy S用のext4フォーマットソフト(mkfs.ext4)を移植すれば、Galaxy S単体で出来るようになるので、どっかに落ちてないか調べてみたいと思います。

[Galaxy S] Galaxy S のプチフリ対策(外部SDカード利用) へのフィードバック: 2

  1. ピンバック: [Galaxy S] プチフリ対策後のベンチマーク結果 « Gagdet's Blog

  2. ピンバック: [Galaxy S] I9000XWJM1+プチフリ対策のベンチマーク « Gagdet's Blog

コメントする

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s に接続中

フォロー

Get every new post delivered to your Inbox.

現在500人フォロワーがいます。