Quiero presentarles un marco llamado boobstrap, escrito en shell POSIX, para crear imágenes de arranque con distribuciones de GNU/Linux. Este marco permite seguir todo el proceso en tres simples pasos: desde el despliegue del sistema en chroot, la creación de una imagen initramfs que incluye el sistema de chroot, y, finalmente, una imagen ISO de arranque. boobstrap incluye tres utilidades: mkbootstrap, mkinitramfs y mkbootisofs respectivamente.
mkbootstrap instala el sistema en un directorio separado, con soporte nativo para CRUX; en caso de Arch Linux / Manjaro y distribuciones basadas en Debian, se deben utilizar utilidades externas como pacstrap, basestrap y debootstrap respectivamente.
mkinitramfs crea una imagen initramfs, usted puede utilizar el sistema instalado en el directorio como un 'overlay', comprimido con SquashFS, o arrancar en el sistema y trabajar directamente en tmpfs. Por ejemplo, el comando mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd creará un archivo initrd, incluyendo dos overlays con el sistema "arch-chroot/" y su "\/home", comprimidos con SquashFS, que luego podrá cargar a través de PXE en tmpfs, o crear una imagen ISO de arranque con este initrd.
mkbootisofs crea una imagen ISO de arranque BIOS / UEFI a partir del directorio especificado. Simplemente coloque \/boot\/vmlinuz y \/boot\/initrd en el directorio.
boobstrap no utiliza busybox, y para crear el entorno de trabajo initramfs, se copia un conjunto mínimo de programas utilizando ldd, necesarios para arrancar y cambiar al sistema. La lista de programas para copiar, así como todo lo demás, se puede configurar a través del archivo de configuración \/etc\/boobstrap\/boobstrap.conf. También puede instalar cualquier distribución minimalista en un chroot\/, desde donde crear un entorno initramfs completo. Como tal entorno minimalista pero completo se sugiere usar la plantilla "crux_gnulinux-embedded", que después de xz ocupa un comprometedora 37 mb. busybox, además de su tamaño, de 3-5 mb frente a los 30-50 mb de un entorno GNU/Linux completo, no ofrece más ventajas, por lo que el uso de busybox en el proyecto no se considera conveniente.
¿Cómo verificar rápidamente la funcionalidad y empezar a trabajar? Instale y ejecute.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
También necesitas instalar dependencias, a saber: cpio, grub, grub-efi, dosfstools, xorriso. El uso de squashfs-tools no es obligatorio; puedes trabajar en tmpfs si tienes suficiente memoria RAM. En caso de que falte algo en el sistema, boobstrap lo notificará al iniciar.
Para simplificar la creación de configuraciones, boobstrap sugiere utilizar "plantillas" y "sistemas", cuya esencia es usar "plantillas" (bootstrap-templates/) para la instalación rápida de sistemas desde un archivo, mientras que las "sistemas" (bootstrap-systems/) se utilizan para configurar configuraciones finales.
Por ejemplo, ejecutar el script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild instalará una configuración mínima del sistema CRUX GNU/Linux y la guardará en el archivo crux_gnulinux-embedded.rootfs; luego, ejecutarás boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, que cargará la configuración primaria desde el archivo mencionado, realizará toda la configuración necesaria y preparará la ISO de arranque. Esto es útil, por ejemplo, cuando varios sistemas utilizan una configuración similar: para no tener que describir el mismo conjunto de paquetes cada vez, utilizas una plantilla de la que luego creas imágenes de arranque de sistemas con una configuración final.
¿Dónde se utiliza todo esto?
Configuras el sistema en el archivo una vez y con su ejecución realizas su construcción y/o actualización. El sistema funciona en tmpfs, lo que lo hace esencialmente desechable. Si el sistema falla, con un solo botón de Reiniciar vuelves al estado inicial. Puedes hacer tranquilamente rm -rf /.
Puedes configurar las configuraciones de todos tus sistemas localmente, crear imágenes, probarlas en una máquina virtual o en hardware separado, luego cargarlas en un servidor remoto y con solo dos comandos kexec -l /vmlinuz —initrd=/initrd && kexec -e actualizas todo el sistema por completo, reiniciándolo en tmpfs.
De manera similar, puedes migrar todos los sistemas, por ejemplo a VDS, al funcionamiento en tmpfs, y cifrar el disco /dev/vda para usarlo únicamente para datos, sin necesidad de mantener el sistema operativo en él. En este caso, el único "punto de fuga de información" sería el "volcado en frío" de la memoria de tu máquina virtual, y en caso de compromiso del sistema (por ejemplo, a través de un ataque de fuerza bruta a la contraseña de ssh o una vulnerabilidad en exim), puedes cargar una nueva ISO a través del "panel de control" de tu proveedor para restaurar el VDS, sin olvidar editar la configuración del sistema para cerrar todas las vulnerabilidades. Esto es más rápido que reinstalar, reconfigurar y/o restaurar desde una copia de seguridad, ya que, en esencia, la ISO que estás cargando con tu sistema es tu copia de seguridad. "Siete males, un Reset."
Al final, puedes crear cualquier distribución para tus tareas, grabarla en una unidad USB y trabajar en ella, actualizándola cuando sea necesario y volviéndola a grabar en la unidad USB. Todas las datos se almacenan en "la nube". Ya no necesitas preocuparte por la seguridad del sistema y hacer copias de seguridad, cuando el sistema, repito, se ha convertido en "desechable".
Tus deseos, sugerencias y comentarios son bienvenidos.
En el repositorio en el siguiente enlace hay un archivo README detallado (en inglés) que describe cada utilidad y ejemplos de uso, también hay documentación detallada en ruso y el historial de desarrollo, disponibles en el enlace: Conjunto de scripts de arranque boobstrap.
Fuente: linux.org.ru

