Création d'images bootstrap v1.2


Création d'images bootstrap v1.2

Après juste un mois Après un développement lent, boobstrap v1.2 a été publié - un ensemble d'outils sur le shell POSIX pour créer des images de démarrage et des lecteurs.

Boobstrap vous permet d'exécuter une seule commande :

  • Créez une image initramfs, y compris toute distribution GNU/Linux.
  • Créez des images ISO amorçables avec n'importe quelle distribution GNU/Linux.
  • Créez des disques USB, HDD et SSD amorçables avec n'importe quelle distribution GNU/Linux.

La particularité est qu'après le chargement, GNU/Linux fonctionnera soit entièrement en tmpfs pur, soit en utilisant les images Overlay FS et SquashFS, à votre choix. Vous installez n'importe quelle distribution GNU/Linux dans un répertoire, effectuez tous les réglages nécessaires (éventuellement dans un répertoire séparé), après quoi vous créez un périphérique de démarrage avec une seule commande, qu'il s'agisse d'une image ISO, d'une clé USB, d'un disque dur, d'un lecteur SSD ou vous pouvez créer une image initrd avec le système. Le système sera toujours dans le même état et en cas de panne, vous pourrez revenir à son état d'origine en appuyant sur un bouton Reset. Voulez-vous transférer le système vers un autre hôte ou créer un système à partir d'un conteneur existant ? Boobstrap le fera.

Parmi les changements clés :

  • Ajout de la prise en charge du chargeur de démarrage syslinux, en plus du grub2 déjà existant. Vous pouvez maintenant choisir d'utiliser grub2, syslinux ou les deux lors de la création d'un périphérique de démarrage ou d'une image ISO avec les options --legacy-boot syslinux et --efi grub2 respectivement, et vous pouvez également choisir les modes que le téléchargement prendra en charge l'ISO. image.
  • Ajout de l'option --bootable, qui rend n'importe quel périphérique bloc amorçable. Pour créer des images ISO, l'option --iso-9660 doit être utilisée.
  • Ajout des options de démarrage du noyau boobs.use-shmfs pour copier le contenu de toutes les superpositions vers tmpfs, boobs.use-overlayfs pour démarrer à l'aide d'Overlay FS, boobs.search-rootfs pour sélectionner une source avec le système, boobs.copy-to-ram pour copier le système en mémoire, puis éteindre l'appareil.
  • La seule dépendance requise pour que boobstrap fonctionne est cpio. Le reste des dépendances est facultatif : grub2, syslinux - requis pour créer un support de démarrage, cdrkit ou xorriso au choix - pour créer un ISO, squashfs-tools pour créer SquashFS, mais rien ne vous empêche d'utiliser l'option -cpio à la place de - squashfs pour regrouper votre distribution dans une archive. Busybox ne sera utilisé que s'il est installé, mais sinon, tous les utilitaires nécessaires de votre système seront copiés. Ainsi, le boobstrap est garanti de fonctionner presque partout.

Par exemple, la commande suivante créera une image initrd comprenant un système gentoo-chroot/ emballé sous forme d'image SquashFS, qui démarrera avec succès après le chargement de initrd lui-même. Permettez-moi de vous rappeler que pour utiliser Overlay FS avec SquashFS, vous devez passer l'option du noyau boobs.use-overlayfs, sinon le système sera décompressé dans tmpfs. Tous les paramètres supplémentaires peuvent être définis dans un répertoire séparé, par exemple gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ --overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs > initrd

Une image initrd contenant un système est pratique lorsque vous devez déployer rapidement un système, par exemple via PXE, ou sur un système chargé, passez à initrd à l'aide de la commande kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, eh bien ou, étant dans l'interface de la machine virtuelle QEMU (peut-être même Proxmox), démarrez à partir d'une source distante à l'aide de trois commandes IPXE : kernel http://[...]/vmlinuz, initrd http://[ ...]/initrd, démarrez. Comme vous pouvez le constater, même un initrd classique contenant votre système a de nombreuses utilisations.

