---
url: https://kernelsu.org/ru_RU/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` для управления конфигурацией модуля:

```bash
# Получить значение конфигурации
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

# Или передать через pipe из команды
echo "значение" | 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
```

## Ограничения валидации

Система конфигурации применяет следующие ограничения:

* **Максимальная длина ключа**: 256 байт
* **Максимальная длина значения**: 1МБ (1048576 байт)
* **Максимальное количество записей конфигурации**: 32 на модуль
* **Формат ключа**: Должен соответствовать `^[a-zA-Z][a-zA-Z0-9._-]+$` (как ID модуля)
  * Должен начинаться с буквы
  * Может содержать буквы, цифры, точки, подчеркивания или дефисы
  * Минимальная длина: 2 символа
* **Формат значения**: Без ограничений - может содержать любые UTF-8 символы, включая переносы строк и управляющие символы
  * Хранится в бинарном формате с префиксом длины для безопасной обработки всех данных

## Жизненный цикл

* **При загрузке**: все временные конфигурации очищаются на этапе post-fs-data
* **При деинсталляции модуля**: все конфигурации (постоянные и временные) автоматически удаляются
* Конфигурации хранятся в бинарном формате с магическим числом `0x4b53554d` ("KSUM") и проверкой версии

## Сценарии использования

Система конфигурации идеальна для:

* **Пользовательские настройки**: хранение настроек модуля, которые пользователи настраивают через WebUI или action-скрипты
* **Флаги функций**: включение/отключение функций модуля без переустановки
* **Состояние во время выполнения**: отслеживание временного состояния, которое должно сбрасываться при перезагрузке (используйте временную конфигурацию)
* **Настройки установки**: запоминание выбора, сделанного при установке модуля
* **Сложные данные**: Хранение JSON, многострочного текста, данных в кодировке Base64 или любого структурированного содержимого (до 1МБ)

::: tip ЛУЧШИЕ ПРАКТИКИ

* Используйте постоянную конфигурацию для пользовательских настроек, которые должны сохраняться после перезагрузки
* Используйте временную конфигурацию для состояния во время выполнения или флагов функций, которые должны сбрасываться при загрузке
* Проверяйте значения конфигурации в скриптах перед их использованием
* Используйте команду `ksud module config list` для отладки проблем с конфигурацией
  :::

## Расширенные возможности

Система конфигурации модулей предоставляет специальные ключи конфигурации для расширенных сценариев использования:

### Переопределение описания модуля {#overriding-module-description}

Вы можете динамически переопределить поле `description` из `module.prop`, установив ключ конфигурации `override.description`:

```bash
# Переопределить описание модуля
ksud module config set override.description "Пользовательское описание, отображаемое в менеджере"
```

При получении списка модулей, если существует конфигурация `override.description`, она заменит исходное описание из `module.prop`. Это полезно для:

* Отображения динамической информации о состоянии в описании модуля
* Показа пользователям деталей конфигурации во время выполнения
* Обновления описания на основе состояния модуля без переустановки

### Объявление управляемых функций

Модули могут объявлять, какими функциями KernelSU они управляют, используя шаблон конфигурации `manage.<feature>`. Поддерживаемые функции соответствуют внутреннему перечислению `FeatureId` в KernelSU:

**Поддерживаемые функции:**

* `su_compat` - Режим совместимости SU
* `kernel_umount` - Автоматическое размонтирование ядра

```bash
# Объявить, что этот модуль управляет совместимостью 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` (строка, разделённая запятыми). Это позволяет:

* Менеджеру KernelSU определять, какие модули управляют какими функциями KernelSU
* Предотвращать конфликты, когда несколько модулей пытаются управлять одной и той же функцией
* Улучшить координацию между модулями и основным функционалом KernelSU

::: warning ТОЛЬКО ПОДДЕРЖИВАЕМЫЕ ФУНКЦИИ
Используйте только предопределённые имена функций, перечисленные выше (`su_compat`, `kernel_umount`). Они соответствуют реальным внутренним функциям KernelSU. Использование других имён функций не вызовет ошибок, но не будет иметь никакого функционального назначения.
:::
