diff --git a/website/docs/guide/difference-with-magisk.md b/website/docs/guide/difference-with-magisk.md index 50ba49f165c1..ba31de615838 100644 --- a/website/docs/guide/difference-with-magisk.md +++ b/website/docs/guide/difference-with-magisk.md @@ -24,3 +24,4 @@ Here are some differences: - The method for replacing or deleting files in KernelSU modules is completely different from Magisk. KernelSU does not support the `.replace` method. Instead, you need to create a same-named file with `mknod filename c 0 0` to delete the corresponding file. - The directories for BusyBox are different. The built-in BusyBox in KernelSU is located in `/data/adb/ksu/bin/busybox`, while in Magisk it is in `/data/adb/magisk/busybox`. **Note that this is an internal behavior of KernelSU and may change in the future!** - KernelSU does not support `.replace` files; however, KernelSU supports the `REMOVE` and `REPLACE` variable to remove or replace files and folders. +- KernelSU adds `boot-completed` stage to run some scripts on boot completed. diff --git a/website/docs/guide/module.md b/website/docs/guide/module.md index a08169607d5e..e7e17adabb31 100644 --- a/website/docs/guide/module.md +++ b/website/docs/guide/module.md @@ -54,6 +54,7 @@ A KernelSU module is a folder placed in `/data/adb/modules` with the structure b │ │ │ ├── post-fs-data.sh <--- This script will be executed in post-fs-data │ ├── service.sh <--- This script will be executed in late_start service +│ ├── boot-completed.sh <--- This script will be executed on boot completed | ├── uninstall.sh <--- This script will be executed when KernelSU removes your module │ ├── system.prop <--- Properties in this file will be loaded as system properties by resetprop │ ├── sepolicy.rule <--- Additional custom sepolicy rules @@ -102,7 +103,7 @@ description= ### Shell scripts -Please read the [Boot Scripts](#boot-scripts) section to understand the difference between `post-fs-data.sh` and `service.sh`. For most module developers, `service.sh` should be good enough if you just need to run a boot script. +Please read the [Boot Scripts](#boot-scripts) section to understand the difference between `post-fs-data.sh` and `service.sh`. For most module developers, `service.sh` should be good enough if you just need to run a boot script, if you need to run the script after boot completed, please use `boot-completed.sh`. In all scripts of your module, please use `MODDIR=${0%/*}` to get your module's base directory path; do **NOT** hardcode your module path in scripts. @@ -243,13 +244,13 @@ In KernelSU, scripts are divided into two types based on their running mode: pos In KernelSU, startup scripts are divided into two types based on their storage location: general scripts and module scripts: - General Scripts - - Placed in `/data/adb/post-fs-data.d` or `/data/adb/service.d` + - Placed in `/data/adb/post-fs-data.d`, `/data/adb/service.d` or `/data/adb/boot-completed.d` - Only executed if the script is set as executable (`chmod +x script.sh`) - Scripts in `post-fs-data.d` runs in post-fs-data mode, and scripts in `service.d` runs in late_start service mode. - Modules should **NOT** add general scripts during installation - Module Scripts - Placed in the module's own folder - Only executed if the module is enabled - - `post-fs-data.sh` runs in post-fs-data mode, and `service.sh` runs in late_start service mode. + - `post-fs-data.sh` runs in post-fs-data mode, `service.sh` runs in late_start service mode, `boot-completed.sh` runs on boot completed. All boot scripts will run in KernelSU's BusyBox `ash` shell with "Standalone Mode" enabled. diff --git a/website/docs/zh_CN/guide/difference-with-magisk.md b/website/docs/zh_CN/guide/difference-with-magisk.md index d25c7756b935..3c6cdec2aef6 100644 --- a/website/docs/zh_CN/guide/difference-with-magisk.md +++ b/website/docs/zh_CN/guide/difference-with-magisk.md @@ -24,3 +24,4 @@ 3. KernelSU 模块替换或者删除文件与 Magisk 完全不同。KernelSU 不支持 `.replace` 方式,相反,你需要通过 `mknod filename c 0 0` 创建同名文件夹来删除对应文件。 4. BusyBox 的目录不同;KernelSU 内置的 BusyBox 在 `/data/adb/ksu/bin/busybox` 而 Magisk 在 `/data/adb/magisk/busybox`;**注意此为 KernelSU 内部行为,未来可能会更改!** 5. KernelSU 不支持 `.replace` 文件;但 KernelSU 支持 `REPLACE` 和 `REMOVE` 变量。 +6. KernelSU 新增了一种脚本 `boot-completed.sh`,以便在 Android 系统启动后运行某些任务。 diff --git a/website/docs/zh_CN/guide/module.md b/website/docs/zh_CN/guide/module.md index bc73f65cef05..f8008a76d9f6 100644 --- a/website/docs/zh_CN/guide/module.md +++ b/website/docs/zh_CN/guide/module.md @@ -60,6 +60,7 @@ KernelSU 模块就是一个放置在 `/data/adb/modules` 内且满足如下结 │ │ │ ├── post-fs-data.sh <--- 这个脚本将会在 post-fs-data 模式下运行 │ ├── service.sh <--- 这个脚本将会在 late_start 服务模式下运行 +│ ├── boot-completed.sh <--- 这个脚本将会在 Android 系统启动完毕后以服务模式运行 | ├── uninstall.sh <--- 这个脚本将会在模块被卸载时运行 │ ├── system.prop <--- 这个文件中指定的属性将会在系统启动时通过 resetprop 更改 │ ├── sepolicy.rule <--- 这个文件中的 SELinux 策略将会在系统启动时加载 @@ -106,7 +107,7 @@ description= ### Shell 脚本 {#shell-scripts} -请阅读 [启动脚本](#boot-scripts) 一节,以了解 `post-fs-data.sh` 和 `service.sh` 之间的区别。对于大多数模块开发者来说,如果您只需要运行一个启动脚本,`service.sh` 应该已经足够了。 +请阅读 [启动脚本](#boot-scripts) 一节,以了解 `post-fs-data.sh`, `service.sh` 和 `boot-completed.sh` 之间的区别。对于大多数模块开发者来说,如果您只需要运行一个启动脚本,`service.sh` 应该已经足够了。 在您的模块的所有脚本中,请使用 `MODDIR=${0%/*}`来获取您的模块的基本目录路径;请勿在脚本中硬编码您的模块路径。 @@ -250,7 +251,7 @@ set_perm_recursive 在 KernelSU 中,启动脚本根据存放位置的不同还分为两种:通用脚本和模块脚本。 - 通用脚本 - - 放置在 `/data/adb/post-fs-data.d` 或 `/data/adb/service.d` 中。 + - 放置在 `/data/adb/post-fs-data.d`, `/data/adb/service.d` 或 `/data/adb/boot-completed.d` 中。 - 只有在脚本被设置为可执行(`chmod +x script.sh`)时才会被执行。 - 在 `post-fs-data.d` 中的脚本以 post-fs-data 模式运行,在 `service.d` 中的脚本以 late_start 服务模式运行。 - 模块**不应**在安装过程中添加通用脚本。 @@ -258,6 +259,6 @@ set_perm_recursive - 模块脚本 - 放置在模块自己的文件夹中。 - 只有当模块被启用时才会执行。 - - `post-fs-data.sh` 以 post-fs-data 模式运行,而 `service.sh` 则以 late_start 服务模式运行。 + - `post-fs-data.sh` 以 post-fs-data 模式运行,而 `service.sh` 则以 late_start 服务模式运行,`boot-completed` 在 Android 系统启动完毕后以服务模式运行。 所有启动脚本都将在 KernelSU 的 BusyBox ash shell 中运行,并启用“独立模式”。