booty: utilidad para crear imágenes y unidades de arranque

Programa presentado Botín, que le permite crear imágenes initrd de arranque, archivos ISO o unidades que contengan cualquier distribución GNU/Linux con un solo comando. El código está escrito en shell POSIX y distribuido por licenciado bajo GPLv3.

Todas las distribuciones iniciadas con Booty ejecutan SHMFS (tmpfs) o SquashFS + Overlay FS, a elección del usuario. La distribución se crea una vez y durante el proceso de arranque, se seleccionan los parámetros que le permiten usar tmpfs puro para la raíz, o una combinación de Overlay FS + SquashFS con grabación de cambios en tmpfs. Es posible realizar una copia previa del kit de distribución descargable en la RAM, lo que le permite desconectar la unidad USB después de descargar y copiar el kit de distribución en la memoria.

En primer lugar, Booty genera su propia imagen initrd, que puede utilizar utilidades nativas del sistema actual o de Busybox. Es posible incluir (empaquetar) todo el kit de distribución instalado en el directorio (chroot) en initramfs. Esto puede resultar útil cuando necesita actualizar un sistema usando kexec: simplemente vuelva a cargar el initrd con un nuevo kernel y un nuevo sistema dentro del initrd.

Creando una imagen initrd específica de Booty:

mkdir initramfs/
mkinitramfs initramfs/ --salida initrd

Creando una imagen initrd incluyendo la distribución desde el directorio “gentoo/”:

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

Después de lo cual esta imagen initrd estará completamente lista para cargarse, por ejemplo, a través de PXE o mediante kexec.

A continuación, Booty genera imágenes con el sistema especificado como "superposiciones". Por ejemplo, puede instalar (desempaquetar el archivo) un Gentoo condicional en un directorio separado, después de lo cual se generará un archivo cpio o una imagen de SquashFS con este sistema usando Booty. También puede configurar la distribución en un directorio separado y copiar su configuración personal a otro directorio. Todas estas "capas" se cargarán secuencialmente una encima de la otra y crearán un único sistema de trabajo.

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

En última instancia, Booty le permite crear imágenes ISO de arranque y unidades USB, HDD, SSD y otras unidades instalando el sistema anterior a partir de imágenes. Botín admite la creación de sistemas de arranque BIOS y UEFI. Se admiten los cargadores de arranque GRUB2 y SYSLINUX. Los cargadores de arranque se pueden combinar, por ejemplo, use SYSLINUX para iniciar en el BIOS y GRUB2 para UEFI. Para crear imágenes ISO, necesitarás adicionalmente el paquete cdrkit (genisoimage) o xorriso (xorrisofs), para elegir.

La única acción adicional requerida es preparar el kernel (vmlinuz) por adelantado para el arranque. El autor (Spoofing) recomienda utilizar "make defconfig". Antes de crear la imagen, es necesario preparar un directorio colocando el kernel vmlinuz y el initrd “vacío” previamente preparado creado en el primer ejemplo.

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

Con esto la preparación está completa, ahora podemos crear imágenes ISO desde este directorio.

El siguiente comando creará una imagen ISO, no una de arranque, solo una ISO:

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

Para crear una imagen de arranque, debe especificar la opción “--legacy-boot” para BIOS y “--efi” para UEFI, respectivamente; las opciones toman grub2 o syslinux como parámetros; también puede especificar solo una opción ( por ejemplo, no se necesita soporte de arranque UEFI (es posible que no esté especificado).

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 --salida boot-uefionly.iso

Y así como antes las imágenes con el sistema se incluían en el initrd, puedes incluirlas en la ISO.

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

Después de este comando, se generará una imagen BIOS/UEFI ISO de arranque que carga Gentoo en la imagen de SquashFS usando Overlay FS, usando tmpfs para el almacenamiento de datos. El kernel debe construirse con soporte Overlay FS con SquashFS. Sin embargo, si por alguna razón esto no es necesario, puede usar la opción “—cpio” en lugar de —squashfs para empaquetar gentoo/ como un archivo cpio, en cuyo caso el archivo se descomprimirá directamente en tmpfs al arrancar, lo principal es que para descomprimir el sistema tmpfs tenía suficiente RAM.

Dato interesante: si una imagen ISO creada usando la opción “—efi” se descomprime en una unidad flash FAT32 simplemente copiando archivos (cp -r), entonces la unidad flash se iniciará en modo UEFI sin ninguna preparación previa, gracias a las características específicas de descargadores UEFI.

Además de los ISO de arranque, se puede crear cualquier unidad de arranque con los mismos parámetros: USB, HDD, SSD, etc., y esta unidad puede seguir utilizándose para el fin previsto. Para hacer esto, necesita montar, por ejemplo, un dispositivo USB y ejecutar mkbootisofs en él. Simplemente agregue una opción “—arrancable” para que la unidad en la que se encuentra el directorio especificado se convierta en arrancable.

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

Después de eso, el dispositivo USB será arrancable con la superposición gentoo/ (no olvide copiar los archivos /boot/vmlinuz y /boot/initrd al dispositivo).

Si por alguna razón la unidad no estaba montada en /mnt y resulta que /mnt está ubicado en el dispositivo principal /dev/sda, entonces el gestor de arranque se reescribirá en /dev/sda. Debe tener cuidado al especificar la opción --bootable.

Durante el proceso de arranque, Booty admite una serie de opciones que se pueden pasar al cargador de arranque, grub.cfg o syslinux.cfg. De forma predeterminada, sin ninguna opción, todas las superposiciones se cargan y descomprimen en tmpfs (opción predeterminada ooty.use-shmfs). Para utilizar Overlay FS se debe utilizar la opción booty.use-overlayfs. La opción booty.copy-to-ram primero copia las superposiciones a tmpfs, después de lo cual solo las conecta y las carga. Una vez copiado, se puede quitar el dispositivo USB (u otro dispositivo de almacenamiento).

Fuente: opennet.ru

Añadir un comentario