Pour créer des lecteurs et des images amorçables, la commande mkbootisofs est utilisée. Par exemple, voici à quoi ressemble la création d'une image ISO avec l'option -iso-9660 en utilisant syslinux pour démarrer en mode hérité (BIOS) et grub2 pour démarrer en EFI. (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

Vous pouvez spécifier l'un des modes de démarrage, ou ne pas les spécifier du tout, l'image ISO correspondante sera créée avec succès.

L'installation sur n'importe quel lecteur et le démarrage ultérieur à partir de celui-ci sont effectués à l'aide de l'option --bootable. Vous devez créer vous-même des partitions sur le lecteur (fdisk) et les formater (mkdosfs, mke2fs, etc.), puis monter le périphérique dans un répertoire.

# monter /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ --bootable --legacy-boot grub2 --efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

Attention! L'option --bootable détermine à partir de quel périphérique bloc le répertoire est monté et installe le chargeur de démarrage sur ce périphérique. Si vous oubliez de monter le périphérique ou spécifiez par erreur un répertoire situé, par exemple, sur /dev/sda, le chargeur de démarrage sur /dev/sda sera écrasé en conséquence. Utilisez --bootable avec prudence.

L'installation de n'importe quel système GNU/Linux est réduite à une seule commande. L'installation peut être effectuée sur n'importe quel disque dur, SSD, etc. Il convient de rappeler qu'il s'agit toujours d'un système fonctionnant à partir d'Overlay FS / SquashFS, ou se chargeant entièrement dans tmpfs, à votre choix.

Entre autres choses, boobstrap possède un certain nombre de fonctionnalités intéressantes et de capacités supplémentaires !

Par exemple, vous pouvez créer un initrd boobstrap propriétaire avec la commande mkinitramfs `mktemp -d` > /boot/initrd et démarrer votre système avec cet initrd, en spécifiant les options du noyau boobs.use-overlayfs boobs.search-rootfs=/dev /sda1. Dans ce cas, /dev/sda1, sur lequel votre système domestique est installé, sera connecté en tant que couche Overlay FS en lecture seule, et toutes les modifications que vous apporterez ne seront écrites que temporairement dans tmpfs. Vous pouvez ajouter l'option boobs.copy-to-ram, puis tout votre système sera copié dans la RAM et le disque dur pourra être déconnecté de l'ordinateur. Pratique lorsque vous devez casser quelque chose et que vous pouvez annuler les modifications simplement en redémarrant. 🙂

Mais que se passe-t-il si vous devez quand même enregistrer toutes les modifications apportées au système ? Par exemple, vous avez installé un logiciel ou autre chose. Lorsque vous travaillez en tmpfs pur, cela est malheureusement impossible, mais si vous avez démarré avec Overlay FS, alors toutes les modifications qui se produisent dans le système sont enregistrées dans un répertoire tmpfs séparé : /mnt/overlayfs/rootfs-changes ! Le scénario d'utilisation est très simple. Vous avez démarré votre système à partir d'un périphérique USB, effectué des travaux et souhaité enregistrer tout ce qui a été modifié, puis créer une archive cpio et la placer ici, sur le même périphérique USB.

# cd /mnt/overlayfs/rootfs-changes
# trouver . -print0 | cpio --create --format "newc" --null --quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

Vous pouvez placer l'archive à côté d'autres « couches » SquashFS et cpio, puis lors du chargement ultérieur, l'archive sera connectée comme une autre couche en lecture seule. Pour continuer à travailler avec les modifications, utilisez l'option de téléchargement boobs.rootfs-changes=/rootfs-changes.cpio. L'option boobs.rootfs-changes active la couche spécifiée avec un accès aux modifications. La couche peut être un périphérique bloc, par exemple vous pouvez spécifier /dev/sdb1, puis toutes les modifications apportées dans Overlay FS seront simplement enregistrées dans /dev/sdb1.

Boobstrap, malgré les larges possibilités disponibles, est encore en phase de développement, tous vos commentaires et suggestions sont pris en compte !

Source: linux.org.ru

Ajouter un commentaire