Skip to content

Managing Modules ru

crim50n edited this page Oct 16, 2026 · 5 revisions

Управление модулями

Менеджер модулей MiniOS — это графическое приложение для просмотра, создания и управления модулями MiniOS.sb модулей. В нём есть две рабочие области: Модули для составления системы и Создать для создания новых модулей.

Запустить его можно из меню приложений или командой:

minios-module-manager

Само приложение работает от имени вашего пользователя в системе. Запрос на аутентификацию администратора появляется только при операциях, которые этого требуют.

Активные сейчас и при следующей загрузке

Рабочее пространство Модули предоставляет два отдельных представления:

  • Активные сейчас — это упорядоченный набор модулей, которые в данный момент составляют работающую систему.
  • Следующая загрузка — это упорядоченный набор, выбранный текущими правилами загрузки MiniOS.

Изменение одного представления не приводит к незаметному изменению другого. Например, Активировать для этой сессии влияет только на текущую систему, а Добавить в следующую загрузку копирует модуль в постоянное хранилище модулей без его немедленной активации.

Подробные правила загрузки, включая уровни-источники кандидатов, замену по точному имени файла, числовую сортировку и load=, noload=, и bext= фильтрацию, смотрите в разделе Загрузка модулей в initrd. В этом руководстве также объясняется, почему «Активные сейчас» и «Следующая загрузка» могут различаться.

Активация и деактивация во время работы доступны только если корневая файловая система использует AUFS. Они недоступны на корне OverlayFS, даже если ядро поддерживает AUFS. Базовые модули нельзя деактивировать через приложение.

Изменения для следующей загрузки возможны только при наличии подходящего постоянного и доступного для записи хранилища модулей. Отключение пользовательского модуля перемещает его во вспомогательное modules-disabled/ хранилище, а не удаляет; его можно восстановить позже. Полное удаление — отдельное действие для отключённых модулей. Базовые модули и модули на только для чтения или временном хранилище нельзя отключить. Фильтры загрузки, такие как load, noload, и bext по-прежнему определяют, какие модули будут выбраны.

Просмотр модуля

Выберите модуль, чтобы увидеть путь к исходному файлу, сжатый размер и содержимое файловой системы. Если исходный файл доступен, Извлечь в папку создаст новую директорию с файлами модуля.

Для просмотра не требуются права администратора. Извлечь в папку запрашивает аутентификацию администратора, чтобы сохранить владельцев, права доступа и специальные файлы. Извлечение никогда не заменяет существующую папку и не изменяет исходный модуль.

Также можно открыть локальный .sb файл через файловый менеджер. Открытие файла только просматривает его, не активирует и не добавляет в следующий запуск. В системах Xfce с установленной интеграцией Thunar MiniOS действия файлового менеджера используют тот же модульный бэкенд для явной активации и деактивации; они не обходят различие между «Текущий запуск» и «Следующая загрузка».

Создание модуля

Рабочая область «Создать» использует последовательность Настроить, Проверить, Выполнить, и Результат. Успешно созданный модуль остаётся файлом по указанному пути. Он не активируется и не добавляется в следующий запуск автоматически.

Доступные методы:

  • Пакеты устанавливает пакеты из репозиториев и выбранные локальные .deb файлы с зависимостями в изолированной среде сборки MiniOS. Для установки пакетов требуются права администратора.
  • Скрипт установки запускает проверенный скрипт без интерактивного терминала. Необязательная папка-источник может содержать начальные файлы. Скрипт выполняется с правами администратора, но не сохраняется в итоговом модуле.
  • Интерактивный chroot открывает временную root-оболочку во встроенном терминале. После завершения введите exit , затем создайте модуль, снова откройте оболочку или отмените изменения. Закрытие или отмена сессии не влияет на работающую систему.
  • Папка упаковывает содержимое существующей директории. Сама исходная папка не включается внутрь модуля. Графический процесс запрашивает права администратора для чтения защищённых файлов и сохранения атрибутов файловой системы; исходная папка не изменяется. Папки, извлечённые с сохранением владельцев, распознаются автоматически и сохраняют свои права. Для старой извлечённой папки без информации об источнике выберите Сохранять владельцев источника , если нужно сохранить владельцев.
  • Изменения текущей сессии захватывают подходящие файлы и удаления из текущего слоя сессии с возможностью записи. Используется стандартная политика MiniOS savechanges , которая исключает журналы, кэш, загрузочные данные и временные пути. Для чтения полного слоя с возможностью записи требуются права администратора.

