website/docs/zh_CN/guide/module-config.md
KernelSU 提供了一个内置的配置系统,允许模块存储持久化或临时的键值设置。配置以二进制格式存储在 /data/adb/ksu/module_configs/<module_id>/,具有以下特性:
persist.config):重启后保留,直到明确删除或卸载模块tmp.config):在每次启动时的 post-fs-data 阶段自动清除读取配置时,对于同一个键,临时值优先于持久值。
所有模块脚本(post-fs-data.sh、service.sh、boot-completed.sh 等)运行时都会设置 KSU_MODULE 环境变量为模块 ID。您可以使用 ksud module config 命令来管理模块的配置:
# 获取配置值
value=$(ksud module config get my_setting)
# 设置持久配置值
ksud module config set my_setting "some value"
# 设置临时配置值(重启后清除)
ksud module config set --temp runtime_state "active"
# 从 stdin 设置值(适用于多行或复杂数据)
ksud module config set my_key <<EOF
多行
文本值
EOF
# 或从命令管道输入
echo "value" | ksud module config set my_key
# 显式使用 stdin 标志
cat file.json | ksud module config set json_data --stdin
# 列出所有配置项(合并持久和临时配置)
ksud module config list
# 删除配置项
ksud module config delete my_setting
# 删除临时配置项
ksud module config delete --temp runtime_state
# 清除所有持久配置
ksud module config clear
# 清除所有临时配置
ksud module config clear --temp
配置系统强制执行以下限制:
^[a-zA-Z][a-zA-Z0-9._-]+$(与模块 ID 相同)
.)、下划线(_)或连字符(-)0x4b53554d("KSUM")和版本验证配置系统适用于:
::: tip 最佳实践
ksud module config list 命令调试配置问题
:::模块配置系统提供了用于高级用例的特殊配置键:
您可以通过设置 override.description 配置键来动态覆盖 module.prop 中的 description 字段:
# 覆盖模块描述
ksud module config set override.description "在管理器中显示的自定义描述"
当获取模块列表时,如果存在 override.description 配置,它将替换 module.prop 中的原始描述。这对于以下场景很有用:
模块可以使用 manage.<feature> 配置模式声明它们管理的 KernelSU 功能。支持的功能对应于 KernelSU 内部的 FeatureId 枚举:
支持的功能:
su_compat - SU 兼容模式kernel_umount - 内核自动卸载# 声明此模块管理 SU 兼容性并将其启用
ksud module config set manage.su_compat true
# 声明此模块管理内核卸载并将其禁用
ksud module config set manage.kernel_umount false
# 移除功能管理(模块不再控制此功能)
ksud module config delete manage.su_compat
工作原理:
manage.<feature> 键的存在表示模块正在管理该功能true/1 代表启用,false/0(或任何其他值)代表禁用管理的功能通过模块列表 API 以 managedFeatures 字段(逗号分隔的字符串)公开。这允许:
::: warning 仅支持预定义功能
仅使用上面列出的预定义功能名称(su_compat、kernel_umount)。这些对应于实际的 KernelSU 内部功能。使用其他功能名称不会导致错误,但没有任何功能作用。
:::