解决方案:通过Magisk自定义挂载以访问SD卡上的多个分区
背景信息
用户使用 Magisk 和 TWRP 在三星 Galaxy J7 上进行了 root 操作。希望将多个 Ext4 分区挂载到 /storage
目录下,并在第三方工具(如 Termux)中查看这些分区内容。已尝试了普通方法,但其他应用无法访问这些分区。
问题总结
- 其他应用程序不能看到分区。
- App2sd 挂载脚本修改后的效果不稳定。
- 用户希望获取
vold-posix
功能来访问多个 Ext4 分区。 - 需要使用FUSE(文件系统用户空间)来调整
/storage
下的分区权限。
解决方案
步骤 1: 确认现有挂载和环境变量设置
从 Print env o/p
和 Mount o/p
的两个截图中,我们可以看到第一个分区已经以只读方式挂载到 /storage
中。但未提供所有挂载点的细节以及环境变量的完整输出,因此我们无法直接确认问题所在。
步骤 2: 确认 Knox 设置
从用户反馈知道,目前 Knox 已经被禁用或移除。所以排除因 Knox 引起的问题。
步骤 3: 再次尝试挂载脚本设置
为应对其他应用无法访问分区的问题,我们可以参考其他类似问题的解决方法:
- 确认 Vold 设置:Vold 默认暴露第一个 Ext4 分区给应用程序。如果需要访问更多分区,可以考虑使用
vold-posix
模块。 - 修改
App2sd
脚本来支持多个挂载点: - 将
App2SD Mount
脚本放入 Magisk 目录中。 - 修改脚本来添加额外的分区挂载逻辑。每个分区都需要独立的行,如下:
mkdir -p /storage/sd1/
mount -o rw,remount /dev/block/mmcblk1p2 /storage/sd1/
// 对其他分区重复此步骤
- 检查脚本是否在启动时正确执行:可以通过手动运行脚本来验证其功能。
- 若需要持久化应用权限,通过 Termux 进行检查。确保
/data/system/users/0/vol_id_map
文件正确映射到了新挂载的分区上。
步骤 4: 部署 Vold-Posix 模块
为了访问所有 Ext4 分区,可以安装 vold-posix
模块:
1. 首先在 TWRP 更新器中下载并解压 vold-posix 文件,确保所有文件在正确的位置。
2. 在 Magisk Manager 中启用或激活该模块。
3. 重启设备并检查分区是否成功挂载到了 /storage
下。
步骤 5: 安装 FUSE(文件系统用户空间)
如果以上方法仍然无法解决问题,可以尝试使用 FUSE 实现自定义权限调整:
1. 下载 bindfs
并将其安装在系统中。
2. 配置 bindfs 映射路径,并运行相应的命令来更改挂载点的访问权限。例如:
sudo bindf -o nonempty /storage/sd1/ /mnt/data_sd1/
- 此外,在文件浏览器工具(如 Termux)内设置访问所需应用的权限。
总结
总体来说,通过修改挂载脚本和引入 FUSE 工具,应能更好地支持多个 Ext4 分区并提高其对外部应用的认可度。但根据用户描述的情况,分区仍然只能以“文件夹”形式出现在 /storage
下这可能是由于其他配置导致的。
后续操作
- 定期检查相关环境变量设置及权限。
- 与社区成员交流经验分享更多可能的有效解决方案。
希望以上建议对您有所帮助!
正文完