Criando imagens de bootstrap v1.0


Criando imagens de bootstrap v1.0

Gostaria de apresentar a sua atenção um framework chamado boobstrap, escrito em shell POSIX, para criação de imagens de boot com distribuições GNU/Linux. A estrutura permite que você passe por todo o processo em apenas três etapas simples: desde a implantação do sistema em um chroot, a criação de uma imagem initramfs que inclui o sistema chroot e, por fim, uma imagem ISO inicializável. boobstrap inclui três utilitários mkbootstrap, mkinitramfs e mkbootisofs respectivamente.

mkbootstrap instala o sistema em um diretório separado, há suporte nativo para CRUX e, no caso de distribuições baseadas em Arch Linux/Manjaro e Debian, utilitários de terceiros pacstrap, basestrap e debootstrap devem ser usados ​​respectivamente.

mkinitramfs cria uma imagem initramfs, você pode usar o sistema instalado no diretório como uma “sobreposição”, compactado usando SquashFS, ou após inicializar o sistema, trabalhar diretamente em tmpfs. Assim, por exemplo, o comando mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd criará um arquivo initrd, incluindo duas sobreposições com "arch- chroot/" e seu "/home", compactado usando SquashFS, que você pode inicializar via PXE em tmpfs ou criar uma imagem ISO inicializável com este initrd.

mkbootisofs cria uma imagem ISO inicializável de BIOS/UEFI a partir do diretório especificado. Basta colocar /boot/vmlinuz e /boot/initrd no diretório.

O boobstrap não usa o busybox e, para criar um ambiente initramfs funcional, um conjunto mínimo de programas é copiado usando o ldd, necessário para inicializar e alternar para o sistema. A lista de programas a serem copiados, como todo o resto, pode ser configurada através do arquivo de configuração /etc/boobstrap/boobstrap.conf. Além disso, você pode instalar qualquer distribuição minimalista em um chroot/ separado, a partir do qual você pode criar um ambiente initramfs completo. Sendo um ambiente tão minimalista, mas ao mesmo tempo completo, propõe-se a utilização do template “crux_gnulinux-embedded”, que após xz ocupa um comprometimento de 37 MB. O busybox, além de seu tamanho, 3-5 MB versus 30-50 MB de um ambiente GNU/Linux completo, não oferece mais nenhuma vantagem, portanto usar o busybox em um projeto não parece apropriado.

Como verificar rapidamente a funcionalidade e começar? 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 precisa instalar dependências, a saber: cpio, grub, grub-efi, dosfstools, xorriso. Não é necessário usar squashfs-tools; você pode trabalhar em tmpfs com a quantidade apropriada de RAM. Se algo estiver faltando no sistema, o boobstrap reportará isso na inicialização.

Para simplificar a criação de configurações, boobstrap sugere o uso de “templates” e “sistemas”, cuja essência é usar “templates” (bootstrap-templates/) para instalar rapidamente sistemas a partir de um arquivo, e diretamente “sistemas” (bootstrap- sistemas/) usado para definir as configurações finais.

Então, por exemplo, executar o script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild irá instalar a configuração mínima do sistema CRUX GNU/Linux e salvá-la no arquivo crux_gnulinux-embedded.rootfs, então você executa boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild que irá carregar a configuração primária do arquivo mencionado, fazer toda a configuração necessária e preparar um ISO inicializável. Isso é conveniente quando, por exemplo, muitos sistemas usam o mesmo tipo de configuração: para não descrever o mesmo conjunto de pacotes todas as vezes, você usa um modelo, com base no qual você cria imagens de inicialização de sistemas com a configuração final.

Onde posso usar tudo isso?

Você configura o sistema em um arquivo uma vez e ao executá-lo você o constrói e/ou atualiza. O sistema roda em tmpfs, o que o torna essencialmente descartável. Se o sistema falhar, você poderá retornar ao seu estado original com um clique no botão Redefinir. Você pode executar com segurança rm -rf /.

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

Da mesma forma, você pode transferir todos os sistemas, por exemplo em VDS, para trabalhar em tmpfs, e criptografar o disco /dev/vda e usá-lo apenas para dados, sem a necessidade de manter o sistema operacional nele. O único “ponto de vazamento de informações” neste caso será apenas o “cold dump” da memória da sua máquina virtual, e em caso de comprometimento do sistema (por exemplo, adivinhando a senha ssh ou uma vulnerabilidade em Exim), você pode baixar um novo ISO através do “painel de controle” do seu provedor, para colocar o VDS novamente em funcionamento, sem esquecer de editar a configuração do sistema para fechar todas as vulnerabilidades. Isso é mais rápido do que reinstalar, configurar posteriormente e/ou restaurar a partir de um backup, porque, em essência, o ISO para download com o seu sistema é o seu backup. "Sete problemas - uma redefinição."

No final, você pode criar qualquer distribuição de acordo com suas necessidades, gravá-la em uma unidade USB e trabalhar nela, atualizando-a conforme necessário e reescrevendo-a novamente na unidade USB. Todos os dados são armazenados nas nuvens. Você não precisa mais se preocupar com a segurança do sistema e fazer um backup quando o sistema, repito, se tornar essencialmente “descartável”.

Seus desejos, sugestões e comentários são bem-vindos.

No repositório no link abaixo há um arquivo README detalhado (em inglês) com uma descrição de cada utilitário e exemplos de uso, também há documentação detalhada em russo e um histórico de desenvolvimento disponível no link: Complexo de script de inicialização Boobstrap.

Fonte: linux.org.ru

Adicionar um comentário