Для каждого процесса выберите новый путь вывода. Существующие файлы никогда не перезаписываются. Прогресс и диагностика бэкенда отображаются во время выполнения операции, а захват изменений сессии можно отменить.

Для других папок стандартный процесс «Папка» меняет обычные UID и GID (1000–60000) на root вне /home и /opt, сохраняет системные ID и делает стандартные папки верхнего уровня принадлежащими root. Владельцы, потерянные при предыдущем извлечении без прав, этим способом не восстанавливаются.

«Изменения текущей сессии» предназначены для удобного стандартного захвата, а не для просмотра каждого включённого пути. В живом слое с возможностью записи могут быть личные или конфиденциальные данные. Для явных exact , clean или политик приватности по выбранным путям используйте командную строку savechanges , описанную в Захват изменений текущей сессии.

Перетаскивание

Перетаскивание только заполняет поле ввода или открывает просмотр:

  • Модуль открывает свои детали.
  • .deb файлы добавляются в «Пакеты».
  • Папка выбирается для «Папка».
  • Другой обычный файл выбирается как скрипт установки.

Перетаскивание не выполняет код и не изменяет «Текущий запуск» или «Следующая загрузка».

Связанная документация

Создание модулей

Модули MiniOS — это только для чтения образы файловой системы SquashFS, обычно с расширением .sb . При загрузке MiniOS выстраивает выбранные модули в слоистую корневую файловую систему. Файлы в слое с более высоким приоритетом могут дополнять или скрывать файлы из нижних слоёв. Эта модульная живая схема — часть определяющей архитектуры MiniOS, описанной в О MiniOS и Режимы загрузки . После нативного преобразования слоистый .sb корень заменяется обычной файловой системой Debian с возможностью записи. Программное обеспечение для управления модулями MiniOS удаляется, так как модульные процессы больше не применяются, а выбранная среда рабочего стола и обычные приложения остаются установленными как стандартные пакеты.

В этом руководстве описаны актуальные командные процессы MiniOS Tools. Для графического приложения см. Менеджер модулей MiniOS . Для полного процесса сборки образа и архитектуры системы см. Сборка MiniOS . Списки пакетов, используемые при сборке MiniOS, описаны в документации CondinAPT.

Безопасность и границы привилегий

Не для каждой операции с модулями нужны права root:

Операция Привилегии
Просмотр «Текущий запуск» или «Следующая загрузка» через sb Без root
Просмотр модуля через sb inspect Без root
Обычное использование командной строки dir2sb и sb2dir преобразование Без root
Сохранение владельцев или разрешение специальных файлов при преобразовании Root
Сборка через apt2sb , script2sb или chroot2sb Root
Захват сессии через savechanges Root
Активация, деактивация, добавление в следующий запуск или удаление из следующего запуска Root

Сборщики используют изолированный union и не устанавливают пакеты или изменения скриптов в работающий root. Создание также не активирует результат и не выбирает его для следующей загрузки.

Графические процессы «Папка» и «Извлечь в папку» запрашивают права администратора для работы с защищёнными файлами и сохранения атрибутов файловой системы.

Текущие конвертеры и сборщики используют публикацию без перезаписи. Уже существующая цель, включая символическую ссылку, не перезаписывается. Выберите новый путь вывода или вручную удалите старый результат.

Используйте --help вывод каждой команды как ссылку на установленную версию. Текущие apt2sb , script2sb , chroot2sb , dir2sb и savechanges процессы поддерживают zstd (по умолчанию)gzip , lzo , lz4 и xz . Выбранный компрессор должен быть доступен в системе.

Названия модулей и уровни фильтрации

Названия обычно начинаются с числа, например, 06-browser.sb поскольку порядок слоёв влияет на разрешение конфликтов. Модуль должен содержать пути относительно корня системы, например, usr/bin/example, а не дополнительную директорию с этим деревом.

Для получения информации о точных уровнях исходных кандидатов, поведении при совпадении имён файлов, числовой сортировкеbext=, load= и noload= семантике см. Загрузка модулей initrd. В частности, используйте уникальное имя файла, если только модуль не предназначен для замены одноимённого слота из предыдущего уровня.

