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: 要执行命令su
或adb 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 系统文件的意义 )