FroyoでのSDメモリカードのマウント

ここで質問した件。
Google グループ

/system/etc/vold.fstab を変更したらうまくいきました。

元のvold.fstabはこんな感じ。(コメント行は省略。)

#######################
## Regular device mount
##
## Format: dev_mount 

ここで6番めのカラムはと書いてあるので 実機の/sys以下を調べてみた。

# ls /sys/devices/platform
uevent
power
power.0
smsc911x.0
isp1760.0
a9tc-rtc
a9tc_mmc.0
a9tc_key
a9tc_touch
a9tc_nand
a9tc_audio
alarm
a9tc-battery.0
# 

なんかa9tc_mmc.0 というのがそれっぽい。

/devices/platform/goldfish_mmc.0 のところを
/devices/platform/a9tc_mmc.0 に書き換えてリブートしたら
うまくSDメモリカードをマウントしていました。

# mount
rootfs / rootfs rw 0 0
/dev/root / nfs rw,vers=2,rsize=4096,wsize=4096,namlen=255,hard,nointr,nolock,proto=udp,timeo=11,retrans=3,sec=sys,addr=192.168.1.26 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
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 0 0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,size=0k,mode=000 0 0
# 

2010.7.7追記

## Example of a standard sdcard mount for the emulator / Dream
# Mounts the first usable partition of the specified device
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1

一晩たってからもう一度このコメントを見ると、ふとこの意味がわかりました。

/devices/platform/goldfish_mmc.0 はemulatorでのsdメモリカードのデバイス

/devices/platform/msm_sdcc.2/mmc_host/mmc1 はDreamでのsdメモリカードのデバイスということですね。

2つ書いておけばどちらか見つけた方をマウントしてくれると。だから同一のvold.fstabファイルをemulator用とDream実機用に使えるようになっているわけです。

それならば自分の場合は、/devices/platform/msm_sdcc.2/mmc_host/mmc1 のところを/devices/platform/a9tc_mmc.0に書き換えるほうがよいわけです。
つまり

dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0  /devices/platform/a9tc_mmc.0

このように変更してうまくいくことを確認しました。