booty - utilitário para criar imagens e unidades de inicialização

Programa apresentado Saque, que permite criar imagens initrd inicializáveis, arquivos ISO ou unidades contendo qualquer distribuição GNU/Linux com um comando. O código é escrito em shell POSIX e distribuído por licenciado sob GPLv3.

Todas as distribuições inicializadas usando Booty executam SHMFS (tmpfs) ou SquashFS + Overlay FS, a escolha do usuário. A distribuição é criada uma vez e, durante o processo de inicialização, são selecionados parâmetros que permitem usar tmpfs puro para o root ou uma combinação de Overlay FS + SquashFS com gravação de alterações em tmpfs. É possível pré-copiar o kit de distribuição baixado para a RAM, o que permite desconectar a unidade USB após baixar e copiar o kit de distribuição para a memória.

Primeiro de tudo, o Booty gera sua própria imagem initrd, que pode usar utilitários nativos do sistema atual ou do busybox. É possível incluir (empacotar) todo o kit de distribuição instalado no diretório (chroot) no initramfs. Isto pode ser útil quando você precisa atualizar um sistema usando kexec: simplesmente recarregue o initrd com um novo kernel e um novo sistema dentro do initrd.

Criando uma imagem initrd específica do Booty:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Criando uma imagem initrd incluindo a distribuição do diretório “gentoo/”:

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

Depois disso, esta imagem initrd está completamente pronta para ser carregada, por exemplo, via PXE ou via kexec.

Em seguida, o Booty gera imagens com o sistema especificado como “overlays”. Por exemplo, você pode instalar (descompactar o arquivo) um Gentoo condicional em um diretório separado, após o qual um arquivo cpio ou imagem SquashFS com este sistema será gerado usando o Booty. Você também pode configurar a distribuição em um diretório separado e copiar suas configurações pessoais para outro diretório. Todas essas “camadas” serão carregadas sequencialmente umas sobre as outras e criarão um único sistema de trabalho.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay configurações/ --overlay documentos/ --squashfs --output initrd

Em última análise, o Booty permite criar imagens ISO inicializáveis ​​​​e unidades USB, HDD, SSD e outras unidades instalando o sistema acima a partir de imagens. Saque suporta a criação de sistemas de inicialização BIOS e UEFI. Os gerenciadores de inicialização GRUB2 e SYSLINUX são suportados. Bootloaders podem ser combinados, por exemplo, use SYSLINUX para inicializar no BIOS e GRUB2 para UEFI. Para criar imagens ISO, você também precisará do pacote cdrkit (genisoimage) ou xorriso (xorrisofs), para escolher.

A única ação adicional necessária é preparar o kernel (vmlinuz) para inicialização antecipadamente. O autor (Spoofing) recomenda usar "make defconfig". Antes de criar a imagem, você precisa preparar um diretório colocando o kernel vmlinuz e o 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á completa, agora podemos criar imagens ISO a partir deste diretório.

O comando a seguir criará uma imagem ISO, não inicializável, apenas uma ISO:

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

Para criar uma imagem de inicialização, você precisa especificar a opção “--legacy-boot” para BIOS e “--efi” para UEFI, respectivamente; as opções levam grub2 ou syslinux como parâmetros; você também pode especificar apenas uma opção ( por exemplo, o suporte de inicialização UEFI não é necessário, pode não ser 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 --output boot-uefionly.iso

E assim como antes, as imagens com o sistema foram incluídas no initrd, você pode incluí-las no ISO.

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

Após este comando, será gerada uma imagem ISO inicializável do BIOS/UEFI que carrega o Gentoo na imagem SquashFS usando Overlay FS, usando tmpfs para armazenamento de dados. O kernel deve ser construído com suporte Overlay FS com SquashFS. No entanto, se por algum motivo isso não for necessário, você pode usar a opção “—cpio” em vez de —squashfs para empacotar o gentoo/ como um arquivo cpio, caso em que o arquivo será descompactado diretamente em tmpfs na inicialização, o principal é que para descompactar o sistema o tmpfs tinha RAM suficiente.

Fato interessante: se uma imagem ISO criada usando a opção “—efi” for descompactada em uma unidade flash FAT32 simplesmente copiando os arquivos (cp -r), a unidade Flash inicializará no modo UEFI sem qualquer preparação preliminar, graças às especificações de downloaders UEFI.

Além dos ISOs inicializáveis, qualquer unidade inicializável pode ser criada com os mesmos parâmetros: USB, HDD, SSD e assim por diante, e esta unidade pode continuar a ser usada para a finalidade pretendida. Para fazer isso, você precisa montar, por exemplo, um dispositivo USB e executar mkbootisofs nele. Basta adicionar uma opção “—bootable” para que a unidade na qual o diretório especificado está localizado se torne inicializável.

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

Depois disso, o dispositivo USB se tornará inicializável com o gentoo/ overlay (não esqueça de copiar os arquivos /boot/vmlinuz e /boot/initrd para o dispositivo).

Se por algum motivo a unidade não foi montada em /mnt, e acontece que /mnt está localizado no dispositivo principal /dev/sda, então o bootloader será reescrito em /dev/sda. Você deve ter 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 passadas para o carregador de inicialização, grub.cfg ou syslinux.cfg. Por padrão, sem nenhuma opção, todas as sobreposições são carregadas e descompactadas em tmpfs (opção padrão ooty.use-shmfs). Para usar o Overlay FS, a opção booty.use-overlayfs deve ser usada. A opção booty.copy-to-ram primeiro copia as sobreposições para tmpfs, após o que apenas as conecta e carrega. Depois de copiado, o dispositivo USB (ou outro dispositivo de armazenamento) pode ser removido.

Fonte: opennet.ru

Adicionar um comentário