SD card는 vold(아마도 volume daemon의 약자인듯)가 mount를 하도록 되어있다.
vold는 init.rc에 정의되어 있으며, kernel booting 시 시작되는 서비스 이다.
vold는 /system/etc/vold.fstab의 내용을 참고하여 본인이 mount 해야 할 device를 list로 만들어 두고 event(SDcard 탈/부착?)에 의해 mount를 시도하도록 되어 있는 것 같다.
아래는 foroyo에 포함된 vold.fstab의 내용이다.
## Vold 2.0 Generic fstab
## - San Mehat (san@android.com)
##
#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
## 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
## Example of a dual card setup
# dev_mount left_sdcard /sdcard1 auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
# dev_mount right_sdcard /sdcard2 auto /devices/platform/goldfish_mmc.1 /devices/platform/msm_sdcc.3/mmc_host/mmc1
## Example of specifying a specific partition for mounts
# dev_mount sdcard /sdcard 2 /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
SD card를 직접 해당 디렉토리에 마운트 시키기 위해서는 다음과 같은 명령어를 사용하면 된다.
cmd> adb remount
cmd> adb shell
# su (필요 없을수도 있음)
# mount -o rw -t vfat /dev/block/<partition> /mnt/sdcard
* 여기서 <partition>은 예를들어 mmcblk0p1이 될 수 있다
* SD card는 filesystem type(-t)을 vfat으로 지정해야 한다
* rw 옵션(-o)은 default이므로 생략해도 된다
* 당연한 이야기 이겠지만, /mnt/sdcard 디렉토리는 미리 생성되어 있어야 한다
(init.rc에 정의되어 부팅시 자동으로 생성된다)
'리눅스 & 안드로이드' 카테고리의 다른 글
getFrameAtTime을 위한 삽질 (2) | 2011.02.26 |
---|---|
Application 개발시 @hide API로 인한 어려움 해결 (0) | 2011.02.24 |
Kernel Command Line (0) | 2011.02.15 |
GNU Compiler __attribute__ (2) | 2011.02.11 |
Embedded Linux on ARM 부팅 과정 (0) | 2011.02.11 |