Android mount: bad /etc/fstab: No such file or directory
没有root权限的原因,需要su切换到root用户
https://github.com/termux/termux-packages/issues/7256
详细原因
不需要。我必须对设备进行 root 吗?
好吧,这解释了为什么 mount 尝试在您的情况下使用 fstab。
如果没有 root 权限,则无法挂载任意文件系统,此外由 fstab(带有“user”选项的条目)定义的文件系统的挂载,需要将 mount 二进制文件设置为 setuid root,这显然需要设备获得 root 权限。
Termux 是常规的 Android 应用程序。它没有操纵系统状态的权限。
通俗来说,就是,如果没有root权限,mount会到/etc/fstab文件中寻找某些特殊条目,满足这些 条目/挂载点/设备 的挂载是允许的。而有了root权限,可以任意挂载。
而Android的系统是Linux大改的,/etc/fstab实际在/vendor/etc/fstab.qcom(不同牌子也不一定,用find找一下)
如果用户想要授予任何非 root 用户挂载特定 FS 挂载的权限,请在客户端上的/etc/fstab条目中添加user选项。
For example, add this entry to /etc/fstab:
ds10:/nfstest /mnt1 nfs rw,bg,hard,user 0 0
setuid
当使用 setuid (设置用户 ID)位时,之前描述的行为会有所变化,所以当一个可执行文件启动时,它不会以启动它的用户的权限运行,而是以该文件所有者的权限运行。
使用 setuid 权限的可执行文件的例子是 passwd,我们可以使用该程序更改登录密码。我们可以通过使用 ls 命令来验证:
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27768 Feb 11 2017 /bin/passwd
这里,我整个/下的目录搜了一下,奇怪地发现没有-rws这种
lrwxr-xr-x 1 root shell 6 2020-05-28 11:55 mount -> toybox
并且mount实际上是符号链接到toybox实现的
-rwxr-xr-x 1 root shell 487144 2020-05-28 11:50 /system/bin/toybox
-.+rws正则唯一搜到的是下边这里
/data/data/com.mixplorer/files/locales/values-zh-rCN:
total 40K
drwx------ 2 u0_a240 u0_a240 4.0K 2023-10-28 13:57 .
drwx------ 3 u0_a240 u0_a240 4.0K 2023-10-28 13:57 ..
-rwxrws--x 1 u0_a240 u0_a240_cache 936 2023-10-28 13:57 arrays.xml
-rwxrws--x 1 u0_a240 u0_a240_cache 1.1K 2023-10-28 13:57 plurals.xml
-rwxrws--x 1 u0_a240 u0_a240_cache 43K 2023-10-28 13:57 strings.xml
I/O error
RMX1901CN:/ # mount /dev/block/by-name/abl /mnt/mntabl
mount: '/dev/block/by-name/abl'->'/mnt/mntabl': I/O error
abl xbl都会出现I/O error,不知道什么原因
用hexedit可以16进制看abl和xbl这两分区
need -t
尝试挂载modem bluetooth
显示
RMX1901CN:/ # mount /dev/block/by-name/bluetooth /mnt/mntabl
mount: /dev/block/by-name/bluetooth: need -t
大概是无法确定分区是什么文件系统类型,所以需要手动指定type
RMX1901CN:/ # mount -t auto /dev/block/by-name/modem /mnt/mntabl
mount: /dev/block/by-name/modem: need -t
RMX1901CN:/ # mount /dev/block/by-name/modem /mnt/mntabl -t auto
mount: /dev/block/by-name/modem: need -t
尝试了-t auto 还是不行