O SUSE Studio me permite criar minha própria distribuição selecionando meus próprios aplicativos, que ele instala. Eu executo um assistente e ele gera um arquivo .ISO.
Por exemplo, se eu quiser uma distribuição para desenvolvimento web, posso selecionar MySql ou MariaDB, Eclipse PHP e Eclipse JS, Xdebug, FireFox Developer Edition (e alguns outros).
- alguma coisa oferece esse serviço para o Ubuntu?
- existe uma API que eu poderia usar para fazer isso sozinho?
Caso contrário, alguém pode explicar como eu criaria esse aplicativo ou assistente? Eu sou um programador profissional, então deveria ser capaz de fazer isso, se possível.
Talvez eu possa automatizar o Gentoo de alguma forma? Embora isso exigisse um grande esforço para emular o Ubuntu (também estou interessado nas outras distribuições, mas o Ubuntu seria um bom começo).
Meu primeiro pensamento foi que eu só preciso de um sistema de arquivos e um registro de inicialização e então posso criar um ISO a partir disso. Mas então percebi que realmente quero instalar alguns aplicativos dentro disso, o que significa arquivos de configuração, links simbólicos, etc., que são melhor criados executando a instalação (ou são?).
Existe um assistente "construa seu próprio (Ubuntu) Linux"? Se não, (como) posso fazer um?
Como regra geral, praticamente qualquer distro que não seja construída especificamente para uma tarefa específica (exemplos de distros criados especificamente incluem MythDora, BackTrack, SteamOS, LEAF e SystemRescueCD) tem alguma maneira de fazer isso, embora todos variem em exatamente como. Em geral, existem três maneiras de fazer isso, dependendo da distribuição do Linux:
Durante a engenharia de lançamento (você literalmente cria sua própria imagem de instalação diretamente). Isso é mais comum em distribuições baseadas em fonte, com o Gentoo provavelmente sendo o melhor exemplo (as imagens de instalação do Gentoo são tarballs compactados que você extrai diretamente no sistema de destino, sua ferramenta de engenharia de lançamento (Catalyst) permite que você crie tarballs personalizados que contenham o pacote exato definir que você deseja).
Durante a própria instalação, você escolhe um conjunto separado de pacotes para instalar. Arch, NixOS e Alpine adotam essa abordagem (embora o façam de maneiras diferentes, Arch apenas adiciona os pacotes que deseja ao comando de instalação inicial, NixOS adiciona itens de configuração para puxá-los durante a primeira compilação do sistema, e a Alpine permite que você adicione cada um manualmente durante a instalação, como se os estivesse instalando em um sistema existente).
Personalizando o Live CD usado para fazer a instalação. Isso é o que o SUSE Studio faz e é a abordagem adotada pela maioria das distribuições (já que a maioria das distros apenas espelha a lista de pacotes do Live CD como sua instalação inicial), incluindo Ubuntu e Fedora.
O Ubuntu (e outras distros que podem usar o instalador Debian) podem funcionar com a abordagem 2 ou abordagem 3.
Para a segunda abordagem, você precisa fazer uma instalação baseada em texto no modo 'especialista', e há um ponto durante a instalação em que você pode selecionar uma opção que abrirá o Aptitude (uma boa interface do usuário de texto baseada em ncurses para APT e dpkg) para especificar manualmente quais pacotes instalar.
Para a terceira abordagem, você infelizmente terá que fazer o trabalho sozinho, mas não é muito difícil (apenas um pouco tedioso). O melhor conselho que encontrei para fazer isso está em https://help.ubuntu.com/community/InstallCDCustomization
No que diz respeito à criação de uma ferramenta para fazer isso de forma rápida e fácil, você pode dar uma olhada no Ubuntu Customization Kit , um projeto infelizmente extinto que parece fazer praticamente a mesma coisa que o KIWI (o serviço SUSE que alimenta o SUSE Studio). Embora provavelmente não funcione com as versões mais recentes do Ubuntu, deve, em teoria, fornecer um bom ponto de partida se você quiser criar essa ferramenta por conta própria.