Criação de imagens de boot boobstrap v1.2


Criação de imagens de boot boobstrap v1.2

Após apenas um mês um desenvolvimento tranquilo ocorreu o lançamento do boobstrap v1.2 — um conjunto de ferramentas em shell POSIX para criar imagens e dispositivos de boot.

Boobstrap permite com um único comando:

  • Criar uma imagem initramfs, incluindo qualquer distribuição GNU/Linux.
  • Criar imagens ISO de boot com qualquer distribuição GNU/Linux.
  • Criar dispositivos USB, HDD, SSD de boot com qualquer distribuição GNU/Linux.

A característica é que, após o boot, o GNU/Linux funcionará totalmente em um tmpfs limpo ou utilizando Overlay FS e imagens SquashFS, à sua escolha. Você instala qualquer distribuição GNU/Linux em um diretório, faz todas as configurações necessárias (pode ser em um diretório separado), após o que, com um único comando, cria o dispositivo de boot, seja uma imagem ISO, USB, HDD, SSD, ou pode criar uma imagem initrd com o sistema. O sistema estará sempre em um estado único e, em caso de falha, você pode retornar ao estado original pressionando um botão de Reset. Quer mover o sistema para outro host ou criar um sistema a partir de um contêiner existente? Boobstrap fará isso.

Principais mudanças:

  • Adicionada a suporte para o gerenciador de boot syslinux, além do já existente grub2. Agora você pode escolher usar grub2, syslinux, ou ambos ao mesmo tempo, ao criar um dispositivo de boot ou imagem ISO, para o que respondem as opções —legacy-boot syslinux e —efi grub2 respectivamente, e também é possível escolher quais modos de boot o imagem ISO deverá suportar.
  • Adicionada a opção —bootable, que torna qualquer dispositivo de bloco inicializável. Para a criação de imagens ISO deve ser utilizada a opção —iso-9660.
  • Adicionadas opções de boot do núcleo boobs.use-shmfs para copiar o conteúdo de todas as sobreposições para tmpfs, boobs.use-overlayfs para inicializar utilizando Overlay FS, boobs.search-rootfs para escolher a fonte com o sistema, boobs.copy-to-ram para copiar o sistema para a memória com posterior desligamento do dispositivo.
  • A única dependência obrigatória para o funcionamento do boobstrap é apenas cpio. As outras dependências são opcionais: grub2 e syslinux são necessárias para criar mídias de inicialização, cdrkit ou xorriso à escolha para criar ISO, squashfs-tools para criar SquashFS, no entanto, nada impede o uso da opção —cpio em vez de —squashfs para empacotar sua distribuição em um arquivo. busybox será usado apenas se estiver instalado, caso contrário, todas as utilidades necessárias serão copiadas do seu sistema. Assim, o funcionamento do boobstrap é garantido praticamente em qualquer lugar.

Por exemplo, o seguinte comando criará uma imagem initrd incluindo o sistema gentoo-chroot/ empacotado como uma imagem SquashFS, que será carregada com sucesso após a inicialização do próprio initrd. Lembro que, para usar o Overlay FS junto com o SquashFS, é necessário passar a opção ao núcleo boobs.use-overlayfs, caso contrário, o sistema será descompactado em tmpfs. Todas as configurações adicionais podem ser feitas em um diretório separado, por exemplo, gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd

A imagem initrd com o sistema dentro é útil quando é necessário implantar rapidamente o sistema, por exemplo, via PXE, ou em um sistema inicializado mudar para initrd usando o comando kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, ou mesmo estando na interface de uma máquina virtual QEMU (possivelmente até Proxmox), inicializando de uma fonte remota usando três comandos IPXE: kernel http://[…] /vmlinuz, initrd http://[…] /initrd, boot. Como você pode ver, até mesmo um initrd comum com seu sistema dentro possui várias opções de uso.

Para criar mídias e imagens de inicialização, utiliza-se o comando mkbootisofs, por exemplo, assim se parece a criação de uma imagem ISO com a opção —iso-9660 usando syslinux para inicializar em modo Legacy (BIOS) e grub2 para inicializar em modo EFI (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs

Você pode especificar um dos modos de inicialização, ou não especificá-los de forma alguma; a imagem ISO correspondente será criada com sucesso.

A instalação em qualquer mídia com posterior inicialização a partir dela é realizada pela opção —bootable. Você precisa criar as partições na mídia (fdisk) e formatá-las (mkdosfs, mke2fs e assim por diante), após o que deve montar o dispositivo em um diretório.

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

Cuidado! A opção —bootable determina de qual dispositivo de bloco a diretório foi montado e instala o carregador de inicialização nesse dispositivo. Se você esquecer de montar o dispositivo ou especificar erroneamente um diretório que está, por exemplo, em /dev/sda, o carregador em /dev/sda será sobrescrito. Use —bootable com cautela.

A instalação de qualquer sistema GNU/Linux se resume a um único comando. A instalação pode ser realizada em qualquer HDD, SSD e assim por diante. Vale lembrar que ainda é um sistema operando a partir do Overlay FS / SquashFS, ou completamente carregado em tmpfs, a sua escolha.

Além de tudo, o boobstrap possui uma série de características e funcionalidades interessantes!

Por exemplo, você pode criar um initrd personalizado do boobstrap com o comando mkinitramfs `mktemp -d` > /boot/initrd e iniciar seu sistema com este initrd, especificando as opções do kernel boobs.use-overlayfs boobs.search-rootfs=/dev/sda1. Nesse caso, /dev/sda1, onde seu sistema doméstico está instalado, será montado como uma camada Overlay FS somente leitura, e todas as alterações que você fizer serão gravadas temporariamente em tmpfs. Você pode adicionar a opção boobs.copy-to-ram e então todo o seu sistema será copiado para a RAM, e o disco rígido pode ser desconectado do computador. É conveniente quando você precisa quebrar algo e pode reverter as alterações simplesmente reiniciando. 🙂

Mas e se você precisar realmente salvar todas as alterações no sistema? Por exemplo, você instalou um software ou algo assim. Ao operar em um tmpfs limpo, isso infelizmente não é possível, mas se você inicializou utilizando o Overlay FS, todas as alterações feitas no sistema são salvas em um diretório tmpfs separado: /mnt/overlayfs/rootfs-changes! O cenário de uso é bem simples. Você inicializou seu sistema a partir de um dispositivo USB, trabalhou, e quis salvar tudo que foi alterado, então crie um arquivo cpio e coloque-o aqui mesmo, neste dispositivo USB.

# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

Você pode colocar o arquivo junto com outros "camadas" SquashFS e cpio, assim, na próxima inicialização, o arquivo será montado apenas como mais uma camada somente leitura. Para continuar trabalhando com as alterações, use a opção de inicialização boobs.rootfs-changes=\/rootfs-changes.cpio. A opção boobs.rootfs-changes monta a camada especificada com acesso para modificação. A camada pode ser um dispositivo em bloco, por exemplo, você pode especificar \/dev\sdb1, assim, todas as alterações feitas no Overlay FS serão simplesmente salvas em \/dev\sdb1.

Apesar de suas amplas possibilidades, o Boobstrap ainda está em desenvolvimento; todos os seus comentários e sugestões são levados em conta!

Fonte: linux.org.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