Como criar um ISO personalizado do servidor Ubuntu?

42

Gostaria de criar uma ISO personalizada do Ubuntu Server 12.04, mas não consegui encontrar uma abordagem clara sobre como fazê-lo. Vejo que o Ubuntu-builder é um aplicativo muito bom para criar um Ubuntu Desktop personalizado, mas e o Ubuntu Server?

Shadin
fonte

Respostas:

61

Baixar

Baixe o ISO do servidor Ubuntu a partir deste local . Você tem a opção de ir para 32 bits ou 64 bits. O nome do arquivo para a edição do servidor será semelhante a este:

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-amd64.iso 

Assumirei a versão 13.10 de 64 bits nas instruções a seguir, portanto, ajuste os comandos para o download que você fez. Mantenha uma cópia do seu download para poder criar várias novas versões a partir do download original, caso precise melhorar seu projeto. Também assumirei que usamos ~/Downloads/para fazer todo o nosso trabalho.

Configuração inicial

Isso criará 2 diretórios "iso" e "isoNew" dentro do diretório Downloads, monte o ISO e copie o conteúdo de "iso" para "isoNew" para iniciar um novo projeto.

Coloque isso em um arquivo de texto, salve-o, torne-o executável e execute-o:

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso    
sudo cp -r ./iso/* ./newIso/
sudo cp -r ./iso/.disk/ ./newIso/    
sudo umount ./iso/
cd ~/Downloads/newIso/
  • Irá emitir 1 mensagem de erro: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Imagens de exemplo de como isso será:

Executando:

Executando

Resultado:

Resultado

Adicionando uma opção de menu de inicialização

As opções de menu do instalador estão armazenadas isolinux/txt.cfge você pode criar novas opções entre default installe label install.

Isso criará uma nova opção chamada "Instalar servidor Ubuntu personalizado" e adicionará um arquivo de kickstart (o arquivo de kickstart é usado para alterar as opções; explicado abaixo):

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoption é apenas um rótulo que você pode usar para identificar sua opção.
  • "Instalar servidor Ubuntu personalizado" é o texto que será exibido no menu de inicialização.
  • Se você deseja tornar sua opção de menu a padrão, basta alterar a opção default installpara default myownoption.

Exemplo:

insira a descrição da imagem aqui

e editando o arquivo (usei o nano, mas, se disponível, use o gedit, vim ou outro editor). Aqui está minha adição a este arquivo, onde eu usei "lampserver" como um rótulo e minha semente também será chamada "lampserver".

insira a descrição da imagem aqui

Kickstart (configurando graficamente um arquivo de configuração)

O método de instalação do Red Hat Kickstart é usado principalmente (mas não exclusivamente) pelo sistema operacional Red Hat Enterprise Linux para executar automaticamente a instalação e configuração autônoma do sistema operacional.

Documentação sobre preseeding / kickstart para Ubuntu . O Ubuntu possui suporte limitado ao kickstart (e pré-configuração); uma das coisas que faltam é uma interface gráfica para pré-configuração. Kickstart faz tem opções para isso (veja as imagens), mas estes não parecem funcionar no Ubuntu. Você pode fazer isso manualmente (consulte Pré-configuração abaixo).

Instalação e início do kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** AVISO **

O kickstart está corrompido no Ubuntu 13.10 e, ao iniciá-lo, gera erros. Aqui está uma correção . Coloque o patch no comentário em um arquivo de texto, salve-o (chamei-o de "patch") e confirme:

insira a descrição da imagem aqui

Depois disso, ksconfigfuncionará e ele iniciará um editor de configuração que permite manipular muitas opções.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Veja o Red Hat Linux 7.2: O Guia Oficial de Personalização do Red Hat Linux para obter uma descrição de todas as opções que você pode definir.

Depois de concluir, salve as alterações em um ks.cfgarquivo e copie-o para a ISO que estamos alterando:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Se você alterar alguma coisa aqui, o instalador SKIP solicitará essas informações se forem consideradas válidas. Se você não alterou uma opção, o instalador ainda solicitará sua resposta.
  • Você também pode baixar arquivos do kickstart e salvá-los como ks-custom.cfgem ~/Downloads/newIso/preseed/.

Exemplo em que inseri minhas credenciais. Comecei com a sudo ksconfigpartir da linha de comando.

insira a descrição da imagem aqui

E salvando-o no projeto:

insira a descrição da imagem aqui

Pré- configuração (configurando manualmente um arquivo de configuração)

A pré -configuração fornece uma maneira de definir respostas para as perguntas feitas durante o processo de instalação, sem a necessidade de inserir manualmente as respostas enquanto a instalação está em execução. Isso torna possível automatizar completamente a maioria dos tipos de instalação e ainda oferece alguns recursos não disponíveis durante as instalações normais.

Copie o preseed para a instalação normal para o seu próprio rótulo:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • mude myownoptionpara o que você usou.

Agora, para alterar as configurações. Usando a debconf-get-selectionspartir do, debconf-utilsvocê pode investigar quais parâmetros você pode usar com software específico.

Exemplo de configuração:

insira a descrição da imagem aqui

E adicionando servidor-lâmpada a ser instalado com o tasksel:

insira a descrição da imagem aqui

  • Se você deseja adicionar pacotes "openssh" e "build-essential", você pode incluí-lo no arquivo inicial:

    d-i pkgsel/include string openssh-server build-essential
    
  • Um exemplo para o openssh:

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
    
  • Você pode adicionar essas opções a custom-iso/preseed/ubuntu-myownoption.seed.

  • Explicação / exemplos usando as configurações do debconf .
  • Um arquivo preseed de exemplo
  • Exemplos relacionados a: Localização, Configuração de rede, Console de rede, Relógio e hora, particionamento
  • No final do arquivo preseed, você pode adicionar pacotes (exemplos aleatórios) assim:

    % pacotes openssh-server mysql-server apache2

Instalação offline

Caso você adicione pacotes e aqueles NÃO estão na ISO, o instalador fará o download deles no repositório. Se você não tiver uma conexão ativa com a Internet, isso será problemático, portanto você precisará adicionar todos esses pacotes (e dependências) ao seu projeto e gravá-los em um DVD. Felizmente, o ISO normal do servidor tem muito espaço, mas cuidado: CD e / ou DVDs têm um tamanho limitado.

Faça o download de todos os pacotes DEB necessários e armazene-os ~/Downloads/. Esses 2 diretórios são necessários na nova ISO:

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
sudo cp ~/Downloads/*.deb newIso/pool/extras/

E isso atualizará nosso projeto com os novos pacotes:

cd ~/Downloads/newIso
sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

Crie o ISO

cd ~/Downloads/     
sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt
sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/
  • a segunda linha cria uma nova soma de verificação e é necessária apenas ao adicionar pacotes.
  • o terceiro cria um ISO do seu projeto que você pode gravar em um DVD.

Resultado:

insira a descrição da imagem aqui

E agora você pode experimentar gravando e instalando. Eu recomendaria usar como máquina virtual, pois será mais rápido testar o ISO criado inicialmente (caso contrário, você continuará reinicializando).

E depois de instalar o VirtualBox, recebo o seguinte menu:

insira a descrição da imagem aqui

Caça de insetos

Ocorreu um problema ao instalar: o padrão não foi selecionado.

Shadin. Do seu arquivo de semente no comentário

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

provavelmente precisa ser assim:

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

Abandone a linha de tarefas que você não deseja um servidor LAMP (ou seja, Apache, Mysql, Php)

Rinzwind
fonte
Isso pode ser usado para versões de desktops?
Braiam
MUITO OBRIGADO!! Eu realmente não posso agradecer o suficiente por tornar esse processo fácil e suave! Acabei de ter um problema: depois de instalar o VirtualBox e optar por instalar meu servidor personalizado, recebi esta mensagem de erro! XHTML válido .
Shadin
Sim eu fiz. na verdade, prefiro que você dê uma olhada no meu arquivo de sementes [ megafileupload.com/en/file/493602/… Não tenho certeza da maneira como adicionei os pacotes no final do arquivo
Shadin
ah! obrigado! Vou tentar isso e voltar para você. também gostaria de saber se existe alguma maneira de remover servidores adicionais durante esse processo da imagem, como servidor de email, servidor web, JBOSS ... etc. Quero incluir apenas o postgresql e seus pacotes.
Shadin
2
@shadin está tudo bem, veja como o Lucio faz isso ;-) Comentários limpos. Braiam: sim, pode. Embora haja muito mais coisas para alterar na área de trabalho, isso é um começo (o kickstart também funciona se você corrigi-lo, mas ainda é limitado pelo Ubuntu).
Rinzwind