-
Notifications
You must be signed in to change notification settings - Fork 59
Creating Modules it
I moduli in MiniOS sono pacchetti autonomi di file e configurazioni che estendono le funzionalità del sistema base. Sono simili ai pacchetti di altre distribuzioni Linux, ma sono progettati per essere sovrapposti l’uno all’altro, consentendo un sistema flessibile e personalizzabile. Questo approccio a livelli permette una facile personalizzazione, il rollback delle modifiche e la condivisione delle configurazioni.
Per una panoramica completa del processo di build di MiniOS e dell’architettura del sistema, consulta la Guida alla compilazione di MiniOS. Per informazioni sul sistema di gestione dei pacchetti CondinAPT utilizzato nei moduli, vedi la Documentazione di CondinAPT.
Sono disponibili numerose utility per la creazione di moduli in MiniOS. Tutte sono progettate per l’utilizzo da terminale e richiedono privilegi di root.
Utility per la creazione dei moduli:
apt2sb – installa pacchetti dai repository e li impacchetta in un modulo.
script2sb – esegue le azioni descritte nello script e impacchetta il risultato in un modulo.
chroot2sb – apre un ambiente chroot, consentendo di eseguire qualsiasi operazione; al termine, salva il risultato nel modulo.
Utility aggiuntive per la gestione dei moduli:
dir2sb – converte una directory esistente in un modulo compresso.
sb2dir – converte un modulo compresso in una directory per l’ispezione.
rmsbdir – rimuove una directory di modulo creata da sb2dir.
savechanges – salva tutti i file modificati nel sistema in un bundle filesystem compresso.
sb2iso – genera un’immagine ISO di MiniOS, con la possibilità di aggiungere o escludere moduli.
sb – interfaccia completa per la gestione dei bundle MiniOS (attiva, disattiva, elenca, converte).
Caratteristiche comuni delle utility di creazione moduli:
- Supporto per diversi tipi di compressione: zstd (predefinito), gzip, lzo, xz
- Estensione file del modulo personalizzabile (predefinito: sb)
- Filtro per livello per controllare quali moduli esistenti includere come dipendenze
- Nome personalizzato per i moduli in output
- Tutte le utility devono essere eseguite come root
Per creare un modulo con apt2sb, basta elencare i pacchetti che si desidera includere nel modulo, ad esempio: apt2sb install chromium chromium-sandbox. Eseguendo questo comando nella cartella corrente verrà generato un modulo chromium.sb che conterrà il browser Chromium. Questo modulo sarà costruito in relazione a tutti i moduli già caricati nel sistema, il che significa che per funzionare richiederà la presenza di questi ultimi, poiché le librerie necessarie al programma potrebbero già essere installate e contenute nei moduli inferiori.
Utilizzando l’opzione -l/--level possiamo specificare su quale modulo superiore costruire il nostro modulo. Ad esempio, il comando apt2sb install -l 4 chromium chromium-sandbox escluderà tutti i moduli numerati 04 e superiori durante la creazione, cioè il modulo sarà basato sui moduli numerati da 00 a 03. Come risultato, otterremo il modulo 04-chromium.sb nella cartella di esecuzione del comando. Questo modulo avrà una dimensione maggiore rispetto all’esempio precedente perché includerà tutte le librerie necessarie all’esecuzione del programma, che potrebbero essere contenute nei moduli 04 e superiori, ma potrà funzionare sia in presenza che in assenza dei moduli dal 04 in poi.
Il nome del modulo viene creato automaticamente, basandosi sul nome del primo pacchetto specificato (in questo caso chromium) e, se viene indicata l’opzione --level, anche sul numero di livello. Se si desidera specificare manualmente il nome del modulo, si può usare l’opzione -n/--name, ad esempio: apt2sb install -l 4 chromium chromium-sandbox -n 10-browser.sb.
Opzioni aggiuntive disponibili in apt2sb:
-
-c/--comp– Tipo di compressione (zstd, gzip, lzo, xz). Predefinito: zstd -
-b/--bext– Estensione bundle. Predefinito: sb -
-y/--yes– Risposta automatica sì alle richieste -
--allow-downgrades– Permetti il downgrade dei pacchetti -
--install-recommends– Considera i pacchetti raccomandati come dipendenze per l’installazione -
--install-suggests– Considera i pacchetti suggeriti come dipendenze per l’installazione -
--no-install-recommends– Non considerare i pacchetti raccomandati come dipendenze -
--no-install-suggests– Non considerare i pacchetti suggeriti come dipendenze -
-t/--target-release– Release predefinita da cui installare i pacchetti
apt2sb dispone anche del comando upgrade che permette di aggiornare i pacchetti già installati. Il comando upgrade utilizza le stesse opzioni di install.
Per creare un modulo con script2sb, è necessario scrivere uno script bash che descriva i passaggi richiesti per costruire il modulo. Questo è utile se occorre eseguire alcune operazioni sul file system, importare chiavi, aggiungere repository, ecc. prima o dopo l’installazione. Ecco un esempio di tale script:
#!/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.gpgPer eseguire la build di questo script (chiamiamolo caddy.sh), occorre lanciare il comando script2sb -s ./caddy.sh.
Opzioni disponibili per script2sb:
-
-s/--script– Usa FILE come script di installazione (obbligatorio) -
-l/--level– Usa LEVEL come livello di filtro -
-n/--name– Usa NAME come nome file per il modulo -
-c/--comp– Tipo di compressione (zstd, gzip, lzo, xz). Predefinito: zstd -
-b/--bext– Estensione bundle. Predefinito: sb -
-d/--directory– Copia il contenuto di DIR nella root del modulo
Se non viene specificato un nome per il modulo, il nome viene creato in base al numero di livello, se indicato, e al nome dello script. Un esempio di comando con queste opzioni è: script2sb -s ./caddy.sh -l 1 -n 01-caddy.sb.
Oltre a queste opzioni, è possibile usare l’opzione -d/--directory. Se questa opzione viene specificata, il contenuto della cartella indicata verrà copiato nella root del modulo prima dell’esecuzione dello script. I file in tale cartella devono essere organizzati come se fossero nella root del sistema. Supponiamo di dover aggiungere un collegamento nel menu per un programma: creiamo una cartella mymodule e al suo interno una struttura relativa alla root del sistema:
mkdir -p /home/user/mymodule/usr/share/applications
Nella cartella mymodule/usr/share/applications dovrai inserire il file desktop che verrà incluso nel modulo dopo la build ed eseguire il comando di build:
script2sb -s ./caddy.sh -l 1 -n 01-caddy.sb -d /home/user/mymodule
L’utility chroot2sb viene utilizzata per creare un ambiente chroot interattivo. Questo consente di eseguire manualmente qualsiasi operazione necessaria per costruire il proprio modulo (installare pacchetti, modificare file, eseguire comandi, ecc.). Una volta usciti dall’ambiente chroot, le modifiche apportate vengono impacchettate in un modulo.
Opzioni disponibili per chroot2sb:
-
-l/--level– Usa LEVEL come livello di filtro -
-n/--name– Usa NAME come nome file per il modulo -
-c/--comp– Tipo di compressione (zstd, gzip, lzo, xz). Predefinito: zstd -
-b/--bext– Estensione bundle. Predefinito: sb -
-d/--directory– Copia il contenuto di DIR nella root del modulo
Se non viene specificato un nome per il modulo, il nome viene creato in base al numero di livello, se indicato, e alla data e ora corrente nel formato YYYYMMDD-HHMM.
Puoi anche utilizzare l’opzione -d/--directory, come in script2sb. Se questa opzione viene specificata, il contenuto della cartella indicata verrà copiato nella root del modulo prima di entrare nell’ambiente chroot. Questo fornisce un punto di partenza per le tue personalizzazioni.
Esempi d’uso:
- Chroot base, nome modulo automatico:
chroot2sb - Specifica livello e compressione:
chroot2sb -l 3 -c gzip - Specifica livello, nome e compressione:
chroot2sb -l 3 -n 04-my-module.sb -c xz - Copia file da una directory prima di entrare in chroot:
chroot2sb -d /path/to/my/files
Dopo aver eseguito il comando chroot2sb, entrerai in un ambiente chroot. Potrai quindi effettuare tutte le operazioni necessarie. Al termine, digita exit per uscire dall’ambiente chroot. chroot2sb impacchetterà quindi le modifiche in un modulo. I comandi eseguiti nel chroot non vengono salvati come parte del processo di installazione finale del modulo: viene creato uno snapshot dello stato finale del filesystem. La cronologia bash viene eliminata automaticamente dal modulo.
Oltre alle utility per la creazione dei moduli, MiniOS fornisce diversi strumenti per la gestione e l’utilizzo dei moduli esistenti:
L’utility dir2sb viene utilizzata per convertire una directory esistente in un modulo compresso. È utile quando hai già preparato una struttura di directory con tutti i file necessari e vuoi impacchettarla in un modulo senza eseguire processi di installazione.
Opzioni disponibili per dir2sb:
-
-c/--comp– Tipo di compressione (zstd, gzip, lzo, xz). Predefinito: zstd -
-b/--bext– Estensione bundle. Predefinito: sb
Utilizzo:
dir2sb [OPZIONI] SOURCE_DIRECTORY [TARGET_FILE]
Comportamento:
- Se
SOURCE_DIRECTORYnon ha estensione .sb e non si chiama 'squashfs-root', la directory stessa viene inclusa nel modulo eTARGET_FILEè obbligatorio. - Se
TARGET_FILEnon è specificato,SOURCE_DIRECTORYviene sostituita dal nuovo file modulo.
Esempi:
- Converti una directory preparata in modulo:
dir2sb /path/to/my/prepared/files my-module.sb - Converti la directory squashfs-root (sostituisce l’originale):
dir2sb squashfs-root - Usa una compressione diversa:
dir2sb -c xz /path/to/files custom-module.sb
Questa utility è particolarmente utile quando vuoi:
- Impacchettare file e directory già configurati
- Convertire il contenuto estratto di un modulo in un nuovo modulo
- Creare moduli da strutture di directory preparate manualmente
L’utility sb2dir converte un modulo compresso (.sb) in una directory con lo stesso nome. È utile per estrarre ed esaminare il contenuto dei moduli.
Utilizzo:
sb2dir [file_sorgente.sb] [directory_output_opzionale]
Comportamento:
- Se viene specificata la directory di output, deve già esistere
- Se la directory di output non è specificata, viene usato il nome source_file.sb e la directory viene montata su tmpfs
Esempi:
- Estrai un modulo per esaminarne il contenuto:
sb2dir mymodule.sb - Estrai in una directory specifica:
sb2dir mymodule.sb /tmp/extracted
L’utility rmsbdir rimuove una directory di modulo creata da sb2dir. In questo modo viene correttamente smontato il tmpfs se utilizzato.
Utilizzo:
rmsbdir [directory_sorgente.sb]
Esempio:
- Rimuovi la directory di modulo estratta:
rmsbdir mymodule.sb
L’utility savechanges salva tutti i file modificati nel sistema in un bundle filesystem compresso. È utile per creare moduli a partire da modifiche apportate durante l’esecuzione.
Opzioni disponibili:
-
-c/--comp– Tipo di compressione (zstd, gzip, lzo, xz). Predefinito: zstd -
-b/--bext– Estensione bundle. Predefinito: sb
Utilizzo:
savechanges [OPZIONI] target_file.sb [changes_directory]
Se changes_directory non è specificata, viene utilizzata /run/initramfs/memory/changes.
Esempi:
- Salva tutte le modifiche attuali:
savechanges my-changes.sb - Salva con una compressione diversa:
savechanges -c xz my-changes.sb
L’utility sb2iso genera un’immagine ISO di MiniOS, con la possibilità di aggiungere moduli specifici o escluderne di esistenti.
Opzioni disponibili:
-
-e/--exclude– Escludi qualsiasi percorso o file esistente che corrisponde a REGEX -
-n/--name– Specifica il nome file ISO in output (predefinito: minios-YYYYMMDD_HHMM.iso)
Utilizzo:
sb2iso [OPZIONI]... [MODULE.SB]...
Esempi:
- Crea una ISO MiniOS senza il modulo firefox.sb:
sb2iso -e 'firefox' -n minios_without_firefox.iso - Crea solo la versione core testuale di MiniOS:
sb2iso --exclude='firmware|xorg|desktop|apps|firefox' --name=minios_textmode.iso
L’utility sb offre un’interfaccia completa per la gestione dei bundle MiniOS, incluse operazioni di attivazione, disattivazione e conversione.
Importante: L’utility sb richiede il supporto kernel AUFS (Advanced multi layered UniFication FileSystem) per la maggior parte delle operazioni. Se AUFS non è disponibile nel kernel, molti comandi non funzioneranno.
Comandi disponibili:
-
activate BUNDLE– Attiva un bundle MiniOS -
deactivate BUNDLE– Disattiva un bundle MiniOS attivo -
list– Elenca i bundle MiniOS attivi -
savechanges– Salva le modifiche apportate a runtime nel bundle -
rm DIR/rmdir DIR– Rimuove una directory di bundle estratta -
conv PATH– Converte un bundle .sb in directory o viceversa
Esempi:
- Attiva un modulo:
sb activate mymodule.sb - Disattiva un modulo:
sb deactivate mymodule.sb - Elenca i moduli attivi:
sb list - Converte un modulo in directory:
sb conv mymodule.sb - Converte una directory in modulo:
sb conv mymodule/
Nota: I comandi activate, deactivate e list richiedono il supporto kernel AUFS e privilegi di root. I comandi conv, rm e rmdir funzionano anche senza AUFS ma richiedono comunque privilegi di root.
-
Ricostruzione ISO – Scopri come impacchettare i tuoi moduli personalizzati in immagini ISO avviabili utilizzando
sb2iso - Compilazione di MiniOS – Guida completa alla compilazione di MiniOS dal sorgente con configurazioni personalizzate
🌐 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
⚙️ Конфигурация
🛡️ Администрирование
🛠️ Разработка