我编写了以下 shell 脚本:
alias mount='/system/xbin/busybox mount'
set -e
set -x
MNT=sda1
function mkdir_ext() {
if [ ! -d $1 ]; then
mkdir -p $1
fi
chown $2 $1
chmod $3 $1
}
mkdir_ext /storage/emulated/$MNT root:media_rw 777
mount -t ext4 /dev/block/$MNT /storage/emulated/$MNT
mkdir_ext /data/media/$MNT root:media_rw 777
sdcard -u 1023 -g 1023 /storage/emulated/$MNT /data/media/$MNT
执行完上面的命令后,挂载报告:
root@NEO-X8:/sdcard # mount|grep sda
/dev/block/sda1 /storage/emulated/sda1 ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/fuse /data/media/sda1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
我正在通过 ssh 远程工作,使用 rooted ssh/sftp daemon ,当以 root 身份登录时,我可以列出 /storage/emulated/sda1
中的文件。
据我了解,android 在设计上对文件系统不区分大小写,因此必须融合文件系统。
问题是,我在 /data/media/sda1
中只看到一个空目录。更奇怪的是,如果我以 root 身份使用 bash shell X 从设备导航到 /storage/emulated/sda1
,我还看到一个空目录。
我尝试过其他不同的应用程序,我也尝试过使用 sdcard_rw
而不是 media_rw
(使用 uid/gid 1015 而不是 1023),没有任何效果。
如何让 ext4 适用于 root 的 Minix NEO X8-H 上的所有应用程序?使用 ext4 以外的任何东西都不是一种选择,4TB 驱动器已经包含重要数据。附带说明一下,sda1
只是一个 1GB 的小分区。
最佳答案
我假设您的设备已根据您目前所做的一切进行 root,因此不会深入探讨。虽然我不能确定这是你的问题,但我将解释我是如何解决类似问题的。
最近的 android 版本旨在提高设备安全性,现在正在使用(有点愚蠢)功能,使大多数进程执行的挂载对其他进程不可见。令人沮丧的是,解决这个问题是特定于设备的,但是 Minix NEO X8-H 似乎使用的是“ Vanilla ”风格的 android 源代码构建。因此,您很有可能使用 StickMount为了挂载 USB 内存棒,它应该能够全局挂载运行您的 ROM 支持的任何文件系统的 USB 设备(如果您之前已经挂载过它,它应该包括 ext4)。
我没有在你的设备上亲自测试过,所以不能保证它会工作,但在许多其他安卓设备上都取得了成功,所以这当然值得一试。
关于android - 如何在 Android 上挂载外部驱动器的 ext4 分区并使其对所有应用程序可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589969/