Desenvolvendo o Dekuve - Criação dos scripts
Tags: linux, distro, dekuve, xfce
Published: 2021-03-07 05:37:38

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q51qpvljaht4qdv4qg4d.png)

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](https://pt.wikipedia.org/wiki/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](https://launchpad.net/cubic), que consiste em desempacotar uma imagem já existente, customizar através de um acesso [chroot](https://pt.wikipedia.org/wiki/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](https://wiki.debian.org/pt_BR/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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovu9vrwp8zo5tt4rtuh0.png)

Após criar os scripts com todos os comandos necessários pra compilação da imagem de instalação, eu crio um arquivo [YAML](https://pt.wikipedia.org/wiki/YAML) para compilar a imagem através do [GitHub Actions](https://github.com/features/actions), pois é um dos poucos [CI/CD](https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd) que suportam esse tipo de compilação, já que a grande maioria é baseada em [Docker](https://www.docker.com/) e não possuem as permissões necessárias para acessar os pontos de montagem que o ambiente `chroot` precisa.

![github actions](https://github.blog/wp-content/uploads/2019/08/DL-V2-LinkedIn_FB.png?fit=1200%2C630)

Outro _CI/CD_ que suporta esse tipo de compilação é o [Azure Pipelines](https://azure.microsoft.com/pt-br/services/devops/pipelines/).

![azure pipelines](https://miro.medium.com/max/1024/0*qLZiFLyP4PdCzrQY.jpg)

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](https://drive.google.com), 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](https://digilandia.io/wp-content/uploads/2020/05/Como-usar-o-Google-Drive.jpg)

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!