Como criar um ISO personalizado do servidor Ubuntu?

41

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

    
por Shadin 23.01.2014 / 12:37

1 resposta

59

Download

Faça o download do ISO do servidor Ubuntu no local . Você tem a opção de ir 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 que você possa 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á dois diretórios "iso" e "isoNew" dentro do diretório Downloads, montará o ISO e copiará 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: https://sobrelinux.info/questions/1896/how-to-create-a-customized-ubuntu-server-iso"https://i.stack.imgur.com/1gfOH.png"> 

Resultado:

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

As opções de menu do instalador são armazenadas em isolinux/txt.cfg e você pode criar novas opções entre default install e 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 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 marcador que você pode usar para identificar sua opção.
  • "Instalar o servidor Ubuntu personalizado" é o texto que será exibido no menu de inicialização.
  • Se você quiser tornar sua opção de menu a opção padrão, só será necessário alterar o default install para default myownoption .

Exemplo:

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

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 do sistema operacional autônomo.

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

Instalação e início do kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** AVISO **

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

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

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

Depois que você terminar, salve as alterações em um arquivo ks.cfg e copie-o para o ISO que estamos alterando:

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

Exemplo onde inseri minhas credenciais. Eu comecei com sudo ksconfig da linha de comando.

E salvando no projeto:

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

Preseeding fornece uma maneira de definir respostas às perguntas feitas durante o processo de instalação, sem ter que inserir manualmente as respostas enquanto a instalação está em execução. Isso possibilita automatizar totalmente a maioria dos tipos de instalação e até oferece alguns recursos que não estão disponíveis durante as instalações normais.

Copie o preseed para a instalação normal na sua própria etiqueta:

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

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

Exemplo de configuração:

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

  • Se você quiser adicionar pacotes "openssh" e "build-essential", inclua isso no arquivo de propagação:

    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 exemplo de arquivo preseed
  • Exemplos sobre: Localização, configuração de rede, console de rede, relógio e tempo, particionando
  • No final do arquivo preseed você pode adicionar pacotes (exemplos aleatórios) como este:

    pacotes% openssh-server mysql-server apache2

Instalação offline

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

Faça o download de todos os pacotes de DEB necessários e armazene-os em ~/Downloads/ . Estes dois diretórios são necessários no novo 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 faz um ISO do seu projeto que você pode gravar em um DVD.

Resultado:

E agora você pode experimentá-lo realmente gravando e instalando-o. Eu recomendaria usar como máquina virtual, pois será mais rápido para testar o ISO criado inicialmente (caso contrário, você continua reiniciando).

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

Caça aos bugs

Fizemos 1 problemas durante a instalação: o padrão não foi selecionado.

Shadin. Do seu arquivo de sementes 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

Vala a linha tasksel de você não quer um servidor LAMP (ou seja, Apache, Mysql, Php)

    
por Rinzwind 23.01.2014 / 15:12