Je souhaite vous présenter un framework appelé boobstrap, écrit en shell POSIX, pour créer des images de démarrage avec des distributions GNU/Linux. Ce framework permet de suivre tout le processus en trois étapes simples : du déploiement du système dans un chroot, à la création de l'image initramfs incluant le système du chroot, et enfin à l'image ISO de démarrage. boobstrap comprend trois utilitaires : mkbootstrap, mkinitramfs et mkbootisofs respectivement.
mkbootstrap installe le système dans un répertoire séparé, avec un support natif pour CRUX, tandis que pour Arch Linux / Manjaro et les distributions basées sur Debian, des utilitaires tiers comme pacstrap, basestrap et debootstrap doivent être utilisés respectivement.
mkinitramfs crée une image initramfs. Vous pouvez utiliser le système installé dans le répertoire comme « overlay », compressé avec SquashFS, ou démarrer dans le système pour travailler directement dans tmpfs. Par exemple, la commande mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd créera un fichier initrd, incluant deux overlays avec le système « arch-chroot/ » et votre « /home », compressés avec SquashFS, que vous pouvez ensuite charger via PXE dans tmpfs, ou créer une image ISO de démarrage avec cet initrd.
mkbootisofs crée une image ISO de démarrage BIOS/UEFI à partir du répertoire spécifié. Il suffit de placer "/boot/vmlinuz" et "/boot/initrd" dans le répertoire.
boobstrap n'utilise pas busybox, et pour créer l'environnement de travail initramfs, un minimum de programmes nécessaires pour le démarrage et le passage dans le système est copié à l'aide de ldd. La liste des programmes à copier, comme tout le reste, peut être configurée via le fichier de configuration "/etc/boobstrap/boobstrap.conf". Vous pouvez également installer n'importe quelle distribution minimaliste dans un chroot séparé, à partir duquel créer un environnement initramfs complet. Comme environnement minimaliste, mais complet, il est proposé d'utiliser le modèle « crux_gnulinux-embedded », qui après xz pèse un compromis de 37 Mo. busybox, en plus de sa taille, 3-5 Mo contre 30-50 Mo pour un environnement GNU/Linux complet, n'offre plus aucun avantage ; ainsi, l'utilisation de busybox dans le projet ne semble pas justifiée.
Comment vérifier rapidement la fonctionnalité et commencer à travailler ? Installez et lancez.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
Vous devez également installer les dépendances, à savoir : cpio, grub, grub-efi, dosfstools, xorriso. L'utilisation de squashfs-tools n'est pas obligatoire, vous pouvez travailler en tmpfs si vous disposez de la mémoire vive adéquate. Si quelque chose manque dans le système, boobstrap vous le signalera au démarrage.
Pour faciliter la création de configurations, boobstrap propose d'utiliser des « modèles » et des « systèmes », dont l'idée est d'utiliser des « modèles » (bootstrap-templates/) pour une installation rapide de systèmes à partir de fichiers, et les « systèmes » (bootstrap-systems/) pour configurer les configurations finales.
Par exemple, l'exécution du script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild installera une configuration minimale du système CRUX GNU/Linux et la sauvegardera dans le fichier crux_gnulinux-embedded.rootfs. Ensuite, vous lancerez boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, qui chargera la configuration initiale depuis le fichier mentionné, effectuera tous les réglages nécessaires et préparera un ISO amorçable. Cela est pratique lorsqu'un grand nombre de systèmes partagent une configuration similaire : pour ne pas décrire à chaque fois le même ensemble de paquets, vous utilisez un modèle sur la base duquel vous créez des images amorçables des systèmes avec une configuration finale.
Où tout cela peut-il être utilisé ?
Vous configurez le système dans un fichier une seule fois et en lançant celui-ci, vous effectuez sa construction et/ou sa mise à jour. Le système fonctionne en tmpfs, ce qui le rend en grande partie jetable. En cas de défaillance du système, il vous suffit d'appuyer sur le bouton Reset pour revenir à l'état d'origine. Vous pouvez exécuter tranquillement rm -rf /.
Vous pouvez configurer les configurations de tous vos systèmes localement, créer des images, les tester sur une machine virtuelle ou un matériel séparé, puis les charger sur un serveur distant et en exécutant deux simples commandes kexec -l /vmlinuz —initrd=/initrd && kexec -e mettre à jour l'ensemble du système, le redémarrant en tmpfs.
De la même manière, vous pouvez transférer tous les systèmes, par exemple sur VDS, en utilisant tmpfs, et chiffrer le disque /dev/vda pour n'utiliser que des données, sans avoir besoin de maintenir le système d'exploitation dessus. Dans ce cas, le seul « point de fuite d'information » sera le « dump froid » de la mémoire de votre machine virtuelle, et en cas de compromission du système (par exemple, par un mot de passe ssh forcé ou une vulnérabilité dans exim), vous pouvez charger un nouvel ISO via le « panneau de contrôle » de votre fournisseur pour remettre le VDS en service, sans oublier d'éditer la configuration du système pour corriger toutes les vulnérabilités. Cela est plus rapide que de réinstaller, de reconfigurer ultérieurement et/ou de restaurer à partir d'une sauvegarde, car en réalité, l'ISO téléchargé avec votre système est votre sauvegarde. « Sept péchés, un Reset. »
En fin de compte, vous pouvez créer n'importe quelle distribution en fonction de vos besoins, l'enregistrer sur une clé USB et travailler avec, en la mettant à jour au fur et à mesure de vos besoins et en la réinscrivant sur la clé USB. Conservez toutes les données dans les « nuages ». Plus besoin de vous soucier de la sécurité du système et de faire sa sauvegarde, car le système, je le répète, est en grande partie devenu « jetable ».
Vos souhaits, suggestions et commentaires sont les bienvenus.
Le dépôt à l'adresse suivante contient un README détaillé (en anglais) décrivant chaque utilitaire et des exemples d'utilisation, ainsi qu'une documentation détaillée en russe et l'historique de développement, accessibles via le lien : Ensemble de scripts de démarrage boobstrap.
Source : linux.org.ru

