-
Notifications
You must be signed in to change notification settings - Fork 59
Creating Modules ru
Модули в MiniOS — это автономные пакеты файлов и конфигураций, расширяющие функциональность базовой системы. Они похожи на пакеты в других Linux-дистрибутивах, но спроектированы так, чтобы накладываться друг на друга, обеспечивая гибкость и настраиваемость системы. Такой послойный подход позволяет легко настраивать систему, откатывать изменения и делиться конфигурациями.
Полное описание процесса сборки MiniOS и архитектуры системы смотрите в руководстве по сборке MiniOS. Информацию о системе управления пакетами CondinAPT, используемой в модулях, смотрите в документации по CondinAPT.
В MiniOS существует достаточно много утилит для создания модулей. Все они предназначены для работы в терминале и требуют прав суперпользователя.
Утилиты для создания модулей:
apt2sb — устанавливает пакеты из репозиториев и упаковывает их в модуль.
script2sb — выполняет действия, описанные в скрипте, и упаковывает результат в модуль.
chroot2sb — открывает chroot, позволяя выполнить любые действия внутри, после выхода сохраняет результат в модуль.
Дополнительные утилиты для управления модулями:
dir2sb — конвертирует существующую директорию в сжатый модуль.
sb2dir — преобразует сжатый модуль в директорию для изучения содержимого.
rmsbdir — удаляет директорию модуля, созданную с помощью sb2dir.
savechanges — сохраняет все изменённые файлы системы в сжатый файловый бандл.
sb2iso — генерирует ISO-образ MiniOS с возможностью добавления или исключения модулей.
sb — универсальный интерфейс для управления бандлами MiniOS (активация, деактивация, список, конвертация).
Общие возможности утилит для создания модулей:
- Поддержка различных типов сжатия: zstd (по умолчанию), gzip, lzo, xz
- Настраиваемое расширение файла модуля (по умолчанию: sb)
- Фильтрация по уровням для управления включением зависимых модулей
- Пользовательское имя выходного модуля
- Все утилиты должны запускаться с правами root
Чтобы собрать модуль с помощью apt2sb, просто перечислите пакеты, которые хотите включить в модуль, например: apt2sb install chromium chromium-sandbox. После выполнения этой команды в папке, где она была запущена, появится модуль chromium.sb, содержащий браузер Chromium. Этот модуль будет собран с учётом всех модулей, загруженных в систему, то есть для его работы потребуются все эти модули, поскольку необходимые для работы программы библиотеки могут уже быть установлены в системе и находиться в нижележащих модулях.
С помощью опции -l/--level можно указать, на каком верхнем модуле нужно собирать ваш модуль. Например, команда apt2sb install -l 4 chromium chromium-sandbox при сборке отфильтрует все модули с номером 04 и выше, то есть модуль будет собран на основе модулей с номерами 00-03. В результате выполнения этой команды в папке, откуда она запускалась, появится модуль 04-chromium.sb. Этот модуль будет больше по размеру, чем в предыдущем примере, так как в него войдут все необходимые для запуска программы библиотеки, которые могли бы находиться в модулях с номерами 04 и выше, но он сможет работать как при наличии модулей 04-xx, так и без них.
Имя модуля формируется автоматически на основе имени первого указанного пакета (в нашем случае chromium) и, если задана опция --level, номера уровня. Если вы хотите задать имя модуля вручную, используйте опцию -n/--name, например: apt2sb install -l 4 chromium chromium-sandbox -n 10-browser.sb.
Дополнительные опции apt2sb:
-
-c/--comp— тип сжатия (zstd, gzip, lzo, xz). По умолчанию: zstd -
-b/--bext— расширение бандла. По умолчанию: sb -
-y/--yes— автоматический ответ «да» на запросы -
--allow-downgrades— разрешить понижение версий пакетов -
--install-recommends— учитывать рекомендуемые пакеты как зависимость для установки -
--install-suggests— учитывать предлагаемые пакеты как зависимость для установки -
--no-install-recommends— не учитывать рекомендуемые пакеты как зависимость -
--no-install-suggests— не учитывать предлагаемые пакеты как зависимость -
-t/--target-release— релиз по умолчанию для установки пакетов
В apt2sb также есть команда upgrade, позволяющая обновлять уже установленные пакеты. Команда upgrade использует те же опции, что и install.
Для создания модуля с помощью script2sb необходимо написать bash-скрипт, описывающий шаги по сборке вашего модуля. Это удобно, если нужно выполнить какие-либо действия в файловой системе, импортировать ключи, добавить репозиторий и т.д. до или после установки. Вот пример такого скрипта:
#!/bin/bash
<a id="install-the-keys-to-access-the-debian-repository-and-the-apt-add-on-to-access-the-repository-via-https"></a>
# Install the keys to access the Debian repository and the apt add-on to access the repository via https
apt install -y debian-keyring debian-archive-keyring apt-transport-https
<a id="adding-a-gpg-key-for-the-caddy-repository"></a>
# Adding a GPG key for the Caddy repository
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
<a id="add-the-caddy-repository-to-the-package-source-list"></a>
# Add the Caddy repository to the package source list
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
<a id="updating-the-list-of-packages"></a>
# Updating the list of packages
apt update
<a id="installing-caddy"></a>
# Installing Caddy
apt install caddy
<a id="remove-keys-to-access-the-debian-repository"></a>
# Remove keys to access the Debian repository
apt remove -y debian-keyring debian-archive-keyring apt-transport-https
<a id="deleting-the-source-list-file-and-gpg-key-for-the-caddy-repository"></a>
# Deleting the source list file and GPG key for the Caddy repository
rm /etc/apt/sources.list.d/caddy-stable.list /usr/share/keyrings/caddy-stable-archive-keyring.gpgЧтобы запустить сборку по этому скрипту (назовём его caddy.sh), выполните команду script2sb -s ./caddy.sh.
Доступные опции script2sb:
-
-s/--script— использовать FILE как скрипт установки (обязательно) -
-l/--level— использовать LEVEL как уровень фильтрации -
-n/--name— использовать NAME как имя файла модуля -
-c/--comp— тип сжатия (zstd, gzip, lzo, xz). По умолчанию: zstd -
-b/--bext— расширение бандла. По умолчанию: sb -
-d/--directory— скопировать содержимое DIR в корень модуля
Если имя модуля не указано, оно формируется на основе номера уровня (если задан) и имени скрипта. Пример выполнения команды с этими опциями: script2sb -s ./caddy.sh -l 1 -n 01-caddy.sb.
В дополнение к этим опциям можно использовать параметр -d/--directory. Если он указан, содержимое папки, переданной в качестве аргумента, будет скопировано в корень модуля до выполнения скрипта. Файлы в такой папке должны располагаться так, как если бы они находились в корне системы. Например, если нужно добавить ярлык для какой-либо программы в меню, создайте папку mymodule и в ней структуру относительно корня системы:
mkdir -p /home/user/mymodule/usr/share/applications
В mymodule/usr/share/applications нужно поместить desktop-файл, который будет упакован в модуль после завершения сборки, и выполнить команду сборки:
script2sb -s ./caddy.sh -l 1 -n 01-caddy.sb -d /home/user/mymodule
Утилита chroot2sb используется для создания интерактивной среды chroot. Это позволяет вручную выполнить любые действия, необходимые для сборки вашего модуля (установка пакетов, редактирование файлов, выполнение команд и т.д.). После выхода из chroot все внесённые изменения упаковываются в модуль.
Доступные опции chroot2sb:
-
-l/--level— использовать LEVEL как уровень фильтрации -
-n/--name— использовать NAME как имя файла модуля -
-c/--comp— тип сжатия (zstd, gzip, lzo, xz). По умолчанию: zstd -
-b/--bext— расширение бандла. По умолчанию: sb -
-d/--directory— скопировать содержимое DIR в корень модуля
Если имя модуля не указано, оно формируется на основе номера уровня (если задан) и текущей даты и времени в формате YYYYMMDD-HHMM.
Также можно использовать опцию -d/--directory, аналогично script2sb. Если она указана, содержимое указанной папки будет скопировано в корень модуля до входа в chroot. Это позволит задать исходную точку для ваших доработок.
Примеры использования:
- Обычный chroot, имя модуля формируется автоматически:
chroot2sb - Указать уровень и тип сжатия:
chroot2sb -l 3 -c gzip - Указать уровень, имя и сжатие:
chroot2sb -l 3 -n 04-my-module.sb -c xz - Скопировать файлы из директории перед входом в chroot:
chroot2sb -d /path/to/my/files
После запуска команды chroot2sb вы попадёте в chroot-среду. Здесь можно выполнить любые необходимые действия. По завершении работы наберите exit для выхода из chroot. После этого chroot2sb упакует изменения в модуль. Команды, введённые в chroot, не сохраняются как часть процесса установки итогового модуля — сохраняется снимок итогового состояния файловой системы. История bash автоматически удаляется из модуля.
Помимо утилит для создания модулей, MiniOS предоставляет несколько инструментов для управления и работы с уже существующими модулями:
Утилита dir2sb используется для преобразования существующей директории в сжатый модуль. Это удобно, если у вас уже подготовлена структура с нужными файлами, и вы хотите упаковать её в модуль без выполнения каких-либо установочных процессов.
Доступные опции dir2sb:
-
-c/--comp— тип сжатия (zstd, gzip, lzo, xz). По умолчанию: zstd -
-b/--bext— расширение бандла. По умолчанию: sb
Использование:
dir2sb [ОПЦИИ] SOURCE_DIRECTORY [TARGET_FILE]
Поведение:
- Если
SOURCE_DIRECTORYне имеет расширения .sb и не называется 'squashfs-root', то сама директория включается в модуль, иTARGET_FILEобязателен. - Если
TARGET_FILEне указан,SOURCE_DIRECTORYзаменяется новым файлом модуля.
Примеры:
- Преобразовать подготовленную директорию в модуль:
dir2sb /path/to/my/prepared/files my-module.sb - Преобразовать директорию squashfs-root (заменяет оригинал):
dir2sb squashfs-root - Использовать другое сжатие:
dir2sb -c xz /path/to/files custom-module.sb
Эта утилита особенно полезна, если вам нужно:
- Упаковать заранее настроенные файлы и директории
- Конвертировать извлечённое содержимое модуля обратно в модуль
- Создавать модули из вручную подготовленных директорий
Утилита sb2dir преобразует сжатый модуль (.sb файл) в директорию с таким же именем. Это удобно для извлечения и изучения содержимого модуля.
Использование:
sb2dir [source_file.sb] [optional_output_directory]
Поведение:
- Если выходная директория указана, она должна существовать
- Если выходная директория не указана, используется имя source_file.sb, и директория монтируется поверх tmpfs
Примеры:
- Извлечь модуль для изучения содержимого:
sb2dir mymodule.sb - Извлечь в определённую директорию:
sb2dir mymodule.sb /tmp/extracted
Утилита rmsbdir удаляет директорию модуля, созданную с помощью sb2dir. Это корректно очищает монтирование tmpfs, если оно использовалось.
Использование:
rmsbdir [source_directory.sb]
Пример:
- Удалить извлечённую директорию модуля:
rmsbdir mymodule.sb
Утилита savechanges сохраняет все изменённые файлы в системе в сжатый файловый бандл. Это удобно для создания модулей из изменений, внесённых во время работы.
Доступные опции:
-
-c/--comp— тип сжатия (zstd, gzip, lzo, xz). По умолчанию: zstd -
-b/--bext— расширение бандла. По умолчанию: sb
Использование:
savechanges [ОПЦИИ] target_file.sb [changes_directory]
Если changes_directory не указана, используется /run/initramfs/memory/changes.
Примеры:
- Сохранить все текущие изменения:
savechanges my-changes.sb - Сохранить с другим сжатием:
savechanges -c xz my-changes.sb
Утилита sb2iso генерирует ISO-образ MiniOS с возможностью добавления указанных модулей или исключения существующих.
Доступные опции:
-
-e/--exclude— исключить любой существующий путь или файл, совпадающий с REGEX -
-n/--name— указать имя выходного ISO-файла (по умолчанию: minios-YYYYMMDD_HHMM.iso)
Использование:
sb2iso [ОПЦИИ]... [MODULE.SB]...
Примеры:
- Создать ISO MiniOS без модуля firefox.sb:
sb2iso -e 'firefox' -n minios_without_firefox.iso - Создать только текстовый режим MiniOS:
sb2iso --exclude='firmware|xorg|desktop|apps|firefox' --name=minios_textmode.iso
Утилита sb предоставляет универсальный интерфейс для управления бандлами MiniOS, включая активацию, деактивацию и операции конвертации.
Важно: Для большинства операций утилита sb требует поддержки AUFS (Advanced multi layered UniFication FileSystem) в ядре. Если AUFS недоступен в вашем ядре, многие команды работать не будут.
Доступные команды:
-
activate BUNDLE— активировать бандл MiniOS -
deactivate BUNDLE— деактивировать активный бандл MiniOS -
list— показать список активных бандлов MiniOS -
savechanges— сохранить изменения, внесённые во время работы, в бандл -
rm DIR/rmdir DIR— удалить распакованную директорию бандла -
conv PATH— конвертировать бандл .sb в директорию или обратно
Примеры:
- Активировать модуль:
sb activate mymodule.sb - Деактивировать модуль:
sb deactivate mymodule.sb - Показать активные модули:
sb list - Конвертировать модуль в директорию:
sb conv mymodule.sb - Конвертировать директорию в модуль:
sb conv mymodule/
Примечание: Команды activate, deactivate и list требуют поддержки AUFS в ядре и прав root. Команды conv, rm и rmdir работают без AUFS, но также требуют прав root.
-
Пересборка ISO — Узнайте, как упаковать свои собственные модули в загрузочные ISO-образы с помощью
sb2iso - Сборка MiniOS — Полное руководство по сборке MiniOS из исходников с пользовательскими конфигурациями
🌐 Languages
📋 About MiniOS
🚀 Installation
⚙️ Configuration
🛡️ Administration
🛠️ Development
📋 Über MiniOS
🚀 Installation
- Schnellstartanleitung
- Hardware-Kompatibilität
- MiniOS Installation
- MiniOS Installer
- USB-Erstellungstools
⚙️ Konfiguration
🛡️ Administration
🛠️ Entwicklung
📋 Acerca de MiniOS
🚀 Instalación
- Guía de Inicio Rápido
- Compatibilidad de Hardware
- Instalando MiniOS
- Instalador de MiniOS
- Herramientas para Crear USB
⚙️ Configuración
- Menús de Arranque
- Parámetros de Arranque
- Archivo de Configuración
- Parámetros de live-config
- Gestión de Sesiones
🛡️ Administración
- Lista de Paquetes
- Gestión del Kernel
- Endurecimiento de Seguridad
- Optimización de Rendimiento
- Virtualización
🛠️ Desarrollo
📋 À propos de MiniOS
🚀 Installation
- Guide de démarrage rapide
- Compatibilité matérielle
- Installation de MiniOS
- Programme d’installation MiniOS
- Outils de création USB
⚙️ Configuration
- Menus de démarrage
- Paramètres de démarrage
- Fichier de configuration
- Paramètres live-config
- Gestion de session
🛡️ Administration
- Liste des paquets
- Gestion du noyau
- Renforcement de la sécurité
- Optimisation des performances
- Virtualisation
🛠️ Développement
📋 Tentang MiniOS
🚀 Instalasi
- Panduan Mulai Cepat
- Kompatibilitas Perangkat Keras
- Menginstal MiniOS
- Installer MiniOS
- Alat Pembuatan USB
⚙️ Konfigurasi
🛡️ Administrasi
🛠️ Pengembangan
📋 Informazioni su MiniOS
🚀 Installazione
- Guida Rapida
- Compatibilità Hardware
- Installazione di MiniOS
- Installatore MiniOS
- Strumenti per Creare USB
⚙️ Configurazione
🛡️ Amministrazione
- Elenco Pacchetti
- Gestione Kernel
- Rafforzamento della Sicurezza
- Ottimizzazione Prestazioni
- Virtualizzazione
🛠️ Sviluppo
📋 Sobre o MiniOS
🚀 Instalação
- Guia de Início Rápido
- Compatibilidade de Hardware
- Instalando o MiniOS
- Instalador do MiniOS
- Ferramentas de Criação de USB
⚙️ Configuração
- Menus de Boot
- Parâmetros de Boot
- Arquivo de Configuração
- Parâmetros live-config
- Gerenciamento de Sessão
🛡️ Administração
- Lista de Pacotes
- Gerenciamento de Kernel
- Reforço de Segurança
- Otimização de Desempenho
- Virtualização
🛠️ Desenvolvimento
📋 О MiniOS
🚀 Установка
- Краткое руководство
- Совместимость с оборудованием
- Установка MiniOS
- Установщик MiniOS
- Инструменты для создания USB
⚙️ Конфигурация
🛡️ Администрирование
🛠️ Разработка