Se presenta el programa , que permite crear imágenes de arranque initrd, archivos ISO o dispositivos con cualquier distribución GNU/Linux con un solo comando. El código está escrito en shell POSIX y bajo la licencia GPLv3.
Todas las distribuciones cargadas usando Booty funcionan ya sea en SHMFS (tmpfs) o en SquashFS + Overlay FS, a elección del usuario. La distribución se crea una vez, y durante el proceso de arranque se eligen parámetros que permiten usar un tmpfs limpio como raíz, o una combinación de Overlay FS + SquashFS con grabación de cambios en tmpfs. Existe la posibilidad de copiar previamente la distribución cargada en RAM, lo que permite desconectar el dispositivo USB después de la carga y copia de la distribución en la memoria.
En primer lugar, Booty genera su propia imagen initrd, en la que se pueden utilizar utilidades nativas del sistema actual o busybox. Existe la opción de incluir (empaquetar) la distribución instalada en el directorio (chroot) completamente en initramfs. Esto puede ser útil cuando se necesita actualizar el sistema usando kexec: simplemente reinicia initrd con un nuevo núcleo y un nuevo sistema dentro del initrd.
Creación de la imagen initrd específica de Booty:
mkdir initramfs/
mkinitramfs initramfs/ —output initrd
Creación de 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 el arranque, por ejemplo, a través de PXE o mediante kexec.
A continuación, Booty genera imágenes con el sistema que se especifica como «superposiciones». Por ejemplo, se puede instalar (descomprimir el archivo) una supuesta Gentoo en un directorio separado, y luego, usando Booty, se generará un archivo cpio o una imagen SquashFS con ese sistema. También se puede realizar la configuración de la distribución en un directorio separado y copiar configuraciones personales en otro directorio. Todas estas «capas» se cargarán secuencialmente unas sobre otras para crear un sistema operativo funcional.
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd
En última instancia, Booty permite crear imágenes ISO de arranque y dispositivos USB, HDD, SSD y otros, instalando el sistema descrito anteriormente a partir de las imágenes. soporta la creación de sistemas de arranque BIOS y UEFI. Se admiten los cargadores GRUB2 y SYSLINUX. Los cargadores se pueden combinar; por ejemplo, para el arranque en BIOS usar SYSLINUX y para UEFI — GRUB2. Para crear imágenes ISO, también se necesitará el paquete cdrkit (genisoimage) o xorriso (xorrisofs), a elección.
La única acción adicional que se requerirá es preparar el núcleo (vmlinuz) para el arranque. El autor (Spoofing) recomienda usar "make defconfig". Antes de crear la imagen, es necesario preparar un directorio y colocar en él el núcleo vmlinuz y el "initrd" vacío previamente preparado, creado en el primer ejemplo.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
Con esto, la preparación ha terminado, ahora podemos crear imágenes ISO a partir de este directorio.
El siguiente comando creará una imagen ISO, que no es de arranque, simplemente ISO:
mkdir iso/
mkbootisofs iso/ —output archive.iso
Para crear una imagen de arranque, es necesario especificar la opción "—legacy-boot" para BIOS y "—efi" para UEFI respectivamente; como parámetros de la opción se aceptan ya sea grub2 o syslinux, también se puede especificar solo una opción (por ejemplo, si no se necesita soporte para el arranque UEFI, se puede omitir).
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
Y también, como antes se incluyeron imágenes del sistema en initrd, se pueden incluir en la ISO.
mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso
Después de este comando, se formará una imagen ISO de arranque BIOS/UEFI, que arrancará Gentoo desde una imagen SquashFS utilizando Overlay FS, utilizando tmpfs para almacenar datos. El núcleo debe ser compilado con soporte para Overlay FS con SquashFS. Sin embargo, si por alguna razón esto no es necesario, se puede usar la opción "—cpio" en lugar de —squashfs, para empaquetar gentoo/ como un archivo cpio; en ese caso, el archivo se descomprimirá directamente en tmpfs al arrancar, siempre que haya suficiente memoria RAM para descomprimir el sistema en tmpfs.
Dato interesante: si la imagen ISO creada utilizando la opción "—efi" se descomprime en una pendrive FAT32 mediante copia simple de archivos (cp -r), el dispositivo Flash arrancará en modo UEFI sin necesidad de preparación previa, gracias a la especificidad de los cargadores UEFI.
Además de las imágenes ISO de arranque con los mismos parámetros, se puede crear cualquier dispositivo de arranque: USB, HDD, SSD, etc. Este dispositivo puede seguir utilizándose para su propósito principal. Para ello, es necesario montar, por ejemplo, el dispositivo USB y ejecutar mkbootisofs en él. Solo se debe agregar una opción «—bootable» para que el dispositivo que contiene el directorio indicado se convierta en un dispositivo de arranque.
mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable
Después de esto, el dispositivo USB se convertirá en un dispositivo de arranque con la superposición gentoo/ (no se debe olvidar copiar los archivos /boot/vmlinuz y /boot/initrd al dispositivo).
Si por alguna razón el dispositivo no fue montado en /mnt, y resulta que /mnt se encuentra en el dispositivo principal /dev/sda, el cargador de arranque se sobrescribirá en /dev/sda. Debe tenerse cuidado al especificar la opción —bootable.
Durante el proceso de arranque, Booty admite una serie de opciones que se pueden especificar en el cargador, grub.cfg o syslinux.cfg. Por defecto, sin ninguna opción, se realiza la carga y descompresión de todas las superposiciones en tmpfs (opción por defecto ooty.use-shmfs). Para utilizar Overlay FS, se debe utilizar la opción booty.use-overlayfs. La opción booty.copy-to-ram copia previamente las superposiciones en tmpfs y luego solo las conecta y las carga. Después de copiar, el dispositivo USB (o cualquier otro dispositivo) se puede extraer.
Fuente: opennet.ru