Параметр --level LEVEL в apt2sb, script2sb и chroot2sb ограничивает базовые слои, используемые для формирования объединённой сборки. При использовании --level 3, используются слои с номерами до 03 включительно, а слои с большими номерами отфильтровываются. Это позволяет сделать модуль менее зависимым от необязательных верхних слоёв, но увеличивает количество зависимостей в результате.

Создать модуль из пакетов

apt2sb устанавливает пакеты из репозитория или доступные локальные .deb файлы в приватное объединённое окружение сборки и сохраняет результат. Требуется поддерживаемая живая сессия MiniOS и права root.

sudo apt2sb install chromium chromium-sandbox
sudo apt2sb install -y --level 3 -n 06-browser.sb chromium chromium-sandbox
sudo apt2sb install -y --no-install-recommends ./example_amd64.deb -n 06-example.sb

Без --name, имя выходного файла формируется из первого пакета. Полезные параметры APT: --install-recommends, --no-install-recommends, --install-suggests, --no-install-suggests, --allow-downgrades, и --target-release RELEASE. Опция target-release применяется только к install.

Чтобы зафиксировать обновления уже установленных пакетов:

sudo apt2sb upgrade -y -n upgrades.sb

Создать модуль из скрипта

script2sb копирует установочный скрипт в приватный chroot, делает его исполняемым, запускает от имени root без интерактивного терминала, удаляет его и фиксирует изменения в файловой системе. Если скрипт завершился с ошибкой, модуль не создаётся.

sudo script2sb --script ./install-example.sh -n 06-example.sb
sudo script2sb --script ./install-example.sh --directory ./seed-root --level 3 -n 06-example.sb

Опционально, --directory DIR копирует все исходные файлы, включая скрытые, в корень модуля до запуска скрипта. Организуйте директорию seed как дерево файловой системы:

seed-root/
`-- usr/
    `-- share/
        `-- applications/
            `-- example.desktop

Перед запуском проверьте скрипт. Он выполняется с правами администратора и может запускать любые команды. Используйте chroot2sb если установка требует ввода данных или ручных действий.

Создать модуль в интерактивном режиме

chroot2sbсоздаёт приватный build union и открывает root-оболочку внутри него. Установите необходимые пакеты или отредактируйте файлы, затем выйдите из оболочки, чтобы зафиксировать изменения:

sudo chroot2sb --level 3 -n 06-custom.sb
sudo chroot2sb --directory ./seed-root -c xz -n 06-custom.sb

Команды, введённые в оболочке, не воспроизводятся при загрузке модуля; модуль представляет собой снимок итогового состояния файловой системы. История команд оболочки не сохраняется в результате. Если имя не указано, оно будет сгенерировано автоматически на основе текущих даты и времени.

Разделённый prepare, shell, finish и cancel жизненный цикл используется для защищённых графических интерфейсов. Для обычной работы в терминале используйте единую интерактивную команду, приведённую выше.

Создать модуль из каталога

dir2sbупаковывает содержимое подготовленного каталога в новый модуль. Оба операнда обязательны:

dir2sb my-app-root 06-my-app.sb
dir2sb --comp xz my-app-root 06-my-app-xz.sb

Обычное преобразование выполняется без root-прав. Исходный каталог не изменяется, обычные идентификаторы пользователя и группы (1000–60000) заменяются на root вне/home и /opt, системные идентификаторы сохраняются, а стандартные каталоги верхнего уровня становятся принадлежащими root. Устройство, сокеты и FIFO-файлы не принимаются, и целевой файл никогда не перезаписывается.--keep-ownershipсохраняет всех владельцев из источника и --allow-specialразрешает специальные файлы; оба требуют root-прав.

sb2dirзаписывает .minios-module-origin.jsonв извлечённом каталоге. Если при извлечении сохранялось владение, dir2sbраспознаёт эту запись и автоматически сохраняет владельцев и специальные файлы при повторной упаковке; сама запись в новый модуль не включается. Каталог, извлечённый без сохранения владельцев, не может быть повторно упакован, так как исходные владельцы уже неизвестны. Извлеките исходный модуль снова с привилегированными опциями.

