【问题标题】:How to mount an external drive's ext4 partition on android and make it rw-available to all the apps如何在 android 上挂载外部驱动器的 ext4 分区并使其对所有应用程序可用
【发布时间】:2015-04-12 13:24:27
【问题描述】:

我编写了以下 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 中只看到一个空目录。更奇怪的是,如果我使用bash shell X 以root 身份从设备导航到/storage/emulated/sda1,我还会看到一个空目录。

我尝试了其他不同的应用程序,我也尝试使用 sdcard_rw 而不是 media_rw(使用 uid / gid 1015 而不是 1023),但没有任何效果。

如何让 ext4 为根深蒂固的 Minix NEO X8-H 上的所有应用程序工作?不能使用除 ext4 以外的任何东西,4TB 驱动器已经包含重要数据。附带说明一下,sda1 只是一个 1GB 的小分区。

【问题讨论】:

  • Android 和 ext4 都不区分大小写,尽管它用于“外部存储”之类的其他一些文件系统和仿真方案可能是这样。您可能会遇到这样一个事实,即 Android 上的每个进程祖先都有一组独特的挂载 - 因此您在从一个应用程序下降的 setuid 进程中所做的事情不会反映在另一个应用程序或 adb 中。
  • 你是说所有应用都不能访问外接U盘吗?
  • 不一定,但到目前为止,您的努力可能还没有为所有人安装它。 “mount”在无法访问的 shell 中作为输出给出了什么?
  • 那些挂载点不会出现。那么您对解决方案有什么想法吗?
  • 不,但至少我们知道问题出在哪里。在这一点上,可能值得阅读一下 Linux 中的每个进程挂载功能是如何工作的,因为这正是 Android 所利用的。

标签: android linux


【解决方案1】:

我会假设您的设备植根于您迄今为止所做的事情,因此不会涉及到这一点。虽然我不能确定这是你的问题,但我将解释我是如何解决类似问题的。

旨在提高设备安全性的最新版本的 android 现在正在使用(有点荒谬)使大多数进程执行的挂载对其他进程不可见的特性。解决这个问题令人沮丧的是特定于设备,但 Minix NEO X8-H 似乎使用的是“香草”风格的 Android 源代码构建。因此,您很有可能使用StickMount 来安装 USB 记忆棒,它应该能够全局安装运行您的 ROM 支持的任何文件系统的 USB 设备(如果您之前已经安装过它,应该包括 ext4) .

我没有在你的设备上亲自测试过,所以不能保证它会工作,但已经在许多其他 Android 设备上取得了成功,所以这当然值得一试。

【讨论】:

    【解决方案2】:

    我用mkfs -t ext4 /dev/sdf2格式化SD卡,插入三星s4安卓手机。

    adb shell 
    su
    mount /dev/block/mmcblk1p2 /root
    

    我无法挂载这个 SD 卡,我用谷歌搜索了它,但没有解决方案。

    最后,我发现这样可以成功:)))

    mk2fs -t ext4 /dev/sdf2
    and ...
    

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2023-04-02
      • 1970-01-01
      • 2022-11-14
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多