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.
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.
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.
Outro CI/CD que suporta esse tipo de compilação é o 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.
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.
Até a próxima postagem!
Top comments (0)