Фиксация изменений текущей сессии

savechanges читает основную записываемую область работающей сессии MiniOS. Для этого требуются права root, поскольку в этой области могут находиться файлы, доступные только root. Местоположение изменений определяется автоматически:

sudo savechanges session-changes.sb
sudo savechanges --comp xz session-changes-xz.sb

Без --profile, устаревшая политика MiniOS не включает пустые каталоги, кэши, журналы, загрузочные данные, временные пути, псевдофайловые системы, а также отдельные файлы сессии и системы. Это удобно для создания традиционных модулей, но не является явной гарантией конфиденциальности.

Явные профили:

  • exact сохраняет все представимые изменения, включая пользовательские данные, журналы, кэши, файлы идентификации, учетные данные и поддерживаемые метаданные об удалении. Не поддерживаемые объекты файловой системы отклоняются, чтобы избежать их незаметной потери.
  • clean использует ограниченный список разрешённых путей, ориентированный на программное обеспечение. Исключаются данные домашнего каталога и root, журналы, кэши, идентификаторы, сетевые настройки, учетные данные, произвольные системные настройки и /usr/local. Это снижает риск раскрытия конфиденциальной информации, но не гарантирует, что разрешённый программный файл не содержит секретов.
  • selected включает только проверенные относительные пути из инвентарного и выборочного файла. Явные исключения имеют приоритет. Этот профиль подходит, если модуль должен содержать строго определённый набор изменений сессии.

Примеры:

sudo savechanges --profile exact exact-session.sb
sudo savechanges --profile clean --comp xz software-session.sb
sudo savechanges --inventory-json session-inventory.json
sudo savechanges --profile selected --selection selection.json selected-session.sb

Файл выбора должен иметь строго следующую структуру JSON:

{
  "product_kind": "minios-session-selection",
  "schema_version": 1,
  "include_paths": ["etc/default", "opt/my-app"],
  "exclude_paths": ["opt/my-app/private"]
}

Пути нормализованы, не пустые и заданы относительно корня изменений. Сначала сгенерируйте и проверьте инвентарь; каждый включённый путь должен соответствовать данным инвентаря. Инвентарь фиксирует метаданные, такие как путь, тип, категория, чувствительность и размер, но не читает и не сохраняет содержимое файлов, цели символических ссылок или секретные значения. Выводы и инвентари явных профилей создаются в режиме 0600; модули с устаревшей политикой — в режиме 0644.

Фиксация сессии может сохранять поддерживаемые удаления файлов и непрозрачность каталогов для активного бэкенда AUFS или OverlayFS. Исключаются временные монтирования, вложенные файловые системы, служебные данные объединения и сам вывод. Существующая цель никогда не заменяется.

Просмотр и извлечение модулей

Просмотрите модуль без монтирования и извлечения:

sb inspect 06-example.sb
sb inspect 06-example.sb --json

Просмотр работает без прав администратора и доступен вне запущенной сессии MiniOS.

Извлеките модуль в новый каталог:

sb2dir 06-example.sb example-root

Обычное извлечение не требует прав администратора и не изменяет исходные данные. Целевой каталог не должен существовать. Особые файлы не извлекаются, если только--allow-special не запрошено с достаточными правами.

Чтобы корректно пересобрать каталог, извлеките его с правами администратора, сохранив владельца и специальные файлы:

sudo sb2dir --keep-ownership --allow-special 06-example.sb example-root

При извлечении модуль записывает информацию об источнике в.minios-module-origin.json внутри нового каталога. Если извлекать без прав администратора, сохраняется отметка о том, что владельцы не были сохранены; такой каталог нельзя передать обратно вdir2sb. Сохраняйте запись об источнике при извлечении с привилегиями до повторной упаковки.

Каталоги, созданные текущей версиейsb2dir — это обычные каталоги.rmsbdir, sb rm и sb rmdir — устаревшие команды совместимости, которые всегда отказываются удалять что-либо; они не размонтируют и не удаляют содержимое рекурсивно. Перед удалением извлечённого каталога и его содержимого используйте стандартные инструменты файловой системы для проверки.

Управление запущенными и загружаемыми модулями

Текущая сессия и следующая загрузка — это независимые композиции. Подробнее см. конструкцию union и активацию во время выполнения, чтобы узнать о границе загрузки/исполнения и почему эти списки могут отличаться.

