i.MX8MPlus EVK Android12外部SD卡自动挂载

原文:Vold之存储设备和fstab配置 - liutimo - 博客园

分类

  1. traditional storage(传统存储)

    • portable storage(便携式存储): SD卡或USB设备。

    • emulated storage(模拟存储):将部分内部存储暴露于模拟层来实现存储。

  2. adoptable storage(可合并的存储设备)

    这种存储设备是指可以像内部存储设备那样进行加密和格式化的物理介质(例如 SD 卡或 USB 设备)。

fstab配置

android的 external storage 由Vold 和 StroageManagerService共同管理。

‼️ 在 Android 8.0 中,MountService 类已更名为 StorageManagerService

Android 4.3 及更高版本,init、vold 和 recovery 所使用的各种 fstab 文件在 /fstab.<device> 文件中进行统一。对于由 vold 管理的外部存储卷,条目应采用以下格式:

 <src> <mnt_point> <type> <mnt_flags> <fs_mgr_flags>
  • src:sysfs(通常在 /sys 下装载)下可以提供装载点的设备的路径。路径必须以 / 开头。

  • mount_point:要装载卷的文件系统路径。

  • type:卷上的文件系统类型。如果是外部卡,则通常为 vfat

  • mnt_flagsVold 会忽略此字段,应将其设置为 defaults

  • fs_mgr_flagsVold 会忽略此字段中不包含 voldmanaged= 标记的统一的 fstab 中的任何行。该标记必须后跟描述卡的标签,以及分区号或字词 auto。例如:voldmanaged=sdcard:auto。其他可能的标记有 nonremovableencryptable=sdcardnoemulatedsdencryptable=userdata

对于adoptable storage,需要在fstab中通过在fs_mgr_flags中 设置encryptable=userdata显式说明。如果没有这个flag,都会被vold当做便携式设备处理。

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

合并存储设备时,该平台会擦除内容并写入定义两个分区的 GUID 分区表:

  • 一个较小的空 android_meta 分区,预留以备将来使用的。分区类型 GUID 为 19A710A2-B3CA-11E4-B026-10604B889DCF

  • 一个较大的 android_ext 分区,使用 dm-crypt 加密并使用 ext4f2fs(取决于内核功能)格式化。分区类型 GUID 为 193D1EA4-B3CA-11E4-B075-10604B889DCF

在Vold创建存储卷时,我们就能看到相关的代码了。

fstab 中,具有 voldmanaged 属性的存储设备默认被视为便携式设备,除非定义了其他属性(如 encryptable=userdata)。例如,典型的 USB OTG 设备的定义如下:

i.MX8MPlus挂载外部SD卡挂载实例

不能照搬例程https://source.android.com/devices/storage/config

正确的fstab项应该如下所示,去除最后的“encryptable=userdata”,我们需要的就是便携式设备。

 /devices/platform/soc@0/30800000.bus/30b50000.mmc/mmc_host*  auto auto defaults voldmanaged=sdcard1:auto

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫游嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值