OS
Android
Kernelsu Overlayfs

KernelSU 如何不通过模块,直接修改系统分区

前提,KernelSU 已经装过至少一个模块,让 KernelSU 生成过稀疏文件的镜像 modules.img

操作

  1. 可以使用 adb shell 或者 MT 管理器之类的文件管理器,进入 /data/adb/modules 目录。

  2. 在这个目录下,新建一个 .rw 文件夹。

  3. .rw 文件夹下,新建一个 system 文件夹。

  4. system 文件夹下,新建 upperdirworkdir 文件夹。

  5. 重启手机,完成操作,现在对 system 分区的修改都是通过 overlayfs 进行修改的。

最后的目录结构如下:

# modules cd .rw
# .rw pwd
/data/adb/modules/.rw
# .rw busybox tree .
.
└── system
    ├── upperdir
    └── workdir

挂载其他分区

同理,你可以在 .rw 下新建其他目录,然后在这个目录下新建 upperdirworkdir 文件夹,然后重启手机,就可以对这个目录进行 overlayfs 操作了。

比如 vendor 分区

# modules cd .rw
# .rw pwd
/data/adb/modules/.rw
# .rw busybox tree .
.
└── vendor
    ├── upperdir
    └── workdir

使用 overlayfs 的注意事项以及优点

  1. 所有对 system 分区的修改都不是直接修改,而是通过 overlayfs 进行修改的,所以不会影响到原始的 system 分区。 如果出问题了 KernelSU 会重启来到安全模式,然后你之前对 system 分区的修改就不会生效。

  2. 如果需要撤回对之前的修改可以直接删除 .rw 文件夹,然后重启手机即可。

  3. 可以在相对应的 upperdir 文件夹下,查看到对应的修改。