Android 以写权限挂载文件系统

Posted

技术标签:

【中文标题】Android 以写权限挂载文件系统【英文标题】:Android mount the filesystem with write permission 【发布时间】:2012-05-04 21:45:29 【问题描述】:

我使用的android设备上没有sqlite3,所以我想在从AVDpull之后将push它发送到设备。

我从 AVD 中提取它没有问题,但我无法将它推送到设备,因为我需要启用写入权限。我试着关注sqlite3: not found

我尝试了以下

$ adb -d shell
$ mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=111 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/usb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /app-cache tmpfs rw,relatime,size=7168k 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p9 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered
/dev/block/mmcblk0p1 /efs ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0
nil /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered,
/dev/block/mmcblk0p4 /mnt/.lfs j4fs rw,relatime 0 0
/dev/block/vold/179:11 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,noatime,n
epage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro,discard 0

我关注this link并尝试如下挂载文件系统,但出现权限错误。

$ mount -o rw,remount -t yaffs2 /dev/block/mmcblk0p9 /system
mount: Operation not permitted 

是否知道出于调试原因将push sqlite3 放入 Adroid 设备需要做什么?

【问题讨论】:

【参考方案1】:

编辑:找到更好的解决方案

从主机(Linux 或 windows PC),执行以下命令。

>> adb root
>> adb remount

如果您有权限,默认情况下,remount 将使用 rw 重新安装 /system 分区。

下面提到的注意1和2仍然适用。


老办法

要重新挂载已挂载的系统,您需要具有 root 权限。做一个su。您将进入根模式。然后运行以下命令。它会起作用的,我做了很多次。

以下是步骤:

 adb shell 
 su
 mount -o rw,remount /system

注意 1: 要执行命令suadb root,您的设备必须已root 并具有su 可执行文件。如果su命令成功,终端提示符会从$变为#

注意 2: 在最近的手机中,安全性已经收紧,即使在手机root之后,adb remount也不起作用。据我所知,目前还没有可用的解决方案。

【讨论】:

首先,感谢您的回答。我知道我必须使用超级用户模式 ​​(su),但我必须 root 我的设备。有没有办法绕过它?我只想复制sqlite3 二进制文件进行调试。 如果你想在一些特定的应用程序中使用 sqlite 库,你可以将它包含在 jni 文件夹中,使用 Android NDK 构建它,然后在应用程序中使用它。是的,这是可能的。你可以参考我在这里发布的解决方案***.com/questions/10169336/… 但是这样做,只有你的应用可以使用 sqlite。 您是否在运行 LineageOS 的根植 Android 设备上尝试过此操作?我一直在以 RW 模式重新安装文件系统时遇到问题。我确实有root权限。有什么想法吗? LineageOS - 不知道是什么意思。但是失败可能是因为 OEM 采取了额外的安全措施,也可能是因为违反了 selinux.. 你可以查看内核日志,看看谁在拒绝你重新挂载。【参考方案2】:

正如 mk 所指出的,许多较新的手机都禁用了 adb root 和 adb remount。我的 LGL34C 被锁定了,而 adb 几乎只对拉入文件系统的受保护区域有用。

但是有办法解决它(总是有办法)!当然,您仍然需要安装了 su 的 root 手机。在手机上安装 shell 终端和/或 sshd 服务。从本地操作系统重新挂载和写入 /system 工作正常。

【讨论】:

【参考方案3】:

您没有权限的主要原因...在该脚本上没有根,因为 $ su 把它变成了我相信的 #....

【讨论】:

以上是关于Android 以写权限挂载文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向修改 Android 系统文件 ( 重新挂载文件分区 | 在 /system/lib/ 只读目录下创建文件 | 修改 Android 系统文件的意义 )

Android 逆向修改 Android 系统文件 ( 重新挂载文件分区 | 在 /system/lib/ 只读目录下创建文件 | 修改 Android 系统文件的意义 )

android文件系统挂载分析---正常开机挂载

linux挂载aixnfs没有写权限

android重新挂载根文件系统

Android挂载系统分区执行mount和remount