我编写了一个修改文件系统内容的应用程序。其中一个要求是将系统安装为读写。从这里和其他来源,我发现广泛接受的命令是这样的:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
我希望有人能更好地解释这是如何运作的。我理解这意味着我们正在使用yaffs2文件系统,并将目录/ dev / block / mtdblock3挂载为/ system。当我在我的手机上发出mount命令时,/ system被列为ext3,而不是yaffs2(如果我用ext3替换yaffs2,则命令同样有效)。此外,/ dev / block / mtdblock3不是现有目录。
这可能比Android更像Linux问题,但我确信有人知道这一切。最重要的是,这个命令有多普遍?我打算将它发布到各种各样的设备上,我是否需要容纳其他文件系统?或者这会“正常工作”吗?
答案 0 :(得分:1)
我在我的一个应用程序中使用它,以使其尽可能通用。当然,它需要一个带根电话才能工作。
FileInputStream inputStream;
BufferedReader r;
String line, device = "", fs = "";
try {
inputStream = new FileInputStream("/proc/mounts");
} catch (FileNotFoundException e) {
Log.e("Could not read mounts");
return;
}
r = new BufferedReader(new InputStreamReader(inputStream));
//find device mounted as system and file system type
try {
while ((line = r.readLine()) != null) {
if(line.indexOf("/system") >= 0) {
String mount[] = line.split(" ");
device = mount[0];
fs = mount[2];
break;
}
}
inputStream.close();
} catch (IOException e) {
Log.e("Could not read mounts");
return;
}
//mount system as rw
CommandCapture command = new CommandCapture(0, "mount -o rw,remount -t " + fs + " " + device + " /system");
try {
RootTools.getShell(true).add(command).waitForFinish();
} catch (Exception e) {
Log.e("Couldn't mount system as rw!");
return;
}
它使用RootTools来方便shell命令,并假设用户已经授予了对您的应用程序的root访问权限。
答案 1 :(得分:0)
与/system
分区对应的设备的位置是特定于设备的,正在使用的文件系统也是如此;没有单一的标准命令。而且,不能保证文件系统根本就是可变的;根fs完全可能在cramfs上,或者某些类型的闪存不容易被随机覆盖。对于某些手机,检查/proc/mounts
实际设备和fs-type对应/system
可能就足够了;对于其他人,您可能无法将其重新写入读写。
答案 2 :(得分:0)
试试这个:
grep " /system " /proc/mounts | awk '{system("mount -o rw,remount -t "$3" "$1" "$2)}'
请记住,您的Android设备必须已植根并且必须安装busybox。
再次聊天