구성 예

다음은 다양한 기기 유형의 외부 저장소 구성 예입니다. 여기에서는 구성 파일의 관련 부분만 포함합니다.

Android 6.0의 구성 변경사항(예: storage_list.xml 리소스 오버레이 제거)으로 인해 구성 예는 두 가지 카테고리로 나누어집니다.

Android 5.x 이전

실제 기기만 기본으로 사용

이는 Nexus One과 같이 단일 외부 저장소 기기(실제 SD 카드)가 있는 기기의 일반적인 구성입니다.

실제 원시 기기는 먼저 시스템과 FUSE 데몬만 액세스할 수 있는 /mnt/media_rw 아래에 마운트되어야 합니다. 그러면 미디어가 삽입/제거될 때 vold에서 fuse_sdcard0 서비스를 관리합니다.

fstab.hardware

[physical device node]  auto  vfat  defaults  voldmanaged=sdcard0:auto,noemulatedsd

init.hardware.rc

on init
    mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw
    mkdir /storage/sdcard0 0700 root root
    export EXTERNAL_STORAGE /storage/sdcard0
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard0 /storage/sdcard0
    class late_start
    disabled

storage_list.xml

<storage
    android:mountPoint="/storage/sdcard0"
    android:storageDescription="@string/storage_sd_card"
    android:removable="true"
    android:primary="true"
    android:maxFileSize="4096" />

에뮬레이션된 기기만 기본으로 사용

이는 Nexus 4와 같이 기기 내부 저장소에서 지원하는 단일 외부 저장소 기기가 있는 기기의 일반적인 구성입니다.

init.hardware.rc

on init
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root
    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated
on fs
    setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
    class late_start

storage_list.xml

<storage
    android:storageDescription="@string/storage_internal"
    android:emulated="true"
    android:mtpReserve="100" />

기본으로 에뮬레이션된 기기 사용, 보조로 실제 기기 사용

이는 Xoom과 같이 기기 내부 저장소에서 기본 기기를 지원하고 보조 기기로 실제 SD 카드를 사용하며 외부 저장소가 여러 개 있는 기기의 일반적인 구성입니다.

실제 원시 기기는 먼저 시스템과 FUSE 데몬만 액세스할 수 있는 /mnt/media_rw 아래에 마운트되어야 합니다. 그러면 미디어가 삽입/제거될 때 vold에서 fuse_sdcard1 서비스를 관리합니다.

fstab.hardware

[physical device node]  auto  vfat  defaults  voldmanaged=sdcard1:auto

init.hardware.rc

on init
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root
    mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
    mkdir /storage/sdcard1 0700 root root
    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated
    export SECONDARY_STORAGE /storage/sdcard1
on fs
    setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
    class late_start
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
    class late_start
    disabled

storage_list.xml

<storage
    android:storageDescription="@string/storage_internal"
    android:emulated="true"
    android:mtpReserve="100" />
<storage
    android:mountPoint="/storage/sdcard1"
    android:storageDescription="@string/storage_sd_card"
    android:removable="true"
    android:maxFileSize="4096" />

Android 6.0

실제 기기만 기본으로 사용

이는 원래 Android One과 같이 실제 SD 카드인 단일 외부 저장소 기기가 있는 기기의 일반적인 구성입니다. 보조 공유 저장소는 없으며 기기에서 멀티 사용자를 지원할 수 없습니다.

fstab.device

/devices/platform/mtk-msdc.1/mmc_host*         auto        auto       defaults
voldmanaged=sdcard0:auto,encryptable=userdata,noemulatedsd

init.device.rc

on init
    # By default, primary storage is physical
    setprop ro.vold.primary_physical 1

에뮬레이션된 기기만 기본으로 사용

이는 Nexus 6과 같이 기기 내부 저장소에서 지원하는 단일 외부 저장소 기기가 있는 기기의 일반적인 구성입니다.

  • 기본 공유 저장소(/sdcard)가 내부 저장소 위에 에뮬레이션됩니다.
  • 보조 SD 카드 저장소가 없습니다.
  • USB OTG 저장소 기기가 지원됩니다.
  • 멀티 사용자를 지원합니다.

fstab.device

/devices/*/xhci-hcd.0.auto/usb*             auto            auto    defaults
                                                    voldmanaged=usb:auto

기본으로 에뮬레이션된 기기 사용, 보조로 실제 기기 사용

이는 Xoom과 같이 기기 내부 저장소에서 기본 기기를 지원하고 보조 기기로 실제 SD 카드를 사용하며 외부 저장소가 여러 개 있는 기기의 일반적인 구성입니다.

  • 기본 공유 저장소(/sdcard)가 내부 저장소 위에 에뮬레이션됩니다.
  • 보조 저장소는 채택 가능한 실제 SD 카드 슬롯입니다.
  • 멀티 사용자를 지원합니다.

fstab.device

/devices/platform/mtk-msdc.1/mmc_host*           auto      auto     defaults
voldmanaged=sdcard1:auto,encryptable=userdata