Un programme a été présenté , qui permet de créer des images de démarrage initrd, des fichiers ISO ou des supports contenant n'importe quelle distribution GNU/Linux en une seule commande. Le code est écrit en shell POSIX et sous licence GPLv3.
Toutes les distributions chargées à l'aide de Booty fonctionnent soit dans SHMFS (tmpfs), soit dans SquashFS + Overlay FS, au choix de l'utilisateur. La distribution est créée une fois, et lors du démarrage, les paramètres permettent d'utiliser un tmpfs vierge comme racine, ou une combinaison Overlay FS + SquashFS avec enregistrement des modifications dans tmpfs. Il est possible de pré-copier la distribution chargée dans la RAM, ce qui permet de déconnecter la clé USB après le démarrage et la copie de la distribution dans la mémoire.
Avant tout, Booty génère sa propre image initrd, dans laquelle peuvent être utilisées des utilitaires natifs du système actuel ou busybox. Il est possible d'inclure (d'emballer) intégralement dans initramfs la distribution installée dans le répertoire (chroot). Cela peut être utile lorsque vous devez mettre à jour le système en utilisant kexec : il suffit de redémarrer initrd avec un nouveau noyau et un nouveau système à l'intérieur d'initrd.
Création d'une image initrd spécifique à Booty :
mkdir initramfs/
mkinitramfs initramfs/ —output initrd
Création d'une image initrd en incluant la distribution du répertoire «gentoo/» :
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —cpio —output initrd
Après quoi, cette image initrd est complètement prête à être démarrée, par exemple, via PXE ou kexec.
Ensuite, Booty génère des images avec le système spécifié comme «superpositions». Par exemple, vous pouvez installer (décompresser une archive) une distribution Gentoo conditionnelle dans un répertoire séparé, après quoi un archive cpio ou une image SquashFS sera générée avec ce système en utilisant Booty. Vous pouvez également configurer la distribution dans un répertoire séparé et copier vos paramètres personnels dans un autre répertoire. Tous ces «couches» seront chargées successivement les unes sur les autres pour créer un système de travail unifié.
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd
En fin de compte, Booty permet de créer des images ISO de démarrage et des supports USB, HDD, SSD et autres, en installant le système décrit ci-dessus à partir des images. prend en charge la création de systèmes de démarrage BIOS et UEFI. Les chargeurs de démarrage GRUB2 et SYSLINUX sont pris en charge. Les chargeurs peuvent être combinés, par exemple pour démarrer dans BIOS, utiliser SYSLINUX, et pour UEFI - GRUB2. Pour créer des images ISO, le paquet cdrkit (genisoimage) ou xorriso (xorrisofs) sera nécessaire, selon le choix.
La seule action supplémentaire requise est de préparer à l'avance le noyau (vmlinuz) pour le démarrage. L'auteur (Spoofing) recommande d'utiliser « make defconfig ». Avant de créer l'image, il faut préparer le répertoire en y plaçant le noyau vmlinuz et un « initrd » « vide » préparé dans le premier exemple.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
La préparation est maintenant terminée, nous pouvons créer des images ISO à partir de ce répertoire.
La commande suivante créera une image ISO, non amorçable, simplement une ISO :
mkdir iso/
mkbootisofs iso/ —output archive.iso
Pour créer une image amorçable, il est nécessaire d'utiliser l'option « —legacy-boot » pour BIOS et « —efi » pour UEFI. Les paramètres acceptent soit grub2, soit syslinux, et il est également possible d'indiquer uniquement une option (par exemple, si le support du démarrage UEFI n'est pas nécessaire, il peut être omis).
mkbootisofs iso/ —legacy-boot syslinux —output boot-biosonly.iso
mkbootisofs iso/ —legacy-boot syslinux —efi grub2 —output boot-bios-uefi.iso
mkbootisofs iso/ —efi grub2 —output boot-uefionly.iso
Et comme auparavant, où les images de système étaient incluses dans initrd, elles peuvent être incluses dans l'ISO.
mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso
Après cette commande, une image ISO de démarrage BIOS/UEFI sera générée, démarrant Gentoo depuis une image SquashFS utilisant Overlay FS, utilisant tmpfs pour le stockage des données. Le noyau doit être compilé avec le support d'Overlay FS avec SquashFS. Toutefois, si cela n'est pas nécessaire pour une raison quelconque, l'option « —cpio » peut être utilisée à la place de —squashfs, pour emballer gentoo/ comme une archive cpio, dans ce cas l'archive sera extraite directement dans tmpfs lors du démarrage, à condition qu'il y ait suffisamment de mémoire vive pour extraire le système dans tmpfs.
Fait intéressant : si l'image ISO créée en utilisant l'option « —efi » est décompressée sur une clé USB FAT32 par simple copie de fichiers (cp -r), le périphérique Flash sera amorçable en mode UEFI sans aucune préparation préalable, grâce à la spécificité des chargeurs de démarrage UEFI.
En plus des ISO de démarrage avec les mêmes paramètres, tout dispositif de démarrage peut être créé : USB, HDD, SSD, etc., et ce dispositif peut continuer à être utilisé à ses fins initiales. Pour cela, il est nécessaire de monter, par exemple, un dispositif USB et d'exécuter la commande mkbootisofs dessus. Il suffit d'ajouter une option « —bootable » pour que le dispositif contenant le répertoire spécifié devienne amorçable.
mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable
Après cela, le dispositif USB sera amorçable avec l'overlay gentoo/ (n'oubliez pas de copier les fichiers /boot/vmlinuz et /boot/initrd sur le dispositif).
Si pour une raison quelconque le dispositif n'a pas été monté à /mnt, et qu'il s'avère que /mnt se trouve sur le dispositif principal /dev/sda, alors le chargeur de démarrage sera écrasé sur /dev/sda. Soyez prudent lors de l'utilisation de l'option —bootable.
Au cours du démarrage, Booty prend en charge plusieurs options qui peuvent être spécifiées dans le chargeur de démarrage, grub.cfg ou syslinux.cfg. Par défaut, sans aucune option, tous les overlays sont chargés et décompressés dans tmpfs (option par défaut ooty.use-shmfs). Pour utiliser Overlay FS, l'option booty.use-overlayfs doit être utilisée. L'option booty.copy-to-ram copie d'abord les overlays dans tmpfs, puis les monte et les charge. Après la copie, le dispositif USB (ou un autre dispositif) peut être retiré.
Source : opennet.ru
