booty - utilitaire pour créer des images de démarrage et des lecteurs

Programme présenté Butin, qui vous permet de créer des images initrd amorçables, des fichiers ISO ou des lecteurs contenant n'importe quelle distribution GNU/Linux avec une seule commande. Le code est écrit dans le shell POSIX et distribué par sous licence GPLv3.

Toutes les distributions démarrées à l'aide de Booty exécutent soit SHMFS (tmpfs) soit SquashFS + Overlay FS, au choix de l'utilisateur. La distribution est créée une fois et pendant le processus de démarrage, des paramètres sont sélectionnés qui vous permettent d'utiliser du tmpfs pur pour la racine, ou une combinaison de Overlay FS + SquashFS avec l'enregistrement des modifications dans tmpfs. Il est possible de pré-copier le kit de distribution téléchargeable dans la RAM, ce qui permet de déconnecter la clé USB après le téléchargement et de copier le kit de distribution en mémoire.

Tout d'abord, Booty génère sa propre image initrd, qui peut utiliser les utilitaires natifs du système actuel ou de busybox. Il est possible d'inclure (packer) l'intégralité du kit de distribution installé dans le répertoire (chroot) dans initramfs. Cela peut être utile lorsque vous devez mettre à niveau un système à l'aide de kexec : rechargez simplement l'initrd avec un nouveau noyau et un nouveau système à l'intérieur de l'initrd.

Création d'une image initrd spécifique au Booty :

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Création d'une image initrd incluant la distribution depuis le répertoire « gentoo/ » :

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd

Après quoi cette image initrd est complètement prête à être chargée, par exemple via PXE ou via kexec.

Ensuite, Booty génère des images avec le système spécifié comme « superpositions ». Par exemple, vous pouvez installer (décompresser l'archive) un Gentoo conditionnel dans un répertoire séparé, après quoi une archive cpio ou une image SquashFS avec ce système sera générée à l'aide de Booty. Vous pouvez également configurer la distribution dans un répertoire séparé et copier vos paramètres personnels dans un autre répertoire. Toutes ces « couches » seront chargées séquentiellement les unes sur les autres et créeront un système de travail unique.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay documents/ --squashfs --output initrd

En fin de compte, Booty vous permet de créer des images ISO amorçables et des lecteurs USB, HDD, SSD et autres en installant le système ci-dessus à partir d'images. Butin 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 de démarrage peuvent être combinés, par exemple en utilisant SYSLINUX pour démarrer dans le BIOS et GRUB2 pour UEFI. Pour créer des images ISO, vous aurez également besoin du package cdrkit (genisoimage) ou xorriso (xorrisofs), au choix.

La seule action supplémentaire requise est de préparer le noyau (vmlinuz) pour le démarrage à l'avance. L'auteur (Spoofing) recommande d'utiliser "make defconfig". Avant de créer l'image, vous devez préparer un répertoire en plaçant le noyau vmlinuz et l'initrd « vide » préalablement préparé créé dans le premier exemple.

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

Ceci fait, la préparation est terminée, nous pouvons maintenant créer des images ISO à partir de ce répertoire.

La commande suivante créera une image ISO, pas une image bootable, juste une image ISO :

mkdir iso/
mkbootisofs iso/ --output archive.iso

Pour créer une image de démarrage, vous devez spécifier respectivement l'option « --legacy-boot » pour le BIOS et « --efi » pour UEFI ; les options prennent soit grub2 ou syslinux comme paramètres ; vous pouvez également spécifier une seule option ( par exemple, la prise en charge du démarrage UEFI n'est pas nécessaire, elle peut ne pas être spécifiée).

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, les images du système étaient incluses dans l'initrd, vous pouvez les inclure dans l'ISO.

mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --output gentoo.iso

Après cette commande, une image ISO BIOS/UEFI amorçable sera générée qui chargera Gentoo dans l'image SquashFS à l'aide d'Overlay FS, en utilisant tmpfs pour le stockage des données. Le noyau doit être construit avec le support Overlay FS avec SquashFS. Cependant, si pour une raison quelconque cela n'est pas nécessaire, vous pouvez utiliser l'option « -cpio » au lieu de -squashfs pour empaqueter gentoo/ en tant qu'archive cpio, auquel cas l'archive sera décompressée directement dans tmpfs au démarrage, l'essentiel est-ce que pour décompresser le système, tmpfs avait suffisamment de RAM.

Fait intéressant : si une image ISO créée à l'aide de l'option « —efi » est décompressée sur une clé USB FAT32 en copiant simplement des fichiers (cp -r), alors la clé USB démarrera en mode UEFI sans aucune préparation préalable, grâce aux spécificités des téléchargeurs UEFI.

En plus des ISO amorçables, n'importe quel disque amorçable peut être créé avec les mêmes paramètres : USB, HDD, SSD, etc., et ce disque peut continuer à être utilisé aux fins prévues. Pour ce faire, vous devez monter, par exemple, un périphérique USB et y exécuter mkbootisofs. Ajoutez simplement une option « -bootable » pour que le lecteur sur lequel se trouve le répertoire spécifié devienne bootable.

monter /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable

Après cela, le périphérique USB deviendra bootable avec la superposition gentoo/ (n'oubliez pas de copier les fichiers /boot/vmlinuz et /boot/initrd sur le périphérique).

Si, pour une raison quelconque, le lecteur n'a pas été monté dans /mnt et qu'il s'avère que /mnt se trouve sur le périphérique principal /dev/sda, alors le chargeur de démarrage sera réécrit dans /dev/sda. Vous devez être prudent lorsque vous spécifiez l'option --bootable.

Pendant le processus de démarrage, Booty prend en charge un certain nombre d'options qui peuvent être transmises au chargeur de démarrage, grub.cfg ou syslinux.cfg. Par défaut, sans aucune option, toutes les superpositions sont chargées et décompressées 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 superpositions dans tmpfs, après quoi elle les connecte et les charge uniquement. Une fois copié, le périphérique USB (ou autre périphérique de stockage) peut être retiré.

Source: opennet.ru

Ajouter un commentaire