Después de solo un mes de desarrollo tranquilo, se lanzó boobstrap v1.2 — un conjunto de herramientas en POSIX shell para crear imágenes de arranque y dispositivos.
Boobstrap permite con un solo comando:
- Crear imágenes initramfs que incluyan cualquier distribución de GNU/Linux.
- Crear imágenes ISO de arranque con cualquier distribución de GNU/Linux.
- Crear dispositivos de arranque USB, HDD, SSD con cualquier distribución de GNU/Linux.
La característica principal es que, después de arrancar, GNU/Linux funcionará completamente en un tmpfs limpio o utilizando Overlay FS y imágenes SquashFS, a su elección. Usted instala cualquier distribución de GNU/Linux en un directorio, realiza todas las configuraciones necesarias (puede ser en un directorio separado) y, con un solo comando, crea el dispositivo de arranque, ya sea una imagen ISO, USB, HDD o SSD, o puede crear también una imagen initrd con el sistema. El sistema siempre estará en un estado constante y, en caso de fallos, se puede volver al estado original presionando un botón de Reinicio. ¿Desea trasladar el sistema a otro host o crear un sistema desde un contenedor existente? Boobstrap lo hará.
De los cambios clave:
- Se ha añadido soporte para el cargador de arranque syslinux, además del ya existente grub2. Ahora puede elegir usar grub2, syslinux, o ambos conjuntamente, al crear el dispositivo de arranque o la imagen ISO, para lo cual responden las opciones —legacy-boot syslinux y —efi grub2 respectivamente, y también se puede elegir qué modos de arranque soportará la imagen ISO.
- Se ha añadido la opción —bootable, que convierte cualquier dispositivo de bloque en un dispositivo de arranque. Para crear imágenes ISO, se debe usar la opción —iso-9660.
- Se han añadido opciones para el arranque del núcleo boobs.use-shmfs para copiar el contenido de todas las superposiciones a tmpfs, boobs.use-overlayfs para arrancar utilizando Overlay FS, boobs.search-rootfs para seleccionar la fuente del sistema, boobs.copy-to-ram para copiar el sistema en la memoria con la posterior desconexión del dispositivo.
- La única dependencia obligatoria para que funcione boobstrap es solo cpio. Las demás dependencias son opcionales: grub2, syslinux son necesarias para crear medios de arranque, cdrkit o xorriso a elegir para crear ISO, squashfs-tools para crear SquashFS, sin embargo, nada impide usar la opción —cpio en lugar de —squashfs para empaquetar tu distribución en un archivo. busybox solo se utilizará si está instalado, pero si no, se copiarán todas las utilidades necesarias de tu sistema. Por lo tanto, el funcionamiento de boobstrap está garantizado prácticamente en cualquier lugar.
Por ejemplo, el siguiente comando creará una imagen initrd incluyendo el sistema gentoo-chroot/ empaquetado como una imagen SquashFS, que se cargará con éxito después de cargar el propio initrd. Recuerden, para usar Overlay FS junto con SquashFS, es necesario pasar la opción al núcleo boobs.use-overlayfs, de lo contrario, el sistema se descomprimirá en tmpfs. Todos los ajustes adicionales se pueden realizar en un directorio separado, por ejemplo gentoo-settings/
# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd
La imagen initrd con el sistema dentro es conveniente cuando es necesario desplegar rápidamente un sistema, por ejemplo, a través de PXE, o en un sistema que ya se está ejecutando, cambiar a initrd utilizando el comando kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, o incluso estando en la interfaz de la máquina virtual QEMU (posiblemente incluso Proxmox), arrancar desde una fuente remota usando tres comandos IPXE: kernel http://[…] /vmlinuz, initrd http://[…] /initrd, boot. Como puedes ver, incluso un initrd común con tu sistema dentro tiene muchas formas de uso.
Para crear medios y imágenes de arranque, se utiliza el comando mkbootisofs, por ejemplo, así es como se crea una imagen ISO con la opción —iso-9660 utilizando syslinux para arrancar en modo Legacy (BIOS) y grub2 para arrancar en modo 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
Puedes especificar uno de los modos de arranque, o no especificarlos en absoluto, la imagen ISO correspondiente se creará con éxito.
La instalación en cualquier medio con posterior arranque desde él se realiza usando la opción —bootable. Necesitas crear las particiones en el medio (fdisk) y formatearlas (mkdosfs, mke2fs, etc.), después monta el dispositivo en un directorio.
# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ —bootable —legacy-boot grub2 —efi grub2
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs
¡Cuidado! La opción —bootable determina de qué dispositivo de bloque se ha montado el directorio y establece el cargador de arranque en dicho dispositivo. Si olvidas montar el dispositivo o especificas por error un directorio que se encuentre, por ejemplo, en /dev/sda, el cargador de arranque en /dev/sda se sobrescribirá. Utiliza —bootable con precaución.
La instalación de cualquier sistema GNU/Linux se reduce a un solo comando. La instalación se puede realizar en cualquier HDD, SSD, etc. Cabe recordar que sigue siendo un sistema que opera desde Overlay FS/SquashFS, o que se carga completamente en tmpfs, a elección.
Además de todo, boobstrap tiene una serie de características interesantes y funcionalidades adicionales.
Por ejemplo, puedes crear un initrd personalizado de boobstrap con el comando mkinitramfs `mktemp -d` > /boot/initrd y arrancar tu sistema con este initrd, especificando las opciones del núcleo boobs.use-overlayfs boobs.search-rootfs=/dev/sda1. En este caso, /dev/sda1, donde está tu sistema doméstico, se montará como una capa de solo lectura de Overlay FS, y todos los cambios que realices se guardarán temporalmente en tmpfs. Puedes agregar la opción boobs.copy-to-ram y entonces todo tu sistema se copiará completamente en RAM, y el disco duro se puede desconectar del ordenador. Esto es conveniente cuando necesitas romper algo, y puedes revertir los cambios simplemente reiniciando. 🙂
Pero, ¿qué pasa si necesitas guardar todos los cambios en el sistema? Por ejemplo, si instalaste software u otra cosa. Al trabajar en un tmpfs limpio, esto desafortunadamente no es posible, pero si arrancaste utilizando Overlay FS, todos los cambios que ocurren en el sistema se guardan en un directorio tmpfs separado: /mnt/overlayfs/rootfs-changes. El escenario de uso es muy simple. Arrancaste en tu sistema desde un dispositivo USB, trabajaste, y quieres guardar todo lo que has cambiado, entonces crea un archivo cpio y colócalo aquí, en el mismo dispositivo USB.
# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD
Puede colocar el archivo comprimido junto con otras capas de SquashFS y cpio, de modo que en el siguiente arranque el archivo se monte como otra capa de solo lectura. Para continuar trabajando con los cambios, use la opción de arranque boobs.rootfs-changes=\/rootfs-changes.cpio. La opción boobs.rootfs-changes monta la capa especificada con acceso de escritura. La capa puede ser un dispositivo de bloque, por ejemplo, puede especificar \/dev\/db1, de modo que todos los cambios realizados en Overlay FS se guardarán simplemente en \/dev\/db1.
Boobstrap, a pesar de sus amplias capacidades, aún se encuentra en desarrollo, ¡todos sus comentarios y sugerencias son bienvenidos!
Fuente: linux.org.ru