Показать модули, фактически входящие в текущий корень AUFS или OverlayFS, от наименьшего к наибольшему приоритету:

sb list
sb list --json

Показать модули, выбранные текущими правилами загрузки:

sb next-boot
sb next-boot --json

Эти запросы выполняются без привязки к корню. Канонические правила уровней кандидатов и замены определяют, из какого источника берётся каждый базовый модуль для следующей загрузки.

Чтобы пользовательский модуль был доступен при следующей загрузке:

sudo sb next-boot add 50-extra.sb

MiniOS использует подходящее долговременное хранилище с поддержкой записи, подготавливает и проверяет копию, а затем публикует её атомарно, не заменяя существующий модуль. Имя файла должно соответствовать текущим фильтрам загрузки. Отключить выбранный пользовательский модуль можно по его точному имени файла:

sudo sb next-boot disable 50-extra.sb

При отключении файл сохраняется в modules-disabled/. Команда next-boot remove является псевдонимом для отключения, а не для окончательного удаления. Восстановить или удалить файл безвозвратно можно с помощью:

sudo sb next-boot enable 50-extra.sb
# To delete it permanently, disable it first:
sudo sb next-boot disable 50-extra.sb
sudo sb next-boot delete 50-extra.sb

Базовые модули и модули на источниках только для чтения или во временных хранилищах нельзя отключить. Окончательное удаление также невозможно для активного модуля. Перед удалением сохранённого файла проверьте sb next-boot и список отключённых модулей.

Активация во время выполнения — отдельная операция, действующая только в текущей сессии:

sudo sb activate 50-extra.sb
sudo sb deactivate 50-extra.sb

Активация и деактивация работают только если / сейчас является union AUFS. Эти функции недоступны на OverlayFS, и одной поддержки ядра AUFS недостаточно. Ни одна из команд не изменяет параметры следующей загрузки.

Диспетчер конвертеров совместимости требует оба операнда:

sudo sb conv my-app-root 06-my-app.sb
sudo sb conv 06-my-app.sb example-root

Прямое использование dir2sb и sb2dir предпочтительнее, так как обычное преобразование можно выполнять без привязки к корню.

Связанная документация

🏠 Home

🌐 Languages

English

📋 Getting started

🚀 Installing MiniOS

🖥️ Using MiniOS

⚙️ Preparing and customizing MiniOS

🛡️ Maintenance and recovery

📖 Reference

🛠️ Development

de

📋 Erste Schritte

🚀 MiniOS installieren

🖥️ MiniOS verwenden

⚙️ MiniOS vorbereiten und anpassen

🛡️ Wartung und Wiederherstellung

📖 Referenz

🛠️ Entwicklung

es

📋 Primeros pasos

🚀 Instalando MiniOS

🖥️ Usar MiniOS

⚙️ Preparar y personalizar MiniOS

🛡️ Mantenimiento y recuperación

📖 Referencia

🛠️ Desarrollo

fr

📋 Premiers pas

🚀 Installation de MiniOS

🖥️ Utiliser MiniOS

⚙️ Préparer et personnaliser MiniOS

🛡️ Maintenance et récupération

📖 Référence

🛠️ Développement

id

📋 Memulai

🚀 Menginstal MiniOS

🖥️ Menggunakan MiniOS

⚙️ Menyiapkan dan menyesuaikan MiniOS

🛡️ Pemeliharaan dan pemulihan

📖 Referensi

🛠️ Pengembangan

it

📋 Per iniziare

🚀 Installazione di MiniOS

🖥️ Usare MiniOS

⚙️ Preparare e personalizzare MiniOS

🛡️ Manutenzione e ripristino

📖 Riferimento

🛠️ Sviluppo

pt-BR

📋 Primeiros passos

🚀 Instalando o MiniOS

🖥️ Usar MiniOS

⚙️ Preparando e personalizando o MiniOS

🛡️ Manutenção e recuperação

📖 Referência

🛠️ Desenvolvimento

ru

📋 Начало работы

🚀 Установка MiniOS

🖥️ Использование MiniOS

⚙️ Подготовка и настройка MiniOS

🛡️ Обслуживание и восстановление

📖 Справочник

🛠️ Разработка

Clone this wiki locally