Criação de imagens de inicialização bootstrap v1.0


Criação de imagens de inicialização bootstrap v1.0

Quero apresentar a vocês um framework chamado boobstrap, escrito em POSIX shell, para criar imagens de inicialização com distribuições GNU/Linux. O framework permite percorrer todo o caminho em três etapas simples: desde a implantação do sistema em chroot, a criação da imagem initramfs que inclui o sistema do chroot, e finalmente, a imagem ISO de inicialização. O boobstrap inclui três utilitários: mkbootstrap, mkinitramfs e mkbootisofs, respectivamente.

O mkbootstrap instala o sistema em um diretório separado, com suporte nativo ao CRUX, e para Arch Linux / Manjaro e distribuições baseadas em Debian, devem ser utilizados utilitários de terceiros: pacstrap, basestrap e debootstrap, respectivamente.

O mkinitramfs cria uma imagem initramfs; você pode usar o sistema instalado no diretório como um 'overlay', comprimido com SquashFS, ou inicializar o sistema e trabalhar diretamente no tmpfs. Por exemplo, o comando mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd criará um arquivo initrd, incluindo dois overlays com o sistema 'arch-chroot/' e o seu '\/home', compactados com SquashFS, que você pode então carregar via PXE no tmpfs ou criar uma imagem ISO de inicialização com este initrd.

O mkbootisofs cria uma imagem ISO de inicialização BIOS/UEFI a partir do diretório especificado. Basta colocar /boot/vmlinuz e /boot/initrd no diretório.

O boobstrap não utiliza busybox, e para criar o ambiente de trabalho do initramfs, um conjunto mínimo de programas é copiado usando ldd, necessário para a inicialização e mudança para o sistema. A lista de programas a serem copiados, assim como tudo o mais, pode ser configurada através do arquivo de configuração /etc/boobstrap/boobstrap.conf. Você também pode instalar qualquer distribuição minimalista em um chroot/, a partir do qual poderá criar um ambiente initramfs completo. Como tal ambiente minimalista, mas ao mesmo tempo completo, é sugerido usar o modelo 'crux_gnulinux-embedded', que após xz ocupa comprometedores 37MB. O busybox, além de seu tamanho, 3-5MB contra 30-50MB de um ambiente GNU/Linux completo, não oferece mais vantagens, tornando o uso do busybox no projeto desnecessário.

Como verificar rapidamente a funcionalidade e começar a trabalhar? Instale e execute.

# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Você também precisará instalar as dependências, nomeadamente: cpio, grub, grub-efi, dosfstools, xorriso. O uso de squashfs-tools não é obrigatório, você pode trabalhar em tmpfs, desde que tenha a quantidade adequada de memória RAM. Caso falte algo no sistema, o boobstrap irá informar ao iniciar.

Para simplificar a criação de configurações, o boobstrap oferece o uso de "templates" e "systems", cujo objetivo é utilizar os "templates" (bootstrap-templates/) para a instalação rápida de sistemas a partir de um arquivo, enquanto os "systems" (bootstrap-systems/) são usados para configurar as configurações finais.

Por exemplo, executar o script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild instalará uma configuração mínima do sistema CRUX GNU/Linux e a salvará no arquivo crux_gnulinux-embedded.rootfs. Em seguida, você executa boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, que carregará a configuração inicial do arquivo mencionado, fará toda a configuração necessária e preparará a ISO de inicialização. Isso é conveniente quando, por exemplo, muitos sistemas usam configurações semelhantes: para não ter que descrever o mesmo conjunto de pacotes toda vez, você usa um único template, a partir do qual cria as imagens de inicialização dos sistemas com a configuração final.

Onde usar tudo isso?

Você configura o sistema em um arquivo uma vez e, ao executá-lo, realiza sua construção e/ou atualização. O sistema funciona em tmpfs, tornando-se essencialmente descartável. No caso de falha do sistema, com um único pressionar do botão Reset, você retorna ao estado original. Você pode executar tranquilamente rm -rf /.

Você pode configurar as configurações de todos os seus sistemas localmente, criar imagens, testá-las em uma máquina virtual ou em um "hardware" separado, e depois carregá-las em um servidor remoto e, com apenas dois comandos kexec -l /vmlinuz --initrd=/initrd && kexec -e, atualizar todo o sistema, reiniciando-o em tmpfs.

Da mesma forma, você pode migrar todos os sistemas, por exemplo, para VDS, operar em tmpfs e criptografar o disco /dev/vda, utilizando-o apenas para dados, sem a necessidade de manter o sistema operacional nele. A única "ponto de vazamento de informação" nesse caso será apenas o "dump frio" da memória da sua máquina virtual; e em caso de comprometimento do sistema (por exemplo, por meio de uma quebra de senha ssh ou vulnerabilidade no exim), você pode carregar uma nova ISO através do "painel de controle" do seu provedor, para restaurar o VDS, não esquecendo de editar a configuração do sistema para corrigir todas as vulnerabilidades. Isso é mais rápido do que reinstalação, configuração subsequente e/ou recuperação a partir de backup, pois essencialmente a ISO carregada com seu sistema é o seu backup. "Sete problemas - um Reset."

No final das contas, você pode criar qualquer distribuição para suas necessidades, gravá-la em um pen drive e trabalhar nela, atualizando conforme necessário e regravando-a no pen drive. Armazenar todos os dados nas "nuvens". Não há mais necessidade de se preocupar com a integridade do sistema ou de fazer backup, quando o sistema, reitero, tornou-se essencialmente "descartável".

Suas sugestões, recomendações e comentários são bem-vindos.

No repositório no link a seguir, há um README detalhado (em inglês) com a descrição de cada utilitário e exemplos de uso; também existe uma documentação detalhada em russo e um histórico de desenvolvimento, disponíveis no link: Conjunto de scripts de inicialização boobstrap.

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