Peut-être que de nombreux utilisateurs de GNU / Linux, à la lumière des récentes initiatives gouvernementales pour créer un Internet «souverain», étaient perplexes quant à l'objectif d'être à l'abri de l'indisponibilité des référentiels des distributions GNU / Linux populaires.
Quelqu'un qui télécharge les référentiels CentOS, Ubuntu, Debian, quelqu'un construit leurs distributions sur la base des distributions existantes, et quelqu'un armé de livres LFS (Linux From Scratch) et BLFS (Beyond Linux From Scratch) a déjà commencé à compiler leurs distributions depuis la source depuis Il pense que dans les conditions d'un piratage Internet «souverain», des épidémies de virus, des fuites de données se produiront certainement, et les binaires deviendront simplement obsolètes après un certain temps.
Récemment, il a été possible de compiler complètement une machine virtuelle à partir des sources en fonction des instructions du livre Linux From Scratch Systemd Edition v.8.3. Je m'empresse de partager les résultats avec vous.
Processus de construction Linux
Le processus de construction de Linux à partir des sources peut être divisé en trois étapes:
- Basé sur le système d'exploitation existant, l'environnement de génération LFS est créé.
- L'environnement de génération crée une image de la machine virtuelle LFS.
- La machine virtuelle installe des packages supplémentaires du livre BLFS qui ne figurent pas dans le livre LFS.
Fichiers de script statiques
Lorsque vous travaillez avec l'environnement de génération, il est pratique d'utiliser le presse-papiers et SSH: copiez les commandes du livre et collez-les dans la console de l'environnement de génération.
Après le démarrage de la machine virtuelle créée, de graves problèmes sont apparus. Contrairement à la fenêtre du terminal, le code ne peut pas être inséré dans la fenêtre client de la machine virtuelle. Taper des commandes avec le clavier n'est pas pratique et il y a un grand risque de fautes de frappe. Le danger des fautes de frappe réside dans le fait qu'elles peuvent ne pas apparaître immédiatement, mais après un certain temps et entraîner de graves problèmes.
Il est connu que les commandes peuvent être saisies non seulement à partir du clavier mais également à partir du flux standard (STDIN). La source du flux standard peut utiliser le port série ainsi que le résultat du programme de script dit sortie standard (STDOUT).
Beaucoup de gens savent que la commande wget peut sortir le contenu du fichier téléchargé vers la sortie standard (STDOUT):
wget http://example.com -O -
Si la sortie de la commande wget est envoyée à l'interpréteur, du code arbitraire peut être exécuté. Le code sera exécuté comme s'il avait été tapé au clavier ou copié depuis le presse-papiers:
wget http://umvirt.com/linux/helloworld.sh -O - | bash
Ainsi, vous pouvez placer des fichiers avec des commandes sur un serveur Web et envoyer leur contenu à l'interpréteur.
Fichiers de script dynamiques
Les fichiers statiques sont bien sûr une bonne chose si vous savez exactement ce qui doit être fait, et si le package est installé, si les dépendances ne sont pas clairement installées ou non, alors quoi?
Un site dynamique basé sur le
serveur Web LAMP (Linux-Apache-MySQL-PHP) vient à la rescousse. Si un site peut générer dynamiquement des pages (fichiers HTML) et des images, il devrait être capable de gérer des fichiers texte ordinaires.
Et c'est arrivé. A écrit le site
UmVirt LFS Packages qui génère des scripts pour l'interpréteur Bash. La base de données du site contient des informations sur les packages, les dépendances, les correctifs, les ajouts et les commandes de génération.
Maintenant, pour installer le paquet mc (midnight commander), vous pouvez écrire la commande:
wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash
Le script de site lui-même recevra les données de la base de données et générera un code pour vérifier les dépendances et un code de script pour installer le package. L'interpréteur traitera les instructions du script.
Afin de rendre cela possible, les informations sur les packages installés dans la base de données sont stockées sur le disque de la machine virtuelle.
La base de données des packages installés se trouve dans le répertoire
/ var / cache / ulfs-packages est une liste de fichiers vides avec les noms correspondant au nom des packages.
Si le package n'est pas trouvé dans la base de données, une dépendance est installée récursivement.
Commodités
Pour rendre l'installation des packages plus pratique, j'ai écrit le script chimpanzé sur un autre site Web de l'
assistant UmVirt LFS qui utilise la base de données des
packages UmVirt LFS . La tâche principale de
UmVirt LFS Assistant est l'exécution d'autres commandes.
En utilisant chimpanzé, l'installation de packages est encore plus simple:
chimp install mc
Démonstration
Pour vous familiariser avec le travail des services
UmVirt LFS Packages et
UmVirt LFS Assistant, vous pouvez télécharger l'image de base
Initial UmVirt LFS v.0.1 Update 1 . Installez Xorg en exécutant une seule commande:
chimp install X
Au cours du script, 141 packages seront installés en mode automatique. Pour gagner du temps de compilation, vous pouvez remplacer la valeur du fichier / etc / profile par la variable MAKEFLAGS de "-j1" (un flux), par exemple, à "-j6" (six threads).
Décentralisation et personnalisation
Dans un souci de sécurité, d'autonomie et de personnalisation, le code source des packages UmVirt LFS et des services UmVirt LFS Assistant a été publié dans le domaine public. Tout le monde peut le télécharger, le déployer et modifier les services au sein de son infrastructure.