详谈android 6.0 fuse文件系统的挂载和卸载问题

详谈android 6.0 fuse文件系统的挂载和卸载问题

什么是fuse文件系统

fuse是Filesystem in Userspace(用户空间文件系统)的缩写,它允许非特权用户创建并访问自定义文件系统。fuse将文件操作请求发送给fuse内核模块,内核模块将这些请求转发到用户空间的fuse库,在fuse库中,用户可以通过调用相应的协议来完成文件系统的实现。fuse文件系统的一个重要特点是非特权用户也可以对文件系统进行操作,这有利于应用程序的开发和使用。

android中的fuse文件系统

android中的fuse文件系统主要使用在设备之间的文件共享上。实际上,android和传统的Linux系统一样,都使用了fuse文件系统。在android 6.0中,android系统使用了一个特殊的fuse文件系统,称为sdcardfs,它是一个用于SD卡文件系统的虚拟文件系统,可以将多个SD卡挂载点合并在同一个文件系统中。

android 6.0 fuse文件系统的挂载

在android 6.0中,sdcardfs文件系统默认挂载在"/mnt/runtime/default"目录下。用户可以使用以下命令查看文件系统的挂载情况:

adb shell mount | grep sdcardfs

例如,用户想将SD卡挂载到"/mnt/sdcard1"目录下,可以使用以下命令实现:

adb shell mkdir /mnt/sdcard1
adb shell sdcard -u 1023 -g 1023 -m 0660 -d /mnt/runtime/default -u media_rw -g media_rw -m 0660 -d /mnt/media_rw/sdcard1 /mnt/sdcard1

其中,"-u"表示文件的UID,"-g"表示文件的GID,"-m"表示文件的权限。上面的命令将SD卡的UID、GID和权限设置为1023、1023和0660。另外,"-u media_rw -g media_rw -m 0660 -d /mnt/media_rw/sdcard1"表示将文件的UID、GID和权限设置为media_rw、media_rw和0660,同时设置挂载点为"/mnt/media_rw/sdcard1"。

android 6.0 fuse文件系统的卸载

用户可以使用以下命令卸载SD卡文件系统:

adb shell umount /mnt/sdcard1

需要注意的是,卸载sdcardfs文件系统时,需要卸载所有挂载点。

示例一

例如,用户在android 6.0中将SD卡挂载到"/mnt/sdcard1"目录下,然后通过MTP协议将文件拷贝到SD卡中。当用户想要卸载SD卡时,可以使用以下命令卸载:

adb shell umount /mnt/sdcard1

示例二

又例如,用户想将两个SD卡挂载到不同的目录下,可以使用以下命令:

adb shell mkdir /mnt/sdcard1
adb shell sdcard -u 1023 -g 1023 -m 0660 -d /mnt/runtime/default -u media_rw -g media_rw -m 0660 -d /mnt/media_rw/sdcard1 /mnt/sdcard1
adb shell mkdir /mnt/sdcard2
adb shell sdcard -u 1023 -g 1023 -m 0660 -d /mnt/runtime/default -u media_rw -g media_rw -m 0660 -d /mnt/media_rw/sdcard2 /mnt/sdcard2

这样,用户就可以将文件分别保存到两个SD卡中。当用户需要卸载SD卡时,需要分别卸载所有挂载点:

adb shell umount /mnt/sdcard1
adb shell umount /mnt/sdcard2

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈android 6.0 fuse文件系统的挂载和卸载问题 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • sqlserver数据库distinct的用法

    当然,我很乐意为您提供有关“SQL Server数据库DISTINCT的用法”的完整攻略。以下是详细的步骤和两个示例: 1 SQL Server数据库DISTINCT的用法 在SQL Server数据库中,DISTINCT是一种用于去除重复值的关键字。它可以用于SELECT语句中,以便只返回不同的值。 2 使用DISTINCT关键字 以下是使用DISTINC…

    other 2023年5月6日
    00
  • jps不是内部或外部命令 亲测有用

    “jps不是内部或外部命令”错误的解决方法 当我们在使用Java开发时,有时会遇到“jps不是内部或外部命令”的错误提示。这个错误提示通常是由于Java环境变量没有正确配置或者Java安装不完整导致的。本文将介绍如何解决这个错误,包括使用命令行和图形界面两种方式。在介绍每种方式时,将提供至少两个示例说明。 解决方法一:配置Java环境变量 示例一:在Linu…

    other 2023年5月9日
    00
  • 一文彻底理解JavaScript原型与原型链

    下面就是详细讲解“一文彻底理解JavaScript原型与原型链”的完整攻略: 一、JavaScript中的原型 JavaScript中的原型(prototype)是指每个函数都有一个prototype属性,它是一个指向对象的指针。prototype指针所指向的对象被称为原型对象。 1.1 构造函数与原型 当一个函数用来作为构造函数时,它所创建的对象都有一个隐…

    other 2023年6月26日
    00
  • Linux中利用grep命令如何检索文件内容详解

    Linux中利用grep命令如何检索文件内容详解 grep是Linux系统中非常常用的命令行工具,常用于在文件或者输出流中查找指定的字符串。grep的基本语法如下: grep [OPTIONS] PATTERN [FILE…] 其中,OPTIONS是可选参数,可以用来控制grep的行为。PATTERN是需要查找的字符串,FILE是需要查找的文件名。如果省…

    other 2023年6月26日
    00
  • Mybatis #foreach中相同的变量名导致值覆盖的问题解决

    Mybatis #foreach中相同的变量名导致值覆盖的问题解决攻略 在Mybatis中,使用#foreach标签进行循环迭代时,如果在嵌套的#foreach标签中使用相同的变量名,会导致变量值被覆盖的问题。为了解决这个问题,可以采取以下两种方法。 方法一:使用不同的变量名 一种解决方法是在嵌套的#foreach标签中使用不同的变量名。这样可以确保每个循环…

    other 2023年8月8日
    00
  • sql server实现递归查询的方法示例

    下面我们将详细讲解如何使用 SQL Server 实现递归查询。 什么是递归查询 递归查询是指在查询过程中引用了相同表的子查询,即在一个查询中反复地引用同一个表的查询语句,以实现对表中数据的逐层递归查询。通俗点来说,递归查询就是查询每个节点的子节点,再递归查询每个子节点的子节点,以此类推。 在 SQL Server 中,实现递归查询的方法是使用 CTE(通用…

    other 2023年6月27日
    00
  • Java调用windows系统的CMD命令并启动新程序

    下面是完整攻略: 1. 通过Runtime.getRuntime().exec()方法调用CMD命令 Java可以通过对Runtime.getRuntime().exec()方法的调用来启动CMD命令,并通过输入输出流来与CMD命令进行交互。具体步骤如下: 创建一个Process对象,通过执行CMD命令来启动新程序。 通过Process对象的getInput…

    other 2023年6月26日
    00
  • git如何忽视本地修改

    Git如何忽视本地修改 在开发过程中,经常会因为项目的需要而修改代码,但是当我们执行git pull命令时,可能会遇到本地代码与远程代码产生冲突的情况,这时我们可能需要忽略本地的修改,直接使用最新的远程代码。下面就介绍一下Git如何忽视本地修改。 git reset 我们可以使用git reset命令来取消所有本地的修改。 git reset –hard …

    其他 2023年3月28日
    00