Особенности сохранения данных и настроек
ОС РОСА "БАРИЙ", как модульная система, имеет специфический механизм сохранения изменений, внесенных в Систему в процессе работы. Под изменениями подразумеваются любые новые или модифицированные файлы. Для корректной обработки их следует разделять на две категории:
- пользовательские изменения – файлы, находящиеся в каталоге `/home, - это личные данные пользователя, доступные через файловый менеджер в разделе с пиктограммой "домик". Все пользовательские данные хранятся в одном модуле, доступном при загрузке на любом устройстве;
- системные изменения – все файлы за пределами
/home, включая установленные программы и внесенные конфигурационные изменения. Системные изменения записываются в отдельные модули для каждой машины, поэтому файлы, сохраненные вне каталога/homeна одном устройстве, не будут доступны на другом.
При загрузке Системы все модули распаковываются и объединяются в корневую файловую систему (rootfs).
ОС использует механизм послойного хранения данных, управляемый UIRD (Unified Init Ram Disk system), - это разновидность initrd, при которой файловая система собирается из нескольких слоев, объединяемых с помощью overlayfs или aufs, при этом все слои монтируются только для чтения (read-only), за исключением последнего, верхнего слоя, куда записываются изменения. Подробнее о реализации UIRD в ОС см. на справочной странице в ROSA Wiki.
При внесении изменений в Cистему:
- новые файлы и изменения существующих записываются в верхний слой, называемый changes;
- удаленные файлы не исчезают физически, но помечаются в changes специальной "тенью" (whiteout), из-за чего Система их не видит.
Верхний слой может быть подключен в разных режимах, задаваемых параметром uird.mode.
Режимы хранения изменений
uird.mode=clean
Все изменения записываются в ОЗУ (tmpfs) и исчезают после перезагрузки. Данный режим используется по умолчанию в большинстве конфигураций и обеспечивает "чистую" загрузку Системы.
uird.mode=changes
Изменения записываются в указанный каталог, файл-образ или сетевое хранилище. Это позволяет сохранять настройки, установленные программы и файлы между перезагрузками. Для работы данного режима дополнительно указывается путь к месту хранения:
uird.changes=/путь/к/каталогу
uird.mode=clear
Гибридный режим между clean и changes: изменения сохраняются в указанное место, но при каждом запуске Система автоматически очищает их. Выглядит для пользователя как clean, но не использует ОЗУ для хранения данных.
uird.mode=toxzm
Данный режим используется при установке ОС на внешний носитель. Во время работы изменения записываются в ОЗУ (на сжатый zram-раздел), а при выключении Системы они упаковываются в модули и сохраняются.
Для работы этого режима необходимо указать путь к конфигурационному файлу и активировать режим выключения:
uird.changes=/путь/к/toxzm.cfg
uird.shutdown
Подробнее о конфигурационном файле toxzm.cfg см. раздел Конфигурационный файл toxzm.cfg.
Процесс сохранения изменений
В работе с ОС необходимо учитывать следующие особенности сохранения изменений в Системе:
- автоматическая упаковка в модули выполняется при выключении Системы, когда все файловые системы размонтированы;
- если носитель был извлечен в режиме "Терминал", его можно вернуть в USB-разъем и корректно завершить работу Системы, чтобы изменения сохранились;
- для срочного сохранения пользовательских данных без выключения Системы доступны дополнительные инструменты:
- иконка "домик" на рабочем столе – запускает процесс ручного сохранения пользовательских данных (рисунок 4);
- пиктограмма светофора в системном трее – позволяет настроить автоматическое интервальное сохранение.

Рисунок 4 ‒ Сохранение изменений в системе вручную
Если при выключении Системы модуль с изменениями не был сохранен, останется резервная копия, созданная при предыдущем завершении работы.
Рекомендации по хранению данных
- Общие рекомендации по хранению данных в ОС:
- устанавливать ПО необходимо отдельными модулями, чтобы избежать потери изменений;
- размер модуля с пользовательскими данными не должен превышать 300–500 МБ;
- для хранения крупных файлов рекомендуется использовать раздел NTFS, который создается по умолчанию при установке ОС на носителе объемом 16 ГБ и больше. Этот раздел будет доступен как в ОС РОСА "БАРИЙ", так и в Windows;
- системные изменения рекомендуется сохранять в отдельные модули, чтобы избежать их смешивания с пользовательскими данными;
- при необходимости исключения временных файлов использовать переменные (
GARBAGE); - если модуль содержит только статические файлы, отключить его пересборку (
REBUILD=no).
Конфигурационный файл toxzm.cfg
Файл ROSA-DATA/saves/toxm.cfg управляет процессом сохранения данных в модули.
Каждая секция в файле определяет отдельный модуль и содержит следующие параметры:
- XZM – имя модуля (если не указано, генерируется автоматически);
- MODE – режим подключения модуля (copy, mount, mount+wh);
- REBUILD – признак пересборки модуля при выключении (yes, no, once);
- ADDFILTER – список файлов и каталогов, которые нужно включить в модуль;
- DROPFILTER – список файлов и каталогов, которые не нужно включать в модуль;
- SQFSOPT – параметры сжатия модуля (например, mksquashfs с xz или lz4);
- MAXCOPYSIZE – максимальный размер модуля; при превышении создается новый модуль.
Система автоматически управляет сохранением изменений, обеспечивая возможность гибкой настройки.
Для удобства конфигурирования в файле toxzm.cfg можно использовать переменные для группировки путей, которые не должны сохраняться либо требуют отдельного хранения.
Пример определения переменных:
GARBAGE="/var/log /var/spool /var/tmp /var/cache"
PAM="/etc/pam.d /etc/pam_pkcs11 /etc/pki /xdg/autostart/"
Сохранение домашних каталогов пользователей
Домашние каталоги пользователей и суперпользователя (/home и /root) сохраняются в отдельный модуль homes.xzm:
XZM0=homes.xzm
MODE0=copy
REBUILD0=no
ADDFILTER0="/home /root"
DROPFILTER0=
SQFSOPT0='-comp lz4 -b 512k'
MAXCOPYSIZE0=300
В этом примере:
- модуль
homes.xzmбудет содержать только пользовательские данные; - режим
copyозначает, что модуль будет полностью загружаться в ОЗУ при старте Системы; - пересборка
REBUILD=noотключена, чтобы модуль не обновлялся при каждом выключении; - максимальный размер
MAXCOPYSIZE=300ограничивает размер модуля 300 Мб.
Сохранение системных изменений
Системные изменения записываются в отдельный модуль, который создается индивидуально для каждой машины. Если имя модуля не указано, оно будет автоматически сгенерировано на основе аппаратных характеристик устройства.
XZM1=
MODE1=mount+wh
REBUILD1=no
ADDFILTER1=
DROPFILTER1="$GARBAGE /home /root"
SQFSOPT1='-comp lz4 -b 512k'
MAXCOPYSIZE1=
В этом примере:
- режим
mount+whозначает, что модуль будет монтироваться при загрузке с возможностью записи; - фильтр
DROPFILTER1исключает из сохранения файлы журналов, временные данные ($GARBAGE), а также каталоги/homeи/root, которые сохраняются в отдельном модуле.
Примеры конфигурации модулей без пересборки:
- Хранение конфигураций PAM (Pluggable Authentication Modules) в отдельном модуле:
XZMpam='pam.xzm'
MODEpam='copy'
REBUILDpam='no'
ADDFILTERpam="$PAM"
DROPFILTERpam=
SQFSOPTpam='-comp xz -b 512k'
MAXCOPYSIZEpam=
Здесь файлы аутентификации ($PAM) сохраняются в отдельном модуле pam.xzm, который загружается в ОЗУ (copy).
- Хранение контрольных сумм (
cts) в отдельном модуле:
XZMcts='cts.xzm'
MODEcts='copy'
REBUILDcts='no'
ADDFILTERcts='/etc/cts /etc/prelink.conf.d/cts.conf'
DROPFILTERcts=
SQFSOPTcts='-comp xz -b 512k'
MAXCOPYSIZEcts=
Этот модуль cts.xzm сохраняет конфигурации, связанные с контрольными суммами, обеспечивая целостность Системы.
Параметры uird.mounts и uird.home
Параметры uird.mounts и uird.home являются важными элементами механизма сохранения данных в ОС, позволяя гибко настраивать, какие изменения будут сохраняться в каталоги, а какие — в модули.
Параметр uird.mounts
Параметр uird.mounts используется в нескольких случаях:
- разгрузка записи в
uird.fromпри сложном вложенном монтировании. Этот параметр помогает разгрузить запись вuird.fromпри сложной конфигурации, например, когда ISO-образ доступен по сети через HTTP, внутри которого находитсяsquashfs, а внутри — файл с ext3. Это стандартная конфигурация для современных ISO-образов; - автомонтирование раздела для пользователя;
- операция
bind(mount -o bind), которая позволяет выполнить операцию монтирования каталога на носителе внутрь Системы. Пример записи:
uird.mounts=/my_WWW::MNT=/var/www::MNTOPTS=noexec+rw::FORCE=yes::INIT=yes
В этой записи указано, что каталог /my_WWW, доступный на момент загрузки, будет смонтирован в /.memory/mounts/0 с параметрами noexec и rw. Каталог /var/www будет биндом на /my_WWW. Параметр FORCE=yes позволяет продолжить загрузку, даже если каталог /my_WWW не был найден. Параметр INIT=yes означает, что в случае пустого каталога будет выполнена инициализация: данные из модуля будут скопированы в каталог /var/www. Таким образом, все изменения, которые будут сделаны в каталоге /var/www, окажутся в каталоге /my_WWW, расположенном в корне одного из доступных разделов.
Параметр uird.home
Параметр uird.home является подмножеством uird.mounts и используется исключительно для каталога /home. Пример записи:
uird.home=/dev/sda1/homes
Эта запись указывает, что каталог /home будет монтироваться с устройства /dev/sda1 в каталог /homes.