booty — utilitário para criar imagens e dispositivos de inicialização

Apresentado o programa Booty, que permite criar imagens de inicialização initrd, arquivos ISO ou dispositivos com qualquer distribuição GNU/Linux com um único comando. O código é escrito em shell POSIX e é distribuído sob a licença GPLv3.

Todas as distribuições carregadas usando o Booty funcionam tanto em SHMFS (tmpfs) quanto em SquashFS + Overlay FS, conforme escolha do usuário. A distribuição é criada uma vez, e no processo de inicialização são selecionadas as opções que permitem usar um tmpfs limpo como raiz, ou um conjunto Overlay FS + SquashFS com gravação de alterações em tmpfs. Há também a possibilidade de copiar previamente a distribuição carregada para a RAM, permitindo desconectar a unidade USB após a inicialização e cópia da distribuição para a memória.

Primeiramente, o Booty gera sua própria imagem initrd, na qual podem ser utilizadas utilitários nativos do sistema atual ou busybox. Há a possibilidade de incluir (empacotar) toda a distribuição instalada no diretório em initramfs (chroot). Isso pode ser útil quando é necessário atualizar o sistema utilizando kexec: basta reiniciar o initrd com um novo núcleo e um novo sistema dentro do initrd.

Criação da imagem initrd específica do Booty:

mkdir initramfs/
mkinitramfs initramfs/ —output initrd

Criação da imagem initrd incluindo a distribuição do diretório "gentoo/":

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

Após isso, a imagem initrd estará completamente pronta para inicialização, por exemplo, através de PXE ou kexec.

Em seguida, o Booty gera imagens com o sistema que é indicado como "overlays". Por exemplo, pode-se instalar (descompactar o arquivo) uma distribuição condicional Gentoo em um diretório separado, e então, usando o Booty, será gerado um arquivo cpio ou imagem SquashFS com esse sistema. Também é possível configurar a distribuição em um diretório separado, e em outro diretório copiar configurações pessoais. Todas essas "camadas" serão carregadas sequencialmente uma sobre a outra, criando um sistema de trabalho único.

mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd

No final, o Booty permite a criação de imagens ISO de inicialização e dispositivos USB, HDD, SSD e outros, instalando o sistema descrito acima a partir das imagens. Booty suporta a criação de sistemas de inicialização BIOS e UEFI. Suporte para os bootloaders GRUB2 e SYSLINUX. Os bootloaders podem ser combinados, por exemplo, usando SYSLINUX para inicializar no BIOS e GRUB2 para UEFI. Para criar imagens ISO, será necessário o pacote cdrkit (genisoimage) ou xorriso (xorrisofs), conforme a escolha.

A única ação adicional necessária é preparar previamente o kernel (vmlinuz) para a inicialização. O autor (Spoofing) recomenda usar "make defconfig". Antes de criar a imagem, é preciso preparar um diretório, colocando nele o kernel vmlinuz e um "initrd vazio" previamente preparado, criado no primeiro exemplo.

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

Com isso, a preparação está concluída, agora podemos criar imagens ISO a partir deste diretório.

O próximo comando criará uma imagem ISO, que não é de inicialização, apenas ISO:

mkdir iso/
mkbootisofs iso/ —output archive.iso

Para criar uma imagem de inicialização, é necessário especificar a opção "—legacy-boot" para BIOS e "—efi" para UEFI, respectivamente; como parâmetros, a opção aceita grub2 ou syslinux, também é possível indicar apenas uma opção (por exemplo, se a inicialização UEFI não for necessária, pode-se não especificá-la).

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

E também, assim como os sistemas foram incluídos no initrd anteriormente, podem ser incluídos no ISO.

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

Após este comando, será gerada uma imagem ISO de inicialização BIOS/UEFI, que inicializa o Gentoo de uma imagem SquashFS usando Overlay FS, utilizando tmpfs para armazenar dados. O kernel deve ser compilado com suporte a Overlay FS com SquashFS. Contudo, se por algum motivo isso não for necessário, pode-se usar a opção "—cpio" em vez de —squashfs, para empacotar gentoo/ como um arquivo cpio; nesse caso, o arquivo será descompactado diretamente no tmpfs durante a inicialização, desde que haja memória RAM suficiente para descompactar o sistema no tmpfs.

Um fato interessante: se a imagem ISO criada com a opção "—efi" for descompactada em um pen drive FAT32 por meio da cópia simples de arquivos (cp -r), o pen drive será inicializado em modo UEFI sem qualquer preparação prévia, graças à especificidade dos bootloaders UEFI.

Além de imagens ISO de inicialização com os mesmos parâmetros, pode ser criado qualquer dispositivo de inicialização: USB, HDD, SSD e assim por diante, sendo que este dispositivo pode continuar a ser usado para seu propósito original. Para isso, é necessário montar, por exemplo, o dispositivo USB e executar o mkbootisofs nele. Basta adicionar uma opção "—bootable" para que o dispositivo que contém o diretório especificado se torne inicializável.

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

Após isso, o dispositivo USB se tornará inicializável com a sobreposição gentoo/ (não se esqueça de copiar os arquivos /boot/vmlinuz e /boot/initrd para o dispositivo).

Se, por algum motivo, o dispositivo não tiver sido montado em /mnt, e acontecer de /mnt estar no dispositivo principal /dev/sda, o carregador será regravado em /dev/sda. Deve-se tomar cuidado ao especificar a opção —bootable.

Durante o processo de inicialização, o Booty suporta uma série de opções que podem ser especificadas no carregador, grub.cfg ou syslinux.cfg. Por padrão, sem quaisquer opções, a inicialização e descompressão de todas as sobreposições ocorre em tmpfs (opção padrão ooty.use-shmfs). Para usar o Overlay FS, a opção booty.use-overlayfs deve ser utilizada. A opção booty.copy-to-ram copia previamente as sobreposições para tmpfs, após o que apenas as monta e inicializa. Após a cópia, o dispositivo USB (ou outro dispositivo) pode ser removido.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster