Nous simplifions la compilation de Linux à partir des sources grâce au site UmVirt LFS Packages

Il est possible que de nombreux utilisateurs de GNU/Linux, à la lumière des dernières initiatives des autorités concernant la création d'Internet « souverain », s'interrogent sur la nécessité de se prémunir contre l'éventuelle indisponibilité des dépôts des distributions GNU/Linux populaires.

Certains téléchargent les dépôts de CentOS, Ubuntu, Debian, d'autres construisent leurs propres distributions basées sur les distributions existantes, tandis que certains, armés de livres LFS (Linux From Scratch) et BLFS (Beyond Linux From Scratch), se sont déjà attelés à compiler leurs distributions à partir des sources, car ils estiment qu'avec un « Internet souverain », des cyberattaques, épidémies de virus et fuites de données seront inévitables, et que les binaires deviendront obsolètes au fil du temps.

Récemment, j'ai eu l'occasion de compiler entièrement une machine virtuelle à partir des sources sur la base des instructions données dans le livre Linux From Scratch Systemd Edition v.8.3. Je suis pressé de partager les résultats avec vous.

Le processus de compilation de Linux

Le processus de compilation de Linux à partir des sources peut être divisé en trois étapes :

  1. Une environnement de construction LFS est établi à partir du système d'exploitation existant.
  2. Une image de machine virtuelle LFS est construite dans l'environnement de compilation.
  3. Des paquets supplémentaires du livre BLFS qui ne figurent pas dans le livre LFS sont installés dans la machine virtuelle.

Fichiers de scripts statiques

Lors de l'utilisation de l'environnement de compilation, il est pratique d'utiliser le presse-papiers et SSH : vous copiez les commandes du livre et les collez dans la console de l'environnement de compilation.

Après le démarrage de la machine virtuelle créée, de sérieux problèmes sont apparus. Contrairement à une fenêtre de terminal, il n'est pas possible de coller du code dans la fenêtre cliente de la machine virtuelle. Taper des commandes au clavier est inconfortable et présente un grand risque d'erreurs de frappe. Le danger des erreurs de frappe réside dans le fait qu'elles peuvent ne pas se manifester immédiatement, mais plus tard, et conduire à des problèmes graves.

Il est connu que les commandes peuvent être saisies non seulement au clavier, mais aussi à partir du flux standard (STDIN). On peut utiliser un port série comme source du flux standard, ainsi que le résultat d'un programme/script, ce qu'on appelle la sortie standard (STDOUT).

Beaucoup savent que la commande wget peut afficher le contenu du fichier téléchargé sur la sortie standard (STDOUT) :

wget http://example.com -O -

Si la sortie de la commande wget est envoyée à l'interpréteur, il est possible d'exécuter du code arbitraire. Le code sera exécuté comme s'il avait été saisi au clavier ou copié depuis le presse-papiers :

wget http://umvirt.com/linux/helloworld.sh -O - | bash

Ainsi, il est possible de placer sur un serveur Web des fichiers contenant des commandes et d'envoyer leur contenu à l'interpréteur.

Fichiers de scripts dynamiques

Les fichiers statiques sont bien sûr une bonne chose si vous savez exactement ce qui doit être exécuté, mais que se passe-t-il si vous installez un paquet et que vous n'êtes pas sûr des dépendances installées ?

Un site dynamique, basé sur un serveur Web LAMP (Linux-Apache-MySQL-PHP). Si le site peut générer dynamiquement des pages (fichiers HTML) et des images, il devrait également être capable de gérer des fichiers texte ordinaires.

Et c'est exactement ce qui s'est passé. J'ai écrit un site UmVirt LFS Packages qui génère des scripts pour l'interpréteur Bash. La base du site contient des informations sur les paquets, les dépendances, les correctifs, les extensions et les commandes de compilation.

Maintenant, pour installer le paquet mc (midnight commander), vous pouvez entrer la commande :

wget --no-check-certificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash

Le script du site obtiendra lui-même les données à partir de la base de données et formulera le code de vérification des dépendances ainsi que le code du script pour l'installation du paquet. L'interpréteur traitera les instructions du script.

Pour que cela soit possible, les informations sur les paquets installés sont stockées sur le disque de la machine virtuelle dans une base de données.

La base de données des paquets installés se trouve dans le répertoire /var/cache/ulfs-packages représentant une liste de fichiers vides avec des noms correspondant aux noms des paquets.

Si le paquet n'est pas trouvé dans la base de données, une installation récursive des dépendances a lieu.

Commodités

Pour rendre l'installation des paquets plus pratique, j'ai écrit le script chimp, un autre site UmVirt LFS Assistant, utilisant la base UmVirt LFS Packages. La tâche principale UmVirt LFS Assistant est d'exécuter les autres commandes.

Avec chimp, l'installation des paquets devient encore plus simple :

chimp install mc

Démonstration

Pour découvrir le fonctionnement 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. Effectuez l'installation de Xorg en exécutant une seule commande :

chimp install X

Pendant l'exécution du script, 141 paquets seront installés automatiquement. Pour gagner du temps sur la compilation, vous pouvez remplacer la valeur de la variable MAKEFLAGS dans le fichier /etc/profile de « -j1 » (un thread) par « -j6 » (six threads).

Décentralisation et personnalisation

Pour des raisons de sécurité, d'autonomie et de personnalisation, le code source des services UmVirt LFS Packages et UmVirt LFS Assistant est publié en accès public. Quiconque peut le télécharger, le déployer et ajuster les services dans le cadre de son infrastructure.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster