我编写了一个修改文件系统内容的应用程序。执行此操作的要求之一是将系统安装为可读写。从这里和其他来源,我发现被广泛接受的命令是这样的:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
我希望有人能更好地解释这是如何工作的。我理解这意味着我们正在使用 yaffs2 文件系统并将目录/dev/block/mtdblock3 挂载为/system。但是,当我在手机上发出 mount 命令时,/system 被列为 ext3,而不是 yaffs2(如果我用 ext3 代替 yaffs2,该命令同样有效)。此外,/dev/block/mtdblock3 不是现有目录。
这可能更像是一个 Linux 问题而不是 Android 问题,但我相信有人知道这一切。最重要的是,这个命令有多普遍?我计划将其发布到各种各样的设备,我需要适应其他文件系统吗?或者这会“正常工作”吗?
最佳答案
我在我的一个应用程序中使用它,以使其尽可能通用。当然,它需要有根电话才能工作。
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 命令,并假定用户已授予对您的应用程序的根访问权限。
关于android - Android 上的通用系统挂载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542218/