DEV Community

Cover image for Desenvolvendo o Dekuve - Criação dos scripts
Raul Dipeas
Raul Dipeas

Posted on

Desenvolvendo o Dekuve - Criação dos scripts

Chegamos nos finalmente, momento onde o vou descrever o meu método de criação para o script que vai gerar a imagem de instalação do sistema.

vscodium

Ao longo dos últimos 10 anos, eu usei vários métodos para criar ou remasterizar imagens de instalação baseadas no Ubuntu e no Debian, fui afunilando o processo com base nas experiências que tive e cheguei num método que hoje eu classifico como correto, mas calma, antes de achar que eu estou ditando regras, vou tentar explicar os motivos aqui.

A grande maioria das distribuições Linux feitas por usuários iniciantes, usam o método Remastersys, bem antigo e manjado, que consiste em instalar o sistema localmente, fazer as customizações necessárias e depois empacotar essa instalação dentro de uma imagem ISO.

Esse método funciona bem no caso de backups pessoais, mas quando você pretende compartilhar essa imagem com outras pessoas, a chance de você entregar um sistema carregado de arquivos desnecessários é muito grande, já que esse método não tem uma abordagem de construção, é só um empacotamento de algo que já está funcionando, com arquivos de cache, logs e mais um monte de coisas que você não vai precisar.

Existe um outro método muito popular, conhecido através de programas como o Cubic, que consiste em desempacotar uma imagem já existente, customizar através de um acesso chroot e depois empacotar novamente de forma automatizada.

Esse método é muito próximo do que eu uso atualmente, porém, ao invés de usar uma imagem já existente, eu construo todo o sistema do zero, usando o debootstrap.

Daí a minha definição de correto para esse método, pois eu não estou usando nenhuma receita pronta como base, construindo tudo meticulosamente da forma que preciso.

A vantagem principal nesse método, é que eu consigo criar um sistema extremamente enxuto, usando somente o que é fundamental pro funcionamento do sistema, sem desperdício de recursos.

Porém, é um método muito mais trabalhoso e que demanda mais tempo e dedicação ao processo de desenvolvimento, mas o resultado é sempre muito satisfatório.

Seguindo com o processo de desenvolvimento, antigamente eu colocava todos os comandos no mesmos script e rodava de uma vez só, porém, era muito desgastante ficar rolando páginas e mais páginas pra encontrar grupos de comandos que eu precisava verificar durante o processo, em busca de erros e correções, então resolvi adotar a prática de segmentar os comandos em scripts separados, isso me ajudou muito na produtividade e poupa muito tempo.

shellscript

Após criar os scripts com todos os comandos necessários pra compilação da imagem de instalação, eu crio um arquivo YAML para compilar a imagem através do GitHub Actions, pois é um dos poucos CI/CD que suportam esse tipo de compilação, já que a grande maioria é baseada em Docker e não possuem as permissões necessárias para acessar os pontos de montagem que o ambiente chroot precisa.

github actions

Outro CI/CD que suporta esse tipo de compilação é o Azure Pipelines.

azure pipelines

Após a compilação, é possível baixar a imagem através de vários serviços diferentes, que você pode setar no YAML, atualmente, eu uso o Google Drive, por ter um processo de upload mais simples e maior disponibilidade de servidores ao redor do mundo, o que agiliza o processo de download.

google-drive

Enfim, acho que consegui explicar o meu método, caso você tenha interesse em mais detalhes, eu tenho um curso disponível, basta clicar no chapéu no meu site.

https://rauldipeas.now.sh

Até a próxima postagem!

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs